diff --git a/CHANGELOG.md b/CHANGELOG.md index d61d0855d7..2329372457 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,20 @@ # Changelog +## Release v0.40.0 + +Features: + +- Updated OpenID page +- Added New bucket event types support + + +Bug Fix: + +- Fixed crash in access keys page +- Fixed AuditLog filters issue +- Fixed multiple issues with Object Browser + ## Release v0.39.0 Features: diff --git a/portal-ui/build/asset-manifest.json b/portal-ui/build/asset-manifest.json index fac075bd37..b0812ff132 100644 --- a/portal-ui/build/asset-manifest.json +++ b/portal-ui/build/asset-manifest.json @@ -1,114 +1,114 @@ { "files": { - "main.css": "./static/css/main.7f39beab.css", - "main.js": "./static/js/main.379b5c5e.js", - "static/js/1260.a025e586.chunk.js": "./static/js/1260.a025e586.chunk.js", - "static/js/6914.9ab32297.chunk.js": "./static/js/6914.9ab32297.chunk.js", - "static/js/9121.c6510250.chunk.js": "./static/js/9121.c6510250.chunk.js", - "static/js/1829.c32b26cd.chunk.js": "./static/js/1829.c32b26cd.chunk.js", - "static/js/6272.d6ff2673.chunk.js": "./static/js/6272.d6ff2673.chunk.js", - "static/js/5088.f16e9fb3.chunk.js": "./static/js/5088.f16e9fb3.chunk.js", - "static/js/6122.8195a695.chunk.js": "./static/js/6122.8195a695.chunk.js", - "static/js/808.a41d96e0.chunk.js": "./static/js/808.a41d96e0.chunk.js", - "static/js/8060.060ad94e.chunk.js": "./static/js/8060.060ad94e.chunk.js", - "static/js/9635.155c5ab6.chunk.js": "./static/js/9635.155c5ab6.chunk.js", - "static/js/2338.0676e9a1.chunk.js": "./static/js/2338.0676e9a1.chunk.js", - "static/js/4335.ad6c0ff1.chunk.js": "./static/js/4335.ad6c0ff1.chunk.js", - "static/js/8521.cf2d093b.chunk.js": "./static/js/8521.cf2d093b.chunk.js", - "static/js/3543.047b5c8a.chunk.js": "./static/js/3543.047b5c8a.chunk.js", - "static/js/2074.aebefc57.chunk.js": "./static/js/2074.aebefc57.chunk.js", - "static/js/3067.e39a45cf.chunk.js": "./static/js/3067.e39a45cf.chunk.js", + "main.css": "./static/css/main.e60e4760.css", + "main.js": "./static/js/main.ca749b3b.js", + "static/js/1260.1bfa3ef3.chunk.js": "./static/js/1260.1bfa3ef3.chunk.js", + "static/js/6914.62c54850.chunk.js": "./static/js/6914.62c54850.chunk.js", + "static/js/9121.99feaddd.chunk.js": "./static/js/9121.99feaddd.chunk.js", + "static/js/1829.9db2921b.chunk.js": "./static/js/1829.9db2921b.chunk.js", + "static/js/6272.1dc1f3f1.chunk.js": "./static/js/6272.1dc1f3f1.chunk.js", + "static/js/5088.b53be05e.chunk.js": "./static/js/5088.b53be05e.chunk.js", + "static/js/6122.c29df041.chunk.js": "./static/js/6122.c29df041.chunk.js", + "static/js/808.6b19d840.chunk.js": "./static/js/808.6b19d840.chunk.js", + "static/js/8060.a5309a8c.chunk.js": "./static/js/8060.a5309a8c.chunk.js", + "static/js/9635.495d0211.chunk.js": "./static/js/9635.495d0211.chunk.js", + "static/js/2338.6e3ddba5.chunk.js": "./static/js/2338.6e3ddba5.chunk.js", + "static/js/4335.09096e69.chunk.js": "./static/js/4335.09096e69.chunk.js", + "static/js/8521.06664483.chunk.js": "./static/js/8521.06664483.chunk.js", + "static/js/3543.d91de02c.chunk.js": "./static/js/3543.d91de02c.chunk.js", + "static/js/2074.1f0d525f.chunk.js": "./static/js/2074.1f0d525f.chunk.js", + "static/js/3067.76cd4ffe.chunk.js": "./static/js/3067.76cd4ffe.chunk.js", "static/js/2637.96b15c1c.chunk.js": "./static/js/2637.96b15c1c.chunk.js", - "static/js/5962.2feae2cf.chunk.js": "./static/js/5962.2feae2cf.chunk.js", + "static/js/5962.b97f970a.chunk.js": "./static/js/5962.b97f970a.chunk.js", "static/js/701.6661257a.chunk.js": "./static/js/701.6661257a.chunk.js", - "static/js/416.13f98be6.chunk.js": "./static/js/416.13f98be6.chunk.js", + "static/js/416.8346e1f6.chunk.js": "./static/js/416.8346e1f6.chunk.js", "static/js/7821.a2de4d84.chunk.js": "./static/js/7821.a2de4d84.chunk.js", - "static/js/2545.ffac2fbb.chunk.js": "./static/js/2545.ffac2fbb.chunk.js", - "static/js/8388.408870e9.chunk.js": "./static/js/8388.408870e9.chunk.js", - "static/js/4065.5c14967d.chunk.js": "./static/js/4065.5c14967d.chunk.js", - "static/js/5935.7e18eaf4.chunk.js": "./static/js/5935.7e18eaf4.chunk.js", - "static/js/4563.7028e97b.chunk.js": "./static/js/4563.7028e97b.chunk.js", - "static/js/191.ab2de930.chunk.js": "./static/js/191.ab2de930.chunk.js", - "static/js/1329.79996c21.chunk.js": "./static/js/1329.79996c21.chunk.js", - "static/js/7614.9c703164.chunk.js": "./static/js/7614.9c703164.chunk.js", - "static/js/1764.4155e58f.chunk.js": "./static/js/1764.4155e58f.chunk.js", - "static/js/6491.412eda76.chunk.js": "./static/js/6491.412eda76.chunk.js", - "static/js/4902.7e038ea1.chunk.js": "./static/js/4902.7e038ea1.chunk.js", - "static/js/3379.aa9dc5d4.chunk.js": "./static/js/3379.aa9dc5d4.chunk.js", - "static/js/3171.45d97dbc.chunk.js": "./static/js/3171.45d97dbc.chunk.js", - "static/js/8360.df2c85af.chunk.js": "./static/js/8360.df2c85af.chunk.js", - "static/js/6577.ae36aad7.chunk.js": "./static/js/6577.ae36aad7.chunk.js", - "static/js/3875.7fa4f881.chunk.js": "./static/js/3875.7fa4f881.chunk.js", - "static/js/3115.7ed72f95.chunk.js": "./static/js/3115.7ed72f95.chunk.js", - "static/js/8270.cfbcb443.chunk.js": "./static/js/8270.cfbcb443.chunk.js", - "static/js/977.f5f8f96d.chunk.js": "./static/js/977.f5f8f96d.chunk.js", - "static/js/6686.aad068b5.chunk.js": "./static/js/6686.aad068b5.chunk.js", + "static/js/2545.ff1b01f5.chunk.js": "./static/js/2545.ff1b01f5.chunk.js", + "static/js/8388.af3ddceb.chunk.js": "./static/js/8388.af3ddceb.chunk.js", + "static/js/4065.546ae369.chunk.js": "./static/js/4065.546ae369.chunk.js", + "static/js/5935.e874456b.chunk.js": "./static/js/5935.e874456b.chunk.js", + "static/js/4563.be189475.chunk.js": "./static/js/4563.be189475.chunk.js", + "static/js/191.7f06526e.chunk.js": "./static/js/191.7f06526e.chunk.js", + "static/js/1329.df839007.chunk.js": "./static/js/1329.df839007.chunk.js", + "static/js/7614.b687ba7f.chunk.js": "./static/js/7614.b687ba7f.chunk.js", + "static/js/1764.ba7b49eb.chunk.js": "./static/js/1764.ba7b49eb.chunk.js", + "static/js/6491.5f7a419d.chunk.js": "./static/js/6491.5f7a419d.chunk.js", + "static/js/4902.89f3e9e1.chunk.js": "./static/js/4902.89f3e9e1.chunk.js", + "static/js/3379.6be9ca7b.chunk.js": "./static/js/3379.6be9ca7b.chunk.js", + "static/js/3171.a4ead4ca.chunk.js": "./static/js/3171.a4ead4ca.chunk.js", + "static/js/8360.8ac053e0.chunk.js": "./static/js/8360.8ac053e0.chunk.js", + "static/js/6577.02d2b685.chunk.js": "./static/js/6577.02d2b685.chunk.js", + "static/js/3875.1266ad37.chunk.js": "./static/js/3875.1266ad37.chunk.js", + "static/js/3115.0561791c.chunk.js": "./static/js/3115.0561791c.chunk.js", + "static/js/8270.47bda2ac.chunk.js": "./static/js/8270.47bda2ac.chunk.js", + "static/js/977.39e86031.chunk.js": "./static/js/977.39e86031.chunk.js", + "static/js/6686.3284b22b.chunk.js": "./static/js/6686.3284b22b.chunk.js", "static/js/9059.521ca60c.chunk.js": "./static/js/9059.521ca60c.chunk.js", "static/js/4770.08d9efec.chunk.js": "./static/js/4770.08d9efec.chunk.js", "static/js/6247.bb8bb4b7.chunk.js": "./static/js/6247.bb8bb4b7.chunk.js", - "static/js/4414.f0324dee.chunk.js": "./static/js/4414.f0324dee.chunk.js", - "static/js/8833.54277740.chunk.js": "./static/js/8833.54277740.chunk.js", - "static/js/1516.8a28f6f6.chunk.js": "./static/js/1516.8a28f6f6.chunk.js", - "static/js/483.c4ee886e.chunk.js": "./static/js/483.c4ee886e.chunk.js", - "static/js/8045.428d49a9.chunk.js": "./static/js/8045.428d49a9.chunk.js", - "static/js/6895.48dbd0ce.chunk.js": "./static/js/6895.48dbd0ce.chunk.js", - "static/js/4874.157a2b95.chunk.js": "./static/js/4874.157a2b95.chunk.js", - "static/js/1191.afbdc0f3.chunk.js": "./static/js/1191.afbdc0f3.chunk.js", - "static/js/3956.27299d66.chunk.js": "./static/js/3956.27299d66.chunk.js", - "static/js/9221.bec3fd54.chunk.js": "./static/js/9221.bec3fd54.chunk.js", - "static/js/8896.ef691d94.chunk.js": "./static/js/8896.ef691d94.chunk.js", - "static/js/9134.e4b5e2b7.chunk.js": "./static/js/9134.e4b5e2b7.chunk.js", + "static/js/4414.1db328e3.chunk.js": "./static/js/4414.1db328e3.chunk.js", + "static/js/8833.50d1395d.chunk.js": "./static/js/8833.50d1395d.chunk.js", + "static/js/1516.75dc9a97.chunk.js": "./static/js/1516.75dc9a97.chunk.js", + "static/js/483.8c83b198.chunk.js": "./static/js/483.8c83b198.chunk.js", + "static/js/8045.820a2282.chunk.js": "./static/js/8045.820a2282.chunk.js", + "static/js/6895.f365fd4e.chunk.js": "./static/js/6895.f365fd4e.chunk.js", + "static/js/4874.5e5b3042.chunk.js": "./static/js/4874.5e5b3042.chunk.js", + "static/js/1191.a7906808.chunk.js": "./static/js/1191.a7906808.chunk.js", + "static/js/3956.3d92ba64.chunk.js": "./static/js/3956.3d92ba64.chunk.js", + "static/js/9221.5b85a40b.chunk.js": "./static/js/9221.5b85a40b.chunk.js", + "static/js/8896.dbf5cc38.chunk.js": "./static/js/8896.dbf5cc38.chunk.js", + "static/js/9134.63488b77.chunk.js": "./static/js/9134.63488b77.chunk.js", "static/js/5223.d053b523.chunk.js": "./static/js/5223.d053b523.chunk.js", - "static/js/5661.0d5ab315.chunk.js": "./static/js/5661.0d5ab315.chunk.js", - "static/js/7134.fceb3ed9.chunk.js": "./static/js/7134.fceb3ed9.chunk.js", - "static/js/3034.420387d3.chunk.js": "./static/js/3034.420387d3.chunk.js", - "static/js/3138.aa66ab9b.chunk.js": "./static/js/3138.aa66ab9b.chunk.js", - "static/js/711.aec34a54.chunk.js": "./static/js/711.aec34a54.chunk.js", - "static/js/6901.4bbd899c.chunk.js": "./static/js/6901.4bbd899c.chunk.js", - "static/js/2185.1940263e.chunk.js": "./static/js/2185.1940263e.chunk.js", - "static/js/9968.741ebf65.chunk.js": "./static/js/9968.741ebf65.chunk.js", - "static/js/7494.bad4da61.chunk.js": "./static/js/7494.bad4da61.chunk.js", - "static/js/4738.0bbac05c.chunk.js": "./static/js/4738.0bbac05c.chunk.js", - "static/js/3989.2a6d7b8e.chunk.js": "./static/js/3989.2a6d7b8e.chunk.js", - "static/js/5702.9e4dac1a.chunk.js": "./static/js/5702.9e4dac1a.chunk.js", - "static/js/5759.a3e84ed8.chunk.js": "./static/js/5759.a3e84ed8.chunk.js", - "static/js/51.d010edb2.chunk.js": "./static/js/51.d010edb2.chunk.js", - "static/js/312.04cab7e8.chunk.js": "./static/js/312.04cab7e8.chunk.js", - "static/js/2032.4a5bc956.chunk.js": "./static/js/2032.4a5bc956.chunk.js", - "static/js/4619.8811b76a.chunk.js": "./static/js/4619.8811b76a.chunk.js", - "static/js/8990.17dc8411.chunk.js": "./static/js/8990.17dc8411.chunk.js", - "static/js/8455.97773e2f.chunk.js": "./static/js/8455.97773e2f.chunk.js", - "static/js/3690.b6d7d3b6.chunk.js": "./static/js/3690.b6d7d3b6.chunk.js", - "static/js/1604.5639010d.chunk.js": "./static/js/1604.5639010d.chunk.js", - "static/js/9952.83bf9bfc.chunk.js": "./static/js/9952.83bf9bfc.chunk.js", - "static/js/402.b31b43fa.chunk.js": "./static/js/402.b31b43fa.chunk.js", - "static/js/1705.7cfab911.chunk.js": "./static/js/1705.7cfab911.chunk.js", - "static/js/1581.77dce896.chunk.js": "./static/js/1581.77dce896.chunk.js", - "static/js/455.3198900d.chunk.js": "./static/js/455.3198900d.chunk.js", - "static/js/2661.32a75c53.chunk.js": "./static/js/2661.32a75c53.chunk.js", - "static/js/3509.f3bae3cd.chunk.js": "./static/js/3509.f3bae3cd.chunk.js", - "static/js/889.961090a3.chunk.js": "./static/js/889.961090a3.chunk.js", - "static/js/9088.9dd285c2.chunk.js": "./static/js/9088.9dd285c2.chunk.js", - "static/js/247.af004b44.chunk.js": "./static/js/247.af004b44.chunk.js", - "static/js/2763.8a8f4e01.chunk.js": "./static/js/2763.8a8f4e01.chunk.js", - "static/js/911.6e143898.chunk.js": "./static/js/911.6e143898.chunk.js", - "static/js/4549.a4409fb4.chunk.js": "./static/js/4549.a4409fb4.chunk.js", - "static/js/817.c52eeb4d.chunk.js": "./static/js/817.c52eeb4d.chunk.js", - "static/js/9518.484c0bd8.chunk.js": "./static/js/9518.484c0bd8.chunk.js", - "static/js/2193.5d74569e.chunk.js": "./static/js/2193.5d74569e.chunk.js", - "static/js/225.b0001aa0.chunk.js": "./static/js/225.b0001aa0.chunk.js", + "static/js/9382.bd8214f2.chunk.js": "./static/js/9382.bd8214f2.chunk.js", + "static/js/7134.1a5a0c34.chunk.js": "./static/js/7134.1a5a0c34.chunk.js", + "static/js/3034.e1fff37c.chunk.js": "./static/js/3034.e1fff37c.chunk.js", + "static/js/3138.47ee08f2.chunk.js": "./static/js/3138.47ee08f2.chunk.js", + "static/js/711.bc7ee5ed.chunk.js": "./static/js/711.bc7ee5ed.chunk.js", + "static/js/6901.9f19a060.chunk.js": "./static/js/6901.9f19a060.chunk.js", + "static/js/2185.dabc2b42.chunk.js": "./static/js/2185.dabc2b42.chunk.js", + "static/js/9968.c45ff8f4.chunk.js": "./static/js/9968.c45ff8f4.chunk.js", + "static/js/7494.883411d0.chunk.js": "./static/js/7494.883411d0.chunk.js", + "static/js/4738.c8ae5b4a.chunk.js": "./static/js/4738.c8ae5b4a.chunk.js", + "static/js/3989.7bc0050a.chunk.js": "./static/js/3989.7bc0050a.chunk.js", + "static/js/5702.0d80f056.chunk.js": "./static/js/5702.0d80f056.chunk.js", + "static/js/5759.edc8340c.chunk.js": "./static/js/5759.edc8340c.chunk.js", + "static/js/51.872b251a.chunk.js": "./static/js/51.872b251a.chunk.js", + "static/js/312.a4a9011b.chunk.js": "./static/js/312.a4a9011b.chunk.js", + "static/js/2032.27438209.chunk.js": "./static/js/2032.27438209.chunk.js", + "static/js/4619.471aee8b.chunk.js": "./static/js/4619.471aee8b.chunk.js", + "static/js/8990.58d88bc9.chunk.js": "./static/js/8990.58d88bc9.chunk.js", + "static/js/8455.6e72f5ad.chunk.js": "./static/js/8455.6e72f5ad.chunk.js", + "static/js/3690.6957ca61.chunk.js": "./static/js/3690.6957ca61.chunk.js", + "static/js/1604.64ec26a0.chunk.js": "./static/js/1604.64ec26a0.chunk.js", + "static/js/9952.977159a7.chunk.js": "./static/js/9952.977159a7.chunk.js", + "static/js/402.64814df4.chunk.js": "./static/js/402.64814df4.chunk.js", + "static/js/1705.8c12b37a.chunk.js": "./static/js/1705.8c12b37a.chunk.js", + "static/js/1581.9e1d2acf.chunk.js": "./static/js/1581.9e1d2acf.chunk.js", + "static/js/455.3a91ee14.chunk.js": "./static/js/455.3a91ee14.chunk.js", + "static/js/2661.88895459.chunk.js": "./static/js/2661.88895459.chunk.js", + "static/js/3509.3accc3d1.chunk.js": "./static/js/3509.3accc3d1.chunk.js", + "static/js/889.a30c4ca5.chunk.js": "./static/js/889.a30c4ca5.chunk.js", + "static/js/9088.b641525f.chunk.js": "./static/js/9088.b641525f.chunk.js", + "static/js/247.83abc0ba.chunk.js": "./static/js/247.83abc0ba.chunk.js", + "static/js/2763.ced3d1e6.chunk.js": "./static/js/2763.ced3d1e6.chunk.js", + "static/js/911.85827a45.chunk.js": "./static/js/911.85827a45.chunk.js", + "static/js/4549.3d93db81.chunk.js": "./static/js/4549.3d93db81.chunk.js", + "static/js/817.ae83167e.chunk.js": "./static/js/817.ae83167e.chunk.js", + "static/js/9518.37a0f445.chunk.js": "./static/js/9518.37a0f445.chunk.js", + "static/js/2193.a74f0e37.chunk.js": "./static/js/2193.a74f0e37.chunk.js", + "static/js/225.4a99e6a2.chunk.js": "./static/js/225.4a99e6a2.chunk.js", "static/js/601.0071eb88.chunk.js": "./static/js/601.0071eb88.chunk.js", "static/js/9955.92b905ab.chunk.js": "./static/js/9955.92b905ab.chunk.js", "static/js/6786.1f6da6c6.chunk.js": "./static/js/6786.1f6da6c6.chunk.js", "static/js/8265.889d47d3.chunk.js": "./static/js/8265.889d47d3.chunk.js", + "static/js/134.3f6d60a2.chunk.js": "./static/js/134.3f6d60a2.chunk.js", "static/js/3801.bece6d36.chunk.js": "./static/js/3801.bece6d36.chunk.js", - "static/js/134.117c7fbe.chunk.js": "./static/js/134.117c7fbe.chunk.js", "static/js/1748.291be92f.chunk.js": "./static/js/1748.291be92f.chunk.js", "static/js/2121.6000774d.chunk.js": "./static/js/2121.6000774d.chunk.js", - "static/js/7082.dc493620.chunk.js": "./static/js/7082.dc493620.chunk.js", - "static/js/1520.f9bd04d7.chunk.js": "./static/js/1520.f9bd04d7.chunk.js", - "static/js/6008.cdca3087.chunk.js": "./static/js/6008.cdca3087.chunk.js", - "static/js/7374.f3d5edc4.chunk.js": "./static/js/7374.f3d5edc4.chunk.js", + "static/js/7082.e66ba30d.chunk.js": "./static/js/7082.e66ba30d.chunk.js", + "static/js/1520.8019c157.chunk.js": "./static/js/1520.8019c157.chunk.js", + "static/js/6008.10fb9564.chunk.js": "./static/js/6008.10fb9564.chunk.js", + "static/js/7784.c0448d91.chunk.js": "./static/js/7784.c0448d91.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", @@ -131,118 +131,118 @@ "static/media/Inter-Regular.woff2": "./static/media/Inter-Regular.c8ba52b05a9ef10f4758.woff2", "static/media/placeholderimage.png": "./static/media/placeholderimage.077ea48bd1ef1f4a883f.png", "index.html": "./index.html", - "main.7f39beab.css.map": "./static/css/main.7f39beab.css.map", - "main.379b5c5e.js.map": "./static/js/main.379b5c5e.js.map", - "1260.a025e586.chunk.js.map": "./static/js/1260.a025e586.chunk.js.map", - "6914.9ab32297.chunk.js.map": "./static/js/6914.9ab32297.chunk.js.map", - "9121.c6510250.chunk.js.map": "./static/js/9121.c6510250.chunk.js.map", - "1829.c32b26cd.chunk.js.map": "./static/js/1829.c32b26cd.chunk.js.map", - "6272.d6ff2673.chunk.js.map": "./static/js/6272.d6ff2673.chunk.js.map", - "5088.f16e9fb3.chunk.js.map": "./static/js/5088.f16e9fb3.chunk.js.map", - "6122.8195a695.chunk.js.map": "./static/js/6122.8195a695.chunk.js.map", - "808.a41d96e0.chunk.js.map": "./static/js/808.a41d96e0.chunk.js.map", - "8060.060ad94e.chunk.js.map": "./static/js/8060.060ad94e.chunk.js.map", - "9635.155c5ab6.chunk.js.map": "./static/js/9635.155c5ab6.chunk.js.map", - "2338.0676e9a1.chunk.js.map": "./static/js/2338.0676e9a1.chunk.js.map", - "4335.ad6c0ff1.chunk.js.map": "./static/js/4335.ad6c0ff1.chunk.js.map", - "8521.cf2d093b.chunk.js.map": "./static/js/8521.cf2d093b.chunk.js.map", - "3543.047b5c8a.chunk.js.map": "./static/js/3543.047b5c8a.chunk.js.map", - "2074.aebefc57.chunk.js.map": "./static/js/2074.aebefc57.chunk.js.map", - "3067.e39a45cf.chunk.js.map": "./static/js/3067.e39a45cf.chunk.js.map", + "main.e60e4760.css.map": "./static/css/main.e60e4760.css.map", + "main.ca749b3b.js.map": "./static/js/main.ca749b3b.js.map", + "1260.1bfa3ef3.chunk.js.map": "./static/js/1260.1bfa3ef3.chunk.js.map", + "6914.62c54850.chunk.js.map": "./static/js/6914.62c54850.chunk.js.map", + "9121.99feaddd.chunk.js.map": "./static/js/9121.99feaddd.chunk.js.map", + "1829.9db2921b.chunk.js.map": "./static/js/1829.9db2921b.chunk.js.map", + "6272.1dc1f3f1.chunk.js.map": "./static/js/6272.1dc1f3f1.chunk.js.map", + "5088.b53be05e.chunk.js.map": "./static/js/5088.b53be05e.chunk.js.map", + "6122.c29df041.chunk.js.map": "./static/js/6122.c29df041.chunk.js.map", + "808.6b19d840.chunk.js.map": "./static/js/808.6b19d840.chunk.js.map", + "8060.a5309a8c.chunk.js.map": "./static/js/8060.a5309a8c.chunk.js.map", + "9635.495d0211.chunk.js.map": "./static/js/9635.495d0211.chunk.js.map", + "2338.6e3ddba5.chunk.js.map": "./static/js/2338.6e3ddba5.chunk.js.map", + "4335.09096e69.chunk.js.map": "./static/js/4335.09096e69.chunk.js.map", + "8521.06664483.chunk.js.map": "./static/js/8521.06664483.chunk.js.map", + "3543.d91de02c.chunk.js.map": "./static/js/3543.d91de02c.chunk.js.map", + "2074.1f0d525f.chunk.js.map": "./static/js/2074.1f0d525f.chunk.js.map", + "3067.76cd4ffe.chunk.js.map": "./static/js/3067.76cd4ffe.chunk.js.map", "2637.96b15c1c.chunk.js.map": "./static/js/2637.96b15c1c.chunk.js.map", - "5962.2feae2cf.chunk.js.map": "./static/js/5962.2feae2cf.chunk.js.map", + "5962.b97f970a.chunk.js.map": "./static/js/5962.b97f970a.chunk.js.map", "701.6661257a.chunk.js.map": "./static/js/701.6661257a.chunk.js.map", - "416.13f98be6.chunk.js.map": "./static/js/416.13f98be6.chunk.js.map", + "416.8346e1f6.chunk.js.map": "./static/js/416.8346e1f6.chunk.js.map", "7821.a2de4d84.chunk.js.map": "./static/js/7821.a2de4d84.chunk.js.map", - "2545.ffac2fbb.chunk.js.map": "./static/js/2545.ffac2fbb.chunk.js.map", - "8388.408870e9.chunk.js.map": "./static/js/8388.408870e9.chunk.js.map", - "4065.5c14967d.chunk.js.map": "./static/js/4065.5c14967d.chunk.js.map", - "5935.7e18eaf4.chunk.js.map": "./static/js/5935.7e18eaf4.chunk.js.map", - "4563.7028e97b.chunk.js.map": "./static/js/4563.7028e97b.chunk.js.map", - "191.ab2de930.chunk.js.map": "./static/js/191.ab2de930.chunk.js.map", - "1329.79996c21.chunk.js.map": "./static/js/1329.79996c21.chunk.js.map", - "7614.9c703164.chunk.js.map": "./static/js/7614.9c703164.chunk.js.map", - "1764.4155e58f.chunk.js.map": "./static/js/1764.4155e58f.chunk.js.map", - "6491.412eda76.chunk.js.map": "./static/js/6491.412eda76.chunk.js.map", - "4902.7e038ea1.chunk.js.map": "./static/js/4902.7e038ea1.chunk.js.map", - "3379.aa9dc5d4.chunk.js.map": "./static/js/3379.aa9dc5d4.chunk.js.map", - "3171.45d97dbc.chunk.js.map": "./static/js/3171.45d97dbc.chunk.js.map", - "8360.df2c85af.chunk.js.map": "./static/js/8360.df2c85af.chunk.js.map", - "6577.ae36aad7.chunk.js.map": "./static/js/6577.ae36aad7.chunk.js.map", - "3875.7fa4f881.chunk.js.map": "./static/js/3875.7fa4f881.chunk.js.map", - "3115.7ed72f95.chunk.js.map": "./static/js/3115.7ed72f95.chunk.js.map", - "8270.cfbcb443.chunk.js.map": "./static/js/8270.cfbcb443.chunk.js.map", - "977.f5f8f96d.chunk.js.map": "./static/js/977.f5f8f96d.chunk.js.map", - "6686.aad068b5.chunk.js.map": "./static/js/6686.aad068b5.chunk.js.map", + "2545.ff1b01f5.chunk.js.map": "./static/js/2545.ff1b01f5.chunk.js.map", + "8388.af3ddceb.chunk.js.map": "./static/js/8388.af3ddceb.chunk.js.map", + "4065.546ae369.chunk.js.map": "./static/js/4065.546ae369.chunk.js.map", + "5935.e874456b.chunk.js.map": "./static/js/5935.e874456b.chunk.js.map", + "4563.be189475.chunk.js.map": "./static/js/4563.be189475.chunk.js.map", + "191.7f06526e.chunk.js.map": "./static/js/191.7f06526e.chunk.js.map", + "1329.df839007.chunk.js.map": "./static/js/1329.df839007.chunk.js.map", + "7614.b687ba7f.chunk.js.map": "./static/js/7614.b687ba7f.chunk.js.map", + "1764.ba7b49eb.chunk.js.map": "./static/js/1764.ba7b49eb.chunk.js.map", + "6491.5f7a419d.chunk.js.map": "./static/js/6491.5f7a419d.chunk.js.map", + "4902.89f3e9e1.chunk.js.map": "./static/js/4902.89f3e9e1.chunk.js.map", + "3379.6be9ca7b.chunk.js.map": "./static/js/3379.6be9ca7b.chunk.js.map", + "3171.a4ead4ca.chunk.js.map": "./static/js/3171.a4ead4ca.chunk.js.map", + "8360.8ac053e0.chunk.js.map": "./static/js/8360.8ac053e0.chunk.js.map", + "6577.02d2b685.chunk.js.map": "./static/js/6577.02d2b685.chunk.js.map", + "3875.1266ad37.chunk.js.map": "./static/js/3875.1266ad37.chunk.js.map", + "3115.0561791c.chunk.js.map": "./static/js/3115.0561791c.chunk.js.map", + "8270.47bda2ac.chunk.js.map": "./static/js/8270.47bda2ac.chunk.js.map", + "977.39e86031.chunk.js.map": "./static/js/977.39e86031.chunk.js.map", + "6686.3284b22b.chunk.js.map": "./static/js/6686.3284b22b.chunk.js.map", "9059.521ca60c.chunk.js.map": "./static/js/9059.521ca60c.chunk.js.map", "4770.08d9efec.chunk.js.map": "./static/js/4770.08d9efec.chunk.js.map", "6247.bb8bb4b7.chunk.js.map": "./static/js/6247.bb8bb4b7.chunk.js.map", - "4414.f0324dee.chunk.js.map": "./static/js/4414.f0324dee.chunk.js.map", - "8833.54277740.chunk.js.map": "./static/js/8833.54277740.chunk.js.map", - "1516.8a28f6f6.chunk.js.map": "./static/js/1516.8a28f6f6.chunk.js.map", - "483.c4ee886e.chunk.js.map": "./static/js/483.c4ee886e.chunk.js.map", - "8045.428d49a9.chunk.js.map": "./static/js/8045.428d49a9.chunk.js.map", - "6895.48dbd0ce.chunk.js.map": "./static/js/6895.48dbd0ce.chunk.js.map", - "4874.157a2b95.chunk.js.map": "./static/js/4874.157a2b95.chunk.js.map", - "1191.afbdc0f3.chunk.js.map": "./static/js/1191.afbdc0f3.chunk.js.map", - "3956.27299d66.chunk.js.map": "./static/js/3956.27299d66.chunk.js.map", - "9221.bec3fd54.chunk.js.map": "./static/js/9221.bec3fd54.chunk.js.map", - "8896.ef691d94.chunk.js.map": "./static/js/8896.ef691d94.chunk.js.map", - "9134.e4b5e2b7.chunk.js.map": "./static/js/9134.e4b5e2b7.chunk.js.map", + "4414.1db328e3.chunk.js.map": "./static/js/4414.1db328e3.chunk.js.map", + "8833.50d1395d.chunk.js.map": "./static/js/8833.50d1395d.chunk.js.map", + "1516.75dc9a97.chunk.js.map": "./static/js/1516.75dc9a97.chunk.js.map", + "483.8c83b198.chunk.js.map": "./static/js/483.8c83b198.chunk.js.map", + "8045.820a2282.chunk.js.map": "./static/js/8045.820a2282.chunk.js.map", + "6895.f365fd4e.chunk.js.map": "./static/js/6895.f365fd4e.chunk.js.map", + "4874.5e5b3042.chunk.js.map": "./static/js/4874.5e5b3042.chunk.js.map", + "1191.a7906808.chunk.js.map": "./static/js/1191.a7906808.chunk.js.map", + "3956.3d92ba64.chunk.js.map": "./static/js/3956.3d92ba64.chunk.js.map", + "9221.5b85a40b.chunk.js.map": "./static/js/9221.5b85a40b.chunk.js.map", + "8896.dbf5cc38.chunk.js.map": "./static/js/8896.dbf5cc38.chunk.js.map", + "9134.63488b77.chunk.js.map": "./static/js/9134.63488b77.chunk.js.map", "5223.d053b523.chunk.js.map": "./static/js/5223.d053b523.chunk.js.map", - "5661.0d5ab315.chunk.js.map": "./static/js/5661.0d5ab315.chunk.js.map", - "7134.fceb3ed9.chunk.js.map": "./static/js/7134.fceb3ed9.chunk.js.map", - "3034.420387d3.chunk.js.map": "./static/js/3034.420387d3.chunk.js.map", - "3138.aa66ab9b.chunk.js.map": "./static/js/3138.aa66ab9b.chunk.js.map", - "711.aec34a54.chunk.js.map": "./static/js/711.aec34a54.chunk.js.map", - "6901.4bbd899c.chunk.js.map": "./static/js/6901.4bbd899c.chunk.js.map", - "2185.1940263e.chunk.js.map": "./static/js/2185.1940263e.chunk.js.map", - "9968.741ebf65.chunk.js.map": "./static/js/9968.741ebf65.chunk.js.map", - "7494.bad4da61.chunk.js.map": "./static/js/7494.bad4da61.chunk.js.map", - "4738.0bbac05c.chunk.js.map": "./static/js/4738.0bbac05c.chunk.js.map", - "3989.2a6d7b8e.chunk.js.map": "./static/js/3989.2a6d7b8e.chunk.js.map", - "5702.9e4dac1a.chunk.js.map": "./static/js/5702.9e4dac1a.chunk.js.map", - "5759.a3e84ed8.chunk.js.map": "./static/js/5759.a3e84ed8.chunk.js.map", - "51.d010edb2.chunk.js.map": "./static/js/51.d010edb2.chunk.js.map", - "312.04cab7e8.chunk.js.map": "./static/js/312.04cab7e8.chunk.js.map", - "2032.4a5bc956.chunk.js.map": "./static/js/2032.4a5bc956.chunk.js.map", - "4619.8811b76a.chunk.js.map": "./static/js/4619.8811b76a.chunk.js.map", - "8990.17dc8411.chunk.js.map": "./static/js/8990.17dc8411.chunk.js.map", - "8455.97773e2f.chunk.js.map": "./static/js/8455.97773e2f.chunk.js.map", - "3690.b6d7d3b6.chunk.js.map": "./static/js/3690.b6d7d3b6.chunk.js.map", - "1604.5639010d.chunk.js.map": "./static/js/1604.5639010d.chunk.js.map", - "9952.83bf9bfc.chunk.js.map": "./static/js/9952.83bf9bfc.chunk.js.map", - "402.b31b43fa.chunk.js.map": "./static/js/402.b31b43fa.chunk.js.map", - "1705.7cfab911.chunk.js.map": "./static/js/1705.7cfab911.chunk.js.map", - "1581.77dce896.chunk.js.map": "./static/js/1581.77dce896.chunk.js.map", - "455.3198900d.chunk.js.map": "./static/js/455.3198900d.chunk.js.map", - "2661.32a75c53.chunk.js.map": "./static/js/2661.32a75c53.chunk.js.map", - "3509.f3bae3cd.chunk.js.map": "./static/js/3509.f3bae3cd.chunk.js.map", - "889.961090a3.chunk.js.map": "./static/js/889.961090a3.chunk.js.map", - "9088.9dd285c2.chunk.js.map": "./static/js/9088.9dd285c2.chunk.js.map", - "247.af004b44.chunk.js.map": "./static/js/247.af004b44.chunk.js.map", - "2763.8a8f4e01.chunk.js.map": "./static/js/2763.8a8f4e01.chunk.js.map", - "911.6e143898.chunk.js.map": "./static/js/911.6e143898.chunk.js.map", - "4549.a4409fb4.chunk.js.map": "./static/js/4549.a4409fb4.chunk.js.map", - "817.c52eeb4d.chunk.js.map": "./static/js/817.c52eeb4d.chunk.js.map", - "9518.484c0bd8.chunk.js.map": "./static/js/9518.484c0bd8.chunk.js.map", - "2193.5d74569e.chunk.js.map": "./static/js/2193.5d74569e.chunk.js.map", - "225.b0001aa0.chunk.js.map": "./static/js/225.b0001aa0.chunk.js.map", + "9382.bd8214f2.chunk.js.map": "./static/js/9382.bd8214f2.chunk.js.map", + "7134.1a5a0c34.chunk.js.map": "./static/js/7134.1a5a0c34.chunk.js.map", + "3034.e1fff37c.chunk.js.map": "./static/js/3034.e1fff37c.chunk.js.map", + "3138.47ee08f2.chunk.js.map": "./static/js/3138.47ee08f2.chunk.js.map", + "711.bc7ee5ed.chunk.js.map": "./static/js/711.bc7ee5ed.chunk.js.map", + "6901.9f19a060.chunk.js.map": "./static/js/6901.9f19a060.chunk.js.map", + "2185.dabc2b42.chunk.js.map": "./static/js/2185.dabc2b42.chunk.js.map", + "9968.c45ff8f4.chunk.js.map": "./static/js/9968.c45ff8f4.chunk.js.map", + "7494.883411d0.chunk.js.map": "./static/js/7494.883411d0.chunk.js.map", + "4738.c8ae5b4a.chunk.js.map": "./static/js/4738.c8ae5b4a.chunk.js.map", + "3989.7bc0050a.chunk.js.map": "./static/js/3989.7bc0050a.chunk.js.map", + "5702.0d80f056.chunk.js.map": "./static/js/5702.0d80f056.chunk.js.map", + "5759.edc8340c.chunk.js.map": "./static/js/5759.edc8340c.chunk.js.map", + "51.872b251a.chunk.js.map": "./static/js/51.872b251a.chunk.js.map", + "312.a4a9011b.chunk.js.map": "./static/js/312.a4a9011b.chunk.js.map", + "2032.27438209.chunk.js.map": "./static/js/2032.27438209.chunk.js.map", + "4619.471aee8b.chunk.js.map": "./static/js/4619.471aee8b.chunk.js.map", + "8990.58d88bc9.chunk.js.map": "./static/js/8990.58d88bc9.chunk.js.map", + "8455.6e72f5ad.chunk.js.map": "./static/js/8455.6e72f5ad.chunk.js.map", + "3690.6957ca61.chunk.js.map": "./static/js/3690.6957ca61.chunk.js.map", + "1604.64ec26a0.chunk.js.map": "./static/js/1604.64ec26a0.chunk.js.map", + "9952.977159a7.chunk.js.map": "./static/js/9952.977159a7.chunk.js.map", + "402.64814df4.chunk.js.map": "./static/js/402.64814df4.chunk.js.map", + "1705.8c12b37a.chunk.js.map": "./static/js/1705.8c12b37a.chunk.js.map", + "1581.9e1d2acf.chunk.js.map": "./static/js/1581.9e1d2acf.chunk.js.map", + "455.3a91ee14.chunk.js.map": "./static/js/455.3a91ee14.chunk.js.map", + "2661.88895459.chunk.js.map": "./static/js/2661.88895459.chunk.js.map", + "3509.3accc3d1.chunk.js.map": "./static/js/3509.3accc3d1.chunk.js.map", + "889.a30c4ca5.chunk.js.map": "./static/js/889.a30c4ca5.chunk.js.map", + "9088.b641525f.chunk.js.map": "./static/js/9088.b641525f.chunk.js.map", + "247.83abc0ba.chunk.js.map": "./static/js/247.83abc0ba.chunk.js.map", + "2763.ced3d1e6.chunk.js.map": "./static/js/2763.ced3d1e6.chunk.js.map", + "911.85827a45.chunk.js.map": "./static/js/911.85827a45.chunk.js.map", + "4549.3d93db81.chunk.js.map": "./static/js/4549.3d93db81.chunk.js.map", + "817.ae83167e.chunk.js.map": "./static/js/817.ae83167e.chunk.js.map", + "9518.37a0f445.chunk.js.map": "./static/js/9518.37a0f445.chunk.js.map", + "2193.a74f0e37.chunk.js.map": "./static/js/2193.a74f0e37.chunk.js.map", + "225.4a99e6a2.chunk.js.map": "./static/js/225.4a99e6a2.chunk.js.map", "601.0071eb88.chunk.js.map": "./static/js/601.0071eb88.chunk.js.map", "9955.92b905ab.chunk.js.map": "./static/js/9955.92b905ab.chunk.js.map", "6786.1f6da6c6.chunk.js.map": "./static/js/6786.1f6da6c6.chunk.js.map", "8265.889d47d3.chunk.js.map": "./static/js/8265.889d47d3.chunk.js.map", + "134.3f6d60a2.chunk.js.map": "./static/js/134.3f6d60a2.chunk.js.map", "3801.bece6d36.chunk.js.map": "./static/js/3801.bece6d36.chunk.js.map", - "134.117c7fbe.chunk.js.map": "./static/js/134.117c7fbe.chunk.js.map", "1748.291be92f.chunk.js.map": "./static/js/1748.291be92f.chunk.js.map", "2121.6000774d.chunk.js.map": "./static/js/2121.6000774d.chunk.js.map", - "7082.dc493620.chunk.js.map": "./static/js/7082.dc493620.chunk.js.map", - "1520.f9bd04d7.chunk.js.map": "./static/js/1520.f9bd04d7.chunk.js.map", - "6008.cdca3087.chunk.js.map": "./static/js/6008.cdca3087.chunk.js.map", - "7374.f3d5edc4.chunk.js.map": "./static/js/7374.f3d5edc4.chunk.js.map" + "7082.e66ba30d.chunk.js.map": "./static/js/7082.e66ba30d.chunk.js.map", + "1520.8019c157.chunk.js.map": "./static/js/1520.8019c157.chunk.js.map", + "6008.10fb9564.chunk.js.map": "./static/js/6008.10fb9564.chunk.js.map", + "7784.c0448d91.chunk.js.map": "./static/js/7784.c0448d91.chunk.js.map" }, "entrypoints": [ - "static/css/main.7f39beab.css", - "static/js/main.379b5c5e.js" + "static/css/main.e60e4760.css", + "static/js/main.ca749b3b.js" ] } \ No newline at end of file diff --git a/portal-ui/build/index.html b/portal-ui/build/index.html index 3109886969..bf9f8f3ab0 100644 --- a/portal-ui/build/index.html +++ b/portal-ui/build/index.html @@ -1 +1 @@ -MinIO Console
\ No newline at end of file +MinIO Console
\ No newline at end of file diff --git a/portal-ui/build/static/css/main.7f39beab.css b/portal-ui/build/static/css/main.7f39beab.css deleted file mode 100644 index 982dd7c2ef..0000000000 --- a/portal-ui/build/static/css/main.7f39beab.css +++ /dev/null @@ -1,2 +0,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: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;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;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{cursor:ne-resize;right:0;top:0;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;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;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;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;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;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;transform:rotate(180deg)}.react-resizable-handle-ne{cursor:ne-resize;right:0;top:0;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;transform:rotate(135deg)}.react-resizable-handle-e{right:0;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;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.removeArrows input::-webkit-inner-spin-button,.removeArrows input::-webkit-outer-spin-button,input.removeArrows::-webkit-inner-spin-button,input.removeArrows::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.removeArrows input[type=number],input.removeArrows[type=number]{-moz-appearance:textfield} -/*# sourceMappingURL=main.7f39beab.css.map*/ \ No newline at end of file diff --git a/portal-ui/build/static/css/main.7f39beab.css.map b/portal-ui/build/static/css/main.7f39beab.css.map deleted file mode 100644 index 6477b6a30b..0000000000 --- a/portal-ui/build/static/css/main.7f39beab.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/css/main.7f39beab.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,6BACF,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,uBACF,CACA,mEACE,QAAS,CAET,gBAAiB,CADjB,OAEF,CACA,mEAGE,gBAAiB,CADjB,MAAO,CADP,KAAM,CAGN,wBACF,CACA,mEAGE,gBAAiB,CADjB,OAAQ,CADR,KAAM,CAGN,wBACF,CACA,oIAIE,gBAAiB,CADjB,gBAAiB,CADjB,OAGF,CACA,kEACE,MAAO,CACP,wBACF,CACA,kEACE,OAAQ,CACR,wBACF,CACA,oIAIE,gBAAiB,CAFjB,QAAS,CACT,iBAEF,CACA,kEACE,KAAM,CACN,wBACF,CACA,kEACE,QAAS,CACT,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,uBACF,CACA,2BACE,QAAS,CAET,gBAAiB,CADjB,OAEF,CACA,2BAGE,gBAAiB,CADjB,MAAO,CADP,KAAM,CAGN,wBACF,CACA,2BAGE,gBAAiB,CADjB,OAAQ,CADR,KAAM,CAGN,wBACF,CACA,oDAIE,gBAAiB,CADjB,gBAAiB,CADjB,OAGF,CACA,0BACE,MAAO,CACP,wBACF,CACA,0BACE,OAAQ,CACR,wBACF,CACA,oDAIE,gBAAiB,CAFjB,QAAS,CACT,iBAEF,CACA,0BACE,KAAM,CACN,wBACF,CACA,0BACE,QAAS,CACT,uBACF,CChEA,KAGE,kCAAmC,CACnC,iCAAkC,CAFlC,4BAAgC,CADhC,QAIF,CAEA,KACE,uEAEF,CAGA,0LAIE,uBAAwB,CACxB,QACF,CAGA,iEAEE,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: \"Inter\", 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.removeArrows input::-webkit-outer-spin-button,\n.removeArrows input::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n/* Firefox */\ninput.removeArrows[type=\"number\"],\n.removeArrows input[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.e60e4760.css b/portal-ui/build/static/css/main.e60e4760.css new file mode 100644 index 0000000000..a9f05e1197 --- /dev/null +++ b/portal-ui/build/static/css/main.e60e4760.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}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.removeArrows input::-webkit-inner-spin-button,.removeArrows input::-webkit-outer-spin-button,input.removeArrows::-webkit-inner-spin-button,input.removeArrows::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.removeArrows input[type=number],input.removeArrows[type=number]{-moz-appearance:textfield} +/*# sourceMappingURL=main.e60e4760.css.map*/ \ No newline at end of file diff --git a/portal-ui/build/static/css/main.e60e4760.css.map b/portal-ui/build/static/css/main.e60e4760.css.map new file mode 100644 index 0000000000..81cdbb9f4a --- /dev/null +++ b/portal-ui/build/static/css/main.e60e4760.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/main.e60e4760.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,KAGE,kCAAmC,CACnC,iCAAkC,CAFlC,4BAAgC,CADhC,QAIF,CAEA,KACE,uEAEF,CAGA,0LAIE,uBAAwB,CACxB,QACF,CAGA,iEAEE,yBACF","sources":["../node_modules/react-virtualized/source/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","body {\n margin: 0;\n font-family: \"Inter\", 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.removeArrows input::-webkit-outer-spin-button,\n.removeArrows input::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n/* Firefox */\ninput.removeArrows[type=\"number\"],\n.removeArrows input[type=\"number\"] {\n -moz-appearance: textfield;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/1191.afbdc0f3.chunk.js b/portal-ui/build/static/js/1191.a7906808.chunk.js similarity index 99% rename from portal-ui/build/static/js/1191.afbdc0f3.chunk.js rename to portal-ui/build/static/js/1191.a7906808.chunk.js index 45e7e1a3d1..b2d94331fe 100644 --- a/portal-ui/build/static/js/1191.afbdc0f3.chunk.js +++ b/portal-ui/build/static/js/1191.a7906808.chunk.js @@ -1,2 +1,2 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1191],{92217:function(e,t,n){"use strict";var r=n(72791),o=n(29945),i=n(78029),c=n.n(i),a=n(27454),s=n(80184);t.Z=function(e){var t=e.value,n=e.label,i=void 0===n?"":n,l=e.tooltip,u=void 0===l?"":l,d=e.mode,p=void 0===d?"json":d,f=e.onChange,y=e.editorHeight,h=void 0===y?250:y;return(0,s.jsx)(o.pq4,{value:t,onChange:function(e){return f(e)},mode:p,tooltip:u,editorHeight:h,label:i,helpTools:(0,s.jsx)(r.Fragment,{children:(0,s.jsx)(a.Z,{tooltip:"Copy to Clipboard",children:(0,s.jsx)(c(),{text:t,children:(0,s.jsx)(o.zxk,{type:"button",id:"copy-code-mirror",icon:(0,s.jsx)(o.TIy,{}),color:"primary",variant:"regular"})})})})})}},879:function(e,t,n){"use strict";n.d(t,{D_:function(){return c},Et:function(){return o},GJ:function(){return i},yh:function(){return r}});var r={RED:"#C83B51",GREEN:"#4CCB92",YELLOW:"#FFBD62"},o=function(e,t){return e<=t/2?"bad":2!==t&&e===t/2+1?"warn":e===t?"good":void 0},i=function(e){switch(e){case"offline":return"bad";case"online":return"good";default:return"warn"}},c=function(e,t){return e<=t/2?"bad":e===t/2+1?"warn":e===t?"good":void 0}},1191:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return R}});var r=n(1413),o=n(29439),i=n(72791),c=n(78687),a=n(57689),s=n(29945),l=n(23814),u=n(92217),d=n(56087),p=n(38442),f=n(75578),y=n(59114),h=n(879),x=n(80184),m={display:"grid",gridTemplateColumns:"70px 1fr",gap:15},j=function(e){var t=e.search,n=void 0===t?"":t,r=e.children,o=void 0===r?"":r,i=new RegExp("(".concat(function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}(n),")"),"i"),c=String(o).split(i);return n?c.map((function(e,t){return i.test(e)?(0,x.jsx)("mark",{children:e},t):e})):o},b=function(e){var t=e.policyStatements,n=(0,i.useState)(""),r=(0,o.Z)(n,2),c=r[0],a=r[1];return(0,x.jsxs)(s.rjZ,{container:!0,children:[(0,x.jsx)(s.rjZ,{item:!0,xs:12,children:(0,x.jsxs)(s.rjZ,{container:!0,sx:{display:"flex",alignItems:"center"},children:[(0,x.jsx)(s.rjZ,{item:!0,xs:12,sm:6,sx:{fontWeight:"bold"},children:"Statements"}),(0,x.jsx)(s.rjZ,{item:!0,xs:12,sm:6,sx:{display:"flex",justifyContent:"flex-end"},children:(0,x.jsx)(y.Z,{placeholder:"Search",onChange:a,value:c,sx:{maxWidth:380}})})]})}),!t&&(0,x.jsx)(i.Fragment,{children:"Policy has no statements"}),t&&(0,x.jsx)(s.rjZ,{item:!0,xs:12,sx:{"& .policy-row":{borderBottom:"1px solid #eaeaea"},"& .policy-row:first-child":{borderTop:"1px solid #eaeaea"},"& .policy-row:last-child":{borderBottom:"0px"},paddingTop:"15px","& mark":{color:"#000000",fontWeight:500}},children:t.map((function(e,t){var n=e.Effect,r="Allow"===n;return(0,x.jsxs)(s.xuv,{className:"policy-row",sx:{display:"grid",gridTemplateColumns:"1fr",gap:"15px",fontSize:"14px",padding:"10px 0 10px 0","& .label":{fontWeight:600}},children:[(0,x.jsxs)(s.xuv,{sx:m,children:[(0,x.jsx)(s.xuv,{className:"label",children:"Effect:"}),(0,x.jsxs)(s.xuv,{sx:{display:"flex",alignItems:"center","& .min-icon":{marginRight:"5px",fill:r?h.yh.GREEN:h.yh.RED,height:"14px",width:"14px"}},children:[r?(0,x.jsx)(s.E31,{}):(0,x.jsx)(s.dRf,{}),n]})]}),(0,x.jsxs)(s.rjZ,{container:!0,sx:{gap:15},children:[(0,x.jsxs)(s.rjZ,{item:!0,xs:12,sm:6,sx:m,children:[(0,x.jsx)(s.xuv,{className:"label",children:"Actions:"}),(0,x.jsx)(s.xuv,{children:e.Action&&e.Action.map((function(e,n){return(0,x.jsx)("div",{children:(0,x.jsx)(j,{search:c,children:e})},"".concat(t,"-r-").concat(n))}))})]}),(0,x.jsxs)(s.rjZ,{item:!0,xs:12,sm:6,sx:m,children:[(0,x.jsx)(s.xuv,{className:"label",children:"Resources:"}),(0,x.jsx)(s.xuv,{children:e.Resource&&e.Resource.map((function(e,n){return(0,x.jsxs)("div",{children:[" ",(0,x.jsx)(j,{search:c,children:e})]},"".concat(t,"-r-").concat(n))}))})]})]})]},"".concat(t))}))})]})},g=n(45248),v=n(87995),C=n(46078),w=n(81551),S=n(27454),O=n(47974),Z=n(31776),P=n(99670),E=(0,f.Z)(i.lazy((function(){return n.e(312).then(n.bind(n,312))}))),R=function(){var e=(0,w.TL)(),t=(0,a.s0)(),n=(0,a.UO)(),f=(0,c.v9)(C.$4),h=(0,i.useState)(null),m=(0,o.Z)(h,2),j=m[0],R=m[1],k=(0,i.useState)([]),D=(0,o.Z)(k,2),_=D[0],F=D[1],T=(0,i.useState)([]),A=(0,o.Z)(T,2),I=A[0],N=A[1],L=(0,i.useState)([]),M=(0,o.Z)(L,2),B=M[0],U=M[1],G=(0,i.useState)(!1),z=(0,o.Z)(G,2),H=z[0],K=z[1],J=(0,g.IO)(n.policyName||""),W=(0,i.useState)(""),X=(0,o.Z)(W,2),Q=X[0],Y=X[1],$=(0,i.useState)(!0),q=(0,o.Z)($,2),V=q[0],ee=q[1],te=(0,i.useState)(""),ne=(0,o.Z)(te,2),re=ne[0],oe=ne[1],ie=(0,i.useState)(!0),ce=(0,o.Z)(ie,2),ae=ce[0],se=ce[1],le=(0,i.useState)(""),ue=(0,o.Z)(le,2),de=ue[0],pe=ue[1],fe=(0,i.useState)(!0),ye=(0,o.Z)(fe,2),he=ye[0],xe=ye[1],me=(0,i.useState)(!1),je=(0,o.Z)(me,2),be=je[0],ge=je[1],ve=(0,i.useState)("summary"),Ce=(0,o.Z)(ve,2),we=Ce[0],Se=Ce[1],Oe=f&&f.includes("ldap-idp")||!1,Ze=(0,p.F)(d.C3,d.K6,!0),Pe=(0,p.F)(d.C3,d.k_,!0),Ee=(0,p.F)(d.C3,d.Rs,!0),Re=(0,p.F)(d.C3,d.iw,!0),ke=(0,p.F)(d.C3,d.GD,!0),De=(0,p.F)(d.C3,d.bE,!0),_e=(0,p.F)(d.C3,d.XM,!0);(0,i.useEffect)((function(){V&&(V&&(ke?Z.h.policy.policyInfo((0,g.LL)(J)).then((function(e){if(e.data){var t,n;R(e.data),Y(e?JSON.stringify(JSON.parse(null===(t=e.data)||void 0===t?void 0:t.policy),null,4):"");var r=JSON.parse(null===(n=e.data)||void 0===n?void 0:n.policy);F(r.Statement)}ee(!1)})).catch((function(t){e((0,v.Ih)(t)),ee(!1)})):ee(!1)),ae&&(Ee&&!Oe?Z.h.policies.listUsersForPolicy((0,g.LL)(J)).then((function(e){var t;N(null!==(t=e.data)&&void 0!==t?t:[]),se(!1)})).catch((function(t){e((0,v.Ih)(t)),se(!1)})):se(!1)),he&&(Ze&&!Oe?Z.h.policies.listGroupsForPolicy((0,g.LL)(J)).then((function(e){var t;U(null!==(t=e.data)&&void 0!==t?t:[]),xe(!1)})).catch((function(t){e((0,v.Ih)(t)),xe(!1)})):xe(!1)))}),[J,V,ae,he,N,U,Y,R,se,xe,Ee,Ze,ke,Oe,e]);var Fe=""!==J.trim(),Te=[{type:"view",onClick:function(e){t("".concat(d.gA.USERS,"/").concat((0,g.LL)(e)))},disableButtonFunction:function(){return!Re}}],Ae=I.filter((function(e){return e.includes(re)})),Ie=[{type:"view",onClick:function(e){t("".concat(d.gA.GROUPS,"/").concat((0,g.LL)(e)))},disableButtonFunction:function(){return!Pe}}],Ne=B.filter((function(e){return e.includes(de)})),Le=function(){se(!0),xe(!0),ee(!0)};return(0,i.useEffect)((function(){e((0,v.Sc)("policy_details_summary"))}),[]),(0,x.jsxs)(i.Fragment,{children:[be&&(0,x.jsx)(E,{deleteOpen:be,selectedPolicy:J,closeDeleteModalAndRefresh:function(e){ge(!1),t(d.gA.POLICIES)}}),(0,x.jsx)(O.Z,{label:(0,x.jsx)(i.Fragment,{children:(0,x.jsx)(s.hbI,{label:"Policy",onClick:function(){return t(d.gA.POLICIES)}})}),actions:(0,x.jsx)(P.Z,{})}),(0,x.jsxs)(s.Xgh,{children:[(0,x.jsx)(s.UHn,{icon:(0,x.jsx)(s.v42,{width:40}),title:J,subTitle:(0,x.jsx)(i.Fragment,{children:"IAM Policy"}),actions:(0,x.jsxs)(i.Fragment,{children:[(0,x.jsx)(p.s,{scopes:[d.Ft.ADMIN_DELETE_POLICY],resource:d.C3,errorProps:{disabled:!0},children:(0,x.jsx)(S.Z,{tooltip:De?"":(0,d.MK)(d.bE,"delete Policies"),children:(0,x.jsx)(s.zxk,{id:"delete-policy",label:"Delete Policy",variant:"secondary",icon:(0,x.jsx)(s.XHJ,{}),onClick:function(){ge(!0)},disabled:!De})})}),(0,x.jsx)(S.Z,{tooltip:"Refresh",children:(0,x.jsx)(s.zxk,{id:"refresh-policy",label:"Refresh",variant:"regular",icon:(0,x.jsx)(s.DuK,{}),onClick:function(){Le()}})})]}),sx:{marginBottom:15}}),(0,x.jsx)(s.xuv,{children:(0,x.jsx)(s.mQc,{options:[{tabConfig:{label:"Summary",disabled:!ke,id:"summary"},content:(0,x.jsx)(i.Fragment,{children:(0,x.jsxs)(s.rjZ,{onMouseMove:function(){return e((0,v.Sc)("policy_details_summary"))},children:[(0,x.jsx)(s.NZf,{separator:!0,sx:{marginBottom:15},children:"Policy Summary"}),(0,x.jsx)(s.xuv,{withBorders:!0,children:(0,x.jsx)(b,{policyStatements:_})})]})})},{tabConfig:{label:"Users",disabled:!Ee||Oe,id:"users"},content:(0,x.jsx)(i.Fragment,{children:(0,x.jsxs)(s.rjZ,{onMouseMove:function(){return e((0,v.Sc)("policy_details_users"))},children:[(0,x.jsx)(s.NZf,{separator:!0,sx:{marginBottom:15},children:"Users"}),(0,x.jsxs)(s.rjZ,{container:!0,children:[I.length>0&&(0,x.jsx)(s.rjZ,{item:!0,xs:12,sx:(0,r.Z)((0,r.Z)({},l.OR.actionsTray),{},{marginBottom:15}),children:(0,x.jsx)(y.Z,{value:re,placeholder:"Search Users",id:"search-resource",onChange:function(e){oe(e)}})}),(0,x.jsx)(s.wQF,{itemActions:Te,columns:[{label:"Name",elementKey:"name"}],isLoading:ae,records:Ae,entityName:"Users with this Policy associated",idField:"name",customPaperHeight:"500px"})]})]})})},{tabConfig:{label:"Groups",disabled:!Ze||Oe,id:"groups"},content:(0,x.jsx)(i.Fragment,{children:(0,x.jsxs)(s.rjZ,{onMouseMove:function(){return e((0,v.Sc)("policy_details_groups"))},children:[(0,x.jsx)(s.NZf,{separator:!0,sx:{marginBottom:15},children:"Groups"}),(0,x.jsxs)(s.rjZ,{container:!0,children:[B.length>0&&(0,x.jsx)(s.rjZ,{item:!0,xs:12,sx:(0,r.Z)((0,r.Z)({},l.OR.actionsTray),{},{marginBottom:15}),children:(0,x.jsx)(y.Z,{value:re,placeholder:"Search Groups",id:"search-resource",onChange:function(e){pe(e)}})}),(0,x.jsx)(s.wQF,{itemActions:Ie,columns:[{label:"Name",elementKey:"name"}],isLoading:he,records:Ne,entityName:"Groups with this Policy associated",idField:"name",customPaperHeight:"500px"})]})]})})},{tabConfig:{label:"Raw Policy",disabled:!ke,id:"raw-policy"},content:(0,x.jsx)(i.Fragment,{children:(0,x.jsxs)(s.rjZ,{onMouseMove:function(){return e((0,v.Sc)("policy_details_policy"))},children:[(0,x.jsx)(s.NZf,{separator:!0,sx:{marginBottom:15},children:"Raw Policy"}),(0,x.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(t){t.preventDefault(),H||(K(!0),_e?Z.h.policies.addPolicy({name:J,policy:Q}).then((function(t){K(!1),e((0,v.y1)("Policy successfully updated")),Le()})).catch((function(t){K(!1),e((0,v.Ih)({errorMessage:"There was an error updating the Policy ",detailedError:"There was an error updating the Policy: "+(t.error.detailedMessage||"")+". Please check Policy syntax."}))})):K(!1))},children:(0,x.jsxs)(s.rjZ,{container:!0,children:[(0,x.jsx)(s.rjZ,{item:!0,xs:12,children:(0,x.jsx)(u.Z,{value:Q,onChange:function(e){_e&&Y(e)},editorHeight:"350px"})}),(0,x.jsxs)(s.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end",paddingTop:16,gap:8},children:[!j&&(0,x.jsx)(s.zxk,{type:"button",variant:"regular",id:"clear-policy",onClick:function(){Y("{}")},children:"Clear"}),(0,x.jsx)(p.s,{scopes:[d.Ft.ADMIN_CREATE_POLICY],resource:d.C3,errorProps:{disabled:!0},children:(0,x.jsx)(S.Z,{tooltip:_e?"":(0,d.MK)(d.XM,"edit a Policy"),children:(0,x.jsx)(s.zxk,{id:"save",type:"submit",variant:"callAction",color:"primary",disabled:H||!Fe||!_e,label:"Save"})})})]}),H&&(0,x.jsx)(s.rjZ,{item:!0,xs:12,children:(0,x.jsx)(s.kod,{})})]})})]})})}],currentTabOrPath:we,onTabClick:function(e){return Se(e)}})})]})]})}},76998:function(e,t,n){"use strict";var r=n(42458),o={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,i,c,a,s,l,u=!1;t||(t={}),n=t.debug||!1;try{if(c=r(),a=document.createRange(),s=document.getSelection(),(l=document.createElement("span")).textContent=e,l.ariaHidden="true",l.style.all="unset",l.style.position="fixed",l.style.top=0,l.style.clip="rect(0, 0, 0, 0)",l.style.whiteSpace="pre",l.style.webkitUserSelect="text",l.style.MozUserSelect="text",l.style.msUserSelect="text",l.style.userSelect="text",l.addEventListener("copy",(function(r){if(r.stopPropagation(),t.format)if(r.preventDefault(),"undefined"===typeof r.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var i=o[t.format]||o.default;window.clipboardData.setData(i,e)}else r.clipboardData.clearData(),r.clipboardData.setData(t.format,e);t.onCopy&&(r.preventDefault(),t.onCopy(r.clipboardData))})),document.body.appendChild(l),a.selectNodeContents(l),s.addRange(a),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");u=!0}catch(d){n&&console.error("unable to copy using execCommand: ",d),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),u=!0}catch(d){n&&console.error("unable to copy using clipboardData: ",d),n&&console.error("falling back to prompt"),i=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(i,e)}}finally{s&&("function"==typeof s.removeRange?s.removeRange(a):s.removeAllRanges()),l&&document.body.removeChild(l),c()}return u}},568:function(e,t,n){"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var o=a(n(72791)),i=a(n(76998)),c=["text","onCopy","options","children"];function a(e){return e&&e.__esModule?e:{default:e}}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function d(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}(n),")"),"i"),c=String(o).split(i);return n?c.map((function(e,t){return i.test(e)?(0,x.jsx)("mark",{children:e},t):e})):o},b=function(e){var t=e.policyStatements,n=(0,i.useState)(""),r=(0,o.Z)(n,2),c=r[0],a=r[1];return(0,x.jsxs)(s.rjZ,{container:!0,children:[(0,x.jsx)(s.rjZ,{item:!0,xs:12,children:(0,x.jsxs)(s.rjZ,{container:!0,sx:{display:"flex",alignItems:"center"},children:[(0,x.jsx)(s.rjZ,{item:!0,xs:12,sm:6,sx:{fontWeight:"bold"},children:"Statements"}),(0,x.jsx)(s.rjZ,{item:!0,xs:12,sm:6,sx:{display:"flex",justifyContent:"flex-end"},children:(0,x.jsx)(y.Z,{placeholder:"Search",onChange:a,value:c,sx:{maxWidth:380}})})]})}),!t&&(0,x.jsx)(i.Fragment,{children:"Policy has no statements"}),t&&(0,x.jsx)(s.rjZ,{item:!0,xs:12,sx:{"& .policy-row":{borderBottom:"1px solid #eaeaea"},"& .policy-row:first-child":{borderTop:"1px solid #eaeaea"},"& .policy-row:last-child":{borderBottom:"0px"},paddingTop:"15px","& mark":{color:"#000000",fontWeight:500}},children:t.map((function(e,t){var n=e.Effect,r="Allow"===n;return(0,x.jsxs)(s.xuv,{className:"policy-row",sx:{display:"grid",gridTemplateColumns:"1fr",gap:"15px",fontSize:"14px",padding:"10px 0 10px 0","& .label":{fontWeight:600}},children:[(0,x.jsxs)(s.xuv,{sx:m,children:[(0,x.jsx)(s.xuv,{className:"label",children:"Effect:"}),(0,x.jsxs)(s.xuv,{sx:{display:"flex",alignItems:"center","& .min-icon":{marginRight:"5px",fill:r?h.yh.GREEN:h.yh.RED,height:"14px",width:"14px"}},children:[r?(0,x.jsx)(s.E31,{}):(0,x.jsx)(s.dRf,{}),n]})]}),(0,x.jsxs)(s.rjZ,{container:!0,sx:{gap:15},children:[(0,x.jsxs)(s.rjZ,{item:!0,xs:12,sm:6,sx:m,children:[(0,x.jsx)(s.xuv,{className:"label",children:"Actions:"}),(0,x.jsx)(s.xuv,{children:e.Action&&e.Action.map((function(e,n){return(0,x.jsx)("div",{children:(0,x.jsx)(j,{search:c,children:e})},"".concat(t,"-r-").concat(n))}))})]}),(0,x.jsxs)(s.rjZ,{item:!0,xs:12,sm:6,sx:m,children:[(0,x.jsx)(s.xuv,{className:"label",children:"Resources:"}),(0,x.jsx)(s.xuv,{children:e.Resource&&e.Resource.map((function(e,n){return(0,x.jsxs)("div",{children:[" ",(0,x.jsx)(j,{search:c,children:e})]},"".concat(t,"-r-").concat(n))}))})]})]})]},"".concat(t))}))})]})},g=n(45248),v=n(87995),C=n(46078),w=n(44690),S=n(27454),O=n(47974),Z=n(31776),P=n(99670),E=(0,f.Z)(i.lazy((function(){return n.e(312).then(n.bind(n,312))}))),R=function(){var e=(0,w.TL)(),t=(0,a.s0)(),n=(0,a.UO)(),f=(0,c.v9)(C.$4),h=(0,i.useState)(null),m=(0,o.Z)(h,2),j=m[0],R=m[1],k=(0,i.useState)([]),D=(0,o.Z)(k,2),_=D[0],F=D[1],T=(0,i.useState)([]),A=(0,o.Z)(T,2),I=A[0],N=A[1],L=(0,i.useState)([]),M=(0,o.Z)(L,2),B=M[0],U=M[1],G=(0,i.useState)(!1),z=(0,o.Z)(G,2),H=z[0],K=z[1],J=(0,g.IO)(n.policyName||""),W=(0,i.useState)(""),X=(0,o.Z)(W,2),Q=X[0],Y=X[1],$=(0,i.useState)(!0),q=(0,o.Z)($,2),V=q[0],ee=q[1],te=(0,i.useState)(""),ne=(0,o.Z)(te,2),re=ne[0],oe=ne[1],ie=(0,i.useState)(!0),ce=(0,o.Z)(ie,2),ae=ce[0],se=ce[1],le=(0,i.useState)(""),ue=(0,o.Z)(le,2),de=ue[0],pe=ue[1],fe=(0,i.useState)(!0),ye=(0,o.Z)(fe,2),he=ye[0],xe=ye[1],me=(0,i.useState)(!1),je=(0,o.Z)(me,2),be=je[0],ge=je[1],ve=(0,i.useState)("summary"),Ce=(0,o.Z)(ve,2),we=Ce[0],Se=Ce[1],Oe=f&&f.includes("ldap-idp")||!1,Ze=(0,p.F)(d.C3,d.K6,!0),Pe=(0,p.F)(d.C3,d.k_,!0),Ee=(0,p.F)(d.C3,d.Rs,!0),Re=(0,p.F)(d.C3,d.iw,!0),ke=(0,p.F)(d.C3,d.GD,!0),De=(0,p.F)(d.C3,d.bE,!0),_e=(0,p.F)(d.C3,d.XM,!0);(0,i.useEffect)((function(){V&&(V&&(ke?Z.h.policy.policyInfo((0,g.LL)(J)).then((function(e){if(e.data){var t,n;R(e.data),Y(e?JSON.stringify(JSON.parse(null===(t=e.data)||void 0===t?void 0:t.policy),null,4):"");var r=JSON.parse(null===(n=e.data)||void 0===n?void 0:n.policy);F(r.Statement)}ee(!1)})).catch((function(t){e((0,v.Ih)(t)),ee(!1)})):ee(!1)),ae&&(Ee&&!Oe?Z.h.policies.listUsersForPolicy((0,g.LL)(J)).then((function(e){var t;N(null!==(t=e.data)&&void 0!==t?t:[]),se(!1)})).catch((function(t){e((0,v.Ih)(t)),se(!1)})):se(!1)),he&&(Ze&&!Oe?Z.h.policies.listGroupsForPolicy((0,g.LL)(J)).then((function(e){var t;U(null!==(t=e.data)&&void 0!==t?t:[]),xe(!1)})).catch((function(t){e((0,v.Ih)(t)),xe(!1)})):xe(!1)))}),[J,V,ae,he,N,U,Y,R,se,xe,Ee,Ze,ke,Oe,e]);var Fe=""!==J.trim(),Te=[{type:"view",onClick:function(e){t("".concat(d.gA.USERS,"/").concat((0,g.LL)(e)))},disableButtonFunction:function(){return!Re}}],Ae=I.filter((function(e){return e.includes(re)})),Ie=[{type:"view",onClick:function(e){t("".concat(d.gA.GROUPS,"/").concat((0,g.LL)(e)))},disableButtonFunction:function(){return!Pe}}],Ne=B.filter((function(e){return e.includes(de)})),Le=function(){se(!0),xe(!0),ee(!0)};return(0,i.useEffect)((function(){e((0,v.Sc)("policy_details_summary"))}),[]),(0,x.jsxs)(i.Fragment,{children:[be&&(0,x.jsx)(E,{deleteOpen:be,selectedPolicy:J,closeDeleteModalAndRefresh:function(e){ge(!1),t(d.gA.POLICIES)}}),(0,x.jsx)(O.Z,{label:(0,x.jsx)(i.Fragment,{children:(0,x.jsx)(s.hbI,{label:"Policy",onClick:function(){return t(d.gA.POLICIES)}})}),actions:(0,x.jsx)(P.Z,{})}),(0,x.jsxs)(s.Xgh,{children:[(0,x.jsx)(s.UHn,{icon:(0,x.jsx)(s.v42,{width:40}),title:J,subTitle:(0,x.jsx)(i.Fragment,{children:"IAM Policy"}),actions:(0,x.jsxs)(i.Fragment,{children:[(0,x.jsx)(p.s,{scopes:[d.Ft.ADMIN_DELETE_POLICY],resource:d.C3,errorProps:{disabled:!0},children:(0,x.jsx)(S.Z,{tooltip:De?"":(0,d.MK)(d.bE,"delete Policies"),children:(0,x.jsx)(s.zxk,{id:"delete-policy",label:"Delete Policy",variant:"secondary",icon:(0,x.jsx)(s.XHJ,{}),onClick:function(){ge(!0)},disabled:!De})})}),(0,x.jsx)(S.Z,{tooltip:"Refresh",children:(0,x.jsx)(s.zxk,{id:"refresh-policy",label:"Refresh",variant:"regular",icon:(0,x.jsx)(s.DuK,{}),onClick:function(){Le()}})})]}),sx:{marginBottom:15}}),(0,x.jsx)(s.xuv,{children:(0,x.jsx)(s.mQc,{options:[{tabConfig:{label:"Summary",disabled:!ke,id:"summary"},content:(0,x.jsx)(i.Fragment,{children:(0,x.jsxs)(s.rjZ,{onMouseMove:function(){return e((0,v.Sc)("policy_details_summary"))},children:[(0,x.jsx)(s.NZf,{separator:!0,sx:{marginBottom:15},children:"Policy Summary"}),(0,x.jsx)(s.xuv,{withBorders:!0,children:(0,x.jsx)(b,{policyStatements:_})})]})})},{tabConfig:{label:"Users",disabled:!Ee||Oe,id:"users"},content:(0,x.jsx)(i.Fragment,{children:(0,x.jsxs)(s.rjZ,{onMouseMove:function(){return e((0,v.Sc)("policy_details_users"))},children:[(0,x.jsx)(s.NZf,{separator:!0,sx:{marginBottom:15},children:"Users"}),(0,x.jsxs)(s.rjZ,{container:!0,children:[I.length>0&&(0,x.jsx)(s.rjZ,{item:!0,xs:12,sx:(0,r.Z)((0,r.Z)({},l.OR.actionsTray),{},{marginBottom:15}),children:(0,x.jsx)(y.Z,{value:re,placeholder:"Search Users",id:"search-resource",onChange:function(e){oe(e)}})}),(0,x.jsx)(s.wQF,{itemActions:Te,columns:[{label:"Name",elementKey:"name"}],isLoading:ae,records:Ae,entityName:"Users with this Policy associated",idField:"name",customPaperHeight:"500px"})]})]})})},{tabConfig:{label:"Groups",disabled:!Ze||Oe,id:"groups"},content:(0,x.jsx)(i.Fragment,{children:(0,x.jsxs)(s.rjZ,{onMouseMove:function(){return e((0,v.Sc)("policy_details_groups"))},children:[(0,x.jsx)(s.NZf,{separator:!0,sx:{marginBottom:15},children:"Groups"}),(0,x.jsxs)(s.rjZ,{container:!0,children:[B.length>0&&(0,x.jsx)(s.rjZ,{item:!0,xs:12,sx:(0,r.Z)((0,r.Z)({},l.OR.actionsTray),{},{marginBottom:15}),children:(0,x.jsx)(y.Z,{value:re,placeholder:"Search Groups",id:"search-resource",onChange:function(e){pe(e)}})}),(0,x.jsx)(s.wQF,{itemActions:Ie,columns:[{label:"Name",elementKey:"name"}],isLoading:he,records:Ne,entityName:"Groups with this Policy associated",idField:"name",customPaperHeight:"500px"})]})]})})},{tabConfig:{label:"Raw Policy",disabled:!ke,id:"raw-policy"},content:(0,x.jsx)(i.Fragment,{children:(0,x.jsxs)(s.rjZ,{onMouseMove:function(){return e((0,v.Sc)("policy_details_policy"))},children:[(0,x.jsx)(s.NZf,{separator:!0,sx:{marginBottom:15},children:"Raw Policy"}),(0,x.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(t){t.preventDefault(),H||(K(!0),_e?Z.h.policies.addPolicy({name:J,policy:Q}).then((function(t){K(!1),e((0,v.y1)("Policy successfully updated")),Le()})).catch((function(t){K(!1),e((0,v.Ih)({errorMessage:"There was an error updating the Policy ",detailedError:"There was an error updating the Policy: "+(t.error.detailedMessage||"")+". Please check Policy syntax."}))})):K(!1))},children:(0,x.jsxs)(s.rjZ,{container:!0,children:[(0,x.jsx)(s.rjZ,{item:!0,xs:12,children:(0,x.jsx)(u.Z,{value:Q,onChange:function(e){_e&&Y(e)},editorHeight:"350px"})}),(0,x.jsxs)(s.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end",paddingTop:16,gap:8},children:[!j&&(0,x.jsx)(s.zxk,{type:"button",variant:"regular",id:"clear-policy",onClick:function(){Y("{}")},children:"Clear"}),(0,x.jsx)(p.s,{scopes:[d.Ft.ADMIN_CREATE_POLICY],resource:d.C3,errorProps:{disabled:!0},children:(0,x.jsx)(S.Z,{tooltip:_e?"":(0,d.MK)(d.XM,"edit a Policy"),children:(0,x.jsx)(s.zxk,{id:"save",type:"submit",variant:"callAction",color:"primary",disabled:H||!Fe||!_e,label:"Save"})})})]}),H&&(0,x.jsx)(s.rjZ,{item:!0,xs:12,children:(0,x.jsx)(s.kod,{})})]})})]})})}],currentTabOrPath:we,onTabClick:function(e){return Se(e)}})})]})]})}},76998:function(e,t,n){"use strict";var r=n(42458),o={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,i,c,a,s,l,u=!1;t||(t={}),n=t.debug||!1;try{if(c=r(),a=document.createRange(),s=document.getSelection(),(l=document.createElement("span")).textContent=e,l.ariaHidden="true",l.style.all="unset",l.style.position="fixed",l.style.top=0,l.style.clip="rect(0, 0, 0, 0)",l.style.whiteSpace="pre",l.style.webkitUserSelect="text",l.style.MozUserSelect="text",l.style.msUserSelect="text",l.style.userSelect="text",l.addEventListener("copy",(function(r){if(r.stopPropagation(),t.format)if(r.preventDefault(),"undefined"===typeof r.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var i=o[t.format]||o.default;window.clipboardData.setData(i,e)}else r.clipboardData.clearData(),r.clipboardData.setData(t.format,e);t.onCopy&&(r.preventDefault(),t.onCopy(r.clipboardData))})),document.body.appendChild(l),a.selectNodeContents(l),s.addRange(a),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");u=!0}catch(d){n&&console.error("unable to copy using execCommand: ",d),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),u=!0}catch(d){n&&console.error("unable to copy using clipboardData: ",d),n&&console.error("falling back to prompt"),i=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(i,e)}}finally{s&&("function"==typeof s.removeRange?s.removeRange(a):s.removeAllRanges()),l&&document.body.removeChild(l),c()}return u}},568:function(e,t,n){"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var o=a(n(72791)),i=a(n(76998)),c=["text","onCopy","options","children"];function a(e){return e&&e.__esModule?e:{default:e}}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function d(e,t){for(var n=0;n.\n\nimport React, { Fragment } from \"react\";\nimport { Button, CodeEditor, CopyIcon } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n onChange: (value: string) => any;\n editorHeight?: string | number;\n}\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n onChange,\n editorHeight = 250,\n}: ICodeWrapper) => {\n return (\n onChange(value)}\n mode={mode}\n tooltip={tooltip}\n editorHeight={editorHeight}\n label={label}\n helpTools={\n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n }\n />\n );\n};\n\nexport default CodeMirrorWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const STATUS_COLORS = {\n RED: \"#C83B51\",\n GREEN: \"#4CCB92\",\n YELLOW: \"#FFBD62\",\n};\n\nexport const getDriveStatusColor = (\n activeDisks: number,\n totalDrives: number,\n) => {\n if (activeDisks <= totalDrives / 2) {\n return \"bad\";\n }\n if (totalDrives !== 2 && activeDisks === totalDrives / 2 + 1) {\n return \"warn\";\n }\n if (activeDisks === totalDrives) {\n return \"good\";\n }\n};\n\nexport const serverStatusColor = (health_status: string) => {\n switch (health_status) {\n case \"offline\":\n return \"bad\";\n case \"online\":\n return \"good\";\n default:\n return \"warn\";\n }\n};\nexport const getNetworkStatusColor = (\n activeNetwork: number,\n networkTotal: number,\n) => {\n if (activeNetwork <= networkTotal / 2) {\n return \"bad\";\n }\n if (activeNetwork === networkTotal / 2 + 1) {\n return \"warn\";\n }\n if (activeNetwork === networkTotal) {\n return \"good\";\n }\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { DisabledIcon, EnabledIcon, Box, Grid } from \"mds\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { STATUS_COLORS } from \"../Dashboard/BasicDashboard/Utils\";\nimport { IAMStatement } from \"./types\";\n\nconst rowGridStyle = {\n display: \"grid\",\n gridTemplateColumns: \"70px 1fr\",\n gap: 15,\n};\n\nconst escapeRegExp = (str = \"\") =>\n str.replace(/([.?*+^$[\\]\\\\(){}|-])/g, \"\\\\$1\");\n\nconst Highlight = ({ search = \"\", children = \"\" }): any => {\n const txtParts = new RegExp(`(${escapeRegExp(search)})`, \"i\");\n const parts = String(children).split(txtParts);\n\n if (search) {\n return parts.map((part, index) =>\n txtParts.test(part) ? {part} : part,\n );\n } else {\n return children;\n }\n};\n\nconst PolicyView = ({\n policyStatements,\n}: {\n policyStatements: IAMStatement[];\n}) => {\n const [filter, setFilter] = useState(\"\");\n\n return (\n \n \n \n \n Statements\n \n \n \n \n \n \n {!policyStatements && Policy has no statements}\n {policyStatements && (\n \n {policyStatements.map((stmt, i) => {\n const effect = stmt.Effect;\n const isAllow = effect === \"Allow\";\n return (\n \n \n Effect:\n \n {isAllow ? : }\n {effect}\n \n \n \n \n Actions:\n \n {stmt.Action &&\n stmt.Action.map((act, actIndex) => (\n
\n {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};\n\nexport default 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 } from \"./types\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport {\n BackLink,\n Box,\n Button,\n DataTable,\n Grid,\n IAMPoliciesIcon,\n PageLayout,\n ProgressBar,\n RefreshIcon,\n ScreenTitle,\n SectionTitle,\n Tabs,\n TrashIcon,\n} from \"mds\";\nimport { actionsTray } from \"../Common/FormComponents/common/styleLibrary\";\n\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\n\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 {\n setErrorSnackMessage,\n setHelpName,\n setSnackBarMessage,\n} from \"../../../systemSlice\";\nimport { selFeatures } from \"../consoleSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport { Policy } from \"../../../api/consoleApi\";\nimport { api } from \"../../../api\";\nimport HelpMenu from \"../HelpMenu\";\nimport SearchBox from \"../Common/SearchBox\";\n\nconst DeletePolicy = withSuspense(React.lazy(() => import(\"./DeletePolicy\")));\n\nconst PolicyDetails = () => {\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 const [selectedTab, setSelectedTab] = useState(\"summary\");\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.policies\n .addPolicy({\n name: policyName,\n policy: policyDefinition,\n })\n .then((_) => {\n setAddLoading(false);\n dispatch(setSnackBarMessage(\"Policy successfully updated\"));\n refreshPolicyDetails();\n })\n .catch((err) => {\n setAddLoading(false);\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"There was an error updating the Policy \",\n detailedError:\n \"There was an error updating the Policy: \" +\n (err.error.detailedMessage || \"\") +\n \". Please check Policy syntax.\",\n }),\n );\n });\n } else {\n setAddLoading(false);\n }\n };\n\n useEffect(() => {\n const loadUsersForPolicy = () => {\n if (loadingUsers) {\n if (displayUsers && !ldapIsEnabled) {\n api.policies\n .listUsersForPolicy(encodeURLString(policyName))\n .then((result) => {\n setUserList(result.data ?? []);\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.policies\n .listGroupsForPolicy(encodeURLString(policyName))\n .then((result) => {\n setGroupList(result.data ?? []);\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.policy\n .policyInfo(encodeURLString(policyName))\n .then((result) => {\n if (result.data) {\n setPolicy(result.data);\n setPolicyDefinition(\n result\n ? JSON.stringify(JSON.parse(result.data?.policy!), null, 4)\n : \"\",\n );\n const pol: IAMPolicy = JSON.parse(result.data?.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 useEffect(() => {\n dispatch(setHelpName(\"policy_details_summary\"));\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {deleteOpen && (\n \n )}\n \n navigate(IAM_PAGES.POLICIES)}\n />\n \n }\n actions={}\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 sx={{ marginBottom: 15 }}\n />\n \n \n \n dispatch(setHelpName(\"policy_details_summary\"))\n }\n >\n \n Policy Summary\n \n \n \n \n \n \n ),\n },\n {\n tabConfig: {\n label: \"Users\",\n disabled: !displayUsers || ldapIsEnabled,\n id: \"users\",\n },\n content: (\n \n \n dispatch(setHelpName(\"policy_details_users\"))\n }\n >\n \n Users\n \n \n {userList.length > 0 && (\n \n {\n setFilterUsers(val);\n }}\n />\n \n )}\n \n \n \n \n ),\n },\n {\n tabConfig: {\n label: \"Groups\",\n disabled: !displayGroups || ldapIsEnabled,\n id: \"groups\",\n },\n content: (\n \n \n dispatch(setHelpName(\"policy_details_groups\"))\n }\n >\n \n Groups\n \n \n {groupList.length > 0 && (\n \n {\n setFilterGroups(val);\n }}\n />\n \n )}\n \n \n \n \n ),\n },\n {\n tabConfig: {\n label: \"Raw Policy\",\n disabled: !displayPolicy,\n id: \"raw-policy\",\n },\n content: (\n \n \n dispatch(setHelpName(\"policy_details_policy\"))\n }\n >\n \n Raw Policy\n \n ) => {\n saveRecord(e);\n }}\n >\n \n \n {\n if (canEditPolicy) {\n setPolicyDefinition(value);\n }\n }}\n editorHeight={\"350px\"}\n />\n \n \n {!policy && (\n {\n resetForm();\n }}\n >\n Clear\n \n )}\n \n \n \n \n \n \n {addLoading && (\n \n \n \n )}\n \n \n \n \n ),\n },\n ]}\n currentTabOrPath={selectedTab}\n onTabClick={(tab) => setSelectedTab(tab)}\n />\n \n \n \n );\n};\n\nexport default PolicyDetails;\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n"],"names":["_ref","value","_ref$label","label","_ref$tooltip","tooltip","_ref$mode","mode","onChange","_ref$editorHeight","editorHeight","_jsx","CodeEditor","helpTools","Fragment","children","TooltipWrapper","CopyToClipboard","text","Button","type","id","icon","CopyIcon","color","variant","STATUS_COLORS","RED","GREEN","YELLOW","getDriveStatusColor","activeDisks","totalDrives","serverStatusColor","health_status","getNetworkStatusColor","activeNetwork","networkTotal","rowGridStyle","display","gridTemplateColumns","gap","Highlight","_ref$search","search","_ref$children","txtParts","RegExp","concat","arguments","length","undefined","replace","escapeRegExp","parts","String","split","map","part","index","test","_ref2","policyStatements","_useState","useState","_useState2","_slicedToArray","filter","setFilter","_jsxs","Grid","container","item","xs","sx","alignItems","sm","fontWeight","justifyContent","SearchBox","placeholder","maxWidth","borderBottom","borderTop","paddingTop","stmt","i","effect","Effect","isAllow","Box","className","fontSize","padding","marginRight","fill","height","width","EnabledIcon","DisabledIcon","Action","act","actIndex","Resource","res","resIndex","DeletePolicy","withSuspense","React","dispatch","useAppDispatch","navigate","useNavigate","params","useParams","features","useSelector","selFeatures","policy","setPolicy","_useState3","_useState4","setPolicyStatements","_useState5","_useState6","userList","setUserList","_useState7","_useState8","groupList","setGroupList","_useState9","_useState10","addLoading","setAddLoading","policyName","decodeURLString","_useState11","_useState12","policyDefinition","setPolicyDefinition","_useState13","_useState14","loadingPolicy","setLoadingPolicy","_useState15","_useState16","filterUsers","setFilterUsers","_useState17","_useState18","loadingUsers","setLoadingUsers","_useState19","_useState20","filterGroups","setFilterGroups","_useState21","_useState22","loadingGroups","setLoadingGroups","_useState23","_useState24","deleteOpen","setDeleteOpen","_useState25","_useState26","selectedTab","setSelectedTab","ldapIsEnabled","includes","displayGroups","hasPermission","CONSOLE_UI_RESOURCE","listGroupPermissions","viewGroup","getGroupPermissions","displayUsers","listUsersPermissions","viewUser","viewUserPermissions","displayPolicy","viewPolicyPermissions","canDeletePolicy","deletePolicyPermissions","canEditPolicy","createPolicyPermissions","useEffect","api","policyInfo","encodeURLString","then","result","data","_result$data3","_result$data4","JSON","stringify","parse","pol","Statement","catch","err","setErrorSnackMessage","policies","listUsersForPolicy","_result$data","listGroupsForPolicy","_result$data2","validSave","trim","userTableActions","onClick","user","IAM_PAGES","USERS","disableButtonFunction","filteredUsers","elementItem","groupTableActions","group","GROUPS","filteredGroups","refreshPolicyDetails","setHelpName","selectedPolicy","closeDeleteModalAndRefresh","refresh","POLICIES","PageHeaderWrapper","BackLink","actions","HelpMenu","PageLayout","ScreenTitle","IAMPoliciesIcon","title","subTitle","SecureComponent","scopes","IAM_SCOPES","ADMIN_DELETE_POLICY","resource","errorProps","disabled","permissionTooltipHelper","TrashIcon","RefreshIcon","marginBottom","Tabs","options","tabConfig","content","onMouseMove","SectionTitle","separator","withBorders","PolicyView","_objectSpread","actionsTray","val","DataTable","itemActions","columns","elementKey","isLoading","records","entityName","idField","customPaperHeight","noValidate","autoComplete","onSubmit","e","preventDefault","addPolicy","name","_","setSnackBarMessage","errorMessage","detailedError","error","detailedMessage","CodeMirrorWrapper","ADMIN_CREATE_POLICY","ProgressBar","currentTabOrPath","onTabClick","tab","deselectCurrent","require","clipboardToIE11Formatting","module","exports","debug","message","reselectPrevious","range","selection","mark","success","document","createRange","getSelection","createElement","textContent","ariaHidden","style","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","format","clipboardData","console","warn","window","clearData","setData","onCopy","body","appendChild","selectNodeContents","addRange","execCommand","Error","copyKey","navigator","userAgent","prompt","removeRange","removeAllRanges","removeChild","_typeof","obj","Symbol","iterator","constructor","prototype","Object","defineProperty","_react","_interopRequireDefault","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","push","apply","target","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","call","_defineProperties","props","descriptor","configurable","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","this","self","TypeError","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","getPrototypeOf","_React$PureComponent","subClass","superClass","create","_inherits","Constructor","protoProps","staticProps","_super","_this","instance","_classCallCheck","_len","args","Array","_key","event","_this$props","elem","Children","only","_this$props2","cloneElement","PureComponent","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/1191.a7906808.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper.tsx","screens/Console/Dashboard/BasicDashboard/Utils.tsx","screens/Console/Policies/PolicyView.tsx","screens/Console/Policies/PolicyDetails.tsx","../node_modules/copy-to-clipboard/index.js","../node_modules/react-copy-to-clipboard/lib/Component.js","../node_modules/react-copy-to-clipboard/lib/index.js","../node_modules/toggle-selection/index.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 } from \"react\";\nimport { Button, CodeEditor, CopyIcon } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n onChange: (value: string) => any;\n editorHeight?: string | number;\n}\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n onChange,\n editorHeight = 250,\n}: ICodeWrapper) => {\n return (\n onChange(value)}\n mode={mode}\n tooltip={tooltip}\n editorHeight={editorHeight}\n label={label}\n helpTools={\n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n }\n />\n );\n};\n\nexport default CodeMirrorWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const STATUS_COLORS = {\n RED: \"#C83B51\",\n GREEN: \"#4CCB92\",\n YELLOW: \"#FFBD62\",\n};\n\nexport const getDriveStatusColor = (\n activeDisks: number,\n totalDrives: number,\n) => {\n if (activeDisks <= totalDrives / 2) {\n return \"bad\";\n }\n if (totalDrives !== 2 && activeDisks === totalDrives / 2 + 1) {\n return \"warn\";\n }\n if (activeDisks === totalDrives) {\n return \"good\";\n }\n};\n\nexport const serverStatusColor = (health_status: string) => {\n switch (health_status) {\n case \"offline\":\n return \"bad\";\n case \"online\":\n return \"good\";\n default:\n return \"warn\";\n }\n};\nexport const getNetworkStatusColor = (\n activeNetwork: number,\n networkTotal: number,\n) => {\n if (activeNetwork <= networkTotal / 2) {\n return \"bad\";\n }\n if (activeNetwork === networkTotal / 2 + 1) {\n return \"warn\";\n }\n if (activeNetwork === networkTotal) {\n return \"good\";\n }\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { DisabledIcon, EnabledIcon, Box, Grid } from \"mds\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { STATUS_COLORS } from \"../Dashboard/BasicDashboard/Utils\";\nimport { IAMStatement } from \"./types\";\n\nconst rowGridStyle = {\n display: \"grid\",\n gridTemplateColumns: \"70px 1fr\",\n gap: 15,\n};\n\nconst escapeRegExp = (str = \"\") =>\n str.replace(/([.?*+^$[\\]\\\\(){}|-])/g, \"\\\\$1\");\n\nconst Highlight = ({ search = \"\", children = \"\" }): any => {\n const txtParts = new RegExp(`(${escapeRegExp(search)})`, \"i\");\n const parts = String(children).split(txtParts);\n\n if (search) {\n return parts.map((part, index) =>\n txtParts.test(part) ? {part} : part,\n );\n } else {\n return children;\n }\n};\n\nconst PolicyView = ({\n policyStatements,\n}: {\n policyStatements: IAMStatement[];\n}) => {\n const [filter, setFilter] = useState(\"\");\n\n return (\n \n \n \n \n Statements\n \n \n \n \n \n \n {!policyStatements && Policy has no statements}\n {policyStatements && (\n \n {policyStatements.map((stmt, i) => {\n const effect = stmt.Effect;\n const isAllow = effect === \"Allow\";\n return (\n \n \n Effect:\n \n {isAllow ? : }\n {effect}\n \n \n \n \n Actions:\n \n {stmt.Action &&\n stmt.Action.map((act, actIndex) => (\n
\n {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};\n\nexport default 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 } from \"./types\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport {\n BackLink,\n Box,\n Button,\n DataTable,\n Grid,\n IAMPoliciesIcon,\n PageLayout,\n ProgressBar,\n RefreshIcon,\n ScreenTitle,\n SectionTitle,\n Tabs,\n TrashIcon,\n} from \"mds\";\nimport { actionsTray } from \"../Common/FormComponents/common/styleLibrary\";\n\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\n\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 {\n setErrorSnackMessage,\n setHelpName,\n setSnackBarMessage,\n} from \"../../../systemSlice\";\nimport { selFeatures } from \"../consoleSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport { Policy } from \"../../../api/consoleApi\";\nimport { api } from \"../../../api\";\nimport HelpMenu from \"../HelpMenu\";\nimport SearchBox from \"../Common/SearchBox\";\n\nconst DeletePolicy = withSuspense(React.lazy(() => import(\"./DeletePolicy\")));\n\nconst PolicyDetails = () => {\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 const [selectedTab, setSelectedTab] = useState(\"summary\");\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.policies\n .addPolicy({\n name: policyName,\n policy: policyDefinition,\n })\n .then((_) => {\n setAddLoading(false);\n dispatch(setSnackBarMessage(\"Policy successfully updated\"));\n refreshPolicyDetails();\n })\n .catch((err) => {\n setAddLoading(false);\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"There was an error updating the Policy \",\n detailedError:\n \"There was an error updating the Policy: \" +\n (err.error.detailedMessage || \"\") +\n \". Please check Policy syntax.\",\n }),\n );\n });\n } else {\n setAddLoading(false);\n }\n };\n\n useEffect(() => {\n const loadUsersForPolicy = () => {\n if (loadingUsers) {\n if (displayUsers && !ldapIsEnabled) {\n api.policies\n .listUsersForPolicy(encodeURLString(policyName))\n .then((result) => {\n setUserList(result.data ?? []);\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.policies\n .listGroupsForPolicy(encodeURLString(policyName))\n .then((result) => {\n setGroupList(result.data ?? []);\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.policy\n .policyInfo(encodeURLString(policyName))\n .then((result) => {\n if (result.data) {\n setPolicy(result.data);\n setPolicyDefinition(\n result\n ? JSON.stringify(JSON.parse(result.data?.policy!), null, 4)\n : \"\",\n );\n const pol: IAMPolicy = JSON.parse(result.data?.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 useEffect(() => {\n dispatch(setHelpName(\"policy_details_summary\"));\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {deleteOpen && (\n \n )}\n \n navigate(IAM_PAGES.POLICIES)}\n />\n \n }\n actions={}\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 sx={{ marginBottom: 15 }}\n />\n \n \n \n dispatch(setHelpName(\"policy_details_summary\"))\n }\n >\n \n Policy Summary\n \n \n \n \n \n \n ),\n },\n {\n tabConfig: {\n label: \"Users\",\n disabled: !displayUsers || ldapIsEnabled,\n id: \"users\",\n },\n content: (\n \n \n dispatch(setHelpName(\"policy_details_users\"))\n }\n >\n \n Users\n \n \n {userList.length > 0 && (\n \n {\n setFilterUsers(val);\n }}\n />\n \n )}\n \n \n \n \n ),\n },\n {\n tabConfig: {\n label: \"Groups\",\n disabled: !displayGroups || ldapIsEnabled,\n id: \"groups\",\n },\n content: (\n \n \n dispatch(setHelpName(\"policy_details_groups\"))\n }\n >\n \n Groups\n \n \n {groupList.length > 0 && (\n \n {\n setFilterGroups(val);\n }}\n />\n \n )}\n \n \n \n \n ),\n },\n {\n tabConfig: {\n label: \"Raw Policy\",\n disabled: !displayPolicy,\n id: \"raw-policy\",\n },\n content: (\n \n \n dispatch(setHelpName(\"policy_details_policy\"))\n }\n >\n \n Raw Policy\n \n ) => {\n saveRecord(e);\n }}\n >\n \n \n {\n if (canEditPolicy) {\n setPolicyDefinition(value);\n }\n }}\n editorHeight={\"350px\"}\n />\n \n \n {!policy && (\n {\n resetForm();\n }}\n >\n Clear\n \n )}\n \n \n \n \n \n \n {addLoading && (\n \n \n \n )}\n \n \n \n \n ),\n },\n ]}\n currentTabOrPath={selectedTab}\n onTabClick={(tab) => setSelectedTab(tab)}\n />\n \n \n \n );\n};\n\nexport default PolicyDetails;\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n"],"names":["_ref","value","_ref$label","label","_ref$tooltip","tooltip","_ref$mode","mode","onChange","_ref$editorHeight","editorHeight","_jsx","CodeEditor","helpTools","Fragment","children","TooltipWrapper","CopyToClipboard","text","Button","type","id","icon","CopyIcon","color","variant","STATUS_COLORS","RED","GREEN","YELLOW","getDriveStatusColor","activeDisks","totalDrives","serverStatusColor","health_status","getNetworkStatusColor","activeNetwork","networkTotal","rowGridStyle","display","gridTemplateColumns","gap","Highlight","_ref$search","search","_ref$children","txtParts","RegExp","concat","arguments","length","undefined","replace","escapeRegExp","parts","String","split","map","part","index","test","_ref2","policyStatements","_useState","useState","_useState2","_slicedToArray","filter","setFilter","_jsxs","Grid","container","item","xs","sx","alignItems","sm","fontWeight","justifyContent","SearchBox","placeholder","maxWidth","borderBottom","borderTop","paddingTop","stmt","i","effect","Effect","isAllow","Box","className","fontSize","padding","marginRight","fill","height","width","EnabledIcon","DisabledIcon","Action","act","actIndex","Resource","res","resIndex","DeletePolicy","withSuspense","React","dispatch","useAppDispatch","navigate","useNavigate","params","useParams","features","useSelector","selFeatures","policy","setPolicy","_useState3","_useState4","setPolicyStatements","_useState5","_useState6","userList","setUserList","_useState7","_useState8","groupList","setGroupList","_useState9","_useState10","addLoading","setAddLoading","policyName","decodeURLString","_useState11","_useState12","policyDefinition","setPolicyDefinition","_useState13","_useState14","loadingPolicy","setLoadingPolicy","_useState15","_useState16","filterUsers","setFilterUsers","_useState17","_useState18","loadingUsers","setLoadingUsers","_useState19","_useState20","filterGroups","setFilterGroups","_useState21","_useState22","loadingGroups","setLoadingGroups","_useState23","_useState24","deleteOpen","setDeleteOpen","_useState25","_useState26","selectedTab","setSelectedTab","ldapIsEnabled","includes","displayGroups","hasPermission","CONSOLE_UI_RESOURCE","listGroupPermissions","viewGroup","getGroupPermissions","displayUsers","listUsersPermissions","viewUser","viewUserPermissions","displayPolicy","viewPolicyPermissions","canDeletePolicy","deletePolicyPermissions","canEditPolicy","createPolicyPermissions","useEffect","api","policyInfo","encodeURLString","then","result","data","_result$data3","_result$data4","JSON","stringify","parse","pol","Statement","catch","err","setErrorSnackMessage","policies","listUsersForPolicy","_result$data","listGroupsForPolicy","_result$data2","validSave","trim","userTableActions","onClick","user","IAM_PAGES","USERS","disableButtonFunction","filteredUsers","elementItem","groupTableActions","group","GROUPS","filteredGroups","refreshPolicyDetails","setHelpName","selectedPolicy","closeDeleteModalAndRefresh","refresh","POLICIES","PageHeaderWrapper","BackLink","actions","HelpMenu","PageLayout","ScreenTitle","IAMPoliciesIcon","title","subTitle","SecureComponent","scopes","IAM_SCOPES","ADMIN_DELETE_POLICY","resource","errorProps","disabled","permissionTooltipHelper","TrashIcon","RefreshIcon","marginBottom","Tabs","options","tabConfig","content","onMouseMove","SectionTitle","separator","withBorders","PolicyView","_objectSpread","actionsTray","val","DataTable","itemActions","columns","elementKey","isLoading","records","entityName","idField","customPaperHeight","noValidate","autoComplete","onSubmit","e","preventDefault","addPolicy","name","_","setSnackBarMessage","errorMessage","detailedError","error","detailedMessage","CodeMirrorWrapper","ADMIN_CREATE_POLICY","ProgressBar","currentTabOrPath","onTabClick","tab","deselectCurrent","require","clipboardToIE11Formatting","module","exports","debug","message","reselectPrevious","range","selection","mark","success","document","createRange","getSelection","createElement","textContent","ariaHidden","style","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","format","clipboardData","console","warn","window","clearData","setData","onCopy","body","appendChild","selectNodeContents","addRange","execCommand","Error","copyKey","navigator","userAgent","prompt","removeRange","removeAllRanges","removeChild","_typeof","obj","Symbol","iterator","constructor","prototype","Object","defineProperty","_react","_interopRequireDefault","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","push","apply","target","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","call","_defineProperties","props","descriptor","configurable","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","this","self","TypeError","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","getPrototypeOf","_React$PureComponent","subClass","superClass","create","_inherits","Constructor","protoProps","staticProps","_super","_this","instance","_classCallCheck","_len","args","Array","_key","event","_this$props","elem","Children","only","_this$props2","cloneElement","PureComponent","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/1260.1bfa3ef3.chunk.js b/portal-ui/build/static/js/1260.1bfa3ef3.chunk.js new file mode 100644 index 0000000000..a62673a9c1 --- /dev/null +++ b/portal-ui/build/static/js/1260.1bfa3ef3.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1260],{1260:function(t,e,o){o.r(e);var n=o(72791),c=o(57689),a=o(44690),r=o(45248),u=o(87995),s=o(46078),i=o(81207),l=o(7241),f=o(80184);e.default=function(){var t=(0,a.TL)(),e=(0,c.s0)();return(0,n.useEffect)((function(){!function(){var o=function(){(0,r.Ov)(),t((0,u.wr)(!1)),t({type:"socket/OBDisconnect"}),localStorage.setItem("userLoggedIn",""),localStorage.setItem("redirect-path",""),t((0,s.lX)()),e("/login")},n=localStorage.getItem("auth-state");i.Z.invoke("POST","/api/v1/logout",{state:n}).then((function(){o()})).catch((function(t){console.error(t),o()}))}()}),[t,e]),(0,f.jsx)(l.Z,{})}}}]); +//# sourceMappingURL=1260.1bfa3ef3.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/1260.1bfa3ef3.chunk.js.map b/portal-ui/build/static/js/1260.1bfa3ef3.chunk.js.map new file mode 100644 index 0000000000..abf1cb1350 --- /dev/null +++ b/portal-ui/build/static/js/1260.1bfa3ef3.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/1260.1bfa3ef3.chunk.js","mappings":"yNA2DA,UAjCmB,WACjB,IAAMA,GAAWC,EAAAA,EAAAA,MACXC,GAAWC,EAAAA,EAAAA,MA4BjB,OA3BAC,EAAAA,EAAAA,YAAU,YACO,WACb,IAAMC,EAAgB,YACpBC,EAAAA,EAAAA,MACAN,GAASO,EAAAA,EAAAA,KAAW,IAGpBP,EAAS,CAAEQ,KAAM,wBAEjBC,aAAaC,QAAQ,eAAgB,IACrCD,aAAaC,QAAQ,gBAAiB,IACtCV,GAASW,EAAAA,EAAAA,OACTT,EAAS,SACX,EACMU,EAAQH,aAAaI,QAAQ,cACnCC,EAAAA,EACGC,OAAO,OAAO,iBAAmB,CAAEH,MAAAA,IACnCI,MAAK,WACJX,GACF,IACCY,OAAM,SAACC,GACNC,QAAQC,MAAMF,GACdb,GACF,GACJ,CACAgB,EACF,GAAG,CAACrB,EAAUE,KACPoB,EAAAA,EAAAA,KAACC,EAAAA,EAAgB,GAC1B,C","sources":["screens/LogoutPage/LogoutPage.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useAppDispatch } from \"../../store\";\nimport { ErrorResponseHandler } from \"../../common/types\";\nimport { clearSession } from \"../../common/utils\";\nimport { userLogged } from \"../../systemSlice\";\nimport { resetSession } from \"../Console/consoleSlice\";\nimport api from \"../../common/api\";\nimport LoadingComponent from \"../../common/LoadingComponent\";\n\nconst LogoutPage = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n useEffect(() => {\n const logout = () => {\n const deleteSession = () => {\n clearSession();\n dispatch(userLogged(false));\n\n // Disconnect OB Websocket\n dispatch({ type: \"socket/OBDisconnect\" });\n\n localStorage.setItem(\"userLoggedIn\", \"\");\n localStorage.setItem(\"redirect-path\", \"\");\n dispatch(resetSession());\n navigate(`/login`);\n };\n const state = localStorage.getItem(\"auth-state\");\n api\n .invoke(\"POST\", `/api/v1/logout`, { state })\n .then(() => {\n deleteSession();\n })\n .catch((err: ErrorResponseHandler) => {\n console.error(err);\n deleteSession();\n });\n };\n logout();\n }, [dispatch, navigate]);\n return ;\n};\n\nexport default LogoutPage;\n"],"names":["dispatch","useAppDispatch","navigate","useNavigate","useEffect","deleteSession","clearSession","userLogged","type","localStorage","setItem","resetSession","state","getItem","api","invoke","then","catch","err","console","error","logout","_jsx","LoadingComponent"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/1260.a025e586.chunk.js b/portal-ui/build/static/js/1260.a025e586.chunk.js deleted file mode 100644 index 7ea351f55b..0000000000 --- a/portal-ui/build/static/js/1260.a025e586.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1260],{1260:function(t,e,o){o.r(e);var n=o(72791),a=o(57689),u=o(81551),c=o(45248),l=o(87995),r=o(46078),i=o(81207),s=o(7241),f=o(80184);e.default=function(){var t=(0,u.TL)(),e=(0,a.s0)();return(0,n.useEffect)((function(){!function(){var o=function(){(0,c.Ov)(),t((0,l.wr)(!1)),localStorage.setItem("userLoggedIn",""),localStorage.setItem("redirect-path",""),t((0,r.lX)()),e("/login")},n=localStorage.getItem("auth-state");i.Z.invoke("POST","/api/v1/logout",{state:n}).then((function(){o()})).catch((function(t){console.log(t),o()}))}()}),[t,e]),(0,f.jsx)(s.Z,{})}}}]); -//# sourceMappingURL=1260.a025e586.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/1260.a025e586.chunk.js.map b/portal-ui/build/static/js/1260.a025e586.chunk.js.map deleted file mode 100644 index 26cbb82737..0000000000 --- a/portal-ui/build/static/js/1260.a025e586.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/1260.a025e586.chunk.js","mappings":"yNAuDA,UA7BmB,WACjB,IAAMA,GAAWC,EAAAA,EAAAA,MACXC,GAAWC,EAAAA,EAAAA,MAwBjB,OAvBAC,EAAAA,EAAAA,YAAU,YACO,WACb,IAAMC,EAAgB,YACpBC,EAAAA,EAAAA,MACAN,GAASO,EAAAA,EAAAA,KAAW,IACpBC,aAAaC,QAAQ,eAAgB,IACrCD,aAAaC,QAAQ,gBAAiB,IACtCT,GAASU,EAAAA,EAAAA,OACTR,EAAS,SACX,EACMS,EAAQH,aAAaI,QAAQ,cACnCC,EAAAA,EACGC,OAAO,OAAO,iBAAmB,CAAEH,MAAAA,IACnCI,MAAK,WACJV,GACF,IACCW,OAAM,SAACC,GACNC,QAAQC,IAAIF,GACZZ,GACF,GACJ,CACAe,EACF,GAAG,CAACpB,EAAUE,KACPmB,EAAAA,EAAAA,KAACC,EAAAA,EAAgB,GAC1B,C","sources":["screens/LogoutPage/LogoutPage.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useAppDispatch } from \"../../store\";\nimport { ErrorResponseHandler } from \"../../common/types\";\nimport { clearSession } from \"../../common/utils\";\nimport { userLogged } from \"../../systemSlice\";\nimport { resetSession } from \"../Console/consoleSlice\";\nimport api from \"../../common/api\";\nimport LoadingComponent from \"../../common/LoadingComponent\";\n\nconst LogoutPage = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n useEffect(() => {\n const logout = () => {\n const deleteSession = () => {\n clearSession();\n dispatch(userLogged(false));\n localStorage.setItem(\"userLoggedIn\", \"\");\n localStorage.setItem(\"redirect-path\", \"\");\n dispatch(resetSession());\n navigate(`/login`);\n };\n const state = localStorage.getItem(\"auth-state\");\n api\n .invoke(\"POST\", `/api/v1/logout`, { state })\n .then(() => {\n deleteSession();\n })\n .catch((err: ErrorResponseHandler) => {\n console.log(err);\n deleteSession();\n });\n };\n logout();\n }, [dispatch, navigate]);\n return ;\n};\n\nexport default LogoutPage;\n"],"names":["dispatch","useAppDispatch","navigate","useNavigate","useEffect","deleteSession","clearSession","userLogged","localStorage","setItem","resetSession","state","getItem","api","invoke","then","catch","err","console","log","logout","_jsx","LoadingComponent"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/1329.79996c21.chunk.js b/portal-ui/build/static/js/1329.df839007.chunk.js similarity index 95% rename from portal-ui/build/static/js/1329.79996c21.chunk.js rename to portal-ui/build/static/js/1329.df839007.chunk.js index 6ee9d56c8d..353dbfc988 100644 --- a/portal-ui/build/static/js/1329.79996c21.chunk.js +++ b/portal-ui/build/static/js/1329.df839007.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1329],{51270:function(e,n,t){var i=t(29439),r=t(72791),o=t(29945),s=t(87995),c=t(81551),a=t(9505),u=t(23508),l=t(80184);n.Z=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,d=e.idp,f=e.idpType,p=(0,c.TL)(),x=(0,a.Z)((function(e){n(!0),p((0,s.cN)(!0===e.restart))}),(function(e){return p((0,s.Ih)(e))})),j=(0,i.Z)(x,2),C=j[0],h=j[1];if(!d)return null;var D="_"===d?"Default":d;return(0,l.jsx)(u.Z,{title:"Delete ".concat(D),confirmText:"Delete",isOpen:t,titleIcon:(0,l.jsx)(o.NvT,{}),isLoading:C,onConfirm:function(){h("DELETE","/api/v1/idp/".concat(f,"/").concat(d))},onClose:function(){return n(!1)},confirmButtonProps:{disabled:C},confirmationContent:(0,l.jsxs)(r.Fragment,{children:["Are you sure you want to delete IDP ",(0,l.jsx)("b",{children:D})," ","configuration? ",(0,l.jsx)("br",{})]})})}},31329:function(e,n,t){t.r(n),t.d(n,{default:function(){return Z}});var i=t(72791),r=t(1413),o=t(74165),s=t(15861),c=t(29439),a=t(29945),u=t(57689),l=t(31776),d=t(82342),f=t(81551),p=t(56087),x=t(38442),j=t(87995),C=t(23814),h=t(27454),D=t(51270),m=t(47974),y=t(99670),b=t(80184),F=function(e){var n=e.idpType,t=(0,f.TL)(),F=(0,u.s0)(),Z=(0,i.useState)(!1),_=(0,c.Z)(Z,2),A=_[0],I=_[1],T=(0,i.useState)(""),g=(0,c.Z)(T,2),N=g[0],v=g[1],E=(0,i.useState)(!1),k=(0,c.Z)(E,2),P=k[0],O=k[1],M=(0,i.useState)([]),w=(0,c.Z)(M,2),U=w[0],G=w[1],K=(0,x.F)(p.C3,[p.Ft.ADMIN_CONFIG_UPDATE]),L=(0,x.F)(p.C3,[p.Ft.ADMIN_CONFIG_UPDATE]),S=(0,x.F)(p.C3,[p.Ft.ADMIN_CONFIG_UPDATE]);(0,i.useEffect)((function(){R()}),[]),(0,i.useEffect)((function(){P&&(S?l.h.idp.listConfigurations(n).then((function(e){O(!1),e.data.results&&G(e.data.results.map((function(e){return e.name="_"===e.name?"Default":e.name,e.enabled=!0===e.enabled?"Enabled":"Disabled",e})))})).catch((function(e){O(!1),t((0,j.Ih)((0,d.g)(e.error)))})):O(!1))}),[P,O,G,t,S,n]);var R=function(){O(!0)},B=function(){var e=(0,s.Z)((0,o.Z)().mark((function e(n){return(0,o.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:I(!1),n&&R();case 2:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}(),z=[{type:"view",onClick:function(e){var t="Default"===e.name?"_":e.name;F("/identity/idp/".concat(n,"/configurations/").concat(t))},disableButtonFunction:function(){return!L}},{type:"delete",onClick:function(e){I(!0),v(e="Default"===e?"_":e)},sendOnlyId:!0,disableButtonFunction:function(e){return!K||"Default"===e}}];return(0,i.useEffect)((function(){t((0,j.Sc)("idp_configs"))}),[]),(0,b.jsxs)(i.Fragment,{children:[A&&(0,b.jsx)(D.Z,{deleteOpen:A,idp:N,idpType:n,closeDeleteModalAndRefresh:B}),(0,b.jsx)(m.Z,{label:"".concat(n.toUpperCase()," Configurations"),actions:(0,b.jsx)(y.Z,{})}),(0,b.jsx)(a.Xgh,{children:(0,b.jsxs)(a.rjZ,{container:!0,children:[(0,b.jsxs)(a.rjZ,{item:!0,xs:12,sx:(0,r.Z)((0,r.Z)({},C.OR.actionsTray),{},{justifyContent:"flex-end",gap:8}),children:[(0,b.jsx)(x.s,{scopes:[p.Ft.ADMIN_CONFIG_UPDATE],resource:p.C3,errorProps:{disabled:!0},children:(0,b.jsx)(h.Z,{tooltip:"Refresh",children:(0,b.jsx)(a.zxk,{id:"refresh-keys",variant:"regular",icon:(0,b.jsx)(a.DuK,{}),onClick:function(){return O(!0)}})})}),(0,b.jsx)(x.s,{scopes:[p.Ft.ADMIN_CONFIG_UPDATE],resource:p.C3,errorProps:{disabled:!0},children:(0,b.jsx)(h.Z,{tooltip:"Create ".concat(n," configuration"),children:(0,b.jsx)(a.zxk,{id:"create-idp",label:"Create Configuration",variant:"callAction",icon:(0,b.jsx)(a.dtP,{}),onClick:function(){return F("/identity/idp/".concat(n,"/configurations/add-idp"))}})})})]}),(0,b.jsx)(a.rjZ,{item:!0,xs:12,children:(0,b.jsx)(x.s,{scopes:[p.Ft.ADMIN_CONFIG_UPDATE],resource:p.C3,errorProps:{disabled:!0},children:(0,b.jsx)(a.wQF,{itemActions:z,columns:[{label:"Name",elementKey:"name"},{label:"Type",elementKey:"type"},{label:"Enabled",elementKey:"enabled"}],isLoading:P,records:U,entityName:"Keys",idField:"name"})})})]})})]})},Z=function(){return(0,b.jsx)(F,{idpType:"openid"})}}}]); -//# sourceMappingURL=1329.79996c21.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1329],{51270:function(e,n,t){var i=t(29439),r=t(72791),o=t(29945),s=t(87995),c=t(44690),a=t(9505),u=t(23508),l=t(80184);n.Z=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,d=e.idp,f=e.idpType,p=(0,c.TL)(),x=(0,a.Z)((function(e){n(!0),p((0,s.cN)(!0===e.restart))}),(function(e){return p((0,s.Ih)(e))})),j=(0,i.Z)(x,2),C=j[0],h=j[1];if(!d)return null;var D="_"===d?"Default":d;return(0,l.jsx)(u.Z,{title:"Delete ".concat(D),confirmText:"Delete",isOpen:t,titleIcon:(0,l.jsx)(o.NvT,{}),isLoading:C,onConfirm:function(){h("DELETE","/api/v1/idp/".concat(f,"/").concat(d))},onClose:function(){return n(!1)},confirmButtonProps:{disabled:C},confirmationContent:(0,l.jsxs)(r.Fragment,{children:["Are you sure you want to delete IDP ",(0,l.jsx)("b",{children:D})," ","configuration? ",(0,l.jsx)("br",{})]})})}},31329:function(e,n,t){t.r(n),t.d(n,{default:function(){return Z}});var i=t(72791),r=t(1413),o=t(74165),s=t(15861),c=t(29439),a=t(29945),u=t(57689),l=t(31776),d=t(82342),f=t(44690),p=t(56087),x=t(38442),j=t(87995),C=t(23814),h=t(27454),D=t(51270),m=t(47974),y=t(99670),b=t(80184),F=function(e){var n=e.idpType,t=(0,f.TL)(),F=(0,u.s0)(),Z=(0,i.useState)(!1),_=(0,c.Z)(Z,2),A=_[0],I=_[1],T=(0,i.useState)(""),g=(0,c.Z)(T,2),N=g[0],v=g[1],E=(0,i.useState)(!1),k=(0,c.Z)(E,2),P=k[0],O=k[1],M=(0,i.useState)([]),w=(0,c.Z)(M,2),U=w[0],G=w[1],K=(0,x.F)(p.C3,[p.Ft.ADMIN_CONFIG_UPDATE]),L=(0,x.F)(p.C3,[p.Ft.ADMIN_CONFIG_UPDATE]),S=(0,x.F)(p.C3,[p.Ft.ADMIN_CONFIG_UPDATE]);(0,i.useEffect)((function(){R()}),[]),(0,i.useEffect)((function(){P&&(S?l.h.idp.listConfigurations(n).then((function(e){O(!1),e.data.results&&G(e.data.results.map((function(e){return e.name="_"===e.name?"Default":e.name,e.enabled=!0===e.enabled?"Enabled":"Disabled",e})))})).catch((function(e){O(!1),t((0,j.Ih)((0,d.g)(e.error)))})):O(!1))}),[P,O,G,t,S,n]);var R=function(){O(!0)},B=function(){var e=(0,s.Z)((0,o.Z)().mark((function e(n){return(0,o.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:I(!1),n&&R();case 2:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}(),z=[{type:"view",onClick:function(e){var t="Default"===e.name?"_":e.name;F("/identity/idp/".concat(n,"/configurations/").concat(t))},disableButtonFunction:function(){return!L}},{type:"delete",onClick:function(e){I(!0),v(e="Default"===e?"_":e)},sendOnlyId:!0,disableButtonFunction:function(e){return!K||"Default"===e}}];return(0,i.useEffect)((function(){t((0,j.Sc)("idp_configs"))}),[]),(0,b.jsxs)(i.Fragment,{children:[A&&(0,b.jsx)(D.Z,{deleteOpen:A,idp:N,idpType:n,closeDeleteModalAndRefresh:B}),(0,b.jsx)(m.Z,{label:"".concat(n.toUpperCase()," Configurations"),actions:(0,b.jsx)(y.Z,{})}),(0,b.jsx)(a.Xgh,{children:(0,b.jsxs)(a.rjZ,{container:!0,children:[(0,b.jsxs)(a.rjZ,{item:!0,xs:12,sx:(0,r.Z)((0,r.Z)({},C.OR.actionsTray),{},{justifyContent:"flex-end",gap:8}),children:[(0,b.jsx)(x.s,{scopes:[p.Ft.ADMIN_CONFIG_UPDATE],resource:p.C3,errorProps:{disabled:!0},children:(0,b.jsx)(h.Z,{tooltip:"Refresh",children:(0,b.jsx)(a.zxk,{id:"refresh-keys",variant:"regular",icon:(0,b.jsx)(a.DuK,{}),onClick:function(){return O(!0)}})})}),(0,b.jsx)(x.s,{scopes:[p.Ft.ADMIN_CONFIG_UPDATE],resource:p.C3,errorProps:{disabled:!0},children:(0,b.jsx)(h.Z,{tooltip:"Create ".concat(n," configuration"),children:(0,b.jsx)(a.zxk,{id:"create-idp",label:"Create Configuration",variant:"callAction",icon:(0,b.jsx)(a.dtP,{}),onClick:function(){return F("/identity/idp/".concat(n,"/configurations/add-idp"))}})})})]}),(0,b.jsx)(a.rjZ,{item:!0,xs:12,children:(0,b.jsx)(x.s,{scopes:[p.Ft.ADMIN_CONFIG_UPDATE],resource:p.C3,errorProps:{disabled:!0},children:(0,b.jsx)(a.wQF,{itemActions:z,columns:[{label:"Name",elementKey:"name"},{label:"Type",elementKey:"type"},{label:"Enabled",elementKey:"enabled"}],isLoading:P,records:U,entityName:"Keys",idField:"name"})})})]})})]})},Z=function(){return(0,b.jsx)(F,{idpType:"openid"})}}}]); +//# sourceMappingURL=1329.df839007.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/1329.79996c21.chunk.js.map b/portal-ui/build/static/js/1329.df839007.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/1329.79996c21.chunk.js.map rename to portal-ui/build/static/js/1329.df839007.chunk.js.map index f5c5d90a9d..108b5a525f 100644 --- a/portal-ui/build/static/js/1329.79996c21.chunk.js.map +++ b/portal-ui/build/static/js/1329.df839007.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/1329.79996c21.chunk.js","mappings":"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","sources":["screens/Console/IDP/DeleteIDPConfigurationModal.tsx","screens/Console/IDP/IDPConfigurations.tsx","screens/Console/IDP/IDPOpenIDConfigurations.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport {\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\n\ninterface IDeleteIDPConfigurationModalProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n idp: string;\n idpType: string;\n}\n\nconst DeleteIDPConfigurationModal = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n idp,\n idpType,\n}: IDeleteIDPConfigurationModalProps) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = (res: any) => {\n closeDeleteModalAndRefresh(true);\n dispatch(setServerNeedsRestart(res.restart === true));\n };\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n if (!idp) {\n return null;\n }\n\n const onConfirmDelete = () => {\n invokeDeleteApi(\"DELETE\", `/api/v1/idp/${idpType}/${idp}`);\n };\n\n const displayName = idp === \"_\" ? \"Default\" : idp;\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmButtonProps={{\n disabled: deleteLoading,\n }}\n confirmationContent={\n \n Are you sure you want to delete IDP {displayName}{\" \"}\n configuration?
\n
\n }\n />\n );\n};\n\nexport default DeleteIDPConfigurationModal;\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 { AddIcon, Button, PageLayout, RefreshIcon, Grid, DataTable } from \"mds\";\nimport { useNavigate } from \"react-router-dom\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { useAppDispatch } from \"../../../store\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_SCOPES,\n} from \"../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../common/SecureComponent\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { actionsTray } from \"../Common/FormComponents/common/styleLibrary\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport DeleteIDPConfigurationModal from \"./DeleteIDPConfigurationModal\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\ntype IDPConfigurationsProps = {\n idpType: string;\n};\n\nconst IDPConfigurations = ({ idpType }: IDPConfigurationsProps) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedIDP, setSelectedIDP] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [records, setRecords] = useState([]);\n\n const deleteIDP = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.ADMIN_CONFIG_UPDATE,\n ]);\n\n const viewIDP = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.ADMIN_CONFIG_UPDATE,\n ]);\n\n const displayIDPs = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.ADMIN_CONFIG_UPDATE,\n ]);\n\n useEffect(() => {\n fetchRecords();\n }, []);\n\n useEffect(() => {\n if (loading) {\n if (displayIDPs) {\n api.idp\n .listConfigurations(idpType)\n .then((res) => {\n setLoading(false);\n if (res.data.results) {\n setRecords(\n res.data.results.map((r: any) => {\n r.name = r.name === \"_\" ? \"Default\" : r.name;\n r.enabled = r.enabled === true ? \"Enabled\" : \"Disabled\";\n return r;\n }),\n );\n }\n })\n .catch((err) => {\n setLoading(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n } else {\n setLoading(false);\n }\n }\n }, [loading, setLoading, setRecords, dispatch, displayIDPs, idpType]);\n\n const fetchRecords = () => {\n setLoading(true);\n };\n\n const confirmDeleteIDP = (idp: string) => {\n setDeleteOpen(true);\n idp = idp === \"Default\" ? \"_\" : idp;\n setSelectedIDP(idp);\n };\n\n const viewAction = (idp: any) => {\n let name = idp.name === \"Default\" ? \"_\" : idp.name;\n navigate(`/identity/idp/${idpType}/configurations/${name}`);\n };\n\n const closeDeleteModalAndRefresh = async (refresh: boolean) => {\n setDeleteOpen(false);\n\n if (refresh) {\n fetchRecords();\n }\n };\n\n const tableActions = [\n {\n type: \"view\",\n onClick: viewAction,\n disableButtonFunction: () => !viewIDP,\n },\n {\n type: \"delete\",\n onClick: confirmDeleteIDP,\n sendOnlyId: true,\n disableButtonFunction: (idp: string) => !deleteIDP || idp === \"Default\",\n },\n ];\n\n useEffect(() => {\n dispatch(setHelpName(\"idp_configs\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {deleteOpen && (\n \n )}\n }\n />\n \n \n \n \n \n }\n onClick={() => setLoading(true)}\n />\n \n \n \n \n }\n onClick={() =>\n navigate(`/identity/idp/${idpType}/configurations/add-idp`)\n }\n />\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default IDPConfigurations;\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 IDPConfigurations from \"./IDPConfigurations\";\n\nconst IDPOpenIDConfigurations = () => {\n return ;\n};\n\nexport default IDPOpenIDConfigurations;\n"],"names":["_ref","closeDeleteModalAndRefresh","deleteOpen","idp","idpType","dispatch","useAppDispatch","_useApi","useApi","res","setServerNeedsRestart","restart","err","setErrorSnackMessage","_useApi2","_slicedToArray","deleteLoading","invokeDeleteApi","displayName","_jsx","ConfirmDialog","title","concat","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","onClose","confirmButtonProps","disabled","confirmationContent","_jsxs","Fragment","children","navigate","useNavigate","_useState","useState","_useState2","setDeleteOpen","_useState3","_useState4","selectedIDP","setSelectedIDP","_useState5","_useState6","loading","setLoading","_useState7","_useState8","records","setRecords","deleteIDP","hasPermission","CONSOLE_UI_RESOURCE","IAM_SCOPES","ADMIN_CONFIG_UPDATE","viewIDP","displayIDPs","useEffect","fetchRecords","api","listConfigurations","then","data","results","map","r","name","enabled","catch","errorToHandler","error","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","refresh","wrap","_context","prev","next","stop","_x","apply","arguments","tableActions","type","onClick","disableButtonFunction","sendOnlyId","setHelpName","DeleteIDPConfigurationModal","PageHeaderWrapper","label","toUpperCase","actions","HelpMenu","PageLayout","Grid","container","item","xs","sx","_objectSpread","actionsTray","justifyContent","gap","SecureComponent","scopes","resource","errorProps","TooltipWrapper","tooltip","Button","id","variant","icon","RefreshIcon","AddIcon","DataTable","itemActions","columns","elementKey","entityName","idField","IDPConfigurations"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/1329.df839007.chunk.js","mappings":"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","sources":["screens/Console/IDP/DeleteIDPConfigurationModal.tsx","screens/Console/IDP/IDPConfigurations.tsx","screens/Console/IDP/IDPOpenIDConfigurations.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport {\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\n\ninterface IDeleteIDPConfigurationModalProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n idp: string;\n idpType: string;\n}\n\nconst DeleteIDPConfigurationModal = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n idp,\n idpType,\n}: IDeleteIDPConfigurationModalProps) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = (res: any) => {\n closeDeleteModalAndRefresh(true);\n dispatch(setServerNeedsRestart(res.restart === true));\n };\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n if (!idp) {\n return null;\n }\n\n const onConfirmDelete = () => {\n invokeDeleteApi(\"DELETE\", `/api/v1/idp/${idpType}/${idp}`);\n };\n\n const displayName = idp === \"_\" ? \"Default\" : idp;\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmButtonProps={{\n disabled: deleteLoading,\n }}\n confirmationContent={\n \n Are you sure you want to delete IDP {displayName}{\" \"}\n configuration?
\n
\n }\n />\n );\n};\n\nexport default DeleteIDPConfigurationModal;\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 { AddIcon, Button, PageLayout, RefreshIcon, Grid, DataTable } from \"mds\";\nimport { useNavigate } from \"react-router-dom\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { useAppDispatch } from \"../../../store\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_SCOPES,\n} from \"../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../common/SecureComponent\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { actionsTray } from \"../Common/FormComponents/common/styleLibrary\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport DeleteIDPConfigurationModal from \"./DeleteIDPConfigurationModal\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\ntype IDPConfigurationsProps = {\n idpType: string;\n};\n\nconst IDPConfigurations = ({ idpType }: IDPConfigurationsProps) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedIDP, setSelectedIDP] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [records, setRecords] = useState([]);\n\n const deleteIDP = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.ADMIN_CONFIG_UPDATE,\n ]);\n\n const viewIDP = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.ADMIN_CONFIG_UPDATE,\n ]);\n\n const displayIDPs = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.ADMIN_CONFIG_UPDATE,\n ]);\n\n useEffect(() => {\n fetchRecords();\n }, []);\n\n useEffect(() => {\n if (loading) {\n if (displayIDPs) {\n api.idp\n .listConfigurations(idpType)\n .then((res) => {\n setLoading(false);\n if (res.data.results) {\n setRecords(\n res.data.results.map((r: any) => {\n r.name = r.name === \"_\" ? \"Default\" : r.name;\n r.enabled = r.enabled === true ? \"Enabled\" : \"Disabled\";\n return r;\n }),\n );\n }\n })\n .catch((err) => {\n setLoading(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n } else {\n setLoading(false);\n }\n }\n }, [loading, setLoading, setRecords, dispatch, displayIDPs, idpType]);\n\n const fetchRecords = () => {\n setLoading(true);\n };\n\n const confirmDeleteIDP = (idp: string) => {\n setDeleteOpen(true);\n idp = idp === \"Default\" ? \"_\" : idp;\n setSelectedIDP(idp);\n };\n\n const viewAction = (idp: any) => {\n let name = idp.name === \"Default\" ? \"_\" : idp.name;\n navigate(`/identity/idp/${idpType}/configurations/${name}`);\n };\n\n const closeDeleteModalAndRefresh = async (refresh: boolean) => {\n setDeleteOpen(false);\n\n if (refresh) {\n fetchRecords();\n }\n };\n\n const tableActions = [\n {\n type: \"view\",\n onClick: viewAction,\n disableButtonFunction: () => !viewIDP,\n },\n {\n type: \"delete\",\n onClick: confirmDeleteIDP,\n sendOnlyId: true,\n disableButtonFunction: (idp: string) => !deleteIDP || idp === \"Default\",\n },\n ];\n\n useEffect(() => {\n dispatch(setHelpName(\"idp_configs\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {deleteOpen && (\n \n )}\n }\n />\n \n \n \n \n \n }\n onClick={() => setLoading(true)}\n />\n \n \n \n \n }\n onClick={() =>\n navigate(`/identity/idp/${idpType}/configurations/add-idp`)\n }\n />\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default IDPConfigurations;\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 IDPConfigurations from \"./IDPConfigurations\";\n\nconst IDPOpenIDConfigurations = () => {\n return ;\n};\n\nexport default IDPOpenIDConfigurations;\n"],"names":["_ref","closeDeleteModalAndRefresh","deleteOpen","idp","idpType","dispatch","useAppDispatch","_useApi","useApi","res","setServerNeedsRestart","restart","err","setErrorSnackMessage","_useApi2","_slicedToArray","deleteLoading","invokeDeleteApi","displayName","_jsx","ConfirmDialog","title","concat","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","onClose","confirmButtonProps","disabled","confirmationContent","_jsxs","Fragment","children","navigate","useNavigate","_useState","useState","_useState2","setDeleteOpen","_useState3","_useState4","selectedIDP","setSelectedIDP","_useState5","_useState6","loading","setLoading","_useState7","_useState8","records","setRecords","deleteIDP","hasPermission","CONSOLE_UI_RESOURCE","IAM_SCOPES","ADMIN_CONFIG_UPDATE","viewIDP","displayIDPs","useEffect","fetchRecords","api","listConfigurations","then","data","results","map","r","name","enabled","catch","errorToHandler","error","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","refresh","wrap","_context","prev","next","stop","_x","apply","arguments","tableActions","type","onClick","disableButtonFunction","sendOnlyId","setHelpName","DeleteIDPConfigurationModal","PageHeaderWrapper","label","toUpperCase","actions","HelpMenu","PageLayout","Grid","container","item","xs","sx","_objectSpread","actionsTray","justifyContent","gap","SecureComponent","scopes","resource","errorProps","TooltipWrapper","tooltip","Button","id","variant","icon","RefreshIcon","AddIcon","DataTable","itemActions","columns","elementKey","entityName","idField","IDPConfigurations"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/134.117c7fbe.chunk.js b/portal-ui/build/static/js/134.117c7fbe.chunk.js deleted file mode 100644 index f6843b9ce7..0000000000 --- a/portal-ui/build/static/js/134.117c7fbe.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[134],{13901:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var o=r(n(45649)),c=n(80184),u=(0,o.default)((0,c.jsx)("path",{d:"M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3v-3h18v3z"}),"CallToAction");t.Z=u},31292:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var o=r(n(45649)),c=n(80184),u=(0,o.default)((0,c.jsx)("path",{d:"M9.4 16.6 4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0 4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z"}),"Code");t.Z=u},61809:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var o=r(n(45649)),c=n(80184),u=(0,o.default)((0,c.jsx)("path",{d:"M8 19h3v3h2v-3h3l-4-4-4 4zm8-15h-3V1h-2v3H8l4 4 4-4zM4 9v2h16V9H4zm0 3h16v2H4z"}),"Compress");t.Z=u},67055:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var o=r(n(45649)),c=n(80184),u=(0,o.default)((0,c.jsx)("path",{d:"M11 6c1.38 0 2.63.56 3.54 1.46L12 10h6V4l-2.05 2.05C14.68 4.78 12.93 4 11 4c-3.53 0-6.43 2.61-6.92 6H6.1c.46-2.28 2.48-4 4.9-4zm5.64 9.14c.66-.9 1.12-1.97 1.28-3.14H15.9c-.46 2.28-2.48 4-4.9 4-1.38 0-2.63-.56-3.54-1.46L10 12H4v6l2.05-2.05C7.32 17.22 9.07 18 11 18c1.55 0 2.98-.51 4.14-1.36L20 21.49 21.49 20l-4.85-4.86z"}),"FindReplace");t.Z=u},98095:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var o=r(n(45649)),c=n(80184),u=(0,o.default)((0,c.jsx)("path",{d:"M19 3H5c-1.1 0-1.99.9-1.99 2L3 19c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 11h-4v4h-4v-4H6v-4h4V6h4v4h4v4z"}),"LocalHospital");t.Z=u},36909:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var o=r(n(45649)),c=n(80184),u=(0,o.default)((0,c.jsx)("path",{d:"M17 12c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm1.65 7.35L16.5 17.2V14h1v2.79l1.85 1.85-.7.71zM18 3h-3.18C14.4 1.84 13.3 1 12 1s-2.4.84-2.82 2H6c-1.1 0-2 .9-2 2v15c0 1.1.9 2 2 2h6.11c-.59-.57-1.07-1.25-1.42-2H6V5h2v3h8V5h2v5.08c.71.1 1.38.31 2 .6V5c0-1.1-.9-2-2-2zm-6 2c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"}),"PendingActions");t.Z=u},87569:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var o=r(n(45649)),c=n(80184),u=(0,o.default)((0,c.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"}),"Public");t.Z=u},21141:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var o=r(n(45649)),c=n(80184),u=(0,o.default)((0,c.jsx)("path",{d:"M12.65 10C11.83 7.67 9.61 6 7 6c-3.31 0-6 2.69-6 6s2.69 6 6 6c2.61 0 4.83-1.67 5.65-4H17v4h4v-4h2v-4H12.65zM7 14c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z"}),"VpnKey");t.Z=u},45649:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r.createSvgIcon}});var r=n(28610)},31260:function(e,t,n){"use strict";var r=n(78949);t.Z=r.Z},28610:function(e,t,n){"use strict";n.r(t),n.d(t,{capitalize:function(){return o.Z},createChainedFunction:function(){return c.Z},createSvgIcon:function(){return u.Z},debounce:function(){return i.Z},deprecatedPropType:function(){return a},isMuiElement:function(){return l.Z},ownerDocument:function(){return f.Z},ownerWindow:function(){return s.Z},requirePropFactory:function(){return p},setRef:function(){return d},unstable_ClassNameGenerator:function(){return w},unstable_useEnhancedEffect:function(){return y.Z},unstable_useId:function(){return v.Z},unsupportedProp:function(){return b},useControlled:function(){return h.Z},useEventCallback:function(){return m.Z},useForkRef:function(){return g.Z},useIsFocusVisible:function(){return C.Z}});var r=n(55902),o=n(14036),c=n(31260),u=n(76189),i=n(83199);var a=function(e,t){return function(){return null}},l=n(19103),f=n(98301),s=n(17602);n(87462);var p=function(e,t){return function(){return null}},d=n(62971).Z,y=n(40162),v=n(67384);var b=function(e,t,n,r,o){return null},h=n(98278),m=n(89683),g=n(42071),C=n(23031),w={configure:function(e){r.Z.configure(e)}}},19103:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(72791);var o=function(e,t){return r.isValidElement(e)&&-1!==t.indexOf(e.type.muiName)}},78949:function(e,t,n){"use strict";function r(){for(var e=arguments.length,t=new Array(e),n=0;n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function s(e,t){for(var n=0;n null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1;\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Object","defineProperty","value","enumerable","get","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","props","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","element","muiNames","React","indexOf","type","muiName","_len","arguments","length","funcs","Array","_key","reduce","acc","func","_len2","args","_key2","apply","this","deselectCurrent","clipboardToIE11Formatting","module","text","options","debug","message","reselectPrevious","range","selection","mark","success","document","createRange","getSelection","createElement","textContent","ariaHidden","style","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","e","stopPropagation","format","preventDefault","clipboardData","console","warn","window","clearData","setData","onCopy","body","appendChild","selectNodeContents","addRange","execCommand","Error","err","error","copyKey","test","navigator","userAgent","replace","prompt","removeRange","removeAllRanges","removeChild","_typeof","obj","Symbol","iterator","constructor","prototype","CopyToClipboard","_react","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","_objectSpread","target","i","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","call","_defineProperties","descriptor","configurable","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","result","Super","_getPrototypeOf","NewTarget","self","TypeError","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","getPrototypeOf","_React$PureComponent","subClass","superClass","create","_inherits","Constructor","protoProps","staticProps","_super","_this","instance","_classCallCheck","concat","event","_this$props","children","elem","Children","only","onClick","_this$props2","cloneElement","PureComponent","undefined","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/134.3f6d60a2.chunk.js b/portal-ui/build/static/js/134.3f6d60a2.chunk.js new file mode 100644 index 0000000000..ca0d29923a --- /dev/null +++ b/portal-ui/build/static/js/134.3f6d60a2.chunk.js @@ -0,0 +1,2 @@ +(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[134],{13901:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var o=r(n(45649)),c=n(80184),u=(0,o.default)((0,c.jsx)("path",{d:"M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3v-3h18v3z"}),"CallToAction");t.Z=u},31292:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var o=r(n(45649)),c=n(80184),u=(0,o.default)((0,c.jsx)("path",{d:"M9.4 16.6 4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0 4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z"}),"Code");t.Z=u},61809:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var o=r(n(45649)),c=n(80184),u=(0,o.default)((0,c.jsx)("path",{d:"M8 19h3v3h2v-3h3l-4-4-4 4zm8-15h-3V1h-2v3H8l4 4 4-4zM4 9v2h16V9H4zm0 3h16v2H4z"}),"Compress");t.Z=u},67055:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var o=r(n(45649)),c=n(80184),u=(0,o.default)((0,c.jsx)("path",{d:"M11 6c1.38 0 2.63.56 3.54 1.46L12 10h6V4l-2.05 2.05C14.68 4.78 12.93 4 11 4c-3.53 0-6.43 2.61-6.92 6H6.1c.46-2.28 2.48-4 4.9-4zm5.64 9.14c.66-.9 1.12-1.97 1.28-3.14H15.9c-.46 2.28-2.48 4-4.9 4-1.38 0-2.63-.56-3.54-1.46L10 12H4v6l2.05-2.05C7.32 17.22 9.07 18 11 18c1.55 0 2.98-.51 4.14-1.36L20 21.49 21.49 20l-4.85-4.86z"}),"FindReplace");t.Z=u},98095:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var o=r(n(45649)),c=n(80184),u=(0,o.default)((0,c.jsx)("path",{d:"M19 3H5c-1.1 0-1.99.9-1.99 2L3 19c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 11h-4v4h-4v-4H6v-4h4V6h4v4h4v4z"}),"LocalHospital");t.Z=u},36909:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var o=r(n(45649)),c=n(80184),u=(0,o.default)((0,c.jsx)("path",{d:"M17 12c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm1.65 7.35L16.5 17.2V14h1v2.79l1.85 1.85-.7.71zM18 3h-3.18C14.4 1.84 13.3 1 12 1s-2.4.84-2.82 2H6c-1.1 0-2 .9-2 2v15c0 1.1.9 2 2 2h6.11c-.59-.57-1.07-1.25-1.42-2H6V5h2v3h8V5h2v5.08c.71.1 1.38.31 2 .6V5c0-1.1-.9-2-2-2zm-6 2c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"}),"PendingActions");t.Z=u},87569:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var o=r(n(45649)),c=n(80184),u=(0,o.default)((0,c.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"}),"Public");t.Z=u},21141:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var o=r(n(45649)),c=n(80184),u=(0,o.default)((0,c.jsx)("path",{d:"M12.65 10C11.83 7.67 9.61 6 7 6c-3.31 0-6 2.69-6 6s2.69 6 6 6c2.61 0 4.83-1.67 5.65-4H17v4h4v-4h2v-4H12.65zM7 14c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z"}),"VpnKey");t.Z=u},45649:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r.createSvgIcon}});var r=n(28610)},31260:function(e,t,n){"use strict";var r=n(78949);t.Z=r.Z},28610:function(e,t,n){"use strict";n.r(t),n.d(t,{capitalize:function(){return o.Z},createChainedFunction:function(){return c.Z},createSvgIcon:function(){return u.Z},debounce:function(){return i.Z},deprecatedPropType:function(){return a},isMuiElement:function(){return l.Z},ownerDocument:function(){return f.Z},ownerWindow:function(){return s.Z},requirePropFactory:function(){return p},setRef:function(){return d},unstable_ClassNameGenerator:function(){return w},unstable_useEnhancedEffect:function(){return v.Z},unstable_useId:function(){return y.Z},unsupportedProp:function(){return b},useControlled:function(){return h.Z},useEventCallback:function(){return m.Z},useForkRef:function(){return g.Z},useIsFocusVisible:function(){return C.Z}});var r=n(55902),o=n(14036),c=n(31260),u=n(76189),i=n(83199);var a=function(e,t){return function(){return null}},l=n(19103),f=n(98301),s=n(17602);n(87462);var p=function(e,t){return function(){return null}},d=n(62971).Z,v=n(40162),y=n(67384);var b=function(e,t,n,r,o){return null},h=n(98278),m=n(89683),g=n(42071),C=n(23031),w={configure:function(e){r.Z.configure(e)}}},19103:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(72791);var o=function(e,t){var n,o;return r.isValidElement(e)&&-1!==t.indexOf(null!=(n=e.type.muiName)?n:null==(o=e.type)||null==(o=o._payload)||null==(o=o.value)?void 0:o.muiName)}},78949:function(e,t,n){"use strict";function r(){for(var e=arguments.length,t=new Array(e),n=0;n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function s(e,t){for(var n=0;n null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n var _muiName, _element$type;\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf( // For server components `muiName` is avaialble in element.type._payload.value.muiName\n // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45\n // eslint-disable-next-line no-underscore-dangle\n (_muiName = element.type.muiName) != null ? _muiName : (_element$type = element.type) == null || (_element$type = _element$type._payload) == null || (_element$type = _element$type.value) == null ? void 0 : _element$type.muiName) !== -1;\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Object","defineProperty","value","enumerable","get","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","props","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","element","muiNames","_muiName","_element$type","React","indexOf","type","muiName","_payload","_len","arguments","length","funcs","Array","_key","reduce","acc","func","_len2","args","_key2","apply","this","deselectCurrent","clipboardToIE11Formatting","module","text","options","debug","message","reselectPrevious","range","selection","mark","success","document","createRange","getSelection","createElement","textContent","ariaHidden","style","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","e","stopPropagation","format","preventDefault","clipboardData","console","warn","window","clearData","setData","onCopy","body","appendChild","selectNodeContents","addRange","execCommand","Error","err","error","copyKey","test","navigator","userAgent","replace","prompt","removeRange","removeAllRanges","removeChild","_typeof","obj","Symbol","iterator","constructor","prototype","CopyToClipboard","_react","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","_objectSpread","target","i","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","call","_defineProperties","descriptor","configurable","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","result","Super","_getPrototypeOf","NewTarget","self","TypeError","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","getPrototypeOf","_React$PureComponent","subClass","superClass","create","_inherits","Constructor","protoProps","staticProps","_super","_this","instance","_classCallCheck","concat","event","_this$props","children","elem","Children","only","onClick","_this$props2","cloneElement","PureComponent","undefined","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/1516.8a28f6f6.chunk.js b/portal-ui/build/static/js/1516.75dc9a97.chunk.js similarity index 99% rename from portal-ui/build/static/js/1516.8a28f6f6.chunk.js rename to portal-ui/build/static/js/1516.75dc9a97.chunk.js index 0585748189..fb2addae9e 100644 --- a/portal-ui/build/static/js/1516.8a28f6f6.chunk.js +++ b/portal-ui/build/static/js/1516.75dc9a97.chunk.js @@ -1,2 +1,2 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1516],{51516:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return N}});var r=n(29439),i=n(72791),o=n(29945),s=n(78687),a=n(87995),c=n(81551),l=n(74440),u=n(80184),f=function(e){var t=e.email;return(0,u.jsxs)(i.Fragment,{children:[(0,u.jsx)(l.Z,{email:t}),(0,u.jsx)(o.rjZ,{item:!0,xs:12,sx:{marginTop:25},children:(0,u.jsxs)(o.xuv,{sx:{padding:"20px"},children:["Login to"," ",(0,u.jsx)("a",{href:"https://subnet.min.io",target:"_blank",children:"SUBNET"})," ","to avail support for this MinIO cluster"]})})]})},d=function(){var e="mc admin config set {alias} subnet proxy={proxy}",t=(0,i.useState)(!1),n=(0,r.Z)(t,2),s=n[0],a=n[1];return(0,u.jsx)(i.Fragment,{children:(0,u.jsxs)(o.xuv,{withBorders:!0,sx:{display:"flex",padding:"23px",marginTop:"40px",alignItems:"start",justifyContent:"space-between"},children:[(0,u.jsxs)(o.xuv,{sx:{display:"flex",flexFlow:"column"},children:[(0,u.jsxs)(o.xuv,{sx:{display:"flex","& .min-icon":{height:"22px",width:"22px"}},children:[(0,u.jsx)(o.ewm,{}),(0,u.jsx)("div",{style:{marginLeft:"10px",fontWeight:600},children:"Proxy Configuration"})]}),(0,u.jsxs)(o.xuv,{sx:{marginTop:"10px",marginBottom:"10px",fontSize:"14px"},children:["For airgap/firewalled environments it is possible to"," ",(0,u.jsx)("a",{href:"https://min.io/docs/minio/linux/reference/minio-mc-admin/mc-admin-config.html?ref=con",target:"_blank",children:"configure a proxy"})," ","to connect to SUBNET ."]}),(0,u.jsx)(o.xuv,{children:s&&(0,u.jsx)(o.Wzg,{disabled:!0,id:"subnetProxy",name:"subnetProxy",placeholder:"",onChange:function(){},label:"",value:e,overlayIcon:(0,u.jsx)(o.TIy,{}),overlayAction:function(){return navigator.clipboard.writeText(e)}})})]}),(0,u.jsx)(o.xuv,{sx:{display:"flex"},children:(0,u.jsx)(o.rsf,{value:"enableProxy",id:"enableProxy",name:"enableProxy",checked:s,onChange:function(e){a(e.target.checked)}})})]})})},p=n(74165),x=n(15861),g=n(36825),h=n(81207),m=n(96382),b=n(38442),v=n(56087),y=(0,m.hg)("register/fetchLicenseInfo",function(){var e=(0,x.Z)((0,p.Z)().mark((function e(t,n){var r,i,o,s;return(0,p.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n.getState,i=n.dispatch,o=r(),s=(0,b.F)(v.C3,v.LC[v.gA.LICENSE],!0),!o.register.loadingLicenseInfo){e.next=6;break}return e.abrupt("return");case 6:s?(i((0,g.pI)(!0)),h.Z.invoke("GET","/api/v1/subnet/info").then((function(e){i((0,g.aO)(e)),i((0,g.Dr)(!0)),i((0,g.pI)(!1))})).catch((function(e){e.detailedError.toLowerCase()!=="License is not present".toLowerCase()&&e.detailedError.toLowerCase()!=="license not found".toLowerCase()&&i((0,a.Ih)(e)),i((0,g.Dr)(!1)),i((0,g.pI)(!1))}))):i((0,g.pI)(!1));case 7:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()),j=(0,m.hg)("register/callRegister",function(){var e=(0,x.Z)((0,p.Z)().mark((function e(t,n){var r,i;return(0,p.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=n.dispatch,i={token:t.token,account_id:t.account_id},h.Z.invoke("POST","/api/v1/subnet/register",i).then((function(){r((0,g.K4)(!1)),r((0,a.cN)(!0)),r((0,g.jS)()),r(y())})).catch((function(e){r((0,a.Ih)(e)),r((0,g.K4)(!1))}));case 3:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()),w=(0,m.hg)("register/subnetLoginWithMFA",function(){var e=(0,x.Z)((0,p.Z)().mark((function e(t,n){var r,i,o,s,c,l,u;return(0,p.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n.getState,n.rejectWithValue,i=n.dispatch,o=r(),s=o.register.subnetEmail,c=o.register.subnetMFAToken,l=o.register.subnetOTP,!o.register.loading){e.next=8;break}return e.abrupt("return");case 8:i((0,g.K4)(!0)),u={username:s,otp:l,mfa_token:c},h.Z.invoke("POST","/api/v1/subnet/login/mfa",u).then((function(e){i((0,g.K4)(!1)),e&&e.access_token&&e.organizations.length>0&&(1===e.organizations.length?i(j({token:e.access_token,account_id:e.organizations[0].accountId.toString()})):(i((0,g.t2)(e.access_token)),i((0,g.dl)(e.organizations)),i((0,g.wK)(e.organizations[0].accountId.toString()))))})).catch((function(e){i((0,a.Ih)(e)),i((0,g.K4)(!1)),i((0,g.Z7)(""))}));case 11:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()),k=(0,m.hg)("register/subnetLogin",function(){var e=(0,x.Z)((0,p.Z)().mark((function e(t,n){var r,i,o,s,c,l,u;return(0,p.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n.getState,n.rejectWithValue,i=n.dispatch,o=r(),s=o.register.license,c=o.register.subnetPassword,l=o.register.subnetEmail,!o.register.loading){e.next=8;break}return e.abrupt("return");case 8:i((0,g.K4)(!0)),u={username:l,password:c,apiKey:s},h.Z.invoke("POST","/api/v1/subnet/login",u).then((function(e){i((0,g.K4)(!1)),e&&e.registered?(i((0,g.jS)()),i(y())):e&&e.mfa_token?i((0,g.dK)(e.mfa_token)):e&&e.access_token&&e.organizations.length>0&&(i((0,g.t2)(e.access_token)),i((0,g.dl)(e.organizations)),i((0,g.wK)(e.organizations[0].accountId.toString())))})).catch((function(e){i((0,a.Ih)(e)),i((0,g.K4)(!1)),i((0,g.jS)())}));case 11:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()),C=n(23814),S=n(27454),T=n(78029),P=n.n(T),O=function(e){var t=e.icon,n=e.description;return(0,u.jsxs)(o.xuv,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[t," ",(0,u.jsx)(o.xuv,{className:"muted",style:{fontSize:"14px",fontStyle:"italic"},children:n})]})},I=function(){return(0,u.jsx)(o.KfX,{title:"Why should I register?",iconComponent:(0,u.jsx)(o.M9A,{}),help:(0,u.jsxs)(i.Fragment,{children:[(0,u.jsx)(o.xuv,{sx:{fontSize:"14px",marginBottom:"15px"},children:"Registering this cluster with the MinIO Subscription Network (SUBNET) provides the following benefits in addition to the commercial license and SLA backed support."}),(0,u.jsxs)(o.xuv,{sx:{display:"flex",flexFlow:"column"},children:[(0,u.jsx)(O,{icon:(0,u.jsx)(o._qw,{}),description:"Call Home Monitoring"}),(0,u.jsx)(O,{icon:(0,u.jsx)(o.toM,{}),description:"Health Diagnostics"}),(0,u.jsx)(O,{icon:(0,u.jsx)(o.Fsz,{}),description:"Performance Analysis"}),(0,u.jsx)(O,{icon:(0,u.jsx)(o.EQx,{}),description:(0,u.jsx)("a",{href:"https://min.io/signup?ref=con",target:"_blank",children:"More Features"})})]})]})})},B=n(9505),E=function(){var e=(0,c.TL)(),t=(0,s.v9)((function(e){return e.register.subnetRegToken})),n=(0,s.v9)((function(e){return e.register.clusterRegistered})),l=(0,s.v9)((function(e){return e.register.licenseInfo})),d="https://subnet.min.io/cluster/register?token=".concat(t),p=(0,i.useState)(""),x=(0,r.Z)(p,2),g=x[0],h=x[1],m=(0,B.Z)((function(){e(y()),e((0,a.cN)(!0))}),(function(t){e((0,a.Ih)(t))})),b=(0,r.Z)(m,2),v=b[0],j=b[1];return(0,u.jsx)(i.Fragment,{children:(0,u.jsx)(o.xuv,{withBorders:!0,sx:{display:"flex",flexFlow:"column",padding:"43px"},children:n&&l?(0,u.jsx)(f,{email:l.email}):(0,u.jsx)(o.ltY,{title:"Register cluster in an Air-gap environment",icon:(0,u.jsx)(o.YL8,{}),helpBox:(0,u.jsx)(I,{}),withBorders:!1,containerPadding:!1,children:(0,u.jsx)(o.xuv,{sx:{display:"flex",flexFlow:"column",flex:"2",marginTop:"15px","& .step-row":{fontSize:14,display:"flex",marginTop:"15px",marginBottom:"15px"}},children:(0,u.jsxs)(o.xuv,{children:[(0,u.jsx)(o.xuv,{className:"step-row",children:(0,u.jsx)(o.xuv,{className:"step-text",children:"Click on the link to register this cluster in SUBNET and get a License Key for this Air-Gap deployment"})}),(0,u.jsxs)(o.xuv,{sx:{flex:"1",display:"flex",alignItems:"center",gap:3},children:[(0,u.jsx)("a",{href:d,target:"_blank",children:"https://subnet.min.io/cluster/register"}),(0,u.jsx)(S.Z,{tooltip:"Copy to Clipboard",children:(0,u.jsx)(P(),{text:d,children:(0,u.jsx)(o.zxk,{type:"button",id:"copy-ult-to-clip-board",icon:(0,u.jsx)(o.TIy,{}),color:"primary",variant:"regular"})})})]}),(0,u.jsx)(o.xuv,{className:"muted",sx:{marginTop:"25px"},children:"Note: If this machine does not have internet connection, Copy paste the following URL in a browser where you access SUBNET and follow the instructions to complete the registration"}),(0,u.jsxs)(o.xuv,{sx:{marginTop:"25px",display:"flex",flexDirection:"column"},children:[(0,u.jsxs)("label",{style:{fontWeight:"bold",marginBottom:"10px"},children:["Paste the License Key"," "]}),(0,u.jsx)(o.q5m,{value:g,disabled:v,label:"",id:"licenseKey",name:"licenseKey",placeholder:"License Key",onChange:function(e){h(e.target.value)}})]}),(0,u.jsx)(o.xuv,{sx:C.ID.modalButtonBar,children:(0,u.jsx)(o.zxk,{id:"apply-license-key",onClick:function(){j("PUT","/api/v1/configs/subnet",{key_values:[{key:"license",value:g}]})},variant:"callAction",disabled:!g||v,label:"Apply Cluster License"})})]})})})})})},z=function(){var e=(0,c.TL)(),t=(0,s.v9)((function(e){return e.register.subnetMFAToken})),n=(0,s.v9)((function(e){return e.register.subnetOTP})),r=(0,s.v9)((function(e){return e.register.loading}));return(0,u.jsxs)(o.ltY,{title:"Two-Factor Authentication",helpBox:(0,u.jsx)(I,{}),withBorders:!1,containerPadding:!1,children:[(0,u.jsx)(o.xuv,{sx:{fontSize:14,display:"flex",flexFlow:"column",marginBottom:"30px"},children:"Please enter the 6-digit verification code that was sent to your email address. This code will be valid for 5 minutes."}),(0,u.jsx)(o.xuv,{children:(0,u.jsx)(o.Wzg,{overlayIcon:(0,u.jsx)(o.mBM,{}),id:"subnet-otp",name:"subnet-otp",onChange:function(t){return e((0,g.Z7)(t.target.value))},placeholder:"",label:"",value:n})}),(0,u.jsx)(o.xuv,{sx:C.ID.modalButtonBar,children:(0,u.jsx)(o.zxk,{id:"verify",onClick:function(){return e(w())},disabled:r||0===n.trim().length||0===t.trim().length,variant:"callAction",label:"Verify"})})]})},Z=function(){var e=(0,c.TL)(),t=(0,s.v9)((function(e){return e.register.subnetAccessToken})),n=(0,s.v9)((function(e){return e.register.selectedSubnetOrganization})),r=(0,s.v9)((function(e){return e.register.subnetOrganizations})),i=(0,s.v9)((function(e){return e.register.loading}));return(0,u.jsxs)(o.ltY,{title:"Register MinIO cluster",containerPadding:!0,withBorders:!1,helpBox:(0,u.jsx)(I,{}),children:[(0,u.jsx)(o.PhF,{id:"subnet-organization",name:"subnet-organization",onChange:function(t){return e((0,g.wK)(t))},label:"Select an organization",value:n,options:r.map((function(e){return{label:e.company,value:e.accountId.toString()}}))}),(0,u.jsx)(o.xuv,{sx:C.ID.modalButtonBar,children:(0,u.jsx)(o.zxk,{id:"register-cluster",onClick:function(){return function(){i||(e((0,g.K4)(!0)),t&&n&&e(j({token:t,account_id:n})))}},disabled:i||0===t.trim().length,variant:"callAction",label:"Register"})})]})},A=function(){var e=(0,c.TL)(),t=(0,s.v9)((function(e){return e.register.subnetPassword})),n=(0,s.v9)((function(e){return e.register.subnetEmail})),r=(0,s.v9)((function(e){return e.register.loading}));return(0,u.jsxs)(o.ltY,{icon:(0,u.jsx)(o.dRy,{}),title:"Online activation of MinIO Subscription Network License",withBorders:!1,containerPadding:!1,helpBox:(0,u.jsx)(I,{}),children:[(0,u.jsx)(o.xuv,{sx:{fontSize:"14px",display:"flex",flexFlow:"column",marginBottom:"30px"},children:"Use your MinIO Subscription Network login credentials to register this cluster."}),(0,u.jsxs)(o.xuv,{sx:{flex:"1"},children:[(0,u.jsx)(o.Wzg,{id:"subnet-email",name:"subnet-email",onChange:function(t){return e((0,g.Ze)(t.target.value))},label:"Email",value:n,overlayIcon:(0,u.jsx)(o.oyc,{})}),(0,u.jsx)(o.Wzg,{id:"subnet-password",name:"subnet-password",onChange:function(t){return e((0,g.lr)(t.target.value))},label:"Password",type:"password",value:t}),(0,u.jsxs)(o.xuv,{sx:C.ID.modalButtonBar,children:[(0,u.jsx)(o.zxk,{id:"sign-up",type:"submit",variant:"regular",onClick:function(e){e.preventDefault(),window.open("https://min.io/signup?ref=con","_blank")},label:"Sign up"}),(0,u.jsx)(o.zxk,{id:"register-credentials",type:"submit",variant:"callAction",disabled:r||0===n.trim().length||0===t.trim().length,onClick:function(){return e(k())},label:"Register"})]})]})]})},_=n(47974),R=n(99670),L=n(57689),D=n(23508),F=function(e){var t=e.open,n=e.closeModal,s=e.onSet,l=(0,c.TL)(),f=(0,i.useState)(""),d=(0,r.Z)(f,2),p=d[0],x=d[1],g=(0,i.useState)(""),h=(0,r.Z)(g,2),m=h[0],b=h[1],v=(0,i.useState)(""),y=(0,r.Z)(v,2),j=y[0],w=y[1],k=(0,i.useState)(""),C=(0,r.Z)(k,2),S=C[0],T=C[1],P=(0,B.Z)((function(e){e.mfa_token?w(e.mfa_token):e.access_token?E("GET","/api/v1/subnet/apikey?token=".concat(e.access_token)):(s(e.apiKey),n())}),(function(e){l((0,a.Ih)(e)),n(),x(""),b(""),w(""),T("")})),O=(0,r.Z)(P,2),I=O[0],E=O[1],z=function(){return(0,u.jsxs)(o.ltY,{withBorders:!1,containerPadding:!1,children:[(0,u.jsx)(o.Wzg,{id:"subnet-email",name:"subnet-email",onChange:function(e){return x(e.target.value)},label:"Email",value:p,overlayIcon:(0,u.jsx)(o.oyc,{})}),(0,u.jsx)(o.Wzg,{id:"subnet-password",name:"subnet-password",onChange:function(e){return b(e.target.value)},label:"Password",type:"password",value:m})]})},Z=function(){return(0,u.jsx)(o.xuv,{sx:{display:"flex"},children:(0,u.jsxs)(o.xuv,{sx:{display:"flex",flexFlow:"column",flex:"2"},children:[(0,u.jsx)(o.xuv,{sx:{fontSize:14,display:"flex",flexFlow:"column",marginTop:20,marginBottom:20},children:"Two-Factor Authentication"}),(0,u.jsx)(o.xuv,{children:"Please enter the 6-digit verification code that was sent to your email address. This code will be valid for 5 minutes."}),(0,u.jsx)(o.xuv,{sx:{flex:"1",marginTop:"30px"},children:(0,u.jsx)(o.Wzg,{overlayIcon:(0,u.jsx)(o.mBM,{}),id:"subnet-otp",name:"subnet-otp",onChange:function(e){return T(e.target.value)},placeholder:"",label:"",value:S})})]})})};return t?(0,u.jsx)(D.Z,{title:"Get API Key from SUBNET",confirmText:"Get API Key",isOpen:t,titleIcon:(0,u.jsx)(o.szr,{}),isLoading:I,cancelText:"Cancel",onConfirm:function(){""!==j?E("POST","/api/v1/subnet/login/mfa",{username:p,otp:S,mfa_token:j}):E("POST","/api/v1/subnet/login",{username:p,password:m})},onClose:n,confirmButtonProps:{variant:"callAction",disabled:!p||!m||I,hidden:!0},cancelButtonProps:{disabled:I},confirmationContent:""===j?z():Z()}):null},K=function(e){var t=e.registerEndpoint,n=(0,L.s0)(),s=(0,i.useState)(!1),l=(0,r.Z)(s,2),f=l[0],d=l[1],p=(0,i.useState)(""),x=(0,r.Z)(p,2),g=x[0],m=x[1],b=(0,i.useState)(!1),y=(0,r.Z)(b,2),j=y[0],w=y[1],k=(0,i.useState)(!1),S=(0,r.Z)(k,2),T=S[0],P=S[1],O=(0,c.TL)(),B=(0,i.useCallback)((function(){if(!j){w(!0);var e={apiKey:g};h.Z.invoke("POST",t,e).then((function(e){w(!1),e&&e.registered&&(O((0,a.cN)(!0)),n(v.gA.LICENSE))})).catch((function(e){O((0,a.Ih)(e)),w(!1),E()}))}}),[g,O,j,t,n]);(0,i.useEffect)((function(){T&&B()}),[T,B]);var E=function(){m(""),P(!1)};return(0,u.jsxs)(o.ltY,{title:"Register cluster with API key",icon:(0,u.jsx)(o.dRy,{}),containerPadding:!1,withBorders:!1,helpBox:(0,u.jsx)(I,{}),children:[(0,u.jsx)(o.xuv,{sx:{fontSize:14,display:"flex",flexFlow:"column",marginBottom:"30px"},children:"Use your MinIO Subscription Network API Key to register this cluster."}),(0,u.jsxs)(o.xuv,{sx:{flex:"1"},children:[(0,u.jsx)(o.Wzg,{id:"api-key",name:"api-key",onChange:function(e){return m(e.target.value)},label:"API Key",value:g}),(0,u.jsxs)(o.xuv,{sx:C.ID.modalButtonBar,children:[(0,u.jsx)(o.zxk,{id:"get-from-subnet",variant:"regular",disabled:j,onClick:function(){return d(!0)},label:"Get from SUBNET"}),(0,u.jsx)(o.zxk,{id:"register",type:"submit",variant:"callAction",disabled:j||0===g.trim().length,onClick:function(){return B()},label:"Register"})]})]}),(0,u.jsx)(F,{open:f,closeModal:function(){return d(!1)},onSet:function(e){m(e),P(!0)}})]})},N=function(){var e=(0,c.TL)(),t=(0,s.v9)((function(e){return e.register.subnetMFAToken})),n=(0,s.v9)((function(e){return e.register.subnetAccessToken})),l=(0,s.v9)((function(e){return e.register.subnetRegToken})),p=(0,s.v9)((function(e){return e.register.subnetOrganizations})),x=(0,s.v9)((function(e){return e.register.loading})),m=(0,s.v9)((function(e){return e.register.loadingLicenseInfo})),b=(0,s.v9)((function(e){return e.register.clusterRegistered})),v=(0,s.v9)((function(e){return e.register.licenseInfo})),j=(0,s.v9)((function(e){return e.register.curTab})),w=(0,i.useState)(!0),k=(0,r.Z)(w,2),C=k[0],S=k[1];(0,i.useEffect)((function(){return function(){e((0,g.jS)())}}),[e]),(0,i.useEffect)((function(){if("simple-tab-2"===j&&!x&&!l){e((0,g.K4)(!0)),h.Z.invoke("GET","/api/v1/subnet/registration-token").then((function(t){e((0,g.K4)(!1)),t&&t.regToken&&e((0,g.wz)(t.regToken))})).catch((function(t){console.error(t),e((0,a.Ih)(t)),e((0,g.K4)(!1))}))}}),[j,x,l,e]),(0,i.useEffect)((function(){C&&(e(y()),S(!1))}),[C,S,e]);var T=(0,u.jsx)(i.Fragment,{});T=n&&p.length>0?(0,u.jsx)(Z,{}):t?(0,u.jsx)(z,{}):(0,u.jsx)(A,{});var P=(0,u.jsxs)(i.Fragment,{children:[(0,u.jsx)(o.xuv,{withBorders:!0,sx:{display:"flex",flexFlow:"column",padding:"43px"},children:b&&v?(0,u.jsx)(f,{email:v.email}):(0,u.jsx)(K,{registerEndpoint:"/api/v1/subnet/login"})}),(0,u.jsx)(d,{})]}),O=(0,u.jsx)(E,{}),I=(0,u.jsxs)(i.Fragment,{children:[(0,u.jsx)(o.xuv,{withBorders:!0,sx:{display:"flex",flexFlow:"column",padding:"43px"},children:b&&v?(0,u.jsx)(f,{email:v.email}):T}),!b&&(0,u.jsx)(d,{})]}),B=m?(0,u.jsx)("div",{children:"Loading.."}):I;return(0,i.useEffect)((function(){e((0,a.Sc)("register"))}),[]),(0,u.jsxs)(i.Fragment,{children:[(0,u.jsx)(_.Z,{label:"Register to MinIO Subscription Network",actions:(0,u.jsx)(R.Z,{})}),(0,u.jsx)(o.Xgh,{children:(0,u.jsx)(o.mQc,{horizontal:!0,currentTabOrPath:j,onTabClick:function(t){e((0,g.m)(t))},options:[{tabConfig:{label:"Credentials",id:"simple-tab-0"},content:B},{tabConfig:{label:"API Key",id:"simple-tab-1"},content:P},{tabConfig:{label:"Air-Gap",id:"simple-tab-2"},content:O}]})})]})}},74440:function(e,t,n){"use strict";var r=n(4942),i=(n(72791),n(29945)),o=n(80184);t.Z=function(e){var t=e.email,n=void 0===t?"":t;return(0,o.jsxs)(i.xuv,{sx:{height:67,color:"#ffffff",display:"flex",position:"relative",top:-30,left:-32,width:"calc(100% + 64px)",alignItems:"center",justifyContent:"space-between",backgroundColor:"#2781B0",padding:"0 25px 0 25px","& .registered-box, .reg-badge-box":{display:"flex",alignItems:"center",justifyContent:"flex-start"},"& .reg-badge-box":{marginLeft:"20px","& .min-icon":{fill:"#2781B0"}}},children:[(0,o.jsxs)(i.xuv,{className:"registered-box",children:[(0,o.jsx)(i.xuv,{sx:{fontSize:"16px",fontWeight:400},children:"Register status:"}),(0,o.jsxs)(i.xuv,{className:"reg-badge-box",children:[(0,o.jsx)(i.SA,{}),(0,o.jsx)(i.xuv,{sx:{fontWeight:600},children:"Registered"})]})]}),(0,o.jsxs)(i.xuv,{className:"registered-acc-box",sx:(0,r.Z)({alignItems:"center",justifyContent:"flex-start",display:"flex"},"@media (max-width: ".concat(i.Egj.sm,"px)"),{display:"none"}),children:[(0,o.jsx)(i.xuv,{sx:{fontSize:"16px",fontWeight:400},children:"Registered to:"}),(0,o.jsx)(i.xuv,{sx:{marginLeft:"8px",fontWeight:600},children:n})]})]})}},76998:function(e,t,n){"use strict";var r=n(42458),i={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,o,s,a,c,l,u=!1;t||(t={}),n=t.debug||!1;try{if(s=r(),a=document.createRange(),c=document.getSelection(),(l=document.createElement("span")).textContent=e,l.ariaHidden="true",l.style.all="unset",l.style.position="fixed",l.style.top=0,l.style.clip="rect(0, 0, 0, 0)",l.style.whiteSpace="pre",l.style.webkitUserSelect="text",l.style.MozUserSelect="text",l.style.msUserSelect="text",l.style.userSelect="text",l.addEventListener("copy",(function(r){if(r.stopPropagation(),t.format)if(r.preventDefault(),"undefined"===typeof r.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var o=i[t.format]||i.default;window.clipboardData.setData(o,e)}else r.clipboardData.clearData(),r.clipboardData.setData(t.format,e);t.onCopy&&(r.preventDefault(),t.onCopy(r.clipboardData))})),document.body.appendChild(l),a.selectNodeContents(l),c.addRange(a),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");u=!0}catch(f){n&&console.error("unable to copy using execCommand: ",f),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),u=!0}catch(f){n&&console.error("unable to copy using clipboardData: ",f),n&&console.error("falling back to prompt"),o=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(o,e)}}finally{c&&("function"==typeof c.removeRange?c.removeRange(a):c.removeAllRanges()),l&&document.body.removeChild(l),s()}return u}},568:function(e,t,n){"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var i=a(n(72791)),o=a(n(76998)),s=["text","onCopy","options","children"];function a(e){return e&&e.__esModule?e:{default:e}}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function f(e,t){for(var n=0;n0&&(1===e.organizations.length?i(j({token:e.access_token,account_id:e.organizations[0].accountId.toString()})):(i((0,g.t2)(e.access_token)),i((0,g.dl)(e.organizations)),i((0,g.wK)(e.organizations[0].accountId.toString()))))})).catch((function(e){i((0,a.Ih)(e)),i((0,g.K4)(!1)),i((0,g.Z7)(""))}));case 11:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()),k=(0,m.hg)("register/subnetLogin",function(){var e=(0,x.Z)((0,p.Z)().mark((function e(t,n){var r,i,o,s,c,l,u;return(0,p.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n.getState,n.rejectWithValue,i=n.dispatch,o=r(),s=o.register.license,c=o.register.subnetPassword,l=o.register.subnetEmail,!o.register.loading){e.next=8;break}return e.abrupt("return");case 8:i((0,g.K4)(!0)),u={username:l,password:c,apiKey:s},h.Z.invoke("POST","/api/v1/subnet/login",u).then((function(e){i((0,g.K4)(!1)),e&&e.registered?(i((0,g.jS)()),i(y())):e&&e.mfa_token?i((0,g.dK)(e.mfa_token)):e&&e.access_token&&e.organizations.length>0&&(i((0,g.t2)(e.access_token)),i((0,g.dl)(e.organizations)),i((0,g.wK)(e.organizations[0].accountId.toString())))})).catch((function(e){i((0,a.Ih)(e)),i((0,g.K4)(!1)),i((0,g.jS)())}));case 11:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()),C=n(23814),S=n(27454),T=n(78029),P=n.n(T),O=function(e){var t=e.icon,n=e.description;return(0,u.jsxs)(o.xuv,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[t," ",(0,u.jsx)(o.xuv,{className:"muted",style:{fontSize:"14px",fontStyle:"italic"},children:n})]})},I=function(){return(0,u.jsx)(o.KfX,{title:"Why should I register?",iconComponent:(0,u.jsx)(o.M9A,{}),help:(0,u.jsxs)(i.Fragment,{children:[(0,u.jsx)(o.xuv,{sx:{fontSize:"14px",marginBottom:"15px"},children:"Registering this cluster with the MinIO Subscription Network (SUBNET) provides the following benefits in addition to the commercial license and SLA backed support."}),(0,u.jsxs)(o.xuv,{sx:{display:"flex",flexFlow:"column"},children:[(0,u.jsx)(O,{icon:(0,u.jsx)(o._qw,{}),description:"Call Home Monitoring"}),(0,u.jsx)(O,{icon:(0,u.jsx)(o.toM,{}),description:"Health Diagnostics"}),(0,u.jsx)(O,{icon:(0,u.jsx)(o.Fsz,{}),description:"Performance Analysis"}),(0,u.jsx)(O,{icon:(0,u.jsx)(o.EQx,{}),description:(0,u.jsx)("a",{href:"https://min.io/signup?ref=con",target:"_blank",children:"More Features"})})]})]})})},B=n(9505),E=function(){var e=(0,c.TL)(),t=(0,s.v9)((function(e){return e.register.subnetRegToken})),n=(0,s.v9)((function(e){return e.register.clusterRegistered})),l=(0,s.v9)((function(e){return e.register.licenseInfo})),d="https://subnet.min.io/cluster/register?token=".concat(t),p=(0,i.useState)(""),x=(0,r.Z)(p,2),g=x[0],h=x[1],m=(0,B.Z)((function(){e(y()),e((0,a.cN)(!0))}),(function(t){e((0,a.Ih)(t))})),b=(0,r.Z)(m,2),v=b[0],j=b[1];return(0,u.jsx)(i.Fragment,{children:(0,u.jsx)(o.xuv,{withBorders:!0,sx:{display:"flex",flexFlow:"column",padding:"43px"},children:n&&l?(0,u.jsx)(f,{email:l.email}):(0,u.jsx)(o.ltY,{title:"Register cluster in an Air-gap environment",icon:(0,u.jsx)(o.YL8,{}),helpBox:(0,u.jsx)(I,{}),withBorders:!1,containerPadding:!1,children:(0,u.jsx)(o.xuv,{sx:{display:"flex",flexFlow:"column",flex:"2",marginTop:"15px","& .step-row":{fontSize:14,display:"flex",marginTop:"15px",marginBottom:"15px"}},children:(0,u.jsxs)(o.xuv,{children:[(0,u.jsx)(o.xuv,{className:"step-row",children:(0,u.jsx)(o.xuv,{className:"step-text",children:"Click on the link to register this cluster in SUBNET and get a License Key for this Air-Gap deployment"})}),(0,u.jsxs)(o.xuv,{sx:{flex:"1",display:"flex",alignItems:"center",gap:3},children:[(0,u.jsx)("a",{href:d,target:"_blank",children:"https://subnet.min.io/cluster/register"}),(0,u.jsx)(S.Z,{tooltip:"Copy to Clipboard",children:(0,u.jsx)(P(),{text:d,children:(0,u.jsx)(o.zxk,{type:"button",id:"copy-ult-to-clip-board",icon:(0,u.jsx)(o.TIy,{}),color:"primary",variant:"regular"})})})]}),(0,u.jsx)(o.xuv,{className:"muted",sx:{marginTop:"25px"},children:"Note: If this machine does not have internet connection, Copy paste the following URL in a browser where you access SUBNET and follow the instructions to complete the registration"}),(0,u.jsxs)(o.xuv,{sx:{marginTop:"25px",display:"flex",flexDirection:"column"},children:[(0,u.jsxs)("label",{style:{fontWeight:"bold",marginBottom:"10px"},children:["Paste the License Key"," "]}),(0,u.jsx)(o.q5m,{value:g,disabled:v,label:"",id:"licenseKey",name:"licenseKey",placeholder:"License Key",onChange:function(e){h(e.target.value)}})]}),(0,u.jsx)(o.xuv,{sx:C.ID.modalButtonBar,children:(0,u.jsx)(o.zxk,{id:"apply-license-key",onClick:function(){j("PUT","/api/v1/configs/subnet",{key_values:[{key:"license",value:g}]})},variant:"callAction",disabled:!g||v,label:"Apply Cluster License"})})]})})})})})},z=function(){var e=(0,c.TL)(),t=(0,s.v9)((function(e){return e.register.subnetMFAToken})),n=(0,s.v9)((function(e){return e.register.subnetOTP})),r=(0,s.v9)((function(e){return e.register.loading}));return(0,u.jsxs)(o.ltY,{title:"Two-Factor Authentication",helpBox:(0,u.jsx)(I,{}),withBorders:!1,containerPadding:!1,children:[(0,u.jsx)(o.xuv,{sx:{fontSize:14,display:"flex",flexFlow:"column",marginBottom:"30px"},children:"Please enter the 6-digit verification code that was sent to your email address. This code will be valid for 5 minutes."}),(0,u.jsx)(o.xuv,{children:(0,u.jsx)(o.Wzg,{overlayIcon:(0,u.jsx)(o.mBM,{}),id:"subnet-otp",name:"subnet-otp",onChange:function(t){return e((0,g.Z7)(t.target.value))},placeholder:"",label:"",value:n})}),(0,u.jsx)(o.xuv,{sx:C.ID.modalButtonBar,children:(0,u.jsx)(o.zxk,{id:"verify",onClick:function(){return e(w())},disabled:r||0===n.trim().length||0===t.trim().length,variant:"callAction",label:"Verify"})})]})},Z=function(){var e=(0,c.TL)(),t=(0,s.v9)((function(e){return e.register.subnetAccessToken})),n=(0,s.v9)((function(e){return e.register.selectedSubnetOrganization})),r=(0,s.v9)((function(e){return e.register.subnetOrganizations})),i=(0,s.v9)((function(e){return e.register.loading}));return(0,u.jsxs)(o.ltY,{title:"Register MinIO cluster",containerPadding:!0,withBorders:!1,helpBox:(0,u.jsx)(I,{}),children:[(0,u.jsx)(o.PhF,{id:"subnet-organization",name:"subnet-organization",onChange:function(t){return e((0,g.wK)(t))},label:"Select an organization",value:n,options:r.map((function(e){return{label:e.company,value:e.accountId.toString()}}))}),(0,u.jsx)(o.xuv,{sx:C.ID.modalButtonBar,children:(0,u.jsx)(o.zxk,{id:"register-cluster",onClick:function(){return function(){i||(e((0,g.K4)(!0)),t&&n&&e(j({token:t,account_id:n})))}},disabled:i||0===t.trim().length,variant:"callAction",label:"Register"})})]})},A=function(){var e=(0,c.TL)(),t=(0,s.v9)((function(e){return e.register.subnetPassword})),n=(0,s.v9)((function(e){return e.register.subnetEmail})),r=(0,s.v9)((function(e){return e.register.loading}));return(0,u.jsxs)(o.ltY,{icon:(0,u.jsx)(o.dRy,{}),title:"Online activation of MinIO Subscription Network License",withBorders:!1,containerPadding:!1,helpBox:(0,u.jsx)(I,{}),children:[(0,u.jsx)(o.xuv,{sx:{fontSize:"14px",display:"flex",flexFlow:"column",marginBottom:"30px"},children:"Use your MinIO Subscription Network login credentials to register this cluster."}),(0,u.jsxs)(o.xuv,{sx:{flex:"1"},children:[(0,u.jsx)(o.Wzg,{id:"subnet-email",name:"subnet-email",onChange:function(t){return e((0,g.Ze)(t.target.value))},label:"Email",value:n,overlayIcon:(0,u.jsx)(o.oyc,{})}),(0,u.jsx)(o.Wzg,{id:"subnet-password",name:"subnet-password",onChange:function(t){return e((0,g.lr)(t.target.value))},label:"Password",type:"password",value:t}),(0,u.jsxs)(o.xuv,{sx:C.ID.modalButtonBar,children:[(0,u.jsx)(o.zxk,{id:"sign-up",type:"submit",variant:"regular",onClick:function(e){e.preventDefault(),window.open("https://min.io/signup?ref=con","_blank")},label:"Sign up"}),(0,u.jsx)(o.zxk,{id:"register-credentials",type:"submit",variant:"callAction",disabled:r||0===n.trim().length||0===t.trim().length,onClick:function(){return e(k())},label:"Register"})]})]})]})},_=n(47974),R=n(99670),L=n(57689),D=n(23508),F=function(e){var t=e.open,n=e.closeModal,s=e.onSet,l=(0,c.TL)(),f=(0,i.useState)(""),d=(0,r.Z)(f,2),p=d[0],x=d[1],g=(0,i.useState)(""),h=(0,r.Z)(g,2),m=h[0],b=h[1],v=(0,i.useState)(""),y=(0,r.Z)(v,2),j=y[0],w=y[1],k=(0,i.useState)(""),C=(0,r.Z)(k,2),S=C[0],T=C[1],P=(0,B.Z)((function(e){e.mfa_token?w(e.mfa_token):e.access_token?E("GET","/api/v1/subnet/apikey?token=".concat(e.access_token)):(s(e.apiKey),n())}),(function(e){l((0,a.Ih)(e)),n(),x(""),b(""),w(""),T("")})),O=(0,r.Z)(P,2),I=O[0],E=O[1],z=function(){return(0,u.jsxs)(o.ltY,{withBorders:!1,containerPadding:!1,children:[(0,u.jsx)(o.Wzg,{id:"subnet-email",name:"subnet-email",onChange:function(e){return x(e.target.value)},label:"Email",value:p,overlayIcon:(0,u.jsx)(o.oyc,{})}),(0,u.jsx)(o.Wzg,{id:"subnet-password",name:"subnet-password",onChange:function(e){return b(e.target.value)},label:"Password",type:"password",value:m})]})},Z=function(){return(0,u.jsx)(o.xuv,{sx:{display:"flex"},children:(0,u.jsxs)(o.xuv,{sx:{display:"flex",flexFlow:"column",flex:"2"},children:[(0,u.jsx)(o.xuv,{sx:{fontSize:14,display:"flex",flexFlow:"column",marginTop:20,marginBottom:20},children:"Two-Factor Authentication"}),(0,u.jsx)(o.xuv,{children:"Please enter the 6-digit verification code that was sent to your email address. This code will be valid for 5 minutes."}),(0,u.jsx)(o.xuv,{sx:{flex:"1",marginTop:"30px"},children:(0,u.jsx)(o.Wzg,{overlayIcon:(0,u.jsx)(o.mBM,{}),id:"subnet-otp",name:"subnet-otp",onChange:function(e){return T(e.target.value)},placeholder:"",label:"",value:S})})]})})};return t?(0,u.jsx)(D.Z,{title:"Get API Key from SUBNET",confirmText:"Get API Key",isOpen:t,titleIcon:(0,u.jsx)(o.szr,{}),isLoading:I,cancelText:"Cancel",onConfirm:function(){""!==j?E("POST","/api/v1/subnet/login/mfa",{username:p,otp:S,mfa_token:j}):E("POST","/api/v1/subnet/login",{username:p,password:m})},onClose:n,confirmButtonProps:{variant:"callAction",disabled:!p||!m||I,hidden:!0},cancelButtonProps:{disabled:I},confirmationContent:""===j?z():Z()}):null},K=function(e){var t=e.registerEndpoint,n=(0,L.s0)(),s=(0,i.useState)(!1),l=(0,r.Z)(s,2),f=l[0],d=l[1],p=(0,i.useState)(""),x=(0,r.Z)(p,2),g=x[0],m=x[1],b=(0,i.useState)(!1),y=(0,r.Z)(b,2),j=y[0],w=y[1],k=(0,i.useState)(!1),S=(0,r.Z)(k,2),T=S[0],P=S[1],O=(0,c.TL)(),B=(0,i.useCallback)((function(){if(!j){w(!0);var e={apiKey:g};h.Z.invoke("POST",t,e).then((function(e){w(!1),e&&e.registered&&(O((0,a.cN)(!0)),n(v.gA.LICENSE))})).catch((function(e){O((0,a.Ih)(e)),w(!1),E()}))}}),[g,O,j,t,n]);(0,i.useEffect)((function(){T&&B()}),[T,B]);var E=function(){m(""),P(!1)};return(0,u.jsxs)(o.ltY,{title:"Register cluster with API key",icon:(0,u.jsx)(o.dRy,{}),containerPadding:!1,withBorders:!1,helpBox:(0,u.jsx)(I,{}),children:[(0,u.jsx)(o.xuv,{sx:{fontSize:14,display:"flex",flexFlow:"column",marginBottom:"30px"},children:"Use your MinIO Subscription Network API Key to register this cluster."}),(0,u.jsxs)(o.xuv,{sx:{flex:"1"},children:[(0,u.jsx)(o.Wzg,{id:"api-key",name:"api-key",onChange:function(e){return m(e.target.value)},label:"API Key",value:g}),(0,u.jsxs)(o.xuv,{sx:C.ID.modalButtonBar,children:[(0,u.jsx)(o.zxk,{id:"get-from-subnet",variant:"regular",disabled:j,onClick:function(){return d(!0)},label:"Get from SUBNET"}),(0,u.jsx)(o.zxk,{id:"register",type:"submit",variant:"callAction",disabled:j||0===g.trim().length,onClick:function(){return B()},label:"Register"})]})]}),(0,u.jsx)(F,{open:f,closeModal:function(){return d(!1)},onSet:function(e){m(e),P(!0)}})]})},N=function(){var e=(0,c.TL)(),t=(0,s.v9)((function(e){return e.register.subnetMFAToken})),n=(0,s.v9)((function(e){return e.register.subnetAccessToken})),l=(0,s.v9)((function(e){return e.register.subnetRegToken})),p=(0,s.v9)((function(e){return e.register.subnetOrganizations})),x=(0,s.v9)((function(e){return e.register.loading})),m=(0,s.v9)((function(e){return e.register.loadingLicenseInfo})),b=(0,s.v9)((function(e){return e.register.clusterRegistered})),v=(0,s.v9)((function(e){return e.register.licenseInfo})),j=(0,s.v9)((function(e){return e.register.curTab})),w=(0,i.useState)(!0),k=(0,r.Z)(w,2),C=k[0],S=k[1];(0,i.useEffect)((function(){return function(){e((0,g.jS)())}}),[e]),(0,i.useEffect)((function(){if("simple-tab-2"===j&&!x&&!l){e((0,g.K4)(!0)),h.Z.invoke("GET","/api/v1/subnet/registration-token").then((function(t){e((0,g.K4)(!1)),t&&t.regToken&&e((0,g.wz)(t.regToken))})).catch((function(t){console.error(t),e((0,a.Ih)(t)),e((0,g.K4)(!1))}))}}),[j,x,l,e]),(0,i.useEffect)((function(){C&&(e(y()),S(!1))}),[C,S,e]);var T=(0,u.jsx)(i.Fragment,{});T=n&&p.length>0?(0,u.jsx)(Z,{}):t?(0,u.jsx)(z,{}):(0,u.jsx)(A,{});var P=(0,u.jsxs)(i.Fragment,{children:[(0,u.jsx)(o.xuv,{withBorders:!0,sx:{display:"flex",flexFlow:"column",padding:"43px"},children:b&&v?(0,u.jsx)(f,{email:v.email}):(0,u.jsx)(K,{registerEndpoint:"/api/v1/subnet/login"})}),(0,u.jsx)(d,{})]}),O=(0,u.jsx)(E,{}),I=(0,u.jsxs)(i.Fragment,{children:[(0,u.jsx)(o.xuv,{withBorders:!0,sx:{display:"flex",flexFlow:"column",padding:"43px"},children:b&&v?(0,u.jsx)(f,{email:v.email}):T}),!b&&(0,u.jsx)(d,{})]}),B=m?(0,u.jsx)("div",{children:"Loading.."}):I;return(0,i.useEffect)((function(){e((0,a.Sc)("register"))}),[]),(0,u.jsxs)(i.Fragment,{children:[(0,u.jsx)(_.Z,{label:"Register to MinIO Subscription Network",actions:(0,u.jsx)(R.Z,{})}),(0,u.jsx)(o.Xgh,{children:(0,u.jsx)(o.mQc,{horizontal:!0,currentTabOrPath:j,onTabClick:function(t){e((0,g.m)(t))},options:[{tabConfig:{label:"Credentials",id:"simple-tab-0"},content:B},{tabConfig:{label:"API Key",id:"simple-tab-1"},content:P},{tabConfig:{label:"Air-Gap",id:"simple-tab-2"},content:O}]})})]})}},74440:function(e,t,n){"use strict";var r=n(4942),i=(n(72791),n(29945)),o=n(80184);t.Z=function(e){var t=e.email,n=void 0===t?"":t;return(0,o.jsxs)(i.xuv,{sx:{height:67,color:"#ffffff",display:"flex",position:"relative",top:-30,left:-32,width:"calc(100% + 64px)",alignItems:"center",justifyContent:"space-between",backgroundColor:"#2781B0",padding:"0 25px 0 25px","& .registered-box, .reg-badge-box":{display:"flex",alignItems:"center",justifyContent:"flex-start"},"& .reg-badge-box":{marginLeft:"20px","& .min-icon":{fill:"#2781B0"}}},children:[(0,o.jsxs)(i.xuv,{className:"registered-box",children:[(0,o.jsx)(i.xuv,{sx:{fontSize:"16px",fontWeight:400},children:"Register status:"}),(0,o.jsxs)(i.xuv,{className:"reg-badge-box",children:[(0,o.jsx)(i.SA,{}),(0,o.jsx)(i.xuv,{sx:{fontWeight:600},children:"Registered"})]})]}),(0,o.jsxs)(i.xuv,{className:"registered-acc-box",sx:(0,r.Z)({alignItems:"center",justifyContent:"flex-start",display:"flex"},"@media (max-width: ".concat(i.Egj.sm,"px)"),{display:"none"}),children:[(0,o.jsx)(i.xuv,{sx:{fontSize:"16px",fontWeight:400},children:"Registered to:"}),(0,o.jsx)(i.xuv,{sx:{marginLeft:"8px",fontWeight:600},children:n})]})]})}},76998:function(e,t,n){"use strict";var r=n(42458),i={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,o,s,a,c,l,u=!1;t||(t={}),n=t.debug||!1;try{if(s=r(),a=document.createRange(),c=document.getSelection(),(l=document.createElement("span")).textContent=e,l.ariaHidden="true",l.style.all="unset",l.style.position="fixed",l.style.top=0,l.style.clip="rect(0, 0, 0, 0)",l.style.whiteSpace="pre",l.style.webkitUserSelect="text",l.style.MozUserSelect="text",l.style.msUserSelect="text",l.style.userSelect="text",l.addEventListener("copy",(function(r){if(r.stopPropagation(),t.format)if(r.preventDefault(),"undefined"===typeof r.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var o=i[t.format]||i.default;window.clipboardData.setData(o,e)}else r.clipboardData.clearData(),r.clipboardData.setData(t.format,e);t.onCopy&&(r.preventDefault(),t.onCopy(r.clipboardData))})),document.body.appendChild(l),a.selectNodeContents(l),c.addRange(a),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");u=!0}catch(f){n&&console.error("unable to copy using execCommand: ",f),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),u=!0}catch(f){n&&console.error("unable to copy using clipboardData: ",f),n&&console.error("falling back to prompt"),o=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(o,e)}}finally{c&&("function"==typeof c.removeRange?c.removeRange(a):c.removeAllRanges()),l&&document.body.removeChild(l),s()}return u}},568:function(e,t,n){"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var i=a(n(72791)),o=a(n(76998)),s=["text","onCopy","options","children"];function a(e){return e&&e.__esModule?e:{default:e}}function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function f(e,t){for(var n=0;n.\n\nimport React, { Fragment, useState } from \"react\";\nimport { CopyIcon, SettingsIcon, Box, Grid, Switch, InputBox } from \"mds\";\nimport RegistrationStatusBanner from \"./RegistrationStatusBanner\";\n\nexport const ClusterRegistered = ({ email }: { email: string }) => {\n return (\n \n \n \n \n Login to{\" \"}\n \n SUBNET\n {\" \"}\n to avail support for this MinIO cluster\n \n \n \n );\n};\n\nexport const ProxyConfiguration = () => {\n const proxyConfigurationCommand =\n \"mc admin config set {alias} subnet proxy={proxy}\";\n const [displaySubnetProxy, setDisplaySubnetProxy] = useState(false);\n return (\n \n \n \n \n \n
\n Proxy Configuration\n
\n \n \n For airgap/firewalled environments it is possible to{\" \"}\n \n configure a proxy\n {\" \"}\n to connect to SUBNET .\n \n \n {displaySubnetProxy && (\n {}}\n label=\"\"\n value={proxyConfigurationCommand}\n overlayIcon={}\n overlayAction={() =>\n navigator.clipboard.writeText(proxyConfigurationCommand)\n }\n />\n )}\n \n \n \n ) => {\n setDisplaySubnetProxy(event.target.checked);\n }}\n />\n \n \n
\n );\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport {\n resetRegisterForm,\n setClusterRegistered,\n setLicenseInfo,\n setLoading,\n setLoadingLicenseInfo,\n setSelectedSubnetOrganization,\n setSubnetAccessToken,\n setSubnetMFAToken,\n setSubnetOrganizations,\n setSubnetOTP,\n} from \"./registerSlice\";\nimport api from \"../../../common/api\";\nimport {\n SubnetInfo,\n SubnetLoginRequest,\n SubnetLoginResponse,\n SubnetLoginWithMFARequest,\n SubnetRegisterRequest,\n} from \"../License/types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport {\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\nimport { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport { AppState } from \"../../../store\";\nimport { hasPermission } from \"../../../common/SecureComponent\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_PAGES,\n IAM_PAGES_PERMISSIONS,\n} from \"../../../common/SecureComponent/permissions\";\n\nexport const fetchLicenseInfo = createAsyncThunk(\n \"register/fetchLicenseInfo\",\n async (_, { getState, dispatch }) => {\n const state = getState() as AppState;\n\n const getSubnetInfo = hasPermission(\n CONSOLE_UI_RESOURCE,\n IAM_PAGES_PERMISSIONS[IAM_PAGES.LICENSE],\n true,\n );\n\n const loadingLicenseInfo = state.register.loadingLicenseInfo;\n\n if (loadingLicenseInfo) {\n return;\n }\n if (getSubnetInfo) {\n dispatch(setLoadingLicenseInfo(true));\n api\n .invoke(\"GET\", `/api/v1/subnet/info`)\n .then((res: SubnetInfo) => {\n dispatch(setLicenseInfo(res));\n dispatch(setClusterRegistered(true));\n dispatch(setLoadingLicenseInfo(false));\n })\n .catch((err: ErrorResponseHandler) => {\n if (\n err.detailedError.toLowerCase() !==\n \"License is not present\".toLowerCase() &&\n err.detailedError.toLowerCase() !==\n \"license not found\".toLowerCase()\n ) {\n dispatch(setErrorSnackMessage(err));\n }\n dispatch(setClusterRegistered(false));\n dispatch(setLoadingLicenseInfo(false));\n });\n } else {\n dispatch(setLoadingLicenseInfo(false));\n }\n },\n);\n\nexport interface ClassRegisterArgs {\n token: string;\n account_id: string;\n}\n\nexport const callRegister = createAsyncThunk(\n \"register/callRegister\",\n async (args: ClassRegisterArgs, { dispatch }) => {\n const request: SubnetRegisterRequest = {\n token: args.token,\n account_id: args.account_id,\n };\n api\n .invoke(\"POST\", \"/api/v1/subnet/register\", request)\n .then(() => {\n dispatch(setLoading(false));\n dispatch(setServerNeedsRestart(true));\n dispatch(resetRegisterForm());\n dispatch(fetchLicenseInfo());\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n dispatch(setLoading(false));\n });\n },\n);\n\nexport const subnetLoginWithMFA = createAsyncThunk(\n \"register/subnetLoginWithMFA\",\n async (_, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n\n const subnetEmail = state.register.subnetEmail;\n const subnetMFAToken = state.register.subnetMFAToken;\n const subnetOTP = state.register.subnetOTP;\n const loading = state.register.loading;\n\n if (loading) {\n return;\n }\n dispatch(setLoading(true));\n const request: SubnetLoginWithMFARequest = {\n username: subnetEmail,\n otp: subnetOTP,\n mfa_token: subnetMFAToken,\n };\n api\n .invoke(\"POST\", \"/api/v1/subnet/login/mfa\", request)\n .then((resp: SubnetLoginResponse) => {\n dispatch(setLoading(false));\n if (resp && resp.access_token && resp.organizations.length > 0) {\n if (resp.organizations.length === 1) {\n dispatch(\n callRegister({\n token: resp.access_token,\n account_id: resp.organizations[0].accountId.toString(),\n }),\n );\n } else {\n dispatch(setSubnetAccessToken(resp.access_token));\n dispatch(setSubnetOrganizations(resp.organizations));\n dispatch(\n setSelectedSubnetOrganization(\n resp.organizations[0].accountId.toString(),\n ),\n );\n }\n }\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n dispatch(setLoading(false));\n dispatch(setSubnetOTP(\"\"));\n });\n },\n);\n\nexport const subnetLogin = createAsyncThunk(\n \"register/subnetLogin\",\n async (_, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n\n const license = state.register.license;\n const subnetPassword = state.register.subnetPassword;\n const subnetEmail = state.register.subnetEmail;\n const loading = state.register.loading;\n\n if (loading) {\n return;\n }\n dispatch(setLoading(true));\n let request: SubnetLoginRequest = {\n username: subnetEmail,\n password: subnetPassword,\n apiKey: license,\n };\n api\n .invoke(\"POST\", \"/api/v1/subnet/login\", request)\n .then((resp: SubnetLoginResponse) => {\n dispatch(setLoading(false));\n if (resp && resp.registered) {\n dispatch(resetRegisterForm());\n dispatch(fetchLicenseInfo());\n } else if (resp && resp.mfa_token) {\n dispatch(setSubnetMFAToken(resp.mfa_token));\n } else if (resp && resp.access_token && resp.organizations.length > 0) {\n dispatch(setSubnetAccessToken(resp.access_token));\n dispatch(setSubnetOrganizations(resp.organizations));\n dispatch(\n setSelectedSubnetOrganization(\n resp.organizations[0].accountId.toString(),\n ),\n );\n }\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n dispatch(setLoading(false));\n dispatch(resetRegisterForm());\n });\n },\n);\n","// This file is part of MinIO Console Server\n// Copyright (c) 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 {\n CallHomeFeatureIcon,\n DiagnosticsFeatureIcon,\n ExtraFeaturesIcon,\n HelpIconFilled,\n PerformanceFeatureIcon,\n Box,\n HelpBox,\n} from \"mds\";\n\nconst FeatureItem = ({\n icon,\n description,\n}: {\n icon: any;\n description: string | React.ReactNode;\n}) => {\n return (\n \n {icon}{\" \"}\n \n {description}\n \n \n );\n};\nconst RegisterHelpBox = () => {\n return (\n }\n help={\n \n \n Registering this cluster with the MinIO Subscription Network\n (SUBNET) provides the following benefits in addition to the\n commercial license and SLA backed support.\n \n\n \n }\n description={`Call Home Monitoring`}\n />\n }\n description={`Health Diagnostics`}\n />\n }\n description={`Performance Analysis`}\n />\n }\n description={\n \n More Features\n \n }\n />\n \n \n }\n />\n );\n};\n\nexport default RegisterHelpBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport {\n Box,\n Button,\n CommentBox,\n CopyIcon,\n FormLayout,\n OfflineRegistrationIcon,\n} from \"mds\";\nimport { ClusterRegistered } from \"./utils\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { useSelector } from \"react-redux\";\nimport { fetchLicenseInfo } from \"./registerThunks\";\nimport {\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport RegisterHelpBox from \"./RegisterHelpBox\";\nimport useApi from \"../Common/Hooks/useApi\";\n\nconst OfflineRegistration = () => {\n const dispatch = useAppDispatch();\n const subnetRegToken = useSelector(\n (state: AppState) => state.register.subnetRegToken,\n );\n const clusterRegistered = useSelector(\n (state: AppState) => state.register.clusterRegistered,\n );\n const licenseInfo = useSelector(\n (state: AppState) => state.register.licenseInfo,\n );\n\n const offlineRegUrl = `https://subnet.min.io/cluster/register?token=${subnetRegToken}`;\n\n const [licenseKey, setLicenseKey] = useState(\"\");\n\n const [isSaving, invokeApplyLicenseApi] = useApi(\n () => {\n dispatch(fetchLicenseInfo());\n dispatch(setServerNeedsRestart(true));\n },\n (err) => {\n dispatch(setErrorSnackMessage(err));\n },\n );\n\n const applyAirGapLicense = () => {\n invokeApplyLicenseApi(\"PUT\", `/api/v1/configs/subnet`, {\n key_values: [{ key: \"license\", value: licenseKey }],\n });\n };\n\n return (\n \n \n {clusterRegistered && licenseInfo ? (\n \n ) : (\n }\n helpBox={}\n withBorders={false}\n containerPadding={false}\n >\n \n \n \n \n Click on the link to register this cluster in SUBNET and get\n a License Key for this Air-Gap deployment\n \n \n\n \n \n https://subnet.min.io/cluster/register\n \n\n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n\n \n Note: If this machine does not have internet connection, Copy\n paste the following URL in a browser where you access SUBNET\n and follow the instructions to complete the registration\n \n\n \n \n {\n setLicenseKey(e.target.value);\n }}\n />\n \n \n \n \n \n \n \n )}\n \n \n );\n};\n\nexport default OfflineRegistration;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box, Button, FormLayout, InputBox, LockIcon } from \"mds\";\nimport { useSelector } from \"react-redux\";\nimport { setSubnetOTP } from \"./registerSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { subnetLoginWithMFA } from \"./registerThunks\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport RegisterHelpBox from \"./RegisterHelpBox\";\n\nconst SubnetMFAToken = () => {\n const dispatch = useAppDispatch();\n\n const subnetMFAToken = useSelector(\n (state: AppState) => state.register.subnetMFAToken,\n );\n const subnetOTP = useSelector((state: AppState) => state.register.subnetOTP);\n const loading = useSelector((state: AppState) => state.register.loading);\n\n return (\n }\n withBorders={false}\n containerPadding={false}\n >\n \n Please enter the 6-digit verification code that was sent to your email\n address. This code will be valid for 5 minutes.\n \n\n \n }\n id=\"subnet-otp\"\n name=\"subnet-otp\"\n onChange={(event: React.ChangeEvent) =>\n dispatch(setSubnetOTP(event.target.value))\n }\n placeholder=\"\"\n label=\"\"\n value={subnetOTP}\n />\n \n \n dispatch(subnetLoginWithMFA())}\n disabled={\n loading ||\n subnetOTP.trim().length === 0 ||\n subnetMFAToken.trim().length === 0\n }\n variant=\"callAction\"\n label={\"Verify\"}\n />\n \n \n );\n};\nexport default SubnetMFAToken;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box, Button, FormLayout, Select } from \"mds\";\nimport { setLoading, setSelectedSubnetOrganization } from \"./registerSlice\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { callRegister } from \"./registerThunks\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport RegisterHelpBox from \"./RegisterHelpBox\";\n\nconst ClusterRegistrationForm = () => {\n const dispatch = useAppDispatch();\n\n const subnetAccessToken = useSelector(\n (state: AppState) => state.register.subnetAccessToken,\n );\n const selectedSubnetOrganization = useSelector(\n (state: AppState) => state.register.selectedSubnetOrganization,\n );\n const subnetOrganizations = useSelector(\n (state: AppState) => state.register.subnetOrganizations,\n );\n const loading = useSelector((state: AppState) => state.register.loading);\n\n return (\n }\n >\n \n dispatch(setSelectedSubnetOrganization(value as string))\n }\n label=\"Select an organization\"\n value={selectedSubnetOrganization}\n options={subnetOrganizations.map((organization) => ({\n label: organization.company,\n value: organization.accountId.toString(),\n }))}\n />\n \n () => {\n if (loading) {\n return;\n }\n dispatch(setLoading(true));\n if (subnetAccessToken && selectedSubnetOrganization) {\n dispatch(\n callRegister({\n token: subnetAccessToken,\n account_id: selectedSubnetOrganization,\n }),\n );\n }\n }}\n disabled={loading || subnetAccessToken.trim().length === 0}\n variant=\"callAction\"\n label={\"Register\"}\n />\n \n \n );\n};\n\nexport default ClusterRegistrationForm;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport {\n Box,\n Button,\n FormLayout,\n InputBox,\n OnlineRegistrationIcon,\n UsersIcon,\n} from \"mds\";\nimport RegisterHelpBox from \"./RegisterHelpBox\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setSubnetEmail, setSubnetPassword } from \"./registerSlice\";\nimport { subnetLogin } from \"./registerThunks\";\n\nconst OnlineRegistration = () => {\n const dispatch = useAppDispatch();\n\n const subnetPassword = useSelector(\n (state: AppState) => state.register.subnetPassword,\n );\n const subnetEmail = useSelector(\n (state: AppState) => state.register.subnetEmail,\n );\n const loading = useSelector((state: AppState) => state.register.loading);\n\n return (\n }\n title={\"Online activation of MinIO Subscription Network License\"}\n withBorders={false}\n containerPadding={false}\n helpBox={}\n >\n \n Use your MinIO Subscription Network login credentials to register this\n cluster.\n \n \n ) =>\n dispatch(setSubnetEmail(event.target.value))\n }\n label=\"Email\"\n value={subnetEmail}\n overlayIcon={}\n />\n ) =>\n dispatch(setSubnetPassword(event.target.value))\n }\n label=\"Password\"\n type={\"password\"}\n value={subnetPassword}\n />\n\n \n {\n e.preventDefault();\n window.open(`https://min.io/signup?ref=con`, \"_blank\");\n }}\n label={\"Sign up\"}\n />\n dispatch(subnetLogin())}\n label={\"Register\"}\n />\n \n \n \n );\n};\n\nexport default OnlineRegistration;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { Box, FormLayout, InfoIcon, InputBox, LockIcon, UsersIcon } from \"mds\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { useAppDispatch } from \"../../../store\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport useApi from \"../Common/Hooks/useApi\";\n\ninterface IGetApiKeyModalProps {\n open: boolean;\n closeModal: () => void;\n onSet: (apiKey: string) => void;\n}\n\nconst GetApiKeyModal = ({ open, closeModal, onSet }: IGetApiKeyModalProps) => {\n const dispatch = useAppDispatch();\n const [email, setEmail] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [mfaToken, setMfaToken] = useState(\"\");\n const [subnetOTP, setSubnetOTP] = useState(\"\");\n\n const onError = (err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n closeModal();\n setEmail(\"\");\n setPassword(\"\");\n setMfaToken(\"\");\n setSubnetOTP(\"\");\n };\n\n const onSuccess = (res: any) => {\n if (res.mfa_token) {\n setMfaToken(res.mfa_token);\n } else if (res.access_token) {\n invokeApi(\"GET\", `/api/v1/subnet/apikey?token=${res.access_token}`);\n } else {\n onSet(res.apiKey);\n closeModal();\n }\n };\n\n const [isLoading, invokeApi] = useApi(onSuccess, onError);\n\n const onConfirm = () => {\n if (mfaToken !== \"\") {\n invokeApi(\"POST\", \"/api/v1/subnet/login/mfa\", {\n username: email,\n otp: subnetOTP,\n mfa_token: mfaToken,\n });\n } else {\n invokeApi(\"POST\", \"/api/v1/subnet/login\", { username: email, password });\n }\n };\n\n const getDialogContent = () => {\n if (mfaToken === \"\") {\n return getCredentialsDialog();\n }\n return getMFADialog();\n };\n\n const getCredentialsDialog = () => {\n return (\n \n ) =>\n setEmail(event.target.value)\n }\n label=\"Email\"\n value={email}\n overlayIcon={}\n />\n ) =>\n setPassword(event.target.value)\n }\n label=\"Password\"\n type={\"password\"}\n value={password}\n />\n \n );\n };\n\n const getMFADialog = () => {\n return (\n \n \n \n Two-Factor Authentication\n \n\n \n Please enter the 6-digit verification code that was sent to your\n email address. This code will be valid for 5 minutes.\n \n\n \n }\n id=\"subnet-otp\"\n name=\"subnet-otp\"\n onChange={(event: React.ChangeEvent) =>\n setSubnetOTP(event.target.value)\n }\n placeholder=\"\"\n label=\"\"\n value={subnetOTP}\n />\n \n \n \n );\n };\n\n return open ? (\n }\n isLoading={isLoading}\n cancelText={\"Cancel\"}\n onConfirm={onConfirm}\n onClose={closeModal}\n confirmButtonProps={{\n variant: \"callAction\",\n disabled: !email || !password || isLoading,\n hidden: true,\n }}\n cancelButtonProps={{\n disabled: isLoading,\n }}\n confirmationContent={getDialogContent()}\n />\n ) : null;\n};\n\nexport default GetApiKeyModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { Box, Button, FormLayout, InputBox, OnlineRegistrationIcon } from \"mds\";\nimport { useNavigate } from \"react-router-dom\";\nimport { SubnetLoginRequest, SubnetLoginResponse } from \"../License/types\";\nimport { useAppDispatch } from \"../../../store\";\nimport {\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport GetApiKeyModal from \"./GetApiKeyModal\";\nimport RegisterHelpBox from \"./RegisterHelpBox\";\nimport api from \"../../../common/api\";\n\ninterface IApiKeyRegister {\n registerEndpoint: string;\n}\n\nconst ApiKeyRegister = ({ registerEndpoint }: IApiKeyRegister) => {\n const navigate = useNavigate();\n\n const [showApiKeyModal, setShowApiKeyModal] = useState(false);\n const [apiKey, setApiKey] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [fromModal, setFromModal] = useState(false);\n const dispatch = useAppDispatch();\n\n const onRegister = useCallback(() => {\n if (loading) {\n return;\n }\n setLoading(true);\n let request: SubnetLoginRequest = { apiKey };\n api\n .invoke(\"POST\", registerEndpoint, request)\n .then((resp: SubnetLoginResponse) => {\n setLoading(false);\n if (resp && resp.registered) {\n dispatch(setServerNeedsRestart(true));\n navigate(IAM_PAGES.LICENSE);\n }\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n reset();\n });\n }, [apiKey, dispatch, loading, registerEndpoint, navigate]);\n\n useEffect(() => {\n if (fromModal) {\n onRegister();\n }\n }, [fromModal, onRegister]);\n\n const reset = () => {\n setApiKey(\"\");\n setFromModal(false);\n };\n\n return (\n }\n containerPadding={false}\n withBorders={false}\n helpBox={}\n >\n \n Use your MinIO Subscription Network API Key to register this cluster.\n \n \n ) =>\n setApiKey(event.target.value)\n }\n label=\"API Key\"\n value={apiKey}\n />\n\n \n setShowApiKeyModal(true)}\n label={\"Get from SUBNET\"}\n />\n onRegister()}\n label={\"Register\"}\n />\n \n \n setShowApiKeyModal(false)}\n onSet={(value) => {\n setApiKey(value);\n setFromModal(true);\n }}\n />\n \n );\n};\n\nexport default ApiKeyRegister;\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 { Box, PageLayout, Tabs } from \"mds\";\nimport { SubnetRegTokenResponse } from \"../License/types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { useSelector } from \"react-redux\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { ClusterRegistered, ProxyConfiguration } from \"./utils\";\nimport { fetchLicenseInfo } from \"./registerThunks\";\nimport {\n resetRegisterForm,\n setCurTab,\n setLoading,\n setSubnetRegToken,\n} from \"./registerSlice\";\nimport OfflineRegistration from \"./OfflineRegistration\";\nimport SubnetMFAToken from \"./SubnetMFAToken\";\nimport ClusterRegistrationForm from \"./ClusterRegistrationForm\";\nimport OnlineRegistration from \"./OnlineRegistration\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport api from \"../../../common/api\";\nimport ApiKeyRegister from \"./ApiKeyRegister\";\n\nconst Register = () => {\n const dispatch = useAppDispatch();\n\n const subnetMFAToken = useSelector(\n (state: AppState) => state.register.subnetMFAToken,\n );\n const subnetAccessToken = useSelector(\n (state: AppState) => state.register.subnetAccessToken,\n );\n\n const subnetRegToken = useSelector(\n (state: AppState) => state.register.subnetRegToken,\n );\n const subnetOrganizations = useSelector(\n (state: AppState) => state.register.subnetOrganizations,\n );\n\n const loading = useSelector((state: AppState) => state.register.loading);\n const loadingLicenseInfo = useSelector(\n (state: AppState) => state.register.loadingLicenseInfo,\n );\n const clusterRegistered = useSelector(\n (state: AppState) => state.register.clusterRegistered,\n );\n const licenseInfo = useSelector(\n (state: AppState) => state.register.licenseInfo,\n );\n const curTab = useSelector((state: AppState) => state.register.curTab);\n\n const [initialLicenseLoading, setInitialLicenseLoading] =\n useState(true);\n\n useEffect(() => {\n // when unmounted, reset\n return () => {\n dispatch(resetRegisterForm());\n };\n }, [dispatch]);\n\n useEffect(() => {\n if (curTab === \"simple-tab-2\" && !loading && !subnetRegToken) {\n const fetchSubnetRegToken = () => {\n dispatch(setLoading(true));\n api\n .invoke(\"GET\", \"/api/v1/subnet/registration-token\")\n .then((resp: SubnetRegTokenResponse) => {\n dispatch(setLoading(false));\n if (resp && resp.regToken) {\n dispatch(setSubnetRegToken(resp.regToken));\n }\n })\n .catch((err: ErrorResponseHandler) => {\n console.error(err);\n dispatch(setErrorSnackMessage(err));\n dispatch(setLoading(false));\n });\n };\n fetchSubnetRegToken();\n }\n }, [curTab, loading, subnetRegToken, dispatch]);\n\n useEffect(() => {\n if (initialLicenseLoading) {\n dispatch(fetchLicenseInfo());\n setInitialLicenseLoading(false);\n }\n }, [initialLicenseLoading, setInitialLicenseLoading, dispatch]);\n\n let clusterRegistrationForm: React.ReactElement = ;\n\n if (subnetAccessToken && subnetOrganizations.length > 0) {\n clusterRegistrationForm = ;\n } else if (subnetMFAToken) {\n clusterRegistrationForm = ;\n } else {\n clusterRegistrationForm = ;\n }\n\n const apiKeyRegistration = (\n \n \n {clusterRegistered && licenseInfo ? (\n \n ) : (\n \n )}\n \n \n \n );\n\n const offlineRegistration = ;\n\n const regUi = (\n \n \n {clusterRegistered && licenseInfo ? (\n \n ) : (\n clusterRegistrationForm\n )}\n \n\n {!clusterRegistered && }\n \n );\n\n const loadingUi =
Loading..
;\n const uiToShow = loadingLicenseInfo ? loadingUi : regUi;\n\n useEffect(() => {\n dispatch(setHelpName(\"register\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n }\n />\n\n \n {\n dispatch(setCurTab(newValue));\n }}\n options={[\n {\n tabConfig: {\n label: \"Credentials\",\n id: \"simple-tab-0\",\n },\n content: uiToShow,\n },\n {\n tabConfig: {\n label: \"API Key\",\n id: \"simple-tab-1\",\n },\n content: apiKeyRegistration,\n },\n {\n tabConfig: {\n label: \"Air-Gap\",\n id: \"simple-tab-2\",\n },\n content: offlineRegistration,\n },\n ]}\n />\n \n \n );\n};\n\nexport default Register;\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 { VerifiedIcon, Box, breakPoints } from \"mds\";\n\nconst RegistrationStatusBanner = ({ email = \"\" }: { email?: string }) => {\n return (\n \n \n Register status:\n \n \n \n Registered\n \n \n \n\n \n Registered to:\n {email}\n \n \n );\n};\nexport default RegistrationStatusBanner;\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n"],"names":["ClusterRegistered","_ref","email","_jsxs","Fragment","children","_jsx","RegistrationStatusBanner","Grid","item","xs","sx","marginTop","Box","padding","href","target","ProxyConfiguration","proxyConfigurationCommand","_useState","useState","_useState2","_slicedToArray","displaySubnetProxy","setDisplaySubnetProxy","withBorders","display","alignItems","justifyContent","flexFlow","height","width","SettingsIcon","style","marginLeft","fontWeight","marginBottom","fontSize","InputBox","disabled","id","name","placeholder","onChange","label","value","overlayIcon","CopyIcon","overlayAction","navigator","clipboard","writeText","Switch","checked","event","fetchLicenseInfo","createAsyncThunk","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_","getState","dispatch","state","getSubnetInfo","wrap","_context","prev","next","hasPermission","CONSOLE_UI_RESOURCE","IAM_PAGES_PERMISSIONS","IAM_PAGES","LICENSE","register","loadingLicenseInfo","abrupt","setLoadingLicenseInfo","api","invoke","then","res","setLicenseInfo","setClusterRegistered","catch","err","detailedError","toLowerCase","setErrorSnackMessage","stop","_x","_x2","apply","arguments","callRegister","_ref4","_callee2","args","_ref3","request","_context2","token","account_id","setLoading","setServerNeedsRestart","resetRegisterForm","_x3","_x4","subnetLoginWithMFA","_ref6","_callee3","_ref5","subnetEmail","subnetMFAToken","subnetOTP","_context3","rejectWithValue","loading","username","otp","mfa_token","resp","access_token","organizations","length","accountId","toString","setSubnetAccessToken","setSubnetOrganizations","setSelectedSubnetOrganization","setSubnetOTP","_x5","_x6","subnetLogin","_ref8","_callee4","_ref7","license","subnetPassword","_context4","password","apiKey","registered","setSubnetMFAToken","_x7","_x8","FeatureItem","icon","description","marginRight","className","fontStyle","HelpBox","title","iconComponent","HelpIconFilled","help","CallHomeFeatureIcon","DiagnosticsFeatureIcon","PerformanceFeatureIcon","ExtraFeaturesIcon","useAppDispatch","subnetRegToken","useSelector","clusterRegistered","licenseInfo","offlineRegUrl","concat","licenseKey","setLicenseKey","_useApi","useApi","_useApi2","isSaving","invokeApplyLicenseApi","FormLayout","OfflineRegistrationIcon","helpBox","RegisterHelpBox","containerPadding","flex","gap","TooltipWrapper","tooltip","CopyToClipboard","text","Button","type","color","variant","flexDirection","CommentBox","e","modalStyleUtils","modalButtonBar","onClick","key_values","key","LockIcon","trim","subnetAccessToken","selectedSubnetOrganization","subnetOrganizations","Select","options","map","organization","company","OnlineRegistrationIcon","setSubnetEmail","UsersIcon","setSubnetPassword","preventDefault","window","open","closeModal","onSet","setEmail","_useState3","_useState4","setPassword","_useState5","_useState6","mfaToken","setMfaToken","_useState7","_useState8","invokeApi","isLoading","getCredentialsDialog","getMFADialog","ConfirmDialog","confirmText","isOpen","titleIcon","InfoIcon","cancelText","onConfirm","onClose","confirmButtonProps","hidden","cancelButtonProps","confirmationContent","registerEndpoint","navigate","useNavigate","showApiKeyModal","setShowApiKeyModal","setApiKey","fromModal","setFromModal","onRegister","useCallback","reset","useEffect","GetApiKeyModal","curTab","initialLicenseLoading","setInitialLicenseLoading","regToken","setSubnetRegToken","console","error","clusterRegistrationForm","ClusterRegistrationForm","SubnetMFAToken","OnlineRegistration","apiKeyRegistration","ApiKeyRegister","offlineRegistration","OfflineRegistration","regUi","uiToShow","setHelpName","PageHeaderWrapper","actions","HelpMenu","PageLayout","Tabs","horizontal","currentTabOrPath","onTabClick","newValue","setCurTab","tabConfig","content","_ref$email","position","top","left","backgroundColor","fill","VerifiedIcon","_defineProperty","breakPoints","sm","deselectCurrent","require","clipboardToIE11Formatting","module","exports","debug","message","reselectPrevious","range","selection","success","document","createRange","getSelection","createElement","textContent","ariaHidden","all","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","format","clipboardData","warn","clearData","setData","onCopy","body","appendChild","selectNodeContents","addRange","execCommand","Error","copyKey","test","userAgent","replace","prompt","removeRange","removeAllRanges","removeChild","_typeof","obj","Symbol","iterator","constructor","prototype","Object","defineProperty","_react","_interopRequireDefault","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","_objectSpread","i","source","forEach","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","call","_defineProperties","props","descriptor","configurable","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","result","Super","_getPrototypeOf","NewTarget","this","self","TypeError","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","getPrototypeOf","_React$PureComponent","subClass","superClass","create","_inherits","Constructor","protoProps","staticProps","_super","_this","instance","_classCallCheck","_len","Array","_key","_this$props","elem","Children","only","_this$props2","cloneElement","PureComponent","undefined","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/1516.75dc9a97.chunk.js","mappings":"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","sources":["screens/Console/Support/utils.tsx","screens/Console/Support/registerThunks.ts","screens/Console/Support/RegisterHelpBox.tsx","screens/Console/Support/OfflineRegistration.tsx","screens/Console/Support/SubnetMFAToken.tsx","screens/Console/Support/ClusterRegistrationForm.tsx","screens/Console/Support/OnlineRegistration.tsx","screens/Console/Support/GetApiKeyModal.tsx","screens/Console/Support/ApiKeyRegister.tsx","screens/Console/Support/Register.tsx","screens/Console/Support/RegistrationStatusBanner.tsx","../node_modules/copy-to-clipboard/index.js","../node_modules/react-copy-to-clipboard/lib/Component.js","../node_modules/react-copy-to-clipboard/lib/index.js","../node_modules/toggle-selection/index.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 .\n\nimport React, { Fragment, useState } from \"react\";\nimport { CopyIcon, SettingsIcon, Box, Grid, Switch, InputBox } from \"mds\";\nimport RegistrationStatusBanner from \"./RegistrationStatusBanner\";\n\nexport const ClusterRegistered = ({ email }: { email: string }) => {\n return (\n \n \n \n \n Login to{\" \"}\n \n SUBNET\n {\" \"}\n to avail support for this MinIO cluster\n \n \n \n );\n};\n\nexport const ProxyConfiguration = () => {\n const proxyConfigurationCommand =\n \"mc admin config set {alias} subnet proxy={proxy}\";\n const [displaySubnetProxy, setDisplaySubnetProxy] = useState(false);\n return (\n \n \n \n \n \n
\n Proxy Configuration\n
\n \n \n For airgap/firewalled environments it is possible to{\" \"}\n \n configure a proxy\n {\" \"}\n to connect to SUBNET .\n \n \n {displaySubnetProxy && (\n {}}\n label=\"\"\n value={proxyConfigurationCommand}\n overlayIcon={}\n overlayAction={() =>\n navigator.clipboard.writeText(proxyConfigurationCommand)\n }\n />\n )}\n \n \n \n ) => {\n setDisplaySubnetProxy(event.target.checked);\n }}\n />\n \n \n
\n );\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport {\n resetRegisterForm,\n setClusterRegistered,\n setLicenseInfo,\n setLoading,\n setLoadingLicenseInfo,\n setSelectedSubnetOrganization,\n setSubnetAccessToken,\n setSubnetMFAToken,\n setSubnetOrganizations,\n setSubnetOTP,\n} from \"./registerSlice\";\nimport api from \"../../../common/api\";\nimport {\n SubnetInfo,\n SubnetLoginRequest,\n SubnetLoginResponse,\n SubnetLoginWithMFARequest,\n SubnetRegisterRequest,\n} from \"../License/types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport {\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\nimport { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport { AppState } from \"../../../store\";\nimport { hasPermission } from \"../../../common/SecureComponent\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_PAGES,\n IAM_PAGES_PERMISSIONS,\n} from \"../../../common/SecureComponent/permissions\";\n\nexport const fetchLicenseInfo = createAsyncThunk(\n \"register/fetchLicenseInfo\",\n async (_, { getState, dispatch }) => {\n const state = getState() as AppState;\n\n const getSubnetInfo = hasPermission(\n CONSOLE_UI_RESOURCE,\n IAM_PAGES_PERMISSIONS[IAM_PAGES.LICENSE],\n true,\n );\n\n const loadingLicenseInfo = state.register.loadingLicenseInfo;\n\n if (loadingLicenseInfo) {\n return;\n }\n if (getSubnetInfo) {\n dispatch(setLoadingLicenseInfo(true));\n api\n .invoke(\"GET\", `/api/v1/subnet/info`)\n .then((res: SubnetInfo) => {\n dispatch(setLicenseInfo(res));\n dispatch(setClusterRegistered(true));\n dispatch(setLoadingLicenseInfo(false));\n })\n .catch((err: ErrorResponseHandler) => {\n if (\n err.detailedError.toLowerCase() !==\n \"License is not present\".toLowerCase() &&\n err.detailedError.toLowerCase() !==\n \"license not found\".toLowerCase()\n ) {\n dispatch(setErrorSnackMessage(err));\n }\n dispatch(setClusterRegistered(false));\n dispatch(setLoadingLicenseInfo(false));\n });\n } else {\n dispatch(setLoadingLicenseInfo(false));\n }\n },\n);\n\nexport interface ClassRegisterArgs {\n token: string;\n account_id: string;\n}\n\nexport const callRegister = createAsyncThunk(\n \"register/callRegister\",\n async (args: ClassRegisterArgs, { dispatch }) => {\n const request: SubnetRegisterRequest = {\n token: args.token,\n account_id: args.account_id,\n };\n api\n .invoke(\"POST\", \"/api/v1/subnet/register\", request)\n .then(() => {\n dispatch(setLoading(false));\n dispatch(setServerNeedsRestart(true));\n dispatch(resetRegisterForm());\n dispatch(fetchLicenseInfo());\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n dispatch(setLoading(false));\n });\n },\n);\n\nexport const subnetLoginWithMFA = createAsyncThunk(\n \"register/subnetLoginWithMFA\",\n async (_, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n\n const subnetEmail = state.register.subnetEmail;\n const subnetMFAToken = state.register.subnetMFAToken;\n const subnetOTP = state.register.subnetOTP;\n const loading = state.register.loading;\n\n if (loading) {\n return;\n }\n dispatch(setLoading(true));\n const request: SubnetLoginWithMFARequest = {\n username: subnetEmail,\n otp: subnetOTP,\n mfa_token: subnetMFAToken,\n };\n api\n .invoke(\"POST\", \"/api/v1/subnet/login/mfa\", request)\n .then((resp: SubnetLoginResponse) => {\n dispatch(setLoading(false));\n if (resp && resp.access_token && resp.organizations.length > 0) {\n if (resp.organizations.length === 1) {\n dispatch(\n callRegister({\n token: resp.access_token,\n account_id: resp.organizations[0].accountId.toString(),\n }),\n );\n } else {\n dispatch(setSubnetAccessToken(resp.access_token));\n dispatch(setSubnetOrganizations(resp.organizations));\n dispatch(\n setSelectedSubnetOrganization(\n resp.organizations[0].accountId.toString(),\n ),\n );\n }\n }\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n dispatch(setLoading(false));\n dispatch(setSubnetOTP(\"\"));\n });\n },\n);\n\nexport const subnetLogin = createAsyncThunk(\n \"register/subnetLogin\",\n async (_, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n\n const license = state.register.license;\n const subnetPassword = state.register.subnetPassword;\n const subnetEmail = state.register.subnetEmail;\n const loading = state.register.loading;\n\n if (loading) {\n return;\n }\n dispatch(setLoading(true));\n let request: SubnetLoginRequest = {\n username: subnetEmail,\n password: subnetPassword,\n apiKey: license,\n };\n api\n .invoke(\"POST\", \"/api/v1/subnet/login\", request)\n .then((resp: SubnetLoginResponse) => {\n dispatch(setLoading(false));\n if (resp && resp.registered) {\n dispatch(resetRegisterForm());\n dispatch(fetchLicenseInfo());\n } else if (resp && resp.mfa_token) {\n dispatch(setSubnetMFAToken(resp.mfa_token));\n } else if (resp && resp.access_token && resp.organizations.length > 0) {\n dispatch(setSubnetAccessToken(resp.access_token));\n dispatch(setSubnetOrganizations(resp.organizations));\n dispatch(\n setSelectedSubnetOrganization(\n resp.organizations[0].accountId.toString(),\n ),\n );\n }\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n dispatch(setLoading(false));\n dispatch(resetRegisterForm());\n });\n },\n);\n","// This file is part of MinIO Console Server\n// Copyright (c) 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 {\n CallHomeFeatureIcon,\n DiagnosticsFeatureIcon,\n ExtraFeaturesIcon,\n HelpIconFilled,\n PerformanceFeatureIcon,\n Box,\n HelpBox,\n} from \"mds\";\n\nconst FeatureItem = ({\n icon,\n description,\n}: {\n icon: any;\n description: string | React.ReactNode;\n}) => {\n return (\n \n {icon}{\" \"}\n \n {description}\n \n \n );\n};\nconst RegisterHelpBox = () => {\n return (\n }\n help={\n \n \n Registering this cluster with the MinIO Subscription Network\n (SUBNET) provides the following benefits in addition to the\n commercial license and SLA backed support.\n \n\n \n }\n description={`Call Home Monitoring`}\n />\n }\n description={`Health Diagnostics`}\n />\n }\n description={`Performance Analysis`}\n />\n }\n description={\n \n More Features\n \n }\n />\n \n \n }\n />\n );\n};\n\nexport default RegisterHelpBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport {\n Box,\n Button,\n CommentBox,\n CopyIcon,\n FormLayout,\n OfflineRegistrationIcon,\n} from \"mds\";\nimport { ClusterRegistered } from \"./utils\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { useSelector } from \"react-redux\";\nimport { fetchLicenseInfo } from \"./registerThunks\";\nimport {\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport RegisterHelpBox from \"./RegisterHelpBox\";\nimport useApi from \"../Common/Hooks/useApi\";\n\nconst OfflineRegistration = () => {\n const dispatch = useAppDispatch();\n const subnetRegToken = useSelector(\n (state: AppState) => state.register.subnetRegToken,\n );\n const clusterRegistered = useSelector(\n (state: AppState) => state.register.clusterRegistered,\n );\n const licenseInfo = useSelector(\n (state: AppState) => state.register.licenseInfo,\n );\n\n const offlineRegUrl = `https://subnet.min.io/cluster/register?token=${subnetRegToken}`;\n\n const [licenseKey, setLicenseKey] = useState(\"\");\n\n const [isSaving, invokeApplyLicenseApi] = useApi(\n () => {\n dispatch(fetchLicenseInfo());\n dispatch(setServerNeedsRestart(true));\n },\n (err) => {\n dispatch(setErrorSnackMessage(err));\n },\n );\n\n const applyAirGapLicense = () => {\n invokeApplyLicenseApi(\"PUT\", `/api/v1/configs/subnet`, {\n key_values: [{ key: \"license\", value: licenseKey }],\n });\n };\n\n return (\n \n \n {clusterRegistered && licenseInfo ? (\n \n ) : (\n }\n helpBox={}\n withBorders={false}\n containerPadding={false}\n >\n \n \n \n \n Click on the link to register this cluster in SUBNET and get\n a License Key for this Air-Gap deployment\n \n \n\n \n \n https://subnet.min.io/cluster/register\n \n\n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n\n \n Note: If this machine does not have internet connection, Copy\n paste the following URL in a browser where you access SUBNET\n and follow the instructions to complete the registration\n \n\n \n \n {\n setLicenseKey(e.target.value);\n }}\n />\n \n \n \n \n \n \n \n )}\n \n \n );\n};\n\nexport default OfflineRegistration;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box, Button, FormLayout, InputBox, LockIcon } from \"mds\";\nimport { useSelector } from \"react-redux\";\nimport { setSubnetOTP } from \"./registerSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { subnetLoginWithMFA } from \"./registerThunks\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport RegisterHelpBox from \"./RegisterHelpBox\";\n\nconst SubnetMFAToken = () => {\n const dispatch = useAppDispatch();\n\n const subnetMFAToken = useSelector(\n (state: AppState) => state.register.subnetMFAToken,\n );\n const subnetOTP = useSelector((state: AppState) => state.register.subnetOTP);\n const loading = useSelector((state: AppState) => state.register.loading);\n\n return (\n }\n withBorders={false}\n containerPadding={false}\n >\n \n Please enter the 6-digit verification code that was sent to your email\n address. This code will be valid for 5 minutes.\n \n\n \n }\n id=\"subnet-otp\"\n name=\"subnet-otp\"\n onChange={(event: React.ChangeEvent) =>\n dispatch(setSubnetOTP(event.target.value))\n }\n placeholder=\"\"\n label=\"\"\n value={subnetOTP}\n />\n \n \n dispatch(subnetLoginWithMFA())}\n disabled={\n loading ||\n subnetOTP.trim().length === 0 ||\n subnetMFAToken.trim().length === 0\n }\n variant=\"callAction\"\n label={\"Verify\"}\n />\n \n \n );\n};\nexport default SubnetMFAToken;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box, Button, FormLayout, Select } from \"mds\";\nimport { setLoading, setSelectedSubnetOrganization } from \"./registerSlice\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { callRegister } from \"./registerThunks\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport RegisterHelpBox from \"./RegisterHelpBox\";\n\nconst ClusterRegistrationForm = () => {\n const dispatch = useAppDispatch();\n\n const subnetAccessToken = useSelector(\n (state: AppState) => state.register.subnetAccessToken,\n );\n const selectedSubnetOrganization = useSelector(\n (state: AppState) => state.register.selectedSubnetOrganization,\n );\n const subnetOrganizations = useSelector(\n (state: AppState) => state.register.subnetOrganizations,\n );\n const loading = useSelector((state: AppState) => state.register.loading);\n\n return (\n }\n >\n \n dispatch(setSelectedSubnetOrganization(value as string))\n }\n label=\"Select an organization\"\n value={selectedSubnetOrganization}\n options={subnetOrganizations.map((organization) => ({\n label: organization.company,\n value: organization.accountId.toString(),\n }))}\n />\n \n () => {\n if (loading) {\n return;\n }\n dispatch(setLoading(true));\n if (subnetAccessToken && selectedSubnetOrganization) {\n dispatch(\n callRegister({\n token: subnetAccessToken,\n account_id: selectedSubnetOrganization,\n }),\n );\n }\n }}\n disabled={loading || subnetAccessToken.trim().length === 0}\n variant=\"callAction\"\n label={\"Register\"}\n />\n \n \n );\n};\n\nexport default ClusterRegistrationForm;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport {\n Box,\n Button,\n FormLayout,\n InputBox,\n OnlineRegistrationIcon,\n UsersIcon,\n} from \"mds\";\nimport RegisterHelpBox from \"./RegisterHelpBox\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setSubnetEmail, setSubnetPassword } from \"./registerSlice\";\nimport { subnetLogin } from \"./registerThunks\";\n\nconst OnlineRegistration = () => {\n const dispatch = useAppDispatch();\n\n const subnetPassword = useSelector(\n (state: AppState) => state.register.subnetPassword,\n );\n const subnetEmail = useSelector(\n (state: AppState) => state.register.subnetEmail,\n );\n const loading = useSelector((state: AppState) => state.register.loading);\n\n return (\n }\n title={\"Online activation of MinIO Subscription Network License\"}\n withBorders={false}\n containerPadding={false}\n helpBox={}\n >\n \n Use your MinIO Subscription Network login credentials to register this\n cluster.\n \n \n ) =>\n dispatch(setSubnetEmail(event.target.value))\n }\n label=\"Email\"\n value={subnetEmail}\n overlayIcon={}\n />\n ) =>\n dispatch(setSubnetPassword(event.target.value))\n }\n label=\"Password\"\n type={\"password\"}\n value={subnetPassword}\n />\n\n \n {\n e.preventDefault();\n window.open(`https://min.io/signup?ref=con`, \"_blank\");\n }}\n label={\"Sign up\"}\n />\n dispatch(subnetLogin())}\n label={\"Register\"}\n />\n \n \n \n );\n};\n\nexport default OnlineRegistration;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { Box, FormLayout, InfoIcon, InputBox, LockIcon, UsersIcon } from \"mds\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { useAppDispatch } from \"../../../store\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport useApi from \"../Common/Hooks/useApi\";\n\ninterface IGetApiKeyModalProps {\n open: boolean;\n closeModal: () => void;\n onSet: (apiKey: string) => void;\n}\n\nconst GetApiKeyModal = ({ open, closeModal, onSet }: IGetApiKeyModalProps) => {\n const dispatch = useAppDispatch();\n const [email, setEmail] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [mfaToken, setMfaToken] = useState(\"\");\n const [subnetOTP, setSubnetOTP] = useState(\"\");\n\n const onError = (err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n closeModal();\n setEmail(\"\");\n setPassword(\"\");\n setMfaToken(\"\");\n setSubnetOTP(\"\");\n };\n\n const onSuccess = (res: any) => {\n if (res.mfa_token) {\n setMfaToken(res.mfa_token);\n } else if (res.access_token) {\n invokeApi(\"GET\", `/api/v1/subnet/apikey?token=${res.access_token}`);\n } else {\n onSet(res.apiKey);\n closeModal();\n }\n };\n\n const [isLoading, invokeApi] = useApi(onSuccess, onError);\n\n const onConfirm = () => {\n if (mfaToken !== \"\") {\n invokeApi(\"POST\", \"/api/v1/subnet/login/mfa\", {\n username: email,\n otp: subnetOTP,\n mfa_token: mfaToken,\n });\n } else {\n invokeApi(\"POST\", \"/api/v1/subnet/login\", { username: email, password });\n }\n };\n\n const getDialogContent = () => {\n if (mfaToken === \"\") {\n return getCredentialsDialog();\n }\n return getMFADialog();\n };\n\n const getCredentialsDialog = () => {\n return (\n \n ) =>\n setEmail(event.target.value)\n }\n label=\"Email\"\n value={email}\n overlayIcon={}\n />\n ) =>\n setPassword(event.target.value)\n }\n label=\"Password\"\n type={\"password\"}\n value={password}\n />\n \n );\n };\n\n const getMFADialog = () => {\n return (\n \n \n \n Two-Factor Authentication\n \n\n \n Please enter the 6-digit verification code that was sent to your\n email address. This code will be valid for 5 minutes.\n \n\n \n }\n id=\"subnet-otp\"\n name=\"subnet-otp\"\n onChange={(event: React.ChangeEvent) =>\n setSubnetOTP(event.target.value)\n }\n placeholder=\"\"\n label=\"\"\n value={subnetOTP}\n />\n \n \n \n );\n };\n\n return open ? (\n }\n isLoading={isLoading}\n cancelText={\"Cancel\"}\n onConfirm={onConfirm}\n onClose={closeModal}\n confirmButtonProps={{\n variant: \"callAction\",\n disabled: !email || !password || isLoading,\n hidden: true,\n }}\n cancelButtonProps={{\n disabled: isLoading,\n }}\n confirmationContent={getDialogContent()}\n />\n ) : null;\n};\n\nexport default GetApiKeyModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { Box, Button, FormLayout, InputBox, OnlineRegistrationIcon } from \"mds\";\nimport { useNavigate } from \"react-router-dom\";\nimport { SubnetLoginRequest, SubnetLoginResponse } from \"../License/types\";\nimport { useAppDispatch } from \"../../../store\";\nimport {\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport GetApiKeyModal from \"./GetApiKeyModal\";\nimport RegisterHelpBox from \"./RegisterHelpBox\";\nimport api from \"../../../common/api\";\n\ninterface IApiKeyRegister {\n registerEndpoint: string;\n}\n\nconst ApiKeyRegister = ({ registerEndpoint }: IApiKeyRegister) => {\n const navigate = useNavigate();\n\n const [showApiKeyModal, setShowApiKeyModal] = useState(false);\n const [apiKey, setApiKey] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [fromModal, setFromModal] = useState(false);\n const dispatch = useAppDispatch();\n\n const onRegister = useCallback(() => {\n if (loading) {\n return;\n }\n setLoading(true);\n let request: SubnetLoginRequest = { apiKey };\n api\n .invoke(\"POST\", registerEndpoint, request)\n .then((resp: SubnetLoginResponse) => {\n setLoading(false);\n if (resp && resp.registered) {\n dispatch(setServerNeedsRestart(true));\n navigate(IAM_PAGES.LICENSE);\n }\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n reset();\n });\n }, [apiKey, dispatch, loading, registerEndpoint, navigate]);\n\n useEffect(() => {\n if (fromModal) {\n onRegister();\n }\n }, [fromModal, onRegister]);\n\n const reset = () => {\n setApiKey(\"\");\n setFromModal(false);\n };\n\n return (\n }\n containerPadding={false}\n withBorders={false}\n helpBox={}\n >\n \n Use your MinIO Subscription Network API Key to register this cluster.\n \n \n ) =>\n setApiKey(event.target.value)\n }\n label=\"API Key\"\n value={apiKey}\n />\n\n \n setShowApiKeyModal(true)}\n label={\"Get from SUBNET\"}\n />\n onRegister()}\n label={\"Register\"}\n />\n \n \n setShowApiKeyModal(false)}\n onSet={(value) => {\n setApiKey(value);\n setFromModal(true);\n }}\n />\n \n );\n};\n\nexport default ApiKeyRegister;\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 { Box, PageLayout, Tabs } from \"mds\";\nimport { SubnetRegTokenResponse } from \"../License/types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { useSelector } from \"react-redux\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { ClusterRegistered, ProxyConfiguration } from \"./utils\";\nimport { fetchLicenseInfo } from \"./registerThunks\";\nimport {\n resetRegisterForm,\n setCurTab,\n setLoading,\n setSubnetRegToken,\n} from \"./registerSlice\";\nimport OfflineRegistration from \"./OfflineRegistration\";\nimport SubnetMFAToken from \"./SubnetMFAToken\";\nimport ClusterRegistrationForm from \"./ClusterRegistrationForm\";\nimport OnlineRegistration from \"./OnlineRegistration\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport api from \"../../../common/api\";\nimport ApiKeyRegister from \"./ApiKeyRegister\";\n\nconst Register = () => {\n const dispatch = useAppDispatch();\n\n const subnetMFAToken = useSelector(\n (state: AppState) => state.register.subnetMFAToken,\n );\n const subnetAccessToken = useSelector(\n (state: AppState) => state.register.subnetAccessToken,\n );\n\n const subnetRegToken = useSelector(\n (state: AppState) => state.register.subnetRegToken,\n );\n const subnetOrganizations = useSelector(\n (state: AppState) => state.register.subnetOrganizations,\n );\n\n const loading = useSelector((state: AppState) => state.register.loading);\n const loadingLicenseInfo = useSelector(\n (state: AppState) => state.register.loadingLicenseInfo,\n );\n const clusterRegistered = useSelector(\n (state: AppState) => state.register.clusterRegistered,\n );\n const licenseInfo = useSelector(\n (state: AppState) => state.register.licenseInfo,\n );\n const curTab = useSelector((state: AppState) => state.register.curTab);\n\n const [initialLicenseLoading, setInitialLicenseLoading] =\n useState(true);\n\n useEffect(() => {\n // when unmounted, reset\n return () => {\n dispatch(resetRegisterForm());\n };\n }, [dispatch]);\n\n useEffect(() => {\n if (curTab === \"simple-tab-2\" && !loading && !subnetRegToken) {\n const fetchSubnetRegToken = () => {\n dispatch(setLoading(true));\n api\n .invoke(\"GET\", \"/api/v1/subnet/registration-token\")\n .then((resp: SubnetRegTokenResponse) => {\n dispatch(setLoading(false));\n if (resp && resp.regToken) {\n dispatch(setSubnetRegToken(resp.regToken));\n }\n })\n .catch((err: ErrorResponseHandler) => {\n console.error(err);\n dispatch(setErrorSnackMessage(err));\n dispatch(setLoading(false));\n });\n };\n fetchSubnetRegToken();\n }\n }, [curTab, loading, subnetRegToken, dispatch]);\n\n useEffect(() => {\n if (initialLicenseLoading) {\n dispatch(fetchLicenseInfo());\n setInitialLicenseLoading(false);\n }\n }, [initialLicenseLoading, setInitialLicenseLoading, dispatch]);\n\n let clusterRegistrationForm: React.ReactElement = ;\n\n if (subnetAccessToken && subnetOrganizations.length > 0) {\n clusterRegistrationForm = ;\n } else if (subnetMFAToken) {\n clusterRegistrationForm = ;\n } else {\n clusterRegistrationForm = ;\n }\n\n const apiKeyRegistration = (\n \n \n {clusterRegistered && licenseInfo ? (\n \n ) : (\n \n )}\n \n \n \n );\n\n const offlineRegistration = ;\n\n const regUi = (\n \n \n {clusterRegistered && licenseInfo ? (\n \n ) : (\n clusterRegistrationForm\n )}\n \n\n {!clusterRegistered && }\n \n );\n\n const loadingUi =
Loading..
;\n const uiToShow = loadingLicenseInfo ? loadingUi : regUi;\n\n useEffect(() => {\n dispatch(setHelpName(\"register\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n }\n />\n\n \n {\n dispatch(setCurTab(newValue));\n }}\n options={[\n {\n tabConfig: {\n label: \"Credentials\",\n id: \"simple-tab-0\",\n },\n content: uiToShow,\n },\n {\n tabConfig: {\n label: \"API Key\",\n id: \"simple-tab-1\",\n },\n content: apiKeyRegistration,\n },\n {\n tabConfig: {\n label: \"Air-Gap\",\n id: \"simple-tab-2\",\n },\n content: offlineRegistration,\n },\n ]}\n />\n \n \n );\n};\n\nexport default Register;\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 { VerifiedIcon, Box, breakPoints } from \"mds\";\n\nconst RegistrationStatusBanner = ({ email = \"\" }: { email?: string }) => {\n return (\n \n \n Register status:\n \n \n \n Registered\n \n \n \n\n \n Registered to:\n {email}\n \n \n );\n};\nexport default RegistrationStatusBanner;\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n"],"names":["ClusterRegistered","_ref","email","_jsxs","Fragment","children","_jsx","RegistrationStatusBanner","Grid","item","xs","sx","marginTop","Box","padding","href","target","ProxyConfiguration","proxyConfigurationCommand","_useState","useState","_useState2","_slicedToArray","displaySubnetProxy","setDisplaySubnetProxy","withBorders","display","alignItems","justifyContent","flexFlow","height","width","SettingsIcon","style","marginLeft","fontWeight","marginBottom","fontSize","InputBox","disabled","id","name","placeholder","onChange","label","value","overlayIcon","CopyIcon","overlayAction","navigator","clipboard","writeText","Switch","checked","event","fetchLicenseInfo","createAsyncThunk","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_","getState","dispatch","state","getSubnetInfo","wrap","_context","prev","next","hasPermission","CONSOLE_UI_RESOURCE","IAM_PAGES_PERMISSIONS","IAM_PAGES","LICENSE","register","loadingLicenseInfo","abrupt","setLoadingLicenseInfo","api","invoke","then","res","setLicenseInfo","setClusterRegistered","catch","err","detailedError","toLowerCase","setErrorSnackMessage","stop","_x","_x2","apply","arguments","callRegister","_ref4","_callee2","args","_ref3","request","_context2","token","account_id","setLoading","setServerNeedsRestart","resetRegisterForm","_x3","_x4","subnetLoginWithMFA","_ref6","_callee3","_ref5","subnetEmail","subnetMFAToken","subnetOTP","_context3","rejectWithValue","loading","username","otp","mfa_token","resp","access_token","organizations","length","accountId","toString","setSubnetAccessToken","setSubnetOrganizations","setSelectedSubnetOrganization","setSubnetOTP","_x5","_x6","subnetLogin","_ref8","_callee4","_ref7","license","subnetPassword","_context4","password","apiKey","registered","setSubnetMFAToken","_x7","_x8","FeatureItem","icon","description","marginRight","className","fontStyle","HelpBox","title","iconComponent","HelpIconFilled","help","CallHomeFeatureIcon","DiagnosticsFeatureIcon","PerformanceFeatureIcon","ExtraFeaturesIcon","useAppDispatch","subnetRegToken","useSelector","clusterRegistered","licenseInfo","offlineRegUrl","concat","licenseKey","setLicenseKey","_useApi","useApi","_useApi2","isSaving","invokeApplyLicenseApi","FormLayout","OfflineRegistrationIcon","helpBox","RegisterHelpBox","containerPadding","flex","gap","TooltipWrapper","tooltip","CopyToClipboard","text","Button","type","color","variant","flexDirection","CommentBox","e","modalStyleUtils","modalButtonBar","onClick","key_values","key","LockIcon","trim","subnetAccessToken","selectedSubnetOrganization","subnetOrganizations","Select","options","map","organization","company","OnlineRegistrationIcon","setSubnetEmail","UsersIcon","setSubnetPassword","preventDefault","window","open","closeModal","onSet","setEmail","_useState3","_useState4","setPassword","_useState5","_useState6","mfaToken","setMfaToken","_useState7","_useState8","invokeApi","isLoading","getCredentialsDialog","getMFADialog","ConfirmDialog","confirmText","isOpen","titleIcon","InfoIcon","cancelText","onConfirm","onClose","confirmButtonProps","hidden","cancelButtonProps","confirmationContent","registerEndpoint","navigate","useNavigate","showApiKeyModal","setShowApiKeyModal","setApiKey","fromModal","setFromModal","onRegister","useCallback","reset","useEffect","GetApiKeyModal","curTab","initialLicenseLoading","setInitialLicenseLoading","regToken","setSubnetRegToken","console","error","clusterRegistrationForm","ClusterRegistrationForm","SubnetMFAToken","OnlineRegistration","apiKeyRegistration","ApiKeyRegister","offlineRegistration","OfflineRegistration","regUi","uiToShow","setHelpName","PageHeaderWrapper","actions","HelpMenu","PageLayout","Tabs","horizontal","currentTabOrPath","onTabClick","newValue","setCurTab","tabConfig","content","_ref$email","position","top","left","backgroundColor","fill","VerifiedIcon","_defineProperty","breakPoints","sm","deselectCurrent","require","clipboardToIE11Formatting","module","exports","debug","message","reselectPrevious","range","selection","success","document","createRange","getSelection","createElement","textContent","ariaHidden","all","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","format","clipboardData","warn","clearData","setData","onCopy","body","appendChild","selectNodeContents","addRange","execCommand","Error","copyKey","test","userAgent","replace","prompt","removeRange","removeAllRanges","removeChild","_typeof","obj","Symbol","iterator","constructor","prototype","Object","defineProperty","_react","_interopRequireDefault","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","_objectSpread","i","source","forEach","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","call","_defineProperties","props","descriptor","configurable","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","result","Super","_getPrototypeOf","NewTarget","this","self","TypeError","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","getPrototypeOf","_React$PureComponent","subClass","superClass","create","_inherits","Constructor","protoProps","staticProps","_super","_this","instance","_classCallCheck","_len","Array","_key","_this$props","elem","Children","only","_this$props2","cloneElement","PureComponent","undefined","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/1520.8019c157.chunk.js b/portal-ui/build/static/js/1520.8019c157.chunk.js new file mode 100644 index 0000000000..3af70e5ced --- /dev/null +++ b/portal-ui/build/static/js/1520.8019c157.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1520],{85523:function(e,o,r){r.d(o,{Z:function(){return S}});var n=r(4942),t=r(63366),a=r(87462),i=r(72791),c=r(63733),l=r(94419),s=r(52930),u=r(1582),d=r(20890),p=r(14036),f=r(66934),m=r(31402),v=r(75878),h=r(21217);function Z(e){return(0,h.Z)("MuiFormControlLabel",e)}var b=(0,v.Z)("MuiFormControlLabel",["root","labelPlacementStart","labelPlacementTop","labelPlacementBottom","disabled","label","error","required","asterisk"]),g=r(76147),k=r(80184),y=["checked","className","componentsProps","control","disabled","disableTypography","inputRef","label","labelPlacement","name","onChange","required","slotProps","value"],w=(0,f.ZP)("label",{name:"MuiFormControlLabel",slot:"Root",overridesResolver:function(e,o){var r=e.ownerState;return[(0,n.Z)({},"& .".concat(b.label),o.label),o.root,o["labelPlacement".concat((0,p.Z)(r.labelPlacement))]]}})((function(e){var o=e.theme,r=e.ownerState;return(0,a.Z)((0,n.Z)({display:"inline-flex",alignItems:"center",cursor:"pointer",verticalAlign:"middle",WebkitTapHighlightColor:"transparent",marginLeft:-11,marginRight:16},"&.".concat(b.disabled),{cursor:"default"}),"start"===r.labelPlacement&&{flexDirection:"row-reverse",marginLeft:16,marginRight:-11},"top"===r.labelPlacement&&{flexDirection:"column-reverse",marginLeft:16},"bottom"===r.labelPlacement&&{flexDirection:"column",marginLeft:16},(0,n.Z)({},"& .".concat(b.label),(0,n.Z)({},"&.".concat(b.disabled),{color:(o.vars||o).palette.text.disabled})))})),x=(0,f.ZP)("span",{name:"MuiFormControlLabel",slot:"Asterisk",overridesResolver:function(e,o){return o.asterisk}})((function(e){var o=e.theme;return(0,n.Z)({},"&.".concat(b.error),{color:(o.vars||o).palette.error.main})})),S=i.forwardRef((function(e,o){var r,n,f=(0,m.Z)({props:e,name:"MuiFormControlLabel"}),v=f.className,h=f.componentsProps,b=void 0===h?{}:h,S=f.control,C=f.disabled,P=f.disableTypography,R=f.label,F=f.labelPlacement,N=void 0===F?"end":F,j=f.required,M=f.slotProps,z=void 0===M?{}:M,B=(0,t.Z)(f,y),q=(0,s.Z)(),I=null!=(r=null!=C?C:S.props.disabled)?r:null==q?void 0:q.disabled,L=null!=j?j:S.props.required,G={disabled:I,required:L};["checked","name","onChange","value","inputRef"].forEach((function(e){"undefined"===typeof S.props[e]&&"undefined"!==typeof f[e]&&(G[e]=f[e])}));var O=(0,g.Z)({props:f,muiFormControl:q,states:["error"]}),E=(0,a.Z)({},f,{disabled:I,labelPlacement:N,required:L,error:O.error}),T=function(e){var o=e.classes,r=e.disabled,n=e.labelPlacement,t=e.error,a=e.required,i={root:["root",r&&"disabled","labelPlacement".concat((0,p.Z)(n)),t&&"error",a&&"required"],label:["label",r&&"disabled"],asterisk:["asterisk",t&&"error"]};return(0,l.Z)(i,Z,o)}(E),A=null!=(n=z.typography)?n:b.typography,D=R;return null==D||D.type===d.Z||P||(D=(0,k.jsx)(d.Z,(0,a.Z)({component:"span"},A,{className:(0,c.Z)(T.label,null==A?void 0:A.className),children:D}))),(0,k.jsxs)(w,(0,a.Z)({className:(0,c.Z)(T.root,v),ownerState:E,ref:o},B,{children:[i.cloneElement(S,G),L?(0,k.jsxs)(u.Z,{direction:"row",alignItems:"center",children:[D,(0,k.jsxs)(x,{ownerState:E,"aria-hidden":!0,className:T.asterisk,children:["\u2009","*"]})]}):D]}))}))},61419:function(e,o,r){r.d(o,{Z:function(){return z}});var n=r(4942),t=r(63366),a=r(87462),i=r(72791),c=r(63733),l=r(94419),s=r(12065),u=r(97278),d=r(31402),p=r(76189),f=r(80184),m=(0,p.Z)((0,f.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"RadioButtonUnchecked"),v=(0,p.Z)((0,f.jsx)("path",{d:"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z"}),"RadioButtonChecked"),h=r(66934),Z=(0,h.ZP)("span")({position:"relative",display:"flex"}),b=(0,h.ZP)(m)({transform:"scale(1)"}),g=(0,h.ZP)(v)((function(e){var o=e.theme,r=e.ownerState;return(0,a.Z)({left:0,position:"absolute",transform:"scale(0)",transition:o.transitions.create("transform",{easing:o.transitions.easing.easeIn,duration:o.transitions.duration.shortest})},r.checked&&{transform:"scale(1)",transition:o.transitions.create("transform",{easing:o.transitions.easing.easeOut,duration:o.transitions.duration.shortest})})}));var k=function(e){var o=e.checked,r=void 0!==o&&o,n=e.classes,t=void 0===n?{}:n,i=e.fontSize,c=(0,a.Z)({},e,{checked:r});return(0,f.jsxs)(Z,{className:t.root,ownerState:c,children:[(0,f.jsx)(b,{fontSize:i,className:t.background,ownerState:c}),(0,f.jsx)(g,{fontSize:i,className:t.dot,ownerState:c})]})},y=r(14036),w=r(31260),x=r(18672);var S=r(75878),C=r(21217);function P(e){return(0,C.Z)("MuiRadio",e)}var R=(0,S.Z)("MuiRadio",["root","checked","disabled","colorPrimary","colorSecondary","sizeSmall"]),F=["checked","checkedIcon","color","icon","name","onChange","size","className"],N=(0,h.ZP)(u.Z,{shouldForwardProp:function(e){return(0,h.FO)(e)||"classes"===e},name:"MuiRadio",slot:"Root",overridesResolver:function(e,o){var r=e.ownerState;return[o.root,o["color".concat((0,y.Z)(r.color))]]}})((function(e){var o=e.theme,r=e.ownerState;return(0,a.Z)({color:(o.vars||o).palette.text.secondary},!r.disableRipple&&{"&:hover":{backgroundColor:o.vars?"rgba(".concat("default"===r.color?o.vars.palette.action.activeChannel:o.vars.palette[r.color].mainChannel," / ").concat(o.vars.palette.action.hoverOpacity,")"):(0,s.Fq)("default"===r.color?o.palette.action.active:o.palette[r.color].main,o.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"default"!==r.color&&(0,n.Z)({},"&.".concat(R.checked),{color:(o.vars||o).palette[r.color].main}),(0,n.Z)({},"&.".concat(R.disabled),{color:(o.vars||o).palette.action.disabled}))}));var j=(0,f.jsx)(k,{checked:!0}),M=(0,f.jsx)(k,{}),z=i.forwardRef((function(e,o){var r,n,s,u,p=(0,d.Z)({props:e,name:"MuiRadio"}),m=p.checked,v=p.checkedIcon,h=void 0===v?j:v,Z=p.color,b=void 0===Z?"primary":Z,g=p.icon,k=void 0===g?M:g,S=p.name,C=p.onChange,R=p.size,z=void 0===R?"medium":R,B=p.className,q=(0,t.Z)(p,F),I=(0,a.Z)({},p,{color:b,size:z}),L=function(e){var o=e.classes,r=e.color,n=e.size,t={root:["root","color".concat((0,y.Z)(r)),"medium"!==n&&"size".concat((0,y.Z)(n))]};return(0,a.Z)({},o,(0,l.Z)(t,P,o))}(I),G=i.useContext(x.Z),O=m,E=(0,w.Z)(C,G&&G.onChange),T=S;return G&&("undefined"===typeof O&&(s=G.value,O="object"===typeof(u=p.value)&&null!==u?s===u:String(s)===String(u)),"undefined"===typeof T&&(T=G.name)),(0,f.jsx)(N,(0,a.Z)({type:"radio",icon:i.cloneElement(k,{fontSize:null!=(r=M.props.fontSize)?r:z}),checkedIcon:i.cloneElement(h,{fontSize:null!=(n=j.props.fontSize)?n:z}),ownerState:I,classes:L,name:T,checked:O,onChange:E,ref:o,className:(0,c.Z)(L.root,B)},q))}))},10765:function(e,o,r){r.d(o,{Z:function(){return C}});var n=r(29439),t=r(87462),a=r(63366),i=r(72791),c=r(63733),l=r(94419),s=r(66934),u=r(31402),d=r(75878),p=r(21217);function f(e){return(0,p.Z)("MuiFormGroup",e)}(0,d.Z)("MuiFormGroup",["root","row","error"]);var m=r(52930),v=r(76147),h=r(80184),Z=["className","row"],b=(0,s.ZP)("div",{name:"MuiFormGroup",slot:"Root",overridesResolver:function(e,o){var r=e.ownerState;return[o.root,r.row&&o.row]}})((function(e){var o=e.ownerState;return(0,t.Z)({display:"flex",flexDirection:"column",flexWrap:"wrap"},o.row&&{flexDirection:"row"})})),g=i.forwardRef((function(e,o){var r=(0,u.Z)({props:e,name:"MuiFormGroup"}),n=r.className,i=r.row,s=void 0!==i&&i,d=(0,a.Z)(r,Z),p=(0,m.Z)(),g=(0,v.Z)({props:r,muiFormControl:p,states:["error"]}),k=(0,t.Z)({},r,{row:s,error:g.error}),y=function(e){var o=e.classes,r={root:["root",e.row&&"row",e.error&&"error"]};return(0,l.Z)(r,f,o)}(k);return(0,h.jsx)(b,(0,t.Z)({className:(0,c.Z)(y.root,n),ownerState:k,ref:o},d))})),k=r(42071),y=r(98278),w=r(18672),x=r(67384),S=["actions","children","defaultValue","name","onChange","value"],C=i.forwardRef((function(e,o){var r=e.actions,c=e.children,l=e.defaultValue,s=e.name,u=e.onChange,d=e.value,p=(0,a.Z)(e,S),f=i.useRef(null),m=(0,y.Z)({controlled:d,default:l,name:"RadioGroup"}),v=(0,n.Z)(m,2),Z=v[0],b=v[1];i.useImperativeHandle(r,(function(){return{focus:function(){var e=f.current.querySelector("input:not(:disabled):checked");e||(e=f.current.querySelector("input:not(:disabled)")),e&&e.focus()}}}),[]);var C=(0,k.Z)(o,f),P=(0,x.Z)(s),R=i.useMemo((function(){return{name:P,onChange:function(e){b(e.target.value),u&&u(e,e.target.value)},value:Z}}),[P,u,b,Z]);return(0,h.jsx)(w.Z.Provider,{value:R,children:(0,h.jsx)(g,(0,t.Z)({role:"radiogroup",ref:C},p,{children:c}))})}))},18672:function(e,o,r){var n=r(72791).createContext(void 0);o.Z=n},1582:function(e,o,r){r.d(o,{Z:function(){return R}});var n=r(4942),t=r(63366),a=r(87462),i=r(72791),c=r(63733),l=r(82466),s=r(94419),u=r(21217),d=(0,r(44046).ZP)(),p=r(86083),f=r(78519),m=r(85080),v=r(51184),h=r(45682),Z=r(80184),b=["component","direction","spacing","divider","children","className","useFlexGap"],g=(0,m.Z)(),k=d("div",{name:"MuiStack",slot:"Root",overridesResolver:function(e,o){return o.root}});function y(e){return(0,p.Z)({props:e,name:"MuiStack",defaultTheme:g})}function w(e,o){var r=i.Children.toArray(e).filter(Boolean);return r.reduce((function(e,n,t){return e.push(n),t0?s[r[o-1]]:"column";s[e]=n}}));t=(0,l.Z)(t,(0,v.k9)({theme:r},u,(function(e,r){return o.useFlexGap?{gap:(0,h.NA)(i,e)}:{"& > :not(style):not(style)":{margin:0},"& > :not(style) ~ :not(style)":(0,n.Z)({},"margin".concat((t=r?s[r]:o.direction,{row:"Left","row-reverse":"Right",column:"Top","column-reverse":"Bottom"}[t])),(0,h.NA)(i,e))};var t})))}return t=(0,v.dt)(r.breakpoints,t)};var S=r(66934),C=r(31402),P=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=e.createStyledComponent,r=void 0===o?k:o,n=e.useThemeProps,l=void 0===n?y:n,d=e.componentName,p=void 0===d?"MuiStack":d,m=r(x),v=i.forwardRef((function(e,o){var r=l(e),n=(0,f.Z)(r),i=n.component,d=void 0===i?"div":i,v=n.direction,h=void 0===v?"column":v,g=n.spacing,k=void 0===g?0:g,y=n.divider,x=n.children,S=n.className,C=n.useFlexGap,P=void 0!==C&&C,R=(0,t.Z)(n,b),F={direction:h,spacing:k,useFlexGap:P},N=(0,s.Z)({root:["root"]},(function(e){return(0,u.Z)(p,e)}),{});return(0,Z.jsx)(m,(0,a.Z)({as:d,ownerState:F,ref:o,className:(0,c.Z)(N.root,S)},R,{children:y?w(x,y):x}))}));return v}({createStyledComponent:(0,S.ZP)("div",{name:"MuiStack",slot:"Root",overridesResolver:function(e,o){return o.root}}),useThemeProps:function(e){return(0,C.Z)({props:e,name:"MuiStack"})}}),R=P},97278:function(e,o,r){r.d(o,{Z:function(){return y}});var n=r(29439),t=r(63366),a=r(87462),i=r(72791),c=r(63733),l=r(94419),s=r(14036),u=r(66934),d=r(98278),p=r(52930),f=r(95080),m=r(75878),v=r(21217);function h(e){return(0,v.Z)("PrivateSwitchBase",e)}(0,m.Z)("PrivateSwitchBase",["root","checked","disabled","input","edgeStart","edgeEnd"]);var Z=r(80184),b=["autoFocus","checked","checkedIcon","className","defaultChecked","disabled","disableFocusRipple","edge","icon","id","inputProps","inputRef","name","onBlur","onChange","onFocus","readOnly","required","tabIndex","type","value"],g=(0,u.ZP)(f.Z)((function(e){var o=e.ownerState;return(0,a.Z)({padding:9,borderRadius:"50%"},"start"===o.edge&&{marginLeft:"small"===o.size?-3:-12},"end"===o.edge&&{marginRight:"small"===o.size?-3:-12})})),k=(0,u.ZP)("input")({cursor:"inherit",position:"absolute",opacity:0,width:"100%",height:"100%",top:0,left:0,margin:0,padding:0,zIndex:1}),y=i.forwardRef((function(e,o){var r=e.autoFocus,i=e.checked,u=e.checkedIcon,f=e.className,m=e.defaultChecked,v=e.disabled,y=e.disableFocusRipple,w=void 0!==y&&y,x=e.edge,S=void 0!==x&&x,C=e.icon,P=e.id,R=e.inputProps,F=e.inputRef,N=e.name,j=e.onBlur,M=e.onChange,z=e.onFocus,B=e.readOnly,q=e.required,I=void 0!==q&&q,L=e.tabIndex,G=e.type,O=e.value,E=(0,t.Z)(e,b),T=(0,d.Z)({controlled:i,default:Boolean(m),name:"SwitchBase",state:"checked"}),A=(0,n.Z)(T,2),D=A[0],$=A[1],H=(0,p.Z)(),V=v;H&&"undefined"===typeof V&&(V=H.disabled);var W="checkbox"===G||"radio"===G,_=(0,a.Z)({},e,{checked:D,disabled:V,disableFocusRipple:w,edge:S}),U=function(e){var o=e.classes,r=e.checked,n=e.disabled,t=e.edge,a={root:["root",r&&"checked",n&&"disabled",t&&"edge".concat((0,s.Z)(t))],input:["input"]};return(0,l.Z)(a,h,o)}(_);return(0,Z.jsxs)(g,(0,a.Z)({component:"span",className:(0,c.Z)(U.root,f),centerRipple:!0,focusRipple:!w,disabled:V,tabIndex:null,role:void 0,onFocus:function(e){z&&z(e),H&&H.onFocus&&H.onFocus(e)},onBlur:function(e){j&&j(e),H&&H.onBlur&&H.onBlur(e)},ownerState:_,ref:o},E,{children:[(0,Z.jsx)(k,(0,a.Z)({autoFocus:r,checked:i,defaultChecked:m,className:U.input,disabled:V,id:W?P:void 0,name:N,onChange:function(e){if(!e.nativeEvent.defaultPrevented){var o=e.target.checked;$(o),M&&M(e,o)}},readOnly:B,ref:F,required:I,ownerState:_,tabIndex:L,type:G},"checkbox"===G&&void 0===O?{}:{value:O},R)),D?u:C]}))}))},31260:function(e,o,r){var n=r(78949);o.Z=n.Z},78949:function(e,o,r){function n(){for(var e=arguments.length,o=new Array(e),r=0;r {\n const {\n classes,\n disabled,\n labelPlacement,\n error,\n required\n } = ownerState;\n const slots = {\n root: ['root', disabled && 'disabled', `labelPlacement${capitalize(labelPlacement)}`, error && 'error', required && 'required'],\n label: ['label', disabled && 'disabled'],\n asterisk: ['asterisk', error && 'error']\n };\n return composeClasses(slots, getFormControlLabelUtilityClasses, classes);\n};\nexport const FormControlLabelRoot = styled('label', {\n name: 'MuiFormControlLabel',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${formControlLabelClasses.label}`]: styles.label\n }, styles.root, styles[`labelPlacement${capitalize(ownerState.labelPlacement)}`]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'inline-flex',\n alignItems: 'center',\n cursor: 'pointer',\n // For correct alignment with the text.\n verticalAlign: 'middle',\n WebkitTapHighlightColor: 'transparent',\n marginLeft: -11,\n marginRight: 16,\n // used for row presentation of radio/checkbox\n [`&.${formControlLabelClasses.disabled}`]: {\n cursor: 'default'\n }\n}, ownerState.labelPlacement === 'start' && {\n flexDirection: 'row-reverse',\n marginLeft: 16,\n // used for row presentation of radio/checkbox\n marginRight: -11\n}, ownerState.labelPlacement === 'top' && {\n flexDirection: 'column-reverse',\n marginLeft: 16\n}, ownerState.labelPlacement === 'bottom' && {\n flexDirection: 'column',\n marginLeft: 16\n}, {\n [`& .${formControlLabelClasses.label}`]: {\n [`&.${formControlLabelClasses.disabled}`]: {\n color: (theme.vars || theme).palette.text.disabled\n }\n }\n}));\nconst AsteriskComponent = styled('span', {\n name: 'MuiFormControlLabel',\n slot: 'Asterisk',\n overridesResolver: (props, styles) => styles.asterisk\n})(({\n theme\n}) => ({\n [`&.${formControlLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}));\n\n/**\n * Drop-in replacement of the `Radio`, `Switch` and `Checkbox` component.\n * Use this component if you want to display an extra label.\n */\nconst FormControlLabel = /*#__PURE__*/React.forwardRef(function FormControlLabel(inProps, ref) {\n var _ref, _slotProps$typography;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFormControlLabel'\n });\n const {\n className,\n componentsProps = {},\n control,\n disabled: disabledProp,\n disableTypography,\n label: labelProp,\n labelPlacement = 'end',\n required: requiredProp,\n slotProps = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n const disabled = (_ref = disabledProp != null ? disabledProp : control.props.disabled) != null ? _ref : muiFormControl == null ? void 0 : muiFormControl.disabled;\n const required = requiredProp != null ? requiredProp : control.props.required;\n const controlProps = {\n disabled,\n required\n };\n ['checked', 'name', 'onChange', 'value', 'inputRef'].forEach(key => {\n if (typeof control.props[key] === 'undefined' && typeof props[key] !== 'undefined') {\n controlProps[key] = props[key];\n }\n });\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['error']\n });\n const ownerState = _extends({}, props, {\n disabled,\n labelPlacement,\n required,\n error: fcs.error\n });\n const classes = useUtilityClasses(ownerState);\n const typographySlotProps = (_slotProps$typography = slotProps.typography) != null ? _slotProps$typography : componentsProps.typography;\n let label = labelProp;\n if (label != null && label.type !== Typography && !disableTypography) {\n label = /*#__PURE__*/_jsx(Typography, _extends({\n component: \"span\"\n }, typographySlotProps, {\n className: clsx(classes.label, typographySlotProps == null ? void 0 : typographySlotProps.className),\n children: label\n }));\n }\n return /*#__PURE__*/_jsxs(FormControlLabelRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other, {\n children: [/*#__PURE__*/React.cloneElement(control, controlProps), required ? /*#__PURE__*/_jsxs(Stack, {\n direction: \"row\",\n alignItems: \"center\",\n children: [label, /*#__PURE__*/_jsxs(AsteriskComponent, {\n ownerState: ownerState,\n \"aria-hidden\": true,\n className: classes.asterisk,\n children: [\"\\u2009\", '*']\n })]\n }) : label]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormControlLabel.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * If `true`, the component appears selected.\n */\n checked: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The props used for each slot inside.\n * @default {}\n */\n componentsProps: PropTypes.shape({\n typography: PropTypes.object\n }),\n /**\n * A control element. For instance, it can be a `Radio`, a `Switch` or a `Checkbox`.\n */\n control: PropTypes.element.isRequired,\n /**\n * If `true`, the control is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is rendered as it is passed without an additional typography node.\n */\n disableTypography: PropTypes.bool,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * A text or an element to be used in an enclosing label element.\n */\n label: PropTypes.node,\n /**\n * The position of the label.\n * @default 'end'\n */\n labelPlacement: PropTypes.oneOf(['bottom', 'end', 'start', 'top']),\n /**\n * @ignore\n */\n name: PropTypes.string,\n /**\n * Callback fired when the state is changed.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n /**\n * If `true`, the label will indicate that the `input` is required.\n */\n required: PropTypes.bool,\n /**\n * The props used for each slot inside.\n * @default {}\n */\n slotProps: PropTypes.shape({\n typography: PropTypes.object\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The value of the component.\n */\n value: PropTypes.any\n} : void 0;\nexport default FormControlLabel;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'RadioButtonUnchecked');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z\"\n}), 'RadioButtonChecked');","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport RadioButtonUncheckedIcon from '../internal/svg-icons/RadioButtonUnchecked';\nimport RadioButtonCheckedIcon from '../internal/svg-icons/RadioButtonChecked';\nimport styled from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst RadioButtonIconRoot = styled('span')({\n position: 'relative',\n display: 'flex'\n});\nconst RadioButtonIconBackground = styled(RadioButtonUncheckedIcon)({\n // Scale applied to prevent dot misalignment in Safari\n transform: 'scale(1)'\n});\nconst RadioButtonIconDot = styled(RadioButtonCheckedIcon)(({\n theme,\n ownerState\n}) => _extends({\n left: 0,\n position: 'absolute',\n transform: 'scale(0)',\n transition: theme.transitions.create('transform', {\n easing: theme.transitions.easing.easeIn,\n duration: theme.transitions.duration.shortest\n })\n}, ownerState.checked && {\n transform: 'scale(1)',\n transition: theme.transitions.create('transform', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.shortest\n })\n}));\n\n/**\n * @ignore - internal component.\n */\nfunction RadioButtonIcon(props) {\n const {\n checked = false,\n classes = {},\n fontSize\n } = props;\n const ownerState = _extends({}, props, {\n checked\n });\n return /*#__PURE__*/_jsxs(RadioButtonIconRoot, {\n className: classes.root,\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsx(RadioButtonIconBackground, {\n fontSize: fontSize,\n className: classes.background,\n ownerState: ownerState\n }), /*#__PURE__*/_jsx(RadioButtonIconDot, {\n fontSize: fontSize,\n className: classes.dot,\n ownerState: ownerState\n })]\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? RadioButtonIcon.propTypes = {\n /**\n * If `true`, the component is checked.\n */\n checked: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * The size of the component.\n * `small` is equivalent to the dense radio styling.\n */\n fontSize: PropTypes.oneOf(['small', 'medium'])\n} : void 0;\nexport default RadioButtonIcon;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getRadioUtilityClass(slot) {\n return generateUtilityClass('MuiRadio', slot);\n}\nconst radioClasses = generateUtilityClasses('MuiRadio', ['root', 'checked', 'disabled', 'colorPrimary', 'colorSecondary', 'sizeSmall']);\nexport default radioClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"checked\", \"checkedIcon\", \"color\", \"icon\", \"name\", \"onChange\", \"size\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport { alpha } from '@mui/system';\nimport SwitchBase from '../internal/SwitchBase';\nimport useThemeProps from '../styles/useThemeProps';\nimport RadioButtonIcon from './RadioButtonIcon';\nimport capitalize from '../utils/capitalize';\nimport createChainedFunction from '../utils/createChainedFunction';\nimport useRadioGroup from '../RadioGroup/useRadioGroup';\nimport radioClasses, { getRadioUtilityClass } from './radioClasses';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color,\n size\n } = ownerState;\n const slots = {\n root: ['root', `color${capitalize(color)}`, size !== 'medium' && `size${capitalize(size)}`]\n };\n return _extends({}, classes, composeClasses(slots, getRadioUtilityClass, classes));\n};\nconst RadioRoot = styled(SwitchBase, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiRadio',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`color${capitalize(ownerState.color)}`]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n color: (theme.vars || theme).palette.text.secondary\n}, !ownerState.disableRipple && {\n '&:hover': {\n backgroundColor: theme.vars ? `rgba(${ownerState.color === 'default' ? theme.vars.palette.action.activeChannel : theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(ownerState.color === 'default' ? theme.palette.action.active : theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n}, ownerState.color !== 'default' && {\n [`&.${radioClasses.checked}`]: {\n color: (theme.vars || theme).palette[ownerState.color].main\n }\n}, {\n [`&.${radioClasses.disabled}`]: {\n color: (theme.vars || theme).palette.action.disabled\n }\n}));\nfunction areEqualValues(a, b) {\n if (typeof b === 'object' && b !== null) {\n return a === b;\n }\n\n // The value could be a number, the DOM will stringify it anyway.\n return String(a) === String(b);\n}\nconst defaultCheckedIcon = /*#__PURE__*/_jsx(RadioButtonIcon, {\n checked: true\n});\nconst defaultIcon = /*#__PURE__*/_jsx(RadioButtonIcon, {});\nconst Radio = /*#__PURE__*/React.forwardRef(function Radio(inProps, ref) {\n var _defaultIcon$props$fo, _defaultCheckedIcon$p;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiRadio'\n });\n const {\n checked: checkedProp,\n checkedIcon = defaultCheckedIcon,\n color = 'primary',\n icon = defaultIcon,\n name: nameProp,\n onChange: onChangeProp,\n size = 'medium',\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n size\n });\n const classes = useUtilityClasses(ownerState);\n const radioGroup = useRadioGroup();\n let checked = checkedProp;\n const onChange = createChainedFunction(onChangeProp, radioGroup && radioGroup.onChange);\n let name = nameProp;\n if (radioGroup) {\n if (typeof checked === 'undefined') {\n checked = areEqualValues(radioGroup.value, props.value);\n }\n if (typeof name === 'undefined') {\n name = radioGroup.name;\n }\n }\n return /*#__PURE__*/_jsx(RadioRoot, _extends({\n type: \"radio\",\n icon: /*#__PURE__*/React.cloneElement(icon, {\n fontSize: (_defaultIcon$props$fo = defaultIcon.props.fontSize) != null ? _defaultIcon$props$fo : size\n }),\n checkedIcon: /*#__PURE__*/React.cloneElement(checkedIcon, {\n fontSize: (_defaultCheckedIcon$p = defaultCheckedIcon.props.fontSize) != null ? _defaultCheckedIcon$p : size\n }),\n ownerState: ownerState,\n classes: classes,\n name: name,\n checked: checked,\n onChange: onChange,\n ref: ref,\n className: clsx(classes.root, className)\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Radio.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * If `true`, the component is checked.\n */\n checked: PropTypes.bool,\n /**\n * The icon to display when the component is checked.\n * @default \n */\n checkedIcon: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n * @default 'primary'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * If `true`, the component is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the ripple effect is disabled.\n * @default false\n */\n disableRipple: PropTypes.bool,\n /**\n * The icon to display when the component is unchecked.\n * @default \n */\n icon: PropTypes.node,\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n */\n inputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * Name attribute of the `input` element.\n */\n name: PropTypes.string,\n /**\n * Callback fired when the state is changed.\n *\n * @param {React.ChangeEvent} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n /**\n * If `true`, the `input` element is required.\n * @default false\n */\n required: PropTypes.bool,\n /**\n * The size of the component.\n * `small` is equivalent to the dense radio styling.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The value of the component. The DOM API casts this to a string.\n */\n value: PropTypes.any\n} : void 0;\nexport default Radio;","'use client';\n\nimport * as React from 'react';\nimport RadioGroupContext from './RadioGroupContext';\nexport default function useRadioGroup() {\n return React.useContext(RadioGroupContext);\n}","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getFormGroupUtilityClass(slot) {\n return generateUtilityClass('MuiFormGroup', slot);\n}\nconst formGroupClasses = generateUtilityClasses('MuiFormGroup', ['root', 'row', 'error']);\nexport default formGroupClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"row\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getFormGroupUtilityClass } from './formGroupClasses';\nimport useFormControl from '../FormControl/useFormControl';\nimport formControlState from '../FormControl/formControlState';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n row,\n error\n } = ownerState;\n const slots = {\n root: ['root', row && 'row', error && 'error']\n };\n return composeClasses(slots, getFormGroupUtilityClass, classes);\n};\nconst FormGroupRoot = styled('div', {\n name: 'MuiFormGroup',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.row && styles.row];\n }\n})(({\n ownerState\n}) => _extends({\n display: 'flex',\n flexDirection: 'column',\n flexWrap: 'wrap'\n}, ownerState.row && {\n flexDirection: 'row'\n}));\n\n/**\n * `FormGroup` wraps controls such as `Checkbox` and `Switch`.\n * It provides compact row layout.\n * For the `Radio`, you should be using the `RadioGroup` component instead of this one.\n */\nconst FormGroup = /*#__PURE__*/React.forwardRef(function FormGroup(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFormGroup'\n });\n const {\n className,\n row = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['error']\n });\n const ownerState = _extends({}, props, {\n row,\n error: fcs.error\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(FormGroupRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormGroup.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * Display group of elements in a compact row.\n * @default false\n */\n row: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default FormGroup;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"actions\", \"children\", \"defaultValue\", \"name\", \"onChange\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport FormGroup from '../FormGroup';\nimport useForkRef from '../utils/useForkRef';\nimport useControlled from '../utils/useControlled';\nimport RadioGroupContext from './RadioGroupContext';\nimport useId from '../utils/useId';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst RadioGroup = /*#__PURE__*/React.forwardRef(function RadioGroup(props, ref) {\n const {\n // private\n // eslint-disable-next-line react/prop-types\n actions,\n children,\n defaultValue,\n name: nameProp,\n onChange,\n value: valueProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootRef = React.useRef(null);\n const [value, setValueState] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: 'RadioGroup'\n });\n React.useImperativeHandle(actions, () => ({\n focus: () => {\n let input = rootRef.current.querySelector('input:not(:disabled):checked');\n if (!input) {\n input = rootRef.current.querySelector('input:not(:disabled)');\n }\n if (input) {\n input.focus();\n }\n }\n }), []);\n const handleRef = useForkRef(ref, rootRef);\n const name = useId(nameProp);\n const contextValue = React.useMemo(() => ({\n name,\n onChange(event) {\n setValueState(event.target.value);\n if (onChange) {\n onChange(event, event.target.value);\n }\n },\n value\n }), [name, onChange, setValueState, value]);\n return /*#__PURE__*/_jsx(RadioGroupContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(FormGroup, _extends({\n role: \"radiogroup\",\n ref: handleRef\n }, other, {\n children: children\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? RadioGroup.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * The name used to reference the value of the control.\n * If you don't provide this prop, it falls back to a randomly generated name.\n */\n name: PropTypes.string,\n /**\n * Callback fired when a radio button is selected.\n *\n * @param {React.ChangeEvent} event The event source of the callback.\n * @param {string} value The value of the selected radio button.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * Value of the selected radio button. The DOM API casts this to a string.\n */\n value: PropTypes.any\n} : void 0;\nexport default RadioGroup;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst RadioGroupContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n RadioGroupContext.displayName = 'RadioGroupContext';\n}\nexport default RadioGroupContext;","import createStyled from './createStyled';\nconst styled = createStyled();\nexport default styled;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"component\", \"direction\", \"spacing\", \"divider\", \"children\", \"className\", \"useFlexGap\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { deepmerge, unstable_composeClasses as composeClasses, unstable_generateUtilityClass as generateUtilityClass } from '@mui/utils';\nimport systemStyled from '../styled';\nimport useThemePropsSystem from '../useThemeProps';\nimport { extendSxProp } from '../styleFunctionSx';\nimport createTheme from '../createTheme';\nimport { handleBreakpoints, mergeBreakpointsInOrder, resolveBreakpointValues } from '../breakpoints';\nimport { createUnarySpacing, getValue } from '../spacing';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultTheme = createTheme();\n// widening Theme to any so that the consumer can own the theme structure.\nconst defaultCreateStyledComponent = systemStyled('div', {\n name: 'MuiStack',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n});\nfunction useThemePropsDefault(props) {\n return useThemePropsSystem({\n props,\n name: 'MuiStack',\n defaultTheme\n });\n}\n\n/**\n * Return an array with the separator React element interspersed between\n * each React node of the input children.\n *\n * > joinChildren([1,2,3], 0)\n * [1,0,2,0,3]\n */\nfunction joinChildren(children, separator) {\n const childrenArray = React.Children.toArray(children).filter(Boolean);\n return childrenArray.reduce((output, child, index) => {\n output.push(child);\n if (index < childrenArray.length - 1) {\n output.push( /*#__PURE__*/React.cloneElement(separator, {\n key: `separator-${index}`\n }));\n }\n return output;\n }, []);\n}\nconst getSideFromDirection = direction => {\n return {\n row: 'Left',\n 'row-reverse': 'Right',\n column: 'Top',\n 'column-reverse': 'Bottom'\n }[direction];\n};\nexport const style = ({\n ownerState,\n theme\n}) => {\n let styles = _extends({\n display: 'flex',\n flexDirection: 'column'\n }, handleBreakpoints({\n theme\n }, resolveBreakpointValues({\n values: ownerState.direction,\n breakpoints: theme.breakpoints.values\n }), propValue => ({\n flexDirection: propValue\n })));\n if (ownerState.spacing) {\n const transformer = createUnarySpacing(theme);\n const base = Object.keys(theme.breakpoints.values).reduce((acc, breakpoint) => {\n if (typeof ownerState.spacing === 'object' && ownerState.spacing[breakpoint] != null || typeof ownerState.direction === 'object' && ownerState.direction[breakpoint] != null) {\n acc[breakpoint] = true;\n }\n return acc;\n }, {});\n const directionValues = resolveBreakpointValues({\n values: ownerState.direction,\n base\n });\n const spacingValues = resolveBreakpointValues({\n values: ownerState.spacing,\n base\n });\n if (typeof directionValues === 'object') {\n Object.keys(directionValues).forEach((breakpoint, index, breakpoints) => {\n const directionValue = directionValues[breakpoint];\n if (!directionValue) {\n const previousDirectionValue = index > 0 ? directionValues[breakpoints[index - 1]] : 'column';\n directionValues[breakpoint] = previousDirectionValue;\n }\n });\n }\n const styleFromPropValue = (propValue, breakpoint) => {\n if (ownerState.useFlexGap) {\n return {\n gap: getValue(transformer, propValue)\n };\n }\n return {\n // The useFlexGap={false} implement relies on each child to give up control of the margin.\n // We need to reset the margin to avoid double spacing.\n '& > :not(style):not(style)': {\n margin: 0\n },\n '& > :not(style) ~ :not(style)': {\n [`margin${getSideFromDirection(breakpoint ? directionValues[breakpoint] : ownerState.direction)}`]: getValue(transformer, propValue)\n }\n };\n };\n styles = deepmerge(styles, handleBreakpoints({\n theme\n }, spacingValues, styleFromPropValue));\n }\n styles = mergeBreakpointsInOrder(theme.breakpoints, styles);\n return styles;\n};\nexport default function createStack(options = {}) {\n const {\n // This will allow adding custom styled fn (for example for custom sx style function)\n createStyledComponent = defaultCreateStyledComponent,\n useThemeProps = useThemePropsDefault,\n componentName = 'MuiStack'\n } = options;\n const useUtilityClasses = () => {\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, slot => generateUtilityClass(componentName, slot), {});\n };\n const StackRoot = createStyledComponent(style);\n const Stack = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {\n const themeProps = useThemeProps(inProps);\n const props = extendSxProp(themeProps); // `color` type conflicts with html color attribute.\n const {\n component = 'div',\n direction = 'column',\n spacing = 0,\n divider,\n children,\n className,\n useFlexGap = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = {\n direction,\n spacing,\n useFlexGap\n };\n const classes = useUtilityClasses();\n return /*#__PURE__*/_jsx(StackRoot, _extends({\n as: component,\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n children: divider ? joinChildren(children, divider) : children\n }));\n });\n process.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n children: PropTypes.node,\n direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n divider: PropTypes.node,\n spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n } : void 0;\n return Stack;\n}","'use client';\n\nimport PropTypes from 'prop-types';\nimport { createStack } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nconst Stack = createStack({\n createStyledComponent: styled('div', {\n name: 'MuiStack',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n }),\n useThemeProps: inProps => useThemeProps({\n props: inProps,\n name: 'MuiStack'\n })\n});\nprocess.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Defines the `flex-direction` style property.\n * It is applied for all screen sizes.\n * @default 'column'\n */\n direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n /**\n * Add an element between each child.\n */\n divider: PropTypes.node,\n /**\n * Defines the space between immediate children.\n * @default 0\n */\n spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n /**\n * The system prop, which allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * If `true`, the CSS flexbox `gap` is used instead of applying `margin` to children.\n *\n * While CSS `gap` removes the [known limitations](https://mui.com/joy-ui/react-stack/#limitations),\n * it is not fully supported in some browsers. We recommend checking https://caniuse.com/?search=flex%20gap before using this flag.\n *\n * To enable this flag globally, follow the [theme's default props](https://mui.com/material-ui/customization/theme-components/#default-props) configuration.\n * @default false\n */\n useFlexGap: PropTypes.bool\n} : void 0;\nexport default Stack;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getSwitchBaseUtilityClass(slot) {\n return generateUtilityClass('PrivateSwitchBase', slot);\n}\nconst switchBaseClasses = generateUtilityClasses('PrivateSwitchBase', ['root', 'checked', 'disabled', 'input', 'edgeStart', 'edgeEnd']);\nexport default switchBaseClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"checked\", \"checkedIcon\", \"className\", \"defaultChecked\", \"disabled\", \"disableFocusRipple\", \"edge\", \"icon\", \"id\", \"inputProps\", \"inputRef\", \"name\", \"onBlur\", \"onChange\", \"onFocus\", \"readOnly\", \"required\", \"tabIndex\", \"type\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport capitalize from '../utils/capitalize';\nimport styled from '../styles/styled';\nimport useControlled from '../utils/useControlled';\nimport useFormControl from '../FormControl/useFormControl';\nimport ButtonBase from '../ButtonBase';\nimport { getSwitchBaseUtilityClass } from './switchBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n checked,\n disabled,\n edge\n } = ownerState;\n const slots = {\n root: ['root', checked && 'checked', disabled && 'disabled', edge && `edge${capitalize(edge)}`],\n input: ['input']\n };\n return composeClasses(slots, getSwitchBaseUtilityClass, classes);\n};\nconst SwitchBaseRoot = styled(ButtonBase)(({\n ownerState\n}) => _extends({\n padding: 9,\n borderRadius: '50%'\n}, ownerState.edge === 'start' && {\n marginLeft: ownerState.size === 'small' ? -3 : -12\n}, ownerState.edge === 'end' && {\n marginRight: ownerState.size === 'small' ? -3 : -12\n}));\nconst SwitchBaseInput = styled('input')({\n cursor: 'inherit',\n position: 'absolute',\n opacity: 0,\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n margin: 0,\n padding: 0,\n zIndex: 1\n});\n\n/**\n * @ignore - internal component.\n */\nconst SwitchBase = /*#__PURE__*/React.forwardRef(function SwitchBase(props, ref) {\n const {\n autoFocus,\n checked: checkedProp,\n checkedIcon,\n className,\n defaultChecked,\n disabled: disabledProp,\n disableFocusRipple = false,\n edge = false,\n icon,\n id,\n inputProps,\n inputRef,\n name,\n onBlur,\n onChange,\n onFocus,\n readOnly,\n required = false,\n tabIndex,\n type,\n value\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const [checked, setCheckedState] = useControlled({\n controlled: checkedProp,\n default: Boolean(defaultChecked),\n name: 'SwitchBase',\n state: 'checked'\n });\n const muiFormControl = useFormControl();\n const handleFocus = event => {\n if (onFocus) {\n onFocus(event);\n }\n if (muiFormControl && muiFormControl.onFocus) {\n muiFormControl.onFocus(event);\n }\n };\n const handleBlur = event => {\n if (onBlur) {\n onBlur(event);\n }\n if (muiFormControl && muiFormControl.onBlur) {\n muiFormControl.onBlur(event);\n }\n };\n const handleInputChange = event => {\n // Workaround for https://github.com/facebook/react/issues/9023\n if (event.nativeEvent.defaultPrevented) {\n return;\n }\n const newChecked = event.target.checked;\n setCheckedState(newChecked);\n if (onChange) {\n // TODO v6: remove the second argument.\n onChange(event, newChecked);\n }\n };\n let disabled = disabledProp;\n if (muiFormControl) {\n if (typeof disabled === 'undefined') {\n disabled = muiFormControl.disabled;\n }\n }\n const hasLabelFor = type === 'checkbox' || type === 'radio';\n const ownerState = _extends({}, props, {\n checked,\n disabled,\n disableFocusRipple,\n edge\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(SwitchBaseRoot, _extends({\n component: \"span\",\n className: clsx(classes.root, className),\n centerRipple: true,\n focusRipple: !disableFocusRipple,\n disabled: disabled,\n tabIndex: null,\n role: undefined,\n onFocus: handleFocus,\n onBlur: handleBlur,\n ownerState: ownerState,\n ref: ref\n }, other, {\n children: [/*#__PURE__*/_jsx(SwitchBaseInput, _extends({\n autoFocus: autoFocus,\n checked: checkedProp,\n defaultChecked: defaultChecked,\n className: classes.input,\n disabled: disabled,\n id: hasLabelFor ? id : undefined,\n name: name,\n onChange: handleInputChange,\n readOnly: readOnly,\n ref: inputRef,\n required: required,\n ownerState: ownerState,\n tabIndex: tabIndex,\n type: type\n }, type === 'checkbox' && value === undefined ? {} : {\n value\n }, inputProps)), checked ? checkedIcon : icon]\n }));\n});\n\n// NB: If changed, please update Checkbox, Switch and Radio\n// so that the API documentation is updated.\nprocess.env.NODE_ENV !== \"production\" ? SwitchBase.propTypes = {\n /**\n * If `true`, the `input` element is focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n /**\n * If `true`, the component is checked.\n */\n checked: PropTypes.bool,\n /**\n * The icon to display when the component is checked.\n */\n checkedIcon: PropTypes.node.isRequired,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * @ignore\n */\n defaultChecked: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the keyboard focus ripple is disabled.\n * @default false\n */\n disableFocusRipple: PropTypes.bool,\n /**\n * If given, uses a negative margin to counteract the padding on one\n * side (this is often helpful for aligning the left or right\n * side of the icon with content above or below, without ruining the border\n * size and shape).\n * @default false\n */\n edge: PropTypes.oneOf(['end', 'start', false]),\n /**\n * The icon to display when the component is unchecked.\n */\n icon: PropTypes.node.isRequired,\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n */\n inputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /*\n * @ignore\n */\n name: PropTypes.string,\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n /**\n * Callback fired when the state is changed.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n /**\n * It prevents the user from changing the value of the field\n * (not from interacting with the field).\n */\n readOnly: PropTypes.bool,\n /**\n * If `true`, the `input` element is required.\n */\n required: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.object,\n /**\n * @ignore\n */\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * The input component prop `type`.\n */\n type: PropTypes.string.isRequired,\n /**\n * The value of the component.\n */\n value: PropTypes.any\n} : void 0;\nexport default SwitchBase;","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}"],"names":["getFormControlLabelUtilityClasses","slot","generateUtilityClass","generateUtilityClasses","_excluded","FormControlLabelRoot","styled","name","overridesResolver","props","styles","ownerState","_defineProperty","concat","formControlLabelClasses","label","root","capitalize","labelPlacement","_ref3","theme","_extends","display","alignItems","cursor","verticalAlign","WebkitTapHighlightColor","marginLeft","marginRight","disabled","flexDirection","color","vars","palette","text","AsteriskComponent","asterisk","_ref4","error","main","React","inProps","ref","_ref","_slotProps$typography","useThemeProps","className","_props$componentsProp","componentsProps","control","disabledProp","disableTypography","labelProp","_props$labelPlacement","requiredProp","required","_props$slotProps","slotProps","other","_objectWithoutPropertiesLoose","muiFormControl","useFormControl","controlProps","forEach","key","fcs","formControlState","states","classes","slots","composeClasses","useUtilityClasses","typographySlotProps","typography","type","Typography","_jsx","component","clsx","children","_jsxs","Stack","direction","createSvgIcon","d","RadioButtonIconRoot","position","RadioButtonIconBackground","RadioButtonUncheckedIcon","transform","RadioButtonIconDot","RadioButtonCheckedIcon","left","transition","transitions","create","easing","easeIn","duration","shortest","checked","easeOut","_props$checked","_props$classes","fontSize","background","dot","getRadioUtilityClass","RadioRoot","SwitchBase","shouldForwardProp","prop","rootShouldForwardProp","secondary","disableRipple","backgroundColor","action","activeChannel","mainChannel","hoverOpacity","alpha","active","radioClasses","defaultCheckedIcon","RadioButtonIcon","defaultIcon","_defaultIcon$props$fo","_defaultCheckedIcon$p","a","b","checkedProp","_props$checkedIcon","checkedIcon","_props$color","_props$icon","icon","nameProp","onChangeProp","onChange","_props$size","size","radioGroup","RadioGroupContext","createChainedFunction","value","String","getFormGroupUtilityClass","FormGroupRoot","row","flexWrap","_props$row","actions","defaultValue","valueProp","rootRef","_useControlled","useControlled","controlled","default","_useControlled2","_slicedToArray","setValueState","focus","input","current","querySelector","handleRef","useForkRef","useId","contextValue","event","target","Provider","FormGroup","role","undefined","createStyled","defaultTheme","createTheme","defaultCreateStyledComponent","systemStyled","useThemePropsDefault","useThemePropsSystem","joinChildren","separator","childrenArray","toArray","filter","Boolean","reduce","output","child","index","push","length","style","handleBreakpoints","resolveBreakpointValues","values","breakpoints","propValue","spacing","transformer","createUnarySpacing","base","Object","keys","acc","breakpoint","directionValues","spacingValues","previousDirectionValue","deepmerge","useFlexGap","gap","getValue","margin","column","mergeBreakpointsInOrder","options","arguments","_options$createStyled","createStyledComponent","_options$useThemeProp","_options$componentNam","componentName","StackRoot","themeProps","extendSxProp","_props$component","_props$direction","_props$spacing","divider","_props$useFlexGap","as","createStack","getSwitchBaseUtilityClass","SwitchBaseRoot","ButtonBase","padding","borderRadius","edge","SwitchBaseInput","opacity","width","height","top","zIndex","autoFocus","defaultChecked","_props$disableFocusRi","disableFocusRipple","_props$edge","id","inputProps","inputRef","onBlur","onFocus","readOnly","_props$required","tabIndex","state","setCheckedState","hasLabelFor","centerRipple","focusRipple","nativeEvent","defaultPrevented","newChecked","_len","funcs","Array","_key","func","_len2","args","_key2","apply","this"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/1520.f9bd04d7.chunk.js b/portal-ui/build/static/js/1520.f9bd04d7.chunk.js deleted file mode 100644 index fa4e3b382a..0000000000 --- a/portal-ui/build/static/js/1520.f9bd04d7.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1520],{85523:function(e,r,o){o.d(r,{Z:function(){return S}});var n=o(4942),t=o(63366),a=o(87462),i=o(72791),c=o(63733),l=o(94419),s=o(52930),u=o(1582),d=o(20890),p=o(14036),f=o(66934),m=o(31402),v=o(75878),h=o(21217);function Z(e){return(0,h.Z)("MuiFormControlLabel",e)}var b=(0,v.Z)("MuiFormControlLabel",["root","labelPlacementStart","labelPlacementTop","labelPlacementBottom","disabled","label","error","required","asterisk"]),g=o(76147),k=o(80184),y=["checked","className","componentsProps","control","disabled","disableTypography","inputRef","label","labelPlacement","name","onChange","required","slotProps","value"],w=(0,f.ZP)("label",{name:"MuiFormControlLabel",slot:"Root",overridesResolver:function(e,r){var o=e.ownerState;return[(0,n.Z)({},"& .".concat(b.label),r.label),r.root,r["labelPlacement".concat((0,p.Z)(o.labelPlacement))]]}})((function(e){var r=e.theme,o=e.ownerState;return(0,a.Z)((0,n.Z)({display:"inline-flex",alignItems:"center",cursor:"pointer",verticalAlign:"middle",WebkitTapHighlightColor:"transparent",marginLeft:-11,marginRight:16},"&.".concat(b.disabled),{cursor:"default"}),"start"===o.labelPlacement&&{flexDirection:"row-reverse",marginLeft:16,marginRight:-11},"top"===o.labelPlacement&&{flexDirection:"column-reverse",marginLeft:16},"bottom"===o.labelPlacement&&{flexDirection:"column",marginLeft:16},(0,n.Z)({},"& .".concat(b.label),(0,n.Z)({},"&.".concat(b.disabled),{color:(r.vars||r).palette.text.disabled})))})),x=(0,f.ZP)("span",{name:"MuiFormControlLabel",slot:"Asterisk",overridesResolver:function(e,r){return r.asterisk}})((function(e){var r=e.theme;return(0,n.Z)({},"&.".concat(b.error),{color:(r.vars||r).palette.error.main})})),S=i.forwardRef((function(e,r){var o,n,f=(0,m.Z)({props:e,name:"MuiFormControlLabel"}),v=f.className,h=f.componentsProps,b=void 0===h?{}:h,S=f.control,C=f.disabled,P=f.disableTypography,R=f.label,F=f.labelPlacement,N=void 0===F?"end":F,j=f.required,M=f.slotProps,z=void 0===M?{}:M,B=(0,t.Z)(f,y),q=(0,s.Z)(),I=null!=(o=null!=C?C:S.props.disabled)?o:null==q?void 0:q.disabled,L=null!=j?j:S.props.required,G={disabled:I,required:L};["checked","name","onChange","value","inputRef"].forEach((function(e){"undefined"===typeof S.props[e]&&"undefined"!==typeof f[e]&&(G[e]=f[e])}));var O=(0,g.Z)({props:f,muiFormControl:q,states:["error"]}),E=(0,a.Z)({},f,{disabled:I,labelPlacement:N,required:L,error:O.error}),T=function(e){var r=e.classes,o=e.disabled,n=e.labelPlacement,t=e.error,a=e.required,i={root:["root",o&&"disabled","labelPlacement".concat((0,p.Z)(n)),t&&"error",a&&"required"],label:["label",o&&"disabled"],asterisk:["asterisk",t&&"error"]};return(0,l.Z)(i,Z,r)}(E),A=null!=(n=z.typography)?n:b.typography,D=R;return null==D||D.type===d.Z||P||(D=(0,k.jsx)(d.Z,(0,a.Z)({component:"span"},A,{className:(0,c.Z)(T.label,null==A?void 0:A.className),children:D}))),(0,k.jsxs)(w,(0,a.Z)({className:(0,c.Z)(T.root,v),ownerState:E,ref:r},B,{children:[i.cloneElement(S,G),L?(0,k.jsxs)(u.Z,{direction:"row",alignItems:"center",children:[D,(0,k.jsxs)(x,{ownerState:E,"aria-hidden":!0,className:T.asterisk,children:["\u2009","*"]})]}):D]}))}))},61419:function(e,r,o){o.d(r,{Z:function(){return z}});var n=o(4942),t=o(63366),a=o(87462),i=o(72791),c=o(63733),l=o(94419),s=o(12065),u=o(97278),d=o(31402),p=o(76189),f=o(80184),m=(0,p.Z)((0,f.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"RadioButtonUnchecked"),v=(0,p.Z)((0,f.jsx)("path",{d:"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z"}),"RadioButtonChecked"),h=o(66934),Z=(0,h.ZP)("span")({position:"relative",display:"flex"}),b=(0,h.ZP)(m)({transform:"scale(1)"}),g=(0,h.ZP)(v)((function(e){var r=e.theme,o=e.ownerState;return(0,a.Z)({left:0,position:"absolute",transform:"scale(0)",transition:r.transitions.create("transform",{easing:r.transitions.easing.easeIn,duration:r.transitions.duration.shortest})},o.checked&&{transform:"scale(1)",transition:r.transitions.create("transform",{easing:r.transitions.easing.easeOut,duration:r.transitions.duration.shortest})})}));var k=function(e){var r=e.checked,o=void 0!==r&&r,n=e.classes,t=void 0===n?{}:n,i=e.fontSize,c=(0,a.Z)({},e,{checked:o});return(0,f.jsxs)(Z,{className:t.root,ownerState:c,children:[(0,f.jsx)(b,{fontSize:i,className:t.background,ownerState:c}),(0,f.jsx)(g,{fontSize:i,className:t.dot,ownerState:c})]})},y=o(14036),w=o(31260),x=o(18672);var S=o(75878),C=o(21217);function P(e){return(0,C.Z)("MuiRadio",e)}var R=(0,S.Z)("MuiRadio",["root","checked","disabled","colorPrimary","colorSecondary"]),F=["checked","checkedIcon","color","icon","name","onChange","size","className"],N=(0,h.ZP)(u.Z,{shouldForwardProp:function(e){return(0,h.FO)(e)||"classes"===e},name:"MuiRadio",slot:"Root",overridesResolver:function(e,r){var o=e.ownerState;return[r.root,r["color".concat((0,y.Z)(o.color))]]}})((function(e){var r=e.theme,o=e.ownerState;return(0,a.Z)({color:(r.vars||r).palette.text.secondary},!o.disableRipple&&{"&:hover":{backgroundColor:r.vars?"rgba(".concat("default"===o.color?r.vars.palette.action.activeChannel:r.vars.palette[o.color].mainChannel," / ").concat(r.vars.palette.action.hoverOpacity,")"):(0,s.Fq)("default"===o.color?r.palette.action.active:r.palette[o.color].main,r.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"default"!==o.color&&(0,n.Z)({},"&.".concat(R.checked),{color:(r.vars||r).palette[o.color].main}),(0,n.Z)({},"&.".concat(R.disabled),{color:(r.vars||r).palette.action.disabled}))}));var j=(0,f.jsx)(k,{checked:!0}),M=(0,f.jsx)(k,{}),z=i.forwardRef((function(e,r){var o,n,s,u,p=(0,d.Z)({props:e,name:"MuiRadio"}),m=p.checked,v=p.checkedIcon,h=void 0===v?j:v,Z=p.color,b=void 0===Z?"primary":Z,g=p.icon,k=void 0===g?M:g,S=p.name,C=p.onChange,R=p.size,z=void 0===R?"medium":R,B=p.className,q=(0,t.Z)(p,F),I=(0,a.Z)({},p,{color:b,size:z}),L=function(e){var r=e.classes,o=e.color,n={root:["root","color".concat((0,y.Z)(o))]};return(0,a.Z)({},r,(0,l.Z)(n,P,r))}(I),G=i.useContext(x.Z),O=m,E=(0,w.Z)(C,G&&G.onChange),T=S;return G&&("undefined"===typeof O&&(s=G.value,O="object"===typeof(u=p.value)&&null!==u?s===u:String(s)===String(u)),"undefined"===typeof T&&(T=G.name)),(0,f.jsx)(N,(0,a.Z)({type:"radio",icon:i.cloneElement(k,{fontSize:null!=(o=M.props.fontSize)?o:z}),checkedIcon:i.cloneElement(h,{fontSize:null!=(n=j.props.fontSize)?n:z}),ownerState:I,classes:L,name:T,checked:O,onChange:E,ref:r,className:(0,c.Z)(L.root,B)},q))}))},10765:function(e,r,o){o.d(r,{Z:function(){return C}});var n=o(29439),t=o(87462),a=o(63366),i=o(72791),c=o(63733),l=o(94419),s=o(66934),u=o(31402),d=o(75878),p=o(21217);function f(e){return(0,p.Z)("MuiFormGroup",e)}(0,d.Z)("MuiFormGroup",["root","row","error"]);var m=o(52930),v=o(76147),h=o(80184),Z=["className","row"],b=(0,s.ZP)("div",{name:"MuiFormGroup",slot:"Root",overridesResolver:function(e,r){var o=e.ownerState;return[r.root,o.row&&r.row]}})((function(e){var r=e.ownerState;return(0,t.Z)({display:"flex",flexDirection:"column",flexWrap:"wrap"},r.row&&{flexDirection:"row"})})),g=i.forwardRef((function(e,r){var o=(0,u.Z)({props:e,name:"MuiFormGroup"}),n=o.className,i=o.row,s=void 0!==i&&i,d=(0,a.Z)(o,Z),p=(0,m.Z)(),g=(0,v.Z)({props:o,muiFormControl:p,states:["error"]}),k=(0,t.Z)({},o,{row:s,error:g.error}),y=function(e){var r=e.classes,o={root:["root",e.row&&"row",e.error&&"error"]};return(0,l.Z)(o,f,r)}(k);return(0,h.jsx)(b,(0,t.Z)({className:(0,c.Z)(y.root,n),ownerState:k,ref:r},d))})),k=o(42071),y=o(98278),w=o(18672),x=o(67384),S=["actions","children","defaultValue","name","onChange","value"],C=i.forwardRef((function(e,r){var o=e.actions,c=e.children,l=e.defaultValue,s=e.name,u=e.onChange,d=e.value,p=(0,a.Z)(e,S),f=i.useRef(null),m=(0,y.Z)({controlled:d,default:l,name:"RadioGroup"}),v=(0,n.Z)(m,2),Z=v[0],b=v[1];i.useImperativeHandle(o,(function(){return{focus:function(){var e=f.current.querySelector("input:not(:disabled):checked");e||(e=f.current.querySelector("input:not(:disabled)")),e&&e.focus()}}}),[]);var C=(0,k.Z)(r,f),P=(0,x.Z)(s),R=i.useMemo((function(){return{name:P,onChange:function(e){b(e.target.value),u&&u(e,e.target.value)},value:Z}}),[P,u,b,Z]);return(0,h.jsx)(w.Z.Provider,{value:R,children:(0,h.jsx)(g,(0,t.Z)({role:"radiogroup",ref:C},p,{children:c}))})}))},18672:function(e,r,o){var n=o(72791).createContext(void 0);r.Z=n},1582:function(e,r,o){o.d(r,{Z:function(){return R}});var n=o(4942),t=o(63366),a=o(87462),i=o(72791),c=o(63733),l=o(82466),s=o(94419),u=o(21217),d=(0,o(44046).ZP)(),p=o(86083),f=o(78519),m=o(85080),v=o(51184),h=o(45682),Z=o(80184),b=["component","direction","spacing","divider","children","className","useFlexGap"],g=(0,m.Z)(),k=d("div",{name:"MuiStack",slot:"Root",overridesResolver:function(e,r){return r.root}});function y(e){return(0,p.Z)({props:e,name:"MuiStack",defaultTheme:g})}function w(e,r){var o=i.Children.toArray(e).filter(Boolean);return o.reduce((function(e,n,t){return e.push(n),t0?s[o[r-1]]:"column";s[e]=n}}));t=(0,l.Z)(t,(0,v.k9)({theme:o},u,(function(e,o){return r.useFlexGap?{gap:(0,h.NA)(i,e)}:{"& > :not(style):not(style)":{margin:0},"& > :not(style) ~ :not(style)":(0,n.Z)({},"margin".concat((t=o?s[o]:r.direction,{row:"Left","row-reverse":"Right",column:"Top","column-reverse":"Bottom"}[t])),(0,h.NA)(i,e))};var t})))}return t=(0,v.dt)(o.breakpoints,t)};var S=o(66934),C=o(31402),P=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.createStyledComponent,o=void 0===r?k:r,n=e.useThemeProps,l=void 0===n?y:n,d=e.componentName,p=void 0===d?"MuiStack":d,m=o(x),v=i.forwardRef((function(e,r){var o=l(e),n=(0,f.Z)(o),i=n.component,d=void 0===i?"div":i,v=n.direction,h=void 0===v?"column":v,g=n.spacing,k=void 0===g?0:g,y=n.divider,x=n.children,S=n.className,C=n.useFlexGap,P=void 0!==C&&C,R=(0,t.Z)(n,b),F={direction:h,spacing:k,useFlexGap:P},N=(0,s.Z)({root:["root"]},(function(e){return(0,u.Z)(p,e)}),{});return(0,Z.jsx)(m,(0,a.Z)({as:d,ownerState:F,ref:r,className:(0,c.Z)(N.root,S)},R,{children:y?w(x,y):x}))}));return v}({createStyledComponent:(0,S.ZP)("div",{name:"MuiStack",slot:"Root",overridesResolver:function(e,r){return r.root}}),useThemeProps:function(e){return(0,C.Z)({props:e,name:"MuiStack"})}}),R=P},97278:function(e,r,o){o.d(r,{Z:function(){return y}});var n=o(29439),t=o(63366),a=o(87462),i=o(72791),c=o(63733),l=o(94419),s=o(14036),u=o(66934),d=o(98278),p=o(52930),f=o(95080),m=o(75878),v=o(21217);function h(e){return(0,v.Z)("PrivateSwitchBase",e)}(0,m.Z)("PrivateSwitchBase",["root","checked","disabled","input","edgeStart","edgeEnd"]);var Z=o(80184),b=["autoFocus","checked","checkedIcon","className","defaultChecked","disabled","disableFocusRipple","edge","icon","id","inputProps","inputRef","name","onBlur","onChange","onFocus","readOnly","required","tabIndex","type","value"],g=(0,u.ZP)(f.Z)((function(e){var r=e.ownerState;return(0,a.Z)({padding:9,borderRadius:"50%"},"start"===r.edge&&{marginLeft:"small"===r.size?-3:-12},"end"===r.edge&&{marginRight:"small"===r.size?-3:-12})})),k=(0,u.ZP)("input")({cursor:"inherit",position:"absolute",opacity:0,width:"100%",height:"100%",top:0,left:0,margin:0,padding:0,zIndex:1}),y=i.forwardRef((function(e,r){var o=e.autoFocus,i=e.checked,u=e.checkedIcon,f=e.className,m=e.defaultChecked,v=e.disabled,y=e.disableFocusRipple,w=void 0!==y&&y,x=e.edge,S=void 0!==x&&x,C=e.icon,P=e.id,R=e.inputProps,F=e.inputRef,N=e.name,j=e.onBlur,M=e.onChange,z=e.onFocus,B=e.readOnly,q=e.required,I=void 0!==q&&q,L=e.tabIndex,G=e.type,O=e.value,E=(0,t.Z)(e,b),T=(0,d.Z)({controlled:i,default:Boolean(m),name:"SwitchBase",state:"checked"}),A=(0,n.Z)(T,2),D=A[0],$=A[1],H=(0,p.Z)(),V=v;H&&"undefined"===typeof V&&(V=H.disabled);var W="checkbox"===G||"radio"===G,_=(0,a.Z)({},e,{checked:D,disabled:V,disableFocusRipple:w,edge:S}),U=function(e){var r=e.classes,o=e.checked,n=e.disabled,t=e.edge,a={root:["root",o&&"checked",n&&"disabled",t&&"edge".concat((0,s.Z)(t))],input:["input"]};return(0,l.Z)(a,h,r)}(_);return(0,Z.jsxs)(g,(0,a.Z)({component:"span",className:(0,c.Z)(U.root,f),centerRipple:!0,focusRipple:!w,disabled:V,tabIndex:null,role:void 0,onFocus:function(e){z&&z(e),H&&H.onFocus&&H.onFocus(e)},onBlur:function(e){j&&j(e),H&&H.onBlur&&H.onBlur(e)},ownerState:_,ref:r},E,{children:[(0,Z.jsx)(k,(0,a.Z)({autoFocus:o,checked:i,defaultChecked:m,className:U.input,disabled:V,id:W?P:void 0,name:N,onChange:function(e){if(!e.nativeEvent.defaultPrevented){var r=e.target.checked;$(r),M&&M(e,r)}},readOnly:B,ref:F,required:I,ownerState:_,tabIndex:L,type:G},"checkbox"===G&&void 0===O?{}:{value:O},R)),D?u:C]}))}))},31260:function(e,r,o){var n=o(78949);r.Z=n.Z},78949:function(e,r,o){function n(){for(var e=arguments.length,r=new Array(e),o=0;o {\n const {\n classes,\n disabled,\n labelPlacement,\n error,\n required\n } = ownerState;\n const slots = {\n root: ['root', disabled && 'disabled', `labelPlacement${capitalize(labelPlacement)}`, error && 'error', required && 'required'],\n label: ['label', disabled && 'disabled'],\n asterisk: ['asterisk', error && 'error']\n };\n return composeClasses(slots, getFormControlLabelUtilityClasses, classes);\n};\nexport const FormControlLabelRoot = styled('label', {\n name: 'MuiFormControlLabel',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${formControlLabelClasses.label}`]: styles.label\n }, styles.root, styles[`labelPlacement${capitalize(ownerState.labelPlacement)}`]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'inline-flex',\n alignItems: 'center',\n cursor: 'pointer',\n // For correct alignment with the text.\n verticalAlign: 'middle',\n WebkitTapHighlightColor: 'transparent',\n marginLeft: -11,\n marginRight: 16,\n // used for row presentation of radio/checkbox\n [`&.${formControlLabelClasses.disabled}`]: {\n cursor: 'default'\n }\n}, ownerState.labelPlacement === 'start' && {\n flexDirection: 'row-reverse',\n marginLeft: 16,\n // used for row presentation of radio/checkbox\n marginRight: -11\n}, ownerState.labelPlacement === 'top' && {\n flexDirection: 'column-reverse',\n marginLeft: 16\n}, ownerState.labelPlacement === 'bottom' && {\n flexDirection: 'column',\n marginLeft: 16\n}, {\n [`& .${formControlLabelClasses.label}`]: {\n [`&.${formControlLabelClasses.disabled}`]: {\n color: (theme.vars || theme).palette.text.disabled\n }\n }\n}));\nconst AsteriskComponent = styled('span', {\n name: 'MuiFormControlLabel',\n slot: 'Asterisk',\n overridesResolver: (props, styles) => styles.asterisk\n})(({\n theme\n}) => ({\n [`&.${formControlLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}));\n\n/**\n * Drop-in replacement of the `Radio`, `Switch` and `Checkbox` component.\n * Use this component if you want to display an extra label.\n */\nconst FormControlLabel = /*#__PURE__*/React.forwardRef(function FormControlLabel(inProps, ref) {\n var _ref, _slotProps$typography;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFormControlLabel'\n });\n const {\n className,\n componentsProps = {},\n control,\n disabled: disabledProp,\n disableTypography,\n label: labelProp,\n labelPlacement = 'end',\n required: requiredProp,\n slotProps = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n const disabled = (_ref = disabledProp != null ? disabledProp : control.props.disabled) != null ? _ref : muiFormControl == null ? void 0 : muiFormControl.disabled;\n const required = requiredProp != null ? requiredProp : control.props.required;\n const controlProps = {\n disabled,\n required\n };\n ['checked', 'name', 'onChange', 'value', 'inputRef'].forEach(key => {\n if (typeof control.props[key] === 'undefined' && typeof props[key] !== 'undefined') {\n controlProps[key] = props[key];\n }\n });\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['error']\n });\n const ownerState = _extends({}, props, {\n disabled,\n labelPlacement,\n required,\n error: fcs.error\n });\n const classes = useUtilityClasses(ownerState);\n const typographySlotProps = (_slotProps$typography = slotProps.typography) != null ? _slotProps$typography : componentsProps.typography;\n let label = labelProp;\n if (label != null && label.type !== Typography && !disableTypography) {\n label = /*#__PURE__*/_jsx(Typography, _extends({\n component: \"span\"\n }, typographySlotProps, {\n className: clsx(classes.label, typographySlotProps == null ? void 0 : typographySlotProps.className),\n children: label\n }));\n }\n return /*#__PURE__*/_jsxs(FormControlLabelRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other, {\n children: [/*#__PURE__*/React.cloneElement(control, controlProps), required ? /*#__PURE__*/_jsxs(Stack, {\n direction: \"row\",\n alignItems: \"center\",\n children: [label, /*#__PURE__*/_jsxs(AsteriskComponent, {\n ownerState: ownerState,\n \"aria-hidden\": true,\n className: classes.asterisk,\n children: [\"\\u2009\", '*']\n })]\n }) : label]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormControlLabel.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * If `true`, the component appears selected.\n */\n checked: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The props used for each slot inside.\n * @default {}\n */\n componentsProps: PropTypes.shape({\n typography: PropTypes.object\n }),\n /**\n * A control element. For instance, it can be a `Radio`, a `Switch` or a `Checkbox`.\n */\n control: PropTypes.element.isRequired,\n /**\n * If `true`, the control is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is rendered as it is passed without an additional typography node.\n */\n disableTypography: PropTypes.bool,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * A text or an element to be used in an enclosing label element.\n */\n label: PropTypes.node,\n /**\n * The position of the label.\n * @default 'end'\n */\n labelPlacement: PropTypes.oneOf(['bottom', 'end', 'start', 'top']),\n /**\n * @ignore\n */\n name: PropTypes.string,\n /**\n * Callback fired when the state is changed.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n /**\n * If `true`, the label will indicate that the `input` is required.\n */\n required: PropTypes.bool,\n /**\n * The props used for each slot inside.\n * @default {}\n */\n slotProps: PropTypes.shape({\n typography: PropTypes.object\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The value of the component.\n */\n value: PropTypes.any\n} : void 0;\nexport default FormControlLabel;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'RadioButtonUnchecked');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z\"\n}), 'RadioButtonChecked');","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport RadioButtonUncheckedIcon from '../internal/svg-icons/RadioButtonUnchecked';\nimport RadioButtonCheckedIcon from '../internal/svg-icons/RadioButtonChecked';\nimport styled from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst RadioButtonIconRoot = styled('span')({\n position: 'relative',\n display: 'flex'\n});\nconst RadioButtonIconBackground = styled(RadioButtonUncheckedIcon)({\n // Scale applied to prevent dot misalignment in Safari\n transform: 'scale(1)'\n});\nconst RadioButtonIconDot = styled(RadioButtonCheckedIcon)(({\n theme,\n ownerState\n}) => _extends({\n left: 0,\n position: 'absolute',\n transform: 'scale(0)',\n transition: theme.transitions.create('transform', {\n easing: theme.transitions.easing.easeIn,\n duration: theme.transitions.duration.shortest\n })\n}, ownerState.checked && {\n transform: 'scale(1)',\n transition: theme.transitions.create('transform', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.shortest\n })\n}));\n\n/**\n * @ignore - internal component.\n */\nfunction RadioButtonIcon(props) {\n const {\n checked = false,\n classes = {},\n fontSize\n } = props;\n const ownerState = _extends({}, props, {\n checked\n });\n return /*#__PURE__*/_jsxs(RadioButtonIconRoot, {\n className: classes.root,\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsx(RadioButtonIconBackground, {\n fontSize: fontSize,\n className: classes.background,\n ownerState: ownerState\n }), /*#__PURE__*/_jsx(RadioButtonIconDot, {\n fontSize: fontSize,\n className: classes.dot,\n ownerState: ownerState\n })]\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? RadioButtonIcon.propTypes = {\n /**\n * If `true`, the component is checked.\n */\n checked: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * The size of the component.\n * `small` is equivalent to the dense radio styling.\n */\n fontSize: PropTypes.oneOf(['small', 'medium'])\n} : void 0;\nexport default RadioButtonIcon;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getRadioUtilityClass(slot) {\n return generateUtilityClass('MuiRadio', slot);\n}\nconst radioClasses = generateUtilityClasses('MuiRadio', ['root', 'checked', 'disabled', 'colorPrimary', 'colorSecondary']);\nexport default radioClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"checked\", \"checkedIcon\", \"color\", \"icon\", \"name\", \"onChange\", \"size\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport { alpha } from '@mui/system';\nimport SwitchBase from '../internal/SwitchBase';\nimport useThemeProps from '../styles/useThemeProps';\nimport RadioButtonIcon from './RadioButtonIcon';\nimport capitalize from '../utils/capitalize';\nimport createChainedFunction from '../utils/createChainedFunction';\nimport useRadioGroup from '../RadioGroup/useRadioGroup';\nimport radioClasses, { getRadioUtilityClass } from './radioClasses';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color\n } = ownerState;\n const slots = {\n root: ['root', `color${capitalize(color)}`]\n };\n return _extends({}, classes, composeClasses(slots, getRadioUtilityClass, classes));\n};\nconst RadioRoot = styled(SwitchBase, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiRadio',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`color${capitalize(ownerState.color)}`]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n color: (theme.vars || theme).palette.text.secondary\n}, !ownerState.disableRipple && {\n '&:hover': {\n backgroundColor: theme.vars ? `rgba(${ownerState.color === 'default' ? theme.vars.palette.action.activeChannel : theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(ownerState.color === 'default' ? theme.palette.action.active : theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n}, ownerState.color !== 'default' && {\n [`&.${radioClasses.checked}`]: {\n color: (theme.vars || theme).palette[ownerState.color].main\n }\n}, {\n [`&.${radioClasses.disabled}`]: {\n color: (theme.vars || theme).palette.action.disabled\n }\n}));\nfunction areEqualValues(a, b) {\n if (typeof b === 'object' && b !== null) {\n return a === b;\n }\n\n // The value could be a number, the DOM will stringify it anyway.\n return String(a) === String(b);\n}\nconst defaultCheckedIcon = /*#__PURE__*/_jsx(RadioButtonIcon, {\n checked: true\n});\nconst defaultIcon = /*#__PURE__*/_jsx(RadioButtonIcon, {});\nconst Radio = /*#__PURE__*/React.forwardRef(function Radio(inProps, ref) {\n var _defaultIcon$props$fo, _defaultCheckedIcon$p;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiRadio'\n });\n const {\n checked: checkedProp,\n checkedIcon = defaultCheckedIcon,\n color = 'primary',\n icon = defaultIcon,\n name: nameProp,\n onChange: onChangeProp,\n size = 'medium',\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n size\n });\n const classes = useUtilityClasses(ownerState);\n const radioGroup = useRadioGroup();\n let checked = checkedProp;\n const onChange = createChainedFunction(onChangeProp, radioGroup && radioGroup.onChange);\n let name = nameProp;\n if (radioGroup) {\n if (typeof checked === 'undefined') {\n checked = areEqualValues(radioGroup.value, props.value);\n }\n if (typeof name === 'undefined') {\n name = radioGroup.name;\n }\n }\n return /*#__PURE__*/_jsx(RadioRoot, _extends({\n type: \"radio\",\n icon: /*#__PURE__*/React.cloneElement(icon, {\n fontSize: (_defaultIcon$props$fo = defaultIcon.props.fontSize) != null ? _defaultIcon$props$fo : size\n }),\n checkedIcon: /*#__PURE__*/React.cloneElement(checkedIcon, {\n fontSize: (_defaultCheckedIcon$p = defaultCheckedIcon.props.fontSize) != null ? _defaultCheckedIcon$p : size\n }),\n ownerState: ownerState,\n classes: classes,\n name: name,\n checked: checked,\n onChange: onChange,\n ref: ref,\n className: clsx(classes.root, className)\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Radio.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * If `true`, the component is checked.\n */\n checked: PropTypes.bool,\n /**\n * The icon to display when the component is checked.\n * @default \n */\n checkedIcon: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n * @default 'primary'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * If `true`, the component is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the ripple effect is disabled.\n * @default false\n */\n disableRipple: PropTypes.bool,\n /**\n * The icon to display when the component is unchecked.\n * @default \n */\n icon: PropTypes.node,\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n */\n inputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * Name attribute of the `input` element.\n */\n name: PropTypes.string,\n /**\n * Callback fired when the state is changed.\n *\n * @param {React.ChangeEvent} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n /**\n * If `true`, the `input` element is required.\n * @default false\n */\n required: PropTypes.bool,\n /**\n * The size of the component.\n * `small` is equivalent to the dense radio styling.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The value of the component. The DOM API casts this to a string.\n */\n value: PropTypes.any\n} : void 0;\nexport default Radio;","'use client';\n\nimport * as React from 'react';\nimport RadioGroupContext from './RadioGroupContext';\nexport default function useRadioGroup() {\n return React.useContext(RadioGroupContext);\n}","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getFormGroupUtilityClass(slot) {\n return generateUtilityClass('MuiFormGroup', slot);\n}\nconst formGroupClasses = generateUtilityClasses('MuiFormGroup', ['root', 'row', 'error']);\nexport default formGroupClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"row\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getFormGroupUtilityClass } from './formGroupClasses';\nimport useFormControl from '../FormControl/useFormControl';\nimport formControlState from '../FormControl/formControlState';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n row,\n error\n } = ownerState;\n const slots = {\n root: ['root', row && 'row', error && 'error']\n };\n return composeClasses(slots, getFormGroupUtilityClass, classes);\n};\nconst FormGroupRoot = styled('div', {\n name: 'MuiFormGroup',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.row && styles.row];\n }\n})(({\n ownerState\n}) => _extends({\n display: 'flex',\n flexDirection: 'column',\n flexWrap: 'wrap'\n}, ownerState.row && {\n flexDirection: 'row'\n}));\n\n/**\n * `FormGroup` wraps controls such as `Checkbox` and `Switch`.\n * It provides compact row layout.\n * For the `Radio`, you should be using the `RadioGroup` component instead of this one.\n */\nconst FormGroup = /*#__PURE__*/React.forwardRef(function FormGroup(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFormGroup'\n });\n const {\n className,\n row = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['error']\n });\n const ownerState = _extends({}, props, {\n row,\n error: fcs.error\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(FormGroupRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormGroup.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * Display group of elements in a compact row.\n * @default false\n */\n row: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default FormGroup;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"actions\", \"children\", \"defaultValue\", \"name\", \"onChange\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport FormGroup from '../FormGroup';\nimport useForkRef from '../utils/useForkRef';\nimport useControlled from '../utils/useControlled';\nimport RadioGroupContext from './RadioGroupContext';\nimport useId from '../utils/useId';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst RadioGroup = /*#__PURE__*/React.forwardRef(function RadioGroup(props, ref) {\n const {\n // private\n // eslint-disable-next-line react/prop-types\n actions,\n children,\n defaultValue,\n name: nameProp,\n onChange,\n value: valueProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const rootRef = React.useRef(null);\n const [value, setValueState] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: 'RadioGroup'\n });\n React.useImperativeHandle(actions, () => ({\n focus: () => {\n let input = rootRef.current.querySelector('input:not(:disabled):checked');\n if (!input) {\n input = rootRef.current.querySelector('input:not(:disabled)');\n }\n if (input) {\n input.focus();\n }\n }\n }), []);\n const handleRef = useForkRef(ref, rootRef);\n const name = useId(nameProp);\n const contextValue = React.useMemo(() => ({\n name,\n onChange(event) {\n setValueState(event.target.value);\n if (onChange) {\n onChange(event, event.target.value);\n }\n },\n value\n }), [name, onChange, setValueState, value]);\n return /*#__PURE__*/_jsx(RadioGroupContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(FormGroup, _extends({\n role: \"radiogroup\",\n ref: handleRef\n }, other, {\n children: children\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? RadioGroup.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * The name used to reference the value of the control.\n * If you don't provide this prop, it falls back to a randomly generated name.\n */\n name: PropTypes.string,\n /**\n * Callback fired when a radio button is selected.\n *\n * @param {React.ChangeEvent} event The event source of the callback.\n * @param {string} value The value of the selected radio button.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * Value of the selected radio button. The DOM API casts this to a string.\n */\n value: PropTypes.any\n} : void 0;\nexport default RadioGroup;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst RadioGroupContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n RadioGroupContext.displayName = 'RadioGroupContext';\n}\nexport default RadioGroupContext;","import createStyled from './createStyled';\nconst styled = createStyled();\nexport default styled;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"component\", \"direction\", \"spacing\", \"divider\", \"children\", \"className\", \"useFlexGap\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { deepmerge, unstable_composeClasses as composeClasses, unstable_generateUtilityClass as generateUtilityClass } from '@mui/utils';\nimport systemStyled from '../styled';\nimport useThemePropsSystem from '../useThemeProps';\nimport { extendSxProp } from '../styleFunctionSx';\nimport createTheme from '../createTheme';\nimport { handleBreakpoints, mergeBreakpointsInOrder, resolveBreakpointValues } from '../breakpoints';\nimport { createUnarySpacing, getValue } from '../spacing';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultTheme = createTheme();\n// widening Theme to any so that the consumer can own the theme structure.\nconst defaultCreateStyledComponent = systemStyled('div', {\n name: 'MuiStack',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n});\nfunction useThemePropsDefault(props) {\n return useThemePropsSystem({\n props,\n name: 'MuiStack',\n defaultTheme\n });\n}\n\n/**\n * Return an array with the separator React element interspersed between\n * each React node of the input children.\n *\n * > joinChildren([1,2,3], 0)\n * [1,0,2,0,3]\n */\nfunction joinChildren(children, separator) {\n const childrenArray = React.Children.toArray(children).filter(Boolean);\n return childrenArray.reduce((output, child, index) => {\n output.push(child);\n if (index < childrenArray.length - 1) {\n output.push( /*#__PURE__*/React.cloneElement(separator, {\n key: `separator-${index}`\n }));\n }\n return output;\n }, []);\n}\nconst getSideFromDirection = direction => {\n return {\n row: 'Left',\n 'row-reverse': 'Right',\n column: 'Top',\n 'column-reverse': 'Bottom'\n }[direction];\n};\nexport const style = ({\n ownerState,\n theme\n}) => {\n let styles = _extends({\n display: 'flex',\n flexDirection: 'column'\n }, handleBreakpoints({\n theme\n }, resolveBreakpointValues({\n values: ownerState.direction,\n breakpoints: theme.breakpoints.values\n }), propValue => ({\n flexDirection: propValue\n })));\n if (ownerState.spacing) {\n const transformer = createUnarySpacing(theme);\n const base = Object.keys(theme.breakpoints.values).reduce((acc, breakpoint) => {\n if (typeof ownerState.spacing === 'object' && ownerState.spacing[breakpoint] != null || typeof ownerState.direction === 'object' && ownerState.direction[breakpoint] != null) {\n acc[breakpoint] = true;\n }\n return acc;\n }, {});\n const directionValues = resolveBreakpointValues({\n values: ownerState.direction,\n base\n });\n const spacingValues = resolveBreakpointValues({\n values: ownerState.spacing,\n base\n });\n if (typeof directionValues === 'object') {\n Object.keys(directionValues).forEach((breakpoint, index, breakpoints) => {\n const directionValue = directionValues[breakpoint];\n if (!directionValue) {\n const previousDirectionValue = index > 0 ? directionValues[breakpoints[index - 1]] : 'column';\n directionValues[breakpoint] = previousDirectionValue;\n }\n });\n }\n const styleFromPropValue = (propValue, breakpoint) => {\n if (ownerState.useFlexGap) {\n return {\n gap: getValue(transformer, propValue)\n };\n }\n return {\n // The useFlexGap={false} implement relies on each child to give up control of the margin.\n // We need to reset the margin to avoid double spacing.\n '& > :not(style):not(style)': {\n margin: 0\n },\n '& > :not(style) ~ :not(style)': {\n [`margin${getSideFromDirection(breakpoint ? directionValues[breakpoint] : ownerState.direction)}`]: getValue(transformer, propValue)\n }\n };\n };\n styles = deepmerge(styles, handleBreakpoints({\n theme\n }, spacingValues, styleFromPropValue));\n }\n styles = mergeBreakpointsInOrder(theme.breakpoints, styles);\n return styles;\n};\nexport default function createStack(options = {}) {\n const {\n // This will allow adding custom styled fn (for example for custom sx style function)\n createStyledComponent = defaultCreateStyledComponent,\n useThemeProps = useThemePropsDefault,\n componentName = 'MuiStack'\n } = options;\n const useUtilityClasses = () => {\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, slot => generateUtilityClass(componentName, slot), {});\n };\n const StackRoot = createStyledComponent(style);\n const Stack = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {\n const themeProps = useThemeProps(inProps);\n const props = extendSxProp(themeProps); // `color` type conflicts with html color attribute.\n const {\n component = 'div',\n direction = 'column',\n spacing = 0,\n divider,\n children,\n className,\n useFlexGap = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = {\n direction,\n spacing,\n useFlexGap\n };\n const classes = useUtilityClasses();\n return /*#__PURE__*/_jsx(StackRoot, _extends({\n as: component,\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n children: divider ? joinChildren(children, divider) : children\n }));\n });\n process.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n children: PropTypes.node,\n direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n divider: PropTypes.node,\n spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n } : void 0;\n return Stack;\n}","'use client';\n\nimport PropTypes from 'prop-types';\nimport { createStack } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nconst Stack = createStack({\n createStyledComponent: styled('div', {\n name: 'MuiStack',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n }),\n useThemeProps: inProps => useThemeProps({\n props: inProps,\n name: 'MuiStack'\n })\n});\nprocess.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Defines the `flex-direction` style property.\n * It is applied for all screen sizes.\n * @default 'column'\n */\n direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n /**\n * Add an element between each child.\n */\n divider: PropTypes.node,\n /**\n * Defines the space between immediate children.\n * @default 0\n */\n spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n /**\n * The system prop, which allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * If `true`, the CSS flexbox `gap` is used instead of applying `margin` to children.\n *\n * While CSS `gap` removes the [known limitations](https://mui.com/joy-ui/react-stack/#limitations),\n * it is not fully supported in some browsers. We recommend checking https://caniuse.com/?search=flex%20gap before using this flag.\n *\n * To enable this flag globally, follow the [theme's default props](https://mui.com/material-ui/customization/theme-components/#default-props) configuration.\n * @default false\n */\n useFlexGap: PropTypes.bool\n} : void 0;\nexport default Stack;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getSwitchBaseUtilityClass(slot) {\n return generateUtilityClass('PrivateSwitchBase', slot);\n}\nconst switchBaseClasses = generateUtilityClasses('PrivateSwitchBase', ['root', 'checked', 'disabled', 'input', 'edgeStart', 'edgeEnd']);\nexport default switchBaseClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"checked\", \"checkedIcon\", \"className\", \"defaultChecked\", \"disabled\", \"disableFocusRipple\", \"edge\", \"icon\", \"id\", \"inputProps\", \"inputRef\", \"name\", \"onBlur\", \"onChange\", \"onFocus\", \"readOnly\", \"required\", \"tabIndex\", \"type\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport capitalize from '../utils/capitalize';\nimport styled from '../styles/styled';\nimport useControlled from '../utils/useControlled';\nimport useFormControl from '../FormControl/useFormControl';\nimport ButtonBase from '../ButtonBase';\nimport { getSwitchBaseUtilityClass } from './switchBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n checked,\n disabled,\n edge\n } = ownerState;\n const slots = {\n root: ['root', checked && 'checked', disabled && 'disabled', edge && `edge${capitalize(edge)}`],\n input: ['input']\n };\n return composeClasses(slots, getSwitchBaseUtilityClass, classes);\n};\nconst SwitchBaseRoot = styled(ButtonBase)(({\n ownerState\n}) => _extends({\n padding: 9,\n borderRadius: '50%'\n}, ownerState.edge === 'start' && {\n marginLeft: ownerState.size === 'small' ? -3 : -12\n}, ownerState.edge === 'end' && {\n marginRight: ownerState.size === 'small' ? -3 : -12\n}));\nconst SwitchBaseInput = styled('input')({\n cursor: 'inherit',\n position: 'absolute',\n opacity: 0,\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n margin: 0,\n padding: 0,\n zIndex: 1\n});\n\n/**\n * @ignore - internal component.\n */\nconst SwitchBase = /*#__PURE__*/React.forwardRef(function SwitchBase(props, ref) {\n const {\n autoFocus,\n checked: checkedProp,\n checkedIcon,\n className,\n defaultChecked,\n disabled: disabledProp,\n disableFocusRipple = false,\n edge = false,\n icon,\n id,\n inputProps,\n inputRef,\n name,\n onBlur,\n onChange,\n onFocus,\n readOnly,\n required = false,\n tabIndex,\n type,\n value\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const [checked, setCheckedState] = useControlled({\n controlled: checkedProp,\n default: Boolean(defaultChecked),\n name: 'SwitchBase',\n state: 'checked'\n });\n const muiFormControl = useFormControl();\n const handleFocus = event => {\n if (onFocus) {\n onFocus(event);\n }\n if (muiFormControl && muiFormControl.onFocus) {\n muiFormControl.onFocus(event);\n }\n };\n const handleBlur = event => {\n if (onBlur) {\n onBlur(event);\n }\n if (muiFormControl && muiFormControl.onBlur) {\n muiFormControl.onBlur(event);\n }\n };\n const handleInputChange = event => {\n // Workaround for https://github.com/facebook/react/issues/9023\n if (event.nativeEvent.defaultPrevented) {\n return;\n }\n const newChecked = event.target.checked;\n setCheckedState(newChecked);\n if (onChange) {\n // TODO v6: remove the second argument.\n onChange(event, newChecked);\n }\n };\n let disabled = disabledProp;\n if (muiFormControl) {\n if (typeof disabled === 'undefined') {\n disabled = muiFormControl.disabled;\n }\n }\n const hasLabelFor = type === 'checkbox' || type === 'radio';\n const ownerState = _extends({}, props, {\n checked,\n disabled,\n disableFocusRipple,\n edge\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(SwitchBaseRoot, _extends({\n component: \"span\",\n className: clsx(classes.root, className),\n centerRipple: true,\n focusRipple: !disableFocusRipple,\n disabled: disabled,\n tabIndex: null,\n role: undefined,\n onFocus: handleFocus,\n onBlur: handleBlur,\n ownerState: ownerState,\n ref: ref\n }, other, {\n children: [/*#__PURE__*/_jsx(SwitchBaseInput, _extends({\n autoFocus: autoFocus,\n checked: checkedProp,\n defaultChecked: defaultChecked,\n className: classes.input,\n disabled: disabled,\n id: hasLabelFor ? id : undefined,\n name: name,\n onChange: handleInputChange,\n readOnly: readOnly,\n ref: inputRef,\n required: required,\n ownerState: ownerState,\n tabIndex: tabIndex,\n type: type\n }, type === 'checkbox' && value === undefined ? {} : {\n value\n }, inputProps)), checked ? checkedIcon : icon]\n }));\n});\n\n// NB: If changed, please update Checkbox, Switch and Radio\n// so that the API documentation is updated.\nprocess.env.NODE_ENV !== \"production\" ? SwitchBase.propTypes = {\n /**\n * If `true`, the `input` element is focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n /**\n * If `true`, the component is checked.\n */\n checked: PropTypes.bool,\n /**\n * The icon to display when the component is checked.\n */\n checkedIcon: PropTypes.node.isRequired,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * @ignore\n */\n defaultChecked: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the keyboard focus ripple is disabled.\n * @default false\n */\n disableFocusRipple: PropTypes.bool,\n /**\n * If given, uses a negative margin to counteract the padding on one\n * side (this is often helpful for aligning the left or right\n * side of the icon with content above or below, without ruining the border\n * size and shape).\n * @default false\n */\n edge: PropTypes.oneOf(['end', 'start', false]),\n /**\n * The icon to display when the component is unchecked.\n */\n icon: PropTypes.node.isRequired,\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n */\n inputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /*\n * @ignore\n */\n name: PropTypes.string,\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n /**\n * Callback fired when the state is changed.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n /**\n * It prevents the user from changing the value of the field\n * (not from interacting with the field).\n */\n readOnly: PropTypes.bool,\n /**\n * If `true`, the `input` element is required.\n */\n required: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.object,\n /**\n * @ignore\n */\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * The input component prop `type`.\n */\n type: PropTypes.string.isRequired,\n /**\n * The value of the component.\n */\n value: PropTypes.any\n} : void 0;\nexport default SwitchBase;","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}"],"names":["getFormControlLabelUtilityClasses","slot","generateUtilityClass","generateUtilityClasses","_excluded","FormControlLabelRoot","styled","name","overridesResolver","props","styles","ownerState","_defineProperty","concat","formControlLabelClasses","label","root","capitalize","labelPlacement","_ref3","theme","_extends","display","alignItems","cursor","verticalAlign","WebkitTapHighlightColor","marginLeft","marginRight","disabled","flexDirection","color","vars","palette","text","AsteriskComponent","asterisk","_ref4","error","main","React","inProps","ref","_ref","_slotProps$typography","useThemeProps","className","_props$componentsProp","componentsProps","control","disabledProp","disableTypography","labelProp","_props$labelPlacement","requiredProp","required","_props$slotProps","slotProps","other","_objectWithoutPropertiesLoose","muiFormControl","useFormControl","controlProps","forEach","key","fcs","formControlState","states","classes","slots","composeClasses","useUtilityClasses","typographySlotProps","typography","type","Typography","_jsx","component","clsx","children","_jsxs","Stack","direction","createSvgIcon","d","RadioButtonIconRoot","position","RadioButtonIconBackground","RadioButtonUncheckedIcon","transform","RadioButtonIconDot","RadioButtonCheckedIcon","left","transition","transitions","create","easing","easeIn","duration","shortest","checked","easeOut","_props$checked","_props$classes","fontSize","background","dot","getRadioUtilityClass","RadioRoot","SwitchBase","shouldForwardProp","prop","rootShouldForwardProp","secondary","disableRipple","backgroundColor","action","activeChannel","mainChannel","hoverOpacity","alpha","active","radioClasses","defaultCheckedIcon","RadioButtonIcon","defaultIcon","_defaultIcon$props$fo","_defaultCheckedIcon$p","a","b","checkedProp","_props$checkedIcon","checkedIcon","_props$color","_props$icon","icon","nameProp","onChangeProp","onChange","_props$size","size","radioGroup","RadioGroupContext","createChainedFunction","value","String","getFormGroupUtilityClass","FormGroupRoot","row","flexWrap","_props$row","actions","defaultValue","valueProp","rootRef","_useControlled","useControlled","controlled","default","_useControlled2","_slicedToArray","setValueState","focus","input","current","querySelector","handleRef","useForkRef","useId","contextValue","event","target","Provider","FormGroup","role","undefined","createStyled","defaultTheme","createTheme","defaultCreateStyledComponent","systemStyled","useThemePropsDefault","useThemePropsSystem","joinChildren","separator","childrenArray","toArray","filter","Boolean","reduce","output","child","index","push","length","style","handleBreakpoints","resolveBreakpointValues","values","breakpoints","propValue","spacing","transformer","createUnarySpacing","base","Object","keys","acc","breakpoint","directionValues","spacingValues","previousDirectionValue","deepmerge","useFlexGap","gap","getValue","margin","column","mergeBreakpointsInOrder","options","arguments","_options$createStyled","createStyledComponent","_options$useThemeProp","_options$componentNam","componentName","StackRoot","themeProps","extendSxProp","_props$component","_props$direction","_props$spacing","divider","_props$useFlexGap","as","createStack","getSwitchBaseUtilityClass","SwitchBaseRoot","ButtonBase","padding","borderRadius","edge","SwitchBaseInput","opacity","width","height","top","zIndex","autoFocus","defaultChecked","_props$disableFocusRi","disableFocusRipple","_props$edge","id","inputProps","inputRef","onBlur","onFocus","readOnly","_props$required","tabIndex","state","setCheckedState","hasLabelFor","centerRipple","focusRipple","nativeEvent","defaultPrevented","newChecked","_len","funcs","Array","_key","func","_len2","args","_key2","apply","this"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/1581.77dce896.chunk.js b/portal-ui/build/static/js/1581.9e1d2acf.chunk.js similarity index 96% rename from portal-ui/build/static/js/1581.77dce896.chunk.js rename to portal-ui/build/static/js/1581.9e1d2acf.chunk.js index 4f57b95a87..aa88dc23d1 100644 --- a/portal-ui/build/static/js/1581.77dce896.chunk.js +++ b/portal-ui/build/static/js/1581.9e1d2acf.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1581],{1581:function(t,e,n){n.r(e);var a=n(29439),o=n(72791),i=n(29945),u=n(45248),r=n(23814),l=n(56028),c=n(84741),s=n(87995),d=n(81551),f=n(31776),b=n(82342),h=n(80184);e.default=function(t){var e=t.open,n=t.enabled,v=t.cfg,x=t.selectedBucket,g=t.closeModalAndRefresh,p=(0,d.TL)(),m=(0,o.useState)(!1),k=(0,a.Z)(m,2),j=k[0],Z=k[1],C=(0,o.useState)(!1),S=(0,a.Z)(C,2),q=S[0],z=S[1],_=(0,o.useState)("1"),y=(0,a.Z)(_,2),B=y[0],w=y[1],E=(0,o.useState)("Ti"),T=(0,a.Z)(E,2),F=T[0],O=T[1],Q=(0,o.useState)(!1),A=(0,a.Z)(Q,2),I=A[0],L=A[1];(0,o.useEffect)((function(){if(n&&(z(!0),v)){var t=(0,u.Am)(v.quota||0,!0,!1,!0);w(t.total.toString()),O(t.unit),L(!0)}}),[n,v]),(0,o.useEffect)((function(){L(!q||/^\d*(?:\.\d{1,2})?$/.test(B))}),[q,B]);return(0,h.jsx)(l.Z,{modalOpen:e,onClose:function(){g()},title:"Enable Bucket Quota",titleIcon:(0,h.jsx)(i.Wqw,{}),children:(0,h.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(t){t.preventDefault(),!j&&I&&f.h.buckets.setBucketQuota(x,{enabled:q,amount:parseInt((0,u.Pw)(B,F,!0)),quota_type:"hard"}).then((function(){Z(!1),g()})).catch((function(t){Z(!1),p((0,s.zb)((0,b.g)(t.error)))}))},children:(0,h.jsxs)(i.ltY,{withBorders:!1,containerPadding:!1,children:[(0,h.jsx)(i.rsf,{value:"bucket_quota",id:"bucket_quota",name:"bucket_quota",checked:q,onChange:function(t){z(t.target.checked)},label:"Enabled"}),q&&(0,h.jsx)(i.Wzg,{id:"quota_size",name:"quota_size",onChange:function(t){w(t.target.value),t.target.validity.valid?L(!0):L(!1)},label:"Quota",value:B,required:!0,min:"1",overlayObject:(0,h.jsx)(c.Z,{id:"quota_unit",onUnitChange:function(t){O(t)},unitSelected:F,unitsList:(0,u.zQ)(["Ki"]),disabled:!1}),error:I?"":"Please enter a valid quota"}),(0,h.jsxs)(i.rjZ,{item:!0,xs:12,sx:r.ID.modalButtonBar,children:[(0,h.jsx)(i.zxk,{id:"cancel",type:"button",variant:"regular",disabled:j,onClick:function(){g()},label:"Cancel"}),(0,h.jsx)(i.zxk,{id:"save",type:"submit",variant:"callAction",disabled:j||!I,label:"Save"})]}),j&&(0,h.jsx)(i.rjZ,{item:!0,xs:12,children:(0,h.jsx)(i.kod,{})})]})})})}},84741:function(t,e,n){var a=n(29439),o=n(72791),i=n(11135),u=n(25787),r=n(80911),l=n(77865),c=n(80184);e.Z=(0,u.Z)((function(t){return(0,i.Z)({buttonTrigger:{border:"#F0F2F2 1px solid",borderRadius:3,color:"#838383",backgroundColor:"#fff",fontSize:12}})}))((function(t){var e=t.classes,n=t.id,i=t.unitSelected,u=t.unitsList,s=t.disabled,d=void 0!==s&&s,f=t.onUnitChange,b=o.useState(null),h=(0,a.Z)(b,2),v=h[0],x=h[1],g=Boolean(v),p=function(t){x(null),""!==t&&f&&f(t)};return(0,c.jsxs)(o.Fragment,{children:[(0,c.jsx)("button",{id:"".concat(n,"-button"),"aria-controls":"".concat(n,"-menu"),"aria-haspopup":"true","aria-expanded":g?"true":void 0,onClick:function(t){x(t.currentTarget)},className:e.buttonTrigger,disabled:d,type:"button",children:i}),(0,c.jsx)(r.Z,{id:"".concat(n,"-menu"),"aria-labelledby":"".concat(n,"-button"),anchorEl:v,open:g,onClose:function(){p("")},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},children:u.map((function(t){return(0,c.jsx)(l.Z,{onClick:function(){return p(t.value)},children:t.label},"itemUnit-".concat(t.value,"-").concat(t.label))}))})]})}))}}]); -//# sourceMappingURL=1581.77dce896.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1581],{1581:function(t,e,n){n.r(e);var a=n(29439),o=n(72791),i=n(29945),u=n(45248),r=n(23814),l=n(56028),c=n(84741),s=n(87995),d=n(44690),f=n(31776),b=n(82342),h=n(80184);e.default=function(t){var e=t.open,n=t.enabled,v=t.cfg,x=t.selectedBucket,g=t.closeModalAndRefresh,p=(0,d.TL)(),m=(0,o.useState)(!1),k=(0,a.Z)(m,2),j=k[0],Z=k[1],C=(0,o.useState)(!1),S=(0,a.Z)(C,2),q=S[0],z=S[1],_=(0,o.useState)("1"),y=(0,a.Z)(_,2),B=y[0],w=y[1],E=(0,o.useState)("Ti"),T=(0,a.Z)(E,2),F=T[0],O=T[1],Q=(0,o.useState)(!1),A=(0,a.Z)(Q,2),I=A[0],L=A[1];(0,o.useEffect)((function(){if(n&&(z(!0),v)){var t=(0,u.Am)(v.quota||0,!0,!1,!0);w(t.total.toString()),O(t.unit),L(!0)}}),[n,v]),(0,o.useEffect)((function(){L(!q||/^\d*(?:\.\d{1,2})?$/.test(B))}),[q,B]);return(0,h.jsx)(l.Z,{modalOpen:e,onClose:function(){g()},title:"Enable Bucket Quota",titleIcon:(0,h.jsx)(i.Wqw,{}),children:(0,h.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(t){t.preventDefault(),!j&&I&&f.h.buckets.setBucketQuota(x,{enabled:q,amount:parseInt((0,u.Pw)(B,F,!0)),quota_type:"hard"}).then((function(){Z(!1),g()})).catch((function(t){Z(!1),p((0,s.zb)((0,b.g)(t.error)))}))},children:(0,h.jsxs)(i.ltY,{withBorders:!1,containerPadding:!1,children:[(0,h.jsx)(i.rsf,{value:"bucket_quota",id:"bucket_quota",name:"bucket_quota",checked:q,onChange:function(t){z(t.target.checked)},label:"Enabled"}),q&&(0,h.jsx)(i.Wzg,{id:"quota_size",name:"quota_size",onChange:function(t){w(t.target.value),t.target.validity.valid?L(!0):L(!1)},label:"Quota",value:B,required:!0,min:"1",overlayObject:(0,h.jsx)(c.Z,{id:"quota_unit",onUnitChange:function(t){O(t)},unitSelected:F,unitsList:(0,u.zQ)(["Ki"]),disabled:!1}),error:I?"":"Please enter a valid quota"}),(0,h.jsxs)(i.rjZ,{item:!0,xs:12,sx:r.ID.modalButtonBar,children:[(0,h.jsx)(i.zxk,{id:"cancel",type:"button",variant:"regular",disabled:j,onClick:function(){g()},label:"Cancel"}),(0,h.jsx)(i.zxk,{id:"save",type:"submit",variant:"callAction",disabled:j||!I,label:"Save"})]}),j&&(0,h.jsx)(i.rjZ,{item:!0,xs:12,children:(0,h.jsx)(i.kod,{})})]})})})}},84741:function(t,e,n){var a=n(29439),o=n(72791),i=n(11135),u=n(25787),r=n(80911),l=n(77865),c=n(80184);e.Z=(0,u.Z)((function(t){return(0,i.Z)({buttonTrigger:{border:"#F0F2F2 1px solid",borderRadius:3,color:"#838383",backgroundColor:"#fff",fontSize:12}})}))((function(t){var e=t.classes,n=t.id,i=t.unitSelected,u=t.unitsList,s=t.disabled,d=void 0!==s&&s,f=t.onUnitChange,b=o.useState(null),h=(0,a.Z)(b,2),v=h[0],x=h[1],g=Boolean(v),p=function(t){x(null),""!==t&&f&&f(t)};return(0,c.jsxs)(o.Fragment,{children:[(0,c.jsx)("button",{id:"".concat(n,"-button"),"aria-controls":"".concat(n,"-menu"),"aria-haspopup":"true","aria-expanded":g?"true":void 0,onClick:function(t){x(t.currentTarget)},className:e.buttonTrigger,disabled:d,type:"button",children:i}),(0,c.jsx)(r.Z,{id:"".concat(n,"-menu"),"aria-labelledby":"".concat(n,"-button"),anchorEl:v,open:g,onClose:function(){p("")},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},children:u.map((function(t){return(0,c.jsx)(l.Z,{onClick:function(){return p(t.value)},children:t.label},"itemUnit-".concat(t.value,"-").concat(t.label))}))})]})}))}}]); +//# sourceMappingURL=1581.9e1d2acf.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/1581.77dce896.chunk.js.map b/portal-ui/build/static/js/1581.9e1d2acf.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/1581.77dce896.chunk.js.map rename to portal-ui/build/static/js/1581.9e1d2acf.chunk.js.map index 318a693452..f92737fc26 100644 --- a/portal-ui/build/static/js/1581.77dce896.chunk.js.map +++ b/portal-ui/build/static/js/1581.9e1d2acf.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/1581.77dce896.chunk.js","mappings":"2PAsMA,UApJoB,SAAHA,GAMS,IALxBC,EAAID,EAAJC,KACAC,EAAOF,EAAPE,QACAC,EAAGH,EAAHG,IACAC,EAAcJ,EAAdI,eACAC,EAAoBL,EAApBK,qBAEMC,GAAWC,EAAAA,EAAAA,MACjBC,GAA8BC,EAAAA,EAAAA,WAAkB,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA/CI,EAAOF,EAAA,GAAEG,EAAUH,EAAA,GAC1BI,GAAwCL,EAAAA,EAAAA,WAAkB,GAAMM,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAAzDE,EAAYD,EAAA,GAAEE,EAAeF,EAAA,GACpCG,GAAkCT,EAAAA,EAAAA,UAAiB,KAAIU,GAAAR,EAAAA,EAAAA,GAAAO,EAAA,GAAhDE,EAASD,EAAA,GAAEE,EAAYF,EAAA,GAC9BG,GAAkCb,EAAAA,EAAAA,UAAiB,MAAKc,GAAAZ,EAAAA,EAAAA,GAAAW,EAAA,GAAjDE,EAASD,EAAA,GAAEE,EAAYF,EAAA,GAC9BG,GAAoCjB,EAAAA,EAAAA,WAAkB,GAAMkB,GAAAhB,EAAAA,EAAAA,GAAAe,EAAA,GAArDE,EAAUD,EAAA,GAAEE,EAAaF,EAAA,IAEhCG,EAAAA,EAAAA,YAAU,WACR,GAAI5B,IACFe,GAAgB,GACZd,GAAK,CACP,IAAM4B,GAAWC,EAAAA,EAAAA,IAAe7B,EAAI8B,OAAS,GAAG,GAAM,GAAO,GAE7DZ,EAAaU,EAASG,MAAMC,YAC5BV,EAAaM,EAASK,MACtBP,GAAc,EAChB,CAEJ,GAAG,CAAC3B,EAASC,KAEb2B,EAAAA,EAAAA,YAAU,WAQRD,GALKb,GAFa,sBAOMqB,KAAKjB,GAC/B,GAAG,CAACJ,EAAcI,IAuBlB,OACEkB,EAAAA,EAAAA,KAACC,EAAAA,EAAY,CACXC,UAAWvC,EACXwC,QAAS,WACPpC,GACF,EACAqC,MAAM,sBACNC,WAAWL,EAAAA,EAAAA,KAACM,EAAAA,IAAe,IAAIC,UAE/BP,EAAAA,EAAAA,KAAA,QACEQ,YAAU,EACVC,aAAa,MACbC,SAAU,SAACC,GACTA,EAAEC,kBAjCJtC,GAAYgB,GAIhBuB,EAAAA,EAAIC,QACDC,eAAejD,EAAgB,CAC9BF,QAASc,EACTsC,OAAQC,UAASC,EAAAA,EAAAA,IAASpC,EAAWI,GAAW,IAChDiC,WAAY,SAEbC,MAAK,WACJ7C,GAAW,GACXR,GACF,IACCsD,OAAM,SAACC,GACN/C,GAAW,GACXP,GAASuD,EAAAA,EAAAA,KAA0BC,EAAAA,EAAAA,GAAeF,EAAIG,QACxD,GAkBE,EAAElB,UAEFmB,EAAAA,EAAAA,MAACC,EAAAA,IAAU,CAACC,aAAa,EAAOC,kBAAkB,EAAMtB,SAAA,EACtDP,EAAAA,EAAAA,KAAC8B,EAAAA,IAAM,CACLC,MAAM,eACNC,GAAG,eACHC,KAAK,eACLC,QAASxD,EACTyD,SAAU,SAACC,GACTzD,EAAgByD,EAAMC,OAAOH,QAC/B,EACAI,MAAO,YAER5D,IACCsB,EAAAA,EAAAA,KAACuC,EAAAA,IAAQ,CACPP,GAAG,aACHC,KAAK,aACLE,SAAU,SAACxB,GACT5B,EAAa4B,EAAE0B,OAAON,OACjBpB,EAAE0B,OAAOG,SAASC,MAGrBlD,GAAc,GAFdA,GAAc,EAIlB,EACA+C,MAAM,QACNP,MAAOjD,EACP4D,UAAQ,EACRC,IAAI,IACJC,eACE5C,EAAAA,EAAAA,KAAC6C,EAAAA,EAAa,CACZb,GAAI,aACJc,aAAc,SAACC,GACb5D,EAAa4D,EACf,EACAC,aAAc9D,EACd+D,WAAWC,EAAAA,EAAAA,IAAwB,CAAC,OACpCC,UAAU,IAGd1B,MAAQnC,EAA4C,GAA/B,gCAGzBoC,EAAAA,EAAAA,MAAC0B,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAIC,GAAIC,EAAAA,GAAgBC,eAAelD,SAAA,EACpDP,EAAAA,EAAAA,KAAC0D,EAAAA,IAAM,CACL1B,GAAI,SACJ2B,KAAK,SACLC,QAAQ,UACRT,SAAU7E,EACVuF,QAAS,WACP9F,GACF,EACAuE,MAAO,YAGTtC,EAAAA,EAAAA,KAAC0D,EAAAA,IAAM,CACL1B,GAAI,OACJ2B,KAAK,SACLC,QAAQ,aACRT,SAAU7E,IAAYgB,EACtBgD,MAAO,YAGVhE,IACC0B,EAAAA,EAAAA,KAACoD,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAG/C,UAChBP,EAAAA,EAAAA,KAAC8D,EAAAA,IAAW,YAO1B,C,yGCzFA,KAAeC,EAAAA,EAAAA,IA3EA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,GAAa,CACXC,cAAe,CACbC,OAAQ,oBACRC,aAAc,EACdC,MAAO,UACPC,gBAAiB,OACjBC,SAAU,KAEX,GAkEL,EAhEsB,SAAH7G,GAOG,IANpB8G,EAAO9G,EAAP8G,QACAxC,EAAEtE,EAAFsE,GACAgB,EAAYtF,EAAZsF,aACAC,EAASvF,EAATuF,UAASwB,EAAA/G,EACTyF,SAAAA,OAAQ,IAAAsB,GAAQA,EAChB3B,EAAYpF,EAAZoF,aAEA4B,EAAgCC,EAAAA,SAAmC,MAAKC,GAAAvG,EAAAA,EAAAA,GAAAqG,EAAA,GAAjEG,EAAQD,EAAA,GAAEE,EAAWF,EAAA,GACtBjH,EAAOoH,QAAQF,GAIfG,EAAc,SAACC,GACnBH,EAAY,MACI,KAAZG,GAAkBnC,GACpBA,EAAamC,EAEjB,EAEA,OACEvD,EAAAA,EAAAA,MAACwD,EAAAA,SAAQ,CAAA3E,SAAA,EACPP,EAAAA,EAAAA,KAAA,UACEgC,GAAE,GAAAmD,OAAKnD,EAAE,WACT,mBAAAmD,OAAkBnD,EAAE,SACpB,gBAAc,OACd,gBAAerE,EAAO,YAASyH,EAC/BvB,QAjBc,SAACzB,GACnB0C,EAAY1C,EAAMiD,cACpB,EAgBMC,UAAWd,EAAQN,cACnBf,SAAUA,EACVQ,KAAM,SAASpD,SAEdyC,KAEHhD,EAAAA,EAAAA,KAACuF,EAAAA,EAAI,CACHvD,GAAE,GAAAmD,OAAKnD,EAAE,SACT,qBAAAmD,OAAoBnD,EAAE,WACtB6C,SAAUA,EACVlH,KAAMA,EACNwC,QAAS,WACP6E,EAAY,GACd,EACAQ,aAAc,CACZC,SAAU,SACVC,WAAY,UAEdC,gBAAiB,CACfF,SAAU,MACVC,WAAY,UACZnF,SAED0C,EAAU2C,KAAI,SAAC9F,GAAI,OAClBE,EAAAA,EAAAA,KAAC6F,EAAAA,EAAQ,CACPhC,QAAS,kBAAMmB,EAAYlF,EAAKiC,MAAM,EAACxB,SAGtCT,EAAKwC,OAAK,YAAA6C,OAFMrF,EAAKiC,MAAK,KAAAoD,OAAIrF,EAAKwC,OAG3B,QAKrB,G","sources":["screens/Console/Buckets/BucketDetails/EnableQuota.tsx","screens/Console/Common/FormComponents/InputUnitMenu/InputUnitMenu.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport {\n BucketQuotaIcon,\n Button,\n FormLayout,\n InputBox,\n Switch,\n Grid,\n ProgressBar,\n} from \"mds\";\nimport {\n calculateBytes,\n getBytes,\n k8sScalarUnitsExcluding,\n} from \"../../../../common/utils\";\n\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport InputUnitMenu from \"../../Common/FormComponents/InputUnitMenu/InputUnitMenu\";\n\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { BucketQuota } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IEnableQuotaProps {\n open: boolean;\n enabled: boolean;\n cfg: BucketQuota | null;\n selectedBucket: string;\n closeModalAndRefresh: () => void;\n}\n\nconst EnableQuota = ({\n open,\n enabled,\n cfg,\n selectedBucket,\n closeModalAndRefresh,\n}: IEnableQuotaProps) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [quotaEnabled, setQuotaEnabled] = useState(false);\n const [quotaSize, setQuotaSize] = useState(\"1\");\n const [quotaUnit, setQuotaUnit] = useState(\"Ti\");\n const [validInput, setValidInput] = useState(false);\n\n useEffect(() => {\n if (enabled) {\n setQuotaEnabled(true);\n if (cfg) {\n const unitCalc = calculateBytes(cfg.quota || 0, true, false, true);\n\n setQuotaSize(unitCalc.total.toString());\n setQuotaUnit(unitCalc.unit);\n setValidInput(true);\n }\n }\n }, [enabled, cfg]);\n\n useEffect(() => {\n const valRegExp = /^\\d*(?:\\.\\d{1,2})?$/;\n\n if (!quotaEnabled) {\n setValidInput(true);\n return;\n }\n\n setValidInput(valRegExp.test(quotaSize));\n }, [quotaEnabled, quotaSize]);\n\n const enableBucketEncryption = () => {\n if (loading || !validInput) {\n return;\n }\n\n api.buckets\n .setBucketQuota(selectedBucket, {\n enabled: quotaEnabled,\n amount: parseInt(getBytes(quotaSize, quotaUnit, true)),\n quota_type: \"hard\",\n })\n .then(() => {\n setLoading(false);\n closeModalAndRefresh();\n })\n .catch((err) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n return (\n {\n closeModalAndRefresh();\n }}\n title=\"Enable Bucket Quota\"\n titleIcon={}\n >\n ) => {\n e.preventDefault();\n enableBucketEncryption();\n }}\n >\n \n ) => {\n setQuotaEnabled(event.target.checked);\n }}\n label={\"Enabled\"}\n />\n {quotaEnabled && (\n ) => {\n setQuotaSize(e.target.value);\n if (!e.target.validity.valid) {\n setValidInput(false);\n } else {\n setValidInput(true);\n }\n }}\n label=\"Quota\"\n value={quotaSize}\n required\n min=\"1\"\n overlayObject={\n {\n setQuotaUnit(newValue);\n }}\n unitSelected={quotaUnit}\n unitsList={k8sScalarUnitsExcluding([\"Ki\"])}\n disabled={false}\n />\n }\n error={!validInput ? \"Please enter a valid quota\" : \"\"}\n />\n )}\n \n {\n closeModalAndRefresh();\n }}\n label={\"Cancel\"}\n />\n\n \n \n {loading && (\n \n \n \n )}\n \n \n \n );\n};\n\nexport default EnableQuota;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { SelectorType } from \"mds\";\nimport { Menu, MenuItem } from \"@mui/material\";\n\ninterface IInputUnitBox {\n classes: any;\n id: string;\n unitSelected: string;\n unitsList: SelectorType[];\n disabled?: boolean;\n onUnitChange?: (newValue: string) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonTrigger: {\n border: \"#F0F2F2 1px solid\",\n borderRadius: 3,\n color: \"#838383\",\n backgroundColor: \"#fff\",\n fontSize: 12,\n },\n });\n\nconst InputUnitMenu = ({\n classes,\n id,\n unitSelected,\n unitsList,\n disabled = false,\n onUnitChange,\n}: IInputUnitBox) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const open = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleClose = (newUnit: string) => {\n setAnchorEl(null);\n if (newUnit !== \"\" && onUnitChange) {\n onUnitChange(newUnit);\n }\n };\n\n return (\n \n \n {unitSelected}\n \n {\n handleClose(\"\");\n }}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"center\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"center\",\n }}\n >\n {unitsList.map((unit) => (\n handleClose(unit.value)}\n key={`itemUnit-${unit.value}-${unit.label}`}\n >\n {unit.label}\n \n ))}\n \n \n );\n};\n\nexport default withStyles(styles)(InputUnitMenu);\n"],"names":["_ref","open","enabled","cfg","selectedBucket","closeModalAndRefresh","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","loading","setLoading","_useState3","_useState4","quotaEnabled","setQuotaEnabled","_useState5","_useState6","quotaSize","setQuotaSize","_useState7","_useState8","quotaUnit","setQuotaUnit","_useState9","_useState10","validInput","setValidInput","useEffect","unitCalc","calculateBytes","quota","total","toString","unit","test","_jsx","ModalWrapper","modalOpen","onClose","title","titleIcon","BucketQuotaIcon","children","noValidate","autoComplete","onSubmit","e","preventDefault","api","buckets","setBucketQuota","amount","parseInt","getBytes","quota_type","then","catch","err","setModalErrorSnackMessage","errorToHandler","error","_jsxs","FormLayout","withBorders","containerPadding","Switch","value","id","name","checked","onChange","event","target","label","InputBox","validity","valid","required","min","overlayObject","InputUnitMenu","onUnitChange","newValue","unitSelected","unitsList","k8sScalarUnitsExcluding","disabled","Grid","item","xs","sx","modalStyleUtils","modalButtonBar","Button","type","variant","onClick","ProgressBar","withStyles","theme","createStyles","buttonTrigger","border","borderRadius","color","backgroundColor","fontSize","classes","_ref$disabled","_React$useState","React","_React$useState2","anchorEl","setAnchorEl","Boolean","handleClose","newUnit","Fragment","concat","undefined","currentTarget","className","Menu","anchorOrigin","vertical","horizontal","transformOrigin","map","MenuItem"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/1581.9e1d2acf.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/EnableQuota.tsx","screens/Console/Common/FormComponents/InputUnitMenu/InputUnitMenu.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport {\n BucketQuotaIcon,\n Button,\n FormLayout,\n InputBox,\n Switch,\n Grid,\n ProgressBar,\n} from \"mds\";\nimport {\n calculateBytes,\n getBytes,\n k8sScalarUnitsExcluding,\n} from \"../../../../common/utils\";\n\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport InputUnitMenu from \"../../Common/FormComponents/InputUnitMenu/InputUnitMenu\";\n\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { BucketQuota } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IEnableQuotaProps {\n open: boolean;\n enabled: boolean;\n cfg: BucketQuota | null;\n selectedBucket: string;\n closeModalAndRefresh: () => void;\n}\n\nconst EnableQuota = ({\n open,\n enabled,\n cfg,\n selectedBucket,\n closeModalAndRefresh,\n}: IEnableQuotaProps) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [quotaEnabled, setQuotaEnabled] = useState(false);\n const [quotaSize, setQuotaSize] = useState(\"1\");\n const [quotaUnit, setQuotaUnit] = useState(\"Ti\");\n const [validInput, setValidInput] = useState(false);\n\n useEffect(() => {\n if (enabled) {\n setQuotaEnabled(true);\n if (cfg) {\n const unitCalc = calculateBytes(cfg.quota || 0, true, false, true);\n\n setQuotaSize(unitCalc.total.toString());\n setQuotaUnit(unitCalc.unit);\n setValidInput(true);\n }\n }\n }, [enabled, cfg]);\n\n useEffect(() => {\n const valRegExp = /^\\d*(?:\\.\\d{1,2})?$/;\n\n if (!quotaEnabled) {\n setValidInput(true);\n return;\n }\n\n setValidInput(valRegExp.test(quotaSize));\n }, [quotaEnabled, quotaSize]);\n\n const enableBucketEncryption = () => {\n if (loading || !validInput) {\n return;\n }\n\n api.buckets\n .setBucketQuota(selectedBucket, {\n enabled: quotaEnabled,\n amount: parseInt(getBytes(quotaSize, quotaUnit, true)),\n quota_type: \"hard\",\n })\n .then(() => {\n setLoading(false);\n closeModalAndRefresh();\n })\n .catch((err) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n return (\n {\n closeModalAndRefresh();\n }}\n title=\"Enable Bucket Quota\"\n titleIcon={}\n >\n ) => {\n e.preventDefault();\n enableBucketEncryption();\n }}\n >\n \n ) => {\n setQuotaEnabled(event.target.checked);\n }}\n label={\"Enabled\"}\n />\n {quotaEnabled && (\n ) => {\n setQuotaSize(e.target.value);\n if (!e.target.validity.valid) {\n setValidInput(false);\n } else {\n setValidInput(true);\n }\n }}\n label=\"Quota\"\n value={quotaSize}\n required\n min=\"1\"\n overlayObject={\n {\n setQuotaUnit(newValue);\n }}\n unitSelected={quotaUnit}\n unitsList={k8sScalarUnitsExcluding([\"Ki\"])}\n disabled={false}\n />\n }\n error={!validInput ? \"Please enter a valid quota\" : \"\"}\n />\n )}\n \n {\n closeModalAndRefresh();\n }}\n label={\"Cancel\"}\n />\n\n \n \n {loading && (\n \n \n \n )}\n \n \n \n );\n};\n\nexport default EnableQuota;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { SelectorType } from \"mds\";\nimport { Menu, MenuItem } from \"@mui/material\";\n\ninterface IInputUnitBox {\n classes: any;\n id: string;\n unitSelected: string;\n unitsList: SelectorType[];\n disabled?: boolean;\n onUnitChange?: (newValue: string) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonTrigger: {\n border: \"#F0F2F2 1px solid\",\n borderRadius: 3,\n color: \"#838383\",\n backgroundColor: \"#fff\",\n fontSize: 12,\n },\n });\n\nconst InputUnitMenu = ({\n classes,\n id,\n unitSelected,\n unitsList,\n disabled = false,\n onUnitChange,\n}: IInputUnitBox) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const open = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleClose = (newUnit: string) => {\n setAnchorEl(null);\n if (newUnit !== \"\" && onUnitChange) {\n onUnitChange(newUnit);\n }\n };\n\n return (\n \n \n {unitSelected}\n \n {\n handleClose(\"\");\n }}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"center\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"center\",\n }}\n >\n {unitsList.map((unit) => (\n handleClose(unit.value)}\n key={`itemUnit-${unit.value}-${unit.label}`}\n >\n {unit.label}\n \n ))}\n \n \n );\n};\n\nexport default withStyles(styles)(InputUnitMenu);\n"],"names":["_ref","open","enabled","cfg","selectedBucket","closeModalAndRefresh","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","loading","setLoading","_useState3","_useState4","quotaEnabled","setQuotaEnabled","_useState5","_useState6","quotaSize","setQuotaSize","_useState7","_useState8","quotaUnit","setQuotaUnit","_useState9","_useState10","validInput","setValidInput","useEffect","unitCalc","calculateBytes","quota","total","toString","unit","test","_jsx","ModalWrapper","modalOpen","onClose","title","titleIcon","BucketQuotaIcon","children","noValidate","autoComplete","onSubmit","e","preventDefault","api","buckets","setBucketQuota","amount","parseInt","getBytes","quota_type","then","catch","err","setModalErrorSnackMessage","errorToHandler","error","_jsxs","FormLayout","withBorders","containerPadding","Switch","value","id","name","checked","onChange","event","target","label","InputBox","validity","valid","required","min","overlayObject","InputUnitMenu","onUnitChange","newValue","unitSelected","unitsList","k8sScalarUnitsExcluding","disabled","Grid","item","xs","sx","modalStyleUtils","modalButtonBar","Button","type","variant","onClick","ProgressBar","withStyles","theme","createStyles","buttonTrigger","border","borderRadius","color","backgroundColor","fontSize","classes","_ref$disabled","_React$useState","React","_React$useState2","anchorEl","setAnchorEl","Boolean","handleClose","newUnit","Fragment","concat","undefined","currentTarget","className","Menu","anchorOrigin","vertical","horizontal","transformOrigin","map","MenuItem"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/1604.5639010d.chunk.js b/portal-ui/build/static/js/1604.64ec26a0.chunk.js similarity index 95% rename from portal-ui/build/static/js/1604.5639010d.chunk.js rename to portal-ui/build/static/js/1604.64ec26a0.chunk.js index cc97e53cac..473c23a0f6 100644 --- a/portal-ui/build/static/js/1604.5639010d.chunk.js +++ b/portal-ui/build/static/js/1604.64ec26a0.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1604],{1604:function(e,t,n){n.r(t);var a=n(29439),i=n(72791),o=n(29945),l=n(31776),u=n(66315),r=n(82342),s=n(23814),c=n(87995),d=n(81551),f=n(56028),m=n(80184);t.default=function(e){var t=e.open,n=e.bucketName,b=e.closeModalAndRefresh,h=(0,d.TL)(),p=(0,i.useState)(!1),v=(0,a.Z)(p,2),g=v[0],x=v[1],y=(0,i.useState)(!0),C=(0,a.Z)(y,2),j=C[0],k=C[1],S=(0,i.useState)(u.oO.Compliance),R=(0,a.Z)(S,2),Z=R[0],_=R[1],z=(0,i.useState)(u.zR.Days),N=(0,a.Z)(z,2),w=N[0],B=N[1],D=(0,i.useState)(1),O=(0,a.Z)(D,2),E=O[0],V=O[1],A=(0,i.useState)(!1),M=(0,a.Z)(A,2),Y=M[0],q=M[1];return(0,i.useEffect)((function(){Number.isNaN(E)||(E||1)<1?q(!1):q(!0)}),[E]),(0,i.useEffect)((function(){j&&l.h.buckets.getBucketRetentionConfig(n).then((function(e){k(!1),_(e.data.mode),V(e.data.validity),B(e.data.unit)})).catch((function(){k(!1)}))}),[j,n]),(0,m.jsx)(f.Z,{title:"Set Retention Configuration",modalOpen:t,onClose:function(){b()},children:j?(0,m.jsx)(o.aNw,{style:{width:16,height:16}}):(0,m.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),g||(x(!0),l.h.buckets.setBucketRetentionConfig(n,{mode:Z||u.oO.Compliance,unit:w||u.zR.Days,validity:E||1}).then((function(){x(!1),b()})).catch((function(e){x(!1),h((0,c.zb)((0,r.g)(e.error)))})))},children:(0,m.jsxs)(o.ltY,{containerPadding:!1,withBorders:!1,children:[(0,m.jsx)(o.Eep,{currentValue:Z,id:"retention_mode",name:"retention_mode",label:"Retention Mode",onChange:function(e){_(e.target.value)},selectorOptions:[{value:"compliance",label:"Compliance"},{value:"governance",label:"Governance"}]}),(0,m.jsx)(o.Eep,{currentValue:w,id:"retention_unit",name:"retention_unit",label:"Retention Unit",onChange:function(e){B(e.target.value)},selectorOptions:[{value:"days",label:"Days"},{value:"years",label:"Years"}]}),(0,m.jsx)(o.Wzg,{type:"number",id:"retention_validity",name:"retention_validity",onChange:function(e){V(e.target.valueAsNumber)},label:"Retention Validity",value:String(E),required:!0,min:"1"}),(0,m.jsxs)(o.rjZ,{item:!0,xs:12,sx:s.ID.modalButtonBar,children:[(0,m.jsx)(o.zxk,{id:"cancel",type:"button",variant:"regular",disabled:g,onClick:function(){b()},label:"Cancel"}),(0,m.jsx)(o.zxk,{id:"set",type:"submit",variant:"callAction",color:"primary",disabled:g||!Y,label:"Set"})]}),g&&(0,m.jsx)(o.rjZ,{item:!0,xs:12,children:(0,m.jsx)(o.kod,{})})]})})})}}}]); -//# sourceMappingURL=1604.5639010d.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1604],{1604:function(e,t,n){n.r(t);var a=n(29439),i=n(72791),o=n(29945),l=n(31776),u=n(66315),r=n(82342),s=n(23814),c=n(87995),d=n(44690),f=n(56028),m=n(80184);t.default=function(e){var t=e.open,n=e.bucketName,b=e.closeModalAndRefresh,h=(0,d.TL)(),p=(0,i.useState)(!1),v=(0,a.Z)(p,2),g=v[0],x=v[1],y=(0,i.useState)(!0),C=(0,a.Z)(y,2),j=C[0],k=C[1],S=(0,i.useState)(u.oO.Compliance),R=(0,a.Z)(S,2),Z=R[0],_=R[1],z=(0,i.useState)(u.zR.Days),N=(0,a.Z)(z,2),w=N[0],B=N[1],D=(0,i.useState)(1),O=(0,a.Z)(D,2),E=O[0],V=O[1],A=(0,i.useState)(!1),M=(0,a.Z)(A,2),Y=M[0],q=M[1];return(0,i.useEffect)((function(){Number.isNaN(E)||(E||1)<1?q(!1):q(!0)}),[E]),(0,i.useEffect)((function(){j&&l.h.buckets.getBucketRetentionConfig(n).then((function(e){k(!1),_(e.data.mode),V(e.data.validity),B(e.data.unit)})).catch((function(){k(!1)}))}),[j,n]),(0,m.jsx)(f.Z,{title:"Set Retention Configuration",modalOpen:t,onClose:function(){b()},children:j?(0,m.jsx)(o.aNw,{style:{width:16,height:16}}):(0,m.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),g||(x(!0),l.h.buckets.setBucketRetentionConfig(n,{mode:Z||u.oO.Compliance,unit:w||u.zR.Days,validity:E||1}).then((function(){x(!1),b()})).catch((function(e){x(!1),h((0,c.zb)((0,r.g)(e.error)))})))},children:(0,m.jsxs)(o.ltY,{containerPadding:!1,withBorders:!1,children:[(0,m.jsx)(o.Eep,{currentValue:Z,id:"retention_mode",name:"retention_mode",label:"Retention Mode",onChange:function(e){_(e.target.value)},selectorOptions:[{value:"compliance",label:"Compliance"},{value:"governance",label:"Governance"}]}),(0,m.jsx)(o.Eep,{currentValue:w,id:"retention_unit",name:"retention_unit",label:"Retention Unit",onChange:function(e){B(e.target.value)},selectorOptions:[{value:"days",label:"Days"},{value:"years",label:"Years"}]}),(0,m.jsx)(o.Wzg,{type:"number",id:"retention_validity",name:"retention_validity",onChange:function(e){V(e.target.valueAsNumber)},label:"Retention Validity",value:String(E),required:!0,min:"1"}),(0,m.jsxs)(o.rjZ,{item:!0,xs:12,sx:s.ID.modalButtonBar,children:[(0,m.jsx)(o.zxk,{id:"cancel",type:"button",variant:"regular",disabled:g,onClick:function(){b()},label:"Cancel"}),(0,m.jsx)(o.zxk,{id:"set",type:"submit",variant:"callAction",color:"primary",disabled:g||!Y,label:"Set"})]}),g&&(0,m.jsx)(o.rjZ,{item:!0,xs:12,children:(0,m.jsx)(o.kod,{})})]})})})}}}]); +//# sourceMappingURL=1604.64ec26a0.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/1604.5639010d.chunk.js.map b/portal-ui/build/static/js/1604.64ec26a0.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/1604.5639010d.chunk.js.map rename to portal-ui/build/static/js/1604.64ec26a0.chunk.js.map index 027b92a4f6..20ed27f2a4 100644 --- a/portal-ui/build/static/js/1604.5639010d.chunk.js.map +++ b/portal-ui/build/static/js/1604.64ec26a0.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/1604.5639010d.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/SetRetentionConfig.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport {\n Button,\n Loader,\n Grid,\n FormLayout,\n RadioGroup,\n InputBox,\n ProgressBar,\n} from \"mds\";\nimport { api } from \"api\";\nimport { ObjectRetentionMode, ObjectRetentionUnit } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\n\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\n\ninterface ISetRetentionConfigProps {\n open: boolean;\n bucketName: string;\n closeModalAndRefresh: () => void;\n}\n\nconst SetRetentionConfig = ({\n open,\n bucketName,\n closeModalAndRefresh,\n}: ISetRetentionConfigProps) => {\n const dispatch = useAppDispatch();\n const [addLoading, setAddLoading] = useState(false);\n const [loadingForm, setLoadingForm] = useState(true);\n const [retentionMode, setRetentionMode] = useState<\n ObjectRetentionMode | undefined\n >(ObjectRetentionMode.Compliance);\n const [retentionUnit, setRetentionUnit] = useState<\n ObjectRetentionUnit | undefined\n >(ObjectRetentionUnit.Days);\n const [retentionValidity, setRetentionValidity] = useState<\n number | undefined\n >(1);\n const [valid, setValid] = useState(false);\n\n const setRetention = (event: React.FormEvent) => {\n event.preventDefault();\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n api.buckets\n .setBucketRetentionConfig(bucketName, {\n mode: retentionMode || ObjectRetentionMode.Compliance,\n unit: retentionUnit || ObjectRetentionUnit.Days,\n validity: retentionValidity || 1,\n })\n .then(() => {\n setAddLoading(false);\n closeModalAndRefresh();\n })\n .catch((err) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n useEffect(() => {\n if (Number.isNaN(retentionValidity) || (retentionValidity || 1) < 1) {\n setValid(false);\n return;\n }\n setValid(true);\n }, [retentionValidity]);\n\n useEffect(() => {\n if (loadingForm) {\n api.buckets\n .getBucketRetentionConfig(bucketName)\n .then((res) => {\n setLoadingForm(false);\n\n // We set default values\n setRetentionMode(res.data.mode);\n setRetentionValidity(res.data.validity);\n setRetentionUnit(res.data.unit);\n })\n .catch(() => {\n setLoadingForm(false);\n });\n }\n }, [loadingForm, bucketName]);\n\n return (\n {\n closeModalAndRefresh();\n }}\n >\n {loadingForm ? (\n \n ) : (\n ) => {\n setRetention(e);\n }}\n >\n \n ) => {\n setRetentionMode(e.target.value as ObjectRetentionMode);\n }}\n selectorOptions={[\n { value: \"compliance\", label: \"Compliance\" },\n { value: \"governance\", label: \"Governance\" },\n ]}\n />\n ) => {\n setRetentionUnit(e.target.value as ObjectRetentionUnit);\n }}\n selectorOptions={[\n { value: \"days\", label: \"Days\" },\n { value: \"years\", label: \"Years\" },\n ]}\n />\n ) => {\n setRetentionValidity(e.target.valueAsNumber);\n }}\n label=\"Retention Validity\"\n value={String(retentionValidity)}\n required\n min=\"1\"\n />\n \n {\n closeModalAndRefresh();\n }}\n label={\"Cancel\"}\n />\n \n \n {addLoading && (\n \n \n \n )}\n \n \n )}\n \n );\n};\n\nexport default SetRetentionConfig;\n"],"names":["_ref","open","bucketName","closeModalAndRefresh","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","addLoading","setAddLoading","_useState3","_useState4","loadingForm","setLoadingForm","_useState5","ObjectRetentionMode","Compliance","_useState6","retentionMode","setRetentionMode","_useState7","ObjectRetentionUnit","Days","_useState8","retentionUnit","setRetentionUnit","_useState9","_useState10","retentionValidity","setRetentionValidity","_useState11","_useState12","valid","setValid","useEffect","Number","isNaN","api","buckets","getBucketRetentionConfig","then","res","data","mode","validity","unit","catch","_jsx","ModalWrapper","title","modalOpen","onClose","children","Loader","style","width","height","noValidate","autoComplete","onSubmit","e","preventDefault","setBucketRetentionConfig","err","setModalErrorSnackMessage","errorToHandler","error","_jsxs","FormLayout","containerPadding","withBorders","RadioGroup","currentValue","id","name","label","onChange","target","value","selectorOptions","InputBox","type","valueAsNumber","String","required","min","Grid","item","xs","sx","modalStyleUtils","modalButtonBar","Button","variant","disabled","onClick","color","ProgressBar"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/1604.64ec26a0.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/SetRetentionConfig.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport {\n Button,\n Loader,\n Grid,\n FormLayout,\n RadioGroup,\n InputBox,\n ProgressBar,\n} from \"mds\";\nimport { api } from \"api\";\nimport { ObjectRetentionMode, ObjectRetentionUnit } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\n\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\n\ninterface ISetRetentionConfigProps {\n open: boolean;\n bucketName: string;\n closeModalAndRefresh: () => void;\n}\n\nconst SetRetentionConfig = ({\n open,\n bucketName,\n closeModalAndRefresh,\n}: ISetRetentionConfigProps) => {\n const dispatch = useAppDispatch();\n const [addLoading, setAddLoading] = useState(false);\n const [loadingForm, setLoadingForm] = useState(true);\n const [retentionMode, setRetentionMode] = useState<\n ObjectRetentionMode | undefined\n >(ObjectRetentionMode.Compliance);\n const [retentionUnit, setRetentionUnit] = useState<\n ObjectRetentionUnit | undefined\n >(ObjectRetentionUnit.Days);\n const [retentionValidity, setRetentionValidity] = useState<\n number | undefined\n >(1);\n const [valid, setValid] = useState(false);\n\n const setRetention = (event: React.FormEvent) => {\n event.preventDefault();\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n api.buckets\n .setBucketRetentionConfig(bucketName, {\n mode: retentionMode || ObjectRetentionMode.Compliance,\n unit: retentionUnit || ObjectRetentionUnit.Days,\n validity: retentionValidity || 1,\n })\n .then(() => {\n setAddLoading(false);\n closeModalAndRefresh();\n })\n .catch((err) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n useEffect(() => {\n if (Number.isNaN(retentionValidity) || (retentionValidity || 1) < 1) {\n setValid(false);\n return;\n }\n setValid(true);\n }, [retentionValidity]);\n\n useEffect(() => {\n if (loadingForm) {\n api.buckets\n .getBucketRetentionConfig(bucketName)\n .then((res) => {\n setLoadingForm(false);\n\n // We set default values\n setRetentionMode(res.data.mode);\n setRetentionValidity(res.data.validity);\n setRetentionUnit(res.data.unit);\n })\n .catch(() => {\n setLoadingForm(false);\n });\n }\n }, [loadingForm, bucketName]);\n\n return (\n {\n closeModalAndRefresh();\n }}\n >\n {loadingForm ? (\n \n ) : (\n ) => {\n setRetention(e);\n }}\n >\n \n ) => {\n setRetentionMode(e.target.value as ObjectRetentionMode);\n }}\n selectorOptions={[\n { value: \"compliance\", label: \"Compliance\" },\n { value: \"governance\", label: \"Governance\" },\n ]}\n />\n ) => {\n setRetentionUnit(e.target.value as ObjectRetentionUnit);\n }}\n selectorOptions={[\n { value: \"days\", label: \"Days\" },\n { value: \"years\", label: \"Years\" },\n ]}\n />\n ) => {\n setRetentionValidity(e.target.valueAsNumber);\n }}\n label=\"Retention Validity\"\n value={String(retentionValidity)}\n required\n min=\"1\"\n />\n \n {\n closeModalAndRefresh();\n }}\n label={\"Cancel\"}\n />\n \n \n {addLoading && (\n \n \n \n )}\n \n \n )}\n \n );\n};\n\nexport default SetRetentionConfig;\n"],"names":["_ref","open","bucketName","closeModalAndRefresh","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","addLoading","setAddLoading","_useState3","_useState4","loadingForm","setLoadingForm","_useState5","ObjectRetentionMode","Compliance","_useState6","retentionMode","setRetentionMode","_useState7","ObjectRetentionUnit","Days","_useState8","retentionUnit","setRetentionUnit","_useState9","_useState10","retentionValidity","setRetentionValidity","_useState11","_useState12","valid","setValid","useEffect","Number","isNaN","api","buckets","getBucketRetentionConfig","then","res","data","mode","validity","unit","catch","_jsx","ModalWrapper","title","modalOpen","onClose","children","Loader","style","width","height","noValidate","autoComplete","onSubmit","e","preventDefault","setBucketRetentionConfig","err","setModalErrorSnackMessage","errorToHandler","error","_jsxs","FormLayout","containerPadding","withBorders","RadioGroup","currentValue","id","name","label","onChange","target","value","selectorOptions","InputBox","type","valueAsNumber","String","required","min","Grid","item","xs","sx","modalStyleUtils","modalButtonBar","Button","variant","disabled","onClick","color","ProgressBar"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/1705.7cfab911.chunk.js b/portal-ui/build/static/js/1705.8c12b37a.chunk.js similarity index 95% rename from portal-ui/build/static/js/1705.7cfab911.chunk.js rename to portal-ui/build/static/js/1705.8c12b37a.chunk.js index bcb2bf9d05..aeb75ad48e 100644 --- a/portal-ui/build/static/js/1705.7cfab911.chunk.js +++ b/portal-ui/build/static/js/1705.8c12b37a.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1705],{71705:function(e,n,t){t.r(n);var l=t(29439),s=t(72791),c=t(26181),a=t.n(c),o=t(29945),u=t(56087),i=t(38442),r=t(87995),d=t(81551),p=t(9505),f=t(75578),x=t(80184),T=(0,f.Z)(s.lazy((function(){return Promise.all([t.e(911),t.e(4549),t.e(817),t.e(247)]).then(t.bind(t,40247))}))),h=(0,f.Z)(s.lazy((function(){return t.e(2763).then(t.bind(t,22763))})));n.default=function(e){var n=e.bucketName,t=(0,d.TL)(),c=(0,s.useState)(null),f=(0,l.Z)(c,2),v=f[0],_=f[1],S=(0,s.useState)(!1),j=(0,l.Z)(S,2),b=j[0],g=j[1],C=(0,s.useState)([]),G=(0,l.Z)(C,2),k=G[0],m=G[1],A=(0,s.useState)(["",""]),N=(0,l.Z)(A,2),U=N[0],Z=N[1],I=(0,s.useState)(!1),P=(0,l.Z)(I,2),E=P[0],F=P[1],w=(0,p.Z)((function(e){if(e&&null!=(null===e||void 0===e?void 0:e.details)){var n,t;if(e.details.tags)return _(null===e||void 0===e||null===(n=e.details)||void 0===n?void 0:n.tags),void m(Object.keys(null===e||void 0===e||null===(t=e.details)||void 0===t?void 0:t.tags));_([]),m([])}}),(function(e){t((0,r.Ih)(e))})),y=(0,l.Z)(w,2),O=y[0],B=y[1],K=function(){B("GET","/api/v1/buckets/".concat(n))};return(0,s.useEffect)((function(){K()}),[n]),(0,x.jsxs)(o.xuv,{children:[O?(0,x.jsx)(o.aNw,{style:{width:16,height:16}}):null,(0,x.jsx)(i.s,{scopes:[u.Ft.S3_GET_BUCKET_TAGGING,u.Ft.S3_GET_ACTIONS],resource:n,children:(0,x.jsx)(o.xuv,{sx:{display:"flex",flexFlow:"column",marginTop:5},children:(0,x.jsxs)(o.xuv,{sx:{display:"flex",gap:8,flexWrap:"wrap"},children:[k&&k.map((function(e,t){var l=a()(v,"".concat(e),"");return""!==l?(0,x.jsx)(i.s,{scopes:[u.Ft.S3_PUT_BUCKET_TAGGING,u.Ft.S3_PUT_ACTIONS],resource:n,matchAll:!0,errorProps:{deleteIcon:null,onDelete:null},children:(0,x.jsx)(o.Vp9,{label:"".concat(e," : ").concat(l),id:"tag-".concat(e,"-").concat(l),onDelete:function(){!function(e,n){Z([e,n]),F(!0)}(e,l)}})},"chip-".concat(t)):null})),(0,x.jsx)(i.s,{scopes:[u.Ft.S3_PUT_BUCKET_TAGGING,u.Ft.S3_PUT_ACTIONS],resource:n,errorProps:{disabled:!0,onClick:null},children:(0,x.jsx)(o.Vp9,{label:"Add tag",icon:(0,x.jsx)(o.dtP,{}),id:"create-tag",variant:"outlined",onClick:function(){g(!0)},sx:{cursor:"pointer",maxWidth:90}})})]})})}),b&&(0,x.jsx)(T,{modalOpen:b,currentTags:v,bucketName:n,onCloseAndUpdate:function(e){g(!1),e&&K()}}),E&&(0,x.jsx)(h,{deleteOpen:E,currentTags:v,bucketName:n,onCloseAndUpdate:function(e){F(!1),e&&K()},selectedTag:U})]})}}}]); -//# sourceMappingURL=1705.7cfab911.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1705],{71705:function(e,n,t){t.r(n);var l=t(29439),s=t(72791),c=t(26181),a=t.n(c),o=t(29945),u=t(56087),i=t(38442),r=t(87995),d=t(44690),p=t(9505),f=t(75578),x=t(80184),T=(0,f.Z)(s.lazy((function(){return Promise.all([t.e(911),t.e(4549),t.e(817),t.e(247)]).then(t.bind(t,40247))}))),h=(0,f.Z)(s.lazy((function(){return t.e(2763).then(t.bind(t,22763))})));n.default=function(e){var n=e.bucketName,t=(0,d.TL)(),c=(0,s.useState)(null),f=(0,l.Z)(c,2),v=f[0],_=f[1],S=(0,s.useState)(!1),j=(0,l.Z)(S,2),b=j[0],g=j[1],C=(0,s.useState)([]),G=(0,l.Z)(C,2),k=G[0],m=G[1],A=(0,s.useState)(["",""]),N=(0,l.Z)(A,2),U=N[0],Z=N[1],I=(0,s.useState)(!1),P=(0,l.Z)(I,2),E=P[0],F=P[1],w=(0,p.Z)((function(e){if(e&&null!=(null===e||void 0===e?void 0:e.details)){var n,t;if(e.details.tags)return _(null===e||void 0===e||null===(n=e.details)||void 0===n?void 0:n.tags),void m(Object.keys(null===e||void 0===e||null===(t=e.details)||void 0===t?void 0:t.tags));_([]),m([])}}),(function(e){t((0,r.Ih)(e))})),y=(0,l.Z)(w,2),O=y[0],B=y[1],K=function(){B("GET","/api/v1/buckets/".concat(n))};return(0,s.useEffect)((function(){K()}),[n]),(0,x.jsxs)(o.xuv,{children:[O?(0,x.jsx)(o.aNw,{style:{width:16,height:16}}):null,(0,x.jsx)(i.s,{scopes:[u.Ft.S3_GET_BUCKET_TAGGING,u.Ft.S3_GET_ACTIONS],resource:n,children:(0,x.jsx)(o.xuv,{sx:{display:"flex",flexFlow:"column",marginTop:5},children:(0,x.jsxs)(o.xuv,{sx:{display:"flex",gap:8,flexWrap:"wrap"},children:[k&&k.map((function(e,t){var l=a()(v,"".concat(e),"");return""!==l?(0,x.jsx)(i.s,{scopes:[u.Ft.S3_PUT_BUCKET_TAGGING,u.Ft.S3_PUT_ACTIONS],resource:n,matchAll:!0,errorProps:{deleteIcon:null,onDelete:null},children:(0,x.jsx)(o.Vp9,{label:"".concat(e," : ").concat(l),id:"tag-".concat(e,"-").concat(l),onDelete:function(){!function(e,n){Z([e,n]),F(!0)}(e,l)}})},"chip-".concat(t)):null})),(0,x.jsx)(i.s,{scopes:[u.Ft.S3_PUT_BUCKET_TAGGING,u.Ft.S3_PUT_ACTIONS],resource:n,errorProps:{disabled:!0,onClick:null},children:(0,x.jsx)(o.Vp9,{label:"Add tag",icon:(0,x.jsx)(o.dtP,{}),id:"create-tag",variant:"outlined",onClick:function(){g(!0)},sx:{cursor:"pointer",maxWidth:90}})})]})})}),b&&(0,x.jsx)(T,{modalOpen:b,currentTags:v,bucketName:n,onCloseAndUpdate:function(e){g(!1),e&&K()}}),E&&(0,x.jsx)(h,{deleteOpen:E,currentTags:v,bucketName:n,onCloseAndUpdate:function(e){F(!1),e&&K()},selectedTag:U})]})}}}]); +//# sourceMappingURL=1705.8c12b37a.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/1705.7cfab911.chunk.js.map b/portal-ui/build/static/js/1705.8c12b37a.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/1705.7cfab911.chunk.js.map rename to portal-ui/build/static/js/1705.8c12b37a.chunk.js.map index 82fa3dab23..269e1a3370 100644 --- a/portal-ui/build/static/js/1705.7cfab911.chunk.js.map +++ b/portal-ui/build/static/js/1705.8c12b37a.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/1705.7cfab911.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/SummaryItems/BucketTags.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { AddIcon, Box, Loader, Tag } from \"mds\";\nimport { Bucket } from \"../../../Watch/types\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { IAM_SCOPES } from \"../../../../../common/SecureComponent/permissions\";\nimport { SecureComponent } from \"../../../../../common/SecureComponent\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../store\";\nimport useApi from \"../../../Common/Hooks/useApi\";\nimport withSuspense from \"../../../Common/Components/withSuspense\";\n\nconst AddBucketTagModal = withSuspense(\n React.lazy(() => import(\"../AddBucketTagModal\")),\n);\nconst DeleteBucketTagModal = withSuspense(\n React.lazy(() => import(\"../DeleteBucketTagModal\")),\n);\n\ntype BucketTagProps = {\n bucketName: string;\n};\n\nconst BucketTags = ({ bucketName }: BucketTagProps) => {\n const dispatch = useAppDispatch();\n\n const [tags, setTags] = useState(null);\n const [tagModalOpen, setTagModalOpen] = useState(false);\n const [tagKeys, setTagKeys] = useState([]);\n const [selectedTag, setSelectedTag] = useState([\"\", \"\"]);\n const [deleteTagModalOpen, setDeleteTagModalOpen] = useState(false);\n\n const closeAddTagModal = (refresh: boolean) => {\n setTagModalOpen(false);\n if (refresh) {\n fetchTags();\n }\n };\n\n const deleteTag = (tagKey: string, tagLabel: string) => {\n setSelectedTag([tagKey, tagLabel]);\n setDeleteTagModalOpen(true);\n };\n\n const closeDeleteTagModal = (refresh: boolean) => {\n setDeleteTagModalOpen(false);\n\n if (refresh) {\n fetchTags();\n }\n };\n\n const onTagLoaded = (res: Bucket) => {\n if (!!res && res?.details != null) {\n if (res.details.tags) {\n setTags(res?.details?.tags);\n setTagKeys(Object.keys(res?.details?.tags));\n\n return;\n }\n setTags([]);\n setTagKeys([]);\n }\n };\n\n const onTagLoadFailed = (err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n };\n\n const [isLoading, invokeTagsApi] = useApi(onTagLoaded, onTagLoadFailed);\n\n const fetchTags = () => {\n invokeTagsApi(\"GET\", `/api/v1/buckets/${bucketName}`);\n };\n\n useEffect(() => {\n fetchTags();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [bucketName]);\n\n return (\n \n {isLoading ? : null}\n \n \n \n {tagKeys &&\n tagKeys.map((tagKey: any, index: any) => {\n const tag = get(tags, `${tagKey}`, \"\");\n if (tag !== \"\") {\n return (\n \n {\n deleteTag(tagKey, tag);\n }}\n />\n \n );\n }\n return null;\n })}\n \n }\n id={\"create-tag\"}\n variant={\"outlined\"}\n onClick={() => {\n setTagModalOpen(true);\n }}\n sx={{ cursor: \"pointer\", maxWidth: 90 }}\n />\n \n \n \n \n\n {/** Modals **/}\n\n {tagModalOpen && (\n \n )}\n {deleteTagModalOpen && (\n \n )}\n \n );\n};\n\nexport default BucketTags;\n"],"names":["AddBucketTagModal","withSuspense","React","DeleteBucketTagModal","_ref","bucketName","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","tags","setTags","_useState3","_useState4","tagModalOpen","setTagModalOpen","_useState5","_useState6","tagKeys","setTagKeys","_useState7","_useState8","selectedTag","setSelectedTag","_useState9","_useState10","deleteTagModalOpen","setDeleteTagModalOpen","_useApi","useApi","res","details","_res$details","_res$details2","Object","keys","err","setErrorSnackMessage","_useApi2","isLoading","invokeTagsApi","fetchTags","concat","useEffect","_jsxs","Box","children","_jsx","Loader","style","width","height","SecureComponent","scopes","IAM_SCOPES","S3_GET_BUCKET_TAGGING","S3_GET_ACTIONS","resource","sx","display","flexFlow","marginTop","gap","flexWrap","map","tagKey","index","tag","get","S3_PUT_BUCKET_TAGGING","S3_PUT_ACTIONS","matchAll","errorProps","deleteIcon","onDelete","Tag","label","id","tagLabel","deleteTag","disabled","onClick","icon","AddIcon","variant","cursor","maxWidth","modalOpen","currentTags","onCloseAndUpdate","refresh","deleteOpen"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/1705.8c12b37a.chunk.js","mappings":"yPA4BMA,GAAoBC,EAAAA,EAAAA,GACxBC,EAAAA,MAAW,kBAAM,yEAA8B,KAE3CC,GAAuBF,EAAAA,EAAAA,GAC3BC,EAAAA,MAAW,kBAAM,+BAAiC,KA2JpD,UApJmB,SAAHE,GAAwC,IAAlCC,EAAUD,EAAVC,WACdC,GAAWC,EAAAA,EAAAA,MAEjBC,GAAwBC,EAAAA,EAAAA,UAAc,MAAKC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAApCI,EAAIF,EAAA,GAAEG,EAAOH,EAAA,GACpBI,GAAwCL,EAAAA,EAAAA,WAAkB,GAAMM,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAAzDE,EAAYD,EAAA,GAAEE,EAAeF,EAAA,GACpCG,GAA8BT,EAAAA,EAAAA,UAAmB,IAAGU,GAAAR,EAAAA,EAAAA,GAAAO,EAAA,GAA7CE,EAAOD,EAAA,GAAEE,EAAUF,EAAA,GAC1BG,GAAsCb,EAAAA,EAAAA,UAAmB,CAAC,GAAI,KAAIc,GAAAZ,EAAAA,EAAAA,GAAAW,EAAA,GAA3DE,EAAWD,EAAA,GAAEE,EAAcF,EAAA,GAClCG,GAAoDjB,EAAAA,EAAAA,WAAkB,GAAMkB,GAAAhB,EAAAA,EAAAA,GAAAe,EAAA,GAArEE,EAAkBD,EAAA,GAAEE,EAAqBF,EAAA,GAuChDG,GAAmCC,EAAAA,EAAAA,IAjBf,SAACC,GACnB,GAAMA,GAAuB,OAAb,OAAHA,QAAG,IAAHA,OAAG,EAAHA,EAAKC,SAAiB,CACV,IAADC,EAAAC,EAAtB,GAAIH,EAAIC,QAAQrB,KAId,OAHAC,EAAW,OAAHmB,QAAG,IAAHA,GAAY,QAATE,EAAHF,EAAKC,eAAO,IAAAC,OAAT,EAAHA,EAActB,WACtBS,EAAWe,OAAOC,KAAQ,OAAHL,QAAG,IAAHA,GAAY,QAATG,EAAHH,EAAKC,eAAO,IAAAE,OAAT,EAAHA,EAAcvB,OAIvCC,EAAQ,IACRQ,EAAW,GACb,CACF,IAEwB,SAACiB,GACvBhC,GAASiC,EAAAA,EAAAA,IAAqBD,GAChC,IAEuEE,GAAA7B,EAAAA,EAAAA,GAAAmB,EAAA,GAAhEW,EAASD,EAAA,GAAEE,EAAaF,EAAA,GAEzBG,EAAY,WAChBD,EAAc,MAAM,mBAADE,OAAqBvC,GAC1C,EAOA,OALAwC,EAAAA,EAAAA,YAAU,WACRF,GAEF,GAAG,CAACtC,KAGFyC,EAAAA,EAAAA,MAACC,EAAAA,IAAG,CAAAC,SAAA,CACDP,GAAYQ,EAAAA,EAAAA,KAACC,EAAAA,IAAM,CAACC,MAAO,CAAEC,MAAO,GAAIC,OAAQ,MAAW,MAC5DJ,EAAAA,EAAAA,KAACK,EAAAA,EAAe,CACdC,OAAQ,CAACC,EAAAA,GAAWC,sBAAuBD,EAAAA,GAAWE,gBACtDC,SAAUtD,EAAW2C,UAErBC,EAAAA,EAAAA,KAACF,EAAAA,IAAG,CACFa,GAAI,CACFC,QAAS,OACTC,SAAU,SACVC,UAAW,GACXf,UAEFF,EAAAA,EAAAA,MAACC,EAAAA,IAAG,CAACa,GAAI,CAAEC,QAAS,OAAQG,IAAK,EAAGC,SAAU,QAASjB,SAAA,CACpD5B,GACCA,EAAQ8C,KAAI,SAACC,EAAaC,GACxB,IAAMC,EAAMC,IAAI1D,EAAK,GAADgC,OAAKuB,GAAU,IACnC,MAAY,KAARE,GAEApB,EAAAA,EAAAA,KAACK,EAAAA,EAAe,CAEdC,OAAQ,CACNC,EAAAA,GAAWe,sBACXf,EAAAA,GAAWgB,gBAEbb,SAAUtD,EACVoE,UAAQ,EACRC,WAAY,CACVC,WAAY,KACZC,SAAU,MACV5B,UAEFC,EAAAA,EAAAA,KAAC4B,EAAAA,IAAG,CACFC,MAAK,GAAAlC,OAAKuB,EAAM,OAAAvB,OAAMyB,GACtBU,GAAE,OAAAnC,OAASuB,EAAM,KAAAvB,OAAIyB,GACrBO,SAAU,YA7Ed,SAACT,EAAgBa,GACjCvD,EAAe,CAAC0C,EAAQa,IACxBnD,GAAsB,EACxB,CA2EwBoD,CAAUd,EAAQE,EACpB,KACA,QAAAzB,OAlBWwB,IAsBZ,IACT,KACFnB,EAAAA,EAAAA,KAACK,EAAAA,EAAe,CACdC,OAAQ,CACNC,EAAAA,GAAWe,sBACXf,EAAAA,GAAWgB,gBAEbb,SAAUtD,EACVqE,WAAY,CAAEQ,UAAU,EAAMC,QAAS,MAAOnC,UAE9CC,EAAAA,EAAAA,KAAC4B,EAAAA,IAAG,CACFC,MAAM,UACNM,MAAMnC,EAAAA,EAAAA,KAACoC,EAAAA,IAAO,IACdN,GAAI,aACJO,QAAS,WACTH,QAAS,WACPlE,GAAgB,EAClB,EACA2C,GAAI,CAAE2B,OAAQ,UAAWC,SAAU,eAS5CxE,IACCiC,EAAAA,EAAAA,KAACjD,EAAiB,CAChByF,UAAWzE,EACX0E,YAAa9E,EACbP,WAAYA,EACZsF,iBA3HiB,SAACC,GACxB3E,GAAgB,GACZ2E,GACFjD,GAEJ,IAyHKf,IACCqB,EAAAA,EAAAA,KAAC9C,EAAoB,CACnB0F,WAAYjE,EACZ8D,YAAa9E,EACbP,WAAYA,EACZsF,iBAvHoB,SAACC,GAC3B/D,GAAsB,GAElB+D,GACFjD,GAEJ,EAkHQnB,YAAaA,MAKvB,C","sources":["screens/Console/Buckets/BucketDetails/SummaryItems/BucketTags.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { AddIcon, Box, Loader, Tag } from \"mds\";\nimport { Bucket } from \"../../../Watch/types\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { IAM_SCOPES } from \"../../../../../common/SecureComponent/permissions\";\nimport { SecureComponent } from \"../../../../../common/SecureComponent\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../store\";\nimport useApi from \"../../../Common/Hooks/useApi\";\nimport withSuspense from \"../../../Common/Components/withSuspense\";\n\nconst AddBucketTagModal = withSuspense(\n React.lazy(() => import(\"../AddBucketTagModal\")),\n);\nconst DeleteBucketTagModal = withSuspense(\n React.lazy(() => import(\"../DeleteBucketTagModal\")),\n);\n\ntype BucketTagProps = {\n bucketName: string;\n};\n\nconst BucketTags = ({ bucketName }: BucketTagProps) => {\n const dispatch = useAppDispatch();\n\n const [tags, setTags] = useState(null);\n const [tagModalOpen, setTagModalOpen] = useState(false);\n const [tagKeys, setTagKeys] = useState([]);\n const [selectedTag, setSelectedTag] = useState([\"\", \"\"]);\n const [deleteTagModalOpen, setDeleteTagModalOpen] = useState(false);\n\n const closeAddTagModal = (refresh: boolean) => {\n setTagModalOpen(false);\n if (refresh) {\n fetchTags();\n }\n };\n\n const deleteTag = (tagKey: string, tagLabel: string) => {\n setSelectedTag([tagKey, tagLabel]);\n setDeleteTagModalOpen(true);\n };\n\n const closeDeleteTagModal = (refresh: boolean) => {\n setDeleteTagModalOpen(false);\n\n if (refresh) {\n fetchTags();\n }\n };\n\n const onTagLoaded = (res: Bucket) => {\n if (!!res && res?.details != null) {\n if (res.details.tags) {\n setTags(res?.details?.tags);\n setTagKeys(Object.keys(res?.details?.tags));\n\n return;\n }\n setTags([]);\n setTagKeys([]);\n }\n };\n\n const onTagLoadFailed = (err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n };\n\n const [isLoading, invokeTagsApi] = useApi(onTagLoaded, onTagLoadFailed);\n\n const fetchTags = () => {\n invokeTagsApi(\"GET\", `/api/v1/buckets/${bucketName}`);\n };\n\n useEffect(() => {\n fetchTags();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [bucketName]);\n\n return (\n \n {isLoading ? : null}\n \n \n \n {tagKeys &&\n tagKeys.map((tagKey: any, index: any) => {\n const tag = get(tags, `${tagKey}`, \"\");\n if (tag !== \"\") {\n return (\n \n {\n deleteTag(tagKey, tag);\n }}\n />\n \n );\n }\n return null;\n })}\n \n }\n id={\"create-tag\"}\n variant={\"outlined\"}\n onClick={() => {\n setTagModalOpen(true);\n }}\n sx={{ cursor: \"pointer\", maxWidth: 90 }}\n />\n \n \n \n \n\n {/** Modals **/}\n\n {tagModalOpen && (\n \n )}\n {deleteTagModalOpen && (\n \n )}\n \n );\n};\n\nexport default BucketTags;\n"],"names":["AddBucketTagModal","withSuspense","React","DeleteBucketTagModal","_ref","bucketName","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","tags","setTags","_useState3","_useState4","tagModalOpen","setTagModalOpen","_useState5","_useState6","tagKeys","setTagKeys","_useState7","_useState8","selectedTag","setSelectedTag","_useState9","_useState10","deleteTagModalOpen","setDeleteTagModalOpen","_useApi","useApi","res","details","_res$details","_res$details2","Object","keys","err","setErrorSnackMessage","_useApi2","isLoading","invokeTagsApi","fetchTags","concat","useEffect","_jsxs","Box","children","_jsx","Loader","style","width","height","SecureComponent","scopes","IAM_SCOPES","S3_GET_BUCKET_TAGGING","S3_GET_ACTIONS","resource","sx","display","flexFlow","marginTop","gap","flexWrap","map","tagKey","index","tag","get","S3_PUT_BUCKET_TAGGING","S3_PUT_ACTIONS","matchAll","errorProps","deleteIcon","onDelete","Tag","label","id","tagLabel","deleteTag","disabled","onClick","icon","AddIcon","variant","cursor","maxWidth","modalOpen","currentTags","onCloseAndUpdate","refresh","deleteOpen"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/1764.4155e58f.chunk.js.map b/portal-ui/build/static/js/1764.4155e58f.chunk.js.map deleted file mode 100644 index 0ad5317a86..0000000000 --- a/portal-ui/build/static/js/1764.4155e58f.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/1764.4155e58f.chunk.js","mappings":"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","sources":["screens/Console/EventDestinations/CustomForms/ResetConfigurationModal.tsx","screens/Console/IDP/AddIDPConfigurationHelpbox.tsx","screens/Console/Common/ScreenTitle/ScreenTitle.tsx","screens/Console/IDP/LDAP/LDAPResultsBlock.tsx","screens/Console/IDP/LDAP/LDAPEntitiesQuery.tsx","screens/Console/IDP/LDAP/IDPLDAPConfigurationDetails.tsx","screens/Console/IDP/utils.tsx","screens/Console/Policies/PolicySelectors.tsx","utils/sortFunctions.ts","../node_modules/@mui/icons-material/Login.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/esm/deprecatedPropType.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/esm/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/esm/unsupportedProp.js","../node_modules/@mui/material/utils/index.js","../node_modules/@mui/material/utils/isMuiElement.js","../node_modules/@mui/utils/esm/isMuiElement.js","../node_modules/@mui/utils/esm/createChainedFunction.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.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 { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\n\nimport { ConfirmDeleteIcon, ProgressBar } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IResetConfiguration {\n configurationName: string;\n closeResetModalAndRefresh: (reloadConfiguration: boolean) => void;\n resetOpen: boolean;\n}\n\nconst ResetConfigurationModal = ({\n configurationName,\n closeResetModalAndRefresh,\n resetOpen,\n}: IResetConfiguration) => {\n const dispatch = useAppDispatch();\n const [resetLoading, setResetLoading] = useState(false);\n\n useEffect(() => {\n if (resetLoading) {\n api.configs\n .resetConfig(configurationName)\n .then(() => {\n setResetLoading(false);\n closeResetModalAndRefresh(true);\n })\n .catch((err) => {\n setResetLoading(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n }, [closeResetModalAndRefresh, configurationName, resetLoading, dispatch]);\n\n const resetConfiguration = () => {\n setResetLoading(true);\n };\n\n return (\n }\n isLoading={resetLoading}\n onConfirm={resetConfiguration}\n onClose={() => {\n closeResetModalAndRefresh(false);\n }}\n confirmationContent={\n \n {resetLoading && }\n \n Are you sure you want to restore these configurations to default\n values?\n
\n \n Please note that this may cause your system to not be accessible\n \n
\n
\n }\n />\n );\n};\n\nexport default ResetConfigurationModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { HelpIconFilled, Box } from \"mds\";\n\ninterface IContent {\n icon: React.ReactNode;\n text: string;\n iconDescription: string;\n}\n\ninterface IAddIDPConfigurationHelpBoxProps {\n helpText: string;\n docLink: string;\n docText: string;\n contents: IContent[];\n}\n\nconst FeatureItem = ({\n icon,\n description,\n}: {\n icon: any;\n description: string;\n}) => {\n return (\n \n {icon}{\" \"}\n
\n {description}\n
\n \n );\n};\n\nconst AddIDPConfigurationHelpBox = ({\n helpText,\n docLink,\n docText,\n contents,\n}: IAddIDPConfigurationHelpBoxProps) => {\n return (\n \n \n \n
{helpText}
\n \n \n {contents.map((content, index) => (\n \n {content.icon && (\n \n \n \n )}\n {content.text}\n \n ))}\n \n \n {docText}\n \n \n \n \n );\n};\n\nexport default AddIDPConfigurationHelpBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\ninterface IScreenTitle {\n icon?: any;\n title?: any;\n subTitle?: any;\n actions?: any;\n className?: any;\n}\n\nconst useStyles = makeStyles((theme: Theme) => ({\n headerBarIcon: {\n marginRight: \".7rem\",\n color: theme.palette.primary.main,\n \"& .min-icon\": {\n width: 44,\n height: 44,\n },\n \"@media (max-width: 600px)\": {\n display: \"none\",\n },\n },\n headerBarSubheader: {\n color: \"grey\",\n \"@media (max-width: 900px)\": {\n maxWidth: 200,\n },\n },\n stContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: 8,\n\n borderBottom: \"1px solid #EAEAEA\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n },\n },\n titleColumn: {\n height: \"auto\",\n justifyContent: \"center\",\n display: \"flex\",\n flexFlow: \"column\",\n alignItems: \"flex-start\",\n \"& h1\": {\n fontSize: 19,\n },\n },\n leftItems: {\n display: \"flex\",\n alignItems: \"center\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n width: \"100%\",\n },\n },\n rightItems: {\n display: \"flex\",\n alignItems: \"center\",\n \"& button\": {\n marginLeft: 8,\n },\n \"@media (max-width: 600px)\": {\n width: \"100%\",\n },\n },\n}));\n\nconst ScreenTitle = ({\n icon,\n title,\n subTitle,\n actions,\n className,\n}: IScreenTitle) => {\n const classes = useStyles();\n return (\n \n \n
\n {icon ?
{icon}
: null}\n
\n

{title}

\n {subTitle}\n
\n
\n\n
{actions}
\n
\n \n );\n};\n\nexport default ScreenTitle;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Box, CollapseCaret, GroupsMenuIcon, SectionTitle } from \"mds\";\nimport { LdapEntities } from \"api/consoleApi\";\n\ninterface IResultBlock {\n entityName: \"Group\" | \"User\" | \"Policy\";\n results: LdapEntities;\n}\n\ninterface IEntityResultName {\n name: string;\n}\n\ninterface IEntityResultItem {\n blockName: \"Policies\" | \"Groups\" | \"Users\";\n results: string[];\n}\n\nconst EntityResultTitle = ({ name }: IEntityResultName) => {\n return (\n

\n \n {name}\n

\n );\n};\n\nconst EntityResultItems = ({ blockName, results }: IEntityResultItem) => {\n return (\n \n {blockName}:\n
    \n {results.map((res, index) => (\n
  • {res}
  • \n ))}\n
\n
\n );\n};\n\nconst LDAPResultsBlock = ({ entityName, results }: IResultBlock) => {\n let entityLength = 0;\n\n switch (entityName) {\n case \"Group\":\n entityLength = results.groups?.length || 0;\n break;\n case \"Policy\":\n entityLength = results.policies?.length || 0;\n break;\n case \"User\":\n entityLength = results.users?.length || 0;\n break;\n }\n\n return (\n \n }\n actions={\n \n {entityLength} Entit\n {entityLength === 1 ? \"y\" : \"ies\"} Found\n \n }\n >\n {entityName} Mappings\n \n \n {entityName === \"Group\" &&\n results.groups?.map((groupData, index) => {\n return (\n \n \n {groupData.policies && (\n \n )}\n \n );\n })}\n {entityName === \"User\" &&\n results.users?.map((groupData, index) => {\n return (\n \n \n {groupData.policies && (\n \n )}\n \n );\n })}\n {entityName === \"Policy\" &&\n results.policies?.map((groupData, index) => {\n return (\n \n \n {groupData.groups && (\n \n )}\n {groupData.users && (\n \n )}\n \n );\n })}\n \n \n );\n};\n\nexport default LDAPResultsBlock;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport {\n AddIcon,\n Box,\n Button,\n Grid,\n InputBox,\n Loader,\n RemoveIcon,\n SearchIcon,\n SectionTitle,\n TimeIcon,\n} from \"mds\";\nimport { useSelector } from \"react-redux\";\nimport { DateTime } from \"luxon\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { LdapEntities } from \"api/consoleApi\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport LDAPResultsBlock from \"./LDAPResultsBlock\";\nimport PolicySelectors from \"../../Policies/PolicySelectors\";\n\nconst LDAPEntitiesQuery = () => {\n const dispatch = useAppDispatch();\n\n const [loading, setLoading] = useState(false);\n const [users, setUsers] = useState([\"\"]);\n const [groups, setGroups] = useState([\"\"]);\n const [results, setResults] = useState(null);\n\n const selectedPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n\n const searchEntities = () => {\n setLoading(true);\n\n let data: any = {};\n\n let cleanPolicies = selectedPolicies.filter((pol) => pol !== \"\");\n let cleanUsers = users.filter((usr) => usr !== \"\");\n let cleanGroups = groups.filter((grp) => grp !== \"\");\n\n if (cleanPolicies.length > 0) {\n data[\"policies\"] = cleanPolicies;\n }\n\n if (cleanUsers.length > 0) {\n data[\"users\"] = cleanUsers;\n }\n\n if (cleanGroups.length > 0) {\n data[\"groups\"] = cleanGroups;\n }\n\n api.ldapEntities\n .getLdapEntities(data)\n .then((result) => {\n setResults(result.data);\n setLoading(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setLoading(false);\n });\n };\n\n const alterUsersList = (addItem: boolean, index: number) => {\n if (addItem) {\n const alterUsers = [...users, \"\"];\n setUsers(alterUsers);\n\n return;\n }\n\n const filteredUsers = users.filter((_, indx) => indx !== index);\n\n setUsers(filteredUsers);\n };\n\n const alterGroupsList = (addItem: boolean, index: number) => {\n if (addItem) {\n const alterGroups = [...groups, \"\"];\n setGroups(alterGroups);\n\n return;\n }\n\n const filteredGroups = groups.filter((_, indx) => indx !== index);\n\n setGroups(filteredGroups);\n };\n\n return (\n \n \n \n Query Filters\n\n \n \n \n

\n Users\n

\n
\n div > div\": {\n width: \"100%\",\n },\n }}\n >\n {users.map((userDat, index) => {\n return (\n ) => {\n const usersElements = [...users];\n usersElements[index] = e.target.value;\n setUsers(usersElements);\n }}\n overlayIcon={\n users.length === index + 1 ? (\n \n ) : (\n \n )\n }\n overlayAction={() => {\n alterUsersList(users.length === index + 1, index);\n }}\n />\n );\n })}\n
\n
\n \n

\n Groups\n

\n div > div\": {\n width: \"100%\",\n },\n }}\n >\n {groups.map((groupDat, index) => {\n return (\n ) => {\n const groupsElements = [...groups];\n groupsElements[index] = e.target.value;\n setGroups(groupsElements);\n }}\n overlayIcon={\n groups.length === index + 1 ? (\n \n ) : (\n \n )\n }\n overlayAction={() => {\n alterGroupsList(groups.length === index + 1, index);\n }}\n />\n );\n })}\n
\n \n \n

\n Policies\n

\n \n \n
\n \n \n \n \n {loading ? (\n \n \n \n ) : (\n \n \n {results?.timestamp ? (\n \n \n {DateTime.fromISO(results.timestamp).toFormat(\n \"D HH:mm:ss\",\n )}\n \n ) : (\n \"\"\n )}\n \n }\n >\n Query Results\n \n {results ? (\n \n {!results.groups && !results.users && !results.policies && (\n \n

No Results Available

\n
\n )}\n {!!results.groups && (\n \n )}\n {!!results.users && (\n \n )}\n {!!results.policies && (\n \n )}\n \n ) : (\n No query results yet\n )}\n
\n )}\n \n \n \n \n }\n >\n Search\n \n \n \n \n );\n};\n\nexport default LDAPEntitiesQuery;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport {\n Box,\n Button,\n ConsoleIcon,\n EditIcon,\n FormLayout,\n Grid,\n HelpBox,\n InputBox,\n Loader,\n PageLayout,\n RefreshIcon,\n Switch,\n Tabs,\n Tooltip,\n ValuePair,\n WarnIcon,\n} from \"mds\";\nimport { api } from \"api\";\nimport { ConfigurationKV } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport { useAppDispatch } from \"../../../../store\";\nimport {\n setErrorSnackMessage,\n setHelpName,\n setServerNeedsRestart,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { ldapFormFields, ldapHelpBoxContents } from \"../utils\";\nimport ScreenTitle from \"../../Common/ScreenTitle/ScreenTitle\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport AddIDPConfigurationHelpBox from \"../AddIDPConfigurationHelpbox\";\nimport LDAPEntitiesQuery from \"./LDAPEntitiesQuery\";\nimport ResetConfigurationModal from \"../../EventDestinations/CustomForms/ResetConfigurationModal\";\nimport HelpMenu from \"../../HelpMenu\";\n\nconst enabledConfigLDAP = [\n \"server_addr\",\n \"lookup_bind_dn\",\n \"user_dn_search_base_dn\",\n \"user_dn_search_filter\",\n];\n\nconst IDPLDAPConfigurationDetails = () => {\n const dispatch = useAppDispatch();\n\n const formFields = ldapFormFields;\n\n const [loading, setLoading] = useState(true);\n const [isEnabled, setIsEnabled] = useState(false);\n const [hasConfiguration, setHasConfiguration] = useState(false);\n const [fields, setFields] = useState({});\n const [overrideFields, setOverrideFields] = useState({});\n const [record, setRecord] = useState(\n undefined,\n );\n const [editMode, setEditMode] = useState(false);\n const [resetOpen, setResetOpen] = useState(false);\n const [curTab, setCurTab] = useState(\"configuration\");\n const [envOverride, setEnvOverride] = useState(false);\n\n const toggleEditMode = () => {\n if (editMode && record) {\n parseFields(record);\n }\n setEditMode(!editMode);\n };\n\n const parseFields = (record: ConfigurationKV[]) => {\n let fields: any = {};\n let ovrFlds: any = {};\n if (record && record.length > 0) {\n const enabled = record.find((item: any) => item.key === \"enable\");\n\n let totalCoincidences = 0;\n let totalOverride = 0;\n\n record.forEach((item: any) => {\n if (item.env_override) {\n fields[item.key] = item.env_override.value;\n ovrFlds[item.key] = item.env_override.name;\n } else {\n fields[item.key] = item.value;\n }\n\n if (\n enabledConfigLDAP.includes(item.key) &&\n ((item.value && item.value !== \"\" && item.value !== \"off\") ||\n (item.env_override &&\n item.env_override.value !== \"\" &&\n item.env_override.value !== \"off\"))\n ) {\n totalCoincidences++;\n }\n\n if (enabledConfigLDAP.includes(item.key) && item.env_override) {\n totalOverride++;\n }\n });\n\n const hasConfig = totalCoincidences !== 0;\n\n if (hasConfig && ((enabled && enabled.value !== \"off\") || !enabled)) {\n setIsEnabled(true);\n } else {\n setIsEnabled(false);\n }\n\n if (totalOverride !== 0) {\n setEnvOverride(true);\n }\n\n setHasConfiguration(hasConfig);\n }\n setOverrideFields(ovrFlds);\n setFields(fields);\n };\n\n useEffect(() => {\n const loadRecord = () => {\n api.configs\n .configInfo(\"identity_ldap\")\n .then((res) => {\n if (res.data.length > 0) {\n setRecord(res.data[0].key_values);\n parseFields(res.data[0].key_values || []);\n }\n setLoading(false);\n })\n .catch((err) => {\n setLoading(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n if (loading) {\n loadRecord();\n }\n }, [dispatch, loading]);\n\n const validSave = () => {\n for (const [key, value] of Object.entries(formFields)) {\n if (\n value.required &&\n !(\n fields[key] !== undefined &&\n fields[key] !== null &&\n fields[key] !== \"\"\n )\n ) {\n return false;\n }\n }\n return true;\n };\n\n const saveRecord = () => {\n const keyVals = Object.keys(formFields).map((key) => {\n return {\n key,\n value: fields[key],\n };\n });\n\n api.configs\n .setConfig(\"identity_ldap\", {\n key_values: keyVals,\n })\n .then((res) => {\n setEditMode(false);\n setRecord(keyVals);\n parseFields(keyVals);\n dispatch(setServerNeedsRestart(res.data.restart || false));\n setFields({ ...fields, lookup_bind_password: \"\" });\n\n if (!res.data.restart) {\n dispatch(setSnackBarMessage(\"Configuration saved successfully\"));\n }\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n const closeDeleteModalAndRefresh = async (refresh: boolean) => {\n setResetOpen(false);\n\n if (refresh) {\n dispatch(setServerNeedsRestart(refresh));\n setRecord(undefined);\n setFields({});\n setIsEnabled(false);\n setHasConfiguration(false);\n setEditMode(false);\n }\n };\n\n const toggleConfiguration = (value: boolean) => {\n const payload = {\n key_values: [\n {\n key: \"enable\",\n value: value ? \"on\" : \"off\",\n },\n ],\n };\n\n api.configs\n .setConfig(\"identity_ldap\", payload)\n .then((res) => {\n setIsEnabled(!isEnabled);\n dispatch(setServerNeedsRestart(res.data.restart || false));\n if (!res.data.restart) {\n dispatch(setSnackBarMessage(\"Configuration saved successfully\"));\n }\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n const renderFormField = (key: string, value: any) => {\n switch (value.type) {\n case \"toggle\":\n return (\n \n setFields({ ...fields, [key]: e.target.checked ? \"on\" : \"off\" })\n }\n description=\"\"\n disabled={!editMode}\n />\n );\n default:\n return (\n ) =>\n setFields({ ...fields, [key]: e.target.value })\n }\n placeholder={value.placeholder}\n disabled={!editMode}\n type={value.type}\n />\n );\n }\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"LDAP\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {resetOpen && (\n \n )}\n } />\n \n \n \n \n }\n onClick={toggleEditMode}\n label={\"Edit Configuration\"}\n disabled={loading || envOverride}\n />\n \n {hasConfiguration && (\n \n toggleConfiguration(!isEnabled)}\n label={\n isEnabled ? \"Disable LDAP\" : \"Enable LDAP\"\n }\n variant={isEnabled ? \"secondary\" : \"regular\"}\n disabled={envOverride}\n />\n \n )}\n setLoading(true)}\n label={\"Refresh\"}\n icon={}\n />\n
\n ) : null\n }\n />\n
\n {loading ? (\n \n \n \n ) : (\n \n {editMode ? (\n \n \n }\n >\n {editMode && hasConfiguration ? (\n \n \n Lookup Bind Password must be re-entered to\n change LDAP configurations\n \n }\n iconComponent={}\n help={null}\n />\n \n ) : null}\n {Object.entries(formFields).map(([key, value]) =>\n renderFormField(key, value),\n )}\n \n {editMode && hasConfiguration && (\n setResetOpen(true)}\n label={\"Reset Configuration\"}\n />\n )}\n \n \n \n \n \n ) : (\n \n \n \n {hasConfiguration && (\n \n {Object.entries(formFields).map(\n ([key, value]) => {\n if (!value.editOnly) {\n let label: React.ReactNode = value.label;\n let val: React.ReactNode = fields[key]\n ? fields[key]\n : \"\";\n\n if (overrideFields[key]) {\n label = (\n \n {value.label}\n \n \n \n \n \n \n );\n\n val = (\n \n \n {val}\n \n \n );\n }\n return (\n \n );\n }\n return null;\n },\n )}\n \n )}\n \n \n )}\n \n )}\n
\n ),\n },\n {\n tabConfig: {\n id: \"entities\",\n label: \"Entities\",\n disabled: !hasConfiguration || !isEnabled,\n },\n content: (\n \n {hasConfiguration && (\n \n \n \n )}\n \n ),\n },\n ]}\n currentTabOrPath={curTab}\n onTabClick={(newTab) => {\n setCurTab(newTab);\n setEditMode(false);\n }}\n />\n \n \n );\n};\n\nexport default IDPLDAPConfigurationDetails;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport LoginIcon from \"@mui/icons-material/Login\";\nimport { LockIcon } from \"mds\";\n\nexport const ldapHelpBoxContents = [\n {\n text: \"MinIO supports using an Active Directory or LDAP (AD/LDAP) service for external management of user identities. Configuring an external IDentity Provider (IDP) enables Single-Sign On (SSO) workflows, where applications authenticate against the external IDP before accessing MinIO.\",\n icon: ,\n iconDescription: \"Create Configurations\",\n },\n {\n text: \"MinIO queries the configured Active Directory / LDAP server to verify the credentials specified by the application and optionally return a list of groups in which the user has membership. MinIO supports two modes (Lookup-Bind Mode and Username-Bind Mode) for performing these queries\",\n icon: null,\n iconDescription: \"\",\n },\n {\n text: \"MinIO recommends using Lookup-Bind mode as the preferred method for verifying AD/LDAP credentials. Username-Bind mode is a legacy method retained for backwards compatibility only.\",\n icon: null,\n iconDescription: \"\",\n },\n];\n\nexport const openIDHelpBoxContents = [\n {\n text: \"MinIO supports using an OpenID Connect (OIDC) compatible IDentity Provider (IDP) such as Okta, KeyCloak, Dex, Google, or Facebook for external management of user identities.\",\n icon: ,\n iconDescription: \"Create Configurations\",\n },\n {\n text: \"Configuring an external IDP enables Single-Sign On workflows, where applications authenticate against the external IDP before accessing MinIO.\",\n icon: null,\n iconDescription: \"\",\n },\n];\n\nexport const openIDFormFields = {\n config_url: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Config URL is required\" : \"\";\n },\n label: \"Config URL\",\n tooltip: \"Config URL for identity provider configuration\",\n placeholder:\n \"https://identity-provider-url/.well-known/openid-configuration\",\n type: \"text\",\n },\n client_id: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Client ID is required\" : \"\";\n },\n label: \"Client ID\",\n tooltip: \"Identity provider Client ID\",\n placeholder: \"Enter Client ID\",\n type: \"text\",\n },\n client_secret: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Client Secret is required\" : \"\";\n },\n label: \"Client Secret\",\n tooltip: \"Identity provider Client Secret\",\n placeholder: \"Enter Client Secret\",\n type: \"password\",\n },\n claim_name: {\n required: false,\n label: \"Claim Name\",\n tooltip: \"Claim from which MinIO will read the policy or role to use\",\n placeholder: \"Enter Claim Name\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n },\n display_name: {\n required: false,\n label: \"Display Name\",\n tooltip: \"\",\n placeholder: \"Enter Display Name\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n },\n claim_prefix: {\n required: false,\n label: \"Claim Prefix\",\n tooltip: \"\",\n placeholder: \"Enter Claim Prefix\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n },\n scopes: {\n required: false,\n label: \"Scopes\",\n tooltip: \"\",\n placeholder: \"openid,profile,email\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n },\n redirect_uri: {\n required: false,\n label: \"Redirect URI\",\n tooltip: \"\",\n placeholder: \"https://console-endpoint-url/oauth_callback\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n },\n role_policy: {\n required: false,\n label: \"Role Policy\",\n tooltip: \"\",\n placeholder: \"readonly\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n },\n claim_userinfo: {\n required: false,\n label: \"Claim User Info\",\n tooltip: \"\",\n placeholder: \"Claim User Info\",\n type: \"toggle\",\n hasError: (s: string, editMode: boolean) => \"\",\n },\n redirect_uri_dynamic: {\n required: false,\n label: \"Redirect URI Dynamic\",\n tooltip: \"\",\n placeholder: \"Redirect URI Dynamic\",\n type: \"toggle\",\n hasError: (s: string, editMode: boolean) => \"\",\n },\n};\n\nexport const ldapFormFields = {\n server_insecure: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Server Address is required\" : \"\";\n },\n label: \"Server Insecure\",\n tooltip: \"Disable SSL certificate verification \",\n placeholder: \"myldapserver.com:636\",\n type: \"toggle\",\n editOnly: false,\n },\n server_addr: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Server Address is required\" : \"\";\n },\n label: \"Server Address\",\n tooltip: 'AD/LDAP server address e.g. \"myldapserver.com:636\"',\n placeholder: \"myldapserver.com:636\",\n type: \"text\",\n editOnly: false,\n },\n lookup_bind_dn: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Lookup Bind DN is required\" : \"\";\n },\n label: \"Lookup Bind DN\",\n tooltip:\n \"DN (Distinguished Name) for LDAP read-only service account used to perform DN and group lookups\",\n placeholder: \"cn=admin,dc=min,dc=io\",\n type: \"text\",\n editOnly: false,\n },\n lookup_bind_password: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Lookup Bind Password is required\" : \"\";\n },\n label: \"Lookup Bind Password\",\n tooltip:\n \"Password for LDAP read-only service account used to perform DN and group lookups\",\n placeholder: \"admin\",\n type: \"password\",\n editOnly: true,\n },\n user_dn_search_base_dn: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"User DN Search Base DN is required\" : \"\";\n },\n label: \"User DN Search Base\",\n tooltip: \"\",\n placeholder: \"DC=example,DC=net\",\n type: \"text\",\n editOnly: false,\n },\n user_dn_search_filter: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"User DN Search Filter is required\" : \"\";\n },\n label: \"User DN Search Filter\",\n tooltip: \"\",\n placeholder: \"(sAMAcountName=%s)\",\n type: \"text\",\n editOnly: false,\n },\n group_search_base_dn: {\n required: false,\n hasError: (s: string, editMode: boolean) => \"\",\n label: \"Group Search Base DN\",\n tooltip: \"\",\n placeholder: \"ou=swengg,dc=min,dc=io\",\n type: \"text\",\n editOnly: false,\n },\n group_search_filter: {\n required: false,\n hasError: (s: string, editMode: boolean) => \"\",\n label: \"Group Search Filter\",\n tooltip: \"\",\n placeholder: \"(&(objectclass=groupofnames)(member=%d))\",\n type: \"text\",\n editOnly: false,\n },\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\n\nimport { Box, DataTable, Grid, ProgressBar } from \"mds\";\nimport { policySort } from \"../../../utils/sortFunctions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setSelectedPolicies } from \"../Users/AddUsersSlice\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"../../../api\";\n\ninterface ISelectPolicyProps {\n selectedPolicy?: string[];\n noTitle?: boolean;\n}\n\nconst PolicySelectors = ({ noTitle = false }: ISelectPolicyProps) => {\n const dispatch = useAppDispatch();\n // Local State\n const [records, setRecords] = useState([]);\n const [loading, isLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n\n const currentPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n\n const fetchPolicies = useCallback(() => {\n isLoading(true);\n\n api.policies\n .listPolicies()\n .then((res) => {\n const policies = res.data.policies ?? [];\n isLoading(false);\n setRecords(policies.sort(policySort));\n })\n .catch((err: ErrorResponseHandler) => {\n isLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }, [dispatch]);\n\n //Effects\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n if (loading) {\n fetchPolicies();\n }\n }, [loading, fetchPolicies]);\n\n const selectionChanged = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...currentPolicies]; // We clone the checkedUsers array\n\n if (checked) {\n // If the user has checked this field we need to push this to checkedUsersList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n // remove empty values\n elements = elements.filter((element) => element !== \"\");\n\n dispatch(setSelectedPolicies(elements));\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.name.includes(filter),\n );\n\n return (\n \n {loading && }\n {records.length > 0 ? (\n \n \n {\n setFilter(value);\n }}\n value={filter}\n label={!noTitle ? \"Assign Policies\" : \"\"}\n />\n \n\n \n \n ) : (\n \n No Policies Available\n \n )}\n \n );\n};\n\nexport default PolicySelectors;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Policy, User } from \"api/consoleApi\";\n\ninterface policyDetailsInterface {\n policy: string;\n}\n\nexport const usersSort = (a: User, b: User) => {\n if (a.accessKey && b.accessKey) {\n if (a.accessKey > b.accessKey) {\n return 1;\n }\n if (a.accessKey < b.accessKey) {\n return -1;\n }\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policySort = (a: Policy, b: Policy) => {\n if (a.name! > b.name!) {\n return 1;\n }\n if (a.name! < b.name!) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const stringSort = (a: string, b: string) => {\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policyDetailsSort = (\n a: policyDetailsInterface,\n b: policyDetailsInterface,\n) => {\n if (a.policy > b.policy) {\n return 1;\n }\n if (a.policy < b.policy) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11 7 9.6 8.4l2.6 2.6H2v2h10.2l-2.6 2.6L11 17l5-5-5-5zm9 12h-8v2h8c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-8v2h8v14z\"\n}), 'Login');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1;\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["_ref","configurationName","closeResetModalAndRefresh","resetOpen","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","resetLoading","setResetLoading","useEffect","api","configs","resetConfig","then","catch","err","setErrorSnackMessage","errorToHandler","error","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","onClose","confirmationContent","_jsxs","Fragment","children","ProgressBar","style","maxWidth","whiteSpace","wordWrap","FeatureItem","icon","description","Box","sx","display","marginRight","height","width","marginBottom","fontSize","fontStyle","color","_ref2","helpText","docLink","docText","contents","flex","border","borderRadius","flexFlow","padding","fontWeight","alignItems","paddingBottom","HelpIconFilled","map","content","index","iconDescription","text","concat","href","target","rel","useStyles","makeStyles","theme","headerBarIcon","palette","primary","main","headerBarSubheader","stContainer","justifyContent","borderBottom","titleColumn","leftItems","rightItems","marginLeft","subTitle","actions","className","classes","Grid","container","item","xs","margin","EntityResultTitle","name","CollapseCaret","transform","EntityResultItems","blockName","results","res","_ref3","_results$groups","_results$policies","_results$users","_results$groups2","_results$users2","_results$policies2","entityName","entityLength","groups","length","policies","users","marginTop","SectionTitle","separator","GroupsMenuIcon","h4","fill","groupData","group","user","policy","loading","setLoading","_useState3","_useState4","setUsers","_useState5","_useState6","setGroups","_useState7","_useState8","setResults","selectedPolicies","useSelector","state","createUser","paddingTop","sm","md","lg","flexDirection","gap","withBorders","overflowY","minHeight","maxHeight","userDat","InputBox","id","value","onChange","e","usersElements","_toConsumableArray","overlayIcon","AddIcon","RemoveIcon","overlayAction","addItem","alterUsers","filteredUsers","filter","_","indx","alterUsersList","groupDat","groupsElements","alterGroups","filteredGroups","alterGroupsList","PolicySelectors","selectedPolicy","noTitle","textAlign","Loader","timestamp","TimeIcon","DateTime","fromISO","toFormat","backgroundColor","flexGrow","LDAPResultsBlock","Button","type","variant","onClick","data","cleanPolicies","pol","cleanUsers","usr","cleanGroups","grp","ldapEntities","getLdapEntities","result","SearchIcon","enabledConfigLDAP","formFields","ldapFormFields","isEnabled","setIsEnabled","hasConfiguration","setHasConfiguration","fields","setFields","_useState9","_useState10","overrideFields","setOverrideFields","_useState11","undefined","_useState12","record","setRecord","_useState13","_useState14","editMode","setEditMode","_useState15","_useState16","setResetOpen","_useState17","_useState18","curTab","setCurTab","_useState19","_useState20","envOverride","setEnvOverride","toggleEditMode","parseFields","ovrFlds","enabled","find","key","totalCoincidences","totalOverride","forEach","env_override","includes","hasConfig","configInfo","key_values","closeDeleteModalAndRefresh","_asyncToGenerator","_regeneratorRuntime","mark","_callee","refresh","wrap","_context","prev","next","setServerNeedsRestart","stop","_x","apply","arguments","setHelpName","ResetConfigurationModal","PageHeaderWrapper","label","HelpMenu","PageLayout","Tabs","horizontal","options","tabConfig","ScreenTitle","Tooltip","tooltip","EditIcon","disabled","payload","setConfig","restart","setSnackBarMessage","toggleConfiguration","RefreshIcon","FormLayout","helpBox","AddIDPConfigurationHelpBox","ldapHelpBoxContents","HelpBox","iconComponent","WarnIcon","help","Object","entries","Switch","indicatorLabels","checked","_objectSpread","_defineProperty","required","hasError","placeholder","renderFormField","_i","_Object$entries","_Object$entries$_i","validSave","keyVals","keys","lookup_bind_password","gridTemplateColumns","gridAutoFlow","ValuePair","_ref5","_ref6","editOnly","val","placement","ConsoleIcon","LDAPEntitiesQuery","currentTabOrPath","onTabClick","newTab","LoginIcon","openIDHelpBoxContents","LockIcon","openIDFormFields","config_url","s","client_id","client_secret","claim_name","display_name","claim_prefix","scopes","redirect_uri","role_policy","claim_userinfo","redirect_uri_dynamic","server_insecure","server_addr","lookup_bind_dn","user_dn_search_base_dn","user_dn_search_filter","group_search_base_dn","group_search_filter","_ref$noTitle","records","setRecords","setFilter","currentPolicies","fetchPolicies","useCallback","listPolicies","_res$data$policies","sort","policySort","setModalErrorSnackMessage","filteredRecords","elementItem","SearchBox","DataTable","columns","elementKey","onSelect","targetD","elements","push","element","setSelectedPolicies","selectedItems","idField","customPaperHeight","usersSort","a","b","accessKey","stringSort","policyDetailsSort","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","defineProperty","enumerable","get","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","props","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","muiNames","React","indexOf","muiName","_len","funcs","Array","_key","reduce","acc","func","_len2","args","_key2","this","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/1764.4155e58f.chunk.js b/portal-ui/build/static/js/1764.ba7b49eb.chunk.js similarity index 66% rename from portal-ui/build/static/js/1764.4155e58f.chunk.js rename to portal-ui/build/static/js/1764.ba7b49eb.chunk.js index 908e79b697..d4f132587d 100644 --- a/portal-ui/build/static/js/1764.4155e58f.chunk.js +++ b/portal-ui/build/static/js/1764.ba7b49eb.chunk.js @@ -1,2 +1,2 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1764],{90767:function(e,n,t){"use strict";var r=t(29439),i=t(72791),o=t(31776),s=t(82342),a=t(23508),l=t(29945),c=t(87995),u=t(81551),d=t(80184);n.Z=function(e){var n=e.configurationName,t=e.closeResetModalAndRefresh,f=e.resetOpen,p=(0,u.TL)(),x=(0,i.useState)(!1),h=(0,r.Z)(x,2),m=h[0],g=h[1];(0,i.useEffect)((function(){m&&o.h.configs.resetConfig(n).then((function(){g(!1),t(!0)})).catch((function(e){g(!1),p((0,c.Ih)((0,s.g)(e.error)))}))}),[t,n,m,p]);return(0,d.jsx)(a.Z,{title:"Restore Defaults",confirmText:"Yes, Reset Configuration",isOpen:f,titleIcon:(0,d.jsx)(l.NvT,{}),isLoading:m,onConfirm:function(){g(!0)},onClose:function(){t(!1)},confirmationContent:(0,d.jsxs)(i.Fragment,{children:[m&&(0,d.jsx)(l.kod,{}),(0,d.jsxs)(i.Fragment,{children:["Are you sure you want to restore these configurations to default values?",(0,d.jsx)("br",{}),(0,d.jsx)("b",{style:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"},children:"Please note that this may cause your system to not be accessible"})]})]})})}},37099:function(e,n,t){"use strict";var r=t(72791),i=t(29945),o=t(80184),s=function(e){var n=e.icon,t=e.description;return(0,o.jsxs)(i.xuv,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[n," ",(0,o.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:t})]})};n.Z=function(e){var n=e.helpText,t=e.docLink,a=e.docText,l=e.contents;return(0,o.jsxs)(i.xuv,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px"},children:[(0,o.jsxs)(i.xuv,{sx:{fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center",marginBottom:"16px",paddingBottom:"20px","& .min-icon":{height:"21px",width:"21px",marginRight:"15px"}},children:[(0,o.jsx)(i.M9A,{}),(0,o.jsx)("div",{children:n})]}),(0,o.jsxs)(i.xuv,{sx:{fontSize:"14px",marginBottom:"15px"},children:[l.map((function(e,n){return(0,o.jsxs)(r.Fragment,{children:[e.icon&&(0,o.jsx)(i.xuv,{sx:{paddingBottom:"20px"},children:(0,o.jsx)(s,{icon:e.icon,description:e.iconDescription})}),(0,o.jsx)(i.xuv,{sx:{paddingBottom:"20px"},children:e.text})]},"feature-item-".concat(n))})),(0,o.jsx)(i.xuv,{sx:{paddingBottom:"20px"},children:(0,o.jsx)("a",{href:t,target:"_blank",rel:"noopener",children:a})})]})]})}},1764:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return E}});var r=t(4942),i=t(74165),o=t(15861),s=t(1413),a=t(29439),l=t(72791),c=t(29945),u=t(31776),d=t(82342),f=t(81551),p=t(87995),x=t(79979),h=t(61889),m=t(72455),g=t(80184),v=(0,m.Z)((function(e){return{headerBarIcon:{marginRight:".7rem",color:e.palette.primary.main,"& .min-icon":{width:44,height:44},"@media (max-width: 600px)":{display:"none"}},headerBarSubheader:{color:"grey","@media (max-width: 900px)":{maxWidth:200}},stContainer:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:8,borderBottom:"1px solid #EAEAEA","@media (max-width: 600px)":{flexFlow:"column"}},titleColumn:{height:"auto",justifyContent:"center",display:"flex",flexFlow:"column",alignItems:"flex-start","& h1":{fontSize:19}},leftItems:{display:"flex",alignItems:"center","@media (max-width: 600px)":{flexFlow:"column",width:"100%"}},rightItems:{display:"flex",alignItems:"center","& button":{marginLeft:8},"@media (max-width: 600px)":{width:"100%"}}}})),y=function(e){var n=e.icon,t=e.title,r=e.subTitle,i=e.actions,o=e.className,s=v();return(0,g.jsx)(h.ZP,{container:!0,children:(0,g.jsxs)(h.ZP,{item:!0,xs:12,className:"".concat(s.stContainer," ").concat(o||""),children:[(0,g.jsxs)("div",{className:s.leftItems,children:[n?(0,g.jsx)("div",{className:s.headerBarIcon,children:n}):null,(0,g.jsxs)("div",{className:s.titleColumn,children:[(0,g.jsx)("h1",{style:{margin:0},children:t}),(0,g.jsx)("span",{className:s.headerBarSubheader,children:r})]})]}),(0,g.jsx)("div",{className:s.rightItems,children:i})]})})},j=t(47974),b=t(37099),Z=t(93433),C=t(78687),k=t(99779),w=function(e){var n=e.name;return(0,g.jsxs)("h4",{children:[(0,g.jsx)(c.ZyT,{style:{transform:"rotateZ(90deg)"}}),n]})},D=function(e){var n=e.blockName,t=e.results;return(0,g.jsxs)(l.Fragment,{children:[(0,g.jsxs)("strong",{children:[n,":"]}),(0,g.jsx)("ul",{children:t.map((function(e,t){return(0,g.jsx)("li",{children:e},"policy-".concat(n,"-").concat(t))}))})]})},_=function(e){var n,t,r,i,o,s,a=e.entityName,u=e.results,d=0;switch(a){case"Group":d=(null===(n=u.groups)||void 0===n?void 0:n.length)||0;break;case"Policy":d=(null===(t=u.policies)||void 0===t?void 0:t.length)||0;break;case"User":d=(null===(r=u.users)||void 0===r?void 0:r.length)||0}return(0,g.jsxs)(c.xuv,{className:"resultElement",sx:{marginTop:50,"&:first-of-type":{marginTop:0}},children:[(0,g.jsxs)(c.NZf,{separator:!0,sx:{fontSize:12},icon:(0,g.jsx)(c.anK,{style:{width:17,height:17}}),actions:(0,g.jsxs)(c.xuv,{sx:{fontSize:14},children:[(0,g.jsx)("strong",{children:d})," Entit",1===d?"y":"ies"," Found"]}),children:[a," Mappings"]}),(0,g.jsxs)(c.xuv,{className:"resultsList",sx:{h4:{borderBottom:"#e2e2e2 1px solid",padding:"12px 0",margin:0,marginBottom:15,display:"flex",alignItems:"center","& svg":{marginRight:10,fill:"#3C77A7"}}},children:["Group"===a&&(null===(i=u.groups)||void 0===i?void 0:i.map((function(e,n){return(0,g.jsxs)(l.Fragment,{children:[(0,g.jsx)(w,{name:e.group||""}),e.policies&&(0,g.jsx)(D,{blockName:"Policies",results:e.policies})]},"policy-res-".concat(n))}))),"User"===a&&(null===(o=u.users)||void 0===o?void 0:o.map((function(e,n){return(0,g.jsxs)(l.Fragment,{children:[(0,g.jsx)(w,{name:e.user||""}),e.policies&&(0,g.jsx)(D,{blockName:"Policies",results:e.policies})]},"users-res-".concat(n))}))),"Policy"===a&&(null===(s=u.policies)||void 0===s?void 0:s.map((function(e,n){return(0,g.jsxs)(l.Fragment,{children:[(0,g.jsx)(w,{name:e.policy||""}),e.groups&&(0,g.jsx)(D,{blockName:"Groups",results:e.groups}),e.users&&(0,g.jsx)(D,{blockName:"Users",results:e.users})]},"policy-map-".concat(n))})))]})]})},I=t(58400),S=function(){var e=(0,f.TL)(),n=(0,l.useState)(!1),t=(0,a.Z)(n,2),r=t[0],i=t[1],o=(0,l.useState)([""]),s=(0,a.Z)(o,2),x=s[0],h=s[1],m=(0,l.useState)([""]),v=(0,a.Z)(m,2),y=v[0],j=v[1],b=(0,l.useState)(null),w=(0,a.Z)(b,2),D=w[0],S=w[1],P=(0,C.v9)((function(e){return e.createUser.selectedPolicies}));return(0,g.jsxs)(c.xuv,{sx:{marginTop:15,paddingTop:0},children:[(0,g.jsxs)(c.rjZ,{container:!0,sx:{marginTop:5},children:[(0,g.jsxs)(c.rjZ,{item:!0,sm:12,md:6,lg:5,sx:{padding:10,paddingTop:0},children:[(0,g.jsx)(c.NZf,{children:"Query Filters"}),(0,g.jsxs)(c.xuv,{sx:{padding:"0 10px",display:"flex",flexDirection:"column",gap:40},children:[(0,g.jsxs)(c.xuv,{sx:{padding:"10px 26px"},withBorders:!0,children:[(0,g.jsx)(c.xuv,{sx:{display:"flex"},children:(0,g.jsx)("h4",{style:{margin:0,marginBottom:10,fontSize:14},children:"Users"})}),(0,g.jsx)(c.xuv,{sx:{overflowY:"auto",minHeight:50,maxHeight:250,"& > div > div":{width:"100%"}},children:x.map((function(e,n){return(0,g.jsx)(c.Wzg,{id:"search-user-".concat(n),value:e,onChange:function(e){var t=(0,Z.Z)(x);t[n]=e.target.value,h(t)},overlayIcon:x.length===n+1?(0,g.jsx)(c.dtP,{}):(0,g.jsx)(c.HFL,{}),overlayAction:function(){!function(e,n){if(e){var t=[].concat((0,Z.Z)(x),[""]);h(t)}else{var r=x.filter((function(e,t){return t!==n}));h(r)}}(x.length===n+1,n)}},"search-user-".concat(n))}))})]}),(0,g.jsxs)(c.xuv,{sx:{padding:"10px 26px"},withBorders:!0,children:[(0,g.jsx)("h4",{style:{margin:0,marginBottom:10,fontSize:14},children:"Groups"}),(0,g.jsx)(c.xuv,{sx:{overflowY:"auto",minHeight:50,maxHeight:"calc(100vh - 340px)","& > div > div":{width:"100%"}},children:y.map((function(e,n){return(0,g.jsx)(c.Wzg,{id:"search-group-".concat(n),value:e,onChange:function(e){var t=(0,Z.Z)(y);t[n]=e.target.value,j(t)},overlayIcon:y.length===n+1?(0,g.jsx)(c.dtP,{}):(0,g.jsx)(c.HFL,{}),overlayAction:function(){!function(e,n){if(e){var t=[].concat((0,Z.Z)(y),[""]);j(t)}else{var r=y.filter((function(e,t){return t!==n}));j(r)}}(y.length===n+1,n)}},"search-group-".concat(n))}))})]}),(0,g.jsxs)(c.xuv,{sx:{padding:"10px 26px"},withBorders:!0,children:[(0,g.jsx)("h4",{style:{margin:0,marginBottom:10,fontSize:14},children:"Policies"}),(0,g.jsx)(c.xuv,{sx:{minHeight:265,maxHeight:"calc(100vh - 740px)"},children:(0,g.jsx)(I.Z,{selectedPolicy:P,noTitle:!0})})]})]})]}),(0,g.jsx)(c.rjZ,{item:!0,sm:12,md:6,lg:7,sx:{padding:10,paddingTop:0,display:"flex",flexDirection:"column"},children:r?(0,g.jsx)(c.xuv,{sx:{textAlign:"center"},children:(0,g.jsx)(c.aNw,{})}):(0,g.jsxs)(l.Fragment,{children:[(0,g.jsx)(c.NZf,{actions:(0,g.jsx)(c.xuv,{sx:{display:"flex",flexDirection:"row",alignItems:"center",fontSize:14},children:null!==D&&void 0!==D&&D.timestamp?(0,g.jsxs)(l.Fragment,{children:[(0,g.jsx)(c.wZd,{style:{width:14,height:14,marginRight:5,fill:"#BEBFBF"}}),k.ou.fromISO(D.timestamp).toFormat("D HH:mm:ss")]}):""}),children:"Query Results"}),D?(0,g.jsxs)(c.xuv,{sx:{backgroundColor:"#FBFAFA",padding:"8px 22px",flexGrow:1,overflowY:"auto"},children:[!D.groups&&!D.users&&!D.policies&&(0,g.jsx)(c.xuv,{sx:{textAlign:"center"},children:(0,g.jsx)("h4",{children:"No Results Available"})}),!!D.groups&&(0,g.jsx)(_,{results:D,entityName:"Group"}),!!D.users&&(0,g.jsx)(_,{results:D,entityName:"User"}),!!D.policies&&(0,g.jsx)(_,{results:D,entityName:"Policy"})]}):(0,g.jsx)(c.xuv,{sx:{textAlign:"center"},children:"No query results yet"})]})})]}),(0,g.jsx)(c.rjZ,{container:!0,children:(0,g.jsx)(c.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-start",marginTop:45,padding:"0 20px"},children:(0,g.jsx)(c.zxk,{id:"search-entity",type:"button",variant:"callAction",onClick:function(){i(!0);var n={},t=P.filter((function(e){return""!==e})),r=x.filter((function(e){return""!==e})),o=y.filter((function(e){return""!==e}));t.length>0&&(n.policies=t),r.length>0&&(n.users=r),o.length>0&&(n.groups=o),u.h.ldapEntities.getLdapEntities(n).then((function(e){S(e.data),i(!1)})).catch((function(n){e((0,p.Ih)((0,d.g)(n.error))),i(!1)}))},icon:(0,g.jsx)(c.W1M,{}),children:"Search"})})})]})},P=t(90767),N=t(99670),A=["server_addr","lookup_bind_dn","user_dn_search_base_dn","user_dn_search_filter"],E=function(){var e=(0,f.TL)(),n=x.iR,t=(0,l.useState)(!0),h=(0,a.Z)(t,2),m=h[0],v=h[1],Z=(0,l.useState)(!1),C=(0,a.Z)(Z,2),k=C[0],w=C[1],D=(0,l.useState)(!1),_=(0,a.Z)(D,2),I=_[0],E=_[1],L=(0,l.useState)({}),F=(0,a.Z)(L,2),B=F[0],O=F[1],q=(0,l.useState)({}),R=(0,a.Z)(q,2),T=R[0],z=R[1],M=(0,l.useState)(void 0),U=(0,a.Z)(M,2),K=U[0],H=U[1],G=(0,l.useState)(!1),W=(0,a.Z)(G,2),Y=W[0],Q=W[1],V=(0,l.useState)(!1),X=(0,a.Z)(V,2),J=X[0],$=X[1],ee=(0,l.useState)("configuration"),ne=(0,a.Z)(ee,2),te=ne[0],re=ne[1],ie=(0,l.useState)(!1),oe=(0,a.Z)(ie,2),se=oe[0],ae=oe[1],le=function(){Y&&K&&ce(K),Q(!Y)},ce=function(e){var n={},t={};if(e&&e.length>0){var r=e.find((function(e){return"enable"===e.key})),i=0,o=0;e.forEach((function(e){e.env_override?(n[e.key]=e.env_override.value,t[e.key]=e.env_override.name):n[e.key]=e.value,A.includes(e.key)&&(e.value&&""!==e.value&&"off"!==e.value||e.env_override&&""!==e.env_override.value&&"off"!==e.env_override.value)&&i++,A.includes(e.key)&&e.env_override&&o++}));var s=0!==i;s&&(r&&"off"!==r.value||!r)?w(!0):w(!1),0!==o&&ae(!0),E(s)}z(t),O(n)};(0,l.useEffect)((function(){m&&u.h.configs.configInfo("identity_ldap").then((function(e){e.data.length>0&&(H(e.data[0].key_values),ce(e.data[0].key_values||[])),v(!1)})).catch((function(n){v(!1),e((0,p.Ih)((0,d.g)(n.error)))}))}),[e,m]);var ue=function(){var n=(0,o.Z)((0,i.Z)().mark((function n(t){return(0,i.Z)().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:$(!1),t&&(e((0,p.cN)(t)),H(void 0),O({}),w(!1),E(!1),Q(!1));case 2:case"end":return n.stop()}}),n)})));return function(e){return n.apply(this,arguments)}}();return(0,l.useEffect)((function(){e((0,p.Sc)("LDAP"))}),[]),(0,g.jsxs)(c.rjZ,{item:!0,xs:12,children:[J&&(0,g.jsx)(P.Z,{configurationName:"identity_ldap",closeResetModalAndRefresh:ue,resetOpen:J}),(0,g.jsx)(j.Z,{label:"LDAP",actions:(0,g.jsx)(N.Z,{})}),(0,g.jsx)(c.Xgh,{variant:"constrained",children:(0,g.jsx)(c.mQc,{horizontal:!0,options:[{tabConfig:{id:"configuration",label:"Configuration"},content:(0,g.jsxs)(l.Fragment,{children:[(0,g.jsx)(y,{title:Y?"Edit Configuration":"",actions:Y?null:(0,g.jsxs)(l.Fragment,{children:[(0,g.jsx)(c.ua7,{tooltip:se?"Configuration cannot be edited in this module as LDAP environment variables are set for this MinIO instance.":"",children:(0,g.jsx)(c.zxk,{id:"edit",type:"button",variant:"callAction",icon:(0,g.jsx)(c.dY8,{}),onClick:le,label:"Edit Configuration",disabled:m||se})}),I&&(0,g.jsx)(c.ua7,{tooltip:se?"Configuration cannot be disabled / enabled in this module as LDAP environment variables are set for this MinIO instance.":"",children:(0,g.jsx)(c.zxk,{id:"is-configuration-enabled",onClick:function(){return function(n){var t={key_values:[{key:"enable",value:n?"on":"off"}]};u.h.configs.setConfig("identity_ldap",t).then((function(n){w(!k),e((0,p.cN)(n.data.restart||!1)),n.data.restart||e((0,p.y1)("Configuration saved successfully"))})).catch((function(n){e((0,p.Ih)((0,d.g)(n.error)))}))}(!k)},label:k?"Disable LDAP":"Enable LDAP",variant:k?"secondary":"regular",disabled:se})}),(0,g.jsx)(c.zxk,{id:"refresh-idp-config",onClick:function(){return v(!0)},label:"Refresh",icon:(0,g.jsx)(c.DuK,{})})]})}),(0,g.jsx)("br",{}),m?(0,g.jsx)(c.xuv,{sx:{display:"flex",justifyContent:"center",marginTop:10},children:(0,g.jsx)(c.aNw,{})}):(0,g.jsx)(l.Fragment,{children:Y?(0,g.jsx)(l.Fragment,{children:(0,g.jsxs)(c.ltY,{helpBox:(0,g.jsx)(b.Z,{helpText:"Learn more about LDAP Configurations",contents:x.Si,docLink:"https://min.io/docs/minio/linux/operations/external-iam.html?ref=con#minio-external-iam-ad-ldap",docText:"Learn more about LDAP Configurations"}),children:[Y&&I?(0,g.jsx)(c.xuv,{sx:{marginBottom:15},children:(0,g.jsx)(c.KfX,{title:(0,g.jsx)(c.xuv,{style:{display:"flex",justifyContent:"space-between",alignItems:"center",flexGrow:1},children:"Lookup Bind Password must be re-entered to change LDAP configurations"}),iconComponent:(0,g.jsx)(c.e6P,{}),help:null})}):null,Object.entries(n).map((function(e){var n=(0,a.Z)(e,2);return function(e,n){return"toggle"===n.type?(0,g.jsx)(c.rsf,{indicatorLabels:["Enabled","Disabled"],checked:"on"===B[e],value:"is-field-enabled",id:"is-field-enabled",name:"is-field-enabled",label:n.label,tooltip:n.tooltip,onChange:function(n){return O((0,s.Z)((0,s.Z)({},B),{},(0,r.Z)({},e,n.target.checked?"on":"off")))},description:"",disabled:!Y},e):(0,g.jsx)(c.Wzg,{id:e,required:n.required,name:e,label:n.label,tooltip:n.tooltip,error:n.hasError(B[e],Y),value:B[e]?B[e]:"",onChange:function(n){return O((0,s.Z)((0,s.Z)({},B),{},(0,r.Z)({},e,n.target.value)))},placeholder:n.placeholder,disabled:!Y,type:n.type},e)}(n[0],n[1])})),(0,g.jsxs)(c.xuv,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end",marginTop:"20px",gap:"15px"},children:[Y&&I&&(0,g.jsx)(c.zxk,{id:"clear",type:"button",variant:"secondary",onClick:function(){return $(!0)},label:"Reset Configuration"}),(0,g.jsx)(c.zxk,{id:"cancel",type:"button",variant:"regular",onClick:le,label:"Cancel"}),(0,g.jsx)(c.zxk,{id:"save-key",type:"submit",variant:"callAction",color:"primary",disabled:m||!function(){for(var e=0,t=Object.entries(n);e0?(0,x.jsxs)(o.Fragment,{children:[(0,x.jsx)(s.rjZ,{item:!0,xs:12,className:"inputItem",children:(0,x.jsx)(l.Z,{placeholder:"Start typing to search for a Policy",onChange:function(e){_(e)},value:D,label:t?"":"Assign Policies"})}),(0,x.jsx)(s.wQF,{columns:[{label:"Policy",elementKey:"name"}],onSelect:function(e){var n=e.target,t=n.value,i=n.checked,o=(0,r.Z)(I);i?o.push(t):o=o.filter((function(e){return e!==t})),o=o.filter((function(e){return""!==e})),h((0,d.ue)(o))},selectedItems:I,isLoading:Z,records:P,entityName:"Policies",idField:"name",customPaperHeight:"200px"})]}):(0,x.jsx)(s.xuv,{sx:{textAlign:"center",padding:"10px 0"},children:"No Policies Available"})]})}},21639:function(e,n,t){"use strict";t.d(n,{KE:function(){return s},LQ:function(){return r},V2:function(){return o},g4:function(){return i}});var r=function(e,n){if(e.accessKey&&n.accessKey){if(e.accessKey>n.accessKey)return 1;if(e.accessKeyn.name?1:e.namen?1:en.policy?1:e.policy div > div":{width:"100%"}},children:x.map((function(e,n){return(0,g.jsx)(c.Wzg,{id:"search-user-".concat(n),value:e,onChange:function(e){var t=(0,Z.Z)(x);t[n]=e.target.value,h(t)},overlayIcon:x.length===n+1?(0,g.jsx)(c.dtP,{}):(0,g.jsx)(c.HFL,{}),overlayAction:function(){!function(e,n){if(e){var t=[].concat((0,Z.Z)(x),[""]);h(t)}else{var r=x.filter((function(e,t){return t!==n}));h(r)}}(x.length===n+1,n)}},"search-user-".concat(n))}))})]}),(0,g.jsxs)(c.xuv,{sx:{padding:"10px 26px"},withBorders:!0,children:[(0,g.jsx)("h4",{style:{margin:0,marginBottom:10,fontSize:14},children:"Groups"}),(0,g.jsx)(c.xuv,{sx:{overflowY:"auto",minHeight:50,maxHeight:"calc(100vh - 340px)","& > div > div":{width:"100%"}},children:y.map((function(e,n){return(0,g.jsx)(c.Wzg,{id:"search-group-".concat(n),value:e,onChange:function(e){var t=(0,Z.Z)(y);t[n]=e.target.value,j(t)},overlayIcon:y.length===n+1?(0,g.jsx)(c.dtP,{}):(0,g.jsx)(c.HFL,{}),overlayAction:function(){!function(e,n){if(e){var t=[].concat((0,Z.Z)(y),[""]);j(t)}else{var r=y.filter((function(e,t){return t!==n}));j(r)}}(y.length===n+1,n)}},"search-group-".concat(n))}))})]}),(0,g.jsxs)(c.xuv,{sx:{padding:"10px 26px"},withBorders:!0,children:[(0,g.jsx)("h4",{style:{margin:0,marginBottom:10,fontSize:14},children:"Policies"}),(0,g.jsx)(c.xuv,{sx:{minHeight:265,maxHeight:"calc(100vh - 740px)"},children:(0,g.jsx)(I.Z,{selectedPolicy:P,noTitle:!0})})]})]})]}),(0,g.jsx)(c.rjZ,{item:!0,sm:12,md:6,lg:7,sx:{padding:10,paddingTop:0,display:"flex",flexDirection:"column"},children:r?(0,g.jsx)(c.xuv,{sx:{textAlign:"center"},children:(0,g.jsx)(c.aNw,{})}):(0,g.jsxs)(l.Fragment,{children:[(0,g.jsx)(c.NZf,{actions:(0,g.jsx)(c.xuv,{sx:{display:"flex",flexDirection:"row",alignItems:"center",fontSize:14},children:null!==D&&void 0!==D&&D.timestamp?(0,g.jsxs)(l.Fragment,{children:[(0,g.jsx)(c.wZd,{style:{width:14,height:14,marginRight:5,fill:"#BEBFBF"}}),k.ou.fromISO(D.timestamp).toFormat("D HH:mm:ss")]}):""}),children:"Query Results"}),D?(0,g.jsxs)(c.xuv,{sx:{backgroundColor:"#FBFAFA",padding:"8px 22px",flexGrow:1,overflowY:"auto"},children:[!D.groups&&!D.users&&!D.policies&&(0,g.jsx)(c.xuv,{sx:{textAlign:"center"},children:(0,g.jsx)("h4",{children:"No Results Available"})}),!!D.groups&&(0,g.jsx)(_,{results:D,entityName:"Group"}),!!D.users&&(0,g.jsx)(_,{results:D,entityName:"User"}),!!D.policies&&(0,g.jsx)(_,{results:D,entityName:"Policy"})]}):(0,g.jsx)(c.xuv,{sx:{textAlign:"center"},children:"No query results yet"})]})})]}),(0,g.jsx)(c.rjZ,{container:!0,children:(0,g.jsx)(c.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-start",marginTop:45,padding:"0 20px"},children:(0,g.jsx)(c.zxk,{id:"search-entity",type:"button",variant:"callAction",onClick:function(){i(!0);var n={},t=P.filter((function(e){return""!==e})),r=x.filter((function(e){return""!==e})),o=y.filter((function(e){return""!==e}));t.length>0&&(n.policies=t),r.length>0&&(n.users=r),o.length>0&&(n.groups=o),u.h.ldapEntities.getLdapEntities(n).then((function(e){S(e.data),i(!1)})).catch((function(n){e((0,p.Ih)((0,d.g)(n.error))),i(!1)}))},icon:(0,g.jsx)(c.W1M,{}),children:"Search"})})})]})},P=t(90767),N=t(99670),A=["server_addr","lookup_bind_dn","user_dn_search_base_dn","user_dn_search_filter"],E=function(){var e=(0,f.TL)(),n=x.iR,t=(0,l.useState)(!0),h=(0,a.Z)(t,2),m=h[0],v=h[1],Z=(0,l.useState)(!1),C=(0,a.Z)(Z,2),k=C[0],w=C[1],D=(0,l.useState)(!1),_=(0,a.Z)(D,2),I=_[0],E=_[1],O=(0,l.useState)({}),L=(0,a.Z)(O,2),F=L[0],B=L[1],q=(0,l.useState)({}),R=(0,a.Z)(q,2),T=R[0],z=R[1],M=(0,l.useState)(void 0),U=(0,a.Z)(M,2),K=U[0],H=U[1],G=(0,l.useState)(!1),W=(0,a.Z)(G,2),Y=W[0],Q=W[1],V=(0,l.useState)(!1),X=(0,a.Z)(V,2),J=X[0],$=X[1],ee=(0,l.useState)("configuration"),ne=(0,a.Z)(ee,2),te=ne[0],re=ne[1],ie=(0,l.useState)(!1),oe=(0,a.Z)(ie,2),se=oe[0],ae=oe[1],le=function(){Y&&K&&ce(K),Q(!Y)},ce=function(e){var n={},t={};if(e&&e.length>0){var r=e.find((function(e){return"enable"===e.key})),i=0,o=0;e.forEach((function(e){e.env_override?(n[e.key]=e.env_override.value,t[e.key]=e.env_override.name):n[e.key]=e.value,A.includes(e.key)&&(e.value&&""!==e.value&&"off"!==e.value||e.env_override&&""!==e.env_override.value&&"off"!==e.env_override.value)&&i++,A.includes(e.key)&&e.env_override&&o++}));var s=0!==i;s&&(r&&"off"!==r.value||!r)?w(!0):w(!1),0!==o&&ae(!0),E(s)}z(t),B(n)};(0,l.useEffect)((function(){m&&u.h.configs.configInfo("identity_ldap").then((function(e){e.data.length>0&&(H(e.data[0].key_values),ce(e.data[0].key_values||[])),v(!1)})).catch((function(n){v(!1),e((0,p.Ih)((0,d.g)(n.error)))}))}),[e,m]);var ue=function(){var n=(0,o.Z)((0,i.Z)().mark((function n(t){return(0,i.Z)().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:$(!1),t&&(e((0,p.cN)(t)),H(void 0),B({}),w(!1),E(!1),Q(!1));case 2:case"end":return n.stop()}}),n)})));return function(e){return n.apply(this,arguments)}}();return(0,l.useEffect)((function(){e((0,p.Sc)("LDAP"))}),[]),(0,g.jsxs)(c.rjZ,{item:!0,xs:12,children:[J&&(0,g.jsx)(P.Z,{configurationName:"identity_ldap",closeResetModalAndRefresh:ue,resetOpen:J}),(0,g.jsx)(j.Z,{label:"LDAP",actions:(0,g.jsx)(N.Z,{})}),(0,g.jsx)(c.Xgh,{variant:"constrained",children:(0,g.jsx)(c.mQc,{horizontal:!0,options:[{tabConfig:{id:"configuration",label:"Configuration"},content:(0,g.jsxs)(l.Fragment,{children:[(0,g.jsx)(y,{title:Y?"Edit Configuration":"",actions:Y?null:(0,g.jsxs)(l.Fragment,{children:[(0,g.jsx)(c.ua7,{tooltip:se?"Configuration cannot be edited in this module as LDAP environment variables are set for this MinIO instance.":"",children:(0,g.jsx)(c.zxk,{id:"edit",type:"button",variant:"callAction",icon:(0,g.jsx)(c.dY8,{}),onClick:le,label:"Edit Configuration",disabled:m||se})}),I&&(0,g.jsx)(c.ua7,{tooltip:se?"Configuration cannot be disabled / enabled in this module as LDAP environment variables are set for this MinIO instance.":"",children:(0,g.jsx)(c.zxk,{id:"is-configuration-enabled",onClick:function(){return function(n){var t={key_values:[{key:"enable",value:n?"on":"off"}]};u.h.configs.setConfig("identity_ldap",t).then((function(n){w(!k),e((0,p.cN)(n.data.restart||!1)),n.data.restart||e((0,p.y1)("Configuration saved successfully"))})).catch((function(n){e((0,p.Ih)((0,d.g)(n.error)))}))}(!k)},label:k?"Disable LDAP":"Enable LDAP",variant:k?"secondary":"regular",disabled:se})}),(0,g.jsx)(c.zxk,{id:"refresh-idp-config",onClick:function(){return v(!0)},label:"Refresh",icon:(0,g.jsx)(c.DuK,{})})]})}),(0,g.jsx)("br",{}),m?(0,g.jsx)(c.xuv,{sx:{display:"flex",justifyContent:"center",marginTop:10},children:(0,g.jsx)(c.aNw,{})}):(0,g.jsx)(l.Fragment,{children:Y?(0,g.jsx)(l.Fragment,{children:(0,g.jsxs)(c.ltY,{helpBox:(0,g.jsx)(b.Z,{helpText:"Learn more about LDAP Configurations",contents:x.Si,docLink:"https://min.io/docs/minio/linux/operations/external-iam.html?ref=con#minio-external-iam-ad-ldap",docText:"Learn more about LDAP Configurations"}),children:[Y&&I?(0,g.jsx)(c.xuv,{sx:{marginBottom:15},children:(0,g.jsx)(c.KfX,{title:(0,g.jsx)(c.xuv,{style:{display:"flex",justifyContent:"space-between",alignItems:"center",flexGrow:1},children:"Lookup Bind Password must be re-entered to change LDAP configurations"}),iconComponent:(0,g.jsx)(c.e6P,{}),help:null})}):null,Object.entries(n).map((function(e){var n=(0,a.Z)(e,2);return function(e,n){return"toggle"===n.type?(0,g.jsx)(c.rsf,{indicatorLabels:["Enabled","Disabled"],checked:"on"===F[e],value:"is-field-enabled",id:"is-field-enabled",name:"is-field-enabled",label:n.label,tooltip:n.tooltip,onChange:function(n){return B((0,s.Z)((0,s.Z)({},F),{},(0,r.Z)({},e,n.target.checked?"on":"off")))},description:"",disabled:!Y},e):(0,g.jsx)(c.Wzg,{id:e,required:n.required,name:e,label:n.label,tooltip:n.tooltip,error:n.hasError(F[e],Y),value:F[e]?F[e]:"",onChange:function(n){return B((0,s.Z)((0,s.Z)({},F),{},(0,r.Z)({},e,n.target.value)))},placeholder:n.placeholder,disabled:!Y,type:n.type},e)}(n[0],n[1])})),(0,g.jsxs)(c.xuv,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end",marginTop:"20px",gap:"15px"},children:[Y&&I&&(0,g.jsx)(c.zxk,{id:"clear",type:"button",variant:"secondary",onClick:function(){return $(!0)},label:"Reset Configuration"}),(0,g.jsx)(c.zxk,{id:"cancel",type:"button",variant:"regular",onClick:le,label:"Cancel"}),(0,g.jsx)(c.zxk,{id:"save-key",type:"submit",variant:"callAction",color:"primary",disabled:m||!function(){for(var e=0,t=Object.entries(n);e0?(0,x.jsxs)(o.Fragment,{children:[(0,x.jsx)(s.rjZ,{item:!0,xs:12,className:"inputItem",children:(0,x.jsx)(l.Z,{placeholder:"Start typing to search for a Policy",onChange:function(e){_(e)},value:D,label:t?"":"Assign Policies"})}),(0,x.jsx)(s.wQF,{columns:[{label:"Policy",elementKey:"name"}],onSelect:function(e){var n=e.target,t=n.value,i=n.checked,o=(0,r.Z)(I);i?o.push(t):o=o.filter((function(e){return e!==t})),o=o.filter((function(e){return""!==e})),h((0,d.ue)(o))},selectedItems:I,isLoading:Z,records:P,entityName:"Policies",idField:"name",customPaperHeight:"200px"})]}):(0,x.jsx)(s.xuv,{sx:{textAlign:"center",padding:"10px 0"},children:"No Policies Available"})]})}},21639:function(e,n,t){"use strict";t.d(n,{KE:function(){return s},LQ:function(){return r},V2:function(){return o},g4:function(){return i}});var r=function(e,n){if(e.accessKey&&n.accessKey){if(e.accessKey>n.accessKey)return 1;if(e.accessKeyn.name?1:e.namen?1:en.policy?1:e.policy.\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\n\nimport { ConfirmDeleteIcon, ProgressBar } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IResetConfiguration {\n configurationName: string;\n closeResetModalAndRefresh: (reloadConfiguration: boolean) => void;\n resetOpen: boolean;\n}\n\nconst ResetConfigurationModal = ({\n configurationName,\n closeResetModalAndRefresh,\n resetOpen,\n}: IResetConfiguration) => {\n const dispatch = useAppDispatch();\n const [resetLoading, setResetLoading] = useState(false);\n\n useEffect(() => {\n if (resetLoading) {\n api.configs\n .resetConfig(configurationName)\n .then(() => {\n setResetLoading(false);\n closeResetModalAndRefresh(true);\n })\n .catch((err) => {\n setResetLoading(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n }, [closeResetModalAndRefresh, configurationName, resetLoading, dispatch]);\n\n const resetConfiguration = () => {\n setResetLoading(true);\n };\n\n return (\n }\n isLoading={resetLoading}\n onConfirm={resetConfiguration}\n onClose={() => {\n closeResetModalAndRefresh(false);\n }}\n confirmationContent={\n \n {resetLoading && }\n \n Are you sure you want to restore these configurations to default\n values?\n
\n \n Please note that this may cause your system to not be accessible\n \n
\n
\n }\n />\n );\n};\n\nexport default ResetConfigurationModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { HelpIconFilled, Box } from \"mds\";\n\ninterface IContent {\n icon: React.ReactNode;\n text: string;\n iconDescription: string;\n}\n\ninterface IAddIDPConfigurationHelpBoxProps {\n helpText: string;\n docLink: string;\n docText: string;\n contents: IContent[];\n}\n\nconst FeatureItem = ({\n icon,\n description,\n}: {\n icon: any;\n description: string;\n}) => {\n return (\n \n {icon}{\" \"}\n
\n {description}\n
\n \n );\n};\n\nconst AddIDPConfigurationHelpBox = ({\n helpText,\n docLink,\n docText,\n contents,\n}: IAddIDPConfigurationHelpBoxProps) => {\n return (\n \n \n \n
{helpText}
\n \n \n {contents.map((content, index) => (\n \n {content.icon && (\n \n \n \n )}\n {content.text}\n \n ))}\n \n \n {docText}\n \n \n \n \n );\n};\n\nexport default AddIDPConfigurationHelpBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\ninterface IScreenTitle {\n icon?: any;\n title?: any;\n subTitle?: any;\n actions?: any;\n className?: any;\n}\n\nconst useStyles = makeStyles((theme: Theme) => ({\n headerBarIcon: {\n marginRight: \".7rem\",\n color: theme.palette.primary.main,\n \"& .min-icon\": {\n width: 44,\n height: 44,\n },\n \"@media (max-width: 600px)\": {\n display: \"none\",\n },\n },\n headerBarSubheader: {\n color: \"grey\",\n \"@media (max-width: 900px)\": {\n maxWidth: 200,\n },\n },\n stContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: 8,\n\n borderBottom: \"1px solid #EAEAEA\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n },\n },\n titleColumn: {\n height: \"auto\",\n justifyContent: \"center\",\n display: \"flex\",\n flexFlow: \"column\",\n alignItems: \"flex-start\",\n \"& h1\": {\n fontSize: 19,\n },\n },\n leftItems: {\n display: \"flex\",\n alignItems: \"center\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n width: \"100%\",\n },\n },\n rightItems: {\n display: \"flex\",\n alignItems: \"center\",\n \"& button\": {\n marginLeft: 8,\n },\n \"@media (max-width: 600px)\": {\n width: \"100%\",\n },\n },\n}));\n\nconst ScreenTitle = ({\n icon,\n title,\n subTitle,\n actions,\n className,\n}: IScreenTitle) => {\n const classes = useStyles();\n return (\n \n \n
\n {icon ?
{icon}
: null}\n
\n

{title}

\n {subTitle}\n
\n
\n\n
{actions}
\n
\n \n );\n};\n\nexport default ScreenTitle;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Box, CollapseCaret, GroupsMenuIcon, SectionTitle } from \"mds\";\nimport { LdapEntities } from \"api/consoleApi\";\n\ninterface IResultBlock {\n entityName: \"Group\" | \"User\" | \"Policy\";\n results: LdapEntities;\n}\n\ninterface IEntityResultName {\n name: string;\n}\n\ninterface IEntityResultItem {\n blockName: \"Policies\" | \"Groups\" | \"Users\";\n results: string[];\n}\n\nconst EntityResultTitle = ({ name }: IEntityResultName) => {\n return (\n

\n \n {name}\n

\n );\n};\n\nconst EntityResultItems = ({ blockName, results }: IEntityResultItem) => {\n return (\n \n {blockName}:\n
    \n {results.map((res, index) => (\n
  • {res}
  • \n ))}\n
\n
\n );\n};\n\nconst LDAPResultsBlock = ({ entityName, results }: IResultBlock) => {\n let entityLength = 0;\n\n switch (entityName) {\n case \"Group\":\n entityLength = results.groups?.length || 0;\n break;\n case \"Policy\":\n entityLength = results.policies?.length || 0;\n break;\n case \"User\":\n entityLength = results.users?.length || 0;\n break;\n }\n\n return (\n \n }\n actions={\n \n {entityLength} Entit\n {entityLength === 1 ? \"y\" : \"ies\"} Found\n \n }\n >\n {entityName} Mappings\n \n \n {entityName === \"Group\" &&\n results.groups?.map((groupData, index) => {\n return (\n \n \n {groupData.policies && (\n \n )}\n \n );\n })}\n {entityName === \"User\" &&\n results.users?.map((groupData, index) => {\n return (\n \n \n {groupData.policies && (\n \n )}\n \n );\n })}\n {entityName === \"Policy\" &&\n results.policies?.map((groupData, index) => {\n return (\n \n \n {groupData.groups && (\n \n )}\n {groupData.users && (\n \n )}\n \n );\n })}\n \n \n );\n};\n\nexport default LDAPResultsBlock;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport {\n AddIcon,\n Box,\n Button,\n Grid,\n InputBox,\n Loader,\n RemoveIcon,\n SearchIcon,\n SectionTitle,\n TimeIcon,\n} from \"mds\";\nimport { useSelector } from \"react-redux\";\nimport { DateTime } from \"luxon\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { LdapEntities } from \"api/consoleApi\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport LDAPResultsBlock from \"./LDAPResultsBlock\";\nimport PolicySelectors from \"../../Policies/PolicySelectors\";\n\nconst LDAPEntitiesQuery = () => {\n const dispatch = useAppDispatch();\n\n const [loading, setLoading] = useState(false);\n const [users, setUsers] = useState([\"\"]);\n const [groups, setGroups] = useState([\"\"]);\n const [results, setResults] = useState(null);\n\n const selectedPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n\n const searchEntities = () => {\n setLoading(true);\n\n let data: any = {};\n\n let cleanPolicies = selectedPolicies.filter((pol) => pol !== \"\");\n let cleanUsers = users.filter((usr) => usr !== \"\");\n let cleanGroups = groups.filter((grp) => grp !== \"\");\n\n if (cleanPolicies.length > 0) {\n data[\"policies\"] = cleanPolicies;\n }\n\n if (cleanUsers.length > 0) {\n data[\"users\"] = cleanUsers;\n }\n\n if (cleanGroups.length > 0) {\n data[\"groups\"] = cleanGroups;\n }\n\n api.ldapEntities\n .getLdapEntities(data)\n .then((result) => {\n setResults(result.data);\n setLoading(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setLoading(false);\n });\n };\n\n const alterUsersList = (addItem: boolean, index: number) => {\n if (addItem) {\n const alterUsers = [...users, \"\"];\n setUsers(alterUsers);\n\n return;\n }\n\n const filteredUsers = users.filter((_, indx) => indx !== index);\n\n setUsers(filteredUsers);\n };\n\n const alterGroupsList = (addItem: boolean, index: number) => {\n if (addItem) {\n const alterGroups = [...groups, \"\"];\n setGroups(alterGroups);\n\n return;\n }\n\n const filteredGroups = groups.filter((_, indx) => indx !== index);\n\n setGroups(filteredGroups);\n };\n\n return (\n \n \n \n Query Filters\n\n \n \n \n

\n Users\n

\n
\n div > div\": {\n width: \"100%\",\n },\n }}\n >\n {users.map((userDat, index) => {\n return (\n ) => {\n const usersElements = [...users];\n usersElements[index] = e.target.value;\n setUsers(usersElements);\n }}\n overlayIcon={\n users.length === index + 1 ? (\n \n ) : (\n \n )\n }\n overlayAction={() => {\n alterUsersList(users.length === index + 1, index);\n }}\n />\n );\n })}\n
\n
\n \n

\n Groups\n

\n div > div\": {\n width: \"100%\",\n },\n }}\n >\n {groups.map((groupDat, index) => {\n return (\n ) => {\n const groupsElements = [...groups];\n groupsElements[index] = e.target.value;\n setGroups(groupsElements);\n }}\n overlayIcon={\n groups.length === index + 1 ? (\n \n ) : (\n \n )\n }\n overlayAction={() => {\n alterGroupsList(groups.length === index + 1, index);\n }}\n />\n );\n })}\n
\n \n \n

\n Policies\n

\n \n \n
\n \n \n \n \n {loading ? (\n \n \n \n ) : (\n \n \n {results?.timestamp ? (\n \n \n {DateTime.fromISO(results.timestamp).toFormat(\n \"D HH:mm:ss\",\n )}\n \n ) : (\n \"\"\n )}\n \n }\n >\n Query Results\n \n {results ? (\n \n {!results.groups && !results.users && !results.policies && (\n \n

No Results Available

\n
\n )}\n {!!results.groups && (\n \n )}\n {!!results.users && (\n \n )}\n {!!results.policies && (\n \n )}\n \n ) : (\n No query results yet\n )}\n
\n )}\n \n \n \n \n }\n >\n Search\n \n \n \n \n );\n};\n\nexport default LDAPEntitiesQuery;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport {\n Box,\n Button,\n ConsoleIcon,\n EditIcon,\n FormLayout,\n Grid,\n HelpBox,\n InputBox,\n Loader,\n PageLayout,\n RefreshIcon,\n Switch,\n Tabs,\n Tooltip,\n ValuePair,\n WarnIcon,\n} from \"mds\";\nimport { api } from \"api\";\nimport { ConfigurationKV } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport { useAppDispatch } from \"../../../../store\";\nimport {\n setErrorSnackMessage,\n setHelpName,\n setServerNeedsRestart,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { ldapFormFields, ldapHelpBoxContents } from \"../utils\";\nimport ScreenTitle from \"../../Common/ScreenTitle/ScreenTitle\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport AddIDPConfigurationHelpBox from \"../AddIDPConfigurationHelpbox\";\nimport LDAPEntitiesQuery from \"./LDAPEntitiesQuery\";\nimport ResetConfigurationModal from \"../../EventDestinations/CustomForms/ResetConfigurationModal\";\nimport HelpMenu from \"../../HelpMenu\";\n\nconst enabledConfigLDAP = [\n \"server_addr\",\n \"lookup_bind_dn\",\n \"user_dn_search_base_dn\",\n \"user_dn_search_filter\",\n];\n\nconst IDPLDAPConfigurationDetails = () => {\n const dispatch = useAppDispatch();\n\n const formFields = ldapFormFields;\n\n const [loading, setLoading] = useState(true);\n const [isEnabled, setIsEnabled] = useState(false);\n const [hasConfiguration, setHasConfiguration] = useState(false);\n const [fields, setFields] = useState({});\n const [overrideFields, setOverrideFields] = useState({});\n const [record, setRecord] = useState(\n undefined,\n );\n const [editMode, setEditMode] = useState(false);\n const [resetOpen, setResetOpen] = useState(false);\n const [curTab, setCurTab] = useState(\"configuration\");\n const [envOverride, setEnvOverride] = useState(false);\n\n const toggleEditMode = () => {\n if (editMode && record) {\n parseFields(record);\n }\n setEditMode(!editMode);\n };\n\n const parseFields = (record: ConfigurationKV[]) => {\n let fields: any = {};\n let ovrFlds: any = {};\n if (record && record.length > 0) {\n const enabled = record.find((item: any) => item.key === \"enable\");\n\n let totalCoincidences = 0;\n let totalOverride = 0;\n\n record.forEach((item: any) => {\n if (item.env_override) {\n fields[item.key] = item.env_override.value;\n ovrFlds[item.key] = item.env_override.name;\n } else {\n fields[item.key] = item.value;\n }\n\n if (\n enabledConfigLDAP.includes(item.key) &&\n ((item.value && item.value !== \"\" && item.value !== \"off\") ||\n (item.env_override &&\n item.env_override.value !== \"\" &&\n item.env_override.value !== \"off\"))\n ) {\n totalCoincidences++;\n }\n\n if (enabledConfigLDAP.includes(item.key) && item.env_override) {\n totalOverride++;\n }\n });\n\n const hasConfig = totalCoincidences !== 0;\n\n if (hasConfig && ((enabled && enabled.value !== \"off\") || !enabled)) {\n setIsEnabled(true);\n } else {\n setIsEnabled(false);\n }\n\n if (totalOverride !== 0) {\n setEnvOverride(true);\n }\n\n setHasConfiguration(hasConfig);\n }\n setOverrideFields(ovrFlds);\n setFields(fields);\n };\n\n useEffect(() => {\n const loadRecord = () => {\n api.configs\n .configInfo(\"identity_ldap\")\n .then((res) => {\n if (res.data.length > 0) {\n setRecord(res.data[0].key_values);\n parseFields(res.data[0].key_values || []);\n }\n setLoading(false);\n })\n .catch((err) => {\n setLoading(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n if (loading) {\n loadRecord();\n }\n }, [dispatch, loading]);\n\n const validSave = () => {\n for (const [key, value] of Object.entries(formFields)) {\n if (\n value.required &&\n !(\n fields[key] !== undefined &&\n fields[key] !== null &&\n fields[key] !== \"\"\n )\n ) {\n return false;\n }\n }\n return true;\n };\n\n const saveRecord = () => {\n const keyVals = Object.keys(formFields).map((key) => {\n return {\n key,\n value: fields[key],\n };\n });\n\n api.configs\n .setConfig(\"identity_ldap\", {\n key_values: keyVals,\n })\n .then((res) => {\n setEditMode(false);\n setRecord(keyVals);\n parseFields(keyVals);\n dispatch(setServerNeedsRestart(res.data.restart || false));\n setFields({ ...fields, lookup_bind_password: \"\" });\n\n if (!res.data.restart) {\n dispatch(setSnackBarMessage(\"Configuration saved successfully\"));\n }\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n const closeDeleteModalAndRefresh = async (refresh: boolean) => {\n setResetOpen(false);\n\n if (refresh) {\n dispatch(setServerNeedsRestart(refresh));\n setRecord(undefined);\n setFields({});\n setIsEnabled(false);\n setHasConfiguration(false);\n setEditMode(false);\n }\n };\n\n const toggleConfiguration = (value: boolean) => {\n const payload = {\n key_values: [\n {\n key: \"enable\",\n value: value ? \"on\" : \"off\",\n },\n ],\n };\n\n api.configs\n .setConfig(\"identity_ldap\", payload)\n .then((res) => {\n setIsEnabled(!isEnabled);\n dispatch(setServerNeedsRestart(res.data.restart || false));\n if (!res.data.restart) {\n dispatch(setSnackBarMessage(\"Configuration saved successfully\"));\n }\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n const renderFormField = (key: string, value: any) => {\n switch (value.type) {\n case \"toggle\":\n return (\n \n setFields({ ...fields, [key]: e.target.checked ? \"on\" : \"off\" })\n }\n description=\"\"\n disabled={!editMode}\n />\n );\n default:\n return (\n ) =>\n setFields({ ...fields, [key]: e.target.value })\n }\n placeholder={value.placeholder}\n disabled={!editMode}\n type={value.type}\n />\n );\n }\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"LDAP\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {resetOpen && (\n \n )}\n } />\n \n \n \n \n }\n onClick={toggleEditMode}\n label={\"Edit Configuration\"}\n disabled={loading || envOverride}\n />\n \n {hasConfiguration && (\n \n toggleConfiguration(!isEnabled)}\n label={\n isEnabled ? \"Disable LDAP\" : \"Enable LDAP\"\n }\n variant={isEnabled ? \"secondary\" : \"regular\"}\n disabled={envOverride}\n />\n \n )}\n setLoading(true)}\n label={\"Refresh\"}\n icon={}\n />\n \n ) : null\n }\n />\n
\n {loading ? (\n \n \n \n ) : (\n \n {editMode ? (\n \n \n }\n >\n {editMode && hasConfiguration ? (\n \n \n Lookup Bind Password must be re-entered to\n change LDAP configurations\n \n }\n iconComponent={}\n help={null}\n />\n \n ) : null}\n {Object.entries(formFields).map(([key, value]) =>\n renderFormField(key, value),\n )}\n \n {editMode && hasConfiguration && (\n setResetOpen(true)}\n label={\"Reset Configuration\"}\n />\n )}\n \n \n \n \n \n ) : (\n \n \n \n {hasConfiguration && (\n \n {Object.entries(formFields).map(\n ([key, value]) => {\n if (!value.editOnly) {\n let label: React.ReactNode = value.label;\n let val: React.ReactNode = fields[key]\n ? fields[key]\n : \"\";\n\n if (overrideFields[key]) {\n label = (\n \n {value.label}\n \n \n \n \n \n \n );\n\n val = (\n \n \n {val}\n \n \n );\n }\n return (\n \n );\n }\n return null;\n },\n )}\n \n )}\n \n \n )}\n \n )}\n \n ),\n },\n {\n tabConfig: {\n id: \"entities\",\n label: \"Entities\",\n disabled: !hasConfiguration || !isEnabled,\n },\n content: (\n \n {hasConfiguration && (\n \n \n \n )}\n \n ),\n },\n ]}\n currentTabOrPath={curTab}\n onTabClick={(newTab) => {\n setCurTab(newTab);\n setEditMode(false);\n }}\n />\n
\n
\n );\n};\n\nexport default IDPLDAPConfigurationDetails;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport LoginIcon from \"@mui/icons-material/Login\";\nimport { LockIcon } from \"mds\";\n\nexport const ldapHelpBoxContents = [\n {\n text: \"MinIO supports using an Active Directory or LDAP (AD/LDAP) service for external management of user identities. Configuring an external IDentity Provider (IDP) enables Single-Sign On (SSO) workflows, where applications authenticate against the external IDP before accessing MinIO.\",\n icon: ,\n iconDescription: \"Create Configurations\",\n },\n {\n text: \"MinIO queries the configured Active Directory / LDAP server to verify the credentials specified by the application and optionally return a list of groups in which the user has membership. MinIO supports two modes (Lookup-Bind Mode and Username-Bind Mode) for performing these queries\",\n icon: null,\n iconDescription: \"\",\n },\n {\n text: \"MinIO recommends using Lookup-Bind mode as the preferred method for verifying AD/LDAP credentials. Username-Bind mode is a legacy method retained for backwards compatibility only.\",\n icon: null,\n iconDescription: \"\",\n },\n];\n\nexport const openIDHelpBoxContents = [\n {\n text: \"MinIO supports using an OpenID Connect (OIDC) compatible IDentity Provider (IDP) such as Okta, KeyCloak, Dex, Google, or Facebook for external management of user identities.\",\n icon: ,\n iconDescription: \"Create Configurations\",\n },\n {\n text: \"Configuring an external IDP enables Single-Sign On workflows, where applications authenticate against the external IDP before accessing MinIO.\",\n icon: null,\n iconDescription: \"\",\n },\n];\n\nexport const openIDFormFields = {\n config_url: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Config URL is required\" : \"\";\n },\n label: \"Config URL\",\n tooltip: \"Config URL for identity provider configuration\",\n placeholder:\n \"https://identity-provider-url/.well-known/openid-configuration\",\n type: \"text\",\n editOnly: false,\n },\n client_id: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Client ID is required\" : \"\";\n },\n label: \"Client ID\",\n tooltip: \"Identity provider Client ID\",\n placeholder: \"Enter Client ID\",\n type: \"text\",\n editOnly: false,\n },\n client_secret: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Client Secret is required\" : \"\";\n },\n label: \"Client Secret\",\n tooltip: \"Identity provider Client Secret\",\n placeholder: \"Enter Client Secret\",\n type: \"password\",\n editOnly: true,\n },\n claim_name: {\n required: false,\n label: \"Claim Name\",\n tooltip: \"Claim from which MinIO will read the policy or role to use\",\n placeholder: \"Enter Claim Name\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n display_name: {\n required: false,\n label: \"Display Name\",\n tooltip: \"\",\n placeholder: \"Enter Display Name\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n claim_prefix: {\n required: false,\n label: \"Claim Prefix\",\n tooltip: \"\",\n placeholder: \"Enter Claim Prefix\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n scopes: {\n required: false,\n label: \"Scopes\",\n tooltip: \"\",\n placeholder: \"openid,profile,email\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n redirect_uri: {\n required: false,\n label: \"Redirect URI\",\n tooltip: \"\",\n placeholder: \"https://console-endpoint-url/oauth_callback\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n role_policy: {\n required: false,\n label: \"Role Policy\",\n tooltip: \"\",\n placeholder: \"readonly\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n claim_userinfo: {\n required: false,\n label: \"Claim User Info\",\n tooltip: \"\",\n placeholder: \"Claim User Info\",\n type: \"toggle\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n redirect_uri_dynamic: {\n required: false,\n label: \"Redirect URI Dynamic\",\n tooltip: \"\",\n placeholder: \"Redirect URI Dynamic\",\n type: \"toggle\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n};\n\nexport const ldapFormFields = {\n server_insecure: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Server Address is required\" : \"\";\n },\n label: \"Server Insecure\",\n tooltip: \"Disable SSL certificate verification \",\n placeholder: \"myldapserver.com:636\",\n type: \"toggle\",\n editOnly: false,\n },\n server_addr: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Server Address is required\" : \"\";\n },\n label: \"Server Address\",\n tooltip: 'AD/LDAP server address e.g. \"myldapserver.com:636\"',\n placeholder: \"myldapserver.com:636\",\n type: \"text\",\n editOnly: false,\n },\n lookup_bind_dn: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Lookup Bind DN is required\" : \"\";\n },\n label: \"Lookup Bind DN\",\n tooltip:\n \"DN (Distinguished Name) for LDAP read-only service account used to perform DN and group lookups\",\n placeholder: \"cn=admin,dc=min,dc=io\",\n type: \"text\",\n editOnly: false,\n },\n lookup_bind_password: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Lookup Bind Password is required\" : \"\";\n },\n label: \"Lookup Bind Password\",\n tooltip:\n \"Password for LDAP read-only service account used to perform DN and group lookups\",\n placeholder: \"admin\",\n type: \"password\",\n editOnly: true,\n },\n user_dn_search_base_dn: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"User DN Search Base DN is required\" : \"\";\n },\n label: \"User DN Search Base\",\n tooltip: \"\",\n placeholder: \"DC=example,DC=net\",\n type: \"text\",\n editOnly: false,\n },\n user_dn_search_filter: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"User DN Search Filter is required\" : \"\";\n },\n label: \"User DN Search Filter\",\n tooltip: \"\",\n placeholder: \"(sAMAcountName=%s)\",\n type: \"text\",\n editOnly: false,\n },\n group_search_base_dn: {\n required: false,\n hasError: (s: string, editMode: boolean) => \"\",\n label: \"Group Search Base DN\",\n tooltip: \"\",\n placeholder: \"ou=swengg,dc=min,dc=io\",\n type: \"text\",\n editOnly: false,\n },\n group_search_filter: {\n required: false,\n hasError: (s: string, editMode: boolean) => \"\",\n label: \"Group Search Filter\",\n tooltip: \"\",\n placeholder: \"(&(objectclass=groupofnames)(member=%d))\",\n type: \"text\",\n editOnly: false,\n },\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\n\nimport { Box, DataTable, Grid, ProgressBar } from \"mds\";\nimport { policySort } from \"../../../utils/sortFunctions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setSelectedPolicies } from \"../Users/AddUsersSlice\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"../../../api\";\n\ninterface ISelectPolicyProps {\n selectedPolicy?: string[];\n noTitle?: boolean;\n}\n\nconst PolicySelectors = ({ noTitle = false }: ISelectPolicyProps) => {\n const dispatch = useAppDispatch();\n // Local State\n const [records, setRecords] = useState([]);\n const [loading, isLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n\n const currentPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n\n const fetchPolicies = useCallback(() => {\n isLoading(true);\n\n api.policies\n .listPolicies()\n .then((res) => {\n const policies = res.data.policies ?? [];\n isLoading(false);\n setRecords(policies.sort(policySort));\n })\n .catch((err: ErrorResponseHandler) => {\n isLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }, [dispatch]);\n\n //Effects\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n if (loading) {\n fetchPolicies();\n }\n }, [loading, fetchPolicies]);\n\n const selectionChanged = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...currentPolicies]; // We clone the checkedUsers array\n\n if (checked) {\n // If the user has checked this field we need to push this to checkedUsersList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n // remove empty values\n elements = elements.filter((element) => element !== \"\");\n\n dispatch(setSelectedPolicies(elements));\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.name.includes(filter),\n );\n\n return (\n \n {loading && }\n {records.length > 0 ? (\n \n \n {\n setFilter(value);\n }}\n value={filter}\n label={!noTitle ? \"Assign Policies\" : \"\"}\n />\n \n\n \n \n ) : (\n \n No Policies Available\n \n )}\n \n );\n};\n\nexport default PolicySelectors;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Policy, User } from \"api/consoleApi\";\n\ninterface policyDetailsInterface {\n policy: string;\n}\n\nexport const usersSort = (a: User, b: User) => {\n if (a.accessKey && b.accessKey) {\n if (a.accessKey > b.accessKey) {\n return 1;\n }\n if (a.accessKey < b.accessKey) {\n return -1;\n }\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policySort = (a: Policy, b: Policy) => {\n if (a.name! > b.name!) {\n return 1;\n }\n if (a.name! < b.name!) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const stringSort = (a: string, b: string) => {\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policyDetailsSort = (\n a: policyDetailsInterface,\n b: policyDetailsInterface,\n) => {\n if (a.policy > b.policy) {\n return 1;\n }\n if (a.policy < b.policy) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11 7 9.6 8.4l2.6 2.6H2v2h10.2l-2.6 2.6L11 17l5-5-5-5zm9 12h-8v2h8c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-8v2h8v14z\"\n}), 'Login');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n var _muiName, _element$type;\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf( // For server components `muiName` is avaialble in element.type._payload.value.muiName\n // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45\n // eslint-disable-next-line no-underscore-dangle\n (_muiName = element.type.muiName) != null ? _muiName : (_element$type = element.type) == null || (_element$type = _element$type._payload) == null || (_element$type = _element$type.value) == null ? void 0 : _element$type.muiName) !== -1;\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["_ref","configurationName","closeResetModalAndRefresh","resetOpen","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","resetLoading","setResetLoading","useEffect","api","configs","resetConfig","then","catch","err","setErrorSnackMessage","errorToHandler","error","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","onClose","confirmationContent","_jsxs","Fragment","children","ProgressBar","style","maxWidth","whiteSpace","wordWrap","FeatureItem","icon","description","Box","sx","display","marginRight","height","width","marginBottom","fontSize","fontStyle","color","_ref2","helpText","docLink","docText","contents","flex","border","borderRadius","flexFlow","padding","fontWeight","alignItems","paddingBottom","HelpIconFilled","map","content","index","iconDescription","text","concat","href","target","rel","useStyles","makeStyles","theme","headerBarIcon","palette","primary","main","headerBarSubheader","stContainer","justifyContent","borderBottom","titleColumn","leftItems","rightItems","marginLeft","subTitle","actions","className","classes","Grid","container","item","xs","margin","EntityResultTitle","name","CollapseCaret","transform","EntityResultItems","blockName","results","res","_ref3","_results$groups","_results$policies","_results$users","_results$groups2","_results$users2","_results$policies2","entityName","entityLength","groups","length","policies","users","marginTop","SectionTitle","separator","GroupsMenuIcon","h4","fill","groupData","group","user","policy","loading","setLoading","_useState3","_useState4","setUsers","_useState5","_useState6","setGroups","_useState7","_useState8","setResults","selectedPolicies","useSelector","state","createUser","paddingTop","sm","md","lg","flexDirection","gap","withBorders","overflowY","minHeight","maxHeight","userDat","InputBox","id","value","onChange","e","usersElements","_toConsumableArray","overlayIcon","AddIcon","RemoveIcon","overlayAction","addItem","alterUsers","filteredUsers","filter","_","indx","alterUsersList","groupDat","groupsElements","alterGroups","filteredGroups","alterGroupsList","PolicySelectors","selectedPolicy","noTitle","textAlign","Loader","timestamp","TimeIcon","DateTime","fromISO","toFormat","backgroundColor","flexGrow","LDAPResultsBlock","Button","type","variant","onClick","data","cleanPolicies","pol","cleanUsers","usr","cleanGroups","grp","ldapEntities","getLdapEntities","result","SearchIcon","enabledConfigLDAP","formFields","ldapFormFields","isEnabled","setIsEnabled","hasConfiguration","setHasConfiguration","fields","setFields","_useState9","_useState10","overrideFields","setOverrideFields","_useState11","undefined","_useState12","record","setRecord","_useState13","_useState14","editMode","setEditMode","_useState15","_useState16","setResetOpen","_useState17","_useState18","curTab","setCurTab","_useState19","_useState20","envOverride","setEnvOverride","toggleEditMode","parseFields","ovrFlds","enabled","find","key","totalCoincidences","totalOverride","forEach","env_override","includes","hasConfig","configInfo","key_values","closeDeleteModalAndRefresh","_asyncToGenerator","_regeneratorRuntime","mark","_callee","refresh","wrap","_context","prev","next","setServerNeedsRestart","stop","_x","apply","arguments","setHelpName","ResetConfigurationModal","PageHeaderWrapper","label","HelpMenu","PageLayout","Tabs","horizontal","options","tabConfig","ScreenTitle","Tooltip","tooltip","EditIcon","disabled","payload","setConfig","restart","setSnackBarMessage","toggleConfiguration","RefreshIcon","FormLayout","helpBox","AddIDPConfigurationHelpBox","ldapHelpBoxContents","HelpBox","iconComponent","WarnIcon","help","Object","entries","Switch","indicatorLabels","checked","_objectSpread","_defineProperty","required","hasError","placeholder","renderFormField","_i","_Object$entries","_Object$entries$_i","validSave","keyVals","keys","lookup_bind_password","gridTemplateColumns","gridAutoFlow","ValuePair","_ref5","_ref6","editOnly","val","placement","ConsoleIcon","LDAPEntitiesQuery","currentTabOrPath","onTabClick","newTab","LoginIcon","openIDHelpBoxContents","LockIcon","openIDFormFields","config_url","s","client_id","client_secret","claim_name","display_name","claim_prefix","scopes","redirect_uri","role_policy","claim_userinfo","redirect_uri_dynamic","server_insecure","server_addr","lookup_bind_dn","user_dn_search_base_dn","user_dn_search_filter","group_search_base_dn","group_search_filter","_ref$noTitle","records","setRecords","setFilter","currentPolicies","fetchPolicies","useCallback","listPolicies","_res$data$policies","sort","policySort","setModalErrorSnackMessage","filteredRecords","elementItem","SearchBox","DataTable","columns","elementKey","onSelect","targetD","elements","push","element","setSelectedPolicies","selectedItems","idField","customPaperHeight","usersSort","a","b","accessKey","stringSort","policyDetailsSort","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","defineProperty","enumerable","get","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","props","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","muiNames","_muiName","_element$type","React","indexOf","muiName","_payload","_len","funcs","Array","_key","reduce","acc","func","_len2","args","_key2","this","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/1829.c32b26cd.chunk.js b/portal-ui/build/static/js/1829.9db2921b.chunk.js similarity index 53% rename from portal-ui/build/static/js/1829.c32b26cd.chunk.js rename to portal-ui/build/static/js/1829.9db2921b.chunk.js index e25821ab31..a523bf80ec 100644 --- a/portal-ui/build/static/js/1829.c32b26cd.chunk.js +++ b/portal-ui/build/static/js/1829.9db2921b.chunk.js @@ -1,2 +1,2 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1829],{47986:function(e,t,n){"use strict";var a=n(4942),o=(n(72791),n(29945)),r=n(80184);t.Z=function(e){var t=e.iconComponent,n=e.entity;return(0,r.jsx)(o.rjZ,{container:!0,children:(0,r.jsx)(o.rjZ,{item:!0,xs:12,children:(0,r.jsx)(o.KfX,{title:"".concat(n," not available"),iconComponent:t,help:(0,r.jsxs)(o.xuv,{sx:(0,a.Z)({fontSize:"14px"},"@media (max-width: ".concat(o.Egj.sm,"px)"),{display:"flex",flexFlow:"column"}),children:[(0,r.jsx)("span",{children:"This feature is not available for a single-disk setup.\xa0"}),(0,r.jsxs)("span",{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:"noopener",children:"Distributed Mode"})," ","to use this feature."]})]})})})})}},61829:function(e,t,n){"use strict";n.r(t);var a=n(29439),o=n(72791),r=n(78687),s=n(95087),i=n(29945),c=n(20601),l=n(38725),u=n(82839),f=n(90466),d=n(12891),h=n(35667),x=n(83672),b=n(57702),p=n(31776),j=n(82342),m=n(26824),v=n(45248),g=n(23814),w=n(56087),y=n(87995),S=n(38442),k=n(81551),C=n(47986),Z=n(47974),H=n(99670),B=n(80184);t.default=function(){var e=(0,r.v9)(y.N5),t=(0,o.useState)(!1),n=(0,a.Z)(t,2),D=n[0],E=n[1],T=(0,o.useState)(""),_=(0,a.Z)(T,2),A=_[0],G=_[1],N=(0,o.useState)([]),O=(0,a.Z)(N,2),z=O[0],R=O[1],I=(0,o.useState)(""),L=(0,a.Z)(I,2),F=L[0],K=L[1],P=(0,o.useState)(!1),M=(0,a.Z)(P,2),X=M[0],J=M[1],U=(0,o.useState)(!1),W=(0,a.Z)(U,2),Y=W[0],$=W[1],q=(0,o.useState)(!1),V=(0,a.Z)(q,2),Q=V[0],ee=V[1],te=(0,o.useState)({beforeHeal:[0,0,0,0],afterHeal:[0,0,0,0],objectsHealed:0,objectsScanned:0,healDuration:0,sizeScanned:""}),ne=(0,a.Z)(te,2),ae=ne[0],oe=ne[1];(0,o.useEffect)((function(){p.h.buckets.listBuckets().then((function(e){var t=[];e.data.buckets&&(t=e.data.buckets),R(t)})).catch((function(e){console.error((0,j.g)(e.error))}))}),[]),(0,o.useEffect)((function(){Y&&ee(!1)}),[Y]),(0,o.useEffect)((function(){Q&&$(!1)}),[Q]);var re=function(e){return[e.Green,e.Yellow,e.Red,e.Grey]};(0,o.useEffect)((function(){if(D){var e={Green:0,Yellow:0,Red:0,Grey:0},t={Green:0,Yellow:0,Red:0,Grey:0},n=new URL(window.location.toString()),o=n.port,r=new URL(document.baseURI).pathname,i=(0,m.x2)(n.protocol),c=new s.w3cwebsocket("".concat(i,"://").concat(n.hostname,":").concat(o).concat(r,"ws/heal/").concat(A,"?prefix=").concat(F,"&recursive=").concat(X,"&force-start=").concat(Y,"&force-stop=").concat(Q));if(null!==c)return c.onopen=function(){console.log("WebSocket Client Connected"),c.send("ok")},c.onmessage=function(n){for(var o=JSON.parse(n.data.toString()),r=0,s=Object.entries(o.healthAfterCols);r.\n\nimport React from \"react\";\nimport { HelpBox, Box, Grid, breakPoints } from \"mds\";\n\ninterface IDistributedOnly {\n iconComponent: any;\n entity: string;\n}\n\nconst DistributedOnly = ({ iconComponent, entity }: IDistributedOnly) => {\n return (\n \n \n \n \n This feature is not available for a single-disk setup. \n \n \n Please deploy a server in{\" \"}\n \n Distributed Mode\n {\" \"}\n to use this feature.\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 .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { IMessageEvent, w3cwebsocket as W3CWebSocket } from \"websocket\";\nimport {\n Box,\n Button,\n Checkbox,\n Grid,\n HealIcon,\n InputBox,\n InputLabel,\n PageLayout,\n Select,\n} from \"mds\";\nimport {\n Bar,\n BarChart,\n CartesianGrid,\n Legend,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\n\nimport { api } from \"api\";\nimport { Bucket } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport { wsProtocol } from \"../../../utils/wsUtils\";\nimport { colorH, HealStatus } from \"./types\";\nimport { niceBytes } from \"../../../common/utils\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_SCOPES,\n} from \"../../../common/SecureComponent/permissions\";\nimport { selDistSet, setHelpName } from \"../../../systemSlice\";\nimport { SecureComponent } from \"../../../common/SecureComponent\";\nimport { useAppDispatch } from \"../../../store\";\nimport DistributedOnly from \"../Common/DistributedOnly/DistributedOnly\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst Heal = () => {\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.buckets\n .listBuckets()\n .then((res) => {\n let buckets: Bucket[] = [];\n if (res.data.buckets) {\n buckets = res.data.buckets;\n }\n setBucketList(buckets);\n })\n .catch((err) => {\n console.error(errorToHandler(err.error));\n });\n };\n\n useEffect(() => {\n fetchBucketList();\n }, []);\n\n // forceStart and forceStop need to be mutually exclusive\n useEffect(() => {\n if (forceStart) {\n setForceStop(false);\n }\n }, [forceStart]);\n\n useEffect(() => {\n if (forceStop) {\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 {\n name: \"Green\",\n ah: hStatus.afterHeal[0],\n bh: hStatus.beforeHeal[0],\n amt: 100,\n },\n {\n name: \"Yellow\",\n ah: hStatus.afterHeal[1],\n bh: hStatus.beforeHeal[1],\n amt: 100,\n },\n {\n name: \"Red\",\n ah: hStatus.afterHeal[2],\n bh: hStatus.beforeHeal[2],\n amt: 100,\n },\n {\n name: \"Grey\",\n ah: hStatus.afterHeal[3],\n bh: hStatus.beforeHeal[3],\n amt: 100,\n },\n ];\n const bucketNames = bucketList.map((bucketName) => ({\n label: bucketName.name,\n value: bucketName.name,\n }));\n const dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(setHelpName(\"heal\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n } />\n\n \n {!distributedSetup ? (\n } />\n ) : (\n \n \n \n \n Bucket\n {\n setBucketName(value as string);\n }}\n options={bucketNames}\n placeholder={\"Select Bucket\"}\n />\n \n \n Prefix\n {\n setPrefix(e.target.value);\n }}\n />\n \n \n \n \n {\n setRecursive(!recursive);\n }}\n disabled={false}\n label=\"Recursive\"\n />\n \n \n {\n setForceStart(!forceStart);\n }}\n disabled={false}\n label=\"Force Start\"\n />\n \n \n {\n setForceStop(!forceStop);\n }}\n disabled={false}\n label=\"Force Stop\"\n />\n \n \n \n setStart(true)}\n label={\"Start\"}\n />\n \n \n \n \n \n \n \n \n \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","var naiveFallback = function () {\n\tif (typeof self === \"object\" && self) return self;\n\tif (typeof window === \"object\" && window) return window;\n\tthrow new Error(\"Unable to resolve global `this`\");\n};\n\nmodule.exports = (function () {\n\tif (this) return this;\n\n\t// Unexpected strict mode (may happen if e.g. bundled into ESM module)\n\n\t// Fallback to standard globalThis if available\n\tif (typeof globalThis === \"object\" && globalThis) return globalThis;\n\n\t// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis\n\t// In all ES5+ engines global object inherits from Object.prototype\n\t// (if you approached one that doesn't please report)\n\ttry {\n\t\tObject.defineProperty(Object.prototype, \"__global__\", {\n\t\t\tget: function () { return this; },\n\t\t\tconfigurable: true\n\t\t});\n\t} catch (error) {\n\t\t// Unfortunate case of updates to Object.prototype being restricted\n\t\t// via preventExtensions, seal or freeze\n\t\treturn naiveFallback();\n\t}\n\ttry {\n\t\t// Safari case (window.__global__ works, but __global__ does not)\n\t\tif (!__global__) return naiveFallback();\n\t\treturn __global__;\n\t} finally {\n\t\tdelete Object.prototype.__global__;\n\t}\n})();\n","/**\n * @fileOverview Bar Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Bar } from '../cartesian/Bar';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\nexport var BarChart = generateCategoricalChart({\n chartName: 'BarChart',\n GraphicalChild: Bar,\n defaultTooltipEventType: 'axis',\n validateTooltipEventTypes: ['axis', 'item'],\n axisComponents: [{\n axisType: 'xAxis',\n AxisComp: XAxis\n }, {\n axisType: 'yAxis',\n AxisComp: YAxis\n }],\n formatAxisMap: formatAxisMap\n});","var _globalThis;\nif (typeof globalThis === 'object') {\n\t_globalThis = globalThis;\n} else {\n\ttry {\n\t\t_globalThis = require('es5-ext/global');\n\t} catch (error) {\n\t} finally {\n\t\tif (!_globalThis && typeof window !== 'undefined') { _globalThis = window; }\n\t\tif (!_globalThis) { throw new Error('Could not determine global this'); }\n\t}\n}\n\nvar NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;\nvar websocket_version = require('./version');\n\n\n/**\n * Expose a W3C WebSocket class with just one or two arguments.\n */\nfunction W3CWebSocket(uri, protocols) {\n\tvar native_instance;\n\n\tif (protocols) {\n\t\tnative_instance = new NativeWebSocket(uri, protocols);\n\t}\n\telse {\n\t\tnative_instance = new NativeWebSocket(uri);\n\t}\n\n\t/**\n\t * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket\n\t * class). Since it is an Object it will be returned as it is when creating an\n\t * instance of W3CWebSocket via 'new W3CWebSocket()'.\n\t *\n\t * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2\n\t */\n\treturn native_instance;\n}\nif (NativeWebSocket) {\n\t['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) {\n\t\tObject.defineProperty(W3CWebSocket, prop, {\n\t\t\tget: function() { return NativeWebSocket[prop]; }\n\t\t});\n\t});\n}\n\n/**\n * Module exports.\n */\nmodule.exports = {\n 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null,\n 'version' : websocket_version\n};\n","module.exports = require('../package.json').version;\n"],"names":["_ref","iconComponent","entity","_jsx","Grid","container","children","item","xs","HelpBox","title","concat","help","_jsxs","Box","sx","_defineProperty","fontSize","breakPoints","sm","display","flexFlow","href","target","rel","distributedSetup","useSelector","selDistSet","_useState","useState","_useState2","_slicedToArray","start","setStart","_useState3","_useState4","bucketName","setBucketName","_useState5","_useState6","bucketList","setBucketList","_useState7","_useState8","prefix","setPrefix","_useState9","_useState10","recursive","setRecursive","_useState11","_useState12","forceStart","setForceStart","_useState13","_useState14","forceStop","setForceStop","_useState15","beforeHeal","afterHeal","objectsHealed","objectsScanned","healDuration","sizeScanned","_useState16","hStatus","setHStatus","useEffect","api","buckets","listBuckets","then","res","data","catch","err","console","error","errorToHandler","colorHealthArr","color","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","_i","_Object$entries","Object","entries","healthAfterCols","length","_Object$entries$_i","key","value","itemsScanned","_i2","_Object$entries2","healthBeforeCols","_Object$entries2$_i","niceBytes","bytesScanned","onclose","close","name","ah","bh","amt","bucketNames","map","label","dispatch","useAppDispatch","setHelpName","Fragment","PageHeaderWrapper","actions","HelpMenu","PageLayout","SecureComponent","scopes","IAM_SCOPES","ADMIN_HEAL","resource","CONSOLE_UI_RESOURCE","withBorders","alignItems","marginBottom","gap","flexGrow","width","InputLabel","Select","id","onChange","options","placeholder","InputBox","disabled","e","Checkbox","checked","modalStyleUtils","modalButtonBar","Button","type","variant","onClick","marginTop","listStyle","content","ResponsiveContainer","height","BarChart","margin","top","right","left","bottom","CartesianGrid","strokeDasharray","XAxis","dataKey","YAxis","Tooltip","Legend","verticalAlign","layout","className","Bar","fill","stroke","flexDirection","justifyContent","DistributedOnly","HealIcon","naiveFallback","self","Error","module","exports","this","globalThis","defineProperty","prototype","get","configurable","__global__","generateCategoricalChart","chartName","GraphicalChild","defaultTooltipEventType","validateTooltipEventTypes","axisComponents","axisType","AxisComp","formatAxisMap","_globalThis","require","NativeWebSocket","WebSocket","MozWebSocket","websocket_version","uri","protocols","forEach","prop"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/1829.c32b26cd.chunk.js.map b/portal-ui/build/static/js/1829.c32b26cd.chunk.js.map deleted file mode 100644 index b9e695eb14..0000000000 --- a/portal-ui/build/static/js/1829.c32b26cd.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/1829.c32b26cd.chunk.js","mappings":"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","sources":["screens/Console/Common/DistributedOnly/DistributedOnly.tsx","screens/Console/Heal/Heal.tsx","utils/wsUtils.ts","../node_modules/es5-ext/global.js","../node_modules/recharts/es6/chart/BarChart.js","../node_modules/websocket/lib/browser.js","../node_modules/websocket/lib/version.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 { HelpBox, Box, Grid, breakPoints } from \"mds\";\n\ninterface IDistributedOnly {\n iconComponent: any;\n entity: string;\n}\n\nconst DistributedOnly = ({ iconComponent, entity }: IDistributedOnly) => {\n return (\n \n \n \n \n This feature is not available for a single-disk setup. \n \n \n Please deploy a server in{\" \"}\n \n Distributed Mode\n {\" \"}\n to use this feature.\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 .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { IMessageEvent, w3cwebsocket as W3CWebSocket } from \"websocket\";\nimport {\n Box,\n Button,\n Checkbox,\n Grid,\n HealIcon,\n InputBox,\n InputLabel,\n PageLayout,\n Select,\n} from \"mds\";\nimport {\n Bar,\n BarChart,\n CartesianGrid,\n Legend,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\n\nimport { api } from \"api\";\nimport { Bucket } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport { wsProtocol } from \"../../../utils/wsUtils\";\nimport { colorH, HealStatus } from \"./types\";\nimport { niceBytes } from \"../../../common/utils\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_SCOPES,\n} from \"../../../common/SecureComponent/permissions\";\nimport { selDistSet, setHelpName } from \"../../../systemSlice\";\nimport { SecureComponent } from \"../../../common/SecureComponent\";\nimport { useAppDispatch } from \"../../../store\";\nimport DistributedOnly from \"../Common/DistributedOnly/DistributedOnly\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst Heal = () => {\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.buckets\n .listBuckets()\n .then((res) => {\n let buckets: Bucket[] = [];\n if (res.data.buckets) {\n buckets = res.data.buckets;\n }\n setBucketList(buckets);\n })\n .catch((err) => {\n console.error(errorToHandler(err.error));\n });\n };\n\n useEffect(() => {\n fetchBucketList();\n }, []);\n\n // forceStart and forceStop need to be mutually exclusive\n useEffect(() => {\n if (forceStart) {\n setForceStop(false);\n }\n }, [forceStart]);\n\n useEffect(() => {\n if (forceStop) {\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 {\n name: \"Green\",\n ah: hStatus.afterHeal[0],\n bh: hStatus.beforeHeal[0],\n amt: 100,\n },\n {\n name: \"Yellow\",\n ah: hStatus.afterHeal[1],\n bh: hStatus.beforeHeal[1],\n amt: 100,\n },\n {\n name: \"Red\",\n ah: hStatus.afterHeal[2],\n bh: hStatus.beforeHeal[2],\n amt: 100,\n },\n {\n name: \"Grey\",\n ah: hStatus.afterHeal[3],\n bh: hStatus.beforeHeal[3],\n amt: 100,\n },\n ];\n const bucketNames = bucketList.map((bucketName) => ({\n label: bucketName.name,\n value: bucketName.name,\n }));\n const dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(setHelpName(\"heal\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n } />\n\n \n {!distributedSetup ? (\n } />\n ) : (\n \n \n \n \n Bucket\n {\n setBucketName(value as string);\n }}\n options={bucketNames}\n placeholder={\"Select Bucket\"}\n />\n \n \n Prefix\n {\n setPrefix(e.target.value);\n }}\n />\n \n \n \n \n {\n setRecursive(!recursive);\n }}\n disabled={false}\n label=\"Recursive\"\n />\n \n \n {\n setForceStart(!forceStart);\n }}\n disabled={false}\n label=\"Force Start\"\n />\n \n \n {\n setForceStop(!forceStop);\n }}\n disabled={false}\n label=\"Force Stop\"\n />\n \n \n \n setStart(true)}\n label={\"Start\"}\n />\n \n \n \n \n \n \n \n \n \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 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","var naiveFallback = function () {\n\tif (typeof self === \"object\" && self) return self;\n\tif (typeof window === \"object\" && window) return window;\n\tthrow new Error(\"Unable to resolve global `this`\");\n};\n\nmodule.exports = (function () {\n\tif (this) return this;\n\n\t// Unexpected strict mode (may happen if e.g. bundled into ESM module)\n\n\t// Fallback to standard globalThis if available\n\tif (typeof globalThis === \"object\" && globalThis) return globalThis;\n\n\t// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis\n\t// In all ES5+ engines global object inherits from Object.prototype\n\t// (if you approached one that doesn't please report)\n\ttry {\n\t\tObject.defineProperty(Object.prototype, \"__global__\", {\n\t\t\tget: function () { return this; },\n\t\t\tconfigurable: true\n\t\t});\n\t} catch (error) {\n\t\t// Unfortunate case of updates to Object.prototype being restricted\n\t\t// via preventExtensions, seal or freeze\n\t\treturn naiveFallback();\n\t}\n\ttry {\n\t\t// Safari case (window.__global__ works, but __global__ does not)\n\t\tif (!__global__) return naiveFallback();\n\t\treturn __global__;\n\t} finally {\n\t\tdelete Object.prototype.__global__;\n\t}\n})();\n","/**\n * @fileOverview Bar Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Bar } from '../cartesian/Bar';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\nexport var BarChart = generateCategoricalChart({\n chartName: 'BarChart',\n GraphicalChild: Bar,\n defaultTooltipEventType: 'axis',\n validateTooltipEventTypes: ['axis', 'item'],\n axisComponents: [{\n axisType: 'xAxis',\n AxisComp: XAxis\n }, {\n axisType: 'yAxis',\n AxisComp: YAxis\n }],\n formatAxisMap: formatAxisMap\n});","var _globalThis;\nif (typeof globalThis === 'object') {\n\t_globalThis = globalThis;\n} else {\n\ttry {\n\t\t_globalThis = require('es5-ext/global');\n\t} catch (error) {\n\t} finally {\n\t\tif (!_globalThis && typeof window !== 'undefined') { _globalThis = window; }\n\t\tif (!_globalThis) { throw new Error('Could not determine global this'); }\n\t}\n}\n\nvar NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;\nvar websocket_version = require('./version');\n\n\n/**\n * Expose a W3C WebSocket class with just one or two arguments.\n */\nfunction W3CWebSocket(uri, protocols) {\n\tvar native_instance;\n\n\tif (protocols) {\n\t\tnative_instance = new NativeWebSocket(uri, protocols);\n\t}\n\telse {\n\t\tnative_instance = new NativeWebSocket(uri);\n\t}\n\n\t/**\n\t * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket\n\t * class). Since it is an Object it will be returned as it is when creating an\n\t * instance of W3CWebSocket via 'new W3CWebSocket()'.\n\t *\n\t * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2\n\t */\n\treturn native_instance;\n}\nif (NativeWebSocket) {\n\t['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) {\n\t\tObject.defineProperty(W3CWebSocket, prop, {\n\t\t\tget: function() { return NativeWebSocket[prop]; }\n\t\t});\n\t});\n}\n\n/**\n * Module exports.\n */\nmodule.exports = {\n 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null,\n 'version' : websocket_version\n};\n","module.exports = require('../package.json').version;\n"],"names":["_ref","iconComponent","entity","_jsx","Grid","container","children","item","xs","HelpBox","title","concat","help","_jsxs","Box","sx","_defineProperty","fontSize","breakPoints","sm","display","flexFlow","href","target","rel","distributedSetup","useSelector","selDistSet","_useState","useState","_useState2","_slicedToArray","start","setStart","_useState3","_useState4","bucketName","setBucketName","_useState5","_useState6","bucketList","setBucketList","_useState7","_useState8","prefix","setPrefix","_useState9","_useState10","recursive","setRecursive","_useState11","_useState12","forceStart","setForceStart","_useState13","_useState14","forceStop","setForceStop","_useState15","beforeHeal","afterHeal","objectsHealed","objectsScanned","healDuration","sizeScanned","_useState16","hStatus","setHStatus","useEffect","api","buckets","listBuckets","then","res","data","catch","err","console","error","errorToHandler","colorHealthArr","color","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","_i","_Object$entries","Object","entries","healthAfterCols","length","_Object$entries$_i","key","value","itemsScanned","_i2","_Object$entries2","healthBeforeCols","_Object$entries2$_i","niceBytes","bytesScanned","onclose","close","name","ah","bh","amt","bucketNames","map","label","dispatch","useAppDispatch","setHelpName","Fragment","PageHeaderWrapper","actions","HelpMenu","PageLayout","SecureComponent","scopes","IAM_SCOPES","ADMIN_HEAL","resource","CONSOLE_UI_RESOURCE","withBorders","alignItems","marginBottom","gap","flexGrow","width","InputLabel","Select","id","onChange","options","placeholder","InputBox","disabled","e","Checkbox","checked","modalStyleUtils","modalButtonBar","Button","type","variant","onClick","marginTop","listStyle","content","ResponsiveContainer","height","BarChart","margin","top","right","left","bottom","CartesianGrid","strokeDasharray","XAxis","dataKey","YAxis","Tooltip","Legend","verticalAlign","layout","className","Bar","fill","stroke","flexDirection","justifyContent","DistributedOnly","HealIcon","WSCloseAbnormalClosure","WSClosePolicyViolation","WSCloseInternalServerErr","naiveFallback","self","Error","module","exports","this","globalThis","defineProperty","prototype","get","configurable","__global__","generateCategoricalChart","chartName","GraphicalChild","defaultTooltipEventType","validateTooltipEventTypes","axisComponents","axisType","AxisComp","formatAxisMap","_globalThis","require","NativeWebSocket","WebSocket","MozWebSocket","websocket_version","uri","protocols","forEach","prop"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/191.ab2de930.chunk.js b/portal-ui/build/static/js/191.7f06526e.chunk.js similarity index 98% rename from portal-ui/build/static/js/191.ab2de930.chunk.js rename to portal-ui/build/static/js/191.7f06526e.chunk.js index b657f7629e..cd81607e21 100644 --- a/portal-ui/build/static/js/191.ab2de930.chunk.js +++ b/portal-ui/build/static/js/191.7f06526e.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[191],{75578:function(e,n,t){var s=t(1413),r=t(72791),o=t(80184);n.Z=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(t){return(0,o.jsx)(r.Suspense,{fallback:n,children:(0,o.jsx)(e,(0,s.Z)({},t))})}}},60191:function(e,n,t){t.r(n);var s=t(93433),r=t(29439),o=t(72791),i=t(57689),c=t(29945),l=t(31776),a=t(21639),u=t(23814),d=t(56087),p=t(38442),h=t(82342),f=t(75578),x=t(45248),j=t(87995),m=t(81551),g=t(27454),y=t(47974),v=t(99670),C=t(81806),b=t(59114),Z=t(80184),G=(0,f.Z)(o.lazy((function(){return t.e(8896).then(t.bind(t,88896))}))),k=(0,f.Z)(o.lazy((function(){return t.e(9134).then(t.bind(t,39134))})));n.default=function(){var e=(0,m.TL)(),n=(0,i.s0)(),t=(0,o.useState)(!1),f=(0,r.Z)(t,2),A=f[0],S=f[1],F=(0,o.useState)(!1),P=(0,r.Z)(F,2),w=P[0],K=P[1],M=(0,o.useState)([]),D=(0,r.Z)(M,2),O=D[0],_=D[1],I=(0,o.useState)(""),R=(0,r.Z)(I,2),z=R[0],E=R[1],L=(0,o.useState)(!1),T=(0,r.Z)(L,2),X=T[0],N=T[1],U=(0,o.useState)([]),B=(0,r.Z)(U,2),Q=B[0],V=B[1];(0,o.useEffect)((function(){K(!0)}),[]),(0,o.useEffect)((function(){K(!0)}),[]),(0,o.useEffect)((function(){e((0,j.Sc)("groups"))}),[]);var J=(0,p.F)(d.C3,d.vh),W=(0,p.F)(d.C3,d.oX),Y=(0,p.F)(d.C3,d.k_),q=(0,p.F)(d.C3,d.fC,!0);(0,o.useEffect)((function(){if(w)if(J){l.h.groups.listGroups().then((function(e){var n=[];e.data.groups&&(n=e.data.groups.sort(a.V2)),_(n),K(!1)})).catch((function(n){e((0,j.Ih)((0,h.g)(n.error))),K(!1)}))}else K(!1)}),[w,e,J]);var H=O.filter((function(e){return e.includes(z)})),$=function(e){n("".concat(d.gA.GROUPS,"/").concat((0,x.LL)(e)))},ee=[{type:"view",onClick:$,disableButtonFunction:function(){return!Y}},{type:"edit",onClick:$,disableButtonFunction:function(){return!Y}}];return(0,Z.jsxs)(o.Fragment,{children:[A&&(0,Z.jsx)(G,{deleteOpen:A,selectedGroups:Q,closeDeleteModalAndRefresh:function(e){S(!1),V([]),e&&K(!0)}}),X&&(0,Z.jsx)(k,{open:X,selectedGroups:Q,selectedUser:null,closeModalAndRefresh:function(){N(!1)}}),(0,Z.jsx)(y.Z,{label:"Groups",actions:(0,Z.jsx)(v.Z,{})}),(0,Z.jsx)(c.Xgh,{children:(0,Z.jsxs)(c.rjZ,{container:!0,children:[(0,Z.jsxs)(c.rjZ,{item:!0,xs:12,sx:u.OR.actionsTray,children:[(0,Z.jsx)(p.s,{resource:d.C3,scopes:d.vh,errorProps:{disabled:!0},children:(0,Z.jsx)(b.Z,{placeholder:"Search Groups",onChange:E,value:z,sx:{maxWidth:380}})}),(0,Z.jsxs)(c.xuv,{sx:{display:"flex"},children:[(0,Z.jsx)(p.s,{resource:d.C3,scopes:d.fC,matchAll:!0,errorProps:{disabled:!0},children:(0,Z.jsx)(g.Z,{tooltip:Q.length<1?"Please select Groups on which you want to apply Policies":q?"Select Policy":(0,d.MK)(d.fC,"apply policies to Groups"),children:(0,Z.jsx)(c.zxk,{id:"assign-policy",onClick:function(){N(!0)},label:"Assign Policy",icon:(0,Z.jsx)(c.v42,{}),disabled:Q.length<1||!q,variant:"regular"})})}),(0,Z.jsx)(p.s,{resource:d.C3,scopes:d.oX,matchAll:!0,errorProps:{disabled:!0},children:(0,Z.jsx)(g.Z,{tooltip:0===Q.length?"Select Groups to delete":Y?"Delete Selected":(0,d.MK)(d.k_,"delete Groups"),children:(0,Z.jsx)(c.zxk,{id:"delete-selected-groups",onClick:function(){S(!0)},label:"Delete Selected",icon:(0,Z.jsx)(c.pJl,{}),variant:"secondary",disabled:0===Q.length||!Y})})}),(0,Z.jsx)(p.s,{resource:d.C3,scopes:d.vN,matchAll:!0,errorProps:{disabled:!0},children:(0,Z.jsx)(g.Z,{tooltip:"Create Group",children:(0,Z.jsx)(c.zxk,{id:"create-group",label:"Create Group",variant:"callAction",icon:(0,Z.jsx)(c.dtP,{}),onClick:function(){n("".concat(d.gA.GROUPS_ADD))}})})})]})]}),w&&(0,Z.jsx)(c.kod,{}),!w&&(0,Z.jsxs)(o.Fragment,{children:[O.length>0&&(0,Z.jsxs)(o.Fragment,{children:[(0,Z.jsx)(c.rjZ,{item:!0,xs:12,sx:{marginBottom:15},children:(0,Z.jsx)(p.s,{resource:d.C3,scopes:d.vh,errorProps:{disabled:!0},children:(0,Z.jsx)(c.wQF,{itemActions:ee,columns:[{label:"Name"}],isLoading:w,selectedItems:Q,onSelect:W||Y?function(e){var n=e.target,t=void 0===n?{}:n,r=t.value,o=void 0===r?"":r,i=t.checked,c=void 0!==i&&i,l=(0,s.Z)(Q);return c?l.push(o):l=l.filter((function(e){return e!==o})),V(l),l}:void 0,records:H,entityName:"Groups",idField:""})})}),(0,Z.jsx)(c.rjZ,{item:!0,xs:12,children:(0,Z.jsx)(c.KfX,{title:"Groups",iconComponent:(0,Z.jsx)(c.wws,{}),help:(0,Z.jsxs)(o.Fragment,{children:["A group can have one attached IAM policy, where all users with membership in that group inherit that policy. Groups support more simplified management of user permissions on the MinIO Tenant.",(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/identity-access-management/minio-group-management.html?ref=con",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})})]}),0===O.length&&(0,Z.jsx)(c.rjZ,{container:!0,children:(0,Z.jsx)(c.rjZ,{item:!0,xs:8,children:(0,Z.jsx)(c.KfX,{title:"Groups",iconComponent:(0,Z.jsx)(c.oyc,{}),help:(0,Z.jsxs)(o.Fragment,{children:["A group can have one attached IAM policy, where all users with membership in that group inherit that policy. Groups support more simplified management of user permissions on the MinIO Tenant.",(0,Z.jsxs)(p.s,{resource:d.C3,scopes:d.vN,matchAll:!0,children:[(0,Z.jsx)("br",{}),(0,Z.jsx)("br",{}),"To get started,"," ",(0,Z.jsx)(C.Z,{onClick:function(){n("".concat(d.gA.GROUPS_ADD))},children:"Create a Group"}),"."]})]})})})})]})]})})]})}},21639:function(e,n,t){t.d(n,{KE:function(){return i},LQ:function(){return s},V2:function(){return o},g4:function(){return r}});var s=function(e,n){if(e.accessKey&&n.accessKey){if(e.accessKey>n.accessKey)return 1;if(e.accessKeyn.name?1:e.namen?1:en.policy?1:e.policy1&&void 0!==arguments[1]?arguments[1]:null;return function(t){return(0,o.jsx)(r.Suspense,{fallback:n,children:(0,o.jsx)(e,(0,s.Z)({},t))})}}},60191:function(e,n,t){t.r(n);var s=t(93433),r=t(29439),o=t(72791),i=t(57689),c=t(29945),l=t(31776),a=t(21639),u=t(23814),d=t(56087),p=t(38442),h=t(82342),f=t(75578),x=t(45248),j=t(87995),m=t(44690),g=t(27454),y=t(47974),v=t(99670),C=t(81806),b=t(59114),Z=t(80184),G=(0,f.Z)(o.lazy((function(){return t.e(8896).then(t.bind(t,88896))}))),k=(0,f.Z)(o.lazy((function(){return t.e(9134).then(t.bind(t,39134))})));n.default=function(){var e=(0,m.TL)(),n=(0,i.s0)(),t=(0,o.useState)(!1),f=(0,r.Z)(t,2),A=f[0],S=f[1],F=(0,o.useState)(!1),P=(0,r.Z)(F,2),w=P[0],K=P[1],M=(0,o.useState)([]),D=(0,r.Z)(M,2),O=D[0],_=D[1],I=(0,o.useState)(""),R=(0,r.Z)(I,2),z=R[0],E=R[1],L=(0,o.useState)(!1),T=(0,r.Z)(L,2),X=T[0],N=T[1],U=(0,o.useState)([]),B=(0,r.Z)(U,2),Q=B[0],V=B[1];(0,o.useEffect)((function(){K(!0)}),[]),(0,o.useEffect)((function(){K(!0)}),[]),(0,o.useEffect)((function(){e((0,j.Sc)("groups"))}),[]);var J=(0,p.F)(d.C3,d.vh),W=(0,p.F)(d.C3,d.oX),Y=(0,p.F)(d.C3,d.k_),q=(0,p.F)(d.C3,d.fC,!0);(0,o.useEffect)((function(){if(w)if(J){l.h.groups.listGroups().then((function(e){var n=[];e.data.groups&&(n=e.data.groups.sort(a.V2)),_(n),K(!1)})).catch((function(n){e((0,j.Ih)((0,h.g)(n.error))),K(!1)}))}else K(!1)}),[w,e,J]);var H=O.filter((function(e){return e.includes(z)})),$=function(e){n("".concat(d.gA.GROUPS,"/").concat((0,x.LL)(e)))},ee=[{type:"view",onClick:$,disableButtonFunction:function(){return!Y}},{type:"edit",onClick:$,disableButtonFunction:function(){return!Y}}];return(0,Z.jsxs)(o.Fragment,{children:[A&&(0,Z.jsx)(G,{deleteOpen:A,selectedGroups:Q,closeDeleteModalAndRefresh:function(e){S(!1),V([]),e&&K(!0)}}),X&&(0,Z.jsx)(k,{open:X,selectedGroups:Q,selectedUser:null,closeModalAndRefresh:function(){N(!1)}}),(0,Z.jsx)(y.Z,{label:"Groups",actions:(0,Z.jsx)(v.Z,{})}),(0,Z.jsx)(c.Xgh,{children:(0,Z.jsxs)(c.rjZ,{container:!0,children:[(0,Z.jsxs)(c.rjZ,{item:!0,xs:12,sx:u.OR.actionsTray,children:[(0,Z.jsx)(p.s,{resource:d.C3,scopes:d.vh,errorProps:{disabled:!0},children:(0,Z.jsx)(b.Z,{placeholder:"Search Groups",onChange:E,value:z,sx:{maxWidth:380}})}),(0,Z.jsxs)(c.xuv,{sx:{display:"flex"},children:[(0,Z.jsx)(p.s,{resource:d.C3,scopes:d.fC,matchAll:!0,errorProps:{disabled:!0},children:(0,Z.jsx)(g.Z,{tooltip:Q.length<1?"Please select Groups on which you want to apply Policies":q?"Select Policy":(0,d.MK)(d.fC,"apply policies to Groups"),children:(0,Z.jsx)(c.zxk,{id:"assign-policy",onClick:function(){N(!0)},label:"Assign Policy",icon:(0,Z.jsx)(c.v42,{}),disabled:Q.length<1||!q,variant:"regular"})})}),(0,Z.jsx)(p.s,{resource:d.C3,scopes:d.oX,matchAll:!0,errorProps:{disabled:!0},children:(0,Z.jsx)(g.Z,{tooltip:0===Q.length?"Select Groups to delete":Y?"Delete Selected":(0,d.MK)(d.k_,"delete Groups"),children:(0,Z.jsx)(c.zxk,{id:"delete-selected-groups",onClick:function(){S(!0)},label:"Delete Selected",icon:(0,Z.jsx)(c.pJl,{}),variant:"secondary",disabled:0===Q.length||!Y})})}),(0,Z.jsx)(p.s,{resource:d.C3,scopes:d.vN,matchAll:!0,errorProps:{disabled:!0},children:(0,Z.jsx)(g.Z,{tooltip:"Create Group",children:(0,Z.jsx)(c.zxk,{id:"create-group",label:"Create Group",variant:"callAction",icon:(0,Z.jsx)(c.dtP,{}),onClick:function(){n("".concat(d.gA.GROUPS_ADD))}})})})]})]}),w&&(0,Z.jsx)(c.kod,{}),!w&&(0,Z.jsxs)(o.Fragment,{children:[O.length>0&&(0,Z.jsxs)(o.Fragment,{children:[(0,Z.jsx)(c.rjZ,{item:!0,xs:12,sx:{marginBottom:15},children:(0,Z.jsx)(p.s,{resource:d.C3,scopes:d.vh,errorProps:{disabled:!0},children:(0,Z.jsx)(c.wQF,{itemActions:ee,columns:[{label:"Name"}],isLoading:w,selectedItems:Q,onSelect:W||Y?function(e){var n=e.target,t=void 0===n?{}:n,r=t.value,o=void 0===r?"":r,i=t.checked,c=void 0!==i&&i,l=(0,s.Z)(Q);return c?l.push(o):l=l.filter((function(e){return e!==o})),V(l),l}:void 0,records:H,entityName:"Groups",idField:""})})}),(0,Z.jsx)(c.rjZ,{item:!0,xs:12,children:(0,Z.jsx)(c.KfX,{title:"Groups",iconComponent:(0,Z.jsx)(c.wws,{}),help:(0,Z.jsxs)(o.Fragment,{children:["A group can have one attached IAM policy, where all users with membership in that group inherit that policy. Groups support more simplified management of user permissions on the MinIO Tenant.",(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/identity-access-management/minio-group-management.html?ref=con",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})})]}),0===O.length&&(0,Z.jsx)(c.rjZ,{container:!0,children:(0,Z.jsx)(c.rjZ,{item:!0,xs:8,children:(0,Z.jsx)(c.KfX,{title:"Groups",iconComponent:(0,Z.jsx)(c.oyc,{}),help:(0,Z.jsxs)(o.Fragment,{children:["A group can have one attached IAM policy, where all users with membership in that group inherit that policy. Groups support more simplified management of user permissions on the MinIO Tenant.",(0,Z.jsxs)(p.s,{resource:d.C3,scopes:d.vN,matchAll:!0,children:[(0,Z.jsx)("br",{}),(0,Z.jsx)("br",{}),"To get started,"," ",(0,Z.jsx)(C.Z,{onClick:function(){n("".concat(d.gA.GROUPS_ADD))},children:"Create a Group"}),"."]})]})})})})]})]})})]})}},21639:function(e,n,t){t.d(n,{KE:function(){return i},LQ:function(){return s},V2:function(){return o},g4:function(){return r}});var s=function(e,n){if(e.accessKey&&n.accessKey){if(e.accessKey>n.accessKey)return 1;if(e.accessKeyn.name?1:e.namen?1:en.policy?1:e.policy.\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

(\n WrappedComponent: ComponentType

,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n AddIcon,\n Button,\n DeleteIcon,\n GroupsIcon,\n HelpBox,\n IAMPoliciesIcon,\n PageLayout,\n UsersIcon,\n DataTable,\n Grid,\n Box,\n ProgressBar,\n} from \"mds\";\n\nimport { api } from \"api\";\nimport { stringSort } from \"../../../utils/sortFunctions\";\nimport { actionsTray } from \"../Common/FormComponents/common/styleLibrary\";\nimport {\n applyPolicyPermissions,\n CONSOLE_UI_RESOURCE,\n createGroupPermissions,\n deleteGroupPermissions,\n displayGroupsPermissions,\n getGroupPermissions,\n IAM_PAGES,\n permissionTooltipHelper,\n} from \"../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../common/SecureComponent\";\nimport { errorToHandler } from \"../../../api/errors\";\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport AButton from \"../Common/AButton/AButton\";\nimport SearchBox from \"../Common/SearchBox\";\n\nconst DeleteGroup = withSuspense(React.lazy(() => import(\"./DeleteGroup\")));\nconst SetPolicy = withSuspense(\n React.lazy(() => import(\"../Policies/SetPolicy\")),\n);\n\nconst Groups = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [loading, isLoading] = useState(false);\n const [records, setRecords] = useState([]);\n const [filter, setFilter] = useState(\"\");\n const [policyOpen, setPolicyOpen] = useState(false);\n const [checkedGroups, setCheckedGroups] = useState([]);\n\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n dispatch(setHelpName(\"groups\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const displayGroups = hasPermission(\n CONSOLE_UI_RESOURCE,\n displayGroupsPermissions,\n );\n\n const deleteGroup = hasPermission(\n CONSOLE_UI_RESOURCE,\n deleteGroupPermissions,\n );\n\n const getGroup = hasPermission(CONSOLE_UI_RESOURCE, getGroupPermissions);\n\n const applyPolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n applyPolicyPermissions,\n true,\n );\n\n const selectionChanged = (e: React.ChangeEvent) => {\n const { target: { value = \"\", checked = false } = {} } = e;\n\n let elements: string[] = [...checkedGroups]; // We clone the checkedUsers array\n\n if (checked) {\n // If the user has checked this field we need to push this to checkedUsersList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n\n setCheckedGroups(elements);\n\n return elements;\n };\n\n useEffect(() => {\n if (loading) {\n if (displayGroups) {\n const fetchRecords = () => {\n api.groups\n .listGroups()\n .then((res) => {\n let resGroups: string[] = [];\n if (res.data.groups) {\n resGroups = res.data.groups.sort(stringSort);\n }\n setRecords(resGroups);\n isLoading(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n isLoading(false);\n });\n };\n fetchRecords();\n } else {\n isLoading(false);\n }\n }\n }, [loading, dispatch, displayGroups]);\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n setCheckedGroups([]);\n if (refresh) {\n isLoading(true);\n }\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.includes(filter),\n );\n\n const viewAction = (group: any) => {\n navigate(`${IAM_PAGES.GROUPS}/${encodeURLString(group)}`);\n };\n\n const tableActions = [\n {\n type: \"view\",\n onClick: viewAction,\n disableButtonFunction: () => !getGroup,\n },\n {\n type: \"edit\",\n onClick: viewAction,\n disableButtonFunction: () => !getGroup,\n },\n ];\n\n return (\n \n {deleteOpen && (\n \n )}\n {policyOpen && (\n {\n setPolicyOpen(false);\n }}\n />\n )}\n } />\n\n \n \n \n \n \n \n \n \n \n {\n setPolicyOpen(true);\n }}\n label={\"Assign Policy\"}\n icon={}\n disabled={checkedGroups.length < 1 || !applyPolicy}\n variant={\"regular\"}\n />\n \n \n \n \n {\n setDeleteOpen(true);\n }}\n label={\"Delete Selected\"}\n icon={}\n variant=\"secondary\"\n disabled={checkedGroups.length === 0 || !getGroup}\n />\n \n \n \n \n }\n onClick={() => {\n navigate(`${IAM_PAGES.GROUPS_ADD}`);\n }}\n />\n \n \n \n \n {loading && }\n {!loading && (\n \n {records.length > 0 && (\n \n \n \n \n \n \n \n }\n help={\n \n A group can have one attached IAM policy, where all\n users with membership in that group inherit that\n policy. Groups support more simplified management of\n user permissions on the MinIO Tenant.\n
\n
\n You can learn more at our{\" \"}\n \n documentation\n \n .\n
\n }\n />\n
\n
\n )}\n {records.length === 0 && (\n \n \n }\n help={\n \n A group can have one attached IAM policy, where all\n users with membership in that group inherit that\n policy. Groups support more simplified management of\n user permissions on the MinIO Tenant.\n \n
\n
\n To get started,{\" \"}\n {\n navigate(`${IAM_PAGES.GROUPS_ADD}`);\n }}\n >\n Create a Group\n \n .\n \n
\n }\n />\n
\n
\n )}\n
\n )}\n
\n
\n
\n );\n};\n\nexport default Groups;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Policy, User } from \"api/consoleApi\";\n\ninterface policyDetailsInterface {\n policy: string;\n}\n\nexport const usersSort = (a: User, b: User) => {\n if (a.accessKey && b.accessKey) {\n if (a.accessKey > b.accessKey) {\n return 1;\n }\n if (a.accessKey < b.accessKey) {\n return -1;\n }\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policySort = (a: Policy, b: Policy) => {\n if (a.name! > b.name!) {\n return 1;\n }\n if (a.name! < b.name!) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const stringSort = (a: string, b: string) => {\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policyDetailsSort = (\n a: policyDetailsInterface,\n b: policyDetailsInterface,\n) => {\n if (a.policy > b.policy) {\n return 1;\n }\n if (a.policy < b.policy) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n"],"names":["WrappedComponent","fallback","arguments","length","undefined","props","_jsx","Suspense","children","_objectSpread","DeleteGroup","withSuspense","React","SetPolicy","dispatch","useAppDispatch","navigate","useNavigate","_useState","useState","_useState2","_slicedToArray","deleteOpen","setDeleteOpen","_useState3","_useState4","loading","isLoading","_useState5","_useState6","records","setRecords","_useState7","_useState8","filter","setFilter","_useState9","_useState10","policyOpen","setPolicyOpen","_useState11","_useState12","checkedGroups","setCheckedGroups","useEffect","setHelpName","displayGroups","hasPermission","CONSOLE_UI_RESOURCE","displayGroupsPermissions","deleteGroup","deleteGroupPermissions","getGroup","getGroupPermissions","applyPolicy","applyPolicyPermissions","api","groups","listGroups","then","res","resGroups","data","sort","stringSort","catch","err","setErrorSnackMessage","errorToHandler","error","filteredRecords","elementItem","includes","viewAction","group","concat","IAM_PAGES","GROUPS","encodeURLString","tableActions","type","onClick","disableButtonFunction","_jsxs","Fragment","selectedGroups","closeDeleteModalAndRefresh","refresh","open","selectedUser","closeModalAndRefresh","PageHeaderWrapper","label","actions","HelpMenu","PageLayout","Grid","container","item","xs","sx","actionsTray","SecureComponent","resource","scopes","errorProps","disabled","SearchBox","placeholder","onChange","value","maxWidth","Box","display","matchAll","TooltipWrapper","tooltip","permissionTooltipHelper","Button","id","icon","IAMPoliciesIcon","variant","DeleteIcon","createGroupPermissions","AddIcon","GROUPS_ADD","ProgressBar","marginBottom","DataTable","itemActions","columns","selectedItems","onSelect","e","_e$target","target","_e$target2","_e$target2$value","_e$target2$checked","checked","elements","_toConsumableArray","push","element","entityName","idField","HelpBox","title","iconComponent","GroupsIcon","help","href","rel","UsersIcon","AButton","usersSort","a","b","accessKey","policySort","name","policyDetailsSort","policy"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/191.7f06526e.chunk.js","mappings":"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","sources":["screens/Console/Common/Components/withSuspense.tsx","screens/Console/Groups/Groups.tsx","utils/sortFunctions.ts"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

(\n WrappedComponent: ComponentType

,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n AddIcon,\n Button,\n DeleteIcon,\n GroupsIcon,\n HelpBox,\n IAMPoliciesIcon,\n PageLayout,\n UsersIcon,\n DataTable,\n Grid,\n Box,\n ProgressBar,\n} from \"mds\";\n\nimport { api } from \"api\";\nimport { stringSort } from \"../../../utils/sortFunctions\";\nimport { actionsTray } from \"../Common/FormComponents/common/styleLibrary\";\nimport {\n applyPolicyPermissions,\n CONSOLE_UI_RESOURCE,\n createGroupPermissions,\n deleteGroupPermissions,\n displayGroupsPermissions,\n getGroupPermissions,\n IAM_PAGES,\n permissionTooltipHelper,\n} from \"../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../common/SecureComponent\";\nimport { errorToHandler } from \"../../../api/errors\";\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport AButton from \"../Common/AButton/AButton\";\nimport SearchBox from \"../Common/SearchBox\";\n\nconst DeleteGroup = withSuspense(React.lazy(() => import(\"./DeleteGroup\")));\nconst SetPolicy = withSuspense(\n React.lazy(() => import(\"../Policies/SetPolicy\")),\n);\n\nconst Groups = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [loading, isLoading] = useState(false);\n const [records, setRecords] = useState([]);\n const [filter, setFilter] = useState(\"\");\n const [policyOpen, setPolicyOpen] = useState(false);\n const [checkedGroups, setCheckedGroups] = useState([]);\n\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n dispatch(setHelpName(\"groups\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const displayGroups = hasPermission(\n CONSOLE_UI_RESOURCE,\n displayGroupsPermissions,\n );\n\n const deleteGroup = hasPermission(\n CONSOLE_UI_RESOURCE,\n deleteGroupPermissions,\n );\n\n const getGroup = hasPermission(CONSOLE_UI_RESOURCE, getGroupPermissions);\n\n const applyPolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n applyPolicyPermissions,\n true,\n );\n\n const selectionChanged = (e: React.ChangeEvent) => {\n const { target: { value = \"\", checked = false } = {} } = e;\n\n let elements: string[] = [...checkedGroups]; // We clone the checkedUsers array\n\n if (checked) {\n // If the user has checked this field we need to push this to checkedUsersList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n\n setCheckedGroups(elements);\n\n return elements;\n };\n\n useEffect(() => {\n if (loading) {\n if (displayGroups) {\n const fetchRecords = () => {\n api.groups\n .listGroups()\n .then((res) => {\n let resGroups: string[] = [];\n if (res.data.groups) {\n resGroups = res.data.groups.sort(stringSort);\n }\n setRecords(resGroups);\n isLoading(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n isLoading(false);\n });\n };\n fetchRecords();\n } else {\n isLoading(false);\n }\n }\n }, [loading, dispatch, displayGroups]);\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n setCheckedGroups([]);\n if (refresh) {\n isLoading(true);\n }\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.includes(filter),\n );\n\n const viewAction = (group: any) => {\n navigate(`${IAM_PAGES.GROUPS}/${encodeURLString(group)}`);\n };\n\n const tableActions = [\n {\n type: \"view\",\n onClick: viewAction,\n disableButtonFunction: () => !getGroup,\n },\n {\n type: \"edit\",\n onClick: viewAction,\n disableButtonFunction: () => !getGroup,\n },\n ];\n\n return (\n \n {deleteOpen && (\n \n )}\n {policyOpen && (\n {\n setPolicyOpen(false);\n }}\n />\n )}\n } />\n\n \n \n \n \n \n \n \n \n \n {\n setPolicyOpen(true);\n }}\n label={\"Assign Policy\"}\n icon={}\n disabled={checkedGroups.length < 1 || !applyPolicy}\n variant={\"regular\"}\n />\n \n \n \n \n {\n setDeleteOpen(true);\n }}\n label={\"Delete Selected\"}\n icon={}\n variant=\"secondary\"\n disabled={checkedGroups.length === 0 || !getGroup}\n />\n \n \n \n \n }\n onClick={() => {\n navigate(`${IAM_PAGES.GROUPS_ADD}`);\n }}\n />\n \n \n \n \n {loading && }\n {!loading && (\n \n {records.length > 0 && (\n \n \n \n \n \n \n \n }\n help={\n \n A group can have one attached IAM policy, where all\n users with membership in that group inherit that\n policy. Groups support more simplified management of\n user permissions on the MinIO Tenant.\n
\n
\n You can learn more at our{\" \"}\n \n documentation\n \n .\n
\n }\n />\n
\n
\n )}\n {records.length === 0 && (\n \n \n }\n help={\n \n A group can have one attached IAM policy, where all\n users with membership in that group inherit that\n policy. Groups support more simplified management of\n user permissions on the MinIO Tenant.\n \n
\n
\n To get started,{\" \"}\n {\n navigate(`${IAM_PAGES.GROUPS_ADD}`);\n }}\n >\n Create a Group\n \n .\n \n
\n }\n />\n
\n
\n )}\n
\n )}\n
\n
\n
\n );\n};\n\nexport default Groups;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Policy, User } from \"api/consoleApi\";\n\ninterface policyDetailsInterface {\n policy: string;\n}\n\nexport const usersSort = (a: User, b: User) => {\n if (a.accessKey && b.accessKey) {\n if (a.accessKey > b.accessKey) {\n return 1;\n }\n if (a.accessKey < b.accessKey) {\n return -1;\n }\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policySort = (a: Policy, b: Policy) => {\n if (a.name! > b.name!) {\n return 1;\n }\n if (a.name! < b.name!) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const stringSort = (a: string, b: string) => {\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policyDetailsSort = (\n a: policyDetailsInterface,\n b: policyDetailsInterface,\n) => {\n if (a.policy > b.policy) {\n return 1;\n }\n if (a.policy < b.policy) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n"],"names":["WrappedComponent","fallback","arguments","length","undefined","props","_jsx","Suspense","children","_objectSpread","DeleteGroup","withSuspense","React","SetPolicy","dispatch","useAppDispatch","navigate","useNavigate","_useState","useState","_useState2","_slicedToArray","deleteOpen","setDeleteOpen","_useState3","_useState4","loading","isLoading","_useState5","_useState6","records","setRecords","_useState7","_useState8","filter","setFilter","_useState9","_useState10","policyOpen","setPolicyOpen","_useState11","_useState12","checkedGroups","setCheckedGroups","useEffect","setHelpName","displayGroups","hasPermission","CONSOLE_UI_RESOURCE","displayGroupsPermissions","deleteGroup","deleteGroupPermissions","getGroup","getGroupPermissions","applyPolicy","applyPolicyPermissions","api","groups","listGroups","then","res","resGroups","data","sort","stringSort","catch","err","setErrorSnackMessage","errorToHandler","error","filteredRecords","elementItem","includes","viewAction","group","concat","IAM_PAGES","GROUPS","encodeURLString","tableActions","type","onClick","disableButtonFunction","_jsxs","Fragment","selectedGroups","closeDeleteModalAndRefresh","refresh","open","selectedUser","closeModalAndRefresh","PageHeaderWrapper","label","actions","HelpMenu","PageLayout","Grid","container","item","xs","sx","actionsTray","SecureComponent","resource","scopes","errorProps","disabled","SearchBox","placeholder","onChange","value","maxWidth","Box","display","matchAll","TooltipWrapper","tooltip","permissionTooltipHelper","Button","id","icon","IAMPoliciesIcon","variant","DeleteIcon","createGroupPermissions","AddIcon","GROUPS_ADD","ProgressBar","marginBottom","DataTable","itemActions","columns","selectedItems","onSelect","e","_e$target","target","_e$target2","_e$target2$value","_e$target2$checked","checked","elements","_toConsumableArray","push","element","entityName","idField","HelpBox","title","iconComponent","GroupsIcon","help","href","rel","UsersIcon","AButton","usersSort","a","b","accessKey","policySort","name","policyDetailsSort","policy"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/2032.4a5bc956.chunk.js b/portal-ui/build/static/js/2032.27438209.chunk.js similarity index 98% rename from portal-ui/build/static/js/2032.4a5bc956.chunk.js rename to portal-ui/build/static/js/2032.27438209.chunk.js index 75ce7098b8..f4101d5ee5 100644 --- a/portal-ui/build/static/js/2032.4a5bc956.chunk.js +++ b/portal-ui/build/static/js/2032.27438209.chunk.js @@ -1,2 +1,2 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2032],{21435:function(e,n,t){"use strict";var r=t(29439),o=t(1413),i=t(72791),a=t(20817),l=t(61889),u=t(30829),s=t(20068),c=t(13400),d=t(20165),f=t(3579),p=t(11135),v=t(72455),h=t(25787),x=t(23814),m=t(29945),Z=t(63733),b=t(80184),j=(0,v.Z)((function(e){return(0,p.Z)((0,o.Z)({},x.gM))}));function y(e){var n=j();return(0,b.jsx)(a.Z,(0,o.Z)({InputProps:{classes:n}},e))}n.Z=(0,h.Z)((function(e){return(0,p.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},x.YI),x.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}}}))}))((function(e){var n=e.label,t=e.onChange,a=e.value,p=e.id,v=e.name,h=e.type,x=void 0===h?"text":h,j=e.autoComplete,g=void 0===j?"off":j,C=e.disabled,N=void 0!==C&&C,P=e.multiline,I=void 0!==P&&P,F=e.tooltip,M=void 0===F?"":F,w=e.index,L=void 0===w?0:w,R=e.error,k=void 0===R?"":R,z=e.required,_=void 0!==z&&z,T=e.placeholder,E=void 0===T?"":T,O=e.min,A=e.max,B=e.overlayId,D=e.overlayIcon,S=void 0===D?null:D,W=e.overlayObject,H=void 0===W?null:W,G=e.extraInputProps,K=void 0===G?{}:G,q=e.overlayAction,V=e.noLabelMinWidth,Y=void 0!==V&&V,J=e.pattern,Q=void 0===J?"":J,U=e.autoFocus,X=void 0!==U&&U,$=e.classes,ee=e.className,ne=void 0===ee?"":ee,te=e.onKeyPress,re=e.onFocus,oe=e.onPaste,ie=(0,o.Z)({"data-index":L},K),ae=(0,i.useState)(!1),le=(0,r.Z)(ae,2),ue=le[0],se=le[1];"number"===x&&O&&(ie.min=O),"number"===x&&A&&(ie.max=A),""!==Q&&(ie.pattern=Q);var ce=S,de=x;return"password"===x&&null===S&&(ce=ue?(0,b.jsx)(d.Z,{}):(0,b.jsx)(f.Z,{}),de=ue?"text":"password"),(0,b.jsx)(i.Fragment,{children:(0,b.jsxs)(l.ZP,{container:!0,className:(0,Z.Z)(""!==ne?ne:"",""!==k?$.errorInField:$.inputBoxContainer),children:[""!==n&&(0,b.jsxs)(u.Z,{htmlFor:p,className:Y?$.noMinWidthLabel:$.inputLabel,children:[(0,b.jsxs)("span",{children:[n,_?"*":""]}),""!==M&&(0,b.jsx)("div",{className:$.tooltipContainer,children:(0,b.jsx)(s.Z,{title:M,placement:"top-start",children:(0,b.jsx)("div",{className:$.tooltip,children:(0,b.jsx)(m.byK,{})})})})]}),(0,b.jsxs)("div",{className:$.textBoxContainer,children:[(0,b.jsx)(y,{id:p,name:v,fullWidth:!0,value:a,autoFocus:X,disabled:N,onChange:t,type:de,multiline:I,autoComplete:g,inputProps:ie,error:""!==k,helperText:k,placeholder:E,className:$.inputRebase,onKeyPress:te,onFocus:re,onPaste:oe}),ce&&(0,b.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==n?"withLabel":""),children:(0,b.jsx)(c.Z,{onClick:q?function(){q()}:function(){return se(!ue)},id:B,size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:ce})}),H&&(0,b.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==n?"withLabel":""),children:H})]})]})})}))},16502:function(e,n,t){"use strict";t(72791);var r=t(11135),o=t(25787),i=t(80184);n.Z=(0,o.Z)((function(e){return(0,r.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,r=e.title;return(0,i.jsxs)("div",{className:n.headerContainer,children:[(0,i.jsx)("h4",{className:n.labelHeadline,children:r}),(0,i.jsx)("div",{className:n.labelText,children:t})]})}))},62032:function(e,n,t){"use strict";t.r(n);var r=t(29439),o=t(72791),i=t(9505),a=t(23508),l=t(87995),u=t(81551),s=t(16502),c=t(21435),d=t(29945),f=t(80184);n.default=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,p=e.selectedItem,v=e.endpoint,h=e.element,x=(0,u.TL)(),m=(0,i.Z)((function(){return n(!0)}),(function(e){return x((0,l.Ih)(e))})),Z=(0,r.Z)(m,2),b=Z[0],j=Z[1],y=(0,o.useState)(""),g=(0,r.Z)(y,2),C=g[0],N=g[1];if(!p)return null;return(0,f.jsx)(a.Z,{title:"Delete ".concat(h),confirmText:"Delete",isOpen:t,titleIcon:(0,f.jsx)(d.NvT,{}),isLoading:b,onConfirm:function(){j("DELETE","".concat(v).concat(p))},onClose:function(){return n(!1)},confirmButtonProps:{disabled:C!==p||b},confirmationContent:(0,f.jsxs)(o.Fragment,{children:[(0,f.jsx)(d.rjZ,{item:!0,xs:12,children:(0,f.jsx)(s.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,f.jsx)("b",{children:p})," in the box.",(0,f.jsx)(d.rjZ,{item:!0,xs:12,children:(0,f.jsx)(c.Z,{id:"retype-key",name:"retype-key",onChange:function(e){N(e.target.value)},onPaste:function(e){return e.preventDefault()},label:"",value:C})})]})})}},3579:function(e,n,t){"use strict";var r=t(64836);n.Z=void 0;var o=r(t(45649)),i=t(80184),a=(0,o.default)((0,i.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"}),"RemoveRedEye");n.Z=a},20165:function(e,n,t){"use strict";var r=t(64836);n.Z=void 0;var o=r(t(45649)),i=t(80184),a=(0,o.default)((0,i.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}),"VisibilityOff");n.Z=a},45649:function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return r.createSvgIcon}});var r=t(28610)},31260:function(e,n,t){"use strict";var r=t(78949);n.Z=r.Z},28610:function(e,n,t){"use strict";t.r(n),t.d(n,{capitalize:function(){return o.Z},createChainedFunction:function(){return i.Z},createSvgIcon:function(){return a.Z},debounce:function(){return l.Z},deprecatedPropType:function(){return u},isMuiElement:function(){return s.Z},ownerDocument:function(){return c.Z},ownerWindow:function(){return d.Z},requirePropFactory:function(){return f},setRef:function(){return p},unstable_ClassNameGenerator:function(){return y},unstable_useEnhancedEffect:function(){return v.Z},unstable_useId:function(){return h.Z},unsupportedProp:function(){return x},useControlled:function(){return m.Z},useEventCallback:function(){return Z.Z},useForkRef:function(){return b.Z},useIsFocusVisible:function(){return j.Z}});var r=t(55902),o=t(14036),i=t(31260),a=t(76189),l=t(83199);var u=function(e,n){return function(){return null}},s=t(19103),c=t(98301),d=t(17602);t(87462);var f=function(e,n){return function(){return null}},p=t(62971).Z,v=t(40162),h=t(67384);var x=function(e,n,t,r,o){return null},m=t(98278),Z=t(89683),b=t(42071),j=t(23031),y={configure:function(e){r.Z.configure(e)}}},64836:function(e){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); -//# sourceMappingURL=2032.4a5bc956.chunk.js.map \ No newline at end of file +(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2032],{21435:function(e,n,t){"use strict";var r=t(29439),o=t(1413),i=t(72791),a=t(20817),l=t(61889),u=t(30829),s=t(20068),c=t(13400),d=t(20165),f=t(3579),p=t(11135),v=t(72455),h=t(25787),x=t(23814),m=t(29945),Z=t(63733),b=t(80184),j=(0,v.Z)((function(e){return(0,p.Z)((0,o.Z)({},x.gM))}));function y(e){var n=j();return(0,b.jsx)(a.Z,(0,o.Z)({InputProps:{classes:n}},e))}n.Z=(0,h.Z)((function(e){return(0,p.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},x.YI),x.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}}}))}))((function(e){var n=e.label,t=e.onChange,a=e.value,p=e.id,v=e.name,h=e.type,x=void 0===h?"text":h,j=e.autoComplete,g=void 0===j?"off":j,C=e.disabled,N=void 0!==C&&C,P=e.multiline,I=void 0!==P&&P,F=e.tooltip,M=void 0===F?"":F,w=e.index,L=void 0===w?0:w,R=e.error,k=void 0===R?"":R,z=e.required,_=void 0!==z&&z,T=e.placeholder,E=void 0===T?"":T,O=e.min,A=e.max,B=e.overlayId,D=e.overlayIcon,S=void 0===D?null:D,W=e.overlayObject,H=void 0===W?null:W,G=e.extraInputProps,K=void 0===G?{}:G,q=e.overlayAction,V=e.noLabelMinWidth,Y=void 0!==V&&V,J=e.pattern,Q=void 0===J?"":J,U=e.autoFocus,X=void 0!==U&&U,$=e.classes,ee=e.className,ne=void 0===ee?"":ee,te=e.onKeyPress,re=e.onFocus,oe=e.onPaste,ie=(0,o.Z)({"data-index":L},K),ae=(0,i.useState)(!1),le=(0,r.Z)(ae,2),ue=le[0],se=le[1];"number"===x&&O&&(ie.min=O),"number"===x&&A&&(ie.max=A),""!==Q&&(ie.pattern=Q);var ce=S,de=x;return"password"===x&&null===S&&(ce=ue?(0,b.jsx)(d.Z,{}):(0,b.jsx)(f.Z,{}),de=ue?"text":"password"),(0,b.jsx)(i.Fragment,{children:(0,b.jsxs)(l.ZP,{container:!0,className:(0,Z.Z)(""!==ne?ne:"",""!==k?$.errorInField:$.inputBoxContainer),children:[""!==n&&(0,b.jsxs)(u.Z,{htmlFor:p,className:Y?$.noMinWidthLabel:$.inputLabel,children:[(0,b.jsxs)("span",{children:[n,_?"*":""]}),""!==M&&(0,b.jsx)("div",{className:$.tooltipContainer,children:(0,b.jsx)(s.Z,{title:M,placement:"top-start",children:(0,b.jsx)("div",{className:$.tooltip,children:(0,b.jsx)(m.byK,{})})})})]}),(0,b.jsxs)("div",{className:$.textBoxContainer,children:[(0,b.jsx)(y,{id:p,name:v,fullWidth:!0,value:a,autoFocus:X,disabled:N,onChange:t,type:de,multiline:I,autoComplete:g,inputProps:ie,error:""!==k,helperText:k,placeholder:E,className:$.inputRebase,onKeyPress:te,onFocus:re,onPaste:oe}),ce&&(0,b.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==n?"withLabel":""),children:(0,b.jsx)(c.Z,{onClick:q?function(){q()}:function(){return se(!ue)},id:B,size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:ce})}),H&&(0,b.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==n?"withLabel":""),children:H})]})]})})}))},16502:function(e,n,t){"use strict";t(72791);var r=t(11135),o=t(25787),i=t(80184);n.Z=(0,o.Z)((function(e){return(0,r.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,r=e.title;return(0,i.jsxs)("div",{className:n.headerContainer,children:[(0,i.jsx)("h4",{className:n.labelHeadline,children:r}),(0,i.jsx)("div",{className:n.labelText,children:t})]})}))},62032:function(e,n,t){"use strict";t.r(n);var r=t(29439),o=t(72791),i=t(9505),a=t(23508),l=t(87995),u=t(44690),s=t(16502),c=t(21435),d=t(29945),f=t(80184);n.default=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,p=e.selectedItem,v=e.endpoint,h=e.element,x=(0,u.TL)(),m=(0,i.Z)((function(){return n(!0)}),(function(e){return x((0,l.Ih)(e))})),Z=(0,r.Z)(m,2),b=Z[0],j=Z[1],y=(0,o.useState)(""),g=(0,r.Z)(y,2),C=g[0],N=g[1];if(!p)return null;return(0,f.jsx)(a.Z,{title:"Delete ".concat(h),confirmText:"Delete",isOpen:t,titleIcon:(0,f.jsx)(d.NvT,{}),isLoading:b,onConfirm:function(){j("DELETE","".concat(v).concat(p))},onClose:function(){return n(!1)},confirmButtonProps:{disabled:C!==p||b},confirmationContent:(0,f.jsxs)(o.Fragment,{children:[(0,f.jsx)(d.rjZ,{item:!0,xs:12,children:(0,f.jsx)(s.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,f.jsx)("b",{children:p})," in the box.",(0,f.jsx)(d.rjZ,{item:!0,xs:12,children:(0,f.jsx)(c.Z,{id:"retype-key",name:"retype-key",onChange:function(e){N(e.target.value)},onPaste:function(e){return e.preventDefault()},label:"",value:C})})]})})}},3579:function(e,n,t){"use strict";var r=t(64836);n.Z=void 0;var o=r(t(45649)),i=t(80184),a=(0,o.default)((0,i.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"}),"RemoveRedEye");n.Z=a},20165:function(e,n,t){"use strict";var r=t(64836);n.Z=void 0;var o=r(t(45649)),i=t(80184),a=(0,o.default)((0,i.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}),"VisibilityOff");n.Z=a},45649:function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return r.createSvgIcon}});var r=t(28610)},31260:function(e,n,t){"use strict";var r=t(78949);n.Z=r.Z},28610:function(e,n,t){"use strict";t.r(n),t.d(n,{capitalize:function(){return o.Z},createChainedFunction:function(){return i.Z},createSvgIcon:function(){return a.Z},debounce:function(){return l.Z},deprecatedPropType:function(){return u},isMuiElement:function(){return s.Z},ownerDocument:function(){return c.Z},ownerWindow:function(){return d.Z},requirePropFactory:function(){return f},setRef:function(){return p},unstable_ClassNameGenerator:function(){return y},unstable_useEnhancedEffect:function(){return v.Z},unstable_useId:function(){return h.Z},unsupportedProp:function(){return x},useControlled:function(){return m.Z},useEventCallback:function(){return Z.Z},useForkRef:function(){return b.Z},useIsFocusVisible:function(){return j.Z}});var r=t(55902),o=t(14036),i=t(31260),a=t(76189),l=t(83199);var u=function(e,n){return function(){return null}},s=t(19103),c=t(98301),d=t(17602);t(87462);var f=function(e,n){return function(){return null}},p=t(62971).Z,v=t(40162),h=t(67384);var x=function(e,n,t,r,o){return null},m=t(98278),Z=t(89683),b=t(42071),j=t(23031),y={configure:function(e){r.Z.configure(e)}}},64836:function(e){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); +//# sourceMappingURL=2032.27438209.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/2032.4a5bc956.chunk.js.map b/portal-ui/build/static/js/2032.27438209.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/2032.4a5bc956.chunk.js.map rename to portal-ui/build/static/js/2032.27438209.chunk.js.map index bfe6e0771e..491d14d462 100644 --- a/portal-ui/build/static/js/2032.4a5bc956.chunk.js.map +++ b/portal-ui/build/static/js/2032.27438209.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/2032.4a5bc956.chunk.js","mappings":"0SA8FMA,GAAcC,EAAAA,EAAAA,IAAW,SAACC,GAAY,OAC1CC,EAAAA,EAAAA,IAAYC,EAAAA,EAAAA,GAAC,CAAC,EACTC,EAAAA,IACH,IAGJ,SAASC,EAAWC,GAClB,IAAMC,EAAUR,IAEhB,OACES,EAAAA,EAAAA,KAACC,EAAAA,GAASN,EAAAA,EAAAA,GAAA,CACRO,WAAY,CAAEH,QAAAA,IACVD,GAGV,CAwJA,KAAeK,EAAAA,EAAAA,IA7LA,SAACV,GAAY,OAC1BC,EAAAA,EAAAA,IAAYC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACTS,EAAAA,IACAC,EAAAA,IAAa,IAChBC,iBAAkB,CAChBC,SAAU,EACVC,SAAU,YAEZC,cAAe,CACbD,SAAU,WACVE,MAAO,EACPC,IAAK,EACL,QAAS,CACPC,SAAU,GACVC,UAAW,IAEb,cAAe,CACbF,IAAK,MAGR,GAyKL,EAtJwB,SAAHG,GA8BC,IA7BpBC,EAAKD,EAALC,MACAC,EAAQF,EAARE,SACAC,EAAKH,EAALG,MACAC,EAAEJ,EAAFI,GACAC,EAAIL,EAAJK,KAAIC,EAAAN,EACJO,KAAAA,OAAI,IAAAD,EAAG,OAAMA,EAAAE,EAAAR,EACbS,aAAAA,OAAY,IAAAD,EAAG,MAAKA,EAAAE,EAAAV,EACpBW,SAAAA,OAAQ,IAAAD,GAAQA,EAAAE,EAAAZ,EAChBa,UAAAA,OAAS,IAAAD,GAAQA,EAAAE,EAAAd,EACjBe,QAAAA,OAAO,IAAAD,EAAG,GAAEA,EAAAE,EAAAhB,EACZiB,MAAAA,OAAK,IAAAD,EAAG,EAACA,EAAAE,EAAAlB,EACTmB,MAAAA,OAAK,IAAAD,EAAG,GAAEA,EAAAE,EAAApB,EACVqB,SAAAA,OAAQ,IAAAD,GAAQA,EAAAE,EAAAtB,EAChBuB,YAAAA,OAAW,IAAAD,EAAG,GAAEA,EAChBE,EAAGxB,EAAHwB,IACAC,EAAGzB,EAAHyB,IACAC,EAAS1B,EAAT0B,UAASC,EAAA3B,EACT4B,YAAAA,OAAW,IAAAD,EAAG,KAAIA,EAAAE,EAAA7B,EAClB8B,cAAAA,OAAa,IAAAD,EAAG,KAAIA,EAAAE,EAAA/B,EACpBgC,gBAAAA,OAAe,IAAAD,EAAG,CAAC,EAACA,EACpBpC,EAAaK,EAAbL,cAAasC,EAAAjC,EACbkC,gBAAAA,OAAe,IAAAD,GAAQA,EAAAE,EAAAnC,EACvBoC,QAAAA,OAAO,IAAAD,EAAG,GAAEA,EAAAE,EAAArC,EACZsC,UAAAA,OAAS,IAAAD,GAAQA,EACjBpD,EAAOe,EAAPf,QAAOsD,GAAAvC,EACPwC,UAAAA,QAAS,IAAAD,GAAG,GAAEA,GACdE,GAAUzC,EAAVyC,WACAC,GAAO1C,EAAP0C,QACAC,GAAO3C,EAAP2C,QAEIC,IAAe/D,EAAAA,EAAAA,GAAA,CAAK,aAAcoC,GAAUe,GAChDa,IAA8CC,EAAAA,EAAAA,WAAkB,GAAMC,IAAAC,EAAAA,EAAAA,GAAAH,GAAA,GAA/DI,GAAeF,GAAA,GAAEG,GAAkBH,GAAA,GAE7B,WAATxC,GAAqBiB,IACvBoB,GAAgB,IAAIpB,GAGT,WAATjB,GAAqBkB,IACvBmB,GAAgB,IAAInB,GAGN,KAAZW,IACFQ,GAAoB,QAAIR,GAG1B,IAAIe,GAAsBvB,EACtBwB,GAAsB7C,EAW1B,MATa,aAATA,GAAuC,OAAhBqB,IACzBuB,GAAsBF,IACpB/D,EAAAA,EAAAA,KAACmE,EAAAA,EAAiB,KAElBnE,EAAAA,EAAAA,KAACoE,EAAAA,EAAgB,IAEnBF,GAAsBH,GAAkB,OAAS,aAIjD/D,EAAAA,EAAAA,KAACqE,EAAAA,SAAc,CAAAC,UACbC,EAAAA,EAAAA,MAACC,EAAAA,GAAI,CACHC,WAAS,EACTnB,WAAWoB,EAAAA,EAAAA,GACK,KAAdpB,GAAmBA,GAAY,GACrB,KAAVrB,EAAelC,EAAQ4E,aAAe5E,EAAQ6E,mBAC9CN,SAAA,CAES,KAAVvD,IACCwD,EAAAA,EAAAA,MAACM,EAAAA,EAAU,CACTC,QAAS5D,EACToC,UACEN,EAAkBjD,EAAQgF,gBAAkBhF,EAAQiF,WACrDV,SAAA,EAEDC,EAAAA,EAAAA,MAAA,QAAAD,SAAA,CACGvD,EACAoB,EAAW,IAAM,MAEP,KAAZN,IACC7B,EAAAA,EAAAA,KAAA,OAAKsD,UAAWvD,EAAQkF,iBAAiBX,UACvCtE,EAAAA,EAAAA,KAACkF,EAAAA,EAAO,CAACC,MAAOtD,EAASuD,UAAU,YAAWd,UAC5CtE,EAAAA,EAAAA,KAAA,OAAKsD,UAAWvD,EAAQ8B,QAAQyC,UAC9BtE,EAAAA,EAAAA,KAACqF,EAAAA,IAAQ,cAQrBd,EAAAA,EAAAA,MAAA,OAAKjB,UAAWvD,EAAQO,iBAAiBgE,SAAA,EACvCtE,EAAAA,EAAAA,KAACH,EAAU,CACTqB,GAAIA,EACJC,KAAMA,EACNmE,WAAS,EACTrE,MAAOA,EACPmC,UAAWA,EACX3B,SAAUA,EACVT,SAAUA,EACVK,KAAM6C,GACNvC,UAAWA,EACXJ,aAAcA,EACdmC,WAAYA,GACZzB,MAAiB,KAAVA,EACPsD,WAAYtD,EACZI,YAAaA,EACbiB,UAAWvD,EAAQyF,YACnBjC,WAAYA,GACZC,QAASA,GACTC,QAASA,KAEVQ,KACCjE,EAAAA,EAAAA,KAAA,OACEsD,UAAS,GAAAmC,OAAK1F,EAAQU,cAAa,KAAAgF,OACvB,KAAV1E,EAAe,YAAc,IAC5BuD,UAEHtE,EAAAA,EAAAA,KAAC0F,EAAAA,EAAU,CACTC,QACElF,EACI,WACEA,GACF,EACA,kBAAMuD,IAAoBD,GAAgB,EAEhD7C,GAAIsB,EACJoD,KAAM,QACNC,oBAAoB,EACpBC,eAAe,EACfC,oBAAoB,EAAMzB,SAEzBL,OAINrB,IACC5C,EAAAA,EAAAA,KAAA,OACEsD,UAAS,GAAAmC,OAAK1F,EAAQU,cAAa,KAAAgF,OACvB,KAAV1E,EAAe,YAAc,IAC5BuD,SAEF1B,WAOf,G,mFCzMA,KAAezC,EAAAA,EAAAA,IA/BA,SAACV,GAAY,OAC1BC,EAAAA,EAAAA,GAAa,CACXsG,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,SAAH7F,GAAoD,IAA9Cf,EAAOe,EAAPf,QAASgB,EAAKD,EAALC,MAAOoE,EAAKrE,EAALqE,MACxC,OACEZ,EAAAA,EAAAA,MAAA,OAAKjB,UAAWvD,EAAQiG,gBAAgB1B,SAAA,EACtCtE,EAAAA,EAAAA,KAAA,MAAIsD,UAAWvD,EAAQuG,cAAchC,SAAEa,KACvCnF,EAAAA,EAAAA,KAAA,OAAKsD,UAAWvD,EAAQ2G,UAAUpC,SAAEvD,MAG1C,G,6JC2CA,UAjEuB,SAAHD,GAMS,IAL3B8F,EAA0B9F,EAA1B8F,2BACAC,EAAU/F,EAAV+F,WACAC,EAAYhG,EAAZgG,aACAC,EAAQjG,EAARiG,SACAC,EAAOlG,EAAPkG,QAEMC,GAAWC,EAAAA,EAAAA,MAMjBC,GAAyCC,EAAAA,EAAAA,IALpB,WAAH,OAASR,GAA2B,EAAM,IACzC,SAACS,GAAyB,OAC3CJ,GAASK,EAAAA,EAAAA,IAAqBD,GAAM,IAGmCE,GAAAzD,EAAAA,EAAAA,GAAAqD,EAAA,GAAlEK,EAAaD,EAAA,GAAEE,EAAeF,EAAA,GACrC5D,GAAkCC,EAAAA,EAAAA,UAAS,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAvC+D,EAAS7D,EAAA,GAAE8D,EAAY9D,EAAA,GAE9B,IAAKiD,EACH,OAAO,KAOT,OACE9G,EAAAA,EAAAA,KAAC4H,EAAAA,EAAa,CACZzC,MAAK,UAAAM,OAAYuB,GACjBa,YAAa,SACbC,OAAQjB,EACRkB,WAAW/H,EAAAA,EAAAA,KAACgI,EAAAA,IAAiB,IAC7BC,UAAWT,EACXU,UAXoB,WACtBT,EAAgB,SAAS,GAADhC,OAAKsB,GAAQtB,OAAGqB,GAC1C,EAUIqB,QArBY,WAAH,OAASvB,GAA2B,EAAO,EAsBpDwB,mBAAoB,CAClB3G,SAAUiG,IAAcZ,GAAgBU,GAE1Ca,qBACE9D,EAAAA,EAAAA,MAAC+D,EAAAA,SAAQ,CAAAhE,SAAA,EACPtE,EAAAA,EAAAA,KAACwE,EAAAA,IAAI,CAAC+D,MAAI,EAACC,GAAI,GAAGlE,UAChBtE,EAAAA,EAAAA,KAACyI,EAAAA,EAAc,CACbtD,MAAO,UACPpE,MACE,gLAGC,4BACiBf,EAAAA,EAAAA,KAAA,KAAAsE,SAAIwC,IAAiB,gBAC7C9G,EAAAA,EAAAA,KAACwE,EAAAA,IAAI,CAAC+D,MAAI,EAACC,GAAI,GAAGlE,UAChBtE,EAAAA,EAAAA,KAAC0I,EAAAA,EAAe,CACdxH,GAAG,aACHC,KAAK,aACLH,SAAU,SAAC2H,GACThB,EAAagB,EAAMC,OAAO3H,MAC5B,EACAwC,QAAS,SAACoF,GAAC,OAAKA,EAAEC,gBAAgB,EAClC/H,MAAM,GACNE,MAAOyG,UAOrB,C,wCC9FIqB,EAAyBC,EAAQ,OAIrCC,EAAQ,OAAU,EAClB,IAAIC,EAAiBH,EAAuBC,EAAQ,QAChDG,EAAcH,EAAQ,OACtBI,GAAW,EAAIF,EAAeG,UAAuB,EAAIF,EAAYG,KAAK,OAAQ,CACpFC,EAAG,sNACD,gBACJN,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,8fACD,iBACJN,EAAQ,EAAUG,C,qCCVlBI,OAAOC,eAAeR,EAAS,aAAc,CAC3ChI,OAAO,IAETuI,OAAOC,eAAeR,EAAS,UAAW,CACxCS,YAAY,EACZC,IAAK,WACH,OAAOC,EAAOC,aAChB,IAEF,IAAID,EAASZ,EAAQ,M,oDCXrB,IAAec,EAAqB,C,kyBCApC,MCDe,SAA4BC,EAAWC,GAElD,OAAO,kBAAM,IAAI,CAUrB,E,0CCXA,MCAe,SAA4BC,EAAsBC,GAE7D,OAAO,kBAAM,IAAI,CAoBrB,ECtBA,E,SAAqB,E,sBCArB,MCDe,SAAyBpK,EAAOqK,EAAUC,EAAeC,EAAUC,GAE9E,OAAO,IAOX,E,4CCaaC,EAA8B,CACzCC,UAAW,SAAAC,GAITC,EAAAA,EAAmBF,UAAUC,EAC/B,E,oBCvBFE,EAAO1B,QALP,SAAgC2B,GAC9B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACnC,QAAWA,EAEf,EACyCD,EAAO1B,QAAQ4B,YAAa,EAAMF,EAAO1B,QAAiB,QAAI0B,EAAO1B,O","sources":["screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/WarningMessage/WarningMessage.tsx","screens/Console/KMS/DeleteKMSModal.tsx","../node_modules/@mui/icons-material/RemoveRedEye.js","../node_modules/@mui/icons-material/VisibilityOff.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/esm/deprecatedPropType.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/esm/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/esm/unsupportedProp.js","../node_modules/@mui/material/utils/index.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { ClipboardEvent, useState } from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n onKeyPress?: (e: any) => void;\n onFocus?: () => void;\n onPaste?: (e: ClipboardEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayId?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n }),\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayId,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n onFocus,\n onPaste,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n const [toggleTextInput, setToggleTextInput] = useState(false);\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n let inputBoxWrapperIcon = overlayIcon;\n let inputBoxWrapperType = type;\n\n if (type === \"password\" && overlayIcon === null) {\n inputBoxWrapperIcon = toggleTextInput ? (\n \n ) : (\n \n );\n inputBoxWrapperType = toggleTextInput ? \"text\" : \"password\";\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n

\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n
\n \n {inputBoxWrapperIcon && (\n \n {\n overlayAction();\n }\n : () => setToggleTextInput(!toggleTextInput)\n }\n id={overlayId}\n size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {inputBoxWrapperIcon}\n \n
\n )}\n {overlayObject && (\n \n {overlayObject}\n \n )}\n \n \n \n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 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

{title}

\n
{label}
\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, Fragment } from \"react\";\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, Grid } 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","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'RemoveRedEye');\nexports.default = _default;","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["inputStyles","makeStyles","theme","createStyles","_objectSpread","inputFieldStyles","InputField","props","classes","_jsx","TextField","InputProps","withStyles","fieldBasic","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","_ref","label","onChange","value","id","name","_ref$type","type","_ref$autoComplete","autoComplete","_ref$disabled","disabled","_ref$multiline","multiline","_ref$tooltip","tooltip","_ref$index","index","_ref$error","error","_ref$required","required","_ref$placeholder","placeholder","min","max","overlayId","_ref$overlayIcon","overlayIcon","_ref$overlayObject","overlayObject","_ref$extraInputProps","extraInputProps","_ref$noLabelMinWidth","noLabelMinWidth","_ref$pattern","pattern","_ref$autoFocus","autoFocus","_ref$className","className","onKeyPress","onFocus","onPaste","inputProps","_useState","useState","_useState2","_slicedToArray","toggleTextInput","setToggleTextInput","inputBoxWrapperIcon","inputBoxWrapperType","VisibilityOffIcon","RemoveRedEyeIcon","React","children","_jsxs","Grid","container","clsx","errorInField","inputBoxContainer","InputLabel","htmlFor","noMinWidthLabel","inputLabel","tooltipContainer","Tooltip","title","placement","HelpIcon","fullWidth","helperText","inputRebase","concat","IconButton","onClick","size","disableFocusRipple","disableRipple","disableTouchRipple","headerContainer","backgroundColor","borderRadius","marginBottom","padding","paddingBottom","labelHeadline","color","fontSize","marginLeft","labelText","marginRight","closeDeleteModalAndRefresh","deleteOpen","selectedItem","endpoint","element","dispatch","useAppDispatch","_useApi","useApi","err","setErrorSnackMessage","_useApi2","deleteLoading","invokeDeleteApi","retypeKey","setRetypeKey","ConfirmDialog","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","onClose","confirmButtonProps","confirmationContent","Fragment","item","xs","WarningMessage","InputBoxWrapper","event","target","e","preventDefault","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Object","defineProperty","enumerable","get","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/2032.27438209.chunk.js","mappings":"0SA8FMA,GAAcC,EAAAA,EAAAA,IAAW,SAACC,GAAY,OAC1CC,EAAAA,EAAAA,IAAYC,EAAAA,EAAAA,GAAC,CAAC,EACTC,EAAAA,IACH,IAGJ,SAASC,EAAWC,GAClB,IAAMC,EAAUR,IAEhB,OACES,EAAAA,EAAAA,KAACC,EAAAA,GAASN,EAAAA,EAAAA,GAAA,CACRO,WAAY,CAAEH,QAAAA,IACVD,GAGV,CAwJA,KAAeK,EAAAA,EAAAA,IA7LA,SAACV,GAAY,OAC1BC,EAAAA,EAAAA,IAAYC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACTS,EAAAA,IACAC,EAAAA,IAAa,IAChBC,iBAAkB,CAChBC,SAAU,EACVC,SAAU,YAEZC,cAAe,CACbD,SAAU,WACVE,MAAO,EACPC,IAAK,EACL,QAAS,CACPC,SAAU,GACVC,UAAW,IAEb,cAAe,CACbF,IAAK,MAGR,GAyKL,EAtJwB,SAAHG,GA8BC,IA7BpBC,EAAKD,EAALC,MACAC,EAAQF,EAARE,SACAC,EAAKH,EAALG,MACAC,EAAEJ,EAAFI,GACAC,EAAIL,EAAJK,KAAIC,EAAAN,EACJO,KAAAA,OAAI,IAAAD,EAAG,OAAMA,EAAAE,EAAAR,EACbS,aAAAA,OAAY,IAAAD,EAAG,MAAKA,EAAAE,EAAAV,EACpBW,SAAAA,OAAQ,IAAAD,GAAQA,EAAAE,EAAAZ,EAChBa,UAAAA,OAAS,IAAAD,GAAQA,EAAAE,EAAAd,EACjBe,QAAAA,OAAO,IAAAD,EAAG,GAAEA,EAAAE,EAAAhB,EACZiB,MAAAA,OAAK,IAAAD,EAAG,EAACA,EAAAE,EAAAlB,EACTmB,MAAAA,OAAK,IAAAD,EAAG,GAAEA,EAAAE,EAAApB,EACVqB,SAAAA,OAAQ,IAAAD,GAAQA,EAAAE,EAAAtB,EAChBuB,YAAAA,OAAW,IAAAD,EAAG,GAAEA,EAChBE,EAAGxB,EAAHwB,IACAC,EAAGzB,EAAHyB,IACAC,EAAS1B,EAAT0B,UAASC,EAAA3B,EACT4B,YAAAA,OAAW,IAAAD,EAAG,KAAIA,EAAAE,EAAA7B,EAClB8B,cAAAA,OAAa,IAAAD,EAAG,KAAIA,EAAAE,EAAA/B,EACpBgC,gBAAAA,OAAe,IAAAD,EAAG,CAAC,EAACA,EACpBpC,EAAaK,EAAbL,cAAasC,EAAAjC,EACbkC,gBAAAA,OAAe,IAAAD,GAAQA,EAAAE,EAAAnC,EACvBoC,QAAAA,OAAO,IAAAD,EAAG,GAAEA,EAAAE,EAAArC,EACZsC,UAAAA,OAAS,IAAAD,GAAQA,EACjBpD,EAAOe,EAAPf,QAAOsD,GAAAvC,EACPwC,UAAAA,QAAS,IAAAD,GAAG,GAAEA,GACdE,GAAUzC,EAAVyC,WACAC,GAAO1C,EAAP0C,QACAC,GAAO3C,EAAP2C,QAEIC,IAAe/D,EAAAA,EAAAA,GAAA,CAAK,aAAcoC,GAAUe,GAChDa,IAA8CC,EAAAA,EAAAA,WAAkB,GAAMC,IAAAC,EAAAA,EAAAA,GAAAH,GAAA,GAA/DI,GAAeF,GAAA,GAAEG,GAAkBH,GAAA,GAE7B,WAATxC,GAAqBiB,IACvBoB,GAAgB,IAAIpB,GAGT,WAATjB,GAAqBkB,IACvBmB,GAAgB,IAAInB,GAGN,KAAZW,IACFQ,GAAoB,QAAIR,GAG1B,IAAIe,GAAsBvB,EACtBwB,GAAsB7C,EAW1B,MATa,aAATA,GAAuC,OAAhBqB,IACzBuB,GAAsBF,IACpB/D,EAAAA,EAAAA,KAACmE,EAAAA,EAAiB,KAElBnE,EAAAA,EAAAA,KAACoE,EAAAA,EAAgB,IAEnBF,GAAsBH,GAAkB,OAAS,aAIjD/D,EAAAA,EAAAA,KAACqE,EAAAA,SAAc,CAAAC,UACbC,EAAAA,EAAAA,MAACC,EAAAA,GAAI,CACHC,WAAS,EACTnB,WAAWoB,EAAAA,EAAAA,GACK,KAAdpB,GAAmBA,GAAY,GACrB,KAAVrB,EAAelC,EAAQ4E,aAAe5E,EAAQ6E,mBAC9CN,SAAA,CAES,KAAVvD,IACCwD,EAAAA,EAAAA,MAACM,EAAAA,EAAU,CACTC,QAAS5D,EACToC,UACEN,EAAkBjD,EAAQgF,gBAAkBhF,EAAQiF,WACrDV,SAAA,EAEDC,EAAAA,EAAAA,MAAA,QAAAD,SAAA,CACGvD,EACAoB,EAAW,IAAM,MAEP,KAAZN,IACC7B,EAAAA,EAAAA,KAAA,OAAKsD,UAAWvD,EAAQkF,iBAAiBX,UACvCtE,EAAAA,EAAAA,KAACkF,EAAAA,EAAO,CAACC,MAAOtD,EAASuD,UAAU,YAAWd,UAC5CtE,EAAAA,EAAAA,KAAA,OAAKsD,UAAWvD,EAAQ8B,QAAQyC,UAC9BtE,EAAAA,EAAAA,KAACqF,EAAAA,IAAQ,cAQrBd,EAAAA,EAAAA,MAAA,OAAKjB,UAAWvD,EAAQO,iBAAiBgE,SAAA,EACvCtE,EAAAA,EAAAA,KAACH,EAAU,CACTqB,GAAIA,EACJC,KAAMA,EACNmE,WAAS,EACTrE,MAAOA,EACPmC,UAAWA,EACX3B,SAAUA,EACVT,SAAUA,EACVK,KAAM6C,GACNvC,UAAWA,EACXJ,aAAcA,EACdmC,WAAYA,GACZzB,MAAiB,KAAVA,EACPsD,WAAYtD,EACZI,YAAaA,EACbiB,UAAWvD,EAAQyF,YACnBjC,WAAYA,GACZC,QAASA,GACTC,QAASA,KAEVQ,KACCjE,EAAAA,EAAAA,KAAA,OACEsD,UAAS,GAAAmC,OAAK1F,EAAQU,cAAa,KAAAgF,OACvB,KAAV1E,EAAe,YAAc,IAC5BuD,UAEHtE,EAAAA,EAAAA,KAAC0F,EAAAA,EAAU,CACTC,QACElF,EACI,WACEA,GACF,EACA,kBAAMuD,IAAoBD,GAAgB,EAEhD7C,GAAIsB,EACJoD,KAAM,QACNC,oBAAoB,EACpBC,eAAe,EACfC,oBAAoB,EAAMzB,SAEzBL,OAINrB,IACC5C,EAAAA,EAAAA,KAAA,OACEsD,UAAS,GAAAmC,OAAK1F,EAAQU,cAAa,KAAAgF,OACvB,KAAV1E,EAAe,YAAc,IAC5BuD,SAEF1B,WAOf,G,mFCzMA,KAAezC,EAAAA,EAAAA,IA/BA,SAACV,GAAY,OAC1BC,EAAAA,EAAAA,GAAa,CACXsG,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,SAAH7F,GAAoD,IAA9Cf,EAAOe,EAAPf,QAASgB,EAAKD,EAALC,MAAOoE,EAAKrE,EAALqE,MACxC,OACEZ,EAAAA,EAAAA,MAAA,OAAKjB,UAAWvD,EAAQiG,gBAAgB1B,SAAA,EACtCtE,EAAAA,EAAAA,KAAA,MAAIsD,UAAWvD,EAAQuG,cAAchC,SAAEa,KACvCnF,EAAAA,EAAAA,KAAA,OAAKsD,UAAWvD,EAAQ2G,UAAUpC,SAAEvD,MAG1C,G,6JC2CA,UAjEuB,SAAHD,GAMS,IAL3B8F,EAA0B9F,EAA1B8F,2BACAC,EAAU/F,EAAV+F,WACAC,EAAYhG,EAAZgG,aACAC,EAAQjG,EAARiG,SACAC,EAAOlG,EAAPkG,QAEMC,GAAWC,EAAAA,EAAAA,MAMjBC,GAAyCC,EAAAA,EAAAA,IALpB,WAAH,OAASR,GAA2B,EAAM,IACzC,SAACS,GAAyB,OAC3CJ,GAASK,EAAAA,EAAAA,IAAqBD,GAAM,IAGmCE,GAAAzD,EAAAA,EAAAA,GAAAqD,EAAA,GAAlEK,EAAaD,EAAA,GAAEE,EAAeF,EAAA,GACrC5D,GAAkCC,EAAAA,EAAAA,UAAS,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAvC+D,EAAS7D,EAAA,GAAE8D,EAAY9D,EAAA,GAE9B,IAAKiD,EACH,OAAO,KAOT,OACE9G,EAAAA,EAAAA,KAAC4H,EAAAA,EAAa,CACZzC,MAAK,UAAAM,OAAYuB,GACjBa,YAAa,SACbC,OAAQjB,EACRkB,WAAW/H,EAAAA,EAAAA,KAACgI,EAAAA,IAAiB,IAC7BC,UAAWT,EACXU,UAXoB,WACtBT,EAAgB,SAAS,GAADhC,OAAKsB,GAAQtB,OAAGqB,GAC1C,EAUIqB,QArBY,WAAH,OAASvB,GAA2B,EAAO,EAsBpDwB,mBAAoB,CAClB3G,SAAUiG,IAAcZ,GAAgBU,GAE1Ca,qBACE9D,EAAAA,EAAAA,MAAC+D,EAAAA,SAAQ,CAAAhE,SAAA,EACPtE,EAAAA,EAAAA,KAACwE,EAAAA,IAAI,CAAC+D,MAAI,EAACC,GAAI,GAAGlE,UAChBtE,EAAAA,EAAAA,KAACyI,EAAAA,EAAc,CACbtD,MAAO,UACPpE,MACE,gLAGC,4BACiBf,EAAAA,EAAAA,KAAA,KAAAsE,SAAIwC,IAAiB,gBAC7C9G,EAAAA,EAAAA,KAACwE,EAAAA,IAAI,CAAC+D,MAAI,EAACC,GAAI,GAAGlE,UAChBtE,EAAAA,EAAAA,KAAC0I,EAAAA,EAAe,CACdxH,GAAG,aACHC,KAAK,aACLH,SAAU,SAAC2H,GACThB,EAAagB,EAAMC,OAAO3H,MAC5B,EACAwC,QAAS,SAACoF,GAAC,OAAKA,EAAEC,gBAAgB,EAClC/H,MAAM,GACNE,MAAOyG,UAOrB,C,wCC9FIqB,EAAyBC,EAAQ,OAIrCC,EAAQ,OAAU,EAClB,IAAIC,EAAiBH,EAAuBC,EAAQ,QAChDG,EAAcH,EAAQ,OACtBI,GAAW,EAAIF,EAAeG,UAAuB,EAAIF,EAAYG,KAAK,OAAQ,CACpFC,EAAG,sNACD,gBACJN,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,8fACD,iBACJN,EAAQ,EAAUG,C,qCCVlBI,OAAOC,eAAeR,EAAS,aAAc,CAC3ChI,OAAO,IAETuI,OAAOC,eAAeR,EAAS,UAAW,CACxCS,YAAY,EACZC,IAAK,WACH,OAAOC,EAAOC,aAChB,IAEF,IAAID,EAASZ,EAAQ,M,oDCXrB,IAAec,EAAqB,C,kyBCApC,MCDe,SAA4BC,EAAWC,GAElD,OAAO,kBAAM,IAAI,CAUrB,E,0CCXA,MCAe,SAA4BC,EAAsBC,GAE7D,OAAO,kBAAM,IAAI,CAoBrB,ECtBA,E,SAAqB,E,sBCArB,MCDe,SAAyBpK,EAAOqK,EAAUC,EAAeC,EAAUC,GAE9E,OAAO,IAOX,E,4CCaaC,EAA8B,CACzCC,UAAW,SAAAC,GAITC,EAAAA,EAAmBF,UAAUC,EAC/B,E,oBCvBFE,EAAO1B,QALP,SAAgC2B,GAC9B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACnC,QAAWA,EAEf,EACyCD,EAAO1B,QAAQ4B,YAAa,EAAMF,EAAO1B,QAAiB,QAAI0B,EAAO1B,O","sources":["screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/WarningMessage/WarningMessage.tsx","screens/Console/KMS/DeleteKMSModal.tsx","../node_modules/@mui/icons-material/RemoveRedEye.js","../node_modules/@mui/icons-material/VisibilityOff.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/esm/deprecatedPropType.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/esm/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/esm/unsupportedProp.js","../node_modules/@mui/material/utils/index.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { ClipboardEvent, useState } from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n onKeyPress?: (e: any) => void;\n onFocus?: () => void;\n onPaste?: (e: ClipboardEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayId?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n }),\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayId,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n onFocus,\n onPaste,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n const [toggleTextInput, setToggleTextInput] = useState(false);\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n let inputBoxWrapperIcon = overlayIcon;\n let inputBoxWrapperType = type;\n\n if (type === \"password\" && overlayIcon === null) {\n inputBoxWrapperIcon = toggleTextInput ? (\n \n ) : (\n \n );\n inputBoxWrapperType = toggleTextInput ? \"text\" : \"password\";\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n
\n \n {inputBoxWrapperIcon && (\n \n {\n overlayAction();\n }\n : () => setToggleTextInput(!toggleTextInput)\n }\n id={overlayId}\n size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {inputBoxWrapperIcon}\n \n
\n )}\n {overlayObject && (\n \n {overlayObject}\n \n )}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 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

{title}

\n
{label}
\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, Fragment } from \"react\";\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, Grid } 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","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'RemoveRedEye');\nexports.default = _default;","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["inputStyles","makeStyles","theme","createStyles","_objectSpread","inputFieldStyles","InputField","props","classes","_jsx","TextField","InputProps","withStyles","fieldBasic","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","_ref","label","onChange","value","id","name","_ref$type","type","_ref$autoComplete","autoComplete","_ref$disabled","disabled","_ref$multiline","multiline","_ref$tooltip","tooltip","_ref$index","index","_ref$error","error","_ref$required","required","_ref$placeholder","placeholder","min","max","overlayId","_ref$overlayIcon","overlayIcon","_ref$overlayObject","overlayObject","_ref$extraInputProps","extraInputProps","_ref$noLabelMinWidth","noLabelMinWidth","_ref$pattern","pattern","_ref$autoFocus","autoFocus","_ref$className","className","onKeyPress","onFocus","onPaste","inputProps","_useState","useState","_useState2","_slicedToArray","toggleTextInput","setToggleTextInput","inputBoxWrapperIcon","inputBoxWrapperType","VisibilityOffIcon","RemoveRedEyeIcon","React","children","_jsxs","Grid","container","clsx","errorInField","inputBoxContainer","InputLabel","htmlFor","noMinWidthLabel","inputLabel","tooltipContainer","Tooltip","title","placement","HelpIcon","fullWidth","helperText","inputRebase","concat","IconButton","onClick","size","disableFocusRipple","disableRipple","disableTouchRipple","headerContainer","backgroundColor","borderRadius","marginBottom","padding","paddingBottom","labelHeadline","color","fontSize","marginLeft","labelText","marginRight","closeDeleteModalAndRefresh","deleteOpen","selectedItem","endpoint","element","dispatch","useAppDispatch","_useApi","useApi","err","setErrorSnackMessage","_useApi2","deleteLoading","invokeDeleteApi","retypeKey","setRetypeKey","ConfirmDialog","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","onClose","confirmButtonProps","confirmationContent","Fragment","item","xs","WarningMessage","InputBoxWrapper","event","target","e","preventDefault","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Object","defineProperty","enumerable","get","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/2074.aebefc57.chunk.js b/portal-ui/build/static/js/2074.1f0d525f.chunk.js similarity index 97% rename from portal-ui/build/static/js/2074.aebefc57.chunk.js rename to portal-ui/build/static/js/2074.1f0d525f.chunk.js index 2883ca7091..630d741690 100644 --- a/portal-ui/build/static/js/2074.aebefc57.chunk.js +++ b/portal-ui/build/static/js/2074.1f0d525f.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2074,8896,9134],{88896:function(e,n,t){t.r(n);var s=t(37762),i=t(29439),r=t(72791),l=t(29945),o=t(45248),c=t(87995),a=t(81551),u=t(23508),d=t(9505),x=t(80184);n.default=function(e){var n=e.selectedGroups,t=e.deleteOpen,f=e.closeDeleteModalAndRefresh,h=(0,a.TL)(),p=(0,d.Z)((function(){return f(!0)}),(function(e){h((0,c.Ih)(e)),f(!1)})),m=(0,i.Z)(p,2),j=m[0],v=m[1];if(!n)return null;var g=n.map((function(e){return(0,x.jsx)("div",{children:(0,x.jsx)("b",{children:e})},e)}));return(0,x.jsx)(u.Z,{title:"Delete Group".concat(n.length>1?"s":""),confirmText:"Delete",isOpen:t,titleIcon:(0,x.jsx)(l.NvT,{}),isLoading:j,onConfirm:function(){var e,t=(0,s.Z)(n);try{for(t.s();!(e=t.n()).done;){var i=e.value;v("DELETE","/api/v1/group/".concat((0,o.LL)(i)))}}catch(r){t.e(r)}finally{t.f()}},onClose:function(){return f(!1)},confirmationContent:(0,x.jsxs)(r.Fragment,{children:["Are you sure you want to delete the following"," ",1===n.length?"":n.length," group",n.length>1?"s?":"?",g]})})}},22074:function(e,n,t){t.r(n),t.d(n,{default:function(){return L},formatPolicy:function(){return P}});var s=t(29439),i=t(72791),r=t(57689),l=t(29945),o=t(31776),c=t(82342),a=t(56087),u=t(38442),d=t(45248),x=t(87995),f=t(81551),h=t(74616),p=t(39134),m=t(23814),j=t(40228),v=t(56028),g=t(80184),b=function(e){var n=e.title,t=void 0===n?"":n,r=e.groupStatus,a=void 0===r?"enabled":r,u=e.preSelectedUsers,h=void 0===u?[]:u,p=e.selectedGroup,b=void 0===p?"":p,Z=e.open,y=e.onClose,S=(0,f.TL)(),C=(0,i.useState)(h),k=(0,s.Z)(C,2),P=k[0],L=k[1];return(0,g.jsxs)(v.Z,{modalOpen:Z,onClose:y,title:t,titleIcon:(0,g.jsx)(l.ZmA,{}),children:[(0,g.jsxs)(l.ltY,{withBorders:!1,containerPadding:!1,children:[(0,g.jsx)(l.bSr,{label:"Selected Group",sx:{width:"100%"},children:b}),(0,g.jsx)(j.Z,{selectedUsers:P,setSelectedUsers:L,editMode:!b})]}),(0,g.jsxs)(l.rjZ,{item:!0,xs:12,sx:m.ID.modalButtonBar,children:[(0,g.jsx)(l.zxk,{id:"reset-add-group-member",type:"button",variant:"regular",onClick:function(){L(h)},label:"Reset"}),(0,g.jsx)(l.zxk,{id:"save-add-group-member",type:"button",variant:"callAction",onClick:function(){o.h.group.updateGroup((0,d.LL)(b),{members:P,status:a}).then((function(){y()})).catch((function(e){y(),S((0,x.zb)((0,c.g)(e.error)))}))},label:"Save"})]})]})},Z=t(88896),y=t(59114),S=t(27454),C=t(99670),k=t(47974),P=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e.length<=0?[]:e.split(",")},L=function(){var e=(0,f.TL)(),n=(0,r.s0)(),t=(0,r.UO)(),m=(0,i.useState)({}),j=(0,s.Z)(m,2),v=j[0],L=j[1],A=(0,i.useState)(!1),U=(0,s.Z)(A,2),w=U[0],G=U[1],F=(0,i.useState)(!1),K=(0,s.Z)(F,2),M=K[0],E=K[1],I=(0,i.useState)(!1),z=(0,s.Z)(I,2),N=z[0],T=z[1],D=(0,i.useState)(""),O=(0,s.Z)(D,2),B=O[0],R=O[1],Q=(0,i.useState)("members"),_=(0,s.Z)(Q,2),H=_[0],W=_[1],X=(0,d.IO)(t.groupName||""),Y=v.members,J=void 0===Y?[]:Y,V=v.policy,q=void 0===V?"":V,$=v.status,ee=J.filter((function(e){return e.includes(B)})),ne=(0,u.F)(a.C3,a.iw,!0);(0,i.useEffect)((function(){e((0,x.Sc)("group_details"))}),[]),(0,i.useEffect)((function(){X&&ae()}),[X]);var te=P(q),se="enabled"===$,ie=J.length>0?"Edit Members":"Add Members",re=(0,u.F)(a.C3,a.k_),le=(0,u.F)(a.C3,a.kt,!0),oe=(0,u.F)(a.C3,a.UA,!0),ce=(0,u.F)(a.C3,a.GD,!0);function ae(){re&&o.h.group.groupInfo((0,d.LL)(X)).then((function(e){L(e.data)})).catch((function(n){e((0,x.zb)((0,c.g)(n.error))),L({})}))}var ue=(0,g.jsxs)(l.xuv,{onMouseMove:function(){e((0,x.Sc)("groups_members"))},children:[(0,g.jsx)(l.NZf,{separator:!0,sx:{marginBottom:15},actions:(0,g.jsxs)(l.xuv,{sx:{display:"flex",gap:10},children:[(0,g.jsx)(y.Z,{placeholder:"Search members",onChange:function(e){R(e)},value:B,sx:{maxWidth:280}}),(0,g.jsx)(u.s,{resource:a.C3,scopes:a.uH,errorProps:{disabled:!0},children:(0,g.jsx)(S.Z,{tooltip:le?ie:(0,a.MK)(a.vN,"edit Group membership"),children:(0,g.jsx)(l.zxk,{id:"add-user-group",label:ie,variant:"callAction",icon:(0,g.jsx)(l.dtP,{}),onClick:function(){E(!0)},disabled:!le})})})]}),children:"Members"}),(0,g.jsx)(l.rjZ,{item:!0,xs:12,children:(0,g.jsx)(u.s,{resource:a.C3,scopes:a.Rs,errorProps:{disabled:!0},children:(0,g.jsx)(S.Z,{tooltip:ne?"":(0,a.MK)(a.iw,"view User details"),children:(0,g.jsx)(l.wQF,{itemActions:[{type:"view",onClick:function(e){n("".concat(a.gA.USERS,"/").concat((0,d.LL)(e)))},isDisabled:!ne}],columns:[{label:"Access Key"}],selectedItems:[],isLoading:!1,records:ee,entityName:"Users"})})})})]}),de=(0,g.jsxs)(i.Fragment,{children:[(0,g.jsx)(l.xuv,{onMouseMove:function(){e((0,x.Sc)("groups_policies"))},children:(0,g.jsx)(l.NZf,{separator:!0,sx:{marginBottom:15},actions:(0,g.jsx)(S.Z,{tooltip:oe?"Set Policies":(0,a.MK)(a.UA,"assign Policies"),children:(0,g.jsx)(l.zxk,{id:"set-policies",label:"Set Policies",variant:"callAction",icon:(0,g.jsx)(l.v42,{}),onClick:function(){G(!0)},disabled:!oe})}),children:"Policies"})}),(0,g.jsx)(l.rjZ,{item:!0,xs:12,children:(0,g.jsx)(S.Z,{tooltip:ce?"":(0,a.MK)(a.GD,"view Policy details"),children:(0,g.jsx)(l.wQF,{itemActions:[{type:"view",onClick:function(e){n("".concat(a.gA.POLICIES,"/").concat((0,d.LL)(e)))},isDisabled:!ce}],columns:[{label:"Policy"}],isLoading:!1,records:te,entityName:"Policies"})})})]});return(0,g.jsxs)(i.Fragment,{children:[w?(0,g.jsx)(p.default,{open:w,selectedGroups:[X],selectedUser:null,closeModalAndRefresh:function(){G(!1),ae(),e((0,h.ue)([]))}}):null,M?(0,g.jsx)(b,{selectedGroup:X,onSaveClick:function(){},title:ie,groupStatus:$,preSelectedUsers:J,open:M,onClose:function(){E(!1),ae()}}):null,N&&(0,g.jsx)(Z.default,{deleteOpen:N,selectedGroups:[X],closeDeleteModalAndRefresh:function(e){T(!1),e&&n(a.gA.GROUPS)}}),(0,g.jsx)(k.Z,{label:(0,g.jsx)(i.Fragment,{children:(0,g.jsx)(l.hbI,{label:"Groups",onClick:function(){return n(a.gA.GROUPS)}})}),actions:(0,g.jsx)(C.Z,{})}),(0,g.jsxs)(l.Xgh,{children:[(0,g.jsx)(l.rjZ,{item:!0,xs:12,children:(0,g.jsx)(l.UHn,{icon:(0,g.jsx)(i.Fragment,{children:(0,g.jsx)(l.wws,{width:40})}),title:X,subTitle:null,bottomBorder:!0,actions:(0,g.jsxs)(l.xuv,{sx:{display:"flex",fontSize:14,alignItems:"center",gap:15},children:[(0,g.jsx)("span",{children:"Group Status:"}),(0,g.jsx)("span",{id:"group-status-label",style:{fontWeight:"bold"},children:se?"Enabled":"Disabled"}),(0,g.jsx)(S.Z,{tooltip:(0,u.F)(a.C3,a.xh,!0)?"":(0,a.MK)(a.xh,"enable or disable Groups"),children:(0,g.jsx)(u.s,{resource:a.C3,scopes:a.xh,errorProps:{disabled:!0},matchAll:!0,children:(0,g.jsx)(l.rsf,{indicatorLabels:["Enabled","Disabled"],checked:se,value:"group_enabled",id:"group-status",name:"group-status",onChange:function(){var n;n=!se,o.h.group.updateGroup((0,d.LL)(X),{members:J,status:n?"enabled":"disabled"}).then((function(){ae()})).catch((function(n){e((0,x.zb)((0,c.g)(n.error)))}))},switchOnly:!0})})}),(0,g.jsx)(S.Z,{tooltip:"Delete Group",children:(0,g.jsx)(l.zxk,{id:"delete-user-group",variant:"secondary",icon:(0,g.jsx)(l.XHJ,{}),onClick:function(){T(!0)}})})]}),sx:{marginBottom:15}})}),(0,g.jsx)(l.rjZ,{item:!0,xs:12,children:(0,g.jsx)(l.mQc,{options:[{tabConfig:{id:"members",label:"Members"},content:ue},{tabConfig:{id:"policies",label:"Policies"},content:de}],currentTabOrPath:H,onTabClick:W})})]})]})}},40228:function(e,n,t){var s=t(93433),i=t(29439),r=t(72791),l=t(26181),o=t.n(l),c=t(31776),a=t(82342),u=t(29945),d=t(21639),x=t(87995),f=t(81551),h=t(59114),p=t(80184);n.Z=function(e){var n=e.selectedUsers,t=e.setSelectedUsers,l=e.editMode,m=void 0!==l&&l,j=(0,f.TL)(),v=(0,r.useState)([]),g=(0,i.Z)(v,2),b=g[0],Z=g[1],y=(0,r.useState)(!1),S=(0,i.Z)(y,2),C=S[0],k=S[1],P=(0,r.useState)(""),L=(0,i.Z)(P,2),A=L[0],U=L[1],w=(0,r.useCallback)((function(){c.h.users.listUsers().then((function(e){var n=o()(e.data,"users",[]);n||(n=[]),Z(n.sort(d.LQ)),k(!1)})).catch((function(e){j((0,x.zb)((0,a.g)(e.error))),k(!1)}))}),[j]);(0,r.useEffect)((function(){k(!0)}),[]),(0,r.useEffect)((function(){C&&w()}),[C,w]);var G=n||[],F=b.filter((function(e){return e.accessKey.includes(A)}));return(0,p.jsx)(u.rjZ,{item:!0,xs:12,className:"inputItem",children:(0,p.jsxs)(u.xuv,{children:[C&&(0,p.jsx)(u.kod,{}),(null===b||void 0===b?void 0:b.length)>0?(0,p.jsxs)(r.Fragment,{children:[(0,p.jsx)(u.rjZ,{item:!0,xs:12,className:"inputItem",children:(0,p.jsx)(h.Z,{label:m?"Edit Members":"Assign Users",placeholder:"Filter Users",onChange:U,value:A})}),(0,p.jsx)(u.wQF,{columns:[{label:"Access Key",elementKey:"accessKey"}],onSelect:function(e){var n=e.target,i=n.value,r=n.checked,l=(0,s.Z)(G);return r?l.push(i):l=l.filter((function(e){return e!==i})),t(l),l},selectedItems:G,isLoading:C,records:F,entityName:"Users",idField:"accessKey",customPaperHeight:"200px"})]}):(0,p.jsx)(u.xuv,{sx:{textAlign:"center",padding:"10px 0"},children:"No Users to display"})]})})}},58400:function(e,n,t){var s=t(93433),i=t(29439),r=t(72791),l=t(29945),o=t(21639),c=t(59114),a=t(87995),u=t(81551),d=t(74616),x=t(78687),f=t(31776),h=t(80184);n.Z=function(e){var n=e.noTitle,t=void 0!==n&&n,p=(0,u.TL)(),m=(0,r.useState)([]),j=(0,i.Z)(m,2),v=j[0],g=j[1],b=(0,r.useState)(!1),Z=(0,i.Z)(b,2),y=Z[0],S=Z[1],C=(0,r.useState)(""),k=(0,i.Z)(C,2),P=k[0],L=k[1],A=(0,x.v9)((function(e){return e.createUser.selectedPolicies})),U=(0,r.useCallback)((function(){S(!0),f.h.policies.listPolicies().then((function(e){var n,t=null!==(n=e.data.policies)&&void 0!==n?n:[];S(!1),g(t.sort(o.g4))})).catch((function(e){S(!1),p((0,a.zb)(e))}))}),[p]);(0,r.useEffect)((function(){S(!0)}),[]),(0,r.useEffect)((function(){y&&U()}),[y,U]);var w=v.filter((function(e){return e.name.includes(P)}));return(0,h.jsxs)(l.rjZ,{item:!0,xs:12,className:"inputItem",children:[y&&(0,h.jsx)(l.kod,{}),v.length>0?(0,h.jsxs)(r.Fragment,{children:[(0,h.jsx)(l.rjZ,{item:!0,xs:12,className:"inputItem",children:(0,h.jsx)(c.Z,{placeholder:"Start typing to search for a Policy",onChange:function(e){L(e)},value:P,label:t?"":"Assign Policies"})}),(0,h.jsx)(l.wQF,{columns:[{label:"Policy",elementKey:"name"}],onSelect:function(e){var n=e.target,t=n.value,i=n.checked,r=(0,s.Z)(A);i?r.push(t):r=r.filter((function(e){return e!==t})),r=r.filter((function(e){return""!==e})),p((0,d.ue)(r))},selectedItems:A,isLoading:y,records:w,entityName:"Policies",idField:"name",customPaperHeight:"200px"})]}):(0,h.jsx)(l.xuv,{sx:{textAlign:"center",padding:"10px 0"},children:"No Policies Available"})]})}},39134:function(e,n,t){t.r(n);var s=t(29439),i=t(72791),r=t(26181),l=t.n(r),o=t(78687),c=t(29945),a=t(45248),u=t(87995),d=t(81551),x=t(23814),f=t(74616),h=t(56028),p=t(58400),m=t(81207),j=t(80184);n.default=function(e){var n=e.closeModalAndRefresh,t=e.selectedUser,r=e.selectedGroups,v=e.open,g=(0,d.TL)(),b=(0,i.useState)(!1),Z=(0,s.Z)(b,2),y=Z[0],S=Z[1],C=(0,i.useState)([]),k=(0,s.Z)(C,2),P=k[0],L=k[1],A=(0,i.useState)([]),U=(0,s.Z)(A,2),w=U[0],G=U[1],F=(0,o.v9)((function(e){return e.createUser.selectedPolicies}));(0,i.useEffect)((function(){if(v){if(1===(null===r||void 0===r?void 0:r.length))return void(1===(null===r||void 0===r?void 0:r.length)&&m.Z.invoke("GET","/api/v1/group/".concat((0,a.LL)(r[0]))).then((function(e){var n=l()(e,"policy","");L(n.split(",")),G(n.split(",")),g((0,f.ue)(n.split(",")))})).catch((function(e){g((0,u.zb)(e)),S(!1)})));var e=l()(t,"policy",[]);L(e),G(e),g((0,f.ue)(e))}}),[v,null===r||void 0===r?void 0:r.length,t]);var K=l()(t,"accessKey","");return(0,j.jsxs)(h.Z,{onClose:function(){n()},modalOpen:v,title:"Set Policies",children:[(0,j.jsxs)(c.ltY,{withBorders:!1,containerPadding:!1,children:[(1===(null===r||void 0===r?void 0:r.length)||null!=t)&&(0,j.jsxs)(i.Fragment,{children:[(0,j.jsx)(c.bSr,{label:"Selected ".concat(null!==r?"Group":"User"),sx:{width:"100%"},children:null!==r?r[0]:K}),(0,j.jsx)(c.bSr,{label:"Current Policy",sx:{width:"100%"},children:P.join(", ")})]}),r&&(null===r||void 0===r?void 0:r.length)>1&&(0,j.jsx)(c.bSr,{label:"Selected Groups",sx:{width:"100%"},children:r.join(", ")}),(0,j.jsx)(c.rjZ,{item:!0,xs:12,children:(0,j.jsx)(p.Z,{selectedPolicy:w})})]}),(0,j.jsxs)(c.rjZ,{item:!0,xs:12,sx:x.ID.modalButtonBar,children:[(0,j.jsx)(c.zxk,{id:"reset",type:"button",variant:"regular",onClick:function(){G(P),g((0,f.ue)(P))},label:"Reset"}),(0,j.jsx)(c.zxk,{id:"save",type:"button",variant:"callAction",color:"primary",disabled:y,onClick:function(){var e=null,s=null;null!==r?s=r:null!==t&&(e=[t.accessKey]||0),S(!0),m.Z.invoke("PUT","/api/v1/set-policy-multi",{name:F,groups:s,users:e}).then((function(){S(!1),n()})).catch((function(e){S(!1),g((0,u.zb)(e))}))},label:"Save"})]}),y&&(0,j.jsx)(c.rjZ,{item:!0,xs:12,children:(0,j.jsx)(c.kod,{})})]})}},21639:function(e,n,t){t.d(n,{KE:function(){return l},LQ:function(){return s},V2:function(){return r},g4:function(){return i}});var s=function(e,n){if(e.accessKey&&n.accessKey){if(e.accessKey>n.accessKey)return 1;if(e.accessKeyn.name?1:e.namen?1:en.policy?1:e.policy1?"s":""),confirmText:"Delete",isOpen:t,titleIcon:(0,x.jsx)(l.NvT,{}),isLoading:j,onConfirm:function(){var e,t=(0,s.Z)(n);try{for(t.s();!(e=t.n()).done;){var i=e.value;v("DELETE","/api/v1/group/".concat((0,o.LL)(i)))}}catch(r){t.e(r)}finally{t.f()}},onClose:function(){return f(!1)},confirmationContent:(0,x.jsxs)(r.Fragment,{children:["Are you sure you want to delete the following"," ",1===n.length?"":n.length," group",n.length>1?"s?":"?",g]})})}},22074:function(e,n,t){t.r(n),t.d(n,{default:function(){return L},formatPolicy:function(){return P}});var s=t(29439),i=t(72791),r=t(57689),l=t(29945),o=t(31776),c=t(82342),a=t(56087),u=t(38442),d=t(45248),x=t(87995),f=t(44690),h=t(74616),p=t(39134),m=t(23814),j=t(40228),v=t(56028),g=t(80184),b=function(e){var n=e.title,t=void 0===n?"":n,r=e.groupStatus,a=void 0===r?"enabled":r,u=e.preSelectedUsers,h=void 0===u?[]:u,p=e.selectedGroup,b=void 0===p?"":p,Z=e.open,y=e.onClose,S=(0,f.TL)(),C=(0,i.useState)(h),k=(0,s.Z)(C,2),P=k[0],L=k[1];return(0,g.jsxs)(v.Z,{modalOpen:Z,onClose:y,title:t,titleIcon:(0,g.jsx)(l.ZmA,{}),children:[(0,g.jsxs)(l.ltY,{withBorders:!1,containerPadding:!1,children:[(0,g.jsx)(l.bSr,{label:"Selected Group",sx:{width:"100%"},children:b}),(0,g.jsx)(j.Z,{selectedUsers:P,setSelectedUsers:L,editMode:!b})]}),(0,g.jsxs)(l.rjZ,{item:!0,xs:12,sx:m.ID.modalButtonBar,children:[(0,g.jsx)(l.zxk,{id:"reset-add-group-member",type:"button",variant:"regular",onClick:function(){L(h)},label:"Reset"}),(0,g.jsx)(l.zxk,{id:"save-add-group-member",type:"button",variant:"callAction",onClick:function(){o.h.group.updateGroup((0,d.LL)(b),{members:P,status:a}).then((function(){y()})).catch((function(e){y(),S((0,x.zb)((0,c.g)(e.error)))}))},label:"Save"})]})]})},Z=t(88896),y=t(59114),S=t(27454),C=t(99670),k=t(47974),P=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e.length<=0?[]:e.split(",")},L=function(){var e=(0,f.TL)(),n=(0,r.s0)(),t=(0,r.UO)(),m=(0,i.useState)({}),j=(0,s.Z)(m,2),v=j[0],L=j[1],A=(0,i.useState)(!1),U=(0,s.Z)(A,2),w=U[0],G=U[1],F=(0,i.useState)(!1),K=(0,s.Z)(F,2),M=K[0],E=K[1],I=(0,i.useState)(!1),z=(0,s.Z)(I,2),N=z[0],T=z[1],D=(0,i.useState)(""),O=(0,s.Z)(D,2),B=O[0],R=O[1],Q=(0,i.useState)("members"),_=(0,s.Z)(Q,2),H=_[0],W=_[1],X=(0,d.IO)(t.groupName||""),Y=v.members,J=void 0===Y?[]:Y,V=v.policy,q=void 0===V?"":V,$=v.status,ee=J.filter((function(e){return e.includes(B)})),ne=(0,u.F)(a.C3,a.iw,!0);(0,i.useEffect)((function(){e((0,x.Sc)("group_details"))}),[]),(0,i.useEffect)((function(){X&&ae()}),[X]);var te=P(q),se="enabled"===$,ie=J.length>0?"Edit Members":"Add Members",re=(0,u.F)(a.C3,a.k_),le=(0,u.F)(a.C3,a.kt,!0),oe=(0,u.F)(a.C3,a.UA,!0),ce=(0,u.F)(a.C3,a.GD,!0);function ae(){re&&o.h.group.groupInfo((0,d.LL)(X)).then((function(e){L(e.data)})).catch((function(n){e((0,x.zb)((0,c.g)(n.error))),L({})}))}var ue=(0,g.jsxs)(l.xuv,{onMouseMove:function(){e((0,x.Sc)("groups_members"))},children:[(0,g.jsx)(l.NZf,{separator:!0,sx:{marginBottom:15},actions:(0,g.jsxs)(l.xuv,{sx:{display:"flex",gap:10},children:[(0,g.jsx)(y.Z,{placeholder:"Search members",onChange:function(e){R(e)},value:B,sx:{maxWidth:280}}),(0,g.jsx)(u.s,{resource:a.C3,scopes:a.uH,errorProps:{disabled:!0},children:(0,g.jsx)(S.Z,{tooltip:le?ie:(0,a.MK)(a.vN,"edit Group membership"),children:(0,g.jsx)(l.zxk,{id:"add-user-group",label:ie,variant:"callAction",icon:(0,g.jsx)(l.dtP,{}),onClick:function(){E(!0)},disabled:!le})})})]}),children:"Members"}),(0,g.jsx)(l.rjZ,{item:!0,xs:12,children:(0,g.jsx)(u.s,{resource:a.C3,scopes:a.Rs,errorProps:{disabled:!0},children:(0,g.jsx)(S.Z,{tooltip:ne?"":(0,a.MK)(a.iw,"view User details"),children:(0,g.jsx)(l.wQF,{itemActions:[{type:"view",onClick:function(e){n("".concat(a.gA.USERS,"/").concat((0,d.LL)(e)))},isDisabled:!ne}],columns:[{label:"Access Key"}],selectedItems:[],isLoading:!1,records:ee,entityName:"Users"})})})})]}),de=(0,g.jsxs)(i.Fragment,{children:[(0,g.jsx)(l.xuv,{onMouseMove:function(){e((0,x.Sc)("groups_policies"))},children:(0,g.jsx)(l.NZf,{separator:!0,sx:{marginBottom:15},actions:(0,g.jsx)(S.Z,{tooltip:oe?"Set Policies":(0,a.MK)(a.UA,"assign Policies"),children:(0,g.jsx)(l.zxk,{id:"set-policies",label:"Set Policies",variant:"callAction",icon:(0,g.jsx)(l.v42,{}),onClick:function(){G(!0)},disabled:!oe})}),children:"Policies"})}),(0,g.jsx)(l.rjZ,{item:!0,xs:12,children:(0,g.jsx)(S.Z,{tooltip:ce?"":(0,a.MK)(a.GD,"view Policy details"),children:(0,g.jsx)(l.wQF,{itemActions:[{type:"view",onClick:function(e){n("".concat(a.gA.POLICIES,"/").concat((0,d.LL)(e)))},isDisabled:!ce}],columns:[{label:"Policy"}],isLoading:!1,records:te,entityName:"Policies"})})})]});return(0,g.jsxs)(i.Fragment,{children:[w?(0,g.jsx)(p.default,{open:w,selectedGroups:[X],selectedUser:null,closeModalAndRefresh:function(){G(!1),ae(),e((0,h.ue)([]))}}):null,M?(0,g.jsx)(b,{selectedGroup:X,onSaveClick:function(){},title:ie,groupStatus:$,preSelectedUsers:J,open:M,onClose:function(){E(!1),ae()}}):null,N&&(0,g.jsx)(Z.default,{deleteOpen:N,selectedGroups:[X],closeDeleteModalAndRefresh:function(e){T(!1),e&&n(a.gA.GROUPS)}}),(0,g.jsx)(k.Z,{label:(0,g.jsx)(i.Fragment,{children:(0,g.jsx)(l.hbI,{label:"Groups",onClick:function(){return n(a.gA.GROUPS)}})}),actions:(0,g.jsx)(C.Z,{})}),(0,g.jsxs)(l.Xgh,{children:[(0,g.jsx)(l.rjZ,{item:!0,xs:12,children:(0,g.jsx)(l.UHn,{icon:(0,g.jsx)(i.Fragment,{children:(0,g.jsx)(l.wws,{width:40})}),title:X,subTitle:null,bottomBorder:!0,actions:(0,g.jsxs)(l.xuv,{sx:{display:"flex",fontSize:14,alignItems:"center",gap:15},children:[(0,g.jsx)("span",{children:"Group Status:"}),(0,g.jsx)("span",{id:"group-status-label",style:{fontWeight:"bold"},children:se?"Enabled":"Disabled"}),(0,g.jsx)(S.Z,{tooltip:(0,u.F)(a.C3,a.xh,!0)?"":(0,a.MK)(a.xh,"enable or disable Groups"),children:(0,g.jsx)(u.s,{resource:a.C3,scopes:a.xh,errorProps:{disabled:!0},matchAll:!0,children:(0,g.jsx)(l.rsf,{indicatorLabels:["Enabled","Disabled"],checked:se,value:"group_enabled",id:"group-status",name:"group-status",onChange:function(){var n;n=!se,o.h.group.updateGroup((0,d.LL)(X),{members:J,status:n?"enabled":"disabled"}).then((function(){ae()})).catch((function(n){e((0,x.zb)((0,c.g)(n.error)))}))},switchOnly:!0})})}),(0,g.jsx)(S.Z,{tooltip:"Delete Group",children:(0,g.jsx)(l.zxk,{id:"delete-user-group",variant:"secondary",icon:(0,g.jsx)(l.XHJ,{}),onClick:function(){T(!0)}})})]}),sx:{marginBottom:15}})}),(0,g.jsx)(l.rjZ,{item:!0,xs:12,children:(0,g.jsx)(l.mQc,{options:[{tabConfig:{id:"members",label:"Members"},content:ue},{tabConfig:{id:"policies",label:"Policies"},content:de}],currentTabOrPath:H,onTabClick:W})})]})]})}},40228:function(e,n,t){var s=t(93433),i=t(29439),r=t(72791),l=t(26181),o=t.n(l),c=t(31776),a=t(82342),u=t(29945),d=t(21639),x=t(87995),f=t(44690),h=t(59114),p=t(80184);n.Z=function(e){var n=e.selectedUsers,t=e.setSelectedUsers,l=e.editMode,m=void 0!==l&&l,j=(0,f.TL)(),v=(0,r.useState)([]),g=(0,i.Z)(v,2),b=g[0],Z=g[1],y=(0,r.useState)(!1),S=(0,i.Z)(y,2),C=S[0],k=S[1],P=(0,r.useState)(""),L=(0,i.Z)(P,2),A=L[0],U=L[1],w=(0,r.useCallback)((function(){c.h.users.listUsers().then((function(e){var n=o()(e.data,"users",[]);n||(n=[]),Z(n.sort(d.LQ)),k(!1)})).catch((function(e){j((0,x.zb)((0,a.g)(e.error))),k(!1)}))}),[j]);(0,r.useEffect)((function(){k(!0)}),[]),(0,r.useEffect)((function(){C&&w()}),[C,w]);var G=n||[],F=b.filter((function(e){return e.accessKey.includes(A)}));return(0,p.jsx)(u.rjZ,{item:!0,xs:12,className:"inputItem",children:(0,p.jsxs)(u.xuv,{children:[C&&(0,p.jsx)(u.kod,{}),(null===b||void 0===b?void 0:b.length)>0?(0,p.jsxs)(r.Fragment,{children:[(0,p.jsx)(u.rjZ,{item:!0,xs:12,className:"inputItem",children:(0,p.jsx)(h.Z,{label:m?"Edit Members":"Assign Users",placeholder:"Filter Users",onChange:U,value:A})}),(0,p.jsx)(u.wQF,{columns:[{label:"Access Key",elementKey:"accessKey"}],onSelect:function(e){var n=e.target,i=n.value,r=n.checked,l=(0,s.Z)(G);return r?l.push(i):l=l.filter((function(e){return e!==i})),t(l),l},selectedItems:G,isLoading:C,records:F,entityName:"Users",idField:"accessKey",customPaperHeight:"200px"})]}):(0,p.jsx)(u.xuv,{sx:{textAlign:"center",padding:"10px 0"},children:"No Users to display"})]})})}},58400:function(e,n,t){var s=t(93433),i=t(29439),r=t(72791),l=t(29945),o=t(21639),c=t(59114),a=t(87995),u=t(44690),d=t(74616),x=t(78687),f=t(31776),h=t(80184);n.Z=function(e){var n=e.noTitle,t=void 0!==n&&n,p=(0,u.TL)(),m=(0,r.useState)([]),j=(0,i.Z)(m,2),v=j[0],g=j[1],b=(0,r.useState)(!1),Z=(0,i.Z)(b,2),y=Z[0],S=Z[1],C=(0,r.useState)(""),k=(0,i.Z)(C,2),P=k[0],L=k[1],A=(0,x.v9)((function(e){return e.createUser.selectedPolicies})),U=(0,r.useCallback)((function(){S(!0),f.h.policies.listPolicies().then((function(e){var n,t=null!==(n=e.data.policies)&&void 0!==n?n:[];S(!1),g(t.sort(o.g4))})).catch((function(e){S(!1),p((0,a.zb)(e))}))}),[p]);(0,r.useEffect)((function(){S(!0)}),[]),(0,r.useEffect)((function(){y&&U()}),[y,U]);var w=v.filter((function(e){return e.name.includes(P)}));return(0,h.jsxs)(l.rjZ,{item:!0,xs:12,className:"inputItem",children:[y&&(0,h.jsx)(l.kod,{}),v.length>0?(0,h.jsxs)(r.Fragment,{children:[(0,h.jsx)(l.rjZ,{item:!0,xs:12,className:"inputItem",children:(0,h.jsx)(c.Z,{placeholder:"Start typing to search for a Policy",onChange:function(e){L(e)},value:P,label:t?"":"Assign Policies"})}),(0,h.jsx)(l.wQF,{columns:[{label:"Policy",elementKey:"name"}],onSelect:function(e){var n=e.target,t=n.value,i=n.checked,r=(0,s.Z)(A);i?r.push(t):r=r.filter((function(e){return e!==t})),r=r.filter((function(e){return""!==e})),p((0,d.ue)(r))},selectedItems:A,isLoading:y,records:w,entityName:"Policies",idField:"name",customPaperHeight:"200px"})]}):(0,h.jsx)(l.xuv,{sx:{textAlign:"center",padding:"10px 0"},children:"No Policies Available"})]})}},39134:function(e,n,t){t.r(n);var s=t(29439),i=t(72791),r=t(26181),l=t.n(r),o=t(78687),c=t(29945),a=t(45248),u=t(87995),d=t(44690),x=t(23814),f=t(74616),h=t(56028),p=t(58400),m=t(81207),j=t(80184);n.default=function(e){var n=e.closeModalAndRefresh,t=e.selectedUser,r=e.selectedGroups,v=e.open,g=(0,d.TL)(),b=(0,i.useState)(!1),Z=(0,s.Z)(b,2),y=Z[0],S=Z[1],C=(0,i.useState)([]),k=(0,s.Z)(C,2),P=k[0],L=k[1],A=(0,i.useState)([]),U=(0,s.Z)(A,2),w=U[0],G=U[1],F=(0,o.v9)((function(e){return e.createUser.selectedPolicies}));(0,i.useEffect)((function(){if(v){if(1===(null===r||void 0===r?void 0:r.length))return void(1===(null===r||void 0===r?void 0:r.length)&&m.Z.invoke("GET","/api/v1/group/".concat((0,a.LL)(r[0]))).then((function(e){var n=l()(e,"policy","");L(n.split(",")),G(n.split(",")),g((0,f.ue)(n.split(",")))})).catch((function(e){g((0,u.zb)(e)),S(!1)})));var e=l()(t,"policy",[]);L(e),G(e),g((0,f.ue)(e))}}),[v,null===r||void 0===r?void 0:r.length,t]);var K=l()(t,"accessKey","");return(0,j.jsxs)(h.Z,{onClose:function(){n()},modalOpen:v,title:"Set Policies",children:[(0,j.jsxs)(c.ltY,{withBorders:!1,containerPadding:!1,children:[(1===(null===r||void 0===r?void 0:r.length)||null!=t)&&(0,j.jsxs)(i.Fragment,{children:[(0,j.jsx)(c.bSr,{label:"Selected ".concat(null!==r?"Group":"User"),sx:{width:"100%"},children:null!==r?r[0]:K}),(0,j.jsx)(c.bSr,{label:"Current Policy",sx:{width:"100%"},children:P.join(", ")})]}),r&&(null===r||void 0===r?void 0:r.length)>1&&(0,j.jsx)(c.bSr,{label:"Selected Groups",sx:{width:"100%"},children:r.join(", ")}),(0,j.jsx)(c.rjZ,{item:!0,xs:12,children:(0,j.jsx)(p.Z,{selectedPolicy:w})})]}),(0,j.jsxs)(c.rjZ,{item:!0,xs:12,sx:x.ID.modalButtonBar,children:[(0,j.jsx)(c.zxk,{id:"reset",type:"button",variant:"regular",onClick:function(){G(P),g((0,f.ue)(P))},label:"Reset"}),(0,j.jsx)(c.zxk,{id:"save",type:"button",variant:"callAction",color:"primary",disabled:y,onClick:function(){var e=null,s=null;null!==r?s=r:null!==t&&(e=[t.accessKey]||0),S(!0),m.Z.invoke("PUT","/api/v1/set-policy-multi",{name:F,groups:s,users:e}).then((function(){S(!1),n()})).catch((function(e){S(!1),g((0,u.zb)(e))}))},label:"Save"})]}),y&&(0,j.jsx)(c.rjZ,{item:!0,xs:12,children:(0,j.jsx)(c.kod,{})})]})}},21639:function(e,n,t){t.d(n,{KE:function(){return l},LQ:function(){return s},V2:function(){return r},g4:function(){return i}});var s=function(e,n){if(e.accessKey&&n.accessKey){if(e.accessKey>n.accessKey)return 1;if(e.accessKeyn.name?1:e.namen?1:en.policy?1:e.policy.\n\nimport React, { Fragment } from \"react\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport useApi from \"../Common/Hooks/useApi\";\n\ninterface IDeleteGroup {\n selectedGroups: string[];\n deleteOpen: boolean;\n closeDeleteModalAndRefresh: any;\n}\n\nconst DeleteGroup = ({\n selectedGroups,\n deleteOpen,\n closeDeleteModalAndRefresh,\n}: IDeleteGroup) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n closeDeleteModalAndRefresh(false);\n };\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n if (!selectedGroups) {\n return null;\n }\n const onDeleteGroups = () => {\n for (let group of selectedGroups) {\n invokeDeleteApi(\"DELETE\", `/api/v1/group/${encodeURLString(group)}`);\n }\n };\n\n const renderGroups = selectedGroups.map((group) => (\n
\n {group}\n
\n ));\n\n return (\n 1 ? \"s\" : \"\"}`}\n confirmText={\"Delete\"}\n isOpen={deleteOpen}\n titleIcon={}\n isLoading={deleteLoading}\n onConfirm={onDeleteGroups}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the following{\" \"}\n {selectedGroups.length === 1 ? \"\" : selectedGroups.length} group\n {selectedGroups.length > 1 ? \"s?\" : \"?\"}\n {renderGroups}\n \n }\n />\n );\n};\n\nexport default DeleteGroup;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { AddMembersToGroupIcon, Button, FormLayout, Grid, ReadBox } from \"mds\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport UsersSelectors from \"./UsersSelectors\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\n\ntype UserPickerModalProps = {\n title?: string;\n preSelectedUsers?: string[];\n selectedGroup?: string;\n open: boolean;\n onClose: () => void;\n onSaveClick: () => void;\n groupStatus?: string;\n};\n\nconst AddGroupMember = ({\n title = \"\",\n groupStatus = \"enabled\",\n preSelectedUsers = [],\n selectedGroup = \"\",\n open,\n onClose,\n}: UserPickerModalProps) => {\n const dispatch = useAppDispatch();\n const [selectedUsers, setSelectedUsers] = useState(preSelectedUsers);\n\n function addMembersToGroup() {\n return api.group\n .updateGroup(encodeURLString(selectedGroup), {\n members: selectedUsers,\n status: groupStatus,\n })\n .then(() => {\n onClose();\n })\n .catch((err) => {\n onClose();\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n\n return (\n }\n >\n \n \n {selectedGroup}\n \n \n \n \n {\n setSelectedUsers(preSelectedUsers);\n }}\n label={\"Reset\"}\n />\n\n {\n addMembersToGroup();\n }}\n label={\"Save\"}\n />\n \n \n );\n};\n\nexport default AddGroupMember;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport {\n AddIcon,\n BackLink,\n Box,\n Button,\n DataTable,\n Grid,\n GroupsIcon,\n IAMPoliciesIcon,\n PageLayout,\n ScreenTitle,\n SectionTitle,\n Switch,\n Tabs,\n TrashIcon,\n} from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { Group } from \"api/consoleApi\";\nimport {\n addUserToGroupPermissions,\n CONSOLE_UI_RESOURCE,\n createGroupPermissions,\n editGroupMembersPermissions,\n enableDisableGroupPermissions,\n getGroupPermissions,\n IAM_PAGES,\n listUsersPermissions,\n permissionTooltipHelper,\n setGroupPoliciesPermissions,\n viewPolicyPermissions,\n viewUserPermissions,\n} from \"../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../common/SecureComponent\";\nimport { decodeURLString, encodeURLString } from \"../../../common/utils\";\nimport { setHelpName, setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { setSelectedPolicies } from \"../Users/AddUsersSlice\";\nimport SetPolicy from \"../Policies/SetPolicy\";\nimport AddGroupMember from \"./AddGroupMember\";\nimport DeleteGroup from \"./DeleteGroup\";\nimport SearchBox from \"../Common/SearchBox\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\n\nexport const formatPolicy = (policy: string = \"\"): string[] => {\n if (policy.length <= 0) return [];\n return policy.split(\",\");\n};\n\nconst GroupsDetails = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const params = useParams();\n\n const [groupDetails, setGroupDetails] = useState({});\n const [policyOpen, setPolicyOpen] = useState(false);\n const [usersOpen, setUsersOpen] = useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [memberFilter, setMemberFilter] = useState(\"\");\n const [currentTab, setCurrentTab] = useState(\"members\");\n\n const groupName = decodeURLString(params.groupName || \"\");\n\n const { members = [], policy = \"\", status: groupEnabled } = groupDetails;\n\n const filteredMembers = members.filter((elementItem) =>\n elementItem.includes(memberFilter),\n );\n\n const viewUser = hasPermission(\n CONSOLE_UI_RESOURCE,\n viewUserPermissions,\n true,\n );\n\n useEffect(() => {\n dispatch(setHelpName(\"group_details\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (groupName) {\n fetchGroupInfo();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [groupName]);\n\n const groupPolicies = formatPolicy(policy);\n const isGroupEnabled = groupEnabled === \"enabled\";\n const memberActionText = members.length > 0 ? \"Edit Members\" : \"Add Members\";\n\n const getGroupDetails = hasPermission(\n CONSOLE_UI_RESOURCE,\n getGroupPermissions,\n );\n\n const canEditGroupMembers = hasPermission(\n CONSOLE_UI_RESOURCE,\n editGroupMembersPermissions,\n true,\n );\n\n const canSetPolicies = hasPermission(\n CONSOLE_UI_RESOURCE,\n setGroupPoliciesPermissions,\n true,\n );\n\n const canViewPolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n viewPolicyPermissions,\n true,\n );\n\n function fetchGroupInfo() {\n if (getGroupDetails) {\n api.group\n .groupInfo(encodeURLString(groupName))\n .then((res) => {\n setGroupDetails(res.data);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setGroupDetails({});\n });\n }\n }\n\n function toggleGroupStatus(nextStatus: boolean) {\n return api.group\n .updateGroup(encodeURLString(groupName), {\n members: members,\n status: nextStatus ? \"enabled\" : \"disabled\",\n })\n .then(() => {\n fetchGroupInfo();\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n\n const groupsTabContent = (\n {\n dispatch(setHelpName(\"groups_members\"));\n }}\n >\n \n {\n setMemberFilter(searchText);\n }}\n value={memberFilter}\n sx={{\n maxWidth: 280,\n }}\n />\n \n \n }\n onClick={() => {\n setUsersOpen(true);\n }}\n disabled={!canEditGroupMembers}\n />\n \n \n \n }\n >\n Members\n \n \n \n \n {\n navigate(`${IAM_PAGES.USERS}/${encodeURLString(userName)}`);\n },\n isDisabled: !viewUser,\n },\n ]}\n columns={[{ label: \"Access Key\" }]}\n selectedItems={[]}\n isLoading={false}\n records={filteredMembers}\n entityName=\"Users\"\n />\n \n \n \n \n );\n\n const policiesTabContent = (\n \n {\n dispatch(setHelpName(\"groups_policies\"));\n }}\n >\n \n }\n onClick={() => {\n setPolicyOpen(true);\n }}\n disabled={!canSetPolicies}\n />\n \n }\n >\n Policies\n \n \n \n \n {\n navigate(`${IAM_PAGES.POLICIES}/${encodeURLString(policy)}`);\n },\n isDisabled: !canViewPolicy,\n },\n ]}\n columns={[{ label: \"Policy\" }]}\n isLoading={false}\n records={groupPolicies}\n entityName=\"Policies\"\n />\n \n \n \n );\n\n return (\n \n {policyOpen ? (\n {\n setPolicyOpen(false);\n fetchGroupInfo();\n dispatch(setSelectedPolicies([]));\n }}\n />\n ) : null}\n\n {usersOpen ? (\n {}}\n title={memberActionText}\n groupStatus={groupEnabled}\n preSelectedUsers={members}\n open={usersOpen}\n onClose={() => {\n setUsersOpen(false);\n fetchGroupInfo();\n }}\n />\n ) : null}\n\n {deleteOpen && (\n {\n setDeleteOpen(false);\n if (isDelSuccess) {\n navigate(IAM_PAGES.GROUPS);\n }\n }}\n />\n )}\n \n navigate(IAM_PAGES.GROUPS)}\n />\n \n }\n actions={}\n />\n \n \n \n \n \n }\n title={groupName}\n subTitle={null}\n bottomBorder\n actions={\n \n Group Status:\n \n {isGroupEnabled ? \"Enabled\" : \"Disabled\"}\n \n \n \n {\n toggleGroupStatus(!isGroupEnabled);\n }}\n switchOnly\n />\n \n \n\n \n }\n onClick={() => {\n setDeleteOpen(true);\n }}\n />\n \n \n }\n sx={{ marginBottom: 15 }}\n />\n \n\n \n \n \n \n \n );\n};\n\nexport default GroupsDetails;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useCallback, useEffect, useState, Fragment } from \"react\";\nimport get from \"lodash/get\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { Box, DataTable, Grid, ProgressBar } from \"mds\";\n\nimport { usersSort } from \"../../../utils/sortFunctions\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport SearchBox from \"../Common/SearchBox\";\n\ninterface IGroupsProps {\n selectedUsers: string[];\n setSelectedUsers: any;\n editMode?: boolean;\n}\n\nconst UsersSelectors = ({\n selectedUsers,\n setSelectedUsers,\n editMode = false,\n}: IGroupsProps) => {\n const dispatch = useAppDispatch();\n //Local States\n const [records, setRecords] = useState([]);\n const [loading, isLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n\n const fetchUsers = useCallback(() => {\n api.users\n .listUsers()\n .then((res) => {\n let users = get(res.data, \"users\", []);\n\n if (!users) {\n users = [];\n }\n\n setRecords(users.sort(usersSort));\n isLoading(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n isLoading(false);\n });\n }, [dispatch]);\n\n //Effects\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n if (loading) {\n fetchUsers();\n }\n }, [loading, fetchUsers]);\n\n const selUsers = !selectedUsers ? [] : selectedUsers;\n\n //Fetch Actions\n const selectionChanged = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selUsers]; // We clone the selectedGroups array\n\n if (checked) {\n // If the user has checked this field we need to push this to selectedGroupsList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedUsers(elements);\n\n return elements;\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.accessKey.includes(filter),\n );\n\n return (\n \n \n {loading && }\n {records?.length > 0 ? (\n \n \n \n \n \n \n ) : (\n \n No Users to display\n \n )}\n \n \n );\n};\n\nexport default UsersSelectors;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\n\nimport { Box, DataTable, Grid, ProgressBar } from \"mds\";\nimport { policySort } from \"../../../utils/sortFunctions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setSelectedPolicies } from \"../Users/AddUsersSlice\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"../../../api\";\n\ninterface ISelectPolicyProps {\n selectedPolicy?: string[];\n noTitle?: boolean;\n}\n\nconst PolicySelectors = ({ noTitle = false }: ISelectPolicyProps) => {\n const dispatch = useAppDispatch();\n // Local State\n const [records, setRecords] = useState([]);\n const [loading, isLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n\n const currentPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n\n const fetchPolicies = useCallback(() => {\n isLoading(true);\n\n api.policies\n .listPolicies()\n .then((res) => {\n const policies = res.data.policies ?? [];\n isLoading(false);\n setRecords(policies.sort(policySort));\n })\n .catch((err: ErrorResponseHandler) => {\n isLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }, [dispatch]);\n\n //Effects\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n if (loading) {\n fetchPolicies();\n }\n }, [loading, fetchPolicies]);\n\n const selectionChanged = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...currentPolicies]; // We clone the checkedUsers array\n\n if (checked) {\n // If the user has checked this field we need to push this to checkedUsersList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n // remove empty values\n elements = elements.filter((element) => element !== \"\");\n\n dispatch(setSelectedPolicies(elements));\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.name.includes(filter),\n );\n\n return (\n \n {loading && }\n {records.length > 0 ? (\n \n \n {\n setFilter(value);\n }}\n value={filter}\n label={!noTitle ? \"Assign Policies\" : \"\"}\n />\n \n\n \n \n ) : (\n \n No Policies Available\n \n )}\n \n );\n};\n\nexport default PolicySelectors;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { Button, FormLayout, ReadBox, Grid, ProgressBar } from \"mds\";\n\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { User } from \"../Users/types\";\nimport { setSelectedPolicies } from \"../Users/AddUsersSlice\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport PolicySelectors from \"./PolicySelectors\";\nimport api from \"../../../common/api\";\n\ninterface ISetPolicyProps {\n closeModalAndRefresh: () => void;\n selectedUser: User | null;\n selectedGroups: string[] | null;\n open: boolean;\n}\n\nconst SetPolicy = ({\n closeModalAndRefresh,\n selectedUser,\n selectedGroups,\n open,\n}: ISetPolicyProps) => {\n const dispatch = useAppDispatch();\n //Local States\n const [loading, setLoading] = useState(false);\n const [actualPolicy, setActualPolicy] = useState([]);\n const [selectedPolicy, setSelectedPolicy] = useState([]);\n const currentPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n const setPolicyAction = () => {\n let users = null;\n let groups = null;\n if (selectedGroups !== null) {\n groups = selectedGroups;\n } else {\n if (selectedUser !== null) {\n users = [selectedUser.accessKey] || [\" \"];\n }\n }\n\n setLoading(true);\n\n api\n .invoke(\"PUT\", `/api/v1/set-policy-multi`, {\n name: currentPolicies,\n groups: groups,\n users: users,\n })\n .then(() => {\n setLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n };\n\n const fetchGroupInformation = () => {\n if (selectedGroups?.length === 1) {\n api\n .invoke(\"GET\", `/api/v1/group/${encodeURLString(selectedGroups[0])}`)\n .then((res: any) => {\n const groupPolicy: String = get(res, \"policy\", \"\");\n setActualPolicy(groupPolicy.split(\",\"));\n setSelectedPolicy(groupPolicy.split(\",\"));\n dispatch(setSelectedPolicies(groupPolicy.split(\",\")));\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(err));\n setLoading(false);\n });\n }\n };\n\n const resetSelection = () => {\n setSelectedPolicy(actualPolicy);\n dispatch(setSelectedPolicies(actualPolicy));\n };\n\n useEffect(() => {\n if (open) {\n if (selectedGroups?.length === 1) {\n fetchGroupInformation();\n return;\n }\n\n const userPolicy: string[] = get(selectedUser, \"policy\", []);\n setActualPolicy(userPolicy);\n setSelectedPolicy(userPolicy);\n dispatch(setSelectedPolicies(userPolicy));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, selectedGroups?.length, selectedUser]);\n\n const userName = get(selectedUser, \"accessKey\", \"\");\n\n return (\n {\n closeModalAndRefresh();\n }}\n modalOpen={open}\n title=\"Set Policies\"\n >\n \n {(selectedGroups?.length === 1 || selectedUser != null) && (\n \n \n {selectedGroups !== null ? selectedGroups[0] : userName}\n \n \n {actualPolicy.join(\", \")}\n \n \n )}\n {selectedGroups && selectedGroups?.length > 1 && (\n \n {selectedGroups.join(\", \")}\n \n )}\n \n \n \n \n \n \n \n \n {loading && (\n \n \n \n )}\n \n );\n};\n\nexport default SetPolicy;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Policy, User } from \"api/consoleApi\";\n\ninterface policyDetailsInterface {\n policy: string;\n}\n\nexport const usersSort = (a: User, b: User) => {\n if (a.accessKey && b.accessKey) {\n if (a.accessKey > b.accessKey) {\n return 1;\n }\n if (a.accessKey < b.accessKey) {\n return -1;\n }\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policySort = (a: Policy, b: Policy) => {\n if (a.name! > b.name!) {\n return 1;\n }\n if (a.name! < b.name!) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const stringSort = (a: string, b: string) => {\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policyDetailsSort = (\n a: policyDetailsInterface,\n b: policyDetailsInterface,\n) => {\n if (a.policy > b.policy) {\n return 1;\n }\n if (a.policy < b.policy) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n"],"names":["_ref","selectedGroups","deleteOpen","closeDeleteModalAndRefresh","dispatch","useAppDispatch","_useApi","useApi","err","setErrorSnackMessage","_useApi2","_slicedToArray","deleteLoading","invokeDeleteApi","renderGroups","map","group","_jsx","children","ConfirmDialog","title","concat","length","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","_step","_iterator","_createForOfIteratorHelper","s","n","done","value","encodeURLString","e","f","onClose","confirmationContent","_jsxs","Fragment","_ref$title","_ref$groupStatus","groupStatus","_ref$preSelectedUsers","preSelectedUsers","_ref$selectedGroup","selectedGroup","open","_useState","useState","_useState2","selectedUsers","setSelectedUsers","ModalWrapper","modalOpen","AddMembersToGroupIcon","FormLayout","withBorders","containerPadding","ReadBox","label","sx","width","UsersSelectors","editMode","Grid","item","xs","modalStyleUtils","modalButtonBar","Button","id","type","variant","onClick","api","updateGroup","members","status","then","catch","setModalErrorSnackMessage","errorToHandler","error","formatPolicy","policy","arguments","undefined","split","navigate","useNavigate","params","useParams","groupDetails","setGroupDetails","_useState3","_useState4","policyOpen","setPolicyOpen","_useState5","_useState6","usersOpen","setUsersOpen","_useState7","_useState8","setDeleteOpen","_useState9","_useState10","memberFilter","setMemberFilter","_useState11","_useState12","currentTab","setCurrentTab","groupName","decodeURLString","_groupDetails$members","_groupDetails$policy","groupEnabled","filteredMembers","filter","elementItem","includes","viewUser","hasPermission","CONSOLE_UI_RESOURCE","viewUserPermissions","useEffect","setHelpName","fetchGroupInfo","groupPolicies","isGroupEnabled","memberActionText","getGroupDetails","getGroupPermissions","canEditGroupMembers","editGroupMembersPermissions","canSetPolicies","setGroupPoliciesPermissions","canViewPolicy","viewPolicyPermissions","groupInfo","res","data","groupsTabContent","Box","onMouseMove","SectionTitle","separator","marginBottom","actions","display","gap","SearchBox","placeholder","onChange","searchText","maxWidth","SecureComponent","resource","scopes","addUserToGroupPermissions","errorProps","disabled","TooltipWrapper","tooltip","permissionTooltipHelper","createGroupPermissions","icon","AddIcon","listUsersPermissions","DataTable","itemActions","userName","IAM_PAGES","USERS","isDisabled","columns","selectedItems","records","entityName","policiesTabContent","IAMPoliciesIcon","POLICIES","SetPolicy","selectedUser","closeModalAndRefresh","setSelectedPolicies","AddGroupMember","onSaveClick","DeleteGroup","isDelSuccess","GROUPS","PageHeaderWrapper","BackLink","HelpMenu","PageLayout","ScreenTitle","GroupsIcon","subTitle","bottomBorder","fontSize","alignItems","style","fontWeight","enableDisableGroupPermissions","matchAll","Switch","indicatorLabels","checked","name","nextStatus","switchOnly","TrashIcon","Tabs","options","tabConfig","content","currentTabOrPath","onTabClick","_ref$editMode","setRecords","loading","setFilter","fetchUsers","useCallback","users","listUsers","get","sort","usersSort","selUsers","filteredRecords","accessKey","className","ProgressBar","elementKey","onSelect","targetD","target","elements","_toConsumableArray","push","element","idField","customPaperHeight","textAlign","padding","_ref$noTitle","noTitle","currentPolicies","useSelector","state","createUser","selectedPolicies","fetchPolicies","policies","listPolicies","_res$data$policies","policySort","setLoading","actualPolicy","setActualPolicy","selectedPolicy","setSelectedPolicy","invoke","groupPolicy","userPolicy","join","PolicySelectors","color","groups","a","b","stringSort","policyDetailsSort"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/2074.1f0d525f.chunk.js","mappings":"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","sources":["screens/Console/Groups/DeleteGroup.tsx","screens/Console/Groups/AddGroupMember.tsx","screens/Console/Groups/GroupsDetails.tsx","screens/Console/Groups/UsersSelectors.tsx","screens/Console/Policies/PolicySelectors.tsx","screens/Console/Policies/SetPolicy.tsx","utils/sortFunctions.ts"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport useApi from \"../Common/Hooks/useApi\";\n\ninterface IDeleteGroup {\n selectedGroups: string[];\n deleteOpen: boolean;\n closeDeleteModalAndRefresh: any;\n}\n\nconst DeleteGroup = ({\n selectedGroups,\n deleteOpen,\n closeDeleteModalAndRefresh,\n}: IDeleteGroup) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n closeDeleteModalAndRefresh(false);\n };\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n if (!selectedGroups) {\n return null;\n }\n const onDeleteGroups = () => {\n for (let group of selectedGroups) {\n invokeDeleteApi(\"DELETE\", `/api/v1/group/${encodeURLString(group)}`);\n }\n };\n\n const renderGroups = selectedGroups.map((group) => (\n
\n {group}\n
\n ));\n\n return (\n 1 ? \"s\" : \"\"}`}\n confirmText={\"Delete\"}\n isOpen={deleteOpen}\n titleIcon={}\n isLoading={deleteLoading}\n onConfirm={onDeleteGroups}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the following{\" \"}\n {selectedGroups.length === 1 ? \"\" : selectedGroups.length} group\n {selectedGroups.length > 1 ? \"s?\" : \"?\"}\n {renderGroups}\n \n }\n />\n );\n};\n\nexport default DeleteGroup;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { AddMembersToGroupIcon, Button, FormLayout, Grid, ReadBox } from \"mds\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport UsersSelectors from \"./UsersSelectors\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\n\ntype UserPickerModalProps = {\n title?: string;\n preSelectedUsers?: string[];\n selectedGroup?: string;\n open: boolean;\n onClose: () => void;\n onSaveClick: () => void;\n groupStatus?: string;\n};\n\nconst AddGroupMember = ({\n title = \"\",\n groupStatus = \"enabled\",\n preSelectedUsers = [],\n selectedGroup = \"\",\n open,\n onClose,\n}: UserPickerModalProps) => {\n const dispatch = useAppDispatch();\n const [selectedUsers, setSelectedUsers] = useState(preSelectedUsers);\n\n function addMembersToGroup() {\n return api.group\n .updateGroup(encodeURLString(selectedGroup), {\n members: selectedUsers,\n status: groupStatus,\n })\n .then(() => {\n onClose();\n })\n .catch((err) => {\n onClose();\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n\n return (\n }\n >\n \n \n {selectedGroup}\n \n \n \n \n {\n setSelectedUsers(preSelectedUsers);\n }}\n label={\"Reset\"}\n />\n\n {\n addMembersToGroup();\n }}\n label={\"Save\"}\n />\n \n \n );\n};\n\nexport default AddGroupMember;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport {\n AddIcon,\n BackLink,\n Box,\n Button,\n DataTable,\n Grid,\n GroupsIcon,\n IAMPoliciesIcon,\n PageLayout,\n ScreenTitle,\n SectionTitle,\n Switch,\n Tabs,\n TrashIcon,\n} from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { Group } from \"api/consoleApi\";\nimport {\n addUserToGroupPermissions,\n CONSOLE_UI_RESOURCE,\n createGroupPermissions,\n editGroupMembersPermissions,\n enableDisableGroupPermissions,\n getGroupPermissions,\n IAM_PAGES,\n listUsersPermissions,\n permissionTooltipHelper,\n setGroupPoliciesPermissions,\n viewPolicyPermissions,\n viewUserPermissions,\n} from \"../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../common/SecureComponent\";\nimport { decodeURLString, encodeURLString } from \"../../../common/utils\";\nimport { setHelpName, setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { setSelectedPolicies } from \"../Users/AddUsersSlice\";\nimport SetPolicy from \"../Policies/SetPolicy\";\nimport AddGroupMember from \"./AddGroupMember\";\nimport DeleteGroup from \"./DeleteGroup\";\nimport SearchBox from \"../Common/SearchBox\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\n\nexport const formatPolicy = (policy: string = \"\"): string[] => {\n if (policy.length <= 0) return [];\n return policy.split(\",\");\n};\n\nconst GroupsDetails = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const params = useParams();\n\n const [groupDetails, setGroupDetails] = useState({});\n const [policyOpen, setPolicyOpen] = useState(false);\n const [usersOpen, setUsersOpen] = useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [memberFilter, setMemberFilter] = useState(\"\");\n const [currentTab, setCurrentTab] = useState(\"members\");\n\n const groupName = decodeURLString(params.groupName || \"\");\n\n const { members = [], policy = \"\", status: groupEnabled } = groupDetails;\n\n const filteredMembers = members.filter((elementItem) =>\n elementItem.includes(memberFilter),\n );\n\n const viewUser = hasPermission(\n CONSOLE_UI_RESOURCE,\n viewUserPermissions,\n true,\n );\n\n useEffect(() => {\n dispatch(setHelpName(\"group_details\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (groupName) {\n fetchGroupInfo();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [groupName]);\n\n const groupPolicies = formatPolicy(policy);\n const isGroupEnabled = groupEnabled === \"enabled\";\n const memberActionText = members.length > 0 ? \"Edit Members\" : \"Add Members\";\n\n const getGroupDetails = hasPermission(\n CONSOLE_UI_RESOURCE,\n getGroupPermissions,\n );\n\n const canEditGroupMembers = hasPermission(\n CONSOLE_UI_RESOURCE,\n editGroupMembersPermissions,\n true,\n );\n\n const canSetPolicies = hasPermission(\n CONSOLE_UI_RESOURCE,\n setGroupPoliciesPermissions,\n true,\n );\n\n const canViewPolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n viewPolicyPermissions,\n true,\n );\n\n function fetchGroupInfo() {\n if (getGroupDetails) {\n api.group\n .groupInfo(encodeURLString(groupName))\n .then((res) => {\n setGroupDetails(res.data);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setGroupDetails({});\n });\n }\n }\n\n function toggleGroupStatus(nextStatus: boolean) {\n return api.group\n .updateGroup(encodeURLString(groupName), {\n members: members,\n status: nextStatus ? \"enabled\" : \"disabled\",\n })\n .then(() => {\n fetchGroupInfo();\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n\n const groupsTabContent = (\n {\n dispatch(setHelpName(\"groups_members\"));\n }}\n >\n \n {\n setMemberFilter(searchText);\n }}\n value={memberFilter}\n sx={{\n maxWidth: 280,\n }}\n />\n \n \n }\n onClick={() => {\n setUsersOpen(true);\n }}\n disabled={!canEditGroupMembers}\n />\n \n \n \n }\n >\n Members\n \n \n \n \n {\n navigate(`${IAM_PAGES.USERS}/${encodeURLString(userName)}`);\n },\n isDisabled: !viewUser,\n },\n ]}\n columns={[{ label: \"Access Key\" }]}\n selectedItems={[]}\n isLoading={false}\n records={filteredMembers}\n entityName=\"Users\"\n />\n \n \n \n \n );\n\n const policiesTabContent = (\n \n {\n dispatch(setHelpName(\"groups_policies\"));\n }}\n >\n \n }\n onClick={() => {\n setPolicyOpen(true);\n }}\n disabled={!canSetPolicies}\n />\n \n }\n >\n Policies\n \n \n \n \n {\n navigate(`${IAM_PAGES.POLICIES}/${encodeURLString(policy)}`);\n },\n isDisabled: !canViewPolicy,\n },\n ]}\n columns={[{ label: \"Policy\" }]}\n isLoading={false}\n records={groupPolicies}\n entityName=\"Policies\"\n />\n \n \n \n );\n\n return (\n \n {policyOpen ? (\n {\n setPolicyOpen(false);\n fetchGroupInfo();\n dispatch(setSelectedPolicies([]));\n }}\n />\n ) : null}\n\n {usersOpen ? (\n {}}\n title={memberActionText}\n groupStatus={groupEnabled}\n preSelectedUsers={members}\n open={usersOpen}\n onClose={() => {\n setUsersOpen(false);\n fetchGroupInfo();\n }}\n />\n ) : null}\n\n {deleteOpen && (\n {\n setDeleteOpen(false);\n if (isDelSuccess) {\n navigate(IAM_PAGES.GROUPS);\n }\n }}\n />\n )}\n \n navigate(IAM_PAGES.GROUPS)}\n />\n \n }\n actions={}\n />\n \n \n \n \n \n }\n title={groupName}\n subTitle={null}\n bottomBorder\n actions={\n \n Group Status:\n \n {isGroupEnabled ? \"Enabled\" : \"Disabled\"}\n \n \n \n {\n toggleGroupStatus(!isGroupEnabled);\n }}\n switchOnly\n />\n \n \n\n \n }\n onClick={() => {\n setDeleteOpen(true);\n }}\n />\n \n \n }\n sx={{ marginBottom: 15 }}\n />\n \n\n \n \n \n \n \n );\n};\n\nexport default GroupsDetails;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useCallback, useEffect, useState, Fragment } from \"react\";\nimport get from \"lodash/get\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { Box, DataTable, Grid, ProgressBar } from \"mds\";\n\nimport { usersSort } from \"../../../utils/sortFunctions\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport SearchBox from \"../Common/SearchBox\";\n\ninterface IGroupsProps {\n selectedUsers: string[];\n setSelectedUsers: any;\n editMode?: boolean;\n}\n\nconst UsersSelectors = ({\n selectedUsers,\n setSelectedUsers,\n editMode = false,\n}: IGroupsProps) => {\n const dispatch = useAppDispatch();\n //Local States\n const [records, setRecords] = useState([]);\n const [loading, isLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n\n const fetchUsers = useCallback(() => {\n api.users\n .listUsers()\n .then((res) => {\n let users = get(res.data, \"users\", []);\n\n if (!users) {\n users = [];\n }\n\n setRecords(users.sort(usersSort));\n isLoading(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n isLoading(false);\n });\n }, [dispatch]);\n\n //Effects\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n if (loading) {\n fetchUsers();\n }\n }, [loading, fetchUsers]);\n\n const selUsers = !selectedUsers ? [] : selectedUsers;\n\n //Fetch Actions\n const selectionChanged = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selUsers]; // We clone the selectedGroups array\n\n if (checked) {\n // If the user has checked this field we need to push this to selectedGroupsList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedUsers(elements);\n\n return elements;\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.accessKey.includes(filter),\n );\n\n return (\n \n \n {loading && }\n {records?.length > 0 ? (\n \n \n \n \n \n \n ) : (\n \n No Users to display\n \n )}\n \n \n );\n};\n\nexport default UsersSelectors;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\n\nimport { Box, DataTable, Grid, ProgressBar } from \"mds\";\nimport { policySort } from \"../../../utils/sortFunctions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setSelectedPolicies } from \"../Users/AddUsersSlice\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"../../../api\";\n\ninterface ISelectPolicyProps {\n selectedPolicy?: string[];\n noTitle?: boolean;\n}\n\nconst PolicySelectors = ({ noTitle = false }: ISelectPolicyProps) => {\n const dispatch = useAppDispatch();\n // Local State\n const [records, setRecords] = useState([]);\n const [loading, isLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n\n const currentPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n\n const fetchPolicies = useCallback(() => {\n isLoading(true);\n\n api.policies\n .listPolicies()\n .then((res) => {\n const policies = res.data.policies ?? [];\n isLoading(false);\n setRecords(policies.sort(policySort));\n })\n .catch((err: ErrorResponseHandler) => {\n isLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }, [dispatch]);\n\n //Effects\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n if (loading) {\n fetchPolicies();\n }\n }, [loading, fetchPolicies]);\n\n const selectionChanged = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...currentPolicies]; // We clone the checkedUsers array\n\n if (checked) {\n // If the user has checked this field we need to push this to checkedUsersList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n // remove empty values\n elements = elements.filter((element) => element !== \"\");\n\n dispatch(setSelectedPolicies(elements));\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.name.includes(filter),\n );\n\n return (\n \n {loading && }\n {records.length > 0 ? (\n \n \n {\n setFilter(value);\n }}\n value={filter}\n label={!noTitle ? \"Assign Policies\" : \"\"}\n />\n \n\n \n \n ) : (\n \n No Policies Available\n \n )}\n \n );\n};\n\nexport default PolicySelectors;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { Button, FormLayout, ReadBox, Grid, ProgressBar } from \"mds\";\n\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { User } from \"../Users/types\";\nimport { setSelectedPolicies } from \"../Users/AddUsersSlice\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport PolicySelectors from \"./PolicySelectors\";\nimport api from \"../../../common/api\";\n\ninterface ISetPolicyProps {\n closeModalAndRefresh: () => void;\n selectedUser: User | null;\n selectedGroups: string[] | null;\n open: boolean;\n}\n\nconst SetPolicy = ({\n closeModalAndRefresh,\n selectedUser,\n selectedGroups,\n open,\n}: ISetPolicyProps) => {\n const dispatch = useAppDispatch();\n //Local States\n const [loading, setLoading] = useState(false);\n const [actualPolicy, setActualPolicy] = useState([]);\n const [selectedPolicy, setSelectedPolicy] = useState([]);\n const currentPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n const setPolicyAction = () => {\n let users = null;\n let groups = null;\n if (selectedGroups !== null) {\n groups = selectedGroups;\n } else {\n if (selectedUser !== null) {\n users = [selectedUser.accessKey] || [\" \"];\n }\n }\n\n setLoading(true);\n\n api\n .invoke(\"PUT\", `/api/v1/set-policy-multi`, {\n name: currentPolicies,\n groups: groups,\n users: users,\n })\n .then(() => {\n setLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n };\n\n const fetchGroupInformation = () => {\n if (selectedGroups?.length === 1) {\n api\n .invoke(\"GET\", `/api/v1/group/${encodeURLString(selectedGroups[0])}`)\n .then((res: any) => {\n const groupPolicy: String = get(res, \"policy\", \"\");\n setActualPolicy(groupPolicy.split(\",\"));\n setSelectedPolicy(groupPolicy.split(\",\"));\n dispatch(setSelectedPolicies(groupPolicy.split(\",\")));\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(err));\n setLoading(false);\n });\n }\n };\n\n const resetSelection = () => {\n setSelectedPolicy(actualPolicy);\n dispatch(setSelectedPolicies(actualPolicy));\n };\n\n useEffect(() => {\n if (open) {\n if (selectedGroups?.length === 1) {\n fetchGroupInformation();\n return;\n }\n\n const userPolicy: string[] = get(selectedUser, \"policy\", []);\n setActualPolicy(userPolicy);\n setSelectedPolicy(userPolicy);\n dispatch(setSelectedPolicies(userPolicy));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, selectedGroups?.length, selectedUser]);\n\n const userName = get(selectedUser, \"accessKey\", \"\");\n\n return (\n {\n closeModalAndRefresh();\n }}\n modalOpen={open}\n title=\"Set Policies\"\n >\n \n {(selectedGroups?.length === 1 || selectedUser != null) && (\n \n \n {selectedGroups !== null ? selectedGroups[0] : userName}\n \n \n {actualPolicy.join(\", \")}\n \n \n )}\n {selectedGroups && selectedGroups?.length > 1 && (\n \n {selectedGroups.join(\", \")}\n \n )}\n \n \n \n \n \n \n \n \n {loading && (\n \n \n \n )}\n \n );\n};\n\nexport default SetPolicy;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Policy, User } from \"api/consoleApi\";\n\ninterface policyDetailsInterface {\n policy: string;\n}\n\nexport const usersSort = (a: User, b: User) => {\n if (a.accessKey && b.accessKey) {\n if (a.accessKey > b.accessKey) {\n return 1;\n }\n if (a.accessKey < b.accessKey) {\n return -1;\n }\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policySort = (a: Policy, b: Policy) => {\n if (a.name! > b.name!) {\n return 1;\n }\n if (a.name! < b.name!) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const stringSort = (a: string, b: string) => {\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policyDetailsSort = (\n a: policyDetailsInterface,\n b: policyDetailsInterface,\n) => {\n if (a.policy > b.policy) {\n return 1;\n }\n if (a.policy < b.policy) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n"],"names":["_ref","selectedGroups","deleteOpen","closeDeleteModalAndRefresh","dispatch","useAppDispatch","_useApi","useApi","err","setErrorSnackMessage","_useApi2","_slicedToArray","deleteLoading","invokeDeleteApi","renderGroups","map","group","_jsx","children","ConfirmDialog","title","concat","length","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","_step","_iterator","_createForOfIteratorHelper","s","n","done","value","encodeURLString","e","f","onClose","confirmationContent","_jsxs","Fragment","_ref$title","_ref$groupStatus","groupStatus","_ref$preSelectedUsers","preSelectedUsers","_ref$selectedGroup","selectedGroup","open","_useState","useState","_useState2","selectedUsers","setSelectedUsers","ModalWrapper","modalOpen","AddMembersToGroupIcon","FormLayout","withBorders","containerPadding","ReadBox","label","sx","width","UsersSelectors","editMode","Grid","item","xs","modalStyleUtils","modalButtonBar","Button","id","type","variant","onClick","api","updateGroup","members","status","then","catch","setModalErrorSnackMessage","errorToHandler","error","formatPolicy","policy","arguments","undefined","split","navigate","useNavigate","params","useParams","groupDetails","setGroupDetails","_useState3","_useState4","policyOpen","setPolicyOpen","_useState5","_useState6","usersOpen","setUsersOpen","_useState7","_useState8","setDeleteOpen","_useState9","_useState10","memberFilter","setMemberFilter","_useState11","_useState12","currentTab","setCurrentTab","groupName","decodeURLString","_groupDetails$members","_groupDetails$policy","groupEnabled","filteredMembers","filter","elementItem","includes","viewUser","hasPermission","CONSOLE_UI_RESOURCE","viewUserPermissions","useEffect","setHelpName","fetchGroupInfo","groupPolicies","isGroupEnabled","memberActionText","getGroupDetails","getGroupPermissions","canEditGroupMembers","editGroupMembersPermissions","canSetPolicies","setGroupPoliciesPermissions","canViewPolicy","viewPolicyPermissions","groupInfo","res","data","groupsTabContent","Box","onMouseMove","SectionTitle","separator","marginBottom","actions","display","gap","SearchBox","placeholder","onChange","searchText","maxWidth","SecureComponent","resource","scopes","addUserToGroupPermissions","errorProps","disabled","TooltipWrapper","tooltip","permissionTooltipHelper","createGroupPermissions","icon","AddIcon","listUsersPermissions","DataTable","itemActions","userName","IAM_PAGES","USERS","isDisabled","columns","selectedItems","records","entityName","policiesTabContent","IAMPoliciesIcon","POLICIES","SetPolicy","selectedUser","closeModalAndRefresh","setSelectedPolicies","AddGroupMember","onSaveClick","DeleteGroup","isDelSuccess","GROUPS","PageHeaderWrapper","BackLink","HelpMenu","PageLayout","ScreenTitle","GroupsIcon","subTitle","bottomBorder","fontSize","alignItems","style","fontWeight","enableDisableGroupPermissions","matchAll","Switch","indicatorLabels","checked","name","nextStatus","switchOnly","TrashIcon","Tabs","options","tabConfig","content","currentTabOrPath","onTabClick","_ref$editMode","setRecords","loading","setFilter","fetchUsers","useCallback","users","listUsers","get","sort","usersSort","selUsers","filteredRecords","accessKey","className","ProgressBar","elementKey","onSelect","targetD","target","elements","_toConsumableArray","push","element","idField","customPaperHeight","textAlign","padding","_ref$noTitle","noTitle","currentPolicies","useSelector","state","createUser","selectedPolicies","fetchPolicies","policies","listPolicies","_res$data$policies","policySort","setLoading","actualPolicy","setActualPolicy","selectedPolicy","setSelectedPolicy","invoke","groupPolicy","userPolicy","join","PolicySelectors","color","groups","a","b","stringSort","policyDetailsSort"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/2185.1940263e.chunk.js b/portal-ui/build/static/js/2185.dabc2b42.chunk.js similarity index 95% rename from portal-ui/build/static/js/2185.1940263e.chunk.js rename to portal-ui/build/static/js/2185.dabc2b42.chunk.js index c9f4284d2c..491a78234c 100644 --- a/portal-ui/build/static/js/2185.1940263e.chunk.js +++ b/portal-ui/build/static/js/2185.dabc2b42.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2185],{62185:function(e,t,r){r.r(t);var n=r(29439),a=r(1413),i=r(72791),o=r(57689),l=r(29945),s=r(56028),c=r(11135),u=r(23814),d=r(78687),f=r(45248),h=r(81551),m=r(87995),x=r(72455),j=r(80184),p=(0,x.Z)((function(e){return(0,c.Z)((0,a.Z)((0,a.Z)({},u.ID),u.DF))})),v=(0,d.$j)((function(e){return{simplePath:e.objectBrowser.simplePath}}));t.default=v((function(e){var t=e.modalOpen,r=(e.folderName,e.bucketName),a=e.onClose,c=e.simplePath,u=(0,h.TL)(),x=(0,o.s0)(),v=p(),b=(0,i.useState)(""),w=(0,n.Z)(b,2),Z=w[0],C=w[1],g=(0,i.useState)(!1),k=(0,n.Z)(g,2),P=k[0],F=k[1],N=(0,i.useState)(r),y=(0,n.Z)(N,2),z=y[0],E=y[1],S=(0,d.v9)((function(e){return e.objectBrowser.records}));(0,i.useEffect)((function(){if(c){var e="".concat(r).concat(r.endsWith("/")||c.startsWith("/")?"":"/").concat(c);E(e)}}),[c,r]);var B=function(){var e="/";c&&(e=c.endsWith("/")?c:"".concat(c,"/"));if(-1===S.findIndex((function(t){return t.name===e+Z}))){var t=Z.split("/").filter((function(e){return""!==e.trim()})).join("/");"/"===e.slice(0,1)&&(e=e.slice(1));var n="/browser/".concat(r,"/").concat((0,f.LL)("".concat(e).concat(t,"/")));x(n),a()}else u((0,m.zb)({errorMessage:"Folder cannot have the same name as an existing file",detailedError:""}))};(0,i.useEffect)((function(){var e=!0;0===Z.trim().length&&(e=!1),F(e)}),[Z]);return(0,j.jsx)(i.Fragment,{children:(0,j.jsx)(s.Z,{modalOpen:t,title:"Choose or create a new path",onClose:a,titleIcon:(0,j.jsx)(l.Z9m,{}),children:(0,j.jsxs)(l.rjZ,{container:!0,children:[(0,j.jsxs)(l.rjZ,{item:!0,xs:12,className:v.formFieldRow,children:[(0,j.jsx)("strong",{children:"Current Path:"})," ",(0,j.jsx)("br",{}),(0,j.jsx)("div",{style:{textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",fontSize:14,textAlign:"left"},dir:"rtl",children:z})]}),(0,j.jsx)(l.rjZ,{item:!0,xs:12,className:v.formFieldRow,children:(0,j.jsx)(l.Wzg,{value:Z,label:"New Folder Path",id:"folderPath",name:"folderPath",placeholder:"Enter the new Folder Path",onChange:function(e){C(e.target.value)},onKeyPress:function(e){"Enter"===e.code&&""!==Z&&B()},required:!0})}),(0,j.jsxs)(l.rjZ,{item:!0,xs:12,className:v.modalButtonBar,children:[(0,j.jsx)(l.zxk,{id:"clear",type:"button",color:"primary",variant:"regular",onClick:function(){C("")},label:"Clear"}),(0,j.jsx)(l.zxk,{id:"create",type:"submit",variant:"callAction",disabled:!P,onClick:B,label:"Create"})]})]})})})}))}}]); -//# sourceMappingURL=2185.1940263e.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2185],{62185:function(e,t,r){r.r(t);var n=r(29439),a=r(1413),i=r(72791),o=r(57689),l=r(29945),s=r(56028),c=r(11135),u=r(23814),d=r(78687),f=r(45248),h=r(44690),m=r(87995),x=r(72455),j=r(80184),p=(0,x.Z)((function(e){return(0,c.Z)((0,a.Z)((0,a.Z)({},u.ID),u.DF))})),v=(0,d.$j)((function(e){return{simplePath:e.objectBrowser.simplePath}}));t.default=v((function(e){var t=e.modalOpen,r=(e.folderName,e.bucketName),a=e.onClose,c=e.simplePath,u=(0,h.TL)(),x=(0,o.s0)(),v=p(),b=(0,i.useState)(""),w=(0,n.Z)(b,2),Z=w[0],C=w[1],g=(0,i.useState)(!1),k=(0,n.Z)(g,2),P=k[0],F=k[1],N=(0,i.useState)(r),y=(0,n.Z)(N,2),z=y[0],E=y[1],S=(0,d.v9)((function(e){return e.objectBrowser.records}));(0,i.useEffect)((function(){if(c){var e="".concat(r).concat(r.endsWith("/")||c.startsWith("/")?"":"/").concat(c);E(e)}}),[c,r]);var B=function(){var e="/";c&&(e=c.endsWith("/")?c:"".concat(c,"/"));if(-1===S.findIndex((function(t){return t.name===e+Z}))){var t=Z.split("/").filter((function(e){return""!==e.trim()})).join("/");"/"===e.slice(0,1)&&(e=e.slice(1));var n="/browser/".concat(r,"/").concat((0,f.LL)("".concat(e).concat(t,"/")));x(n),a()}else u((0,m.zb)({errorMessage:"Folder cannot have the same name as an existing file",detailedError:""}))};(0,i.useEffect)((function(){var e=!0;0===Z.trim().length&&(e=!1),F(e)}),[Z]);return(0,j.jsx)(i.Fragment,{children:(0,j.jsx)(s.Z,{modalOpen:t,title:"Choose or create a new path",onClose:a,titleIcon:(0,j.jsx)(l.Z9m,{}),children:(0,j.jsxs)(l.rjZ,{container:!0,children:[(0,j.jsxs)(l.rjZ,{item:!0,xs:12,className:v.formFieldRow,children:[(0,j.jsx)("strong",{children:"Current Path:"})," ",(0,j.jsx)("br",{}),(0,j.jsx)("div",{style:{textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",fontSize:14,textAlign:"left"},dir:"rtl",children:z})]}),(0,j.jsx)(l.rjZ,{item:!0,xs:12,className:v.formFieldRow,children:(0,j.jsx)(l.Wzg,{value:Z,label:"New Folder Path",id:"folderPath",name:"folderPath",placeholder:"Enter the new Folder Path",onChange:function(e){C(e.target.value)},onKeyPress:function(e){"Enter"===e.code&&""!==Z&&B()},required:!0})}),(0,j.jsxs)(l.rjZ,{item:!0,xs:12,className:v.modalButtonBar,children:[(0,j.jsx)(l.zxk,{id:"clear",type:"button",color:"primary",variant:"regular",onClick:function(){C("")},label:"Clear"}),(0,j.jsx)(l.zxk,{id:"create",type:"submit",variant:"callAction",disabled:!P,onClick:B,label:"Create"})]})]})})})}))}}]); +//# sourceMappingURL=2185.dabc2b42.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/2185.1940263e.chunk.js.map b/portal-ui/build/static/js/2185.dabc2b42.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/2185.1940263e.chunk.js.map rename to portal-ui/build/static/js/2185.dabc2b42.chunk.js.map index 8b3ebc8664..81c2798b3e 100644 --- a/portal-ui/build/static/js/2185.1940263e.chunk.js.map +++ b/portal-ui/build/static/js/2185.dabc2b42.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/2185.1940263e.chunk.js","mappings":"iRA0CMA,GAAYC,EAAAA,EAAAA,IAAW,SAACC,GAAY,OACxCC,EAAAA,EAAAA,IAAYC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACTC,EAAAA,IACAC,EAAAA,IACH,IAyJEC,GAAYC,EAAAA,EAAAA,KAJM,SAAHC,GAAmB,MAAkB,CACxDC,WADsCD,EAAbE,cACCD,WAC3B,IAID,UAAeH,GAxJS,SAAHK,GAMD,IALlBC,EAASD,EAATC,UAEAC,GADUF,EAAVG,WACUH,EAAVE,YACAE,EAAOJ,EAAPI,QACAN,EAAUE,EAAVF,WAEMO,GAAWC,EAAAA,EAAAA,MACXC,GAAWC,EAAAA,EAAAA,MACXC,EAAUrB,IAEhBsB,GAA8BC,EAAAA,EAAAA,UAAS,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAnCI,EAAOF,EAAA,GAAEG,EAAUH,EAAA,GAC1BI,GAAsCL,EAAAA,EAAAA,WAAkB,GAAMM,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAAvDE,EAAWD,EAAA,GAAEE,EAAcF,EAAA,GAClCG,GAAsCT,EAAAA,EAAAA,UAAST,GAAWmB,GAAAR,EAAAA,EAAAA,GAAAO,EAAA,GAAnDE,EAAWD,EAAA,GAAEE,EAAcF,EAAA,GAE5BG,GAAUC,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAM3B,cAAcyB,OAAO,KAE5EG,EAAAA,EAAAA,YAAU,WACR,GAAI7B,EAAY,CACd,IAAM8B,EAAO,GAAAC,OAAM3B,GAAU2B,OAC1B3B,EAAW4B,SAAS,MAAShC,EAAWiC,WAAW,KAAa,GAAN,KAAQF,OAClE/B,GAEHyB,EAAeK,EACjB,CACF,GAAG,CAAC9B,EAAYI,IAEhB,IAIM8B,EAAgB,WACpB,IAAIC,EAAa,IAEbnC,IACFmC,EAAanC,EAAWgC,SAAS,KAAOhC,EAAU,GAAA+B,OAAM/B,EAAU,MAMpE,IAAuC,IAAnC0B,EAAQU,WAHO,SAACC,GAAwB,OAC1CA,EAAOC,OAASH,EAAanB,CAAQ,IAEvC,CAUA,IAAMuB,EAAevB,EAClBwB,MAAM,KACNC,QAAO,SAACC,GAAS,MAA0B,KAArBA,EAAUC,MAAa,IAC7CC,KAAK,KAEuB,MAA3BT,EAAWU,MAAM,EAAG,KACtBV,EAAaA,EAAWU,MAAM,IAGhC,IAAMf,EAAO,YAAAC,OAAe3B,EAAU,KAAA2B,QAAIe,EAAAA,EAAAA,IAAgB,GAADf,OACpDI,GAAUJ,OAAGQ,EAAY,OAG9B9B,EAASqB,GACTxB,GAhBA,MAPEC,GACEwC,EAAAA,EAAAA,IAA0B,CACxBC,aAAc,uDACdC,cAAe,KAqBvB,GAEApB,EAAAA,EAAAA,YAAU,WACR,IAAIqB,GAAQ,EACkB,IAA1BlC,EAAQ2B,OAAOQ,SACjBD,GAAQ,GAEV7B,EAAe6B,EACjB,GAAG,CAAClC,IAYJ,OACEoC,EAAAA,EAAAA,KAACC,EAAAA,SAAc,CAAAC,UACbF,EAAAA,EAAAA,KAACG,EAAAA,EAAY,CACXpD,UAAWA,EACXqD,MAAM,8BACNlD,QAASA,EACTmD,WAAWL,EAAAA,EAAAA,KAACM,EAAAA,IAAiB,IAAIJ,UAEjCK,EAAAA,EAAAA,MAACC,EAAAA,IAAI,CAACC,WAAS,EAAAP,SAAA,EACbK,EAAAA,EAAAA,MAACC,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAIC,UAAWrD,EAAQsD,aAAaX,SAAA,EACjDF,EAAAA,EAAAA,KAAA,UAAAE,SAAQ,kBAAsB,KAACF,EAAAA,EAAAA,KAAA,UAC/BA,EAAAA,EAAAA,KAAA,OACEc,MAAO,CACLC,aAAc,WACdC,WAAY,SACZC,SAAU,SACVC,SAAU,GACVC,UAAW,QAEbC,IAAK,MAAMlB,SAEV9B,QAGL4B,EAAAA,EAAAA,KAACQ,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAIC,UAAWrD,EAAQsD,aAAaX,UACjDF,EAAAA,EAAAA,KAACqB,EAAAA,IAAQ,CACPC,MAAO1D,EACP2D,MAAO,kBACPC,GAAI,aACJtC,KAAM,aACNuC,YAAa,4BACbC,SAzCQ,SAACC,GACnB9D,EAAW8D,EAAEC,OAAON,MACtB,EAwCYO,WAtCO,SAACF,GACH,UAAXA,EAAEG,MAAgC,KAAZlE,GACxBkB,GAEJ,EAmCYiD,UAAQ,OAGZxB,EAAAA,EAAAA,MAACC,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAIC,UAAWrD,EAAQyE,eAAe9B,SAAA,EACnDF,EAAAA,EAAAA,KAACiC,EAAAA,IAAM,CACLT,GAAI,QACJU,KAAK,SACLC,MAAM,UACNC,QAAQ,UACRC,QArGM,WAChBxE,EAAW,GACb,EAoGY0D,MAAO,WAETvB,EAAAA,EAAAA,KAACiC,EAAAA,IAAM,CACLT,GAAI,SACJU,KAAK,SACLE,QAAQ,aACRE,UAAWtE,EACXqE,QAASvD,EACTyC,MAAO,oBAOrB,G","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, CreateNewPathIcon, InputBox, Grid } from \"mds\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\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 { 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 if (folderPath.slice(0, 1) === \"/\") {\n folderPath = folderPath.slice(1); //trim '/'\n }\n\n const newPath = `/browser/${bucketName}/${encodeURLString(\n `${folderPath}${cleanPathURL}/`,\n )}`;\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","_objectSpread","modalStyleUtils","formFieldStyles","connector","connect","_ref2","simplePath","objectBrowser","_ref","modalOpen","bucketName","folderName","onClose","dispatch","useAppDispatch","navigate","useNavigate","classes","_useState","useState","_useState2","_slicedToArray","pathUrl","setPathUrl","_useState3","_useState4","isFormValid","setIsFormValid","_useState5","_useState6","currentPath","setCurrentPath","records","useSelector","state","useEffect","newPath","concat","endsWith","startsWith","createProcess","folderPath","findIndex","record","name","cleanPathURL","split","filter","splitItem","trim","join","slice","encodeURLString","setModalErrorSnackMessage","errorMessage","detailedError","valid","length","_jsx","React","children","ModalWrapper","title","titleIcon","CreateNewPathIcon","_jsxs","Grid","container","item","xs","className","formFieldRow","style","textOverflow","whiteSpace","overflow","fontSize","textAlign","dir","InputBox","value","label","id","placeholder","onChange","e","target","onKeyPress","code","required","modalButtonBar","Button","type","color","variant","onClick","disabled"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/2185.dabc2b42.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, CreateNewPathIcon, InputBox, Grid } from \"mds\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\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 { 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 if (folderPath.slice(0, 1) === \"/\") {\n folderPath = folderPath.slice(1); //trim '/'\n }\n\n const newPath = `/browser/${bucketName}/${encodeURLString(\n `${folderPath}${cleanPathURL}/`,\n )}`;\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","_objectSpread","modalStyleUtils","formFieldStyles","connector","connect","_ref2","simplePath","objectBrowser","_ref","modalOpen","bucketName","folderName","onClose","dispatch","useAppDispatch","navigate","useNavigate","classes","_useState","useState","_useState2","_slicedToArray","pathUrl","setPathUrl","_useState3","_useState4","isFormValid","setIsFormValid","_useState5","_useState6","currentPath","setCurrentPath","records","useSelector","state","useEffect","newPath","concat","endsWith","startsWith","createProcess","folderPath","findIndex","record","name","cleanPathURL","split","filter","splitItem","trim","join","slice","encodeURLString","setModalErrorSnackMessage","errorMessage","detailedError","valid","length","_jsx","React","children","ModalWrapper","title","titleIcon","CreateNewPathIcon","_jsxs","Grid","container","item","xs","className","formFieldRow","style","textOverflow","whiteSpace","overflow","fontSize","textAlign","dir","InputBox","value","label","id","placeholder","onChange","e","target","onKeyPress","code","required","modalButtonBar","Button","type","color","variant","onClick","disabled"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/2193.5d74569e.chunk.js b/portal-ui/build/static/js/2193.a74f0e37.chunk.js similarity index 99% rename from portal-ui/build/static/js/2193.5d74569e.chunk.js rename to portal-ui/build/static/js/2193.a74f0e37.chunk.js index 4f981d6edf..e11a1ea2fb 100644 --- a/portal-ui/build/static/js/2193.5d74569e.chunk.js +++ b/portal-ui/build/static/js/2193.a74f0e37.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2193],{36612:function(e,t,n){n.d(t,{Z:function(){return l}});var o=n(29439),r=n(43144),a=n(15671),i=n(99779),s={dayOfMonth:"d",fullDate:"DD",fullDateWithWeekday:"DDDD",fullDateTime:"ff",fullDateTime12h:"DD, hh:mm a",fullDateTime24h:"DD, T",fullTime:"t",fullTime12h:"hh:mm a",fullTime24h:"HH:mm",hours12h:"hh",hours24h:"HH",keyboardDate:"D",keyboardDateTime:"D t",keyboardDateTime12h:"D hh:mm a",keyboardDateTime24h:"D T",minutes:"mm",seconds:"ss",month:"LLLL",monthAndDate:"MMMM d",monthAndYear:"LLLL yyyy",monthShort:"MMM",weekday:"cccc",weekdayShort:"ccc",normalDate:"d MMMM",normalDateWithWeekday:"EEE, MMM d",shortDate:"MMM d",year:"yyyy"},l=(0,r.Z)((function e(){var t=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=n.locale,l=n.formats;(0,a.Z)(this,e),this.lib="luxon",this.date=function(e){return"undefined"===typeof e?i.ou.local():null===e?null:"string"===typeof e?i.ou.fromJSDate(new Date(e),{locale:t.locale}):i.ou.isDateTime(e)?e:i.ou.fromJSDate(e,{locale:t.locale})},this.toJsDate=function(e){return e.toJSDate()},this.parseISO=function(e){return i.ou.fromISO(e)},this.toISO=function(e){return e.toISO({format:"extended"})},this.parse=function(e,n){return""===e?null:i.ou.fromFormat(e,n,{locale:t.locale})},this.is12HourCycleInCurrentLocale=function(){var e,n;return"undefined"===typeof Intl||"undefined"===typeof Intl.DateTimeFormat||Boolean(null===(n=null===(e=new Intl.DateTimeFormat(t.locale,{hour:"numeric"}))||void 0===e?void 0:e.resolvedOptions())||void 0===n?void 0:n.hour12)},this.getFormatHelperText=function(e){return""},this.getCurrentLocaleCode=function(){return t.locale||i.Zr.defaultLocale},this.addSeconds=function(e,t){return e.plus({seconds:t})},this.addMinutes=function(e,t){return e.plus({minutes:t})},this.addHours=function(e,t){return e.plus({hours:t})},this.addDays=function(e,t){return e.plus({days:t})},this.addWeeks=function(e,t){return e.plus({weeks:t})},this.addMonths=function(e,t){return e.plus({months:t})},this.addYears=function(e,t){return e.plus({years:t})},this.isValid=function(e){var n,o;return i.ou.isDateTime(e)?e.isValid:null!==e&&(null!==(o=null===(n=t.date(e))||void 0===n?void 0:n.isValid)&&void 0!==o&&o)},this.isEqual=function(e,n){var o,r;return null===e&&null===n||null!==e&&null!==n&&(!!t.date(n)&&(null!==(r=null===(o=t.date(e))||void 0===o?void 0:o.equals(t.date(n)))&&void 0!==r&&r))},this.isSameDay=function(e,t){return e.hasSame(t,"day")},this.isSameMonth=function(e,t){return e.hasSame(t,"month")},this.isSameYear=function(e,t){return e.hasSame(t,"year")},this.isSameHour=function(e,t){return e.hasSame(t,"hour")},this.isAfter=function(e,t){return e>t},this.isBefore=function(e,t){return e0},this.isBeforeMonth=function(e,t){return e.diff(t.startOf("month"),"months").toObject().months<0},this.isAfterMonth=function(e,t){return e.diff(t.startOf("month"),"months").toObject().months>0},this.isBeforeYear=function(e,t){return e.diff(t.startOf("year"),"years").toObject().years<0},this.isAfterYear=function(e,t){return e.diff(t.endOf("year"),"years").toObject().years>0},this.getDiff=function(e,t,n){return"string"===typeof t&&(t=i.ou.fromJSDate(new Date(t))),t.isValid?n?Math.floor(e.diff(t).as(n)):e.diff(t).as("millisecond"):0},this.startOfDay=function(e){return e.startOf("day")},this.endOfDay=function(e){return e.endOf("day")},this.format=function(e,n){return t.formatByString(e,t.formats[n])},this.formatByString=function(e,n){return e.setLocale(t.locale).toFormat(n)},this.formatNumber=function(e){return e},this.getHours=function(e){return e.get("hour")},this.setHours=function(e,t){return e.set({hour:t})},this.getMinutes=function(e){return e.get("minute")},this.setMinutes=function(e,t){return e.set({minute:t})},this.getSeconds=function(e){return e.get("second")},this.setSeconds=function(e,t){return e.set({second:t})},this.getMonth=function(e){return e.get("month")-1},this.getDaysInMonth=function(e){return e.daysInMonth},this.setMonth=function(e,t){return e.set({month:t+1})},this.getYear=function(e){return e.get("year")},this.setYear=function(e,t){return e.set({year:t})},this.getDate=function(e){return e.get("day")},this.setDate=function(e,t){return e.set({day:t})},this.mergeDateAndTime=function(e,t){return e.set({second:t.second,hour:t.hour,minute:t.minute})},this.startOfYear=function(e){return e.startOf("year")},this.endOfYear=function(e){return e.endOf("year")},this.startOfMonth=function(e){return e.startOf("month")},this.endOfMonth=function(e){return e.endOf("month")},this.startOfWeek=function(e){return e.startOf("week")},this.endOfWeek=function(e){return e.endOf("week")},this.getNextMonth=function(e){return e.plus({months:1})},this.getPreviousMonth=function(e){return e.minus({months:1})},this.getMonthArray=function(e){for(var n=[e.startOf("year")];n.length<12;){var o=n[n.length-1];n.push(t.getNextMonth(o))}return n},this.getWeekdays=function(){return i.kI.weekdaysFormat("short",{locale:t.locale})},this.getWeekArray=function(e){var t=e.endOf("month").endOf("week").diff(e.startOf("month").startOf("week"),"days").toObject().days,n=[];return new Array(Math.round(t)).fill(0).map((function(e,t){return t})).map((function(t){return e.startOf("month").startOf("week").plus({days:t})})).forEach((function(e,t){0===t||t%7===0&&t>6?n.push([e]):n[n.length-1].push(e)})),n},this.getYearRange=function(e,t){for(var n=e.startOf("year"),o=t.endOf("year"),r=n,a=[];r1&&void 0!==arguments[1]?arguments[1]:{},n=(0,i.Z)(),o="undefined"!==typeof window&&"undefined"!==typeof window.matchMedia,r=(0,s.Z)({name:"MuiUseMediaQuery",props:t,theme:n}),a=r.defaultMatches,l=void 0!==a&&a,f=r.matchMedia,p=void 0===f?o?window.matchMedia:null:f,m=r.ssrMatchMedia,h=void 0===m?null:m,v=r.noSsr,b=void 0!==v&&v;var g="function"===typeof e?e(n):e;return g=g.replace(/^@media( ?)/m,""),(void 0!==c?d:u)(g,l,p,h,b)}},80916:function(e,t,n){n.d(t,{x:function(){return cr}});var o=n(87462),r=n(63366),a=n(72791),i=n(31402),s=n(95193),l=n(36571),u=function(){var e=a.useContext(l.y);if(null===e)throw new Error("MUI: Can not find utils in context. It looks like you forgot to wrap your component in LocalizationProvider, or pass dateAdapter prop directly.");return e},c=function(){return u().utils},d=function(){return u().defaultDates},f=function(){return u().localeText},p=function(){var e=c();return a.useRef(e.date()).current},m=function(e){var t=e.date,n=e.disableFuture,o=e.disablePast,r=e.maxDate,a=e.minDate,i=e.isDateDisabled,s=e.utils,l=s.startOfDay(s.date());o&&s.isBefore(a,l)&&(a=l),n&&s.isAfter(r,l)&&(r=l);var u=t,c=t;for(s.isBefore(t,a)&&(u=s.date(a),c=null),s.isAfter(t,r)&&(c&&(c=s.date(r)),u=null);u||c;){if(u&&s.isAfter(u,r)&&(u=null),c&&s.isBefore(c,a)&&(c=null),u){if(!i(u))return u;u=s.addDays(u,1)}if(c){if(!i(c))return c;c=s.addDays(c,-1)}}return null},h=function(e,t,n){if(null==t)return n;var o=e.date(t);return e.isValid(o)?o:n};function v(e,t){var n,r,a,s,l,u=(0,i.Z)({props:e,name:t}),f=c(),p=d(),m=null!=(n=u.ampm)?n:f.is12HourCycleInCurrentLocale();if(null!=u.orientation&&"portrait"!==u.orientation)throw new Error("We are not supporting custom orientation for DateTimePicker yet :(");return(0,o.Z)({ampm:m,orientation:"portrait",openTo:"day",views:["year","day","hours","minutes"],ampmInClock:!0,acceptRegex:m?/[\dap]/gi:/\d/gi,disableMaskedInput:!1,inputFormat:m?f.formats.keyboardDateTime12h:f.formats.keyboardDateTime24h,disableIgnoringDatePartForTimeValidation:Boolean(u.minDateTime||u.maxDateTime),disablePast:!1,disableFuture:!1},u,{minDate:h(f,null!=(r=u.minDateTime)?r:u.minDate,p.minDate),maxDate:h(f,null!=(a=u.maxDateTime)?a:u.maxDate,p.maxDate),minTime:null!=(s=u.minDateTime)?s:u.minTime,maxTime:null!=(l=u.maxDateTime)?l:u.maxTime})}var b={emptyValue:null,getTodayValue:function(e){return e.date()},parseInput:function(e,t){var n=e.date(t);return e.isValid(n)?n:null},areValuesEqual:function(e,t,n){return e.isEqual(t,n)}},g=function(e){switch(e){case"year":case"month":case"day":return"calendar";default:return"clock"}},w=n(4942),x=n(66934),y=n(94419);function C(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t :not(:first-of-type)":{marginLeft:8}})})),ye=a.forwardRef((function(e,t){var n=(0,i.Z)({props:e,name:"MuiDialogActions"}),a=n.className,s=n.disableSpacing,l=void 0!==s&&s,u=(0,r.Z)(n,we),c=(0,o.Z)({},n,{disableSpacing:l}),d=function(e){var t=e.classes,n={root:["root",!e.disableSpacing&&"spacing"]};return(0,y.Z)(n,ge,t)}(c);return(0,S.jsx)(xe,(0,o.Z)({className:(0,be.Z)(d.root,a),ownerState:c,ref:t},u))})),Ce=["onAccept","onClear","onCancel","onSetToday","actions"],De=function(e){var t=e.onAccept,n=e.onClear,i=e.onCancel,s=e.onSetToday,l=e.actions,u=(0,r.Z)(e,Ce),c=a.useContext(ue),d=f(),p="function"===typeof l?l(c):l;if(null==p||0===p.length)return null;var m=null==p?void 0:p.map((function(e){switch(e){case"clear":return(0,S.jsx)(G.Z,{onClick:n,children:d.clearButtonLabel},e);case"cancel":return(0,S.jsx)(G.Z,{onClick:i,children:d.cancelButtonLabel},e);case"accept":return(0,S.jsx)(G.Z,{onClick:t,children:d.okButtonLabel},e);case"today":return(0,S.jsx)(G.Z,{onClick:s,children:d.todayButtonLabel},e);default:return null}}));return(0,S.jsx)(ye,(0,o.Z)({},u,{children:m}))};function Ze(e){return(0,k.Z)("MuiPickersPopper",e)}(0,M.Z)("MuiPickersPopper",["root","paper"]);function ke(e,t){return Array.isArray(t)?t.every((function(t){return-1!==e.indexOf(t)})):-1!==e.indexOf(t)}var Me=function(e,t){return function(n){"Enter"!==n.key&&" "!==n.key||(e(n),n.preventDefault(),n.stopPropagation()),t&&t(n)}},Pe=function e(){var t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:document).activeElement;return t?t.shadowRoot?e(t.shadowRoot):t:null},Te=["onClick","onTouchStart"],Se=function(e){var t=e.classes;return(0,y.Z)({root:["root"],paper:["paper"]},Ze,t)},Ae=(0,x.ZP)(pe.Z,{name:"MuiPickersPopper",slot:"Root",overridesResolver:function(e,t){return t.root}})((function(e){return{zIndex:e.theme.zIndex.modal}})),Re=(0,x.ZP)(fe.Z,{name:"MuiPickersPopper",slot:"Paper",overridesResolver:function(e,t){return t.paper}})((function(e){var t=e.ownerState;return(0,o.Z)({transformOrigin:"top center",outline:0},"top"===t.placement&&{transformOrigin:"bottom center"})}));function je(e){var t,n=(0,i.Z)({props:e,name:"MuiPickersPopper"}),s=n.anchorEl,l=n.children,u=n.containerRef,c=void 0===u?null:u,d=n.onBlur,f=n.onClose,p=n.onClear,m=n.onAccept,h=n.onCancel,v=n.onSetToday,b=n.open,g=n.PopperProps,w=n.role,x=n.TransitionComponent,y=void 0===x?de.Z:x,C=n.TrapFocusProps,D=n.PaperProps,Z=void 0===D?{}:D,k=n.components,M=n.componentsProps;a.useEffect((function(){function e(e){!b||"Escape"!==e.key&&"Esc"!==e.key||f()}return document.addEventListener("keydown",e),function(){document.removeEventListener("keydown",e)}}),[f,b]);var P=a.useRef(null);a.useEffect((function(){"tooltip"!==w&&(b?P.current=Pe(document):P.current&&P.current instanceof HTMLElement&&setTimeout((function(){P.current instanceof HTMLElement&&P.current.focus()})))}),[b,w]);var T=function(e,t){var n=a.useRef(!1),o=a.useRef(!1),r=a.useRef(null),i=a.useRef(!1);a.useEffect((function(){if(e)return document.addEventListener("mousedown",t,!0),document.addEventListener("touchstart",t,!0),function(){document.removeEventListener("mousedown",t,!0),document.removeEventListener("touchstart",t,!0),i.current=!1};function t(){i.current=!0}}),[e]);var s=(0,he.Z)((function(e){if(i.current){var a=o.current;o.current=!1;var s=(0,ve.Z)(r.current);!r.current||"clientX"in e&&function(e,t){return t.documentElement.clientWidth-1:!s.documentElement.contains(e.target)||r.current.contains(e.target))||a||t(e))}})),l=function(){o.current=!0};return a.useEffect((function(){if(e){var t=(0,ve.Z)(r.current),o=function(){n.current=!0};return t.addEventListener("touchstart",s),t.addEventListener("touchmove",o),function(){t.removeEventListener("touchstart",s),t.removeEventListener("touchmove",o)}}}),[e,s]),a.useEffect((function(){if(e){var t=(0,ve.Z)(r.current);return t.addEventListener("click",s),function(){t.removeEventListener("click",s),o.current=!1}}}),[e,s]),[r,l,l]}(b,null!=d?d:f),A=(0,ce.Z)(T,3),R=A[0],j=A[1],E=A[2],N=a.useRef(null),F=(0,le.Z)(N,c),O=(0,le.Z)(F,R),I=n,V=Se(I),B=Z.onClick,L=Z.onTouchStart,H=(0,r.Z)(Z,Te),W=null!=(t=null==k?void 0:k.ActionBar)?t:De,Y=(null==k?void 0:k.PaperContent)||a.Fragment;return(0,S.jsx)(Ae,(0,o.Z)({transition:!0,role:w,open:b,anchorEl:s,onKeyDown:function(e){"Escape"===e.key&&(e.stopPropagation(),f())},className:V.root},g,{children:function(e){var t=e.TransitionProps,n=e.placement;return(0,S.jsx)(me.i,(0,o.Z)({open:b,disableAutoFocus:!0,disableRestoreFocus:!0,disableEnforceFocus:"tooltip"===w,isEnabled:function(){return!0}},C,{children:(0,S.jsx)(y,(0,o.Z)({},t,{children:(0,S.jsx)(Re,(0,o.Z)({tabIndex:-1,elevation:8,ref:O,onClick:function(e){j(e),B&&B(e)},onTouchStart:function(e){E(e),L&&L(e)},ownerState:(0,o.Z)({},I,{placement:n}),className:V.paper},H,{children:(0,S.jsxs)(Y,(0,o.Z)({},null==M?void 0:M.paperContent,{children:[l,(0,S.jsx)(W,(0,o.Z)({onAccept:m,onClear:p,onCancel:h,onSetToday:v,actions:[]},null==M?void 0:M.actionBar))]}))}))}))}))}}))}function Ee(e){var t=e.children,n=e.DateInputProps,r=e.KeyboardDateInputComponent,i=e.onClear,s=e.onDismiss,l=e.onCancel,u=e.onAccept,c=e.onSetToday,d=e.open,f=e.PopperProps,p=e.PaperProps,m=e.TransitionComponent,h=e.components,v=e.componentsProps,b=a.useRef(null),g=(0,le.Z)(n.inputRef,b);return(0,S.jsxs)(ue.Provider,{value:"desktop",children:[(0,S.jsx)(r,(0,o.Z)({},n,{inputRef:g})),(0,S.jsx)(je,{role:"dialog",open:d,anchorEl:b.current,TransitionComponent:m,PopperProps:f,PaperProps:p,onClose:s,onCancel:l,onClear:i,onAccept:u,onSetToday:c,components:h,componentsProps:v,children:t})]})}var Ne=n(98278);function Fe(e){var t,n,o=e.onChange,r=e.onViewChange,i=e.openTo,s=e.view,l=e.views,u=(0,Ne.Z)({name:"Picker",state:"view",controlled:s,default:i&&ke(l,i)?i:l[0]}),c=(0,ce.Z)(u,2),d=c[0],f=c[1],p=null!=(t=l[l.indexOf(d)-1])?t:null,m=null!=(n=l[l.indexOf(d)+1])?n:null,h=a.useCallback((function(e){f(e),r&&r(e)}),[f,r]),v=a.useCallback((function(){m&&h(m)}),[m,h]);return{handleChangeAndOpenNext:a.useCallback((function(e,t){var n="finish"===t,r=n&&Boolean(m)?"partial":t;o(e,r),n&&v()}),[m,o,v]),nextView:m,previousView:p,openNext:v,openView:d,setOpenView:h}}var Oe=n(67384),Ie=n(62876),Ve=220,Be=36,Le={x:Ve/2,y:Ve/2},He=Le.x-Le.x,We=0-Le.y,Ye=function(e,t,n){var o=t-Le.x,r=n-Le.y,a=Math.atan2(He,We)-Math.atan2(o,r),i=a*(180/Math.PI);i=Math.round(i/e)*e,i%=360;var s=Math.floor(i/e)||0,l=Math.pow(o,2)+Math.pow(r,2);return{value:s,distance:Math.sqrt(l)}};function Ke(e){return(0,k.Z)("MuiClockPointer",e)}(0,M.Z)("MuiClockPointer",["root","thumb"]);var ze=["className","hasSelected","isInner","type","value"],qe=function(e){var t=e.classes;return(0,y.Z)({root:["root"],thumb:["thumb"]},Ke,t)},Ue=(0,x.ZP)("div",{name:"MuiClockPointer",slot:"Root",overridesResolver:function(e,t){return t.root}})((function(e){var t=e.theme,n=e.ownerState;return(0,o.Z)({width:2,backgroundColor:t.palette.primary.main,position:"absolute",left:"calc(50% - 1px)",bottom:"50%",transformOrigin:"center bottom 0px"},n.shouldAnimate&&{transition:t.transitions.create(["transform","height"])})})),Xe=(0,x.ZP)("div",{name:"MuiClockPointer",slot:"Thumb",overridesResolver:function(e,t){return t.thumb}})((function(e){var t=e.theme,n=e.ownerState;return(0,o.Z)({width:4,height:4,backgroundColor:t.palette.primary.contrastText,borderRadius:"50%",position:"absolute",top:-21,left:"calc(50% - ".concat(18,"px)"),border:"".concat(16,"px solid ").concat(t.palette.primary.main),boxSizing:"content-box"},n.hasSelected&&{backgroundColor:t.palette.primary.main})}));function _e(e){var t=(0,i.Z)({props:e,name:"MuiClockPointer"}),n=t.className,s=t.isInner,l=t.type,u=t.value,c=(0,r.Z)(t,ze),d=a.useRef(l);a.useEffect((function(){d.current=l}),[l]);var f=(0,o.Z)({},t,{shouldAnimate:d.current!==l}),p=qe(f);return(0,S.jsx)(Ue,(0,o.Z)({style:function(){var e=360/("hours"===l?12:60)*u;return"hours"===l&&u>12&&(e-=360),{height:Math.round((s?.26:.4)*Ve),transform:"rotateZ(".concat(e,"deg)")}}(),className:D(n,p.root),ownerState:f},c,{children:(0,S.jsx)(Xe,{ownerState:f,className:p.thumb})}))}function Je(e){return(0,k.Z)("MuiClock",e)}(0,M.Z)("MuiClock",["root","clock","wrapper","squareMask","pin","amButton","pmButton"]);var Ge=(0,x.ZP)("div",{name:"MuiClock",slot:"Root",overridesResolver:function(e,t){return t.root}})((function(e){return{display:"flex",justifyContent:"center",alignItems:"center",margin:e.theme.spacing(2)}})),Qe=(0,x.ZP)("div",{name:"MuiClock",slot:"Clock",overridesResolver:function(e,t){return t.clock}})({backgroundColor:"rgba(0,0,0,.07)",borderRadius:"50%",height:220,width:220,flexShrink:0,position:"relative",pointerEvents:"none"}),$e=(0,x.ZP)("div",{name:"MuiClock",slot:"Wrapper",overridesResolver:function(e,t){return t.wrapper}})({"&:focus":{outline:"none"}}),et=(0,x.ZP)("div",{name:"MuiClock",slot:"SquareMask",overridesResolver:function(e,t){return t.squareMask}})((function(e){var t=e.ownerState;return(0,o.Z)({width:"100%",height:"100%",position:"absolute",pointerEvents:"auto",outline:0,touchAction:"none",userSelect:"none"},t.disabled?{}:{"@media (pointer: fine)":{cursor:"pointer",borderRadius:"50%"},"&:active":{cursor:"move"}})})),tt=(0,x.ZP)("div",{name:"MuiClock",slot:"Pin",overridesResolver:function(e,t){return t.pin}})((function(e){return{width:6,height:6,borderRadius:"50%",backgroundColor:e.theme.palette.primary.main,position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)"}})),nt=(0,x.ZP)(N.Z,{name:"MuiClock",slot:"AmButton",overridesResolver:function(e,t){return t.amButton}})((function(e){var t=e.theme,n=e.ownerState;return(0,o.Z)({zIndex:1,position:"absolute",bottom:n.ampmInClock?64:8,left:8},"am"===n.meridiemMode&&{backgroundColor:t.palette.primary.main,color:t.palette.primary.contrastText,"&:hover":{backgroundColor:t.palette.primary.light}})})),ot=(0,x.ZP)(N.Z,{name:"MuiClock",slot:"PmButton",overridesResolver:function(e,t){return t.pmButton}})((function(e){var t=e.theme,n=e.ownerState;return(0,o.Z)({zIndex:1,position:"absolute",bottom:n.ampmInClock?64:8,right:8},"pm"===n.meridiemMode&&{backgroundColor:t.palette.primary.main,color:t.palette.primary.contrastText,"&:hover":{backgroundColor:t.palette.primary.light}})}));function rt(e){var t=(0,i.Z)({props:e,name:"MuiClock"}),n=t.ampm,o=t.ampmInClock,r=t.autoFocus,s=t.children,l=t.date,u=t.getClockLabelText,d=t.handleMeridiemChange,f=t.isTimeDisabled,p=t.meridiemMode,m=t.minutesStep,h=void 0===m?1:m,v=t.onChange,b=t.selectedId,g=t.type,w=t.value,x=t.disabled,C=t.readOnly,k=t.className,M=t,P=c(),T=a.useContext(ue),A=a.useRef(!1),R=function(e){var t=e.classes;return(0,y.Z)({root:["root"],clock:["clock"],wrapper:["wrapper"],squareMask:["squareMask"],pin:["pin"],amButton:["amButton"],pmButton:["pmButton"]},Je,t)}(M),j=f(w,g),E=!n&&"hours"===g&&(w<1||w>12),N=function(e,t){x||C||f(e,g)||v(e,t)},F=function(e,t){var o=e.offsetX,r=e.offsetY;if(void 0===o){var a=e.target.getBoundingClientRect();o=e.changedTouches[0].clientX-a.left,r=e.changedTouches[0].clientY-a.top}var i="seconds"===g||"minutes"===g?function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,o=Ye(6*n,e,t).value;return o*n%60}(o,r,h):function(e,t,n){var o=Ye(30,e,t),r=o.value,a=o.distance,i=r||12;return n?i%=12:a0&&F(e.nativeEvent,"shallow")},ownerState:{disabled:x},className:R.squareMask}),!j&&(0,S.jsxs)(a.Fragment,{children:[(0,S.jsx)(tt,{className:R.pin}),l&&(0,S.jsx)(_e,{type:g,value:w,isInner:E,hasSelected:O})]}),(0,S.jsx)($e,{"aria-activedescendant":b,"aria-label":u(g,l,P),ref:V,role:"listbox",onKeyDown:function(e){if(!A.current)switch(e.key){case"Home":N(0,"partial"),e.preventDefault();break;case"End":N("minutes"===g?59:23,"partial"),e.preventDefault();break;case"ArrowUp":N(w+I,"partial"),e.preventDefault();break;case"ArrowDown":N(w-I,"partial"),e.preventDefault()}},tabIndex:0,className:R.wrapper,children:s})]}),n&&("desktop"===T||o)&&(0,S.jsxs)(a.Fragment,{children:[(0,S.jsx)(nt,{onClick:C?void 0:function(){return d("am")},disabled:x||null===p,ownerState:M,className:R.amButton,children:(0,S.jsx)(Z.Z,{variant:"caption",children:"AM"})}),(0,S.jsx)(ot,{disabled:x||null===p,onClick:C?void 0:function(){return d("pm")},ownerState:M,className:R.pmButton,children:(0,S.jsx)(Z.Z,{variant:"caption",children:"PM"})})]})]})}n(93433);function at(e){return(0,k.Z)("MuiClockNumber",e)}var it=(0,M.Z)("MuiClockNumber",["root","selected","disabled"]),st=["className","disabled","index","inner","label","selected"],lt=(0,x.ZP)("span",{name:"MuiClockNumber",slot:"Root",overridesResolver:function(e,t){return[t.root,(0,w.Z)({},"&.".concat(it.disabled),t.disabled),(0,w.Z)({},"&.".concat(it.selected),t.selected)]}})((function(e){var t,n=e.theme,r=e.ownerState;return(0,o.Z)((t={height:Be,width:Be,position:"absolute",left:"calc((100% - ".concat(Be,"px) / 2)"),display:"inline-flex",justifyContent:"center",alignItems:"center",borderRadius:"50%",color:n.palette.text.primary,fontFamily:n.typography.fontFamily,"&:focused":{backgroundColor:n.palette.background.paper}},(0,w.Z)(t,"&.".concat(it.selected),{color:n.palette.primary.contrastText}),(0,w.Z)(t,"&.".concat(it.disabled),{pointerEvents:"none",color:n.palette.text.disabled}),t),r.inner&&(0,o.Z)({},n.typography.body2,{color:n.palette.text.secondary}))}));function ut(e){var t=(0,i.Z)({props:e,name:"MuiClockNumber"}),n=t.className,a=t.disabled,s=t.index,l=t.inner,u=t.label,c=t.selected,d=(0,r.Z)(t,st),f=t,p=function(e){var t=e.classes,n={root:["root",e.selected&&"selected",e.disabled&&"disabled"]};return(0,y.Z)(n,at,t)}(f),m=s%12/12*Math.PI*2-Math.PI/2,h=(Ve-Be-2)/2*(l?.65:1),v=Math.round(Math.cos(m)*h),b=Math.round(Math.sin(m)*h);return(0,S.jsx)(lt,(0,o.Z)({className:D(n,p.root),"aria-disabled":!!a||void 0,"aria-selected":!!c||void 0,role:"option",style:{transform:"translate(".concat(v,"px, ").concat(b+(Ve-Be)/2,"px")},ownerState:f},d,{children:u}))}var ct=function(e){for(var t=e.ampm,n=e.date,o=e.getClockNumberText,r=e.isDisabled,a=e.selectedId,i=e.utils,s=n?i.getHours(n):null,l=[],u=t?12:23,c=function(e){return null!==s&&(t?12===e?12===s||0===s:s===e||s-12===e:s===e)},d=t?1:0;d<=u;d+=1){var f=d.toString();0===d&&(f="00");var p=!t&&(0===d||d>12);f=i.formatNumber(f);var m=c(d);l.push((0,S.jsx)(ut,{id:m?a:void 0,index:d,inner:p,selected:m,disabled:r(d),label:f,"aria-label":o(f)},d))}return l},dt=function(e){var t=e.utils,n=e.value,o=e.isDisabled,r=e.getClockNumberText,a=e.selectedId,i=t.formatNumber;return[[5,i("05")],[10,i("10")],[15,i("15")],[20,i("20")],[25,i("25")],[30,i("30")],[35,i("35")],[40,i("40")],[45,i("45")],[50,i("50")],[55,i("55")],[0,i("00")]].map((function(e,t){var i=(0,ce.Z)(e,2),s=i[0],l=i[1],u=s===n;return(0,S.jsx)(ut,{label:l,id:u?a:void 0,index:t+1,inner:!1,disabled:o(s),selected:u,"aria-label":r(l)},s)}))},ft=n(13967);function pt(e){return(0,k.Z)("MuiPickersArrowSwitcher",e)}(0,M.Z)("MuiPickersArrowSwitcher",["root","spacer","button"]);var mt=["children","className","components","componentsProps","isLeftDisabled","isLeftHidden","isRightDisabled","isRightHidden","leftArrowButtonText","onLeftClick","onRightClick","rightArrowButtonText"],ht=(0,x.ZP)("div",{name:"MuiPickersArrowSwitcher",slot:"Root",overridesResolver:function(e,t){return t.root}})({display:"flex"}),vt=(0,x.ZP)("div",{name:"MuiPickersArrowSwitcher",slot:"Spacer",overridesResolver:function(e,t){return t.spacer}})((function(e){return{width:e.theme.spacing(3)}})),bt=(0,x.ZP)(N.Z,{name:"MuiPickersArrowSwitcher",slot:"Button",overridesResolver:function(e,t){return t.button}})((function(e){var t=e.ownerState;return(0,o.Z)({},t.hidden&&{visibility:"hidden"})})),gt=a.forwardRef((function(e,t){var n=(0,i.Z)({props:e,name:"MuiPickersArrowSwitcher"}),a=n.children,s=n.className,l=n.components,u=n.componentsProps,c=n.isLeftDisabled,d=n.isLeftHidden,f=n.isRightDisabled,p=n.isRightHidden,m=n.leftArrowButtonText,h=n.onLeftClick,v=n.onRightClick,b=n.rightArrowButtonText,g=(0,r.Z)(n,mt),w="rtl"===(0,ft.Z)().direction,x=(null==u?void 0:u.leftArrowButton)||{},C=(null==l?void 0:l.LeftArrowIcon)||I,k=(null==u?void 0:u.rightArrowButton)||{},M=(null==l?void 0:l.RightArrowIcon)||V,P=n,T=function(e){var t=e.classes;return(0,y.Z)({root:["root"],spacer:["spacer"],button:["button"]},pt,t)}(P);return(0,S.jsxs)(ht,(0,o.Z)({ref:t,className:D(T.root,s),ownerState:P},g,{children:[(0,S.jsx)(bt,(0,o.Z)({as:null==l?void 0:l.LeftArrowButton,size:"small","aria-label":m,title:m,disabled:c,edge:"end",onClick:h},x,{className:D(T.button,x.className),ownerState:(0,o.Z)({},P,x,{hidden:d}),children:w?(0,S.jsx)(M,{}):(0,S.jsx)(C,{})})),a?(0,S.jsx)(Z.Z,{variant:"subtitle1",component:"span",children:a}):(0,S.jsx)(vt,{className:T.spacer,ownerState:P}),(0,S.jsx)(bt,(0,o.Z)({as:null==l?void 0:l.RightArrowButton,size:"small","aria-label":b,title:b,edge:"start",disabled:f,onClick:v},k,{className:D(T.button,k.className),ownerState:(0,o.Z)({},P,k,{hidden:p}),children:w?(0,S.jsx)(C,{}):(0,S.jsx)(M,{})}))]}))})),wt=function(e,t,n){if(n&&(e>=12?"pm":"am")!==t)return"am"===t?e-12:e+12;return e},xt=function(e,t){return 3600*t.getHours(e)+60*t.getMinutes(e)+t.getSeconds(e)},yt=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1?arguments[1]:void 0;return function(n,o){return e?t.isAfter(n,o):xt(n,t)>xt(o,t)}};function Ct(e,t,n){var o=c(),r=function(e,t){return e?t.getHours(e)>=12?"pm":"am":null}(e,o),i=a.useCallback((function(r){var a=null==e?null:function(e,t,n,o){var r=wt(o.getHours(e),t,n);return o.setHours(e,r)}(e,r,Boolean(t),o);n(a,"partial")}),[t,e,n,o]);return{meridiemMode:r,handleMeridiemChange:i}}function Dt(e){return(0,k.Z)("MuiClockPicker",e)}(0,M.Z)("MuiClockPicker",["root","arrowSwitcher"]);var Zt=(0,x.ZP)("div")({overflowX:"hidden",width:320,maxHeight:358,display:"flex",flexDirection:"column",margin:"0 auto"}),kt=(0,x.ZP)(Zt,{name:"MuiClockPicker",slot:"Root",overridesResolver:function(e,t){return t.root}})({display:"flex",flexDirection:"column"}),Mt=(0,x.ZP)(gt,{name:"MuiClockPicker",slot:"ArrowSwitcher",overridesResolver:function(e,t){return t.arrowSwitcher}})({position:"absolute",right:12,top:15}),Pt=function(){},Tt=a.forwardRef((function(e,t){var n=(0,i.Z)({props:e,name:"MuiClockPicker"}),r=n.ampm,s=void 0!==r&&r,l=n.ampmInClock,u=void 0!==l&&l,d=n.autoFocus,m=n.components,h=n.componentsProps,v=n.date,b=n.disableIgnoringDatePartForTimeValidation,g=n.getClockLabelText,w=n.getHoursClockNumberText,x=n.getMinutesClockNumberText,C=n.getSecondsClockNumberText,Z=n.leftArrowButtonText,k=n.maxTime,M=n.minTime,P=n.minutesStep,T=void 0===P?1:P,A=n.rightArrowButtonText,R=n.shouldDisableTime,j=n.showViewSwitcher,E=n.onChange,N=n.view,F=n.views,O=void 0===F?["hours","minutes"]:F,I=n.openTo,V=n.onViewChange,B=n.className,L=n.disabled,H=n.readOnly;Pt({leftArrowButtonText:Z,rightArrowButtonText:A,getClockLabelText:g,getHoursClockNumberText:w,getMinutesClockNumberText:x,getSecondsClockNumberText:C});var W=f(),Y=null!=Z?Z:W.openPreviousView,K=null!=A?A:W.openNextView,z=null!=g?g:W.clockLabelText,q=null!=w?w:W.hoursClockNumberText,U=null!=x?x:W.minutesClockNumberText,X=null!=C?C:W.secondsClockNumberText,_=Fe({view:N,views:O,openTo:I,onViewChange:V,onChange:E}),J=_.openView,G=_.setOpenView,Q=_.nextView,$=_.previousView,ee=_.handleChangeAndOpenNext,te=p(),ne=c(),oe=a.useMemo((function(){return v||ne.setSeconds(ne.setMinutes(ne.setHours(te,0),0),0)}),[v,te,ne]),re=Ct(oe,s,ee),ae=re.meridiemMode,ie=re.handleMeridiemChange,se=a.useCallback((function(e,t){var n=yt(b,ne),o=function(e){var t=e.start,o=e.end;return(!M||!n(M,o))&&(!k||!n(t,k))},r=function(e){return e%(arguments.length>1&&void 0!==arguments[1]?arguments[1]:1)===0&&(!R||!R(e,t))};switch(t){case"hours":var a=wt(e,ae,s),i=ne.setHours(oe,a);return!o({start:ne.setSeconds(ne.setMinutes(i,0),0),end:ne.setSeconds(ne.setMinutes(i,59),59)})||!r(a);case"minutes":var l=ne.setMinutes(oe,e);return!o({start:ne.setSeconds(l,0),end:ne.setSeconds(l,59)})||!r(e,T);case"seconds":var u=ne.setSeconds(oe,e);return!o({start:u,end:u})||!r(e);default:throw new Error("not supported")}}),[s,oe,b,k,ae,M,T,R,ne]),le=(0,Oe.Z)(),ue=a.useMemo((function(){switch(J){case"hours":var e=function(e,t){var n=wt(e,ae,s);ee(ne.setHours(oe,n),t)};return{onChange:e,value:ne.getHours(oe),children:ct({date:v,utils:ne,ampm:s,onChange:e,getClockNumberText:q,isDisabled:function(e){return L||se(e,"hours")},selectedId:le})};case"minutes":var t=ne.getMinutes(oe),n=function(e,t){ee(ne.setMinutes(oe,e),t)};return{value:t,onChange:n,children:dt({utils:ne,value:t,onChange:n,getClockNumberText:U,isDisabled:function(e){return L||se(e,"minutes")},selectedId:le})};case"seconds":var o=ne.getSeconds(oe),r=function(e,t){ee(ne.setSeconds(oe,e),t)};return{value:o,onChange:r,children:dt({utils:ne,value:o,onChange:r,getClockNumberText:X,isDisabled:function(e){return L||se(e,"seconds")},selectedId:le})};default:throw new Error("You must provide the type for ClockView")}}),[J,ne,v,s,q,U,X,ae,ee,oe,se,le,L]),ce=n,de=function(e){var t=e.classes;return(0,y.Z)({root:["root"],arrowSwitcher:["arrowSwitcher"]},Dt,t)}(ce);return(0,S.jsxs)(kt,{ref:t,className:D(de.root,B),ownerState:ce,children:[j&&(0,S.jsx)(Mt,{className:de.arrowSwitcher,leftArrowButtonText:Y,rightArrowButtonText:K,components:m,componentsProps:h,onLeftClick:function(){return G($)},onRightClick:function(){return G(Q)},isLeftDisabled:!$,isRightDisabled:!Q,ownerState:ce}),(0,S.jsx)(rt,(0,o.Z)({autoFocus:d,date:v,ampmInClock:u,type:J,ampm:s,getClockLabelText:z,minutesStep:T,isTimeDisabled:se,meridiemMode:ae,handleMeridiemChange:ie,selectedId:le,disabled:L,readOnly:H},ue))]})})),St=n(30418),At=n(12065),Rt=n(40162);function jt(e){return(0,k.Z)("PrivatePickersMonth",e)}var Et=(0,M.Z)("PrivatePickersMonth",["root","selected"]),Nt=["disabled","onSelect","selected","value","tabIndex","hasFocus","onFocus","onBlur"],Ft=(0,x.ZP)(Z.Z,{name:"PrivatePickersMonth",slot:"Root",overridesResolver:function(e,t){return[t.root,(0,w.Z)({},"&.".concat(Et.selected),t.selected)]}})((function(e){var t=e.theme;return(0,o.Z)({flex:"1 0 33.33%",display:"flex",alignItems:"center",justifyContent:"center",color:"unset",backgroundColor:"transparent",border:0,outline:0},t.typography.subtitle1,(0,w.Z)({margin:"8px 0",height:36,borderRadius:18,cursor:"pointer","&:focus, &:hover":{backgroundColor:(0,At.Fq)(t.palette.action.active,t.palette.action.hoverOpacity)},"&:disabled":{pointerEvents:"none",color:t.palette.text.secondary}},"&.".concat(Et.selected),{color:t.palette.primary.contrastText,backgroundColor:t.palette.primary.main,"&:focus, &:hover":{backgroundColor:t.palette.primary.dark}}))})),Ot=function(){},It=function(e){var t=e.disabled,n=e.onSelect,i=e.selected,s=e.value,l=e.tabIndex,u=e.hasFocus,c=e.onFocus,d=void 0===c?Ot:c,f=e.onBlur,p=void 0===f?Ot:f,m=(0,r.Z)(e,Nt),h=function(e){var t=e.classes,n={root:["root",e.selected&&"selected"]};return(0,y.Z)(n,jt,t)}(e),v=function(){n(s)},b=a.useRef(null);return(0,Rt.Z)((function(){var e;u&&(null==(e=b.current)||e.focus())}),[u]),(0,S.jsx)(Ft,(0,o.Z)({ref:b,component:"button",type:"button",className:h.root,tabIndex:l,onClick:v,onKeyDown:Me(v),color:i?"primary":void 0,variant:i?"h5":"subtitle1",disabled:t,onFocus:function(e){return d(e,s)},onBlur:function(e){return p(e,s)}},m))};function Vt(e){return(0,k.Z)("MuiMonthPicker",e)}(0,M.Z)("MuiMonthPicker",["root"]);var Bt=["className","date","disabled","disableFuture","disablePast","maxDate","minDate","onChange","shouldDisableMonth","readOnly","disableHighlightToday","autoFocus","onMonthFocus","hasFocus","onFocusedViewChange"];var Lt=(0,x.ZP)("div",{name:"MuiMonthPicker",slot:"Root",overridesResolver:function(e,t){return t.root}})({width:310,display:"flex",flexWrap:"wrap",alignContent:"stretch",margin:"0 4px"}),Ht=a.forwardRef((function(e,t){var n=c(),s=p(),l=function(e,t){var n=c(),r=d(),a=(0,i.Z)({props:e,name:t});return(0,o.Z)({disableFuture:!1,disablePast:!1},a,{minDate:h(n,a.minDate,r.minDate),maxDate:h(n,a.maxDate,r.maxDate)})}(e,"MuiMonthPicker"),u=l.className,f=l.date,m=l.disabled,v=l.disableFuture,b=l.disablePast,g=l.maxDate,w=l.minDate,x=l.onChange,C=l.shouldDisableMonth,Z=l.readOnly,k=l.disableHighlightToday,M=l.autoFocus,P=void 0!==M&&M,T=l.onMonthFocus,A=l.hasFocus,R=l.onFocusedViewChange,j=(0,r.Z)(l,Bt),E=l,N=function(e){var t=e.classes;return(0,y.Z)({root:["root"]},Vt,t)}(E),F=(0,St.Z)(),O=a.useMemo((function(){return null!=f?f:n.startOfMonth(s)}),[s,n,f]),I=a.useMemo((function(){return null!=f?n.getMonth(f):k?null:n.getMonth(s)}),[s,f,n,k]),V=a.useState((function(){return I||n.getMonth(s)})),B=(0,ce.Z)(V,2),L=B[0],H=B[1],W=a.useCallback((function(e){var t=n.startOfMonth(b&&n.isAfter(s,w)?s:w),o=n.startOfMonth(v&&n.isBefore(s,g)?s:g);return!!n.isBefore(e,t)||(!!n.isAfter(e,o)||!!C&&C(e))}),[v,b,g,w,s,C,n]),Y=function(e){if(!Z){var t=n.setMonth(O,e);x(t,"finish")}},K=(0,Ne.Z)({name:"MonthPicker",state:"hasFocus",controlled:A,default:P}),z=(0,ce.Z)(K,2),q=z[0],U=z[1],X=a.useCallback((function(e){U(e),R&&R(e)}),[U,R]),_=a.useCallback((function(e){W(n.setMonth(O,e))||(H(e),X(!0),T&&T(e))}),[W,n,O,X,T]);a.useEffect((function(){H((function(e){return null!==I&&e!==I?I:e}))}),[I]);var J=(0,he.Z)((function(e){var t=12;switch(e.key){case"ArrowUp":_((t+L-3)%t),e.preventDefault();break;case"ArrowDown":_((t+L+3)%t),e.preventDefault();break;case"ArrowLeft":_((t+L+("ltr"===F.direction?-1:1))%t),e.preventDefault();break;case"ArrowRight":_((t+L+("ltr"===F.direction?1:-1))%t),e.preventDefault()}})),G=a.useCallback((function(e,t){_(t)}),[_]),Q=a.useCallback((function(){X(!1)}),[X]),$=n.getMonth(s);return(0,S.jsx)(Lt,(0,o.Z)({ref:t,className:D(N.root,u),ownerState:E,onKeyDown:J},j,{children:n.getMonthArray(O).map((function(e){var t=n.getMonth(e),o=n.format(e,"monthShort"),r=m||W(e);return(0,S.jsx)(It,{value:t,selected:t===I,tabIndex:t!==L||r?-1:0,hasFocus:q&&t===L,onSelect:Y,onFocus:G,onBlur:Q,disabled:r,"aria-current":$===t?"date":void 0,children:o},o)}))}))})),Wt=function(e){var t=e.props,n=e.value,o=e.adapter,r=o.utils.date(),a=o.utils.date(n),i=h(o.utils,t.minDate,o.defaultDates.minDate),s=h(o.utils,t.maxDate,o.defaultDates.maxDate);if(null===a)return null;switch(!0){case!o.utils.isValid(n):return"invalidDate";case Boolean(t.shouldDisableDate&&t.shouldDisableDate(a)):return"shouldDisableDate";case Boolean(t.disableFuture&&o.utils.isAfterDay(a,r)):return"disableFuture";case Boolean(t.disablePast&&o.utils.isBeforeDay(a,r)):return"disablePast";case Boolean(i&&o.utils.isBeforeDay(a,i)):return"minDate";case Boolean(s&&o.utils.isAfterDay(a,s)):return"maxDate";default:return null}},Yt=function(e){var t=e.shouldDisableDate,n=e.minDate,o=e.maxDate,r=e.disableFuture,i=e.disablePast,s=u();return a.useCallback((function(e){return null!==Wt({adapter:s,value:e,props:{shouldDisableDate:t,minDate:n,maxDate:o,disableFuture:r,disablePast:i}})}),[s,t,n,o,r,i])},Kt=function(e){var t,n=e.date,r=e.defaultCalendarMonth,i=e.disableFuture,s=e.disablePast,l=e.disableSwitchToMonthOnDayFocus,u=void 0!==l&&l,d=e.maxDate,f=e.minDate,m=e.onMonthChange,h=e.reduceAnimations,v=e.shouldDisableDate,b=p(),g=c(),w=a.useRef(function(e,t,n){return function(r,a){switch(a.type){case"changeMonth":return(0,o.Z)({},r,{slideDirection:a.direction,currentMonth:a.newMonth,isMonthSwitchingAnimating:!e});case"finishMonthSwitchingAnimation":return(0,o.Z)({},r,{isMonthSwitchingAnimating:!1});case"changeFocusedDay":if(null!=r.focusedDay&&null!=a.focusedDay&&n.isSameDay(a.focusedDay,r.focusedDay))return r;var i=null!=a.focusedDay&&!t&&!n.isSameMonth(r.currentMonth,a.focusedDay);return(0,o.Z)({},r,{focusedDay:a.focusedDay,isMonthSwitchingAnimating:i&&!e&&!a.withoutMonthSwitchingAnimation,currentMonth:i?n.startOfMonth(a.focusedDay):r.currentMonth,slideDirection:null!=a.focusedDay&&n.isAfterDay(a.focusedDay,r.currentMonth)?"left":"right"});default:throw new Error("missing support")}}}(Boolean(h),u,g)).current,x=a.useReducer(w,{isMonthSwitchingAnimating:!1,focusedDay:n||b,currentMonth:g.startOfMonth(null!=(t=null!=n?n:r)?t:b),slideDirection:"left"}),y=(0,ce.Z)(x,2),C=y[0],D=y[1],Z=a.useCallback((function(e){D((0,o.Z)({type:"changeMonth"},e)),m&&m(e.newMonth)}),[m]),k=a.useCallback((function(e){var t=null!=e?e:b;g.isSameMonth(t,C.currentMonth)||Z({newMonth:g.startOfMonth(t),direction:g.isAfterDay(t,C.currentMonth)?"left":"right"})}),[C.currentMonth,Z,b,g]),M=Yt({shouldDisableDate:v,minDate:f,maxDate:d,disableFuture:i,disablePast:s}),P=a.useCallback((function(){D({type:"finishMonthSwitchingAnimation"})}),[]),T=a.useCallback((function(e,t){M(e)||D({type:"changeFocusedDay",focusedDay:e,withoutMonthSwitchingAnimation:t})}),[M]);return{calendarState:C,changeMonth:k,changeFocusedDay:T,isDateDisabled:M,onMonthSwitchingAnimationEnd:P,handleChangeMonth:Z}},zt=n(60627),qt=n(75660),Ut=function(e){return(0,k.Z)("MuiPickersFadeTransitionGroup",e)},Xt=((0,M.Z)("MuiPickersFadeTransitionGroup",["root"]),function(e){var t=e.classes;return(0,y.Z)({root:["root"]},Ut,t)}),_t=500,Jt=(0,x.ZP)(qt.Z,{name:"MuiPickersFadeTransitionGroup",slot:"Root",overridesResolver:function(e,t){return t.root}})({display:"block",position:"relative"});function Gt(e){var t=(0,i.Z)({props:e,name:"MuiPickersFadeTransitionGroup"}),n=t.children,o=t.className,r=t.reduceAnimations,a=t.transKey,s=Xt(t);return r?n:(0,S.jsx)(Jt,{className:D(s.root,o),children:(0,S.jsx)(zt.Z,{appear:!1,mountOnEnter:!0,unmountOnExit:!0,timeout:{appear:_t,enter:_t/2,exit:0},children:n},a)})}var Qt=n(95080);function $t(e){return(0,k.Z)("MuiPickersDay",e)}var en=(0,M.Z)("MuiPickersDay",["root","dayWithMargin","dayOutsideMonth","hiddenDaySpacingFiller","today","selected","disabled"]),tn=["autoFocus","className","day","disabled","disableHighlightToday","disableMargin","hidden","isAnimating","onClick","onDaySelect","onFocus","onBlur","onKeyDown","onMouseDown","outsideCurrentMonth","selected","showDaysOutsideCurrentMonth","children","today"],nn=function(e){var t,n=e.theme,r=e.ownerState;return(0,o.Z)({},n.typography.caption,(t={width:36,height:36,borderRadius:"50%",padding:0,backgroundColor:n.palette.background.paper,color:n.palette.text.primary,"&:hover":{backgroundColor:(0,At.Fq)(n.palette.action.active,n.palette.action.hoverOpacity)},"&:focus":(0,w.Z)({backgroundColor:(0,At.Fq)(n.palette.action.active,n.palette.action.hoverOpacity)},"&.".concat(en.selected),{willChange:"background-color",backgroundColor:n.palette.primary.dark})},(0,w.Z)(t,"&.".concat(en.selected),{color:n.palette.primary.contrastText,backgroundColor:n.palette.primary.main,fontWeight:n.typography.fontWeightMedium,transition:n.transitions.create("background-color",{duration:n.transitions.duration.short}),"&:hover":{willChange:"background-color",backgroundColor:n.palette.primary.dark}}),(0,w.Z)(t,"&.".concat(en.disabled),{color:n.palette.text.disabled}),t),!r.disableMargin&&{margin:"0 ".concat(2,"px")},r.outsideCurrentMonth&&r.showDaysOutsideCurrentMonth&&{color:n.palette.text.secondary},!r.disableHighlightToday&&r.today&&(0,w.Z)({},"&:not(.".concat(en.selected,")"),{border:"1px solid ".concat(n.palette.text.secondary)}))},on=function(e,t){var n=e.ownerState;return[t.root,!n.disableMargin&&t.dayWithMargin,!n.disableHighlightToday&&n.today&&t.today,!n.outsideCurrentMonth&&n.showDaysOutsideCurrentMonth&&t.dayOutsideMonth,n.outsideCurrentMonth&&!n.showDaysOutsideCurrentMonth&&t.hiddenDaySpacingFiller]},rn=(0,x.ZP)(Qt.Z,{name:"MuiPickersDay",slot:"Root",overridesResolver:on})(nn),an=(0,x.ZP)("div",{name:"MuiPickersDay",slot:"Root",overridesResolver:on})((function(e){var t=e.theme,n=e.ownerState;return(0,o.Z)({},nn({theme:t,ownerState:n}),{opacity:0,pointerEvents:"none"})})),sn=function(){},ln=a.forwardRef((function(e,t){var n=(0,i.Z)({props:e,name:"MuiPickersDay"}),s=n.autoFocus,l=void 0!==s&&s,u=n.className,d=n.day,f=n.disabled,p=void 0!==f&&f,m=n.disableHighlightToday,h=void 0!==m&&m,v=n.disableMargin,b=void 0!==v&&v,g=n.isAnimating,w=n.onClick,x=n.onDaySelect,C=n.onFocus,Z=void 0===C?sn:C,k=n.onBlur,M=void 0===k?sn:k,P=n.onKeyDown,T=void 0===P?sn:P,A=n.onMouseDown,R=n.outsideCurrentMonth,j=n.selected,E=void 0!==j&&j,N=n.showDaysOutsideCurrentMonth,F=void 0!==N&&N,O=n.children,I=n.today,V=void 0!==I&&I,B=(0,r.Z)(n,tn),L=(0,o.Z)({},n,{autoFocus:l,disabled:p,disableHighlightToday:h,disableMargin:b,selected:E,showDaysOutsideCurrentMonth:F,today:V}),H=function(e){var t=e.selected,n=e.disableMargin,o=e.disableHighlightToday,r=e.today,a=e.disabled,i=e.outsideCurrentMonth,s=e.showDaysOutsideCurrentMonth,l=e.classes,u={root:["root",t&&"selected",a&&"disabled",!n&&"dayWithMargin",!o&&r&&"today",i&&s&&"dayOutsideMonth",i&&!s&&"hiddenDaySpacingFiller"],hiddenDaySpacingFiller:["hiddenDaySpacingFiller"]};return(0,y.Z)(u,$t,l)}(L),W=c(),Y=a.useRef(null),K=(0,le.Z)(Y,t);(0,Ie.Z)((function(){!l||p||g||R||Y.current.focus()}),[l,p,g,R]);return R&&!F?(0,S.jsx)(an,{className:D(H.root,H.hiddenDaySpacingFiller,u),ownerState:L,role:B.role}):(0,S.jsx)(rn,(0,o.Z)({className:D(H.root,u),ownerState:L,ref:K,centerRipple:!0,disabled:p,tabIndex:E?0:-1,onKeyDown:function(e){return T(e,d)},onFocus:function(e){return Z(e,d)},onBlur:function(e){return M(e,d)},onClick:function(e){p||x(d,"finish"),R&&e.currentTarget.focus(),w&&w(e)},onMouseDown:function(e){A&&A(e),R&&e.preventDefault()}},B,{children:O||W.format(d,"dayOfMonth")}))})),un=function(e,t){return e.autoFocus===t.autoFocus&&e.isAnimating===t.isAnimating&&e.today===t.today&&e.disabled===t.disabled&&e.selected===t.selected&&e.disableMargin===t.disableMargin&&e.showDaysOutsideCurrentMonth===t.showDaysOutsideCurrentMonth&&e.disableHighlightToday===t.disableHighlightToday&&e.className===t.className&&e.sx===t.sx&&e.outsideCurrentMonth===t.outsideCurrentMonth&&e.onFocus===t.onFocus&&e.onBlur===t.onBlur&&e.onDaySelect===t.onDaySelect},cn=a.memo(ln,un),dn=n(94578);function fn(e,t){return e.replace(new RegExp("(^|\\s)"+t+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}var pn=n(18875),mn=n(88852),hn=function(e,t){return e&&t&&t.split(" ").forEach((function(t){return o=t,void((n=e).classList?n.classList.remove(o):"string"===typeof n.className?n.className=fn(n.className,o):n.setAttribute("class",fn(n.className&&n.className.baseVal||"",o)));var n,o}))},vn=function(e){function t(){for(var t,n=arguments.length,o=new Array(n),r=0;r *":{position:"absolute",top:0,right:0,left:0}},(0,w.Z)(t,"& .".concat(wn["slideEnter-left"]),{willChange:"transform",transform:"translate(100%)",zIndex:1}),(0,w.Z)(t,"& .".concat(wn["slideEnter-right"]),{willChange:"transform",transform:"translate(-100%)",zIndex:1}),(0,w.Z)(t,"& .".concat(wn.slideEnterActive),{transform:"translate(0%)",transition:n}),(0,w.Z)(t,"& .".concat(wn.slideExit),{transform:"translate(0%)"}),(0,w.Z)(t,"& .".concat(wn["slideExitActiveLeft-left"]),{willChange:"transform",transform:"translate(-100%)",transition:n,zIndex:0}),(0,w.Z)(t,"& .".concat(wn["slideExitActiveLeft-right"]),{willChange:"transform",transform:"translate(100%)",transition:n,zIndex:0}),t})),Cn=function(e){return(0,k.Z)("MuiDayPicker",e)},Dn=((0,M.Z)("MuiDayPicker",["header","weekDayLabel","loadingContainer","slideTransition","monthContainer","weekContainer"]),function(e){return e.charAt(0).toUpperCase()}),Zn=(0,x.ZP)("div",{name:"MuiDayPicker",slot:"Header",overridesResolver:function(e,t){return t.header}})({display:"flex",justifyContent:"center",alignItems:"center"}),kn=(0,x.ZP)(Z.Z,{name:"MuiDayPicker",slot:"WeekDayLabel",overridesResolver:function(e,t){return t.weekDayLabel}})((function(e){return{width:36,height:40,margin:"0 2px",textAlign:"center",display:"flex",justifyContent:"center",alignItems:"center",color:e.theme.palette.text.secondary}})),Mn=(0,x.ZP)("div",{name:"MuiDayPicker",slot:"LoadingContainer",overridesResolver:function(e,t){return t.loadingContainer}})({display:"flex",justifyContent:"center",alignItems:"center",minHeight:240}),Pn=(0,x.ZP)((function(e){var t=e.children,n=e.className,i=e.reduceAnimations,s=e.slideDirection,l=e.transKey,u=(0,r.Z)(e,xn),c=function(e){var t=e.classes;return(0,y.Z)({root:["root"]},gn,t)}(e);if(i)return(0,S.jsx)("div",{className:D(c.root,n),children:t});var d={exit:wn.slideExit,enterActive:wn.slideEnterActive,enter:wn["slideEnter-".concat(s)],exitActive:wn["slideExitActiveLeft-".concat(s)]};return(0,S.jsx)(yn,{className:D(c.root,n),childFactory:function(e){return a.cloneElement(e,{classNames:d})},role:"presentation",children:(0,S.jsx)(bn,(0,o.Z)({mountOnEnter:!0,unmountOnExit:!0,timeout:350,classNames:d},u,{children:t}),l)})}),{name:"MuiDayPicker",slot:"SlideTransition",overridesResolver:function(e,t){return t.slideTransition}})({minHeight:240}),Tn=(0,x.ZP)("div",{name:"MuiDayPicker",slot:"MonthContainer",overridesResolver:function(e,t){return t.monthContainer}})({overflow:"hidden"}),Sn=(0,x.ZP)("div",{name:"MuiDayPicker",slot:"WeekContainer",overridesResolver:function(e,t){return t.weekContainer}})({margin:"".concat(2,"px 0"),display:"flex",justifyContent:"center"});function An(e){var t=p(),n=c(),r=(0,i.Z)({props:e,name:"MuiDayPicker"}),s=function(e){var t=e.classes;return(0,y.Z)({header:["header"],weekDayLabel:["weekDayLabel"],loadingContainer:["loadingContainer"],slideTransition:["slideTransition"],monthContainer:["monthContainer"],weekContainer:["weekContainer"]},Cn,t)}(r),l=r.onFocusedDayChange,u=r.className,d=r.currentMonth,f=r.selectedDays,h=r.disabled,v=r.disableHighlightToday,b=r.focusedDay,g=r.isMonthSwitchingAnimating,w=r.loading,x=r.onSelectedDaysChange,C=r.onMonthSwitchingAnimationEnd,Z=r.readOnly,k=r.reduceAnimations,M=r.renderDay,P=r.renderLoading,T=void 0===P?function(){return(0,S.jsx)("span",{children:"..."})}:P,A=r.showDaysOutsideCurrentMonth,R=r.slideDirection,j=r.TransitionProps,E=r.disablePast,N=r.disableFuture,F=r.minDate,O=r.maxDate,I=r.shouldDisableDate,V=r.dayOfWeekFormatter,B=void 0===V?Dn:V,L=r.hasFocus,H=r.onFocusedViewChange,W=r.gridLabelId,Y=Yt({shouldDisableDate:I,minDate:F,maxDate:O,disablePast:E,disableFuture:N}),K=a.useState((function(){return b||t})),z=(0,ce.Z)(K,2),q=z[0],U=z[1],X=a.useCallback((function(e){H&&H(e)}),[H]),_=a.useCallback((function(e){Z||x(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:"finish")}),[x,Z]),J=a.useCallback((function(e){Y(e)||(l(e),U(e),X(!0))}),[Y,l,X]),G=(0,ft.Z)();function Q(e,t){switch(e.key){case"ArrowUp":J(n.addDays(t,-7)),e.preventDefault();break;case"ArrowDown":J(n.addDays(t,7)),e.preventDefault();break;case"ArrowLeft":var o=n.addDays(t,"ltr"===G.direction?-1:1),r="ltr"===G.direction?n.getPreviousMonth(t):n.getNextMonth(t),a=m({utils:n,date:o,minDate:"ltr"===G.direction?n.startOfMonth(r):o,maxDate:"ltr"===G.direction?o:n.endOfMonth(r),isDateDisabled:Y});J(a||o),e.preventDefault();break;case"ArrowRight":var i=n.addDays(t,"ltr"===G.direction?1:-1),s="ltr"===G.direction?n.getNextMonth(t):n.getPreviousMonth(t),l=m({utils:n,date:i,minDate:"ltr"===G.direction?i:n.startOfMonth(s),maxDate:"ltr"===G.direction?n.endOfMonth(s):i,isDateDisabled:Y});J(l||i),e.preventDefault();break;case"Home":J(n.startOfWeek(t)),e.preventDefault();break;case"End":J(n.endOfWeek(t)),e.preventDefault();break;case"PageUp":J(n.getNextMonth(t)),e.preventDefault();break;case"PageDown":J(n.getPreviousMonth(t)),e.preventDefault()}}function $(e,t){J(t)}function ee(e,t){L&&n.isSameDay(q,t)&&X(!1)}var te=n.getMonth(d),ne=f.filter((function(e){return!!e})).map((function(e){return n.startOfDay(e)})),oe=te,re=a.useMemo((function(){return a.createRef()}),[oe]),ae=n.startOfWeek(t),ie=a.useMemo((function(){var e=n.startOfMonth(d),t=n.endOfMonth(d);return Y(q)||n.isAfterDay(q,t)||n.isBeforeDay(q,e)?m({utils:n,date:q,minDate:e,maxDate:t,disablePast:E,disableFuture:N,isDateDisabled:Y}):q}),[d,N,E,q,Y,n]);return(0,S.jsxs)("div",{role:"grid","aria-labelledby":W,children:[(0,S.jsx)(Zn,{role:"row",className:s.header,children:n.getWeekdays().map((function(e,t){var o;return(0,S.jsx)(kn,{variant:"caption",role:"columnheader","aria-label":n.format(n.addDays(ae,t),"weekday"),className:s.weekDayLabel,children:null!=(o=null==B?void 0:B(e))?o:e},e+t.toString())}))}),w?(0,S.jsx)(Mn,{className:s.loadingContainer,children:T()}):(0,S.jsx)(Pn,(0,o.Z)({transKey:oe,onExited:C,reduceAnimations:k,slideDirection:R,className:D(u,s.slideTransition)},j,{nodeRef:re,children:(0,S.jsx)(Tn,{ref:re,role:"rowgroup",className:s.monthContainer,children:n.getWeekArray(d).map((function(e){return(0,S.jsx)(Sn,{role:"row",className:s.weekContainer,children:e.map((function(e){var r=null!==ie&&n.isSameDay(e,ie),i=ne.some((function(t){return n.isSameDay(t,e)})),s=n.isSameDay(e,t),l={key:null==e?void 0:e.toString(),day:e,isAnimating:g,disabled:h||Y(e),autoFocus:L&&r,today:s,outsideCurrentMonth:n.getMonth(e)!==te,selected:i,disableHighlightToday:v,showDaysOutsideCurrentMonth:A,onKeyDown:Q,onFocus:$,onBlur:ee,onDaySelect:_,tabIndex:r?0:-1,role:"gridcell","aria-selected":i};return s&&(l["aria-current"]="date"),M?M(e,ne,l):(0,a.createElement)(cn,(0,o.Z)({},l,{key:l.key}))}))},"week-".concat(e[0]))}))})}))]})}var Rn=function(e){return(0,k.Z)("MuiPickersCalendarHeader",e)},jn=((0,M.Z)("MuiPickersCalendarHeader",["root","labelContainer","label","switchViewButton","switchViewIcon"]),(0,x.ZP)("div",{name:"MuiPickersCalendarHeader",slot:"Root",overridesResolver:function(e,t){return t.root}})({display:"flex",alignItems:"center",marginTop:16,marginBottom:8,paddingLeft:24,paddingRight:12,maxHeight:30,minHeight:30})),En=(0,x.ZP)("div",{name:"MuiPickersCalendarHeader",slot:"LabelContainer",overridesResolver:function(e,t){return t.labelContainer}})((function(e){var t=e.theme;return(0,o.Z)({display:"flex",maxHeight:30,overflow:"hidden",alignItems:"center",cursor:"pointer",marginRight:"auto"},t.typography.body1,{fontWeight:t.typography.fontWeightMedium})})),Nn=(0,x.ZP)("div",{name:"MuiPickersCalendarHeader",slot:"Label",overridesResolver:function(e,t){return t.label}})({marginRight:6}),Fn=(0,x.ZP)(N.Z,{name:"MuiPickersCalendarHeader",slot:"SwitchViewButton",overridesResolver:function(e,t){return t.switchViewButton}})({marginRight:"auto"}),On=(0,x.ZP)(O,{name:"MuiPickersCalendarHeader",slot:"SwitchViewIcon",overridesResolver:function(e,t){return t.switchViewIcon}})((function(e){var t=e.theme,n=e.ownerState;return(0,o.Z)({willChange:"transform",transition:t.transitions.create("transform"),transform:"rotate(0deg)"},"year"===n.openView&&{transform:"rotate(180deg)"})})),In=function(){};function Vn(e){var t=(0,i.Z)({props:e,name:"MuiPickersCalendarHeader"}),n=t.components,r=void 0===n?{}:n,s=t.componentsProps,l=void 0===s?{}:s,u=t.currentMonth,d=t.disabled,p=t.disableFuture,m=t.disablePast,h=t.getViewSwitchingButtonText,v=t.leftArrowButtonText,b=t.maxDate,g=t.minDate,w=t.onMonthChange,x=t.onViewChange,C=t.openView,D=t.reduceAnimations,Z=t.rightArrowButtonText,k=t.views,M=t.labelId;In({leftArrowButtonText:v,rightArrowButtonText:Z,getViewSwitchingButtonText:h});var P=f(),T=null!=v?v:P.previousMonth,A=null!=Z?Z:P.nextMonth,R=null!=h?h:P.calendarViewSwitchingButtonAriaLabel,j=c(),E=function(e){var t=e.classes;return(0,y.Z)({root:["root"],labelContainer:["labelContainer"],label:["label"],switchViewButton:["switchViewButton"],switchViewIcon:["switchViewIcon"]},Rn,t)}(t),N=l.switchViewButton||{},F=function(e,t){var n=t.disableFuture,o=t.maxDate,r=c();return a.useMemo((function(){var t=r.date(),a=r.startOfMonth(n&&r.isBefore(t,o)?t:o);return!r.isAfter(a,e)}),[n,o,e,r])}(u,{disableFuture:p,maxDate:b}),O=function(e,t){var n=t.disablePast,o=t.minDate,r=c();return a.useMemo((function(){var t=r.date(),a=r.startOfMonth(n&&r.isAfter(t,o)?t:o);return!r.isBefore(a,e)}),[n,o,e,r])}(u,{disablePast:m,minDate:g});if(1===k.length&&"year"===k[0])return null;var I=t;return(0,S.jsxs)(jn,{ownerState:I,className:E.root,children:[(0,S.jsxs)(En,{role:"presentation",onClick:function(){if(1!==k.length&&x&&!d)if(2===k.length)x(k.find((function(e){return e!==C}))||k[0]);else{var e=0!==k.indexOf(C)?0:1;x(k[e])}},ownerState:I,"aria-live":"polite",className:E.labelContainer,children:[(0,S.jsx)(Gt,{reduceAnimations:D,transKey:j.format(u,"monthAndYear"),children:(0,S.jsx)(Nn,{id:M,ownerState:I,className:E.label,children:j.format(u,"monthAndYear")})}),k.length>1&&!d&&(0,S.jsx)(Fn,(0,o.Z)({size:"small",as:r.SwitchViewButton,"aria-label":R(C),className:E.switchViewButton},N,{children:(0,S.jsx)(On,{as:r.SwitchViewIcon,ownerState:I,className:E.switchViewIcon})}))]}),(0,S.jsx)(zt.Z,{in:"day"===C,children:(0,S.jsx)(gt,{leftArrowButtonText:T,rightArrowButtonText:A,components:r,componentsProps:l,onLeftClick:function(){return w(j.getPreviousMonth(u),"right")},onRightClick:function(){return w(j.getNextMonth(u),"left")},isLeftDisabled:O,isRightDisabled:F})})]})}var Bn=n(88637),Ln=n(14036);function Hn(e){return(0,k.Z)("PrivatePickersYear",e)}var Wn=(0,M.Z)("PrivatePickersYear",["root","modeDesktop","modeMobile","yearButton","selected","disabled"]),Yn=["autoFocus","className","children","disabled","onClick","onKeyDown","value","tabIndex","onFocus","onBlur"],Kn=(0,x.ZP)("div",{name:"PrivatePickersYear",slot:"Root",overridesResolver:function(e,t){return[t.root,(0,w.Z)({},"&.".concat(Wn.modeDesktop),t.modeDesktop),(0,w.Z)({},"&.".concat(Wn.modeMobile),t.modeMobile)]}})((function(e){var t=e.ownerState;return(0,o.Z)({flexBasis:"33.3%",display:"flex",alignItems:"center",justifyContent:"center"},"desktop"===(null==t?void 0:t.wrapperVariant)&&{flexBasis:"25%"})})),zn=(0,x.ZP)("button",{name:"PrivatePickersYear",slot:"Button",overridesResolver:function(e,t){return[t.button,(0,w.Z)({},"&.".concat(Wn.disabled),t.disabled),(0,w.Z)({},"&.".concat(Wn.selected),t.selected)]}})((function(e){var t,n=e.theme;return(0,o.Z)({color:"unset",backgroundColor:"transparent",border:0,outline:0},n.typography.subtitle1,(t={margin:"8px 0",height:36,width:72,borderRadius:18,cursor:"pointer","&:focus, &:hover":{backgroundColor:(0,At.Fq)(n.palette.action.active,n.palette.action.hoverOpacity)}},(0,w.Z)(t,"&.".concat(Wn.disabled),{color:n.palette.text.secondary}),(0,w.Z)(t,"&.".concat(Wn.selected),{color:n.palette.primary.contrastText,backgroundColor:n.palette.primary.main,"&:focus, &:hover":{backgroundColor:n.palette.primary.dark}}),t))})),qn=function(){},Un=a.forwardRef((function(e,t){var n=e.autoFocus,i=e.className,s=e.children,l=e.disabled,u=e.onClick,c=e.onKeyDown,d=e.value,f=e.tabIndex,p=e.onFocus,m=void 0===p?qn:p,h=e.onBlur,v=void 0===h?qn:h,b=(0,r.Z)(e,Yn),g=a.useRef(null),w=(0,le.Z)(g,t),x=a.useContext(ue),C=(0,o.Z)({},e,{wrapperVariant:x}),Z=function(e){var t=e.wrapperVariant,n=e.disabled,o=e.selected,r=e.classes,a={root:["root",t&&"mode".concat((0,Ln.Z)(t))],yearButton:["yearButton",n&&"disabled",o&&"selected"]};return(0,y.Z)(a,Hn,r)}(C);return a.useEffect((function(){n&&g.current.focus()}),[n]),(0,S.jsx)(Kn,{className:D(Z.root,i),ownerState:C,children:(0,S.jsx)(zn,(0,o.Z)({ref:w,disabled:l,type:"button",tabIndex:l?-1:f,onClick:function(e){return u(e,d)},onKeyDown:function(e){return c(e,d)},onFocus:function(e){return m(e,d)},onBlur:function(e){return v(e,d)},className:Z.yearButton,ownerState:C},b,{children:s}))})}));function Xn(e){return(0,k.Z)("MuiYearPicker",e)}(0,M.Z)("MuiYearPicker",["root"]);var _n=(0,x.ZP)("div",{name:"MuiYearPicker",slot:"Root",overridesResolver:function(e,t){return t.root}})({display:"flex",flexDirection:"row",flexWrap:"wrap",overflowY:"auto",height:"100%",padding:"0 4px",maxHeight:"304px"}),Jn=a.forwardRef((function(e,t){var n=p(),r=(0,ft.Z)(),s=c(),l=function(e,t){var n=c(),r=d(),a=(0,i.Z)({props:e,name:t});return(0,o.Z)({disablePast:!1,disableFuture:!1},a,{minDate:h(n,a.minDate,r.minDate),maxDate:h(n,a.maxDate,r.maxDate)})}(e,"MuiYearPicker"),u=l.autoFocus,f=l.className,m=l.date,v=l.disabled,b=l.disableFuture,g=l.disablePast,w=l.maxDate,x=l.minDate,C=l.onChange,Z=l.readOnly,k=l.shouldDisableYear,M=l.disableHighlightToday,P=l.onYearFocus,T=l.hasFocus,A=l.onFocusedViewChange,R=l,j=function(e){var t=e.classes;return(0,y.Z)({root:["root"]},Xn,t)}(R),E=a.useMemo((function(){return null!=m?m:s.startOfYear(n)}),[n,s,m]),N=a.useMemo((function(){return null!=m?s.getYear(m):M?null:s.getYear(n)}),[n,m,s,M]),F=a.useContext(ue),O=a.useRef(null),I=a.useState((function(){return N||s.getYear(n)})),V=(0,ce.Z)(I,2),B=V[0],L=V[1],H=(0,Bn.Z)({name:"YearPicker",state:"hasFocus",controlled:T,default:u}),W=(0,ce.Z)(H,2),Y=W[0],K=W[1],z=a.useCallback((function(e){K(e),A&&A(e)}),[K,A]),q=a.useCallback((function(e){return!(!g||!s.isBeforeYear(e,n))||(!(!b||!s.isAfterYear(e,n))||(!(!x||!s.isBeforeYear(e,x))||(!(!w||!s.isAfterYear(e,w))||!(!k||!k(e)))))}),[b,g,w,x,n,k,s]),U=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"finish";if(!Z){var o=s.setYear(E,t);C(o,n)}},X=a.useCallback((function(e){q(s.setYear(E,e))||(L(e),z(!0),null==P||P(e))}),[q,s,E,z,P]);a.useEffect((function(){L((function(e){return null!==N&&e!==N?N:e}))}),[N]);var _="desktop"===F?4:3,J=a.useCallback((function(e,t){switch(e.key){case"ArrowUp":X(t-_),e.preventDefault();break;case"ArrowDown":X(t+_),e.preventDefault();break;case"ArrowLeft":X(t+("ltr"===r.direction?-1:1)),e.preventDefault();break;case"ArrowRight":X(t+("ltr"===r.direction?1:-1)),e.preventDefault()}}),[X,r.direction,_]),G=a.useCallback((function(e,t){X(t)}),[X]),Q=a.useCallback((function(e,t){B===t&&z(!1)}),[B,z]),$=s.getYear(n),ee=a.useRef(null),te=(0,le.Z)(t,ee);return a.useEffect((function(){if(!u&&null!==ee.current){var e=ee.current.querySelector('[tabindex="0"]');if(e){var t=e.offsetHeight,n=e.offsetTop,o=ee.current.clientHeight,r=ee.current.scrollTop,a=n+t;t>o||n1&&(r=t,a=n),n=Math.max(a,n),t=Math.max(t,r)}return t};if(!0===e.mask&&u&&!d){var g=b(a),w=h(a.substr(g))[0];g=a.indexOf(w,g),a="".concat(a.substr(0,g)).concat(a.substr(g+1))}var x=e.format(a);null==i||l.selectionStart!==a.length||d||(u?x=i(x):""===h(x.slice(-1))&&(x=x.slice(0,-1)));var y=r?r(x):x;return s===y?n():e.onChange(y),function(){var t=b(x);if(null!=e.mask&&(u||c&&!f))for(;x[t]&&""===h(x[t]);)t+=1;l.selectionStart=l.selectionEnd=t+(f?1+m:0)}}})),(0,a.useEffect)((function(){var e=function(e){"Delete"===e.code&&(l.current=!0)},t=function(e){"Delete"===e.code&&(l.current=!1)};return document.addEventListener("keydown",e),document.addEventListener("keyup",t),function(){document.removeEventListener("keydown",e),document.removeEventListener("keyup",t)}}),[]),{value:null!=o.current?o.current[0]:s,onChange:function(t){var r=t.target.value;o.current=[r,t.target,r.length>s.length,l.current,s===e.format(r)],n()}}},ao=function(e,t,n){var o=e.date(t);return null===t?"":e.isValid(o)?e.formatByString(o,n):""},io="_",so="2019-11-21T22:30:00.000",lo="2019-01-01T09:00:00.000";function uo(e,t,n,o){if(!e)return!1;var r=o.formatByString(o.date(lo),t).replace(n,io),a=o.formatByString(o.date(so),t).replace(n,"_"),i=a===r&&e===a;return!i&&o.lib,i}var co=function(e){var t=e.acceptRegex,n=void 0===t?/[\d]/gi:t,r=e.disabled,i=e.disableMaskedInput,s=e.ignoreInvalidInputs,l=e.inputFormat,u=e.inputProps,d=e.label,f=e.mask,p=e.onChange,m=e.rawValue,h=e.readOnly,v=e.rifmFormatter,b=e.TextFieldProps,g=e.validationError,w=c(),x=w.getFormatHelperText(l),y=a.useMemo((function(){if(i)return{shouldUseMaskedInput:!1,maskToUse:""};var e=function(e,t,n,o){if(e)return e;var r=o.formatByString(o.date(lo),t).replace(n,io);return r===o.formatByString(o.date(so),t).replace(n,"_")?r:""}(f,l,n,w);return{shouldUseMaskedInput:uo(e,l,n,w),maskToUse:e}}),[n,i,l,f,w]),C=y.shouldUseMaskedInput,D=y.maskToUse,Z=a.useMemo((function(){return C&&D?function(e,t){return function(n){var o=0;return n.split("").map((function(r,a){if(t.lastIndex=0,o>e.length-1)return"";var i=e[o],s=e[o+1],l=t.test(r)?r:"",u=i===io?l:i+l;return o+=u.length,a===n.length-1&&s&&s!==io?u?u+s:"":u})).join("")}}(D,n):function(e){return e}}),[n,D,C]),k=null===m?null:w.date(m),M=a.useState(k),P=(0,ce.Z)(M,2),T=P[0],S=P[1],A=a.useState(ao(w,m,l)),R=(0,ce.Z)(A,2),j=R[0],E=R[1],N=a.useRef(),F=a.useRef(w.locale),O=a.useRef(l);a.useEffect((function(){var e=m!==N.current,t=w.locale!==F.current,n=l!==O.current;if(N.current=m,F.current=w.locale,O.current=l,e||t||n){var o=null===m?null:w.date(m),r=null===m||w.isValid(o),a=null===T&&null===o;if(null!==T&&null!==o){var i=w.isEqual(T,o);if(i)a=!0;else{var s=Math.abs(w.getDiff(T,o));a=0===s?i:s<1e3}}if(t||n||r&&!a){var u=ao(w,m,l);S(o),E(u)}}}),[w,m,l,T]);var I=function(e){var t=""===e||e===f?"":e;E(t);var n=null===t?null:w.parse(t,l);s&&!w.isValid(n)||(S(n),p(n,t||void 0))},V=ro({value:j,onChange:I,format:v||Z}),B=C?V:{value:j,onChange:function(e){I(e.currentTarget.value)}};return(0,o.Z)({label:d,disabled:r,error:g,inputProps:(0,o.Z)({},B,{disabled:r,placeholder:x,readOnly:h,type:C?"tel":"text"},u)},b)},fo=["className","components","disableOpenPicker","getOpenDialogAriaText","InputAdornmentProps","InputProps","inputRef","openPicker","OpenPickerButtonProps","renderInput"],po=a.forwardRef((function(e,t){var n=e.className,a=e.components,i=void 0===a?{}:a,s=e.disableOpenPicker,l=e.getOpenDialogAriaText,u=e.InputAdornmentProps,d=e.InputProps,p=e.inputRef,m=e.openPicker,h=e.OpenPickerButtonProps,v=e.renderInput,b=(0,r.Z)(e,fo),g=f(),x=null!=l?l:g.openDatePickerDialogue,y=c(),C=co(b),D=(null==u?void 0:u.position)||"end",Z=i.OpenPickerIcon||B;return v((0,o.Z)({ref:t,inputRef:p,className:n},C,{InputProps:(0,o.Z)({},d,(0,w.Z)({},"".concat(D,"Adornment"),s?void 0:(0,S.jsx)(oo.Z,(0,o.Z)({position:D},u,{children:(0,S.jsx)(N.Z,(0,o.Z)({edge:D,disabled:b.disabled||b.readOnly,"aria-label":x(b.rawValue,y)},h,{onClick:m,children:(0,S.jsx)(Z,{})}))}))))}))}));function mo(){return"undefined"===typeof window?"portrait":window.screen&&window.screen.orientation&&window.screen.orientation.angle?90===Math.abs(window.screen.orientation.angle)?"landscape":"portrait":window.orientation&&90===Math.abs(Number(window.orientation))?"landscape":"portrait"}function ho(e){return(0,k.Z)("MuiCalendarOrClockPicker",e)}(0,M.Z)("MuiCalendarOrClockPicker",["root","mobileKeyboardInputView"]);var vo=["autoFocus","className","parsedValue","DateInputProps","isMobileKeyboardViewOpen","onDateChange","onViewChange","openTo","orientation","showToolbar","toggleMobileKeyboardView","ToolbarComponent","toolbarFormat","toolbarPlaceholder","toolbarTitle","views","dateRangeIcon","timeIcon","hideTabs","classes"],bo=(0,x.ZP)("div",{name:"MuiCalendarOrClockPicker",slot:"MobileKeyboardInputView",overridesResolver:function(e,t){return t.mobileKeyboardInputView}})({padding:"16px 24px"}),go=(0,x.ZP)("div",{name:"MuiCalendarOrClockPicker",slot:"Root",overridesResolver:function(e,t){return t.root}})((function(e){var t=e.ownerState;return(0,o.Z)({display:"flex",flexDirection:"column"},t.isLandscape&&{flexDirection:"row"})})),wo={fullWidth:!0},xo=function(e){return"year"===e||"month"===e||"day"===e},yo=function(e){return"hours"===e||"minutes"===e||"seconds"===e};function Co(e){var t,n,s=(0,i.Z)({props:e,name:"MuiCalendarOrClockPicker"}),l=s.autoFocus,u=s.parsedValue,c=s.DateInputProps,d=s.isMobileKeyboardViewOpen,f=s.onDateChange,p=s.onViewChange,m=s.openTo,h=s.orientation,v=s.showToolbar,b=s.toggleMobileKeyboardView,g=s.ToolbarComponent,w=void 0===g?function(){return null}:g,x=s.toolbarFormat,C=s.toolbarPlaceholder,D=s.toolbarTitle,Z=s.views,k=s.dateRangeIcon,M=s.timeIcon,P=s.hideTabs,T=(0,r.Z)(s,vo),A=null==(t=T.components)?void 0:t.Tabs,R=function(e,t){var n=a.useState(mo),o=(0,ce.Z)(n,2),r=o[0],i=o[1];return(0,Ie.Z)((function(){var e=function(){i(mo())};return window.addEventListener("orientationchange",e),function(){window.removeEventListener("orientationchange",e)}}),[]),!ke(e,["hours","minutes","seconds"])&&"landscape"===(t||r)}(Z,h),j=a.useContext(ue),E=function(e){var t=e.classes;return(0,y.Z)({root:["root"],mobileKeyboardInputView:["mobileKeyboardInputView"]},ho,t)}(s),N=null!=v?v:"desktop"!==j,F=!P&&"undefined"!==typeof window&&window.innerHeight>667,O=a.useCallback((function(e,t){f(e,j,t)}),[f,j]);var I=Fe({view:void 0,views:Z,openTo:m,onChange:O,onViewChange:a.useCallback((function(e){d&&b(),p&&p(e)}),[d,p,b])}),V=I.openView,B=I.setOpenView,L=I.handleChangeAndOpenNext,H=function(e){var t=e.autoFocus,n=e.openView,o=a.useState(t?n:null),r=(0,ce.Z)(o,2),i=r[0],s=r[1];return{focusedView:i,setFocusedView:a.useCallback((function(e){return function(t){s(t?e:function(t){return e===t?null:t})}}),[])}}({autoFocus:l,openView:V}),W=H.focusedView,Y=H.setFocusedView;return(0,S.jsxs)(go,{ownerState:{isLandscape:R},className:E.root,children:[N&&(0,S.jsx)(w,(0,o.Z)({},T,{views:Z,isLandscape:R,parsedValue:u,onChange:O,setOpenView:B,openView:V,toolbarTitle:D,toolbarFormat:x,toolbarPlaceholder:C,isMobileKeyboardViewOpen:d,toggleMobileKeyboardView:b})),F&&!!A&&(0,S.jsx)(A,(0,o.Z)({dateRangeIcon:k,timeIcon:M,view:V,onChange:B},null==(n=T.componentsProps)?void 0:n.tabs)),(0,S.jsx)(Zt,{children:d?(0,S.jsx)(bo,{className:E.mobileKeyboardInputView,children:(0,S.jsx)(po,(0,o.Z)({},c,{ignoreInvalidInputs:!0,disableOpenPicker:!0,TextFieldProps:wo}))}):(0,S.jsxs)(a.Fragment,{children:[xo(V)&&(0,S.jsx)(no,(0,o.Z)({autoFocus:l,date:u,onViewChange:B,onChange:L,view:V,views:Z.filter(xo),focusedView:W,onFocusedViewChange:Y},T)),yo(V)&&(0,S.jsx)(Tt,(0,o.Z)({},T,{autoFocus:l,date:u,view:V,views:Z.filter(yo),onChange:L,onViewChange:B,showViewSwitcher:"desktop"===j}))]})})]})}var Do=function(e){var t=e.adapter,n=e.value,o=e.props,r=o.minTime,a=o.maxTime,i=o.minutesStep,s=o.shouldDisableTime,l=o.disableIgnoringDatePartForTimeValidation,u=t.utils.date(n),c=yt(l,t.utils);if(null===n)return null;switch(!0){case!t.utils.isValid(n):return"invalidDate";case Boolean(r&&c(r,u)):return"minTime";case Boolean(a&&c(u,a)):return"maxTime";case Boolean(s&&s(t.utils.getHours(u),"hours")):return"shouldDisableTime-hours";case Boolean(s&&s(t.utils.getMinutes(u),"minutes")):return"shouldDisableTime-minutes";case Boolean(s&&s(t.utils.getSeconds(u),"seconds")):return"shouldDisableTime-seconds";case Boolean(i&&t.utils.getMinutes(u)%i!==0):return"minutesStep";default:return null}},Zo=["minDate","maxDate","disableFuture","shouldDisableDate","disablePast"],ko=function(e){var t=e.props,n=e.value,o=e.adapter,a=t.minDate,i=t.maxDate,s=t.disableFuture,l=t.shouldDisableDate,u=t.disablePast,c=(0,r.Z)(t,Zo),d=Wt({adapter:o,value:n,props:{minDate:a,maxDate:i,disableFuture:s,shouldDisableDate:l,disablePast:u}});return null!==d?d:Do({adapter:o,value:n,props:c})},Mo=function(e,t){return e===t};function Po(e){return function(e,t,n){var o=e.value,r=e.onError,i=u(),s=a.useRef(null),l=t({adapter:i,value:o,props:e});return a.useEffect((function(){r&&!n(l,s.current)&&r(l,o),s.current=l}),[n,r,s,l,o]),l}(e,ko,Mo)}var To=function(e,t){var n=e.onAccept,r=e.onChange,i=e.value,s=e.closeOnSelect,l=c(),u=function(e){var t=e.open,n=e.onOpen,o=e.onClose,r=a.useRef("boolean"===typeof t).current,i=a.useState(!1),s=(0,ce.Z)(i,2),l=s[0],u=s[1];return a.useEffect((function(){if(r){if("boolean"!==typeof t)throw new Error("You must not mix controlling and uncontrolled mode for `open` prop");u(t)}}),[r,t]),{isOpen:l,setIsOpen:a.useCallback((function(e){r||u(e),e&&n&&n(),!e&&o&&o()}),[r,n,o])}}(e),d=u.isOpen,f=u.setIsOpen,p=a.useMemo((function(){return t.parseInput(l,i)}),[t,l,i]),m=a.useState(p),h=(0,ce.Z)(m,2),v=h[0],b=h[1],g=a.useState((function(){return{committed:p,draft:p,resetFallback:p}})),w=(0,ce.Z)(g,2),x=w[0],y=w[1],C=a.useCallback((function(e){y((function(t){switch(e.action){case"setAll":case"acceptAndClose":return{draft:e.value,committed:e.value,resetFallback:e.value};case"setCommitted":return(0,o.Z)({},t,{draft:e.value,committed:e.value});case"setDraft":return(0,o.Z)({},t,{draft:e.value});default:return t}})),(e.forceOnChangeCall||!e.skipOnChangeCall&&!t.areValuesEqual(l,x.committed,e.value))&&r(e.value),"acceptAndClose"===e.action&&(f(!1),n&&!t.areValuesEqual(l,x.resetFallback,e.value)&&n(e.value))}),[n,r,f,x,l,t]);a.useEffect((function(){l.isValid(p)&&b(p)}),[l,p]),a.useEffect((function(){d&&C({action:"setAll",value:p,skipOnChangeCall:!0})}),[d]),t.areValuesEqual(l,x.committed,p)||C({action:"setCommitted",value:p,skipOnChangeCall:!0});var D=a.useMemo((function(){return{open:d,onClear:function(){C({value:t.emptyValue,action:"acceptAndClose",forceOnChangeCall:!t.areValuesEqual(l,i,t.emptyValue)})},onAccept:function(){C({value:x.draft,action:"acceptAndClose",forceOnChangeCall:!t.areValuesEqual(l,i,p)})},onDismiss:function(){C({value:x.committed,action:"acceptAndClose"})},onCancel:function(){C({value:x.resetFallback,action:"acceptAndClose"})},onSetToday:function(){C({value:t.getTodayValue(l),action:"acceptAndClose"})}}}),[C,d,l,x,t,i,p]),Z=a.useState(!1),k=(0,ce.Z)(Z,2),M=k[0],P=k[1],T=a.useMemo((function(){return{parsedValue:x.draft,isMobileKeyboardViewOpen:M,toggleMobileKeyboardView:function(){return P(!M)},onDateChange:function(e,t){switch(arguments.length>2&&void 0!==arguments[2]?arguments[2]:"partial"){case"shallow":return C({action:"setDraft",value:e,skipOnChangeCall:!0});case"partial":return C({action:"setDraft",value:e});case"finish":return C((null!=s?s:"desktop"===t)?{value:e,action:"acceptAndClose"}:{value:e,action:"setCommitted"});default:throw new Error("MUI: Invalid selectionState passed to `onDateChange`")}}}}),[C,M,x.draft,s]),S=a.useCallback((function(e,n){var o=t.valueReducer?t.valueReducer(l,v,e):e;r(o,n)}),[r,t,v,l]),A={pickerProps:T,inputProps:a.useMemo((function(){return{onChange:S,open:d,rawValue:i,openPicker:function(){return f(!0)}}}),[S,d,i,f]),wrapperProps:D};return a.useDebugValue(A,(function(){return{MuiPickerState:{dateState:x,other:A}}})),A},So=n(43896),Ao=n(18073),Ro=n(85860);function jo(e){return(0,k.Z)("MuiDateTimePickerTabs",e)}(0,M.Z)("MuiDateTimePickerTabs",["root"]);var Eo=(0,x.ZP)(Ao.Z,{name:"MuiDateTimePickerTabs",slot:"Root",overridesResolver:function(e,t){return t.root}})((function(e){var t=e.ownerState,n=e.theme;return(0,o.Z)({boxShadow:"0 -1px 0 0 inset ".concat(n.palette.divider)},"desktop"===t.wrapperVariant&&(0,w.Z)({order:1,boxShadow:"0 1px 0 0 inset ".concat(n.palette.divider)},"& .".concat(Ro.Z.indicator),{bottom:"auto",top:0}))})),No=function(e){var t,n=(0,i.Z)({props:e,name:"MuiDateTimePickerTabs"}),r=n.dateRangeIcon,s=void 0===r?(0,S.jsx)(H,{}):r,l=n.onChange,u=n.timeIcon,c=void 0===u?(0,S.jsx)(Y,{}):u,d=n.view,p=f(),m=a.useContext(ue),h=(0,o.Z)({},n,{wrapperVariant:m}),v=function(e){var t=e.classes;return(0,y.Z)({root:["root"]},jo,t)}(h);return(0,S.jsxs)(Eo,{ownerState:h,variant:"fullWidth",value:(t=d,["day","month","year"].includes(t)?"date":"time"),onChange:function(e,t){l("date"===t?"day":"hours")},className:v.root,children:[(0,S.jsx)(So.Z,{value:"date","aria-label":p.dateTableLabel,icon:(0,S.jsx)(a.Fragment,{children:s})}),(0,S.jsx)(So.Z,{value:"time","aria-label":p.timeTableLabel,icon:(0,S.jsx)(a.Fragment,{children:c})})]})},Fo=["onChange","PaperProps","PopperProps","ToolbarComponent","TransitionComponent","value","components","componentsProps","hideTabs"],Oo=a.forwardRef((function(e,t){var n=v(e,"MuiDesktopDateTimePicker"),i=null!==Po(n),s=To(n,b),l=s.pickerProps,u=s.inputProps,c=s.wrapperProps,d=n.PaperProps,f=n.PopperProps,p=n.ToolbarComponent,m=void 0===p?se:p,h=n.TransitionComponent,g=n.components,w=n.componentsProps,x=n.hideTabs,y=void 0===x||x,C=(0,r.Z)(n,Fo),D=a.useMemo((function(){return(0,o.Z)({Tabs:No},g)}),[g]),Z=(0,o.Z)({},u,C,{components:D,componentsProps:w,ref:t,validationError:i});return(0,S.jsx)(Ee,(0,o.Z)({},c,{DateInputProps:Z,KeyboardDateInputComponent:po,PopperProps:f,PaperProps:d,TransitionComponent:h,components:D,componentsProps:w,children:(0,S.jsx)(Co,(0,o.Z)({},l,{autoFocus:!0,toolbarTitle:n.label||n.toolbarTitle,ToolbarComponent:m,DateInputProps:Z,components:D,componentsProps:w,hideTabs:y},C))}))}));function Io(e){return(0,k.Z)("MuiDialogContent",e)}(0,M.Z)("MuiDialogContent",["root","dividers"]);var Vo=(0,M.Z)("MuiDialogTitle",["root"]),Bo=["className","dividers"],Lo=(0,x.ZP)("div",{name:"MuiDialogContent",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState;return[t.root,n.dividers&&t.dividers]}})((function(e){var t=e.theme,n=e.ownerState;return(0,o.Z)({flex:"1 1 auto",WebkitOverflowScrolling:"touch",overflowY:"auto",padding:"20px 24px"},n.dividers?{padding:"16px 24px",borderTop:"1px solid ".concat((t.vars||t).palette.divider),borderBottom:"1px solid ".concat((t.vars||t).palette.divider)}:(0,w.Z)({},".".concat(Vo.root," + &"),{paddingTop:0}))})),Ho=a.forwardRef((function(e,t){var n=(0,i.Z)({props:e,name:"MuiDialogContent"}),a=n.className,s=n.dividers,l=void 0!==s&&s,u=(0,r.Z)(n,Bo),c=(0,o.Z)({},n,{dividers:l}),d=function(e){var t=e.classes,n={root:["root",e.dividers&&"dividers"]};return(0,y.Z)(n,Io,t)}(c);return(0,S.jsx)(Lo,(0,o.Z)({className:(0,be.Z)(d.root,a),ownerState:c,ref:t},u))})),Wo=n(18252),Yo=n(88447);function Ko(e){return(0,k.Z)("MuiDialog",e)}var zo=(0,M.Z)("MuiDialog",["root","scrollPaper","scrollBody","container","paper","paperScrollPaper","paperScrollBody","paperWidthFalse","paperWidthXs","paperWidthSm","paperWidthMd","paperWidthLg","paperWidthXl","paperFullWidth","paperFullScreen"]);var qo,Uo=a.createContext({}),Xo=n(52739),_o=["aria-describedby","aria-labelledby","BackdropComponent","BackdropProps","children","className","disableEscapeKeyDown","fullScreen","fullWidth","maxWidth","onBackdropClick","onClose","open","PaperComponent","PaperProps","scroll","TransitionComponent","transitionDuration","TransitionProps"],Jo=(0,x.ZP)(Xo.Z,{name:"MuiDialog",slot:"Backdrop",overrides:function(e,t){return t.backdrop}})({zIndex:-1}),Go=(0,x.ZP)(Yo.Z,{name:"MuiDialog",slot:"Root",overridesResolver:function(e,t){return t.root}})({"@media print":{position:"absolute !important"}}),Qo=(0,x.ZP)("div",{name:"MuiDialog",slot:"Container",overridesResolver:function(e,t){var n=e.ownerState;return[t.container,t["scroll".concat((0,Ln.Z)(n.scroll))]]}})((function(e){var t=e.ownerState;return(0,o.Z)({height:"100%","@media print":{height:"auto"},outline:0},"paper"===t.scroll&&{display:"flex",justifyContent:"center",alignItems:"center"},"body"===t.scroll&&{overflowY:"auto",overflowX:"hidden",textAlign:"center","&:after":{content:'""',display:"inline-block",verticalAlign:"middle",height:"100%",width:"0"}})})),$o=(0,x.ZP)(fe.Z,{name:"MuiDialog",slot:"Paper",overridesResolver:function(e,t){var n=e.ownerState;return[t.paper,t["scrollPaper".concat((0,Ln.Z)(n.scroll))],t["paperWidth".concat((0,Ln.Z)(String(n.maxWidth)))],n.fullWidth&&t.paperFullWidth,n.fullScreen&&t.paperFullScreen]}})((function(e){var t=e.theme,n=e.ownerState;return(0,o.Z)({margin:32,position:"relative",overflowY:"auto","@media print":{overflowY:"visible",boxShadow:"none"}},"paper"===n.scroll&&{display:"flex",flexDirection:"column",maxHeight:"calc(100% - 64px)"},"body"===n.scroll&&{display:"inline-block",verticalAlign:"middle",textAlign:"left"},!n.maxWidth&&{maxWidth:"calc(100% - 64px)"},"xs"===n.maxWidth&&(0,w.Z)({maxWidth:"px"===t.breakpoints.unit?Math.max(t.breakpoints.values.xs,444):"max(".concat(t.breakpoints.values.xs).concat(t.breakpoints.unit,", 444px)")},"&.".concat(zo.paperScrollBody),(0,w.Z)({},t.breakpoints.down(Math.max(t.breakpoints.values.xs,444)+64),{maxWidth:"calc(100% - 64px)"})),n.maxWidth&&"xs"!==n.maxWidth&&(0,w.Z)({maxWidth:"".concat(t.breakpoints.values[n.maxWidth]).concat(t.breakpoints.unit)},"&.".concat(zo.paperScrollBody),(0,w.Z)({},t.breakpoints.down(t.breakpoints.values[n.maxWidth]+64),{maxWidth:"calc(100% - 64px)"})),n.fullWidth&&{width:"calc(100% - 64px)"},n.fullScreen&&(0,w.Z)({margin:0,width:"100%",maxWidth:"100%",height:"100%",maxHeight:"none",borderRadius:0},"&.".concat(zo.paperScrollBody),{margin:0,maxWidth:"100%"}))})),er=a.forwardRef((function(e,t){var n=(0,i.Z)({props:e,name:"MuiDialog"}),s=(0,ft.Z)(),l={enter:s.transitions.duration.enteringScreen,exit:s.transitions.duration.leavingScreen},u=n["aria-describedby"],c=n["aria-labelledby"],d=n.BackdropComponent,f=n.BackdropProps,p=n.children,m=n.className,h=n.disableEscapeKeyDown,v=void 0!==h&&h,b=n.fullScreen,g=void 0!==b&&b,w=n.fullWidth,x=void 0!==w&&w,C=n.maxWidth,D=void 0===C?"sm":C,Z=n.onBackdropClick,k=n.onClose,M=n.open,P=n.PaperComponent,T=void 0===P?fe.Z:P,A=n.PaperProps,R=void 0===A?{}:A,j=n.scroll,E=void 0===j?"paper":j,N=n.TransitionComponent,F=void 0===N?zt.Z:N,O=n.transitionDuration,I=void 0===O?l:O,V=n.TransitionProps,B=(0,r.Z)(n,_o),L=(0,o.Z)({},n,{disableEscapeKeyDown:v,fullScreen:g,fullWidth:x,maxWidth:D,scroll:E}),H=function(e){var t=e.classes,n=e.scroll,o=e.maxWidth,r=e.fullWidth,a=e.fullScreen,i={root:["root"],container:["container","scroll".concat((0,Ln.Z)(n))],paper:["paper","paperScroll".concat((0,Ln.Z)(n)),"paperWidth".concat((0,Ln.Z)(String(o))),r&&"paperFullWidth",a&&"paperFullScreen"]};return(0,y.Z)(i,Ko,t)}(L),W=a.useRef(),Y=(0,Wo.Z)(c),K=a.useMemo((function(){return{titleId:Y}}),[Y]);return(0,S.jsx)(Go,(0,o.Z)({className:(0,be.Z)(H.root,m),closeAfterTransition:!0,components:{Backdrop:Jo},componentsProps:{backdrop:(0,o.Z)({transitionDuration:I,as:d},f)},disableEscapeKeyDown:v,onClose:k,open:M,ref:t,onClick:function(e){W.current&&(W.current=null,Z&&Z(e),k&&k(e,"backdropClick"))},ownerState:L},B,{children:(0,S.jsx)(F,(0,o.Z)({appear:!0,in:M,timeout:I,role:"presentation"},V,{children:(0,S.jsx)(Qo,{className:(0,be.Z)(H.container),onMouseDown:function(e){W.current=e.target===e.currentTarget},ownerState:L,children:(0,S.jsx)($o,(0,o.Z)({as:T,elevation:24,role:"dialog","aria-describedby":u,"aria-labelledby":Y},R,{className:(0,be.Z)(H.paper,R.className),ownerState:L,children:(0,S.jsx)(Uo.Provider,{value:K,children:p})}))})}))}))})),tr=(0,x.ZP)(er)((qo={},(0,w.Z)(qo,"& .".concat(zo.container),{outline:0}),(0,w.Z)(qo,"& .".concat(zo.paper),{outline:0,minWidth:320}),qo)),nr=(0,x.ZP)(Ho)({"&:first-of-type":{padding:0}}),or=function(e){var t,n=e.children,r=e.DialogProps,a=void 0===r?{}:r,i=e.onAccept,s=e.onClear,l=e.onDismiss,u=e.onCancel,c=e.onSetToday,d=e.open,f=e.components,p=e.componentsProps,m=null!=(t=null==f?void 0:f.ActionBar)?t:De;return(0,S.jsxs)(tr,(0,o.Z)({open:d,onClose:l},a,{children:[(0,S.jsx)(nr,{children:n}),(0,S.jsx)(m,(0,o.Z)({onAccept:i,onClear:s,onCancel:u,onSetToday:c,actions:["cancel","accept"]},null==p?void 0:p.actionBar))]}))},rr=["children","DateInputProps","DialogProps","onAccept","onClear","onDismiss","onCancel","onSetToday","open","PureDateInputComponent","components","componentsProps"];function ar(e){var t=e.children,n=e.DateInputProps,a=e.DialogProps,i=e.onAccept,s=e.onClear,l=e.onDismiss,u=e.onCancel,c=e.onSetToday,d=e.open,f=e.PureDateInputComponent,p=e.components,m=e.componentsProps,h=(0,r.Z)(e,rr);return(0,S.jsxs)(ue.Provider,{value:"mobile",children:[(0,S.jsx)(f,(0,o.Z)({components:p},h,n)),(0,S.jsx)(or,{DialogProps:a,onAccept:i,onClear:s,onDismiss:l,onCancel:u,onSetToday:c,open:d,components:p,componentsProps:m,children:t})]})}var ir=a.forwardRef((function(e,t){var n=e.disabled,r=e.getOpenDialogAriaText,i=e.inputFormat,s=e.InputProps,l=e.inputRef,u=e.label,d=e.openPicker,p=e.rawValue,m=e.renderInput,h=e.TextFieldProps,v=void 0===h?{}:h,b=e.validationError,g=e.className,w=f(),x=null!=r?r:w.openDatePickerDialogue,y=c(),C=a.useMemo((function(){return(0,o.Z)({},s,{readOnly:!0})}),[s]),D=ao(y,p,i),Z=(0,he.Z)((function(e){e.stopPropagation(),d()}));return m((0,o.Z)({label:u,disabled:n,ref:t,inputRef:l,error:b,InputProps:C,className:g},!e.readOnly&&!e.disabled&&{onClick:Z},{inputProps:(0,o.Z)({disabled:n,readOnly:!0,"aria-readonly":!0,"aria-label":x(p,y),value:D},!e.readOnly&&{onClick:Z},{onKeyDown:Me(d)})},v))})),sr=["ToolbarComponent","value","onChange","components","componentsProps","hideTabs"],lr=a.forwardRef((function(e,t){var n=v(e,"MuiMobileDateTimePicker"),i=null!==Po(n),s=To(n,b),l=s.pickerProps,u=s.inputProps,c=s.wrapperProps,d=n.ToolbarComponent,f=void 0===d?se:d,p=n.components,m=n.componentsProps,h=n.hideTabs,g=void 0!==h&&h,w=(0,r.Z)(n,sr),x=a.useMemo((function(){return(0,o.Z)({Tabs:No},p)}),[p]),y=(0,o.Z)({},u,w,{components:x,componentsProps:m,ref:t,validationError:i});return(0,S.jsx)(ar,(0,o.Z)({},w,c,{DateInputProps:y,PureDateInputComponent:ir,components:x,componentsProps:m,children:(0,S.jsx)(Co,(0,o.Z)({},l,{autoFocus:!0,toolbarTitle:n.label||n.toolbarTitle,ToolbarComponent:f,DateInputProps:y,components:x,componentsProps:m,hideTabs:g},w))}))})),ur=["desktopModeMediaQuery","DialogProps","PopperProps","TransitionComponent"],cr=a.forwardRef((function(e,t){var n=(0,i.Z)({props:e,name:"MuiDateTimePicker"}),a=n.desktopModeMediaQuery,l=void 0===a?"@media (pointer: fine)":a,u=n.DialogProps,c=n.PopperProps,d=n.TransitionComponent,f=(0,r.Z)(n,ur);return(0,s.Z)(l,{defaultMatches:!0})?(0,S.jsx)(Oo,(0,o.Z)({ref:t,PopperProps:c,TransitionComponent:d},f)):(0,S.jsx)(lr,(0,o.Z)({ref:t,DialogProps:u},f))}))},36571:function(e,t,n){n.d(t,{_:function(){return d},y:function(){return c}});var o,r=n(87462),a=n(72791),i=n(31402),s={previousMonth:"Previous month",nextMonth:"Next month",openPreviousView:"open previous view",openNextView:"open next view",calendarViewSwitchingButtonAriaLabel:function(e){return"year"===e?"year view is open, switch to calendar view":"calendar view is open, switch to year view"},inputModeToggleButtonAriaLabel:function(e,t){return e?"text input view is open, go to ".concat(t," view"):"".concat(t," view is open, go to text input view")},start:"Start",end:"End",cancelButtonLabel:"Cancel",clearButtonLabel:"Clear",okButtonLabel:"OK",todayButtonLabel:"Today",datePickerDefaultToolbarTitle:"Select date",dateTimePickerDefaultToolbarTitle:"Select date & time",timePickerDefaultToolbarTitle:"Select time",dateRangePickerDefaultToolbarTitle:"Select date range",clockLabelText:function(e,t,n){return"Select ".concat(e,". ").concat(null===t?"No time selected":"Selected time is ".concat(n.format(t,"fullTime")))},hoursClockNumberText:function(e){return"".concat(e," hours")},minutesClockNumberText:function(e){return"".concat(e," minutes")},secondsClockNumberText:function(e){return"".concat(e," seconds")},openDatePickerDialogue:function(e,t){return e&&t.isValid(t.date(e))?"Choose date, selected date is ".concat(t.format(t.date(e),"fullDate")):"Choose date"},openTimePickerDialogue:function(e,t){return e&&t.isValid(t.date(e))?"Choose time, selected time is ".concat(t.format(t.date(e),"fullTime")):"Choose time"},timeTableLabel:"pick time",dateTableLabel:"pick date"},l=s,u=(o=s,(0,r.Z)({},o),n(80184)),c=a.createContext(null);function d(e){var t=(0,i.Z)({props:e,name:"MuiLocalizationProvider"}),n=t.children,o=t.dateAdapter,s=t.dateFormats,d=t.dateLibInstance,f=t.locale,p=t.adapterLocale,m=t.localeText;var h=a.useMemo((function(){return new o({locale:null!=p?p:f,formats:s,instance:d})}),[o,f,p,s,d]),v=a.useMemo((function(){return{minDate:h.date("1900-01-01T00:00:00.000"),maxDate:h.date("2099-12-31T00:00:00.000")}}),[h]),b=a.useMemo((function(){return{utils:h,defaultDates:v,localeText:(0,r.Z)({},l,null!=m?m:{})}}),[v,h,m]);return(0,u.jsx)(c.Provider,{value:b,children:n})}}}]); -//# sourceMappingURL=2193.5d74569e.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2193],{36612:function(e,t,n){n.d(t,{Z:function(){return l}});var o=n(29439),r=n(43144),a=n(15671),i=n(99779),s={dayOfMonth:"d",fullDate:"DD",fullDateWithWeekday:"DDDD",fullDateTime:"ff",fullDateTime12h:"DD, hh:mm a",fullDateTime24h:"DD, T",fullTime:"t",fullTime12h:"hh:mm a",fullTime24h:"HH:mm",hours12h:"hh",hours24h:"HH",keyboardDate:"D",keyboardDateTime:"D t",keyboardDateTime12h:"D hh:mm a",keyboardDateTime24h:"D T",minutes:"mm",seconds:"ss",month:"LLLL",monthAndDate:"MMMM d",monthAndYear:"LLLL yyyy",monthShort:"MMM",weekday:"cccc",weekdayShort:"ccc",normalDate:"d MMMM",normalDateWithWeekday:"EEE, MMM d",shortDate:"MMM d",year:"yyyy"},l=(0,r.Z)((function e(){var t=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=n.locale,l=n.formats;(0,a.Z)(this,e),this.lib="luxon",this.date=function(e){return"undefined"===typeof e?i.ou.local():null===e?null:"string"===typeof e?i.ou.fromJSDate(new Date(e),{locale:t.locale}):i.ou.isDateTime(e)?e:i.ou.fromJSDate(e,{locale:t.locale})},this.toJsDate=function(e){return e.toJSDate()},this.parseISO=function(e){return i.ou.fromISO(e)},this.toISO=function(e){return e.toISO({format:"extended"})},this.parse=function(e,n){return""===e?null:i.ou.fromFormat(e,n,{locale:t.locale})},this.is12HourCycleInCurrentLocale=function(){var e,n;return"undefined"===typeof Intl||"undefined"===typeof Intl.DateTimeFormat||Boolean(null===(n=null===(e=new Intl.DateTimeFormat(t.locale,{hour:"numeric"}))||void 0===e?void 0:e.resolvedOptions())||void 0===n?void 0:n.hour12)},this.getFormatHelperText=function(e){return""},this.getCurrentLocaleCode=function(){return t.locale||i.Zr.defaultLocale},this.addSeconds=function(e,t){return e.plus({seconds:t})},this.addMinutes=function(e,t){return e.plus({minutes:t})},this.addHours=function(e,t){return e.plus({hours:t})},this.addDays=function(e,t){return e.plus({days:t})},this.addWeeks=function(e,t){return e.plus({weeks:t})},this.addMonths=function(e,t){return e.plus({months:t})},this.addYears=function(e,t){return e.plus({years:t})},this.isValid=function(e){var n,o;return i.ou.isDateTime(e)?e.isValid:null!==e&&(null!==(o=null===(n=t.date(e))||void 0===n?void 0:n.isValid)&&void 0!==o&&o)},this.isEqual=function(e,n){var o,r;return null===e&&null===n||null!==e&&null!==n&&(!!t.date(n)&&(null!==(r=null===(o=t.date(e))||void 0===o?void 0:o.equals(t.date(n)))&&void 0!==r&&r))},this.isSameDay=function(e,t){return e.hasSame(t,"day")},this.isSameMonth=function(e,t){return e.hasSame(t,"month")},this.isSameYear=function(e,t){return e.hasSame(t,"year")},this.isSameHour=function(e,t){return e.hasSame(t,"hour")},this.isAfter=function(e,t){return e>t},this.isBefore=function(e,t){return e0},this.isBeforeMonth=function(e,t){return e.diff(t.startOf("month"),"months").toObject().months<0},this.isAfterMonth=function(e,t){return e.diff(t.startOf("month"),"months").toObject().months>0},this.isBeforeYear=function(e,t){return e.diff(t.startOf("year"),"years").toObject().years<0},this.isAfterYear=function(e,t){return e.diff(t.endOf("year"),"years").toObject().years>0},this.getDiff=function(e,t,n){return"string"===typeof t&&(t=i.ou.fromJSDate(new Date(t))),t.isValid?n?Math.floor(e.diff(t).as(n)):e.diff(t).as("millisecond"):0},this.startOfDay=function(e){return e.startOf("day")},this.endOfDay=function(e){return e.endOf("day")},this.format=function(e,n){return t.formatByString(e,t.formats[n])},this.formatByString=function(e,n){return e.setLocale(t.locale).toFormat(n)},this.formatNumber=function(e){return e},this.getHours=function(e){return e.get("hour")},this.setHours=function(e,t){return e.set({hour:t})},this.getMinutes=function(e){return e.get("minute")},this.setMinutes=function(e,t){return e.set({minute:t})},this.getSeconds=function(e){return e.get("second")},this.setSeconds=function(e,t){return e.set({second:t})},this.getMonth=function(e){return e.get("month")-1},this.getDaysInMonth=function(e){return e.daysInMonth},this.setMonth=function(e,t){return e.set({month:t+1})},this.getYear=function(e){return e.get("year")},this.setYear=function(e,t){return e.set({year:t})},this.getDate=function(e){return e.get("day")},this.setDate=function(e,t){return e.set({day:t})},this.mergeDateAndTime=function(e,t){return e.set({second:t.second,hour:t.hour,minute:t.minute})},this.startOfYear=function(e){return e.startOf("year")},this.endOfYear=function(e){return e.endOf("year")},this.startOfMonth=function(e){return e.startOf("month")},this.endOfMonth=function(e){return e.endOf("month")},this.startOfWeek=function(e){return e.startOf("week")},this.endOfWeek=function(e){return e.endOf("week")},this.getNextMonth=function(e){return e.plus({months:1})},this.getPreviousMonth=function(e){return e.minus({months:1})},this.getMonthArray=function(e){for(var n=[e.startOf("year")];n.length<12;){var o=n[n.length-1];n.push(t.getNextMonth(o))}return n},this.getWeekdays=function(){return i.kI.weekdaysFormat("short",{locale:t.locale})},this.getWeekArray=function(e){var t=e.endOf("month").endOf("week").diff(e.startOf("month").startOf("week"),"days").toObject().days,n=[];return new Array(Math.round(t)).fill(0).map((function(e,t){return t})).map((function(t){return e.startOf("month").startOf("week").plus({days:t})})).forEach((function(e,t){0===t||t%7===0&&t>6?n.push([e]):n[n.length-1].push(e)})),n},this.getYearRange=function(e,t){for(var n=e.startOf("year"),o=t.endOf("year"),r=n,a=[];r1&&void 0!==arguments[1]?arguments[1]:{},n=(0,i.Z)(),o="undefined"!==typeof window&&"undefined"!==typeof window.matchMedia,r=(0,s.Z)({name:"MuiUseMediaQuery",props:t,theme:n}),a=r.defaultMatches,l=void 0!==a&&a,f=r.matchMedia,p=void 0===f?o?window.matchMedia:null:f,m=r.ssrMatchMedia,h=void 0===m?null:m,v=r.noSsr,b=void 0!==v&&v;var g="function"===typeof e?e(n):e;return g=g.replace(/^@media( ?)/m,""),(void 0!==c?d:u)(g,l,p,h,b)}},80916:function(e,t,n){n.d(t,{x:function(){return cr}});var o=n(87462),r=n(63366),a=n(72791),i=n(31402),s=n(95193),l=n(36571),u=function(){var e=a.useContext(l.y);if(null===e)throw new Error("MUI: Can not find utils in context. It looks like you forgot to wrap your component in LocalizationProvider, or pass dateAdapter prop directly.");return e},c=function(){return u().utils},d=function(){return u().defaultDates},f=function(){return u().localeText},p=function(){var e=c();return a.useRef(e.date()).current},m=function(e){var t=e.date,n=e.disableFuture,o=e.disablePast,r=e.maxDate,a=e.minDate,i=e.isDateDisabled,s=e.utils,l=s.startOfDay(s.date());o&&s.isBefore(a,l)&&(a=l),n&&s.isAfter(r,l)&&(r=l);var u=t,c=t;for(s.isBefore(t,a)&&(u=s.date(a),c=null),s.isAfter(t,r)&&(c&&(c=s.date(r)),u=null);u||c;){if(u&&s.isAfter(u,r)&&(u=null),c&&s.isBefore(c,a)&&(c=null),u){if(!i(u))return u;u=s.addDays(u,1)}if(c){if(!i(c))return c;c=s.addDays(c,-1)}}return null},h=function(e,t,n){if(null==t)return n;var o=e.date(t);return e.isValid(o)?o:n};function v(e,t){var n,r,a,s,l,u=(0,i.Z)({props:e,name:t}),f=c(),p=d(),m=null!=(n=u.ampm)?n:f.is12HourCycleInCurrentLocale();if(null!=u.orientation&&"portrait"!==u.orientation)throw new Error("We are not supporting custom orientation for DateTimePicker yet :(");return(0,o.Z)({ampm:m,orientation:"portrait",openTo:"day",views:["year","day","hours","minutes"],ampmInClock:!0,acceptRegex:m?/[\dap]/gi:/\d/gi,disableMaskedInput:!1,inputFormat:m?f.formats.keyboardDateTime12h:f.formats.keyboardDateTime24h,disableIgnoringDatePartForTimeValidation:Boolean(u.minDateTime||u.maxDateTime),disablePast:!1,disableFuture:!1},u,{minDate:h(f,null!=(r=u.minDateTime)?r:u.minDate,p.minDate),maxDate:h(f,null!=(a=u.maxDateTime)?a:u.maxDate,p.maxDate),minTime:null!=(s=u.minDateTime)?s:u.minTime,maxTime:null!=(l=u.maxDateTime)?l:u.maxTime})}var b={emptyValue:null,getTodayValue:function(e){return e.date()},parseInput:function(e,t){var n=e.date(t);return e.isValid(n)?n:null},areValuesEqual:function(e,t,n){return e.isEqual(t,n)}},g=function(e){switch(e){case"year":case"month":case"day":return"calendar";default:return"clock"}},w=n(4942),x=n(66934),y=n(94419);function C(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t :not(:first-of-type)":{marginLeft:8}})})),ye=a.forwardRef((function(e,t){var n=(0,i.Z)({props:e,name:"MuiDialogActions"}),a=n.className,s=n.disableSpacing,l=void 0!==s&&s,u=(0,r.Z)(n,we),c=(0,o.Z)({},n,{disableSpacing:l}),d=function(e){var t=e.classes,n={root:["root",!e.disableSpacing&&"spacing"]};return(0,y.Z)(n,ge,t)}(c);return(0,S.jsx)(xe,(0,o.Z)({className:(0,be.Z)(d.root,a),ownerState:c,ref:t},u))})),Ce=["onAccept","onClear","onCancel","onSetToday","actions"],De=function(e){var t=e.onAccept,n=e.onClear,i=e.onCancel,s=e.onSetToday,l=e.actions,u=(0,r.Z)(e,Ce),c=a.useContext(ue),d=f(),p="function"===typeof l?l(c):l;if(null==p||0===p.length)return null;var m=null==p?void 0:p.map((function(e){switch(e){case"clear":return(0,S.jsx)(G.Z,{onClick:n,children:d.clearButtonLabel},e);case"cancel":return(0,S.jsx)(G.Z,{onClick:i,children:d.cancelButtonLabel},e);case"accept":return(0,S.jsx)(G.Z,{onClick:t,children:d.okButtonLabel},e);case"today":return(0,S.jsx)(G.Z,{onClick:s,children:d.todayButtonLabel},e);default:return null}}));return(0,S.jsx)(ye,(0,o.Z)({},u,{children:m}))};function Ze(e){return(0,k.Z)("MuiPickersPopper",e)}(0,M.Z)("MuiPickersPopper",["root","paper"]);function ke(e,t){return Array.isArray(t)?t.every((function(t){return-1!==e.indexOf(t)})):-1!==e.indexOf(t)}var Me=function(e,t){return function(n){"Enter"!==n.key&&" "!==n.key||(e(n),n.preventDefault(),n.stopPropagation()),t&&t(n)}},Pe=function e(){var t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:document).activeElement;return t?t.shadowRoot?e(t.shadowRoot):t:null},Te=["onClick","onTouchStart"],Se=function(e){var t=e.classes;return(0,y.Z)({root:["root"],paper:["paper"]},Ze,t)},Ae=(0,x.ZP)(pe.Z,{name:"MuiPickersPopper",slot:"Root",overridesResolver:function(e,t){return t.root}})((function(e){return{zIndex:e.theme.zIndex.modal}})),Re=(0,x.ZP)(fe.Z,{name:"MuiPickersPopper",slot:"Paper",overridesResolver:function(e,t){return t.paper}})((function(e){var t=e.ownerState;return(0,o.Z)({transformOrigin:"top center",outline:0},"top"===t.placement&&{transformOrigin:"bottom center"})}));function je(e){var t,n=(0,i.Z)({props:e,name:"MuiPickersPopper"}),s=n.anchorEl,l=n.children,u=n.containerRef,c=void 0===u?null:u,d=n.onBlur,f=n.onClose,p=n.onClear,m=n.onAccept,h=n.onCancel,v=n.onSetToday,b=n.open,g=n.PopperProps,w=n.role,x=n.TransitionComponent,y=void 0===x?de.Z:x,C=n.TrapFocusProps,D=n.PaperProps,Z=void 0===D?{}:D,k=n.components,M=n.componentsProps;a.useEffect((function(){function e(e){!b||"Escape"!==e.key&&"Esc"!==e.key||f()}return document.addEventListener("keydown",e),function(){document.removeEventListener("keydown",e)}}),[f,b]);var P=a.useRef(null);a.useEffect((function(){"tooltip"!==w&&(b?P.current=Pe(document):P.current&&P.current instanceof HTMLElement&&setTimeout((function(){P.current instanceof HTMLElement&&P.current.focus()})))}),[b,w]);var T=function(e,t){var n=a.useRef(!1),o=a.useRef(!1),r=a.useRef(null),i=a.useRef(!1);a.useEffect((function(){if(e)return document.addEventListener("mousedown",t,!0),document.addEventListener("touchstart",t,!0),function(){document.removeEventListener("mousedown",t,!0),document.removeEventListener("touchstart",t,!0),i.current=!1};function t(){i.current=!0}}),[e]);var s=(0,he.Z)((function(e){if(i.current){var a=o.current;o.current=!1;var s=(0,ve.Z)(r.current);!r.current||"clientX"in e&&function(e,t){return t.documentElement.clientWidth-1:!s.documentElement.contains(e.target)||r.current.contains(e.target))||a||t(e))}})),l=function(){o.current=!0};return a.useEffect((function(){if(e){var t=(0,ve.Z)(r.current),o=function(){n.current=!0};return t.addEventListener("touchstart",s),t.addEventListener("touchmove",o),function(){t.removeEventListener("touchstart",s),t.removeEventListener("touchmove",o)}}}),[e,s]),a.useEffect((function(){if(e){var t=(0,ve.Z)(r.current);return t.addEventListener("click",s),function(){t.removeEventListener("click",s),o.current=!1}}}),[e,s]),[r,l,l]}(b,null!=d?d:f),A=(0,ce.Z)(T,3),R=A[0],j=A[1],E=A[2],N=a.useRef(null),F=(0,le.Z)(N,c),O=(0,le.Z)(F,R),I=n,V=Se(I),B=Z.onClick,L=Z.onTouchStart,H=(0,r.Z)(Z,Te),W=null!=(t=null==k?void 0:k.ActionBar)?t:De,Y=(null==k?void 0:k.PaperContent)||a.Fragment;return(0,S.jsx)(Ae,(0,o.Z)({transition:!0,role:w,open:b,anchorEl:s,onKeyDown:function(e){"Escape"===e.key&&(e.stopPropagation(),f())},className:V.root},g,{children:function(e){var t=e.TransitionProps,n=e.placement;return(0,S.jsx)(me.i,(0,o.Z)({open:b,disableAutoFocus:!0,disableRestoreFocus:!0,disableEnforceFocus:"tooltip"===w,isEnabled:function(){return!0}},C,{children:(0,S.jsx)(y,(0,o.Z)({},t,{children:(0,S.jsx)(Re,(0,o.Z)({tabIndex:-1,elevation:8,ref:O,onClick:function(e){j(e),B&&B(e)},onTouchStart:function(e){E(e),L&&L(e)},ownerState:(0,o.Z)({},I,{placement:n}),className:V.paper},H,{children:(0,S.jsxs)(Y,(0,o.Z)({},null==M?void 0:M.paperContent,{children:[l,(0,S.jsx)(W,(0,o.Z)({onAccept:m,onClear:p,onCancel:h,onSetToday:v,actions:[]},null==M?void 0:M.actionBar))]}))}))}))}))}}))}function Ee(e){var t=e.children,n=e.DateInputProps,r=e.KeyboardDateInputComponent,i=e.onClear,s=e.onDismiss,l=e.onCancel,u=e.onAccept,c=e.onSetToday,d=e.open,f=e.PopperProps,p=e.PaperProps,m=e.TransitionComponent,h=e.components,v=e.componentsProps,b=a.useRef(null),g=(0,le.Z)(n.inputRef,b);return(0,S.jsxs)(ue.Provider,{value:"desktop",children:[(0,S.jsx)(r,(0,o.Z)({},n,{inputRef:g})),(0,S.jsx)(je,{role:"dialog",open:d,anchorEl:b.current,TransitionComponent:m,PopperProps:f,PaperProps:p,onClose:s,onCancel:l,onClear:i,onAccept:u,onSetToday:c,components:h,componentsProps:v,children:t})]})}var Ne=n(98278);function Fe(e){var t,n,o=e.onChange,r=e.onViewChange,i=e.openTo,s=e.view,l=e.views,u=(0,Ne.Z)({name:"Picker",state:"view",controlled:s,default:i&&ke(l,i)?i:l[0]}),c=(0,ce.Z)(u,2),d=c[0],f=c[1],p=null!=(t=l[l.indexOf(d)-1])?t:null,m=null!=(n=l[l.indexOf(d)+1])?n:null,h=a.useCallback((function(e){f(e),r&&r(e)}),[f,r]),v=a.useCallback((function(){m&&h(m)}),[m,h]);return{handleChangeAndOpenNext:a.useCallback((function(e,t){var n="finish"===t,r=n&&Boolean(m)?"partial":t;o(e,r),n&&v()}),[m,o,v]),nextView:m,previousView:p,openNext:v,openView:d,setOpenView:h}}var Oe=n(67384),Ie=n(62876),Ve=220,Be=36,Le={x:Ve/2,y:Ve/2},He=Le.x-Le.x,We=0-Le.y,Ye=function(e,t,n){var o=t-Le.x,r=n-Le.y,a=Math.atan2(He,We)-Math.atan2(o,r),i=a*(180/Math.PI);i=Math.round(i/e)*e,i%=360;var s=Math.floor(i/e)||0,l=Math.pow(o,2)+Math.pow(r,2);return{value:s,distance:Math.sqrt(l)}};function Ke(e){return(0,k.Z)("MuiClockPointer",e)}(0,M.Z)("MuiClockPointer",["root","thumb"]);var ze=["className","hasSelected","isInner","type","value"],qe=function(e){var t=e.classes;return(0,y.Z)({root:["root"],thumb:["thumb"]},Ke,t)},Ue=(0,x.ZP)("div",{name:"MuiClockPointer",slot:"Root",overridesResolver:function(e,t){return t.root}})((function(e){var t=e.theme,n=e.ownerState;return(0,o.Z)({width:2,backgroundColor:t.palette.primary.main,position:"absolute",left:"calc(50% - 1px)",bottom:"50%",transformOrigin:"center bottom 0px"},n.shouldAnimate&&{transition:t.transitions.create(["transform","height"])})})),Xe=(0,x.ZP)("div",{name:"MuiClockPointer",slot:"Thumb",overridesResolver:function(e,t){return t.thumb}})((function(e){var t=e.theme,n=e.ownerState;return(0,o.Z)({width:4,height:4,backgroundColor:t.palette.primary.contrastText,borderRadius:"50%",position:"absolute",top:-21,left:"calc(50% - ".concat(18,"px)"),border:"".concat(16,"px solid ").concat(t.palette.primary.main),boxSizing:"content-box"},n.hasSelected&&{backgroundColor:t.palette.primary.main})}));function _e(e){var t=(0,i.Z)({props:e,name:"MuiClockPointer"}),n=t.className,s=t.isInner,l=t.type,u=t.value,c=(0,r.Z)(t,ze),d=a.useRef(l);a.useEffect((function(){d.current=l}),[l]);var f=(0,o.Z)({},t,{shouldAnimate:d.current!==l}),p=qe(f);return(0,S.jsx)(Ue,(0,o.Z)({style:function(){var e=360/("hours"===l?12:60)*u;return"hours"===l&&u>12&&(e-=360),{height:Math.round((s?.26:.4)*Ve),transform:"rotateZ(".concat(e,"deg)")}}(),className:D(n,p.root),ownerState:f},c,{children:(0,S.jsx)(Xe,{ownerState:f,className:p.thumb})}))}function Je(e){return(0,k.Z)("MuiClock",e)}(0,M.Z)("MuiClock",["root","clock","wrapper","squareMask","pin","amButton","pmButton"]);var Ge=(0,x.ZP)("div",{name:"MuiClock",slot:"Root",overridesResolver:function(e,t){return t.root}})((function(e){return{display:"flex",justifyContent:"center",alignItems:"center",margin:e.theme.spacing(2)}})),Qe=(0,x.ZP)("div",{name:"MuiClock",slot:"Clock",overridesResolver:function(e,t){return t.clock}})({backgroundColor:"rgba(0,0,0,.07)",borderRadius:"50%",height:220,width:220,flexShrink:0,position:"relative",pointerEvents:"none"}),$e=(0,x.ZP)("div",{name:"MuiClock",slot:"Wrapper",overridesResolver:function(e,t){return t.wrapper}})({"&:focus":{outline:"none"}}),et=(0,x.ZP)("div",{name:"MuiClock",slot:"SquareMask",overridesResolver:function(e,t){return t.squareMask}})((function(e){var t=e.ownerState;return(0,o.Z)({width:"100%",height:"100%",position:"absolute",pointerEvents:"auto",outline:0,touchAction:"none",userSelect:"none"},t.disabled?{}:{"@media (pointer: fine)":{cursor:"pointer",borderRadius:"50%"},"&:active":{cursor:"move"}})})),tt=(0,x.ZP)("div",{name:"MuiClock",slot:"Pin",overridesResolver:function(e,t){return t.pin}})((function(e){return{width:6,height:6,borderRadius:"50%",backgroundColor:e.theme.palette.primary.main,position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)"}})),nt=(0,x.ZP)(N.Z,{name:"MuiClock",slot:"AmButton",overridesResolver:function(e,t){return t.amButton}})((function(e){var t=e.theme,n=e.ownerState;return(0,o.Z)({zIndex:1,position:"absolute",bottom:n.ampmInClock?64:8,left:8},"am"===n.meridiemMode&&{backgroundColor:t.palette.primary.main,color:t.palette.primary.contrastText,"&:hover":{backgroundColor:t.palette.primary.light}})})),ot=(0,x.ZP)(N.Z,{name:"MuiClock",slot:"PmButton",overridesResolver:function(e,t){return t.pmButton}})((function(e){var t=e.theme,n=e.ownerState;return(0,o.Z)({zIndex:1,position:"absolute",bottom:n.ampmInClock?64:8,right:8},"pm"===n.meridiemMode&&{backgroundColor:t.palette.primary.main,color:t.palette.primary.contrastText,"&:hover":{backgroundColor:t.palette.primary.light}})}));function rt(e){var t=(0,i.Z)({props:e,name:"MuiClock"}),n=t.ampm,o=t.ampmInClock,r=t.autoFocus,s=t.children,l=t.date,u=t.getClockLabelText,d=t.handleMeridiemChange,f=t.isTimeDisabled,p=t.meridiemMode,m=t.minutesStep,h=void 0===m?1:m,v=t.onChange,b=t.selectedId,g=t.type,w=t.value,x=t.disabled,C=t.readOnly,k=t.className,M=t,P=c(),T=a.useContext(ue),A=a.useRef(!1),R=function(e){var t=e.classes;return(0,y.Z)({root:["root"],clock:["clock"],wrapper:["wrapper"],squareMask:["squareMask"],pin:["pin"],amButton:["amButton"],pmButton:["pmButton"]},Je,t)}(M),j=f(w,g),E=!n&&"hours"===g&&(w<1||w>12),N=function(e,t){x||C||f(e,g)||v(e,t)},F=function(e,t){var o=e.offsetX,r=e.offsetY;if(void 0===o){var a=e.target.getBoundingClientRect();o=e.changedTouches[0].clientX-a.left,r=e.changedTouches[0].clientY-a.top}var i="seconds"===g||"minutes"===g?function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,o=Ye(6*n,e,t).value;return o*n%60}(o,r,h):function(e,t,n){var o=Ye(30,e,t),r=o.value,a=o.distance,i=r||12;return n?i%=12:a0&&F(e.nativeEvent,"shallow")},ownerState:{disabled:x},className:R.squareMask}),!j&&(0,S.jsxs)(a.Fragment,{children:[(0,S.jsx)(tt,{className:R.pin}),l&&(0,S.jsx)(_e,{type:g,value:w,isInner:E,hasSelected:O})]}),(0,S.jsx)($e,{"aria-activedescendant":b,"aria-label":u(g,l,P),ref:V,role:"listbox",onKeyDown:function(e){if(!A.current)switch(e.key){case"Home":N(0,"partial"),e.preventDefault();break;case"End":N("minutes"===g?59:23,"partial"),e.preventDefault();break;case"ArrowUp":N(w+I,"partial"),e.preventDefault();break;case"ArrowDown":N(w-I,"partial"),e.preventDefault()}},tabIndex:0,className:R.wrapper,children:s})]}),n&&("desktop"===T||o)&&(0,S.jsxs)(a.Fragment,{children:[(0,S.jsx)(nt,{onClick:C?void 0:function(){return d("am")},disabled:x||null===p,ownerState:M,className:R.amButton,children:(0,S.jsx)(Z.Z,{variant:"caption",children:"AM"})}),(0,S.jsx)(ot,{disabled:x||null===p,onClick:C?void 0:function(){return d("pm")},ownerState:M,className:R.pmButton,children:(0,S.jsx)(Z.Z,{variant:"caption",children:"PM"})})]})]})}n(93433);function at(e){return(0,k.Z)("MuiClockNumber",e)}var it=(0,M.Z)("MuiClockNumber",["root","selected","disabled"]),st=["className","disabled","index","inner","label","selected"],lt=(0,x.ZP)("span",{name:"MuiClockNumber",slot:"Root",overridesResolver:function(e,t){return[t.root,(0,w.Z)({},"&.".concat(it.disabled),t.disabled),(0,w.Z)({},"&.".concat(it.selected),t.selected)]}})((function(e){var t,n=e.theme,r=e.ownerState;return(0,o.Z)((t={height:Be,width:Be,position:"absolute",left:"calc((100% - ".concat(Be,"px) / 2)"),display:"inline-flex",justifyContent:"center",alignItems:"center",borderRadius:"50%",color:n.palette.text.primary,fontFamily:n.typography.fontFamily,"&:focused":{backgroundColor:n.palette.background.paper}},(0,w.Z)(t,"&.".concat(it.selected),{color:n.palette.primary.contrastText}),(0,w.Z)(t,"&.".concat(it.disabled),{pointerEvents:"none",color:n.palette.text.disabled}),t),r.inner&&(0,o.Z)({},n.typography.body2,{color:n.palette.text.secondary}))}));function ut(e){var t=(0,i.Z)({props:e,name:"MuiClockNumber"}),n=t.className,a=t.disabled,s=t.index,l=t.inner,u=t.label,c=t.selected,d=(0,r.Z)(t,st),f=t,p=function(e){var t=e.classes,n={root:["root",e.selected&&"selected",e.disabled&&"disabled"]};return(0,y.Z)(n,at,t)}(f),m=s%12/12*Math.PI*2-Math.PI/2,h=(Ve-Be-2)/2*(l?.65:1),v=Math.round(Math.cos(m)*h),b=Math.round(Math.sin(m)*h);return(0,S.jsx)(lt,(0,o.Z)({className:D(n,p.root),"aria-disabled":!!a||void 0,"aria-selected":!!c||void 0,role:"option",style:{transform:"translate(".concat(v,"px, ").concat(b+(Ve-Be)/2,"px")},ownerState:f},d,{children:u}))}var ct=function(e){for(var t=e.ampm,n=e.date,o=e.getClockNumberText,r=e.isDisabled,a=e.selectedId,i=e.utils,s=n?i.getHours(n):null,l=[],u=t?12:23,c=function(e){return null!==s&&(t?12===e?12===s||0===s:s===e||s-12===e:s===e)},d=t?1:0;d<=u;d+=1){var f=d.toString();0===d&&(f="00");var p=!t&&(0===d||d>12);f=i.formatNumber(f);var m=c(d);l.push((0,S.jsx)(ut,{id:m?a:void 0,index:d,inner:p,selected:m,disabled:r(d),label:f,"aria-label":o(f)},d))}return l},dt=function(e){var t=e.utils,n=e.value,o=e.isDisabled,r=e.getClockNumberText,a=e.selectedId,i=t.formatNumber;return[[5,i("05")],[10,i("10")],[15,i("15")],[20,i("20")],[25,i("25")],[30,i("30")],[35,i("35")],[40,i("40")],[45,i("45")],[50,i("50")],[55,i("55")],[0,i("00")]].map((function(e,t){var i=(0,ce.Z)(e,2),s=i[0],l=i[1],u=s===n;return(0,S.jsx)(ut,{label:l,id:u?a:void 0,index:t+1,inner:!1,disabled:o(s),selected:u,"aria-label":r(l)},s)}))},ft=n(13967);function pt(e){return(0,k.Z)("MuiPickersArrowSwitcher",e)}(0,M.Z)("MuiPickersArrowSwitcher",["root","spacer","button"]);var mt=["children","className","components","componentsProps","isLeftDisabled","isLeftHidden","isRightDisabled","isRightHidden","leftArrowButtonText","onLeftClick","onRightClick","rightArrowButtonText"],ht=(0,x.ZP)("div",{name:"MuiPickersArrowSwitcher",slot:"Root",overridesResolver:function(e,t){return t.root}})({display:"flex"}),vt=(0,x.ZP)("div",{name:"MuiPickersArrowSwitcher",slot:"Spacer",overridesResolver:function(e,t){return t.spacer}})((function(e){return{width:e.theme.spacing(3)}})),bt=(0,x.ZP)(N.Z,{name:"MuiPickersArrowSwitcher",slot:"Button",overridesResolver:function(e,t){return t.button}})((function(e){var t=e.ownerState;return(0,o.Z)({},t.hidden&&{visibility:"hidden"})})),gt=a.forwardRef((function(e,t){var n=(0,i.Z)({props:e,name:"MuiPickersArrowSwitcher"}),a=n.children,s=n.className,l=n.components,u=n.componentsProps,c=n.isLeftDisabled,d=n.isLeftHidden,f=n.isRightDisabled,p=n.isRightHidden,m=n.leftArrowButtonText,h=n.onLeftClick,v=n.onRightClick,b=n.rightArrowButtonText,g=(0,r.Z)(n,mt),w="rtl"===(0,ft.Z)().direction,x=(null==u?void 0:u.leftArrowButton)||{},C=(null==l?void 0:l.LeftArrowIcon)||I,k=(null==u?void 0:u.rightArrowButton)||{},M=(null==l?void 0:l.RightArrowIcon)||V,P=n,T=function(e){var t=e.classes;return(0,y.Z)({root:["root"],spacer:["spacer"],button:["button"]},pt,t)}(P);return(0,S.jsxs)(ht,(0,o.Z)({ref:t,className:D(T.root,s),ownerState:P},g,{children:[(0,S.jsx)(bt,(0,o.Z)({as:null==l?void 0:l.LeftArrowButton,size:"small","aria-label":m,title:m,disabled:c,edge:"end",onClick:h},x,{className:D(T.button,x.className),ownerState:(0,o.Z)({},P,x,{hidden:d}),children:w?(0,S.jsx)(M,{}):(0,S.jsx)(C,{})})),a?(0,S.jsx)(Z.Z,{variant:"subtitle1",component:"span",children:a}):(0,S.jsx)(vt,{className:T.spacer,ownerState:P}),(0,S.jsx)(bt,(0,o.Z)({as:null==l?void 0:l.RightArrowButton,size:"small","aria-label":b,title:b,edge:"start",disabled:f,onClick:v},k,{className:D(T.button,k.className),ownerState:(0,o.Z)({},P,k,{hidden:p}),children:w?(0,S.jsx)(C,{}):(0,S.jsx)(M,{})}))]}))})),wt=function(e,t,n){if(n&&(e>=12?"pm":"am")!==t)return"am"===t?e-12:e+12;return e},xt=function(e,t){return 3600*t.getHours(e)+60*t.getMinutes(e)+t.getSeconds(e)},yt=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1?arguments[1]:void 0;return function(n,o){return e?t.isAfter(n,o):xt(n,t)>xt(o,t)}};function Ct(e,t,n){var o=c(),r=function(e,t){return e?t.getHours(e)>=12?"pm":"am":null}(e,o),i=a.useCallback((function(r){var a=null==e?null:function(e,t,n,o){var r=wt(o.getHours(e),t,n);return o.setHours(e,r)}(e,r,Boolean(t),o);n(a,"partial")}),[t,e,n,o]);return{meridiemMode:r,handleMeridiemChange:i}}function Dt(e){return(0,k.Z)("MuiClockPicker",e)}(0,M.Z)("MuiClockPicker",["root","arrowSwitcher"]);var Zt=(0,x.ZP)("div")({overflowX:"hidden",width:320,maxHeight:358,display:"flex",flexDirection:"column",margin:"0 auto"}),kt=(0,x.ZP)(Zt,{name:"MuiClockPicker",slot:"Root",overridesResolver:function(e,t){return t.root}})({display:"flex",flexDirection:"column"}),Mt=(0,x.ZP)(gt,{name:"MuiClockPicker",slot:"ArrowSwitcher",overridesResolver:function(e,t){return t.arrowSwitcher}})({position:"absolute",right:12,top:15}),Pt=function(){},Tt=a.forwardRef((function(e,t){var n=(0,i.Z)({props:e,name:"MuiClockPicker"}),r=n.ampm,s=void 0!==r&&r,l=n.ampmInClock,u=void 0!==l&&l,d=n.autoFocus,m=n.components,h=n.componentsProps,v=n.date,b=n.disableIgnoringDatePartForTimeValidation,g=n.getClockLabelText,w=n.getHoursClockNumberText,x=n.getMinutesClockNumberText,C=n.getSecondsClockNumberText,Z=n.leftArrowButtonText,k=n.maxTime,M=n.minTime,P=n.minutesStep,T=void 0===P?1:P,A=n.rightArrowButtonText,R=n.shouldDisableTime,j=n.showViewSwitcher,E=n.onChange,N=n.view,F=n.views,O=void 0===F?["hours","minutes"]:F,I=n.openTo,V=n.onViewChange,B=n.className,L=n.disabled,H=n.readOnly;Pt({leftArrowButtonText:Z,rightArrowButtonText:A,getClockLabelText:g,getHoursClockNumberText:w,getMinutesClockNumberText:x,getSecondsClockNumberText:C});var W=f(),Y=null!=Z?Z:W.openPreviousView,K=null!=A?A:W.openNextView,z=null!=g?g:W.clockLabelText,q=null!=w?w:W.hoursClockNumberText,U=null!=x?x:W.minutesClockNumberText,X=null!=C?C:W.secondsClockNumberText,_=Fe({view:N,views:O,openTo:I,onViewChange:V,onChange:E}),J=_.openView,G=_.setOpenView,Q=_.nextView,$=_.previousView,ee=_.handleChangeAndOpenNext,te=p(),ne=c(),oe=a.useMemo((function(){return v||ne.setSeconds(ne.setMinutes(ne.setHours(te,0),0),0)}),[v,te,ne]),re=Ct(oe,s,ee),ae=re.meridiemMode,ie=re.handleMeridiemChange,se=a.useCallback((function(e,t){var n=yt(b,ne),o=function(e){var t=e.start,o=e.end;return(!M||!n(M,o))&&(!k||!n(t,k))},r=function(e){return e%(arguments.length>1&&void 0!==arguments[1]?arguments[1]:1)===0&&(!R||!R(e,t))};switch(t){case"hours":var a=wt(e,ae,s),i=ne.setHours(oe,a);return!o({start:ne.setSeconds(ne.setMinutes(i,0),0),end:ne.setSeconds(ne.setMinutes(i,59),59)})||!r(a);case"minutes":var l=ne.setMinutes(oe,e);return!o({start:ne.setSeconds(l,0),end:ne.setSeconds(l,59)})||!r(e,T);case"seconds":var u=ne.setSeconds(oe,e);return!o({start:u,end:u})||!r(e);default:throw new Error("not supported")}}),[s,oe,b,k,ae,M,T,R,ne]),le=(0,Oe.Z)(),ue=a.useMemo((function(){switch(J){case"hours":var e=function(e,t){var n=wt(e,ae,s);ee(ne.setHours(oe,n),t)};return{onChange:e,value:ne.getHours(oe),children:ct({date:v,utils:ne,ampm:s,onChange:e,getClockNumberText:q,isDisabled:function(e){return L||se(e,"hours")},selectedId:le})};case"minutes":var t=ne.getMinutes(oe),n=function(e,t){ee(ne.setMinutes(oe,e),t)};return{value:t,onChange:n,children:dt({utils:ne,value:t,onChange:n,getClockNumberText:U,isDisabled:function(e){return L||se(e,"minutes")},selectedId:le})};case"seconds":var o=ne.getSeconds(oe),r=function(e,t){ee(ne.setSeconds(oe,e),t)};return{value:o,onChange:r,children:dt({utils:ne,value:o,onChange:r,getClockNumberText:X,isDisabled:function(e){return L||se(e,"seconds")},selectedId:le})};default:throw new Error("You must provide the type for ClockView")}}),[J,ne,v,s,q,U,X,ae,ee,oe,se,le,L]),ce=n,de=function(e){var t=e.classes;return(0,y.Z)({root:["root"],arrowSwitcher:["arrowSwitcher"]},Dt,t)}(ce);return(0,S.jsxs)(kt,{ref:t,className:D(de.root,B),ownerState:ce,children:[j&&(0,S.jsx)(Mt,{className:de.arrowSwitcher,leftArrowButtonText:Y,rightArrowButtonText:K,components:m,componentsProps:h,onLeftClick:function(){return G($)},onRightClick:function(){return G(Q)},isLeftDisabled:!$,isRightDisabled:!Q,ownerState:ce}),(0,S.jsx)(rt,(0,o.Z)({autoFocus:d,date:v,ampmInClock:u,type:J,ampm:s,getClockLabelText:z,minutesStep:T,isTimeDisabled:se,meridiemMode:ae,handleMeridiemChange:ie,selectedId:le,disabled:L,readOnly:H},ue))]})})),St=n(30418),At=n(12065),Rt=n(40162);function jt(e){return(0,k.Z)("PrivatePickersMonth",e)}var Et=(0,M.Z)("PrivatePickersMonth",["root","selected"]),Nt=["disabled","onSelect","selected","value","tabIndex","hasFocus","onFocus","onBlur"],Ft=(0,x.ZP)(Z.Z,{name:"PrivatePickersMonth",slot:"Root",overridesResolver:function(e,t){return[t.root,(0,w.Z)({},"&.".concat(Et.selected),t.selected)]}})((function(e){var t=e.theme;return(0,o.Z)({flex:"1 0 33.33%",display:"flex",alignItems:"center",justifyContent:"center",color:"unset",backgroundColor:"transparent",border:0,outline:0},t.typography.subtitle1,(0,w.Z)({margin:"8px 0",height:36,borderRadius:18,cursor:"pointer","&:focus, &:hover":{backgroundColor:(0,At.Fq)(t.palette.action.active,t.palette.action.hoverOpacity)},"&:disabled":{pointerEvents:"none",color:t.palette.text.secondary}},"&.".concat(Et.selected),{color:t.palette.primary.contrastText,backgroundColor:t.palette.primary.main,"&:focus, &:hover":{backgroundColor:t.palette.primary.dark}}))})),Ot=function(){},It=function(e){var t=e.disabled,n=e.onSelect,i=e.selected,s=e.value,l=e.tabIndex,u=e.hasFocus,c=e.onFocus,d=void 0===c?Ot:c,f=e.onBlur,p=void 0===f?Ot:f,m=(0,r.Z)(e,Nt),h=function(e){var t=e.classes,n={root:["root",e.selected&&"selected"]};return(0,y.Z)(n,jt,t)}(e),v=function(){n(s)},b=a.useRef(null);return(0,Rt.Z)((function(){var e;u&&(null==(e=b.current)||e.focus())}),[u]),(0,S.jsx)(Ft,(0,o.Z)({ref:b,component:"button",type:"button",className:h.root,tabIndex:l,onClick:v,onKeyDown:Me(v),color:i?"primary":void 0,variant:i?"h5":"subtitle1",disabled:t,onFocus:function(e){return d(e,s)},onBlur:function(e){return p(e,s)}},m))};function Vt(e){return(0,k.Z)("MuiMonthPicker",e)}(0,M.Z)("MuiMonthPicker",["root"]);var Bt=["className","date","disabled","disableFuture","disablePast","maxDate","minDate","onChange","shouldDisableMonth","readOnly","disableHighlightToday","autoFocus","onMonthFocus","hasFocus","onFocusedViewChange"];var Lt=(0,x.ZP)("div",{name:"MuiMonthPicker",slot:"Root",overridesResolver:function(e,t){return t.root}})({width:310,display:"flex",flexWrap:"wrap",alignContent:"stretch",margin:"0 4px"}),Ht=a.forwardRef((function(e,t){var n=c(),s=p(),l=function(e,t){var n=c(),r=d(),a=(0,i.Z)({props:e,name:t});return(0,o.Z)({disableFuture:!1,disablePast:!1},a,{minDate:h(n,a.minDate,r.minDate),maxDate:h(n,a.maxDate,r.maxDate)})}(e,"MuiMonthPicker"),u=l.className,f=l.date,m=l.disabled,v=l.disableFuture,b=l.disablePast,g=l.maxDate,w=l.minDate,x=l.onChange,C=l.shouldDisableMonth,Z=l.readOnly,k=l.disableHighlightToday,M=l.autoFocus,P=void 0!==M&&M,T=l.onMonthFocus,A=l.hasFocus,R=l.onFocusedViewChange,j=(0,r.Z)(l,Bt),E=l,N=function(e){var t=e.classes;return(0,y.Z)({root:["root"]},Vt,t)}(E),F=(0,St.Z)(),O=a.useMemo((function(){return null!=f?f:n.startOfMonth(s)}),[s,n,f]),I=a.useMemo((function(){return null!=f?n.getMonth(f):k?null:n.getMonth(s)}),[s,f,n,k]),V=a.useState((function(){return I||n.getMonth(s)})),B=(0,ce.Z)(V,2),L=B[0],H=B[1],W=a.useCallback((function(e){var t=n.startOfMonth(b&&n.isAfter(s,w)?s:w),o=n.startOfMonth(v&&n.isBefore(s,g)?s:g);return!!n.isBefore(e,t)||(!!n.isAfter(e,o)||!!C&&C(e))}),[v,b,g,w,s,C,n]),Y=function(e){if(!Z){var t=n.setMonth(O,e);x(t,"finish")}},K=(0,Ne.Z)({name:"MonthPicker",state:"hasFocus",controlled:A,default:P}),z=(0,ce.Z)(K,2),q=z[0],U=z[1],X=a.useCallback((function(e){U(e),R&&R(e)}),[U,R]),_=a.useCallback((function(e){W(n.setMonth(O,e))||(H(e),X(!0),T&&T(e))}),[W,n,O,X,T]);a.useEffect((function(){H((function(e){return null!==I&&e!==I?I:e}))}),[I]);var J=(0,he.Z)((function(e){var t=12;switch(e.key){case"ArrowUp":_((t+L-3)%t),e.preventDefault();break;case"ArrowDown":_((t+L+3)%t),e.preventDefault();break;case"ArrowLeft":_((t+L+("ltr"===F.direction?-1:1))%t),e.preventDefault();break;case"ArrowRight":_((t+L+("ltr"===F.direction?1:-1))%t),e.preventDefault()}})),G=a.useCallback((function(e,t){_(t)}),[_]),Q=a.useCallback((function(){X(!1)}),[X]),$=n.getMonth(s);return(0,S.jsx)(Lt,(0,o.Z)({ref:t,className:D(N.root,u),ownerState:E,onKeyDown:J},j,{children:n.getMonthArray(O).map((function(e){var t=n.getMonth(e),o=n.format(e,"monthShort"),r=m||W(e);return(0,S.jsx)(It,{value:t,selected:t===I,tabIndex:t!==L||r?-1:0,hasFocus:q&&t===L,onSelect:Y,onFocus:G,onBlur:Q,disabled:r,"aria-current":$===t?"date":void 0,children:o},o)}))}))})),Wt=function(e){var t=e.props,n=e.value,o=e.adapter,r=o.utils.date(),a=o.utils.date(n),i=h(o.utils,t.minDate,o.defaultDates.minDate),s=h(o.utils,t.maxDate,o.defaultDates.maxDate);if(null===a)return null;switch(!0){case!o.utils.isValid(n):return"invalidDate";case Boolean(t.shouldDisableDate&&t.shouldDisableDate(a)):return"shouldDisableDate";case Boolean(t.disableFuture&&o.utils.isAfterDay(a,r)):return"disableFuture";case Boolean(t.disablePast&&o.utils.isBeforeDay(a,r)):return"disablePast";case Boolean(i&&o.utils.isBeforeDay(a,i)):return"minDate";case Boolean(s&&o.utils.isAfterDay(a,s)):return"maxDate";default:return null}},Yt=function(e){var t=e.shouldDisableDate,n=e.minDate,o=e.maxDate,r=e.disableFuture,i=e.disablePast,s=u();return a.useCallback((function(e){return null!==Wt({adapter:s,value:e,props:{shouldDisableDate:t,minDate:n,maxDate:o,disableFuture:r,disablePast:i}})}),[s,t,n,o,r,i])},Kt=function(e){var t,n=e.date,r=e.defaultCalendarMonth,i=e.disableFuture,s=e.disablePast,l=e.disableSwitchToMonthOnDayFocus,u=void 0!==l&&l,d=e.maxDate,f=e.minDate,m=e.onMonthChange,h=e.reduceAnimations,v=e.shouldDisableDate,b=p(),g=c(),w=a.useRef(function(e,t,n){return function(r,a){switch(a.type){case"changeMonth":return(0,o.Z)({},r,{slideDirection:a.direction,currentMonth:a.newMonth,isMonthSwitchingAnimating:!e});case"finishMonthSwitchingAnimation":return(0,o.Z)({},r,{isMonthSwitchingAnimating:!1});case"changeFocusedDay":if(null!=r.focusedDay&&null!=a.focusedDay&&n.isSameDay(a.focusedDay,r.focusedDay))return r;var i=null!=a.focusedDay&&!t&&!n.isSameMonth(r.currentMonth,a.focusedDay);return(0,o.Z)({},r,{focusedDay:a.focusedDay,isMonthSwitchingAnimating:i&&!e&&!a.withoutMonthSwitchingAnimation,currentMonth:i?n.startOfMonth(a.focusedDay):r.currentMonth,slideDirection:null!=a.focusedDay&&n.isAfterDay(a.focusedDay,r.currentMonth)?"left":"right"});default:throw new Error("missing support")}}}(Boolean(h),u,g)).current,x=a.useReducer(w,{isMonthSwitchingAnimating:!1,focusedDay:n||b,currentMonth:g.startOfMonth(null!=(t=null!=n?n:r)?t:b),slideDirection:"left"}),y=(0,ce.Z)(x,2),C=y[0],D=y[1],Z=a.useCallback((function(e){D((0,o.Z)({type:"changeMonth"},e)),m&&m(e.newMonth)}),[m]),k=a.useCallback((function(e){var t=null!=e?e:b;g.isSameMonth(t,C.currentMonth)||Z({newMonth:g.startOfMonth(t),direction:g.isAfterDay(t,C.currentMonth)?"left":"right"})}),[C.currentMonth,Z,b,g]),M=Yt({shouldDisableDate:v,minDate:f,maxDate:d,disableFuture:i,disablePast:s}),P=a.useCallback((function(){D({type:"finishMonthSwitchingAnimation"})}),[]),T=a.useCallback((function(e,t){M(e)||D({type:"changeFocusedDay",focusedDay:e,withoutMonthSwitchingAnimation:t})}),[M]);return{calendarState:C,changeMonth:k,changeFocusedDay:T,isDateDisabled:M,onMonthSwitchingAnimationEnd:P,handleChangeMonth:Z}},zt=n(60627),qt=n(75660),Ut=function(e){return(0,k.Z)("MuiPickersFadeTransitionGroup",e)},Xt=((0,M.Z)("MuiPickersFadeTransitionGroup",["root"]),function(e){var t=e.classes;return(0,y.Z)({root:["root"]},Ut,t)}),_t=500,Jt=(0,x.ZP)(qt.Z,{name:"MuiPickersFadeTransitionGroup",slot:"Root",overridesResolver:function(e,t){return t.root}})({display:"block",position:"relative"});function Gt(e){var t=(0,i.Z)({props:e,name:"MuiPickersFadeTransitionGroup"}),n=t.children,o=t.className,r=t.reduceAnimations,a=t.transKey,s=Xt(t);return r?n:(0,S.jsx)(Jt,{className:D(s.root,o),children:(0,S.jsx)(zt.Z,{appear:!1,mountOnEnter:!0,unmountOnExit:!0,timeout:{appear:_t,enter:_t/2,exit:0},children:n},a)})}var Qt=n(95080);function $t(e){return(0,k.Z)("MuiPickersDay",e)}var en=(0,M.Z)("MuiPickersDay",["root","dayWithMargin","dayOutsideMonth","hiddenDaySpacingFiller","today","selected","disabled"]),tn=["autoFocus","className","day","disabled","disableHighlightToday","disableMargin","hidden","isAnimating","onClick","onDaySelect","onFocus","onBlur","onKeyDown","onMouseDown","outsideCurrentMonth","selected","showDaysOutsideCurrentMonth","children","today"],nn=function(e){var t,n=e.theme,r=e.ownerState;return(0,o.Z)({},n.typography.caption,(t={width:36,height:36,borderRadius:"50%",padding:0,backgroundColor:n.palette.background.paper,color:n.palette.text.primary,"&:hover":{backgroundColor:(0,At.Fq)(n.palette.action.active,n.palette.action.hoverOpacity)},"&:focus":(0,w.Z)({backgroundColor:(0,At.Fq)(n.palette.action.active,n.palette.action.hoverOpacity)},"&.".concat(en.selected),{willChange:"background-color",backgroundColor:n.palette.primary.dark})},(0,w.Z)(t,"&.".concat(en.selected),{color:n.palette.primary.contrastText,backgroundColor:n.palette.primary.main,fontWeight:n.typography.fontWeightMedium,transition:n.transitions.create("background-color",{duration:n.transitions.duration.short}),"&:hover":{willChange:"background-color",backgroundColor:n.palette.primary.dark}}),(0,w.Z)(t,"&.".concat(en.disabled),{color:n.palette.text.disabled}),t),!r.disableMargin&&{margin:"0 ".concat(2,"px")},r.outsideCurrentMonth&&r.showDaysOutsideCurrentMonth&&{color:n.palette.text.secondary},!r.disableHighlightToday&&r.today&&(0,w.Z)({},"&:not(.".concat(en.selected,")"),{border:"1px solid ".concat(n.palette.text.secondary)}))},on=function(e,t){var n=e.ownerState;return[t.root,!n.disableMargin&&t.dayWithMargin,!n.disableHighlightToday&&n.today&&t.today,!n.outsideCurrentMonth&&n.showDaysOutsideCurrentMonth&&t.dayOutsideMonth,n.outsideCurrentMonth&&!n.showDaysOutsideCurrentMonth&&t.hiddenDaySpacingFiller]},rn=(0,x.ZP)(Qt.Z,{name:"MuiPickersDay",slot:"Root",overridesResolver:on})(nn),an=(0,x.ZP)("div",{name:"MuiPickersDay",slot:"Root",overridesResolver:on})((function(e){var t=e.theme,n=e.ownerState;return(0,o.Z)({},nn({theme:t,ownerState:n}),{opacity:0,pointerEvents:"none"})})),sn=function(){},ln=a.forwardRef((function(e,t){var n=(0,i.Z)({props:e,name:"MuiPickersDay"}),s=n.autoFocus,l=void 0!==s&&s,u=n.className,d=n.day,f=n.disabled,p=void 0!==f&&f,m=n.disableHighlightToday,h=void 0!==m&&m,v=n.disableMargin,b=void 0!==v&&v,g=n.isAnimating,w=n.onClick,x=n.onDaySelect,C=n.onFocus,Z=void 0===C?sn:C,k=n.onBlur,M=void 0===k?sn:k,P=n.onKeyDown,T=void 0===P?sn:P,A=n.onMouseDown,R=n.outsideCurrentMonth,j=n.selected,E=void 0!==j&&j,N=n.showDaysOutsideCurrentMonth,F=void 0!==N&&N,O=n.children,I=n.today,V=void 0!==I&&I,B=(0,r.Z)(n,tn),L=(0,o.Z)({},n,{autoFocus:l,disabled:p,disableHighlightToday:h,disableMargin:b,selected:E,showDaysOutsideCurrentMonth:F,today:V}),H=function(e){var t=e.selected,n=e.disableMargin,o=e.disableHighlightToday,r=e.today,a=e.disabled,i=e.outsideCurrentMonth,s=e.showDaysOutsideCurrentMonth,l=e.classes,u={root:["root",t&&"selected",a&&"disabled",!n&&"dayWithMargin",!o&&r&&"today",i&&s&&"dayOutsideMonth",i&&!s&&"hiddenDaySpacingFiller"],hiddenDaySpacingFiller:["hiddenDaySpacingFiller"]};return(0,y.Z)(u,$t,l)}(L),W=c(),Y=a.useRef(null),K=(0,le.Z)(Y,t);(0,Ie.Z)((function(){!l||p||g||R||Y.current.focus()}),[l,p,g,R]);return R&&!F?(0,S.jsx)(an,{className:D(H.root,H.hiddenDaySpacingFiller,u),ownerState:L,role:B.role}):(0,S.jsx)(rn,(0,o.Z)({className:D(H.root,u),ownerState:L,ref:K,centerRipple:!0,disabled:p,tabIndex:E?0:-1,onKeyDown:function(e){return T(e,d)},onFocus:function(e){return Z(e,d)},onBlur:function(e){return M(e,d)},onClick:function(e){p||x(d,"finish"),R&&e.currentTarget.focus(),w&&w(e)},onMouseDown:function(e){A&&A(e),R&&e.preventDefault()}},B,{children:O||W.format(d,"dayOfMonth")}))})),un=function(e,t){return e.autoFocus===t.autoFocus&&e.isAnimating===t.isAnimating&&e.today===t.today&&e.disabled===t.disabled&&e.selected===t.selected&&e.disableMargin===t.disableMargin&&e.showDaysOutsideCurrentMonth===t.showDaysOutsideCurrentMonth&&e.disableHighlightToday===t.disableHighlightToday&&e.className===t.className&&e.sx===t.sx&&e.outsideCurrentMonth===t.outsideCurrentMonth&&e.onFocus===t.onFocus&&e.onBlur===t.onBlur&&e.onDaySelect===t.onDaySelect},cn=a.memo(ln,un),dn=n(94578);function fn(e,t){return e.replace(new RegExp("(^|\\s)"+t+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}var pn=n(18875),mn=n(88852),hn=function(e,t){return e&&t&&t.split(" ").forEach((function(t){return o=t,void((n=e).classList?n.classList.remove(o):"string"===typeof n.className?n.className=fn(n.className,o):n.setAttribute("class",fn(n.className&&n.className.baseVal||"",o)));var n,o}))},vn=function(e){function t(){for(var t,n=arguments.length,o=new Array(n),r=0;r *":{position:"absolute",top:0,right:0,left:0}},(0,w.Z)(t,"& .".concat(wn["slideEnter-left"]),{willChange:"transform",transform:"translate(100%)",zIndex:1}),(0,w.Z)(t,"& .".concat(wn["slideEnter-right"]),{willChange:"transform",transform:"translate(-100%)",zIndex:1}),(0,w.Z)(t,"& .".concat(wn.slideEnterActive),{transform:"translate(0%)",transition:n}),(0,w.Z)(t,"& .".concat(wn.slideExit),{transform:"translate(0%)"}),(0,w.Z)(t,"& .".concat(wn["slideExitActiveLeft-left"]),{willChange:"transform",transform:"translate(-100%)",transition:n,zIndex:0}),(0,w.Z)(t,"& .".concat(wn["slideExitActiveLeft-right"]),{willChange:"transform",transform:"translate(100%)",transition:n,zIndex:0}),t})),Cn=function(e){return(0,k.Z)("MuiDayPicker",e)},Dn=((0,M.Z)("MuiDayPicker",["header","weekDayLabel","loadingContainer","slideTransition","monthContainer","weekContainer"]),function(e){return e.charAt(0).toUpperCase()}),Zn=(0,x.ZP)("div",{name:"MuiDayPicker",slot:"Header",overridesResolver:function(e,t){return t.header}})({display:"flex",justifyContent:"center",alignItems:"center"}),kn=(0,x.ZP)(Z.Z,{name:"MuiDayPicker",slot:"WeekDayLabel",overridesResolver:function(e,t){return t.weekDayLabel}})((function(e){return{width:36,height:40,margin:"0 2px",textAlign:"center",display:"flex",justifyContent:"center",alignItems:"center",color:e.theme.palette.text.secondary}})),Mn=(0,x.ZP)("div",{name:"MuiDayPicker",slot:"LoadingContainer",overridesResolver:function(e,t){return t.loadingContainer}})({display:"flex",justifyContent:"center",alignItems:"center",minHeight:240}),Pn=(0,x.ZP)((function(e){var t=e.children,n=e.className,i=e.reduceAnimations,s=e.slideDirection,l=e.transKey,u=(0,r.Z)(e,xn),c=function(e){var t=e.classes;return(0,y.Z)({root:["root"]},gn,t)}(e);if(i)return(0,S.jsx)("div",{className:D(c.root,n),children:t});var d={exit:wn.slideExit,enterActive:wn.slideEnterActive,enter:wn["slideEnter-".concat(s)],exitActive:wn["slideExitActiveLeft-".concat(s)]};return(0,S.jsx)(yn,{className:D(c.root,n),childFactory:function(e){return a.cloneElement(e,{classNames:d})},role:"presentation",children:(0,S.jsx)(bn,(0,o.Z)({mountOnEnter:!0,unmountOnExit:!0,timeout:350,classNames:d},u,{children:t}),l)})}),{name:"MuiDayPicker",slot:"SlideTransition",overridesResolver:function(e,t){return t.slideTransition}})({minHeight:240}),Tn=(0,x.ZP)("div",{name:"MuiDayPicker",slot:"MonthContainer",overridesResolver:function(e,t){return t.monthContainer}})({overflow:"hidden"}),Sn=(0,x.ZP)("div",{name:"MuiDayPicker",slot:"WeekContainer",overridesResolver:function(e,t){return t.weekContainer}})({margin:"".concat(2,"px 0"),display:"flex",justifyContent:"center"});function An(e){var t=p(),n=c(),r=(0,i.Z)({props:e,name:"MuiDayPicker"}),s=function(e){var t=e.classes;return(0,y.Z)({header:["header"],weekDayLabel:["weekDayLabel"],loadingContainer:["loadingContainer"],slideTransition:["slideTransition"],monthContainer:["monthContainer"],weekContainer:["weekContainer"]},Cn,t)}(r),l=r.onFocusedDayChange,u=r.className,d=r.currentMonth,f=r.selectedDays,h=r.disabled,v=r.disableHighlightToday,b=r.focusedDay,g=r.isMonthSwitchingAnimating,w=r.loading,x=r.onSelectedDaysChange,C=r.onMonthSwitchingAnimationEnd,Z=r.readOnly,k=r.reduceAnimations,M=r.renderDay,P=r.renderLoading,T=void 0===P?function(){return(0,S.jsx)("span",{children:"..."})}:P,A=r.showDaysOutsideCurrentMonth,R=r.slideDirection,j=r.TransitionProps,E=r.disablePast,N=r.disableFuture,F=r.minDate,O=r.maxDate,I=r.shouldDisableDate,V=r.dayOfWeekFormatter,B=void 0===V?Dn:V,L=r.hasFocus,H=r.onFocusedViewChange,W=r.gridLabelId,Y=Yt({shouldDisableDate:I,minDate:F,maxDate:O,disablePast:E,disableFuture:N}),K=a.useState((function(){return b||t})),z=(0,ce.Z)(K,2),q=z[0],U=z[1],X=a.useCallback((function(e){H&&H(e)}),[H]),_=a.useCallback((function(e){Z||x(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:"finish")}),[x,Z]),J=a.useCallback((function(e){Y(e)||(l(e),U(e),X(!0))}),[Y,l,X]),G=(0,ft.Z)();function Q(e,t){switch(e.key){case"ArrowUp":J(n.addDays(t,-7)),e.preventDefault();break;case"ArrowDown":J(n.addDays(t,7)),e.preventDefault();break;case"ArrowLeft":var o=n.addDays(t,"ltr"===G.direction?-1:1),r="ltr"===G.direction?n.getPreviousMonth(t):n.getNextMonth(t),a=m({utils:n,date:o,minDate:"ltr"===G.direction?n.startOfMonth(r):o,maxDate:"ltr"===G.direction?o:n.endOfMonth(r),isDateDisabled:Y});J(a||o),e.preventDefault();break;case"ArrowRight":var i=n.addDays(t,"ltr"===G.direction?1:-1),s="ltr"===G.direction?n.getNextMonth(t):n.getPreviousMonth(t),l=m({utils:n,date:i,minDate:"ltr"===G.direction?i:n.startOfMonth(s),maxDate:"ltr"===G.direction?n.endOfMonth(s):i,isDateDisabled:Y});J(l||i),e.preventDefault();break;case"Home":J(n.startOfWeek(t)),e.preventDefault();break;case"End":J(n.endOfWeek(t)),e.preventDefault();break;case"PageUp":J(n.getNextMonth(t)),e.preventDefault();break;case"PageDown":J(n.getPreviousMonth(t)),e.preventDefault()}}function $(e,t){J(t)}function ee(e,t){L&&n.isSameDay(q,t)&&X(!1)}var te=n.getMonth(d),ne=f.filter((function(e){return!!e})).map((function(e){return n.startOfDay(e)})),oe=te,re=a.useMemo((function(){return a.createRef()}),[oe]),ae=n.startOfWeek(t),ie=a.useMemo((function(){var e=n.startOfMonth(d),t=n.endOfMonth(d);return Y(q)||n.isAfterDay(q,t)||n.isBeforeDay(q,e)?m({utils:n,date:q,minDate:e,maxDate:t,disablePast:E,disableFuture:N,isDateDisabled:Y}):q}),[d,N,E,q,Y,n]);return(0,S.jsxs)("div",{role:"grid","aria-labelledby":W,children:[(0,S.jsx)(Zn,{role:"row",className:s.header,children:n.getWeekdays().map((function(e,t){var o;return(0,S.jsx)(kn,{variant:"caption",role:"columnheader","aria-label":n.format(n.addDays(ae,t),"weekday"),className:s.weekDayLabel,children:null!=(o=null==B?void 0:B(e))?o:e},e+t.toString())}))}),w?(0,S.jsx)(Mn,{className:s.loadingContainer,children:T()}):(0,S.jsx)(Pn,(0,o.Z)({transKey:oe,onExited:C,reduceAnimations:k,slideDirection:R,className:D(u,s.slideTransition)},j,{nodeRef:re,children:(0,S.jsx)(Tn,{ref:re,role:"rowgroup",className:s.monthContainer,children:n.getWeekArray(d).map((function(e){return(0,S.jsx)(Sn,{role:"row",className:s.weekContainer,children:e.map((function(e){var r=null!==ie&&n.isSameDay(e,ie),i=ne.some((function(t){return n.isSameDay(t,e)})),s=n.isSameDay(e,t),l={key:null==e?void 0:e.toString(),day:e,isAnimating:g,disabled:h||Y(e),autoFocus:L&&r,today:s,outsideCurrentMonth:n.getMonth(e)!==te,selected:i,disableHighlightToday:v,showDaysOutsideCurrentMonth:A,onKeyDown:Q,onFocus:$,onBlur:ee,onDaySelect:_,tabIndex:r?0:-1,role:"gridcell","aria-selected":i};return s&&(l["aria-current"]="date"),M?M(e,ne,l):(0,a.createElement)(cn,(0,o.Z)({},l,{key:l.key}))}))},"week-".concat(e[0]))}))})}))]})}var Rn=function(e){return(0,k.Z)("MuiPickersCalendarHeader",e)},jn=((0,M.Z)("MuiPickersCalendarHeader",["root","labelContainer","label","switchViewButton","switchViewIcon"]),(0,x.ZP)("div",{name:"MuiPickersCalendarHeader",slot:"Root",overridesResolver:function(e,t){return t.root}})({display:"flex",alignItems:"center",marginTop:16,marginBottom:8,paddingLeft:24,paddingRight:12,maxHeight:30,minHeight:30})),En=(0,x.ZP)("div",{name:"MuiPickersCalendarHeader",slot:"LabelContainer",overridesResolver:function(e,t){return t.labelContainer}})((function(e){var t=e.theme;return(0,o.Z)({display:"flex",maxHeight:30,overflow:"hidden",alignItems:"center",cursor:"pointer",marginRight:"auto"},t.typography.body1,{fontWeight:t.typography.fontWeightMedium})})),Nn=(0,x.ZP)("div",{name:"MuiPickersCalendarHeader",slot:"Label",overridesResolver:function(e,t){return t.label}})({marginRight:6}),Fn=(0,x.ZP)(N.Z,{name:"MuiPickersCalendarHeader",slot:"SwitchViewButton",overridesResolver:function(e,t){return t.switchViewButton}})({marginRight:"auto"}),On=(0,x.ZP)(O,{name:"MuiPickersCalendarHeader",slot:"SwitchViewIcon",overridesResolver:function(e,t){return t.switchViewIcon}})((function(e){var t=e.theme,n=e.ownerState;return(0,o.Z)({willChange:"transform",transition:t.transitions.create("transform"),transform:"rotate(0deg)"},"year"===n.openView&&{transform:"rotate(180deg)"})})),In=function(){};function Vn(e){var t=(0,i.Z)({props:e,name:"MuiPickersCalendarHeader"}),n=t.components,r=void 0===n?{}:n,s=t.componentsProps,l=void 0===s?{}:s,u=t.currentMonth,d=t.disabled,p=t.disableFuture,m=t.disablePast,h=t.getViewSwitchingButtonText,v=t.leftArrowButtonText,b=t.maxDate,g=t.minDate,w=t.onMonthChange,x=t.onViewChange,C=t.openView,D=t.reduceAnimations,Z=t.rightArrowButtonText,k=t.views,M=t.labelId;In({leftArrowButtonText:v,rightArrowButtonText:Z,getViewSwitchingButtonText:h});var P=f(),T=null!=v?v:P.previousMonth,A=null!=Z?Z:P.nextMonth,R=null!=h?h:P.calendarViewSwitchingButtonAriaLabel,j=c(),E=function(e){var t=e.classes;return(0,y.Z)({root:["root"],labelContainer:["labelContainer"],label:["label"],switchViewButton:["switchViewButton"],switchViewIcon:["switchViewIcon"]},Rn,t)}(t),N=l.switchViewButton||{},F=function(e,t){var n=t.disableFuture,o=t.maxDate,r=c();return a.useMemo((function(){var t=r.date(),a=r.startOfMonth(n&&r.isBefore(t,o)?t:o);return!r.isAfter(a,e)}),[n,o,e,r])}(u,{disableFuture:p,maxDate:b}),O=function(e,t){var n=t.disablePast,o=t.minDate,r=c();return a.useMemo((function(){var t=r.date(),a=r.startOfMonth(n&&r.isAfter(t,o)?t:o);return!r.isBefore(a,e)}),[n,o,e,r])}(u,{disablePast:m,minDate:g});if(1===k.length&&"year"===k[0])return null;var I=t;return(0,S.jsxs)(jn,{ownerState:I,className:E.root,children:[(0,S.jsxs)(En,{role:"presentation",onClick:function(){if(1!==k.length&&x&&!d)if(2===k.length)x(k.find((function(e){return e!==C}))||k[0]);else{var e=0!==k.indexOf(C)?0:1;x(k[e])}},ownerState:I,"aria-live":"polite",className:E.labelContainer,children:[(0,S.jsx)(Gt,{reduceAnimations:D,transKey:j.format(u,"monthAndYear"),children:(0,S.jsx)(Nn,{id:M,ownerState:I,className:E.label,children:j.format(u,"monthAndYear")})}),k.length>1&&!d&&(0,S.jsx)(Fn,(0,o.Z)({size:"small",as:r.SwitchViewButton,"aria-label":R(C),className:E.switchViewButton},N,{children:(0,S.jsx)(On,{as:r.SwitchViewIcon,ownerState:I,className:E.switchViewIcon})}))]}),(0,S.jsx)(zt.Z,{in:"day"===C,children:(0,S.jsx)(gt,{leftArrowButtonText:T,rightArrowButtonText:A,components:r,componentsProps:l,onLeftClick:function(){return w(j.getPreviousMonth(u),"right")},onRightClick:function(){return w(j.getNextMonth(u),"left")},isLeftDisabled:O,isRightDisabled:F})})]})}var Bn=n(88637),Ln=n(14036);function Hn(e){return(0,k.Z)("PrivatePickersYear",e)}var Wn=(0,M.Z)("PrivatePickersYear",["root","modeDesktop","modeMobile","yearButton","selected","disabled"]),Yn=["autoFocus","className","children","disabled","onClick","onKeyDown","value","tabIndex","onFocus","onBlur"],Kn=(0,x.ZP)("div",{name:"PrivatePickersYear",slot:"Root",overridesResolver:function(e,t){return[t.root,(0,w.Z)({},"&.".concat(Wn.modeDesktop),t.modeDesktop),(0,w.Z)({},"&.".concat(Wn.modeMobile),t.modeMobile)]}})((function(e){var t=e.ownerState;return(0,o.Z)({flexBasis:"33.3%",display:"flex",alignItems:"center",justifyContent:"center"},"desktop"===(null==t?void 0:t.wrapperVariant)&&{flexBasis:"25%"})})),zn=(0,x.ZP)("button",{name:"PrivatePickersYear",slot:"Button",overridesResolver:function(e,t){return[t.button,(0,w.Z)({},"&.".concat(Wn.disabled),t.disabled),(0,w.Z)({},"&.".concat(Wn.selected),t.selected)]}})((function(e){var t,n=e.theme;return(0,o.Z)({color:"unset",backgroundColor:"transparent",border:0,outline:0},n.typography.subtitle1,(t={margin:"8px 0",height:36,width:72,borderRadius:18,cursor:"pointer","&:focus, &:hover":{backgroundColor:(0,At.Fq)(n.palette.action.active,n.palette.action.hoverOpacity)}},(0,w.Z)(t,"&.".concat(Wn.disabled),{color:n.palette.text.secondary}),(0,w.Z)(t,"&.".concat(Wn.selected),{color:n.palette.primary.contrastText,backgroundColor:n.palette.primary.main,"&:focus, &:hover":{backgroundColor:n.palette.primary.dark}}),t))})),qn=function(){},Un=a.forwardRef((function(e,t){var n=e.autoFocus,i=e.className,s=e.children,l=e.disabled,u=e.onClick,c=e.onKeyDown,d=e.value,f=e.tabIndex,p=e.onFocus,m=void 0===p?qn:p,h=e.onBlur,v=void 0===h?qn:h,b=(0,r.Z)(e,Yn),g=a.useRef(null),w=(0,le.Z)(g,t),x=a.useContext(ue),C=(0,o.Z)({},e,{wrapperVariant:x}),Z=function(e){var t=e.wrapperVariant,n=e.disabled,o=e.selected,r=e.classes,a={root:["root",t&&"mode".concat((0,Ln.Z)(t))],yearButton:["yearButton",n&&"disabled",o&&"selected"]};return(0,y.Z)(a,Hn,r)}(C);return a.useEffect((function(){n&&g.current.focus()}),[n]),(0,S.jsx)(Kn,{className:D(Z.root,i),ownerState:C,children:(0,S.jsx)(zn,(0,o.Z)({ref:w,disabled:l,type:"button",tabIndex:l?-1:f,onClick:function(e){return u(e,d)},onKeyDown:function(e){return c(e,d)},onFocus:function(e){return m(e,d)},onBlur:function(e){return v(e,d)},className:Z.yearButton,ownerState:C},b,{children:s}))})}));function Xn(e){return(0,k.Z)("MuiYearPicker",e)}(0,M.Z)("MuiYearPicker",["root"]);var _n=(0,x.ZP)("div",{name:"MuiYearPicker",slot:"Root",overridesResolver:function(e,t){return t.root}})({display:"flex",flexDirection:"row",flexWrap:"wrap",overflowY:"auto",height:"100%",padding:"0 4px",maxHeight:"304px"}),Jn=a.forwardRef((function(e,t){var n=p(),r=(0,ft.Z)(),s=c(),l=function(e,t){var n=c(),r=d(),a=(0,i.Z)({props:e,name:t});return(0,o.Z)({disablePast:!1,disableFuture:!1},a,{minDate:h(n,a.minDate,r.minDate),maxDate:h(n,a.maxDate,r.maxDate)})}(e,"MuiYearPicker"),u=l.autoFocus,f=l.className,m=l.date,v=l.disabled,b=l.disableFuture,g=l.disablePast,w=l.maxDate,x=l.minDate,C=l.onChange,Z=l.readOnly,k=l.shouldDisableYear,M=l.disableHighlightToday,P=l.onYearFocus,T=l.hasFocus,A=l.onFocusedViewChange,R=l,j=function(e){var t=e.classes;return(0,y.Z)({root:["root"]},Xn,t)}(R),E=a.useMemo((function(){return null!=m?m:s.startOfYear(n)}),[n,s,m]),N=a.useMemo((function(){return null!=m?s.getYear(m):M?null:s.getYear(n)}),[n,m,s,M]),F=a.useContext(ue),O=a.useRef(null),I=a.useState((function(){return N||s.getYear(n)})),V=(0,ce.Z)(I,2),B=V[0],L=V[1],H=(0,Bn.Z)({name:"YearPicker",state:"hasFocus",controlled:T,default:u}),W=(0,ce.Z)(H,2),Y=W[0],K=W[1],z=a.useCallback((function(e){K(e),A&&A(e)}),[K,A]),q=a.useCallback((function(e){return!(!g||!s.isBeforeYear(e,n))||(!(!b||!s.isAfterYear(e,n))||(!(!x||!s.isBeforeYear(e,x))||(!(!w||!s.isAfterYear(e,w))||!(!k||!k(e)))))}),[b,g,w,x,n,k,s]),U=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"finish";if(!Z){var o=s.setYear(E,t);C(o,n)}},X=a.useCallback((function(e){q(s.setYear(E,e))||(L(e),z(!0),null==P||P(e))}),[q,s,E,z,P]);a.useEffect((function(){L((function(e){return null!==N&&e!==N?N:e}))}),[N]);var _="desktop"===F?4:3,J=a.useCallback((function(e,t){switch(e.key){case"ArrowUp":X(t-_),e.preventDefault();break;case"ArrowDown":X(t+_),e.preventDefault();break;case"ArrowLeft":X(t+("ltr"===r.direction?-1:1)),e.preventDefault();break;case"ArrowRight":X(t+("ltr"===r.direction?1:-1)),e.preventDefault()}}),[X,r.direction,_]),G=a.useCallback((function(e,t){X(t)}),[X]),Q=a.useCallback((function(e,t){B===t&&z(!1)}),[B,z]),$=s.getYear(n),ee=a.useRef(null),te=(0,le.Z)(t,ee);return a.useEffect((function(){if(!u&&null!==ee.current){var e=ee.current.querySelector('[tabindex="0"]');if(e){var t=e.offsetHeight,n=e.offsetTop,o=ee.current.clientHeight,r=ee.current.scrollTop,a=n+t;t>o||n1&&(r=t,a=n),n=Math.max(a,n),t=Math.max(t,r)}return t};if(!0===e.mask&&u&&!d){var g=b(a),w=h(a.substr(g))[0];g=a.indexOf(w,g),a="".concat(a.substr(0,g)).concat(a.substr(g+1))}var x=e.format(a);null==i||l.selectionStart!==a.length||d||(u?x=i(x):""===h(x.slice(-1))&&(x=x.slice(0,-1)));var y=r?r(x):x;return s===y?n():e.onChange(y),function(){var t=b(x);if(null!=e.mask&&(u||c&&!f))for(;x[t]&&""===h(x[t]);)t+=1;l.selectionStart=l.selectionEnd=t+(f?1+m:0)}}})),(0,a.useEffect)((function(){var e=function(e){"Delete"===e.code&&(l.current=!0)},t=function(e){"Delete"===e.code&&(l.current=!1)};return document.addEventListener("keydown",e),document.addEventListener("keyup",t),function(){document.removeEventListener("keydown",e),document.removeEventListener("keyup",t)}}),[]),{value:null!=o.current?o.current[0]:s,onChange:function(t){var r=t.target.value;o.current=[r,t.target,r.length>s.length,l.current,s===e.format(r)],n()}}},ao=function(e,t,n){var o=e.date(t);return null===t?"":e.isValid(o)?e.formatByString(o,n):""},io="_",so="2019-11-21T22:30:00.000",lo="2019-01-01T09:00:00.000";function uo(e,t,n,o){if(!e)return!1;var r=o.formatByString(o.date(lo),t).replace(n,io),a=o.formatByString(o.date(so),t).replace(n,"_"),i=a===r&&e===a;return!i&&o.lib,i}var co=function(e){var t=e.acceptRegex,n=void 0===t?/[\d]/gi:t,r=e.disabled,i=e.disableMaskedInput,s=e.ignoreInvalidInputs,l=e.inputFormat,u=e.inputProps,d=e.label,f=e.mask,p=e.onChange,m=e.rawValue,h=e.readOnly,v=e.rifmFormatter,b=e.TextFieldProps,g=e.validationError,w=c(),x=w.getFormatHelperText(l),y=a.useMemo((function(){if(i)return{shouldUseMaskedInput:!1,maskToUse:""};var e=function(e,t,n,o){if(e)return e;var r=o.formatByString(o.date(lo),t).replace(n,io);return r===o.formatByString(o.date(so),t).replace(n,"_")?r:""}(f,l,n,w);return{shouldUseMaskedInput:uo(e,l,n,w),maskToUse:e}}),[n,i,l,f,w]),C=y.shouldUseMaskedInput,D=y.maskToUse,Z=a.useMemo((function(){return C&&D?function(e,t){return function(n){var o=0;return n.split("").map((function(r,a){if(t.lastIndex=0,o>e.length-1)return"";var i=e[o],s=e[o+1],l=t.test(r)?r:"",u=i===io?l:i+l;return o+=u.length,a===n.length-1&&s&&s!==io?u?u+s:"":u})).join("")}}(D,n):function(e){return e}}),[n,D,C]),k=null===m?null:w.date(m),M=a.useState(k),P=(0,ce.Z)(M,2),T=P[0],S=P[1],A=a.useState(ao(w,m,l)),R=(0,ce.Z)(A,2),j=R[0],E=R[1],N=a.useRef(),F=a.useRef(w.locale),O=a.useRef(l);a.useEffect((function(){var e=m!==N.current,t=w.locale!==F.current,n=l!==O.current;if(N.current=m,F.current=w.locale,O.current=l,e||t||n){var o=null===m?null:w.date(m),r=null===m||w.isValid(o),a=null===T&&null===o;if(null!==T&&null!==o){var i=w.isEqual(T,o);if(i)a=!0;else{var s=Math.abs(w.getDiff(T,o));a=0===s?i:s<1e3}}if(t||n||r&&!a){var u=ao(w,m,l);S(o),E(u)}}}),[w,m,l,T]);var I=function(e){var t=""===e||e===f?"":e;E(t);var n=null===t?null:w.parse(t,l);s&&!w.isValid(n)||(S(n),p(n,t||void 0))},V=ro({value:j,onChange:I,format:v||Z}),B=C?V:{value:j,onChange:function(e){I(e.currentTarget.value)}};return(0,o.Z)({label:d,disabled:r,error:g,inputProps:(0,o.Z)({},B,{disabled:r,placeholder:x,readOnly:h,type:C?"tel":"text"},u)},b)},fo=["className","components","disableOpenPicker","getOpenDialogAriaText","InputAdornmentProps","InputProps","inputRef","openPicker","OpenPickerButtonProps","renderInput"],po=a.forwardRef((function(e,t){var n=e.className,a=e.components,i=void 0===a?{}:a,s=e.disableOpenPicker,l=e.getOpenDialogAriaText,u=e.InputAdornmentProps,d=e.InputProps,p=e.inputRef,m=e.openPicker,h=e.OpenPickerButtonProps,v=e.renderInput,b=(0,r.Z)(e,fo),g=f(),x=null!=l?l:g.openDatePickerDialogue,y=c(),C=co(b),D=(null==u?void 0:u.position)||"end",Z=i.OpenPickerIcon||B;return v((0,o.Z)({ref:t,inputRef:p,className:n},C,{InputProps:(0,o.Z)({},d,(0,w.Z)({},"".concat(D,"Adornment"),s?void 0:(0,S.jsx)(oo.Z,(0,o.Z)({position:D},u,{children:(0,S.jsx)(N.Z,(0,o.Z)({edge:D,disabled:b.disabled||b.readOnly,"aria-label":x(b.rawValue,y)},h,{onClick:m,children:(0,S.jsx)(Z,{})}))}))))}))}));function mo(){return"undefined"===typeof window?"portrait":window.screen&&window.screen.orientation&&window.screen.orientation.angle?90===Math.abs(window.screen.orientation.angle)?"landscape":"portrait":window.orientation&&90===Math.abs(Number(window.orientation))?"landscape":"portrait"}function ho(e){return(0,k.Z)("MuiCalendarOrClockPicker",e)}(0,M.Z)("MuiCalendarOrClockPicker",["root","mobileKeyboardInputView"]);var vo=["autoFocus","className","parsedValue","DateInputProps","isMobileKeyboardViewOpen","onDateChange","onViewChange","openTo","orientation","showToolbar","toggleMobileKeyboardView","ToolbarComponent","toolbarFormat","toolbarPlaceholder","toolbarTitle","views","dateRangeIcon","timeIcon","hideTabs","classes"],bo=(0,x.ZP)("div",{name:"MuiCalendarOrClockPicker",slot:"MobileKeyboardInputView",overridesResolver:function(e,t){return t.mobileKeyboardInputView}})({padding:"16px 24px"}),go=(0,x.ZP)("div",{name:"MuiCalendarOrClockPicker",slot:"Root",overridesResolver:function(e,t){return t.root}})((function(e){var t=e.ownerState;return(0,o.Z)({display:"flex",flexDirection:"column"},t.isLandscape&&{flexDirection:"row"})})),wo={fullWidth:!0},xo=function(e){return"year"===e||"month"===e||"day"===e},yo=function(e){return"hours"===e||"minutes"===e||"seconds"===e};function Co(e){var t,n,s=(0,i.Z)({props:e,name:"MuiCalendarOrClockPicker"}),l=s.autoFocus,u=s.parsedValue,c=s.DateInputProps,d=s.isMobileKeyboardViewOpen,f=s.onDateChange,p=s.onViewChange,m=s.openTo,h=s.orientation,v=s.showToolbar,b=s.toggleMobileKeyboardView,g=s.ToolbarComponent,w=void 0===g?function(){return null}:g,x=s.toolbarFormat,C=s.toolbarPlaceholder,D=s.toolbarTitle,Z=s.views,k=s.dateRangeIcon,M=s.timeIcon,P=s.hideTabs,T=(0,r.Z)(s,vo),A=null==(t=T.components)?void 0:t.Tabs,R=function(e,t){var n=a.useState(mo),o=(0,ce.Z)(n,2),r=o[0],i=o[1];return(0,Ie.Z)((function(){var e=function(){i(mo())};return window.addEventListener("orientationchange",e),function(){window.removeEventListener("orientationchange",e)}}),[]),!ke(e,["hours","minutes","seconds"])&&"landscape"===(t||r)}(Z,h),j=a.useContext(ue),E=function(e){var t=e.classes;return(0,y.Z)({root:["root"],mobileKeyboardInputView:["mobileKeyboardInputView"]},ho,t)}(s),N=null!=v?v:"desktop"!==j,F=!P&&"undefined"!==typeof window&&window.innerHeight>667,O=a.useCallback((function(e,t){f(e,j,t)}),[f,j]);var I=Fe({view:void 0,views:Z,openTo:m,onChange:O,onViewChange:a.useCallback((function(e){d&&b(),p&&p(e)}),[d,p,b])}),V=I.openView,B=I.setOpenView,L=I.handleChangeAndOpenNext,H=function(e){var t=e.autoFocus,n=e.openView,o=a.useState(t?n:null),r=(0,ce.Z)(o,2),i=r[0],s=r[1];return{focusedView:i,setFocusedView:a.useCallback((function(e){return function(t){s(t?e:function(t){return e===t?null:t})}}),[])}}({autoFocus:l,openView:V}),W=H.focusedView,Y=H.setFocusedView;return(0,S.jsxs)(go,{ownerState:{isLandscape:R},className:E.root,children:[N&&(0,S.jsx)(w,(0,o.Z)({},T,{views:Z,isLandscape:R,parsedValue:u,onChange:O,setOpenView:B,openView:V,toolbarTitle:D,toolbarFormat:x,toolbarPlaceholder:C,isMobileKeyboardViewOpen:d,toggleMobileKeyboardView:b})),F&&!!A&&(0,S.jsx)(A,(0,o.Z)({dateRangeIcon:k,timeIcon:M,view:V,onChange:B},null==(n=T.componentsProps)?void 0:n.tabs)),(0,S.jsx)(Zt,{children:d?(0,S.jsx)(bo,{className:E.mobileKeyboardInputView,children:(0,S.jsx)(po,(0,o.Z)({},c,{ignoreInvalidInputs:!0,disableOpenPicker:!0,TextFieldProps:wo}))}):(0,S.jsxs)(a.Fragment,{children:[xo(V)&&(0,S.jsx)(no,(0,o.Z)({autoFocus:l,date:u,onViewChange:B,onChange:L,view:V,views:Z.filter(xo),focusedView:W,onFocusedViewChange:Y},T)),yo(V)&&(0,S.jsx)(Tt,(0,o.Z)({},T,{autoFocus:l,date:u,view:V,views:Z.filter(yo),onChange:L,onViewChange:B,showViewSwitcher:"desktop"===j}))]})})]})}var Do=function(e){var t=e.adapter,n=e.value,o=e.props,r=o.minTime,a=o.maxTime,i=o.minutesStep,s=o.shouldDisableTime,l=o.disableIgnoringDatePartForTimeValidation,u=t.utils.date(n),c=yt(l,t.utils);if(null===n)return null;switch(!0){case!t.utils.isValid(n):return"invalidDate";case Boolean(r&&c(r,u)):return"minTime";case Boolean(a&&c(u,a)):return"maxTime";case Boolean(s&&s(t.utils.getHours(u),"hours")):return"shouldDisableTime-hours";case Boolean(s&&s(t.utils.getMinutes(u),"minutes")):return"shouldDisableTime-minutes";case Boolean(s&&s(t.utils.getSeconds(u),"seconds")):return"shouldDisableTime-seconds";case Boolean(i&&t.utils.getMinutes(u)%i!==0):return"minutesStep";default:return null}},Zo=["minDate","maxDate","disableFuture","shouldDisableDate","disablePast"],ko=function(e){var t=e.props,n=e.value,o=e.adapter,a=t.minDate,i=t.maxDate,s=t.disableFuture,l=t.shouldDisableDate,u=t.disablePast,c=(0,r.Z)(t,Zo),d=Wt({adapter:o,value:n,props:{minDate:a,maxDate:i,disableFuture:s,shouldDisableDate:l,disablePast:u}});return null!==d?d:Do({adapter:o,value:n,props:c})},Mo=function(e,t){return e===t};function Po(e){return function(e,t,n){var o=e.value,r=e.onError,i=u(),s=a.useRef(null),l=t({adapter:i,value:o,props:e});return a.useEffect((function(){r&&!n(l,s.current)&&r(l,o),s.current=l}),[n,r,s,l,o]),l}(e,ko,Mo)}var To=function(e,t){var n=e.onAccept,r=e.onChange,i=e.value,s=e.closeOnSelect,l=c(),u=function(e){var t=e.open,n=e.onOpen,o=e.onClose,r=a.useRef("boolean"===typeof t).current,i=a.useState(!1),s=(0,ce.Z)(i,2),l=s[0],u=s[1];return a.useEffect((function(){if(r){if("boolean"!==typeof t)throw new Error("You must not mix controlling and uncontrolled mode for `open` prop");u(t)}}),[r,t]),{isOpen:l,setIsOpen:a.useCallback((function(e){r||u(e),e&&n&&n(),!e&&o&&o()}),[r,n,o])}}(e),d=u.isOpen,f=u.setIsOpen,p=a.useMemo((function(){return t.parseInput(l,i)}),[t,l,i]),m=a.useState(p),h=(0,ce.Z)(m,2),v=h[0],b=h[1],g=a.useState((function(){return{committed:p,draft:p,resetFallback:p}})),w=(0,ce.Z)(g,2),x=w[0],y=w[1],C=a.useCallback((function(e){y((function(t){switch(e.action){case"setAll":case"acceptAndClose":return{draft:e.value,committed:e.value,resetFallback:e.value};case"setCommitted":return(0,o.Z)({},t,{draft:e.value,committed:e.value});case"setDraft":return(0,o.Z)({},t,{draft:e.value});default:return t}})),(e.forceOnChangeCall||!e.skipOnChangeCall&&!t.areValuesEqual(l,x.committed,e.value))&&r(e.value),"acceptAndClose"===e.action&&(f(!1),n&&!t.areValuesEqual(l,x.resetFallback,e.value)&&n(e.value))}),[n,r,f,x,l,t]);a.useEffect((function(){l.isValid(p)&&b(p)}),[l,p]),a.useEffect((function(){d&&C({action:"setAll",value:p,skipOnChangeCall:!0})}),[d]),t.areValuesEqual(l,x.committed,p)||C({action:"setCommitted",value:p,skipOnChangeCall:!0});var D=a.useMemo((function(){return{open:d,onClear:function(){C({value:t.emptyValue,action:"acceptAndClose",forceOnChangeCall:!t.areValuesEqual(l,i,t.emptyValue)})},onAccept:function(){C({value:x.draft,action:"acceptAndClose",forceOnChangeCall:!t.areValuesEqual(l,i,p)})},onDismiss:function(){C({value:x.committed,action:"acceptAndClose"})},onCancel:function(){C({value:x.resetFallback,action:"acceptAndClose"})},onSetToday:function(){C({value:t.getTodayValue(l),action:"acceptAndClose"})}}}),[C,d,l,x,t,i,p]),Z=a.useState(!1),k=(0,ce.Z)(Z,2),M=k[0],P=k[1],T=a.useMemo((function(){return{parsedValue:x.draft,isMobileKeyboardViewOpen:M,toggleMobileKeyboardView:function(){return P(!M)},onDateChange:function(e,t){switch(arguments.length>2&&void 0!==arguments[2]?arguments[2]:"partial"){case"shallow":return C({action:"setDraft",value:e,skipOnChangeCall:!0});case"partial":return C({action:"setDraft",value:e});case"finish":return C((null!=s?s:"desktop"===t)?{value:e,action:"acceptAndClose"}:{value:e,action:"setCommitted"});default:throw new Error("MUI: Invalid selectionState passed to `onDateChange`")}}}}),[C,M,x.draft,s]),S=a.useCallback((function(e,n){var o=t.valueReducer?t.valueReducer(l,v,e):e;r(o,n)}),[r,t,v,l]),A={pickerProps:T,inputProps:a.useMemo((function(){return{onChange:S,open:d,rawValue:i,openPicker:function(){return f(!0)}}}),[S,d,i,f]),wrapperProps:D};return a.useDebugValue(A,(function(){return{MuiPickerState:{dateState:x,other:A}}})),A},So=n(43896),Ao=n(18073),Ro=n(85860);function jo(e){return(0,k.Z)("MuiDateTimePickerTabs",e)}(0,M.Z)("MuiDateTimePickerTabs",["root"]);var Eo=(0,x.ZP)(Ao.Z,{name:"MuiDateTimePickerTabs",slot:"Root",overridesResolver:function(e,t){return t.root}})((function(e){var t=e.ownerState,n=e.theme;return(0,o.Z)({boxShadow:"0 -1px 0 0 inset ".concat(n.palette.divider)},"desktop"===t.wrapperVariant&&(0,w.Z)({order:1,boxShadow:"0 1px 0 0 inset ".concat(n.palette.divider)},"& .".concat(Ro.Z.indicator),{bottom:"auto",top:0}))})),No=function(e){var t,n=(0,i.Z)({props:e,name:"MuiDateTimePickerTabs"}),r=n.dateRangeIcon,s=void 0===r?(0,S.jsx)(H,{}):r,l=n.onChange,u=n.timeIcon,c=void 0===u?(0,S.jsx)(Y,{}):u,d=n.view,p=f(),m=a.useContext(ue),h=(0,o.Z)({},n,{wrapperVariant:m}),v=function(e){var t=e.classes;return(0,y.Z)({root:["root"]},jo,t)}(h);return(0,S.jsxs)(Eo,{ownerState:h,variant:"fullWidth",value:(t=d,["day","month","year"].includes(t)?"date":"time"),onChange:function(e,t){l("date"===t?"day":"hours")},className:v.root,children:[(0,S.jsx)(So.Z,{value:"date","aria-label":p.dateTableLabel,icon:(0,S.jsx)(a.Fragment,{children:s})}),(0,S.jsx)(So.Z,{value:"time","aria-label":p.timeTableLabel,icon:(0,S.jsx)(a.Fragment,{children:c})})]})},Fo=["onChange","PaperProps","PopperProps","ToolbarComponent","TransitionComponent","value","components","componentsProps","hideTabs"],Oo=a.forwardRef((function(e,t){var n=v(e,"MuiDesktopDateTimePicker"),i=null!==Po(n),s=To(n,b),l=s.pickerProps,u=s.inputProps,c=s.wrapperProps,d=n.PaperProps,f=n.PopperProps,p=n.ToolbarComponent,m=void 0===p?se:p,h=n.TransitionComponent,g=n.components,w=n.componentsProps,x=n.hideTabs,y=void 0===x||x,C=(0,r.Z)(n,Fo),D=a.useMemo((function(){return(0,o.Z)({Tabs:No},g)}),[g]),Z=(0,o.Z)({},u,C,{components:D,componentsProps:w,ref:t,validationError:i});return(0,S.jsx)(Ee,(0,o.Z)({},c,{DateInputProps:Z,KeyboardDateInputComponent:po,PopperProps:f,PaperProps:d,TransitionComponent:h,components:D,componentsProps:w,children:(0,S.jsx)(Co,(0,o.Z)({},l,{autoFocus:!0,toolbarTitle:n.label||n.toolbarTitle,ToolbarComponent:m,DateInputProps:Z,components:D,componentsProps:w,hideTabs:y},C))}))}));function Io(e){return(0,k.Z)("MuiDialogContent",e)}(0,M.Z)("MuiDialogContent",["root","dividers"]);var Vo=(0,M.Z)("MuiDialogTitle",["root"]),Bo=["className","dividers"],Lo=(0,x.ZP)("div",{name:"MuiDialogContent",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState;return[t.root,n.dividers&&t.dividers]}})((function(e){var t=e.theme,n=e.ownerState;return(0,o.Z)({flex:"1 1 auto",WebkitOverflowScrolling:"touch",overflowY:"auto",padding:"20px 24px"},n.dividers?{padding:"16px 24px",borderTop:"1px solid ".concat((t.vars||t).palette.divider),borderBottom:"1px solid ".concat((t.vars||t).palette.divider)}:(0,w.Z)({},".".concat(Vo.root," + &"),{paddingTop:0}))})),Ho=a.forwardRef((function(e,t){var n=(0,i.Z)({props:e,name:"MuiDialogContent"}),a=n.className,s=n.dividers,l=void 0!==s&&s,u=(0,r.Z)(n,Bo),c=(0,o.Z)({},n,{dividers:l}),d=function(e){var t=e.classes,n={root:["root",e.dividers&&"dividers"]};return(0,y.Z)(n,Io,t)}(c);return(0,S.jsx)(Lo,(0,o.Z)({className:(0,be.Z)(d.root,a),ownerState:c,ref:t},u))})),Wo=n(18252),Yo=n(88447);function Ko(e){return(0,k.Z)("MuiDialog",e)}var zo=(0,M.Z)("MuiDialog",["root","scrollPaper","scrollBody","container","paper","paperScrollPaper","paperScrollBody","paperWidthFalse","paperWidthXs","paperWidthSm","paperWidthMd","paperWidthLg","paperWidthXl","paperFullWidth","paperFullScreen"]);var qo,Uo=a.createContext({}),Xo=n(52739),_o=["aria-describedby","aria-labelledby","BackdropComponent","BackdropProps","children","className","disableEscapeKeyDown","fullScreen","fullWidth","maxWidth","onBackdropClick","onClose","open","PaperComponent","PaperProps","scroll","TransitionComponent","transitionDuration","TransitionProps"],Jo=(0,x.ZP)(Xo.Z,{name:"MuiDialog",slot:"Backdrop",overrides:function(e,t){return t.backdrop}})({zIndex:-1}),Go=(0,x.ZP)(Yo.Z,{name:"MuiDialog",slot:"Root",overridesResolver:function(e,t){return t.root}})({"@media print":{position:"absolute !important"}}),Qo=(0,x.ZP)("div",{name:"MuiDialog",slot:"Container",overridesResolver:function(e,t){var n=e.ownerState;return[t.container,t["scroll".concat((0,Ln.Z)(n.scroll))]]}})((function(e){var t=e.ownerState;return(0,o.Z)({height:"100%","@media print":{height:"auto"},outline:0},"paper"===t.scroll&&{display:"flex",justifyContent:"center",alignItems:"center"},"body"===t.scroll&&{overflowY:"auto",overflowX:"hidden",textAlign:"center","&:after":{content:'""',display:"inline-block",verticalAlign:"middle",height:"100%",width:"0"}})})),$o=(0,x.ZP)(fe.Z,{name:"MuiDialog",slot:"Paper",overridesResolver:function(e,t){var n=e.ownerState;return[t.paper,t["scrollPaper".concat((0,Ln.Z)(n.scroll))],t["paperWidth".concat((0,Ln.Z)(String(n.maxWidth)))],n.fullWidth&&t.paperFullWidth,n.fullScreen&&t.paperFullScreen]}})((function(e){var t=e.theme,n=e.ownerState;return(0,o.Z)({margin:32,position:"relative",overflowY:"auto","@media print":{overflowY:"visible",boxShadow:"none"}},"paper"===n.scroll&&{display:"flex",flexDirection:"column",maxHeight:"calc(100% - 64px)"},"body"===n.scroll&&{display:"inline-block",verticalAlign:"middle",textAlign:"left"},!n.maxWidth&&{maxWidth:"calc(100% - 64px)"},"xs"===n.maxWidth&&(0,w.Z)({maxWidth:"px"===t.breakpoints.unit?Math.max(t.breakpoints.values.xs,444):"max(".concat(t.breakpoints.values.xs).concat(t.breakpoints.unit,", 444px)")},"&.".concat(zo.paperScrollBody),(0,w.Z)({},t.breakpoints.down(Math.max(t.breakpoints.values.xs,444)+64),{maxWidth:"calc(100% - 64px)"})),n.maxWidth&&"xs"!==n.maxWidth&&(0,w.Z)({maxWidth:"".concat(t.breakpoints.values[n.maxWidth]).concat(t.breakpoints.unit)},"&.".concat(zo.paperScrollBody),(0,w.Z)({},t.breakpoints.down(t.breakpoints.values[n.maxWidth]+64),{maxWidth:"calc(100% - 64px)"})),n.fullWidth&&{width:"calc(100% - 64px)"},n.fullScreen&&(0,w.Z)({margin:0,width:"100%",maxWidth:"100%",height:"100%",maxHeight:"none",borderRadius:0},"&.".concat(zo.paperScrollBody),{margin:0,maxWidth:"100%"}))})),er=a.forwardRef((function(e,t){var n=(0,i.Z)({props:e,name:"MuiDialog"}),s=(0,ft.Z)(),l={enter:s.transitions.duration.enteringScreen,exit:s.transitions.duration.leavingScreen},u=n["aria-describedby"],c=n["aria-labelledby"],d=n.BackdropComponent,f=n.BackdropProps,p=n.children,m=n.className,h=n.disableEscapeKeyDown,v=void 0!==h&&h,b=n.fullScreen,g=void 0!==b&&b,w=n.fullWidth,x=void 0!==w&&w,C=n.maxWidth,D=void 0===C?"sm":C,Z=n.onBackdropClick,k=n.onClose,M=n.open,P=n.PaperComponent,T=void 0===P?fe.Z:P,A=n.PaperProps,R=void 0===A?{}:A,j=n.scroll,E=void 0===j?"paper":j,N=n.TransitionComponent,F=void 0===N?zt.Z:N,O=n.transitionDuration,I=void 0===O?l:O,V=n.TransitionProps,B=(0,r.Z)(n,_o),L=(0,o.Z)({},n,{disableEscapeKeyDown:v,fullScreen:g,fullWidth:x,maxWidth:D,scroll:E}),H=function(e){var t=e.classes,n=e.scroll,o=e.maxWidth,r=e.fullWidth,a=e.fullScreen,i={root:["root"],container:["container","scroll".concat((0,Ln.Z)(n))],paper:["paper","paperScroll".concat((0,Ln.Z)(n)),"paperWidth".concat((0,Ln.Z)(String(o))),r&&"paperFullWidth",a&&"paperFullScreen"]};return(0,y.Z)(i,Ko,t)}(L),W=a.useRef(),Y=(0,Wo.Z)(c),K=a.useMemo((function(){return{titleId:Y}}),[Y]);return(0,S.jsx)(Go,(0,o.Z)({className:(0,be.Z)(H.root,m),closeAfterTransition:!0,components:{Backdrop:Jo},componentsProps:{backdrop:(0,o.Z)({transitionDuration:I,as:d},f)},disableEscapeKeyDown:v,onClose:k,open:M,ref:t,onClick:function(e){W.current&&(W.current=null,Z&&Z(e),k&&k(e,"backdropClick"))},ownerState:L},B,{children:(0,S.jsx)(F,(0,o.Z)({appear:!0,in:M,timeout:I,role:"presentation"},V,{children:(0,S.jsx)(Qo,{className:(0,be.Z)(H.container),onMouseDown:function(e){W.current=e.target===e.currentTarget},ownerState:L,children:(0,S.jsx)($o,(0,o.Z)({as:T,elevation:24,role:"dialog","aria-describedby":u,"aria-labelledby":Y},R,{className:(0,be.Z)(H.paper,R.className),ownerState:L,children:(0,S.jsx)(Uo.Provider,{value:K,children:p})}))})}))}))})),tr=(0,x.ZP)(er)((qo={},(0,w.Z)(qo,"& .".concat(zo.container),{outline:0}),(0,w.Z)(qo,"& .".concat(zo.paper),{outline:0,minWidth:320}),qo)),nr=(0,x.ZP)(Ho)({"&:first-of-type":{padding:0}}),or=function(e){var t,n=e.children,r=e.DialogProps,a=void 0===r?{}:r,i=e.onAccept,s=e.onClear,l=e.onDismiss,u=e.onCancel,c=e.onSetToday,d=e.open,f=e.components,p=e.componentsProps,m=null!=(t=null==f?void 0:f.ActionBar)?t:De;return(0,S.jsxs)(tr,(0,o.Z)({open:d,onClose:l},a,{children:[(0,S.jsx)(nr,{children:n}),(0,S.jsx)(m,(0,o.Z)({onAccept:i,onClear:s,onCancel:u,onSetToday:c,actions:["cancel","accept"]},null==p?void 0:p.actionBar))]}))},rr=["children","DateInputProps","DialogProps","onAccept","onClear","onDismiss","onCancel","onSetToday","open","PureDateInputComponent","components","componentsProps"];function ar(e){var t=e.children,n=e.DateInputProps,a=e.DialogProps,i=e.onAccept,s=e.onClear,l=e.onDismiss,u=e.onCancel,c=e.onSetToday,d=e.open,f=e.PureDateInputComponent,p=e.components,m=e.componentsProps,h=(0,r.Z)(e,rr);return(0,S.jsxs)(ue.Provider,{value:"mobile",children:[(0,S.jsx)(f,(0,o.Z)({components:p},h,n)),(0,S.jsx)(or,{DialogProps:a,onAccept:i,onClear:s,onDismiss:l,onCancel:u,onSetToday:c,open:d,components:p,componentsProps:m,children:t})]})}var ir=a.forwardRef((function(e,t){var n=e.disabled,r=e.getOpenDialogAriaText,i=e.inputFormat,s=e.InputProps,l=e.inputRef,u=e.label,d=e.openPicker,p=e.rawValue,m=e.renderInput,h=e.TextFieldProps,v=void 0===h?{}:h,b=e.validationError,g=e.className,w=f(),x=null!=r?r:w.openDatePickerDialogue,y=c(),C=a.useMemo((function(){return(0,o.Z)({},s,{readOnly:!0})}),[s]),D=ao(y,p,i),Z=(0,he.Z)((function(e){e.stopPropagation(),d()}));return m((0,o.Z)({label:u,disabled:n,ref:t,inputRef:l,error:b,InputProps:C,className:g},!e.readOnly&&!e.disabled&&{onClick:Z},{inputProps:(0,o.Z)({disabled:n,readOnly:!0,"aria-readonly":!0,"aria-label":x(p,y),value:D},!e.readOnly&&{onClick:Z},{onKeyDown:Me(d)})},v))})),sr=["ToolbarComponent","value","onChange","components","componentsProps","hideTabs"],lr=a.forwardRef((function(e,t){var n=v(e,"MuiMobileDateTimePicker"),i=null!==Po(n),s=To(n,b),l=s.pickerProps,u=s.inputProps,c=s.wrapperProps,d=n.ToolbarComponent,f=void 0===d?se:d,p=n.components,m=n.componentsProps,h=n.hideTabs,g=void 0!==h&&h,w=(0,r.Z)(n,sr),x=a.useMemo((function(){return(0,o.Z)({Tabs:No},p)}),[p]),y=(0,o.Z)({},u,w,{components:x,componentsProps:m,ref:t,validationError:i});return(0,S.jsx)(ar,(0,o.Z)({},w,c,{DateInputProps:y,PureDateInputComponent:ir,components:x,componentsProps:m,children:(0,S.jsx)(Co,(0,o.Z)({},l,{autoFocus:!0,toolbarTitle:n.label||n.toolbarTitle,ToolbarComponent:f,DateInputProps:y,components:x,componentsProps:m,hideTabs:g},w))}))})),ur=["desktopModeMediaQuery","DialogProps","PopperProps","TransitionComponent"],cr=a.forwardRef((function(e,t){var n=(0,i.Z)({props:e,name:"MuiDateTimePicker"}),a=n.desktopModeMediaQuery,l=void 0===a?"@media (pointer: fine)":a,u=n.DialogProps,c=n.PopperProps,d=n.TransitionComponent,f=(0,r.Z)(n,ur);return(0,s.Z)(l,{defaultMatches:!0})?(0,S.jsx)(Oo,(0,o.Z)({ref:t,PopperProps:c,TransitionComponent:d},f)):(0,S.jsx)(lr,(0,o.Z)({ref:t,DialogProps:u},f))}))},36571:function(e,t,n){n.d(t,{_:function(){return d},y:function(){return c}});var o,r=n(87462),a=n(72791),i=n(31402),s={previousMonth:"Previous month",nextMonth:"Next month",openPreviousView:"open previous view",openNextView:"open next view",calendarViewSwitchingButtonAriaLabel:function(e){return"year"===e?"year view is open, switch to calendar view":"calendar view is open, switch to year view"},inputModeToggleButtonAriaLabel:function(e,t){return e?"text input view is open, go to ".concat(t," view"):"".concat(t," view is open, go to text input view")},start:"Start",end:"End",cancelButtonLabel:"Cancel",clearButtonLabel:"Clear",okButtonLabel:"OK",todayButtonLabel:"Today",datePickerDefaultToolbarTitle:"Select date",dateTimePickerDefaultToolbarTitle:"Select date & time",timePickerDefaultToolbarTitle:"Select time",dateRangePickerDefaultToolbarTitle:"Select date range",clockLabelText:function(e,t,n){return"Select ".concat(e,". ").concat(null===t?"No time selected":"Selected time is ".concat(n.format(t,"fullTime")))},hoursClockNumberText:function(e){return"".concat(e," hours")},minutesClockNumberText:function(e){return"".concat(e," minutes")},secondsClockNumberText:function(e){return"".concat(e," seconds")},openDatePickerDialogue:function(e,t){return e&&t.isValid(t.date(e))?"Choose date, selected date is ".concat(t.format(t.date(e),"fullDate")):"Choose date"},openTimePickerDialogue:function(e,t){return e&&t.isValid(t.date(e))?"Choose time, selected time is ".concat(t.format(t.date(e),"fullTime")):"Choose time"},timeTableLabel:"pick time",dateTableLabel:"pick date"},l=s,u=(o=s,(0,r.Z)({},o),n(80184)),c=a.createContext(null);function d(e){var t=(0,i.Z)({props:e,name:"MuiLocalizationProvider"}),n=t.children,o=t.dateAdapter,s=t.dateFormats,d=t.dateLibInstance,f=t.locale,p=t.adapterLocale,m=t.localeText;var h=a.useMemo((function(){return new o({locale:null!=p?p:f,formats:s,instance:d})}),[o,f,p,s,d]),v=a.useMemo((function(){return{minDate:h.date("1900-01-01T00:00:00.000"),maxDate:h.date("2099-12-31T00:00:00.000")}}),[h]),b=a.useMemo((function(){return{utils:h,defaultDates:v,localeText:(0,r.Z)({},l,null!=m?m:{})}}),[v,h,m]);return(0,u.jsx)(c.Provider,{value:b,children:n})}}}]); +//# sourceMappingURL=2193.a74f0e37.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/2193.5d74569e.chunk.js.map b/portal-ui/build/static/js/2193.a74f0e37.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/2193.5d74569e.chunk.js.map rename to portal-ui/build/static/js/2193.a74f0e37.chunk.js.map index ad9c2a7a4c..fb8fafd501 100644 --- a/portal-ui/build/static/js/2193.5d74569e.chunk.js.map +++ b/portal-ui/build/static/js/2193.a74f0e37.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/2193.5d74569e.chunk.js","mappings":"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","sources":["../node_modules/@date-io/luxon/build/index.esm.js","../node_modules/@mui/icons-material/Schedule.js","../node_modules/@mui/material/InputAdornment/inputAdornmentClasses.js","../node_modules/@mui/material/InputAdornment/InputAdornment.js","../node_modules/@mui/material/useMediaQuery/useMediaQuery.js","../node_modules/@mui/x-date-pickers/internals/hooks/useUtils.js","../node_modules/@mui/x-date-pickers/internals/utils/date-utils.js","../node_modules/@mui/x-date-pickers/DateTimePicker/shared.js","../node_modules/@mui/x-date-pickers/node_modules/clsx/dist/clsx.m.js","../node_modules/@mui/x-date-pickers/internals/components/pickersToolbarTextClasses.js","../node_modules/@mui/x-date-pickers/internals/components/PickersToolbarText.js","../node_modules/@mui/x-date-pickers/internals/components/icons/index.js","../node_modules/@mui/x-date-pickers/internals/components/pickersToolbarClasses.js","../node_modules/@mui/x-date-pickers/internals/components/PickersToolbar.js","../node_modules/@mui/x-date-pickers/internals/components/PickersToolbarButton.js","../node_modules/@mui/x-date-pickers/DateTimePicker/dateTimePickerToolbarClasses.js","../node_modules/@mui/x-date-pickers/DateTimePicker/DateTimePickerToolbar.js","../node_modules/@mui/x-date-pickers/internals/components/wrappers/WrapperVariantContext.js","../node_modules/@mui/material/DialogActions/dialogActionsClasses.js","../node_modules/@mui/material/DialogActions/DialogActions.js","../node_modules/@mui/x-date-pickers/PickersActionBar/PickersActionBar.js","../node_modules/@mui/x-date-pickers/internals/components/pickersPopperClasses.js","../node_modules/@mui/x-date-pickers/internals/utils/utils.js","../node_modules/@mui/x-date-pickers/internals/components/PickersPopper.js","../node_modules/@mui/x-date-pickers/internals/components/wrappers/DesktopWrapper.js","../node_modules/@mui/x-date-pickers/internals/hooks/useViews.js","../node_modules/@mui/x-date-pickers/ClockPicker/shared.js","../node_modules/@mui/x-date-pickers/ClockPicker/clockPointerClasses.js","../node_modules/@mui/x-date-pickers/ClockPicker/ClockPointer.js","../node_modules/@mui/x-date-pickers/ClockPicker/clockClasses.js","../node_modules/@mui/x-date-pickers/ClockPicker/Clock.js","../node_modules/@mui/x-date-pickers/ClockPicker/clockNumberClasses.js","../node_modules/@mui/x-date-pickers/ClockPicker/ClockNumber.js","../node_modules/@mui/x-date-pickers/ClockPicker/ClockNumbers.js","../node_modules/@mui/x-date-pickers/internals/components/pickersArrowSwitcherClasses.js","../node_modules/@mui/x-date-pickers/internals/components/PickersArrowSwitcher.js","../node_modules/@mui/x-date-pickers/internals/utils/time-utils.js","../node_modules/@mui/x-date-pickers/internals/hooks/date-helpers-hooks.js","../node_modules/@mui/x-date-pickers/ClockPicker/clockPickerClasses.js","../node_modules/@mui/x-date-pickers/internals/components/PickerViewRoot/PickerViewRoot.js","../node_modules/@mui/x-date-pickers/internals/constants/dimensions.js","../node_modules/@mui/x-date-pickers/ClockPicker/ClockPicker.js","../node_modules/@mui/x-date-pickers/internals/utils/warning.js","../node_modules/@mui/x-date-pickers/MonthPicker/pickersMonthClasses.js","../node_modules/@mui/x-date-pickers/MonthPicker/PickersMonth.js","../node_modules/@mui/x-date-pickers/MonthPicker/monthPickerClasses.js","../node_modules/@mui/x-date-pickers/MonthPicker/MonthPicker.js","../node_modules/@mui/x-date-pickers/internals/hooks/validation/useDateValidation.js","../node_modules/@mui/x-date-pickers/CalendarPicker/useCalendarState.js","../node_modules/@mui/x-date-pickers/CalendarPicker/pickersFadeTransitionGroupClasses.js","../node_modules/@mui/x-date-pickers/CalendarPicker/PickersFadeTransitionGroup.js","../node_modules/@mui/x-date-pickers/PickersDay/pickersDayClasses.js","../node_modules/@mui/x-date-pickers/PickersDay/PickersDay.js","../node_modules/dom-helpers/esm/removeClass.js","../node_modules/react-transition-group/esm/CSSTransition.js","../node_modules/dom-helpers/esm/addClass.js","../node_modules/dom-helpers/esm/hasClass.js","../node_modules/@mui/x-date-pickers/CalendarPicker/pickersSlideTransitionClasses.js","../node_modules/@mui/x-date-pickers/CalendarPicker/PickersSlideTransition.js","../node_modules/@mui/x-date-pickers/CalendarPicker/dayPickerClasses.js","../node_modules/@mui/x-date-pickers/CalendarPicker/DayPicker.js","../node_modules/@mui/x-date-pickers/CalendarPicker/pickersCalendarHeaderClasses.js","../node_modules/@mui/x-date-pickers/CalendarPicker/PickersCalendarHeader.js","../node_modules/@mui/x-date-pickers/YearPicker/pickersYearClasses.js","../node_modules/@mui/x-date-pickers/YearPicker/PickersYear.js","../node_modules/@mui/x-date-pickers/YearPicker/yearPickerClasses.js","../node_modules/@mui/x-date-pickers/YearPicker/YearPicker.js","../node_modules/@mui/x-date-pickers/internals/utils/defaultReduceAnimations.js","../node_modules/@mui/x-date-pickers/CalendarPicker/calendarPickerClasses.js","../node_modules/@mui/x-date-pickers/CalendarPicker/CalendarPicker.js","../node_modules/rifm/dist/rifm.esm.js","../node_modules/@mui/x-date-pickers/internals/utils/text-field-helper.js","../node_modules/@mui/x-date-pickers/internals/hooks/useMaskedInput.js","../node_modules/@mui/x-date-pickers/internals/components/KeyboardDateInput.js","../node_modules/@mui/x-date-pickers/internals/hooks/useIsLandscape.js","../node_modules/@mui/x-date-pickers/internals/components/CalendarOrClockPicker/calendarOrClockPickerClasses.js","../node_modules/@mui/x-date-pickers/internals/components/CalendarOrClockPicker/CalendarOrClockPicker.js","../node_modules/@mui/x-date-pickers/internals/components/CalendarOrClockPicker/useFocusManagement.js","../node_modules/@mui/x-date-pickers/internals/hooks/validation/useTimeValidation.js","../node_modules/@mui/x-date-pickers/internals/hooks/validation/useDateTimeValidation.js","../node_modules/@mui/x-date-pickers/internals/hooks/validation/useValidation.js","../node_modules/@mui/x-date-pickers/internals/hooks/useOpenState.js","../node_modules/@mui/x-date-pickers/internals/hooks/usePickerState.js","../node_modules/@mui/x-date-pickers/DateTimePicker/dateTimePickerTabsClasses.js","../node_modules/@mui/x-date-pickers/DateTimePicker/DateTimePickerTabs.js","../node_modules/@mui/x-date-pickers/DesktopDateTimePicker/DesktopDateTimePicker.js","../node_modules/@mui/material/DialogContent/dialogContentClasses.js","../node_modules/@mui/material/DialogTitle/dialogTitleClasses.js","../node_modules/@mui/material/DialogContent/DialogContent.js","../node_modules/@mui/material/Dialog/dialogClasses.js","../node_modules/@mui/material/Dialog/DialogContext.js","../node_modules/@mui/material/Dialog/Dialog.js","../node_modules/@mui/x-date-pickers/internals/components/PickersModalDialog.js","../node_modules/@mui/x-date-pickers/internals/components/wrappers/MobileWrapper.js","../node_modules/@mui/x-date-pickers/internals/components/PureDateInput.js","../node_modules/@mui/x-date-pickers/MobileDateTimePicker/MobileDateTimePicker.js","../node_modules/@mui/x-date-pickers/DateTimePicker/DateTimePicker.js","../node_modules/@mui/x-date-pickers/locales/utils/getPickersLocalization.js","../node_modules/@mui/x-date-pickers/locales/enUS.js","../node_modules/@mui/x-date-pickers/LocalizationProvider/LocalizationProvider.js"],"sourcesContent":["import { DateTime, Settings, Info } from 'luxon';\n\nconst defaultFormats = {\n dayOfMonth: \"d\",\n fullDate: \"DD\",\n fullDateWithWeekday: \"DDDD\",\n fullDateTime: \"ff\",\n fullDateTime12h: \"DD, hh:mm a\",\n fullDateTime24h: \"DD, T\",\n fullTime: \"t\",\n fullTime12h: \"hh:mm a\",\n fullTime24h: \"HH:mm\",\n hours12h: \"hh\",\n hours24h: \"HH\",\n keyboardDate: \"D\",\n keyboardDateTime: \"D t\",\n keyboardDateTime12h: \"D hh:mm a\",\n keyboardDateTime24h: \"D T\",\n minutes: \"mm\",\n seconds: \"ss\",\n month: \"LLLL\",\n monthAndDate: \"MMMM d\",\n monthAndYear: \"LLLL yyyy\",\n monthShort: \"MMM\",\n weekday: \"cccc\",\n weekdayShort: \"ccc\",\n normalDate: \"d MMMM\",\n normalDateWithWeekday: \"EEE, MMM d\",\n shortDate: \"MMM d\",\n year: \"yyyy\",\n};\nclass LuxonUtils {\n constructor({ locale, formats, } = {}) {\n this.lib = \"luxon\";\n this.date = (value) => {\n if (typeof value === \"undefined\") {\n return DateTime.local();\n }\n if (value === null) {\n return null;\n }\n if (typeof value === \"string\") {\n return DateTime.fromJSDate(new Date(value), { locale: this.locale });\n }\n if (DateTime.isDateTime(value)) {\n return value;\n }\n return DateTime.fromJSDate(value, { locale: this.locale });\n };\n this.toJsDate = (value) => {\n return value.toJSDate();\n };\n this.parseISO = (isoString) => {\n return DateTime.fromISO(isoString);\n };\n this.toISO = (value) => {\n return value.toISO({ format: \"extended\" });\n };\n this.parse = (value, formatString) => {\n if (value === \"\") {\n return null;\n }\n return DateTime.fromFormat(value, formatString, { locale: this.locale });\n };\n /* istanbul ignore next */\n this.is12HourCycleInCurrentLocale = () => {\n var _a, _b;\n if (typeof Intl === \"undefined\" || typeof Intl.DateTimeFormat === \"undefined\") {\n return true; // Luxon defaults to en-US if Intl not found\n }\n return Boolean((_b = (_a = new Intl.DateTimeFormat(this.locale, { hour: \"numeric\" })) === null || _a === void 0 ? void 0 : _a.resolvedOptions()) === null || _b === void 0 ? void 0 : _b.hour12);\n };\n this.getFormatHelperText = (format) => {\n // Unfortunately there is no way for luxon to retrieve readable formats from localized format\n return \"\";\n };\n /* istanbul ignore next */\n this.getCurrentLocaleCode = () => {\n return this.locale || Settings.defaultLocale;\n };\n this.addSeconds = (date, count) => {\n return date.plus({ seconds: count });\n };\n this.addMinutes = (date, count) => {\n return date.plus({ minutes: count });\n };\n this.addHours = (date, count) => {\n return date.plus({ hours: count });\n };\n this.addDays = (date, count) => {\n return date.plus({ days: count });\n };\n this.addWeeks = (date, count) => {\n return date.plus({ weeks: count });\n };\n this.addMonths = (date, count) => {\n return date.plus({ months: count });\n };\n this.addYears = (date, count) => {\n return date.plus({ years: count });\n };\n this.isValid = (value) => {\n var _a, _b;\n if (DateTime.isDateTime(value)) {\n return value.isValid;\n }\n if (value === null) {\n return false;\n }\n return (_b = (_a = this.date(value)) === null || _a === void 0 ? void 0 : _a.isValid) !== null && _b !== void 0 ? _b : false;\n };\n this.isEqual = (value, comparing) => {\n var _a, _b;\n if (value === null && comparing === null) {\n return true;\n }\n // make sure that null will not be passed to this.date\n if (value === null || comparing === null) {\n return false;\n }\n if (!this.date(comparing)) {\n /* istanbul ignore next */\n return false;\n }\n return (_b = (_a = this.date(value)) === null || _a === void 0 ? void 0 : _a.equals(this.date(comparing))) !== null && _b !== void 0 ? _b : false;\n };\n this.isSameDay = (date, comparing) => {\n return date.hasSame(comparing, \"day\");\n };\n this.isSameMonth = (date, comparing) => {\n return date.hasSame(comparing, \"month\");\n };\n this.isSameYear = (date, comparing) => {\n return date.hasSame(comparing, \"year\");\n };\n this.isSameHour = (date, comparing) => {\n return date.hasSame(comparing, \"hour\");\n };\n this.isAfter = (value, comparing) => {\n return value > comparing;\n };\n this.isBefore = (value, comparing) => {\n return value < comparing;\n };\n this.isBeforeDay = (value, comparing) => {\n const diff = value.diff(comparing.startOf(\"day\"), \"days\").toObject();\n return diff.days < 0;\n };\n this.isAfterDay = (value, comparing) => {\n const diff = value.diff(comparing.endOf(\"day\"), \"days\").toObject();\n return diff.days > 0;\n };\n this.isBeforeMonth = (value, comparing) => {\n const diff = value.diff(comparing.startOf(\"month\"), \"months\").toObject();\n return diff.months < 0;\n };\n this.isAfterMonth = (value, comparing) => {\n const diff = value.diff(comparing.startOf(\"month\"), \"months\").toObject();\n return diff.months > 0;\n };\n this.isBeforeYear = (value, comparing) => {\n const diff = value.diff(comparing.startOf(\"year\"), \"years\").toObject();\n return diff.years < 0;\n };\n this.isAfterYear = (value, comparing) => {\n const diff = value.diff(comparing.endOf(\"year\"), \"years\").toObject();\n return diff.years > 0;\n };\n this.getDiff = (value, comparing, unit) => {\n if (typeof comparing === \"string\") {\n comparing = DateTime.fromJSDate(new Date(comparing));\n }\n if (!comparing.isValid) {\n return 0;\n }\n if (unit) {\n return Math.floor(value.diff(comparing).as(unit));\n }\n return value.diff(comparing).as(\"millisecond\");\n };\n this.startOfDay = (value) => {\n return value.startOf(\"day\");\n };\n this.endOfDay = (value) => {\n return value.endOf(\"day\");\n };\n this.format = (date, formatKey) => {\n return this.formatByString(date, this.formats[formatKey]);\n };\n this.formatByString = (date, format) => {\n return date.setLocale(this.locale).toFormat(format);\n };\n this.formatNumber = (numberToFormat) => {\n return numberToFormat;\n };\n this.getHours = (value) => {\n return value.get(\"hour\");\n };\n this.setHours = (value, count) => {\n return value.set({ hour: count });\n };\n this.getMinutes = (value) => {\n return value.get(\"minute\");\n };\n this.setMinutes = (value, count) => {\n return value.set({ minute: count });\n };\n this.getSeconds = (value) => {\n return value.get(\"second\");\n };\n this.setSeconds = (value, count) => {\n return value.set({ second: count });\n };\n this.getMonth = (value) => {\n // See https://github.com/moment/luxon/blob/master/docs/moment.md#major-functional-differences\n return value.get(\"month\") - 1;\n };\n this.getDaysInMonth = (value) => {\n return value.daysInMonth;\n };\n this.setMonth = (value, count) => {\n return value.set({ month: count + 1 });\n };\n this.getYear = (value) => {\n return value.get(\"year\");\n };\n this.setYear = (value, year) => {\n return value.set({ year });\n };\n this.getDate = (value) => {\n return value.get(\"day\");\n };\n this.setDate = (value, day) => {\n return value.set({ day });\n };\n this.mergeDateAndTime = (date, time) => {\n return date.set({\n second: time.second,\n hour: time.hour,\n minute: time.minute,\n });\n };\n this.startOfYear = (value) => {\n return value.startOf(\"year\");\n };\n this.endOfYear = (value) => {\n return value.endOf(\"year\");\n };\n this.startOfMonth = (value) => {\n return value.startOf(\"month\");\n };\n this.endOfMonth = (value) => {\n return value.endOf(\"month\");\n };\n this.startOfWeek = (value) => {\n return value.startOf(\"week\");\n };\n this.endOfWeek = (value) => {\n return value.endOf(\"week\");\n };\n this.getNextMonth = (value) => {\n return value.plus({ months: 1 });\n };\n this.getPreviousMonth = (value) => {\n return value.minus({ months: 1 });\n };\n this.getMonthArray = (date) => {\n const firstMonth = date.startOf(\"year\");\n const monthArray = [firstMonth];\n while (monthArray.length < 12) {\n const prevMonth = monthArray[monthArray.length - 1];\n monthArray.push(this.getNextMonth(prevMonth));\n }\n return monthArray;\n };\n this.getWeekdays = () => {\n return Info.weekdaysFormat(\"short\", { locale: this.locale });\n };\n this.getWeekArray = (date) => {\n const { days } = date\n .endOf(\"month\")\n .endOf(\"week\")\n .diff(date.startOf(\"month\").startOf(\"week\"), \"days\")\n .toObject();\n const weeks = [];\n new Array(Math.round(days))\n .fill(0)\n .map((_, i) => i)\n .map((day) => date.startOf(\"month\").startOf(\"week\").plus({ days: day }))\n .forEach((v, i) => {\n if (i === 0 || (i % 7 === 0 && i > 6)) {\n weeks.push([v]);\n return;\n }\n weeks[weeks.length - 1].push(v);\n });\n return weeks;\n };\n this.getYearRange = (start, end) => {\n const startDate = start.startOf(\"year\");\n const endDate = end.endOf(\"year\");\n let current = startDate;\n const years = [];\n while (current < endDate) {\n years.push(current);\n current = current.plus({ year: 1 });\n }\n return years;\n };\n this.getMeridiemText = (ampm) => {\n return Info.meridiems({ locale: this.locale }).find((v) => v.toLowerCase() === ampm.toLowerCase());\n };\n this.isNull = (date) => {\n return date === null;\n };\n this.isWithinRange = (date, [start, end]) => {\n return (date.equals(start) ||\n date.equals(end) ||\n (this.isAfter(date, start) && this.isBefore(date, end)));\n };\n this.locale = locale || \"en-US\";\n this.formats = Object.assign({}, defaultFormats, formats);\n }\n}\n\nexport { LuxonUtils as default };\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)([/*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}, \"0\"), /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\"\n}, \"1\")], 'Schedule');\nexports.default = _default;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getInputAdornmentUtilityClass(slot) {\n return generateUtilityClass('MuiInputAdornment', slot);\n}\nconst inputAdornmentClasses = generateUtilityClasses('MuiInputAdornment', ['root', 'filled', 'standard', 'outlined', 'positionStart', 'positionEnd', 'disablePointerEvents', 'hiddenLabel', 'sizeSmall']);\nexport default inputAdornmentClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _span;\nconst _excluded = [\"children\", \"className\", \"component\", \"disablePointerEvents\", \"disableTypography\", \"position\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport capitalize from '../utils/capitalize';\nimport Typography from '../Typography';\nimport FormControlContext from '../FormControl/FormControlContext';\nimport useFormControl from '../FormControl/useFormControl';\nimport styled from '../styles/styled';\nimport inputAdornmentClasses, { getInputAdornmentUtilityClass } from './inputAdornmentClasses';\nimport useThemeProps from '../styles/useThemeProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst overridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`position${capitalize(ownerState.position)}`], ownerState.disablePointerEvents === true && styles.disablePointerEvents, styles[ownerState.variant]];\n};\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disablePointerEvents,\n hiddenLabel,\n position,\n size,\n variant\n } = ownerState;\n const slots = {\n root: ['root', disablePointerEvents && 'disablePointerEvents', position && `position${capitalize(position)}`, variant, hiddenLabel && 'hiddenLabel', size && `size${capitalize(size)}`]\n };\n return composeClasses(slots, getInputAdornmentUtilityClass, classes);\n};\nconst InputAdornmentRoot = styled('div', {\n name: 'MuiInputAdornment',\n slot: 'Root',\n overridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'flex',\n height: '0.01em',\n // Fix IE11 flexbox alignment. To remove at some point.\n maxHeight: '2em',\n alignItems: 'center',\n whiteSpace: 'nowrap',\n color: (theme.vars || theme).palette.action.active\n}, ownerState.variant === 'filled' && {\n // Styles applied to the root element if `variant=\"filled\"`.\n [`&.${inputAdornmentClasses.positionStart}&:not(.${inputAdornmentClasses.hiddenLabel})`]: {\n marginTop: 16\n }\n}, ownerState.position === 'start' && {\n // Styles applied to the root element if `position=\"start\"`.\n marginRight: 8\n}, ownerState.position === 'end' && {\n // Styles applied to the root element if `position=\"end\"`.\n marginLeft: 8\n}, ownerState.disablePointerEvents === true && {\n // Styles applied to the root element if `disablePointerEvents={true}`.\n pointerEvents: 'none'\n}));\nconst InputAdornment = /*#__PURE__*/React.forwardRef(function InputAdornment(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiInputAdornment'\n });\n const {\n children,\n className,\n component = 'div',\n disablePointerEvents = false,\n disableTypography = false,\n position,\n variant: variantProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl() || {};\n let variant = variantProp;\n if (variantProp && muiFormControl.variant) {\n if (process.env.NODE_ENV !== 'production') {\n if (variantProp === muiFormControl.variant) {\n console.error('MUI: The `InputAdornment` variant infers the variant prop ' + 'you do not have to provide one.');\n }\n }\n }\n if (muiFormControl && !variant) {\n variant = muiFormControl.variant;\n }\n const ownerState = _extends({}, props, {\n hiddenLabel: muiFormControl.hiddenLabel,\n size: muiFormControl.size,\n disablePointerEvents,\n position,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(FormControlContext.Provider, {\n value: null,\n children: /*#__PURE__*/_jsx(InputAdornmentRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: typeof children === 'string' && !disableTypography ? /*#__PURE__*/_jsx(Typography, {\n color: \"text.secondary\",\n children: children\n }) : /*#__PURE__*/_jsxs(React.Fragment, {\n children: [position === 'start' ? /* notranslate needed while Google Translate will not fix zero-width space issue */_span || (_span = /*#__PURE__*/_jsx(\"span\", {\n className: \"notranslate\",\n children: \"\\u200B\"\n })) : null, children]\n })\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? InputAdornment.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component, normally an `IconButton` or string.\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 * Disable pointer events on the root.\n * This allows for the content of the adornment to focus the `input` on click.\n * @default false\n */\n disablePointerEvents: PropTypes.bool,\n /**\n * If children is a string then disable wrapping in a Typography component.\n * @default false\n */\n disableTypography: PropTypes.bool,\n /**\n * The position this adornment should appear relative to the `Input`.\n */\n position: PropTypes.oneOf(['end', 'start']).isRequired,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n * Note: If you are using the `TextField` component or the `FormControl` component\n * you do not have to set this manually.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default InputAdornment;","'use client';\n\nimport * 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\n/**\n * @deprecated Not used internally. Use `MediaQueryList` from lib.dom.d.ts instead.\n */\n\n/**\n * @deprecated Not used internally. Use `(event: MediaQueryListEvent) => void` instead.\n */\n\nfunction useMediaQueryOld(query, defaultMatches, matchMedia, ssrMatchMedia, noSsr) {\n const [match, setMatch] = React.useState(() => {\n if (noSsr && matchMedia) {\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 (!matchMedia) {\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]);\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, noSsr) {\n const getDefaultSnapshot = React.useCallback(() => defaultMatches, [defaultMatches]);\n const getServerSnapshot = React.useMemo(() => {\n if (noSsr && matchMedia) {\n return () => matchMedia(query).matches;\n }\n if (ssrMatchMedia !== null) {\n const {\n matches\n } = ssrMatchMedia(query);\n return () => matches;\n }\n return getDefaultSnapshot;\n }, [getDefaultSnapshot, query, ssrMatchMedia, noSsr, matchMedia]);\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 = false\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}","import * as React from 'react';\nimport { MuiPickersAdapterContext } from '../../LocalizationProvider/LocalizationProvider';\nexport const useLocalizationContext = () => {\n const localization = React.useContext(MuiPickersAdapterContext);\n\n if (localization === null) {\n throw new Error('MUI: Can not find utils in context. It looks like you forgot to wrap your component in LocalizationProvider, or pass dateAdapter prop directly.');\n }\n\n return localization;\n};\nexport const useUtils = () => useLocalizationContext().utils;\nexport const useDefaultDates = () => useLocalizationContext().defaultDates;\nexport const useLocaleText = () => useLocalizationContext().localeText;\nexport const useNow = () => {\n const utils = useUtils();\n const now = React.useRef(utils.date());\n return now.current;\n};","export const findClosestEnabledDate = ({\n date,\n disableFuture,\n disablePast,\n maxDate,\n minDate,\n isDateDisabled,\n utils\n}) => {\n const today = utils.startOfDay(utils.date());\n\n if (disablePast && utils.isBefore(minDate, today)) {\n minDate = today;\n }\n\n if (disableFuture && utils.isAfter(maxDate, today)) {\n maxDate = today;\n }\n\n let forward = date;\n let backward = date;\n\n if (utils.isBefore(date, minDate)) {\n forward = utils.date(minDate);\n backward = null;\n }\n\n if (utils.isAfter(date, maxDate)) {\n if (backward) {\n backward = utils.date(maxDate);\n }\n\n forward = null;\n }\n\n while (forward || backward) {\n if (forward && utils.isAfter(forward, maxDate)) {\n forward = null;\n }\n\n if (backward && utils.isBefore(backward, minDate)) {\n backward = null;\n }\n\n if (forward) {\n if (!isDateDisabled(forward)) {\n return forward;\n }\n\n forward = utils.addDays(forward, 1);\n }\n\n if (backward) {\n if (!isDateDisabled(backward)) {\n return backward;\n }\n\n backward = utils.addDays(backward, -1);\n }\n }\n\n return null;\n};\nexport const parsePickerInputValue = (utils, value) => {\n const parsedValue = utils.date(value);\n return utils.isValid(parsedValue) ? parsedValue : null;\n};\nexport const parseNonNullablePickerDate = (utils, value, defaultValue) => {\n if (value == null) {\n return defaultValue;\n }\n\n const parsedValue = utils.date(value);\n const isDateValid = utils.isValid(parsedValue);\n\n if (isDateValid) {\n return parsedValue;\n }\n\n return defaultValue;\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { useThemeProps } from '@mui/material/styles';\nimport { useDefaultDates, useUtils } from '../internals/hooks/useUtils';\nimport { parsePickerInputValue, parseNonNullablePickerDate } from '../internals/utils/date-utils';\nexport function useDateTimePickerDefaultizedProps(props, name) {\n var _themeProps$ampm, _themeProps$minDateTi, _themeProps$maxDateTi, _themeProps$minDateTi2, _themeProps$maxDateTi2;\n\n // This is technically unsound if the type parameters appear in optional props.\n // Optional props can be filled by `useThemeProps` with types that don't match the type parameters.\n const themeProps = useThemeProps({\n props,\n name\n });\n const utils = useUtils();\n const defaultDates = useDefaultDates();\n const ampm = (_themeProps$ampm = themeProps.ampm) != null ? _themeProps$ampm : utils.is12HourCycleInCurrentLocale();\n\n if (themeProps.orientation != null && themeProps.orientation !== 'portrait') {\n throw new Error('We are not supporting custom orientation for DateTimePicker yet :(');\n }\n\n return _extends({\n ampm,\n orientation: 'portrait',\n openTo: 'day',\n views: ['year', 'day', 'hours', 'minutes'],\n ampmInClock: true,\n acceptRegex: ampm ? /[\\dap]/gi : /\\d/gi,\n disableMaskedInput: false,\n inputFormat: ampm ? utils.formats.keyboardDateTime12h : utils.formats.keyboardDateTime24h,\n disableIgnoringDatePartForTimeValidation: Boolean(themeProps.minDateTime || themeProps.maxDateTime),\n disablePast: false,\n disableFuture: false\n }, themeProps, {\n minDate: parseNonNullablePickerDate(utils, (_themeProps$minDateTi = themeProps.minDateTime) != null ? _themeProps$minDateTi : themeProps.minDate, defaultDates.minDate),\n maxDate: parseNonNullablePickerDate(utils, (_themeProps$maxDateTi = themeProps.maxDateTime) != null ? _themeProps$maxDateTi : themeProps.maxDate, defaultDates.maxDate),\n minTime: (_themeProps$minDateTi2 = themeProps.minDateTime) != null ? _themeProps$minDateTi2 : themeProps.minTime,\n maxTime: (_themeProps$maxDateTi2 = themeProps.maxDateTime) != null ? _themeProps$maxDateTi2 : themeProps.maxTime\n });\n}\nexport const dateTimePickerValueManager = {\n emptyValue: null,\n getTodayValue: utils => utils.date(),\n parseInput: parsePickerInputValue,\n areValuesEqual: (utils, a, b) => utils.isEqual(a, b)\n};\nexport const resolveViewTypeFromView = view => {\n switch (view) {\n case 'year':\n case 'month':\n case 'day':\n return 'calendar';\n\n default:\n return 'clock';\n }\n};","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t {\n const {\n classes,\n selected\n } = ownerState;\n const slots = {\n root: ['root', selected && 'selected']\n };\n return composeClasses(slots, getPickersToolbarTextUtilityClass, classes);\n};\n\nconst PickersToolbarTextRoot = styled(Typography, {\n name: 'PrivatePickersToolbarText',\n slot: 'Root',\n overridesResolver: (_, styles) => [styles.root, {\n [`&.${pickersToolbarTextClasses.selected}`]: styles.selected\n }]\n})(({\n theme\n}) => ({\n transition: theme.transitions.create('color'),\n color: theme.palette.text.secondary,\n [`&.${pickersToolbarTextClasses.selected}`]: {\n color: theme.palette.text.primary\n }\n}));\nexport const PickersToolbarText = /*#__PURE__*/React.forwardRef(function PickersToolbarText(props, ref) {\n // TODO v6: add 'useThemeProps' once the component class names are aligned\n const {\n className,\n value\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const classes = useUtilityClasses(props);\n return /*#__PURE__*/_jsx(PickersToolbarTextRoot, _extends({\n ref: ref,\n className: clsx(className, classes.root),\n component: \"span\"\n }, other, {\n children: value\n }));\n});","import { createSvgIcon } from '@mui/material/utils';\nimport * as React from 'react';\n/**\n * @ignore - internal component.\n */\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const ArrowDropDown = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M7 10l5 5 5-5z\"\n}), 'ArrowDropDown');\n/**\n * @ignore - internal component.\n */\n\nexport const ArrowLeft = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z\"\n}), 'ArrowLeft');\n/**\n * @ignore - internal component.\n */\n\nexport const ArrowRight = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\"\n}), 'ArrowRight');\n/**\n * @ignore - internal component.\n */\n\nexport const Calendar = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M17 12h-5v5h5v-5zM16 1v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z\"\n}), 'Calendar');\n/**\n * @ignore - internal component.\n */\n\nexport const Clock = createSvgIcon( /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(\"path\", {\n d: \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n }), /*#__PURE__*/_jsx(\"path\", {\n d: \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\"\n })]\n}), 'Clock');\n/**\n * @ignore - internal component.\n */\n\nexport const DateRange = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M9 11H7v2h2v-2zm4 0h-2v2h2v-2zm4 0h-2v2h2v-2zm2-7h-1V2h-2v2H8V2H6v2H5c-1.11 0-1.99.9-1.99 2L3 20c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V9h14v11z\"\n}), 'DateRange');\n/**\n * @ignore - internal component.\n */\n\nexport const Pen = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 00-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\"\n}), 'Pen');\n/**\n * @ignore - internal component.\n */\n\nexport const Time = createSvgIcon( /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(\"path\", {\n d: \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n }), /*#__PURE__*/_jsx(\"path\", {\n d: \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\"\n })]\n}), 'Time');","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getPickersToolbarUtilityClass(slot) {\n return generateUtilityClass('MuiPickersToolbar', slot);\n}\nexport const pickersToolbarClasses = generateUtilityClasses('MuiPickersToolbar', ['root', 'content', 'penIconButton', 'penIconButtonLandscape']);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { Pen, Calendar, Clock } from './icons';\nimport { useLocaleText } from '../hooks/useUtils';\nimport { getPickersToolbarUtilityClass, pickersToolbarClasses } from './pickersToolbarClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n isLandscape\n } = ownerState;\n const slots = {\n root: ['root'],\n content: ['content'],\n penIconButton: ['penIconButton', isLandscape && 'penIconButtonLandscape']\n };\n return composeClasses(slots, getPickersToolbarUtilityClass, classes);\n};\n\nconst PickersToolbarRoot = styled('div', {\n name: 'MuiPickersToolbar',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n padding: theme.spacing(2, 3)\n}, ownerState.isLandscape && {\n height: 'auto',\n maxWidth: 160,\n padding: 16,\n justifyContent: 'flex-start',\n flexWrap: 'wrap'\n}));\nconst PickersToolbarContent = styled(Grid, {\n name: 'MuiPickersToolbar',\n slot: 'Content',\n overridesResolver: (props, styles) => styles.content\n})(({\n ownerState\n}) => _extends({\n flex: 1\n}, !ownerState.isLandscape && {\n alignItems: 'center'\n}));\nconst PickersToolbarPenIconButton = styled(IconButton, {\n name: 'MuiPickersToolbar',\n slot: 'PenIconButton',\n overridesResolver: (props, styles) => [{\n [`&.${pickersToolbarClasses.penIconButtonLandscape}`]: styles.penIconButtonLandscape\n }, styles.penIconButton]\n})({});\n\nconst getViewTypeIcon = viewType => viewType === 'clock' ? /*#__PURE__*/_jsx(Clock, {\n color: \"inherit\"\n}) : /*#__PURE__*/_jsx(Calendar, {\n color: \"inherit\"\n});\n\nexport const PickersToolbar = /*#__PURE__*/React.forwardRef(function PickersToolbar(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPickersToolbar'\n });\n const {\n children,\n className,\n getMobileKeyboardInputViewButtonText,\n isLandscape,\n isMobileKeyboardViewOpen,\n landscapeDirection = 'column',\n toggleMobileKeyboardView,\n toolbarTitle,\n viewType = 'calendar'\n } = props;\n const ownerState = props;\n const localeText = useLocaleText();\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(PickersToolbarRoot, {\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsx(Typography, {\n color: \"text.secondary\",\n variant: \"overline\",\n children: toolbarTitle\n }), /*#__PURE__*/_jsxs(PickersToolbarContent, {\n container: true,\n justifyContent: \"space-between\",\n className: classes.content,\n ownerState: ownerState,\n direction: isLandscape ? landscapeDirection : 'row',\n alignItems: isLandscape ? 'flex-start' : 'flex-end',\n children: [children, /*#__PURE__*/_jsx(PickersToolbarPenIconButton, {\n onClick: toggleMobileKeyboardView,\n className: classes.penIconButton,\n ownerState: ownerState,\n color: \"inherit\",\n \"aria-label\": getMobileKeyboardInputViewButtonText ? getMobileKeyboardInputViewButtonText(isMobileKeyboardViewOpen, viewType) : localeText.inputModeToggleButtonAriaLabel(isMobileKeyboardViewOpen, viewType),\n children: isMobileKeyboardViewOpen ? getViewTypeIcon(viewType) : /*#__PURE__*/_jsx(Pen, {\n color: \"inherit\"\n })\n })]\n })]\n });\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"align\", \"className\", \"selected\", \"typographyClassName\", \"value\", \"variant\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport Button from '@mui/material/Button';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { PickersToolbarText } from './PickersToolbarText';\nimport { getPickersToolbarUtilityClass } from './pickersToolbarClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getPickersToolbarUtilityClass, classes);\n};\n\nconst PickersToolbarButtonRoot = styled(Button, {\n name: 'MuiPickersToolbarButton',\n slot: 'Root',\n overridesResolver: (_, styles) => styles.root\n})({\n padding: 0,\n minWidth: 16,\n textTransform: 'none'\n});\nexport const PickersToolbarButton = /*#__PURE__*/React.forwardRef(function PickersToolbarButton(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPickersToolbarButton'\n });\n\n const {\n align,\n className,\n selected,\n typographyClassName,\n value,\n variant\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const classes = useUtilityClasses(props);\n return /*#__PURE__*/_jsx(PickersToolbarButtonRoot, _extends({\n variant: \"text\",\n ref: ref,\n className: clsx(className, classes.root)\n }, other, {\n children: /*#__PURE__*/_jsx(PickersToolbarText, {\n align: align,\n className: typographyClassName,\n variant: variant,\n value: value,\n selected: selected\n })\n }));\n});","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getDateTimePickerToolbarUtilityClass(slot) {\n return generateUtilityClass('MuiDateTimePickerToolbar', slot);\n}\nexport const dateTimePickerToolbarClasses = generateUtilityClasses('MuiDateTimePickerToolbar', ['root', 'dateContainer', 'timeContainer', 'separator']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"ampm\", \"parsedValue\", \"isMobileKeyboardViewOpen\", \"onChange\", \"openView\", \"setOpenView\", \"toggleMobileKeyboardView\", \"toolbarFormat\", \"toolbarPlaceholder\", \"toolbarTitle\", \"views\"];\nimport * as React from 'react';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { PickersToolbarText } from '../internals/components/PickersToolbarText';\nimport { PickersToolbar } from '../internals/components/PickersToolbar';\nimport { pickersToolbarClasses } from '../internals/components/pickersToolbarClasses';\nimport { PickersToolbarButton } from '../internals/components/PickersToolbarButton';\nimport { useLocaleText, useUtils } from '../internals/hooks/useUtils';\nimport { getDateTimePickerToolbarUtilityClass } from './dateTimePickerToolbarClasses';\nimport { resolveViewTypeFromView } from './shared';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n dateContainer: ['dateContainer'],\n timeContainer: ['timeContainer'],\n separator: ['separator']\n };\n return composeClasses(slots, getDateTimePickerToolbarUtilityClass, classes);\n};\n\nconst DateTimePickerToolbarRoot = styled(PickersToolbar, {\n name: 'MuiDateTimePickerToolbar',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(({\n theme\n}) => ({\n paddingLeft: 16,\n paddingRight: 16,\n justifyContent: 'space-around',\n position: 'relative',\n [`& .${pickersToolbarClasses.penIconButton}`]: _extends({\n position: 'absolute',\n top: 8\n }, theme.direction === 'rtl' ? {\n left: 8\n } : {\n right: 8\n })\n}));\nconst DateTimePickerToolbarDateContainer = styled('div', {\n name: 'MuiDateTimePickerToolbar',\n slot: 'DateContainer',\n overridesResolver: (props, styles) => styles.dateContainer\n})({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start'\n});\nconst DateTimePickerToolbarTimeContainer = styled('div', {\n name: 'MuiDateTimePickerToolbar',\n slot: 'TimeContainer',\n overridesResolver: (props, styles) => styles.timeContainer\n})({\n display: 'flex'\n});\nconst DateTimePickerToolbarSeparator = styled(PickersToolbarText, {\n name: 'MuiDateTimePickerToolbar',\n slot: 'Separator',\n overridesResolver: (props, styles) => styles.separator\n})({\n margin: '0 4px 0 2px',\n cursor: 'default'\n});\n/**\n * @ignore - internal component.\n */\n\nexport function DateTimePickerToolbar(inProps) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDateTimePickerToolbar'\n });\n\n const {\n ampm,\n parsedValue,\n isMobileKeyboardViewOpen,\n openView,\n setOpenView,\n toggleMobileKeyboardView,\n toolbarFormat,\n toolbarPlaceholder = '––',\n toolbarTitle: toolbarTitleProp,\n views\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = props;\n const utils = useUtils();\n const localeText = useLocaleText();\n const classes = useUtilityClasses(ownerState);\n const toolbarTitle = toolbarTitleProp != null ? toolbarTitleProp : localeText.dateTimePickerDefaultToolbarTitle;\n\n const formatHours = time => ampm ? utils.format(time, 'hours12h') : utils.format(time, 'hours24h');\n\n const dateText = React.useMemo(() => {\n if (!parsedValue) {\n return toolbarPlaceholder;\n }\n\n if (toolbarFormat) {\n return utils.formatByString(parsedValue, toolbarFormat);\n }\n\n return utils.format(parsedValue, 'shortDate');\n }, [parsedValue, toolbarFormat, toolbarPlaceholder, utils]);\n return /*#__PURE__*/_jsxs(DateTimePickerToolbarRoot, _extends({\n toolbarTitle: toolbarTitle,\n isMobileKeyboardViewOpen: isMobileKeyboardViewOpen,\n toggleMobileKeyboardView: toggleMobileKeyboardView,\n className: classes.root,\n viewType: resolveViewTypeFromView(openView)\n }, other, {\n isLandscape: false,\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsxs(DateTimePickerToolbarDateContainer, {\n className: classes.dateContainer,\n ownerState: ownerState,\n children: [views.includes('year') && /*#__PURE__*/_jsx(PickersToolbarButton, {\n tabIndex: -1,\n variant: \"subtitle1\",\n onClick: () => setOpenView('year'),\n selected: openView === 'year',\n value: parsedValue ? utils.format(parsedValue, 'year') : '–'\n }), views.includes('day') && /*#__PURE__*/_jsx(PickersToolbarButton, {\n tabIndex: -1,\n variant: \"h4\",\n onClick: () => setOpenView('day'),\n selected: openView === 'day',\n value: dateText\n })]\n }), /*#__PURE__*/_jsxs(DateTimePickerToolbarTimeContainer, {\n className: classes.timeContainer,\n ownerState: ownerState,\n children: [views.includes('hours') && /*#__PURE__*/_jsx(PickersToolbarButton, {\n variant: \"h3\",\n onClick: () => setOpenView('hours'),\n selected: openView === 'hours',\n value: parsedValue ? formatHours(parsedValue) : '--'\n }), views.includes('minutes') && /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(DateTimePickerToolbarSeparator, {\n variant: \"h3\",\n value: \":\",\n className: classes.separator,\n ownerState: ownerState\n }), /*#__PURE__*/_jsx(PickersToolbarButton, {\n variant: \"h3\",\n onClick: () => setOpenView('minutes'),\n selected: openView === 'minutes',\n value: parsedValue ? utils.format(parsedValue, 'minutes') : '--'\n })]\n }), views.includes('seconds') && /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(DateTimePickerToolbarSeparator, {\n variant: \"h3\",\n value: \":\",\n className: classes.separator,\n ownerState: ownerState\n }), /*#__PURE__*/_jsx(PickersToolbarButton, {\n variant: \"h3\",\n onClick: () => setOpenView('seconds'),\n selected: openView === 'seconds',\n value: parsedValue ? utils.format(parsedValue, 'seconds') : '--'\n })]\n })]\n })]\n }));\n}","import * as React from 'react';\n\n/**\n * TODO consider getting rid from wrapper variant\n * @ignore - internal component.\n */\nexport const WrapperVariantContext = /*#__PURE__*/React.createContext(null);","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getDialogActionsUtilityClass(slot) {\n return generateUtilityClass('MuiDialogActions', slot);\n}\nconst dialogActionsClasses = generateUtilityClasses('MuiDialogActions', ['root', 'spacing']);\nexport default dialogActionsClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"disableSpacing\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getDialogActionsUtilityClass } from './dialogActionsClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disableSpacing\n } = ownerState;\n const slots = {\n root: ['root', !disableSpacing && 'spacing']\n };\n return composeClasses(slots, getDialogActionsUtilityClass, classes);\n};\nconst DialogActionsRoot = styled('div', {\n name: 'MuiDialogActions',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, !ownerState.disableSpacing && styles.spacing];\n }\n})(({\n ownerState\n}) => _extends({\n display: 'flex',\n alignItems: 'center',\n padding: 8,\n justifyContent: 'flex-end',\n flex: '0 0 auto'\n}, !ownerState.disableSpacing && {\n '& > :not(:first-of-type)': {\n marginLeft: 8\n }\n}));\nconst DialogActions = /*#__PURE__*/React.forwardRef(function DialogActions(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDialogActions'\n });\n const {\n className,\n disableSpacing = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n disableSpacing\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(DialogActionsRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogActions.propTypes /* 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 * If `true`, the actions do not have additional margin.\n * @default false\n */\n disableSpacing: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default DialogActions;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onAccept\", \"onClear\", \"onCancel\", \"onSetToday\", \"actions\"];\nimport * as React from 'react';\nimport Button from '@mui/material/Button';\nimport DialogActions from '@mui/material/DialogActions';\nimport { useLocaleText } from '../internals/hooks/useUtils';\nimport { WrapperVariantContext } from '../internals/components/wrappers/WrapperVariantContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const PickersActionBar = props => {\n const {\n onAccept,\n onClear,\n onCancel,\n onSetToday,\n actions\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const wrapperVariant = React.useContext(WrapperVariantContext);\n const localeText = useLocaleText();\n const actionsArray = typeof actions === 'function' ? actions(wrapperVariant) : actions;\n\n if (actionsArray == null || actionsArray.length === 0) {\n return null;\n }\n\n const buttons = actionsArray == null ? void 0 : actionsArray.map(actionType => {\n switch (actionType) {\n case 'clear':\n return /*#__PURE__*/_jsx(Button, {\n onClick: onClear,\n children: localeText.clearButtonLabel\n }, actionType);\n\n case 'cancel':\n return /*#__PURE__*/_jsx(Button, {\n onClick: onCancel,\n children: localeText.cancelButtonLabel\n }, actionType);\n\n case 'accept':\n return /*#__PURE__*/_jsx(Button, {\n onClick: onAccept,\n children: localeText.okButtonLabel\n }, actionType);\n\n case 'today':\n return /*#__PURE__*/_jsx(Button, {\n onClick: onSetToday,\n children: localeText.todayButtonLabel\n }, actionType);\n\n default:\n return null;\n }\n });\n return /*#__PURE__*/_jsx(DialogActions, _extends({}, other, {\n children: buttons\n }));\n};","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getPickersPopperUtilityClass(slot) {\n return generateUtilityClass('MuiPickersPopper', slot);\n}\nexport const pickersPopperClasses = generateUtilityClasses('MuiPickersPopper', ['root', 'paper']);","/* Use it instead of .includes method for IE support */\nexport function arrayIncludes(array, itemOrItems) {\n if (Array.isArray(itemOrItems)) {\n return itemOrItems.every(item => array.indexOf(item) !== -1);\n }\n\n return array.indexOf(itemOrItems) !== -1;\n}\nexport const onSpaceOrEnter = (innerFn, onFocus) => event => {\n if (event.key === 'Enter' || event.key === ' ') {\n innerFn(event); // prevent any side effects\n\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (onFocus) {\n onFocus(event);\n }\n};\nexport const executeInTheNextEventLoopTick = fn => {\n setTimeout(fn, 0);\n};\nexport const doNothing = () => {}; // https://www.abeautifulsite.net/posts/finding-the-active-element-in-a-shadow-root/\n\nexport const getActiveElement = (root = document) => {\n const activeEl = root.activeElement;\n\n if (!activeEl) {\n return null;\n }\n\n if (activeEl.shadowRoot) {\n return getActiveElement(activeEl.shadowRoot);\n }\n\n return activeEl;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"onClick\", \"onTouchStart\"];\nimport * as React from 'react';\nimport Grow from '@mui/material/Grow';\nimport Paper from '@mui/material/Paper';\nimport Popper from '@mui/material/Popper';\nimport TrapFocus from '@mui/material/Unstable_TrapFocus';\nimport { useForkRef, useEventCallback, ownerDocument } from '@mui/material/utils';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { PickersActionBar } from '../../PickersActionBar';\nimport { getPickersPopperUtilityClass } from './pickersPopperClasses';\nimport { getActiveElement } from '../utils/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n paper: ['paper']\n };\n return composeClasses(slots, getPickersPopperUtilityClass, classes);\n};\n\nconst PickersPopperRoot = styled(Popper, {\n name: 'MuiPickersPopper',\n slot: 'Root',\n overridesResolver: (_, styles) => styles.root\n})(({\n theme\n}) => ({\n zIndex: theme.zIndex.modal\n}));\nconst PickersPopperPaper = styled(Paper, {\n name: 'MuiPickersPopper',\n slot: 'Paper',\n overridesResolver: (_, styles) => styles.paper\n})(({\n ownerState\n}) => _extends({\n transformOrigin: 'top center',\n outline: 0\n}, ownerState.placement === 'top' && {\n transformOrigin: 'bottom center'\n}));\n\nfunction clickedRootScrollbar(event, doc) {\n return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;\n}\n\n/**\n * Based on @mui/material/ClickAwayListener without the customization.\n * We can probably strip away even more since children won't be portaled.\n * @param {boolean} active Only listen to clicks when the popper is opened.\n * @param {(event: MouseEvent | TouchEvent) => void} onClickAway The callback to call when clicking outside the popper.\n * @returns {Array} The ref and event handler to listen to the outside clicks.\n */\nfunction useClickAwayListener(active, onClickAway) {\n const movedRef = React.useRef(false);\n const syntheticEventRef = React.useRef(false);\n const nodeRef = React.useRef(null);\n const activatedRef = React.useRef(false);\n React.useEffect(() => {\n if (!active) {\n return undefined;\n } // Ensure that this hook is not \"activated\" synchronously.\n // https://github.com/facebook/react/issues/20074\n\n\n function armClickAwayListener() {\n activatedRef.current = true;\n }\n\n document.addEventListener('mousedown', armClickAwayListener, true);\n document.addEventListener('touchstart', armClickAwayListener, true);\n return () => {\n document.removeEventListener('mousedown', armClickAwayListener, true);\n document.removeEventListener('touchstart', armClickAwayListener, true);\n activatedRef.current = false;\n };\n }, [active]); // The handler doesn't take event.defaultPrevented into account:\n //\n // event.preventDefault() is meant to stop default behaviors like\n // clicking a checkbox to check it, hitting a button to submit a form,\n // and hitting left arrow to move the cursor in a text input etc.\n // Only special HTML elements have these default behaviors.\n\n const handleClickAway = useEventCallback(event => {\n if (!activatedRef.current) {\n return;\n } // Given developers can stop the propagation of the synthetic event,\n // we can only be confident with a positive value.\n\n\n const insideReactTree = syntheticEventRef.current;\n syntheticEventRef.current = false;\n const doc = ownerDocument(nodeRef.current); // 1. IE11 support, which trigger the handleClickAway even after the unbind\n // 2. The child might render null.\n // 3. Behave like a blur listener.\n\n if (!nodeRef.current || // is a TouchEvent?\n 'clientX' in event && clickedRootScrollbar(event, doc)) {\n return;\n } // Do not act if user performed touchmove\n\n\n if (movedRef.current) {\n movedRef.current = false;\n return;\n }\n\n let insideDOM; // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n\n if (event.composedPath) {\n insideDOM = event.composedPath().indexOf(nodeRef.current) > -1;\n } else {\n insideDOM = !doc.documentElement.contains(event.target) || nodeRef.current.contains(event.target);\n }\n\n if (!insideDOM && !insideReactTree) {\n onClickAway(event);\n }\n }); // Keep track of mouse/touch events that bubbled up through the portal.\n\n const handleSynthetic = () => {\n syntheticEventRef.current = true;\n };\n\n React.useEffect(() => {\n if (active) {\n const doc = ownerDocument(nodeRef.current);\n\n const handleTouchMove = () => {\n movedRef.current = true;\n };\n\n doc.addEventListener('touchstart', handleClickAway);\n doc.addEventListener('touchmove', handleTouchMove);\n return () => {\n doc.removeEventListener('touchstart', handleClickAway);\n doc.removeEventListener('touchmove', handleTouchMove);\n };\n }\n\n return undefined;\n }, [active, handleClickAway]);\n React.useEffect(() => {\n // TODO This behavior is not tested automatically\n // It's unclear whether this is due to different update semantics in test (batched in act() vs discrete on click).\n // Or if this is a timing related issues due to different Transition components\n // Once we get rid of all the manual scheduling (e.g. setTimeout(update, 0)) we can revisit this code+test.\n if (active) {\n const doc = ownerDocument(nodeRef.current);\n doc.addEventListener('click', handleClickAway);\n return () => {\n doc.removeEventListener('click', handleClickAway); // cleanup `handleClickAway`\n\n syntheticEventRef.current = false;\n };\n }\n\n return undefined;\n }, [active, handleClickAway]);\n return [nodeRef, handleSynthetic, handleSynthetic];\n}\n\nexport function PickersPopper(inProps) {\n var _components$ActionBar;\n\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPickersPopper'\n });\n const {\n anchorEl,\n children,\n containerRef = null,\n onBlur,\n onClose,\n onClear,\n onAccept,\n onCancel,\n onSetToday,\n open,\n PopperProps,\n role,\n TransitionComponent = Grow,\n TrapFocusProps,\n PaperProps = {},\n components,\n componentsProps\n } = props;\n React.useEffect(() => {\n function handleKeyDown(nativeEvent) {\n // IE11, Edge (prior to using Bink?) use 'Esc'\n if (open && (nativeEvent.key === 'Escape' || nativeEvent.key === 'Esc')) {\n onClose();\n }\n }\n\n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [onClose, open]);\n const lastFocusedElementRef = React.useRef(null);\n React.useEffect(() => {\n if (role === 'tooltip') {\n return;\n }\n\n if (open) {\n lastFocusedElementRef.current = getActiveElement(document);\n } else if (lastFocusedElementRef.current && lastFocusedElementRef.current instanceof HTMLElement) {\n // make sure the button is flushed with updated label, before returning focus to it\n // avoids issue, where screen reader could fail to announce selected date after selection\n setTimeout(() => {\n if (lastFocusedElementRef.current instanceof HTMLElement) {\n lastFocusedElementRef.current.focus();\n }\n });\n }\n }, [open, role]);\n const [clickAwayRef, onPaperClick, onPaperTouchStart] = useClickAwayListener(open, onBlur != null ? onBlur : onClose);\n const paperRef = React.useRef(null);\n const handleRef = useForkRef(paperRef, containerRef);\n const handlePaperRef = useForkRef(handleRef, clickAwayRef);\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n\n const {\n onClick: onPaperClickProp,\n onTouchStart: onPaperTouchStartProp\n } = PaperProps,\n otherPaperProps = _objectWithoutPropertiesLoose(PaperProps, _excluded);\n\n const handleKeyDown = event => {\n if (event.key === 'Escape') {\n // stop the propagation to avoid closing parent modal\n event.stopPropagation();\n onClose();\n }\n };\n\n const ActionBar = (_components$ActionBar = components == null ? void 0 : components.ActionBar) != null ? _components$ActionBar : PickersActionBar;\n const PaperContent = (components == null ? void 0 : components.PaperContent) || React.Fragment;\n return /*#__PURE__*/_jsx(PickersPopperRoot, _extends({\n transition: true,\n role: role,\n open: open,\n anchorEl: anchorEl,\n onKeyDown: handleKeyDown,\n className: classes.root\n }, PopperProps, {\n children: ({\n TransitionProps,\n placement\n }) => /*#__PURE__*/_jsx(TrapFocus, _extends({\n open: open,\n disableAutoFocus: true // pickers are managing focus position manually\n // without this prop the focus is returned to the button before `aria-label` is updated\n // which would force screen readers to read too old label\n ,\n disableRestoreFocus: true,\n disableEnforceFocus: role === 'tooltip',\n isEnabled: () => true\n }, TrapFocusProps, {\n children: /*#__PURE__*/_jsx(TransitionComponent, _extends({}, TransitionProps, {\n children: /*#__PURE__*/_jsx(PickersPopperPaper, _extends({\n tabIndex: -1,\n elevation: 8,\n ref: handlePaperRef,\n onClick: event => {\n onPaperClick(event);\n\n if (onPaperClickProp) {\n onPaperClickProp(event);\n }\n },\n onTouchStart: event => {\n onPaperTouchStart(event);\n\n if (onPaperTouchStartProp) {\n onPaperTouchStartProp(event);\n }\n },\n ownerState: _extends({}, ownerState, {\n placement\n }),\n className: classes.paper\n }, otherPaperProps, {\n children: /*#__PURE__*/_jsxs(PaperContent, _extends({}, componentsProps == null ? void 0 : componentsProps.paperContent, {\n children: [children, /*#__PURE__*/_jsx(ActionBar, _extends({\n onAccept: onAccept,\n onClear: onClear,\n onCancel: onCancel,\n onSetToday: onSetToday,\n actions: []\n }, componentsProps == null ? void 0 : componentsProps.actionBar))]\n }))\n }))\n }))\n }))\n }));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useForkRef } from '@mui/material/utils';\nimport { WrapperVariantContext } from './WrapperVariantContext';\nimport { PickersPopper } from '../PickersPopper';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function DesktopWrapper(props) {\n const {\n children,\n DateInputProps,\n KeyboardDateInputComponent,\n onClear,\n onDismiss,\n onCancel,\n onAccept,\n onSetToday,\n open,\n PopperProps,\n PaperProps,\n TransitionComponent,\n components,\n componentsProps\n } = props;\n const ownInputRef = React.useRef(null);\n const inputRef = useForkRef(DateInputProps.inputRef, ownInputRef);\n return /*#__PURE__*/_jsxs(WrapperVariantContext.Provider, {\n value: \"desktop\",\n children: [/*#__PURE__*/_jsx(KeyboardDateInputComponent, _extends({}, DateInputProps, {\n inputRef: inputRef\n })), /*#__PURE__*/_jsx(PickersPopper, {\n role: \"dialog\",\n open: open,\n anchorEl: ownInputRef.current,\n TransitionComponent: TransitionComponent,\n PopperProps: PopperProps,\n PaperProps: PaperProps,\n onClose: onDismiss,\n onCancel: onCancel,\n onClear: onClear,\n onAccept: onAccept,\n onSetToday: onSetToday,\n components: components,\n componentsProps: componentsProps,\n children: children\n })]\n });\n}","import * as React from 'react';\nimport { useControlled } from '@mui/material/utils';\nimport { arrayIncludes } from '../utils/utils';\nexport function useViews({\n onChange,\n onViewChange,\n openTo,\n view,\n views\n}) {\n var _views, _views2;\n\n const [openView, setOpenView] = useControlled({\n name: 'Picker',\n state: 'view',\n controlled: view,\n default: openTo && arrayIncludes(views, openTo) ? openTo : views[0]\n });\n const previousView = (_views = views[views.indexOf(openView) - 1]) != null ? _views : null;\n const nextView = (_views2 = views[views.indexOf(openView) + 1]) != null ? _views2 : null;\n const changeView = React.useCallback(newView => {\n setOpenView(newView);\n\n if (onViewChange) {\n onViewChange(newView);\n }\n }, [setOpenView, onViewChange]);\n const openNext = React.useCallback(() => {\n if (nextView) {\n changeView(nextView);\n }\n }, [nextView, changeView]);\n const handleChangeAndOpenNext = React.useCallback((date, currentViewSelectionState) => {\n const isSelectionFinishedOnCurrentView = currentViewSelectionState === 'finish';\n const globalSelectionState = isSelectionFinishedOnCurrentView && Boolean(nextView) ? 'partial' : currentViewSelectionState;\n onChange(date, globalSelectionState);\n\n if (isSelectionFinishedOnCurrentView) {\n openNext();\n }\n }, [nextView, onChange, openNext]);\n return {\n handleChangeAndOpenNext,\n nextView,\n previousView,\n openNext,\n openView,\n setOpenView: changeView\n };\n}","export const CLOCK_WIDTH = 220;\nexport const CLOCK_HOUR_WIDTH = 36;\nconst clockCenter = {\n x: CLOCK_WIDTH / 2,\n y: CLOCK_WIDTH / 2\n};\nconst baseClockPoint = {\n x: clockCenter.x,\n y: 0\n};\nconst cx = baseClockPoint.x - clockCenter.x;\nconst cy = baseClockPoint.y - clockCenter.y;\n\nconst rad2deg = rad => rad * (180 / Math.PI);\n\nconst getAngleValue = (step, offsetX, offsetY) => {\n const x = offsetX - clockCenter.x;\n const y = offsetY - clockCenter.y;\n const atan = Math.atan2(cx, cy) - Math.atan2(x, y);\n let deg = rad2deg(atan);\n deg = Math.round(deg / step) * step;\n deg %= 360;\n const value = Math.floor(deg / step) || 0;\n const delta = x ** 2 + y ** 2;\n const distance = Math.sqrt(delta);\n return {\n value,\n distance\n };\n};\n\nexport const getMinutes = (offsetX, offsetY, step = 1) => {\n const angleStep = step * 6;\n let {\n value\n } = getAngleValue(angleStep, offsetX, offsetY);\n value = value * step % 60;\n return value;\n};\nexport const getHours = (offsetX, offsetY, ampm) => {\n const {\n value,\n distance\n } = getAngleValue(30, offsetX, offsetY);\n let hour = value || 12;\n\n if (!ampm) {\n if (distance < CLOCK_WIDTH / 2 - CLOCK_HOUR_WIDTH) {\n hour += 12;\n hour %= 24;\n }\n } else {\n hour %= 12;\n }\n\n return hour;\n};","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getClockPointerUtilityClass(slot) {\n return generateUtilityClass('MuiClockPointer', slot);\n}\nexport const clockPointerClasses = generateUtilityClasses('MuiClockPointer', ['root', 'thumb']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"hasSelected\", \"isInner\", \"type\", \"value\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { CLOCK_WIDTH, CLOCK_HOUR_WIDTH } from './shared';\nimport { getClockPointerUtilityClass } from './clockPointerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n thumb: ['thumb']\n };\n return composeClasses(slots, getClockPointerUtilityClass, classes);\n};\n\nconst ClockPointerRoot = styled('div', {\n name: 'MuiClockPointer',\n slot: 'Root',\n overridesResolver: (_, styles) => styles.root\n})(({\n theme,\n ownerState\n}) => _extends({\n width: 2,\n backgroundColor: theme.palette.primary.main,\n position: 'absolute',\n left: 'calc(50% - 1px)',\n bottom: '50%',\n transformOrigin: 'center bottom 0px'\n}, ownerState.shouldAnimate && {\n transition: theme.transitions.create(['transform', 'height'])\n}));\nconst ClockPointerThumb = styled('div', {\n name: 'MuiClockPointer',\n slot: 'Thumb',\n overridesResolver: (_, styles) => styles.thumb\n})(({\n theme,\n ownerState\n}) => _extends({\n width: 4,\n height: 4,\n backgroundColor: theme.palette.primary.contrastText,\n borderRadius: '50%',\n position: 'absolute',\n top: -21,\n left: `calc(50% - ${CLOCK_HOUR_WIDTH / 2}px)`,\n border: `${(CLOCK_HOUR_WIDTH - 4) / 2}px solid ${theme.palette.primary.main}`,\n boxSizing: 'content-box'\n}, ownerState.hasSelected && {\n backgroundColor: theme.palette.primary.main\n}));\n/**\n * @ignore - internal component.\n */\n\nexport function ClockPointer(inProps) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiClockPointer'\n });\n\n const {\n className,\n isInner,\n type,\n value\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const previousType = React.useRef(type);\n React.useEffect(() => {\n previousType.current = type;\n }, [type]);\n\n const ownerState = _extends({}, props, {\n shouldAnimate: previousType.current !== type\n });\n\n const classes = useUtilityClasses(ownerState);\n\n const getAngleStyle = () => {\n const max = type === 'hours' ? 12 : 60;\n let angle = 360 / max * value;\n\n if (type === 'hours' && value > 12) {\n angle -= 360; // round up angle to max 360 degrees\n }\n\n return {\n height: Math.round((isInner ? 0.26 : 0.4) * CLOCK_WIDTH),\n transform: `rotateZ(${angle}deg)`\n };\n };\n\n return /*#__PURE__*/_jsx(ClockPointerRoot, _extends({\n style: getAngleStyle(),\n className: clsx(className, classes.root),\n ownerState: ownerState\n }, other, {\n children: /*#__PURE__*/_jsx(ClockPointerThumb, {\n ownerState: ownerState,\n className: classes.thumb\n })\n }));\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getClockUtilityClass(slot) {\n return generateUtilityClass('MuiClock', slot);\n}\nexport const clockClasses = generateUtilityClasses('MuiClock', ['root', 'clock', 'wrapper', 'squareMask', 'pin', 'amButton', 'pmButton']);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport IconButton from '@mui/material/IconButton';\nimport Typography from '@mui/material/Typography';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_useEnhancedEffect as useEnhancedEffect, unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { ClockPointer } from './ClockPointer';\nimport { useUtils } from '../internals/hooks/useUtils';\nimport { WrapperVariantContext } from '../internals/components/wrappers/WrapperVariantContext';\nimport { getHours, getMinutes } from './shared';\nimport { getClockUtilityClass } from './clockClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n clock: ['clock'],\n wrapper: ['wrapper'],\n squareMask: ['squareMask'],\n pin: ['pin'],\n amButton: ['amButton'],\n pmButton: ['pmButton']\n };\n return composeClasses(slots, getClockUtilityClass, classes);\n};\n\nconst ClockRoot = styled('div', {\n name: 'MuiClock',\n slot: 'Root',\n overridesResolver: (_, styles) => styles.root\n})(({\n theme\n}) => ({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n margin: theme.spacing(2)\n}));\nconst ClockClock = styled('div', {\n name: 'MuiClock',\n slot: 'Clock',\n overridesResolver: (_, styles) => styles.clock\n})({\n backgroundColor: 'rgba(0,0,0,.07)',\n borderRadius: '50%',\n height: 220,\n width: 220,\n flexShrink: 0,\n position: 'relative',\n pointerEvents: 'none'\n});\nconst ClockWrapper = styled('div', {\n name: 'MuiClock',\n slot: 'Wrapper',\n overridesResolver: (_, styles) => styles.wrapper\n})({\n '&:focus': {\n outline: 'none'\n }\n});\nconst ClockSquareMask = styled('div', {\n name: 'MuiClock',\n slot: 'SquareMask',\n overridesResolver: (_, styles) => styles.squareMask\n})(({\n ownerState\n}) => _extends({\n width: '100%',\n height: '100%',\n position: 'absolute',\n pointerEvents: 'auto',\n outline: 0,\n // Disable scroll capabilities.\n touchAction: 'none',\n userSelect: 'none'\n}, ownerState.disabled ? {} : {\n '@media (pointer: fine)': {\n cursor: 'pointer',\n borderRadius: '50%'\n },\n '&:active': {\n cursor: 'move'\n }\n}));\nconst ClockPin = styled('div', {\n name: 'MuiClock',\n slot: 'Pin',\n overridesResolver: (_, styles) => styles.pin\n})(({\n theme\n}) => ({\n width: 6,\n height: 6,\n borderRadius: '50%',\n backgroundColor: theme.palette.primary.main,\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)'\n}));\nconst ClockAmButton = styled(IconButton, {\n name: 'MuiClock',\n slot: 'AmButton',\n overridesResolver: (_, styles) => styles.amButton\n})(({\n theme,\n ownerState\n}) => _extends({\n zIndex: 1,\n position: 'absolute',\n bottom: ownerState.ampmInClock ? 64 : 8,\n left: 8\n}, ownerState.meridiemMode === 'am' && {\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.primary.contrastText,\n '&:hover': {\n backgroundColor: theme.palette.primary.light\n }\n}));\nconst ClockPmButton = styled(IconButton, {\n name: 'MuiClock',\n slot: 'PmButton',\n overridesResolver: (_, styles) => styles.pmButton\n})(({\n theme,\n ownerState\n}) => _extends({\n zIndex: 1,\n position: 'absolute',\n bottom: ownerState.ampmInClock ? 64 : 8,\n right: 8\n}, ownerState.meridiemMode === 'pm' && {\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.primary.contrastText,\n '&:hover': {\n backgroundColor: theme.palette.primary.light\n }\n}));\n/**\n * @ignore - internal component.\n */\n\nexport function Clock(inProps) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiClock'\n });\n const {\n ampm,\n ampmInClock,\n autoFocus,\n children,\n date,\n getClockLabelText,\n handleMeridiemChange,\n isTimeDisabled,\n meridiemMode,\n minutesStep = 1,\n onChange,\n selectedId,\n type,\n value,\n disabled,\n readOnly,\n className\n } = props;\n const ownerState = props;\n const utils = useUtils();\n const wrapperVariant = React.useContext(WrapperVariantContext);\n const isMoving = React.useRef(false);\n const classes = useUtilityClasses(ownerState);\n const isSelectedTimeDisabled = isTimeDisabled(value, type);\n const isPointerInner = !ampm && type === 'hours' && (value < 1 || value > 12);\n\n const handleValueChange = (newValue, isFinish) => {\n if (disabled || readOnly) {\n return;\n }\n\n if (isTimeDisabled(newValue, type)) {\n return;\n }\n\n onChange(newValue, isFinish);\n };\n\n const setTime = (event, isFinish) => {\n let {\n offsetX,\n offsetY\n } = event;\n\n if (offsetX === undefined) {\n const rect = event.target.getBoundingClientRect();\n offsetX = event.changedTouches[0].clientX - rect.left;\n offsetY = event.changedTouches[0].clientY - rect.top;\n }\n\n const newSelectedValue = type === 'seconds' || type === 'minutes' ? getMinutes(offsetX, offsetY, minutesStep) : getHours(offsetX, offsetY, Boolean(ampm));\n handleValueChange(newSelectedValue, isFinish);\n };\n\n const handleTouchMove = event => {\n isMoving.current = true;\n setTime(event, 'shallow');\n };\n\n const handleTouchEnd = event => {\n if (isMoving.current) {\n setTime(event, 'finish');\n isMoving.current = false;\n }\n };\n\n const handleMouseMove = event => {\n // event.buttons & PRIMARY_MOUSE_BUTTON\n if (event.buttons > 0) {\n setTime(event.nativeEvent, 'shallow');\n }\n };\n\n const handleMouseUp = event => {\n if (isMoving.current) {\n isMoving.current = false;\n }\n\n setTime(event.nativeEvent, 'finish');\n };\n\n const hasSelected = React.useMemo(() => {\n if (type === 'hours') {\n return true;\n }\n\n return value % 5 === 0;\n }, [type, value]);\n const keyboardControlStep = type === 'minutes' ? minutesStep : 1;\n const listboxRef = React.useRef(null); // Since this is rendered when a Popper is opened we can't use passive effects.\n // Focusing in passive effects in Popper causes scroll jump.\n\n useEnhancedEffect(() => {\n if (autoFocus) {\n // The ref not being resolved would be a bug in MUI.\n listboxRef.current.focus();\n }\n }, [autoFocus]);\n\n const handleKeyDown = event => {\n // TODO: Why this early exit?\n if (isMoving.current) {\n return;\n }\n\n switch (event.key) {\n case 'Home':\n // annulate both hours and minutes\n handleValueChange(0, 'partial');\n event.preventDefault();\n break;\n\n case 'End':\n handleValueChange(type === 'minutes' ? 59 : 23, 'partial');\n event.preventDefault();\n break;\n\n case 'ArrowUp':\n handleValueChange(value + keyboardControlStep, 'partial');\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n handleValueChange(value - keyboardControlStep, 'partial');\n event.preventDefault();\n break;\n\n default: // do nothing\n\n }\n };\n\n return /*#__PURE__*/_jsxs(ClockRoot, {\n className: clsx(className, classes.root),\n children: [/*#__PURE__*/_jsxs(ClockClock, {\n className: classes.clock,\n children: [/*#__PURE__*/_jsx(ClockSquareMask, {\n onTouchMove: handleTouchMove,\n onTouchEnd: handleTouchEnd,\n onMouseUp: handleMouseUp,\n onMouseMove: handleMouseMove,\n ownerState: {\n disabled\n },\n className: classes.squareMask\n }), !isSelectedTimeDisabled && /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(ClockPin, {\n className: classes.pin\n }), date && /*#__PURE__*/_jsx(ClockPointer, {\n type: type,\n value: value,\n isInner: isPointerInner,\n hasSelected: hasSelected\n })]\n }), /*#__PURE__*/_jsx(ClockWrapper, {\n \"aria-activedescendant\": selectedId,\n \"aria-label\": getClockLabelText(type, date, utils),\n ref: listboxRef,\n role: \"listbox\",\n onKeyDown: handleKeyDown,\n tabIndex: 0,\n className: classes.wrapper,\n children: children\n })]\n }), ampm && (wrapperVariant === 'desktop' || ampmInClock) && /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(ClockAmButton, {\n onClick: readOnly ? undefined : () => handleMeridiemChange('am'),\n disabled: disabled || meridiemMode === null,\n ownerState: ownerState,\n className: classes.amButton,\n children: /*#__PURE__*/_jsx(Typography, {\n variant: \"caption\",\n children: \"AM\"\n })\n }), /*#__PURE__*/_jsx(ClockPmButton, {\n disabled: disabled || meridiemMode === null,\n onClick: readOnly ? undefined : () => handleMeridiemChange('pm'),\n ownerState: ownerState,\n className: classes.pmButton,\n children: /*#__PURE__*/_jsx(Typography, {\n variant: \"caption\",\n children: \"PM\"\n })\n })]\n })]\n });\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getClockNumberUtilityClass(slot) {\n return generateUtilityClass('MuiClockNumber', slot);\n}\nexport const clockNumberClasses = generateUtilityClasses('MuiClockNumber', ['root', 'selected', 'disabled']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"disabled\", \"index\", \"inner\", \"label\", \"selected\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { CLOCK_WIDTH, CLOCK_HOUR_WIDTH } from './shared';\nimport { getClockNumberUtilityClass, clockNumberClasses } from './clockNumberClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n selected,\n disabled\n } = ownerState;\n const slots = {\n root: ['root', selected && 'selected', disabled && 'disabled']\n };\n return composeClasses(slots, getClockNumberUtilityClass, classes);\n};\n\nconst ClockNumberRoot = styled('span', {\n name: 'MuiClockNumber',\n slot: 'Root',\n overridesResolver: (_, styles) => [styles.root, {\n [`&.${clockNumberClasses.disabled}`]: styles.disabled\n }, {\n [`&.${clockNumberClasses.selected}`]: styles.selected\n }]\n})(({\n theme,\n ownerState\n}) => _extends({\n height: CLOCK_HOUR_WIDTH,\n width: CLOCK_HOUR_WIDTH,\n position: 'absolute',\n left: `calc((100% - ${CLOCK_HOUR_WIDTH}px) / 2)`,\n display: 'inline-flex',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '50%',\n color: theme.palette.text.primary,\n fontFamily: theme.typography.fontFamily,\n '&:focused': {\n backgroundColor: theme.palette.background.paper\n },\n [`&.${clockNumberClasses.selected}`]: {\n color: theme.palette.primary.contrastText\n },\n [`&.${clockNumberClasses.disabled}`]: {\n pointerEvents: 'none',\n color: theme.palette.text.disabled\n }\n}, ownerState.inner && _extends({}, theme.typography.body2, {\n color: theme.palette.text.secondary\n})));\n/**\n * @ignore - internal component.\n */\n\nexport function ClockNumber(inProps) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiClockNumber'\n });\n\n const {\n className,\n disabled,\n index,\n inner,\n label,\n selected\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n const angle = index % 12 / 12 * Math.PI * 2 - Math.PI / 2;\n const length = (CLOCK_WIDTH - CLOCK_HOUR_WIDTH - 2) / 2 * (inner ? 0.65 : 1);\n const x = Math.round(Math.cos(angle) * length);\n const y = Math.round(Math.sin(angle) * length);\n return /*#__PURE__*/_jsx(ClockNumberRoot, _extends({\n className: clsx(className, classes.root),\n \"aria-disabled\": disabled ? true : undefined,\n \"aria-selected\": selected ? true : undefined,\n role: \"option\",\n style: {\n transform: `translate(${x}px, ${y + (CLOCK_WIDTH - CLOCK_HOUR_WIDTH) / 2}px`\n },\n ownerState: ownerState\n }, other, {\n children: label\n }));\n}","import * as React from 'react';\nimport { ClockNumber } from './ClockNumber';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n * @ignore - internal component.\n */\nexport const getHourNumbers = ({\n ampm,\n date,\n getClockNumberText,\n isDisabled,\n selectedId,\n utils\n}) => {\n const currentHours = date ? utils.getHours(date) : null;\n const hourNumbers = [];\n const startHour = ampm ? 1 : 0;\n const endHour = ampm ? 12 : 23;\n\n const isSelected = hour => {\n if (currentHours === null) {\n return false;\n }\n\n if (ampm) {\n if (hour === 12) {\n return currentHours === 12 || currentHours === 0;\n }\n\n return currentHours === hour || currentHours - 12 === hour;\n }\n\n return currentHours === hour;\n };\n\n for (let hour = startHour; hour <= endHour; hour += 1) {\n let label = hour.toString();\n\n if (hour === 0) {\n label = '00';\n }\n\n const inner = !ampm && (hour === 0 || hour > 12);\n label = utils.formatNumber(label);\n const selected = isSelected(hour);\n hourNumbers.push( /*#__PURE__*/_jsx(ClockNumber, {\n id: selected ? selectedId : undefined,\n index: hour,\n inner: inner,\n selected: selected,\n disabled: isDisabled(hour),\n label: label,\n \"aria-label\": getClockNumberText(label)\n }, hour));\n }\n\n return hourNumbers;\n};\nexport const getMinutesNumbers = ({\n utils,\n value,\n isDisabled,\n getClockNumberText,\n selectedId\n}) => {\n const f = utils.formatNumber;\n return [[5, f('05')], [10, f('10')], [15, f('15')], [20, f('20')], [25, f('25')], [30, f('30')], [35, f('35')], [40, f('40')], [45, f('45')], [50, f('50')], [55, f('55')], [0, f('00')]].map(([numberValue, label], index) => {\n const selected = numberValue === value;\n return /*#__PURE__*/_jsx(ClockNumber, {\n label: label,\n id: selected ? selectedId : undefined,\n index: index + 1,\n inner: false,\n disabled: isDisabled(numberValue),\n selected: selected,\n \"aria-label\": getClockNumberText(label)\n }, numberValue);\n });\n};","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getPickersArrowSwitcherUtilityClass(slot) {\n return generateUtilityClass('MuiPickersArrowSwitcher', slot);\n}\nexport const pickersArrowSwitcherClasses = generateUtilityClasses('MuiPickersArrowSwitcher', ['root', 'spacer', 'button']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"components\", \"componentsProps\", \"isLeftDisabled\", \"isLeftHidden\", \"isRightDisabled\", \"isRightHidden\", \"leftArrowButtonText\", \"onLeftClick\", \"onRightClick\", \"rightArrowButtonText\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport Typography from '@mui/material/Typography';\nimport { useTheme, styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport IconButton from '@mui/material/IconButton';\nimport { ArrowLeft, ArrowRight } from './icons';\nimport { getPickersArrowSwitcherUtilityClass } from './pickersArrowSwitcherClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n spacer: ['spacer'],\n button: ['button']\n };\n return composeClasses(slots, getPickersArrowSwitcherUtilityClass, classes);\n};\n\nconst PickersArrowSwitcherRoot = styled('div', {\n name: 'MuiPickersArrowSwitcher',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'flex'\n});\nconst PickersArrowSwitcherSpacer = styled('div', {\n name: 'MuiPickersArrowSwitcher',\n slot: 'Spacer',\n overridesResolver: (props, styles) => styles.spacer\n})(({\n theme\n}) => ({\n width: theme.spacing(3)\n}));\nconst PickersArrowSwitcherButton = styled(IconButton, {\n name: 'MuiPickersArrowSwitcher',\n slot: 'Button',\n overridesResolver: (props, styles) => styles.button\n})(({\n ownerState\n}) => _extends({}, ownerState.hidden && {\n visibility: 'hidden'\n}));\nexport const PickersArrowSwitcher = /*#__PURE__*/React.forwardRef(function PickersArrowSwitcher(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPickersArrowSwitcher'\n });\n\n const {\n children,\n className,\n components,\n componentsProps,\n isLeftDisabled,\n isLeftHidden,\n isRightDisabled,\n isRightHidden,\n leftArrowButtonText,\n onLeftClick,\n onRightClick,\n rightArrowButtonText\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const theme = useTheme();\n const isRtl = theme.direction === 'rtl';\n const leftArrowButtonProps = (componentsProps == null ? void 0 : componentsProps.leftArrowButton) || {};\n const LeftArrowIcon = (components == null ? void 0 : components.LeftArrowIcon) || ArrowLeft;\n const rightArrowButtonProps = (componentsProps == null ? void 0 : componentsProps.rightArrowButton) || {};\n const RightArrowIcon = (components == null ? void 0 : components.RightArrowIcon) || ArrowRight;\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(PickersArrowSwitcherRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, other, {\n children: [/*#__PURE__*/_jsx(PickersArrowSwitcherButton, _extends({\n as: components == null ? void 0 : components.LeftArrowButton,\n size: \"small\",\n \"aria-label\": leftArrowButtonText,\n title: leftArrowButtonText,\n disabled: isLeftDisabled,\n edge: \"end\",\n onClick: onLeftClick\n }, leftArrowButtonProps, {\n className: clsx(classes.button, leftArrowButtonProps.className),\n ownerState: _extends({}, ownerState, leftArrowButtonProps, {\n hidden: isLeftHidden\n }),\n children: isRtl ? /*#__PURE__*/_jsx(RightArrowIcon, {}) : /*#__PURE__*/_jsx(LeftArrowIcon, {})\n })), children ? /*#__PURE__*/_jsx(Typography, {\n variant: \"subtitle1\",\n component: \"span\",\n children: children\n }) : /*#__PURE__*/_jsx(PickersArrowSwitcherSpacer, {\n className: classes.spacer,\n ownerState: ownerState\n }), /*#__PURE__*/_jsx(PickersArrowSwitcherButton, _extends({\n as: components == null ? void 0 : components.RightArrowButton,\n size: \"small\",\n \"aria-label\": rightArrowButtonText,\n title: rightArrowButtonText,\n edge: \"start\",\n disabled: isRightDisabled,\n onClick: onRightClick\n }, rightArrowButtonProps, {\n className: clsx(classes.button, rightArrowButtonProps.className),\n ownerState: _extends({}, ownerState, rightArrowButtonProps, {\n hidden: isRightHidden\n }),\n children: isRtl ? /*#__PURE__*/_jsx(LeftArrowIcon, {}) : /*#__PURE__*/_jsx(RightArrowIcon, {})\n }))]\n }));\n});","export const getMeridiem = (date, utils) => {\n if (!date) {\n return null;\n }\n\n return utils.getHours(date) >= 12 ? 'pm' : 'am';\n};\nexport const convertValueToMeridiem = (value, meridiem, ampm) => {\n if (ampm) {\n const currentMeridiem = value >= 12 ? 'pm' : 'am';\n\n if (currentMeridiem !== meridiem) {\n return meridiem === 'am' ? value - 12 : value + 12;\n }\n }\n\n return value;\n};\nexport const convertToMeridiem = (time, meridiem, ampm, utils) => {\n const newHoursAmount = convertValueToMeridiem(utils.getHours(time), meridiem, ampm);\n return utils.setHours(time, newHoursAmount);\n};\nexport const getSecondsInDay = (date, utils) => {\n return utils.getHours(date) * 3600 + utils.getMinutes(date) * 60 + utils.getSeconds(date);\n};\nexport const createIsAfterIgnoreDatePart = (disableIgnoringDatePartForTimeValidation = false, utils) => (dateLeft, dateRight) => {\n if (disableIgnoringDatePartForTimeValidation) {\n return utils.isAfter(dateLeft, dateRight);\n }\n\n return getSecondsInDay(dateLeft, utils) > getSecondsInDay(dateRight, utils);\n};","import * as React from 'react';\nimport { useUtils } from './useUtils';\nimport { getMeridiem, convertToMeridiem } from '../utils/time-utils';\nexport function useNextMonthDisabled(month, {\n disableFuture,\n maxDate\n}) {\n const utils = useUtils();\n return React.useMemo(() => {\n const now = utils.date();\n const lastEnabledMonth = utils.startOfMonth(disableFuture && utils.isBefore(now, maxDate) ? now : maxDate);\n return !utils.isAfter(lastEnabledMonth, month);\n }, [disableFuture, maxDate, month, utils]);\n}\nexport function usePreviousMonthDisabled(month, {\n disablePast,\n minDate\n}) {\n const utils = useUtils();\n return React.useMemo(() => {\n const now = utils.date();\n const firstEnabledMonth = utils.startOfMonth(disablePast && utils.isAfter(now, minDate) ? now : minDate);\n return !utils.isBefore(firstEnabledMonth, month);\n }, [disablePast, minDate, month, utils]);\n}\nexport function useMeridiemMode(date, ampm, onChange) {\n const utils = useUtils();\n const meridiemMode = getMeridiem(date, utils);\n const handleMeridiemChange = React.useCallback(mode => {\n const timeWithMeridiem = date == null ? null : convertToMeridiem(date, mode, Boolean(ampm), utils);\n onChange(timeWithMeridiem, 'partial');\n }, [ampm, date, onChange, utils]);\n return {\n meridiemMode,\n handleMeridiemChange\n };\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getClockPickerUtilityClass(slot) {\n return generateUtilityClass('MuiClockPicker', slot);\n}\nexport const clockPickerClasses = generateUtilityClasses('MuiClockPicker', ['root', 'arrowSwitcher']);","import { styled } from '@mui/material/styles';\nimport { DIALOG_WIDTH, VIEW_HEIGHT } from '../../constants/dimensions';\nexport const PickerViewRoot = styled('div')({\n overflowX: 'hidden',\n width: DIALOG_WIDTH,\n maxHeight: VIEW_HEIGHT,\n display: 'flex',\n flexDirection: 'column',\n margin: '0 auto'\n});","export const DAY_SIZE = 36;\nexport const DAY_MARGIN = 2;\nexport const DIALOG_WIDTH = 320;\nexport const VIEW_HEIGHT = 358;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { unstable_useId as useId } from '@mui/material/utils';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { Clock } from './Clock';\nimport { useUtils, useNow, useLocaleText } from '../internals/hooks/useUtils';\nimport { buildDeprecatedPropsWarning } from '../internals/utils/warning';\nimport { getHourNumbers, getMinutesNumbers } from './ClockNumbers';\nimport { PickersArrowSwitcher } from '../internals/components/PickersArrowSwitcher';\nimport { convertValueToMeridiem, createIsAfterIgnoreDatePart } from '../internals/utils/time-utils';\nimport { useViews } from '../internals/hooks/useViews';\nimport { useMeridiemMode } from '../internals/hooks/date-helpers-hooks';\nimport { getClockPickerUtilityClass } from './clockPickerClasses';\nimport { PickerViewRoot } from '../internals/components/PickerViewRoot';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n arrowSwitcher: ['arrowSwitcher']\n };\n return composeClasses(slots, getClockPickerUtilityClass, classes);\n};\n\nconst ClockPickerRoot = styled(PickerViewRoot, {\n name: 'MuiClockPicker',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'flex',\n flexDirection: 'column'\n});\nconst ClockPickerArrowSwitcher = styled(PickersArrowSwitcher, {\n name: 'MuiClockPicker',\n slot: 'ArrowSwitcher',\n overridesResolver: (props, styles) => styles.arrowSwitcher\n})({\n position: 'absolute',\n right: 12,\n top: 15\n});\nconst deprecatedPropsWarning = buildDeprecatedPropsWarning('Props for translation are deprecated. See https://mui.com/x/react-date-pickers/localization for more information.');\n/**\n *\n * API:\n *\n * - [ClockPicker API](https://mui.com/x/api/date-pickers/clock-picker/)\n */\n\nexport const ClockPicker = /*#__PURE__*/React.forwardRef(function ClockPicker(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiClockPicker'\n });\n const {\n ampm = false,\n ampmInClock = false,\n autoFocus,\n components,\n componentsProps,\n date,\n disableIgnoringDatePartForTimeValidation,\n getClockLabelText: getClockLabelTextProp,\n getHoursClockNumberText: getHoursClockNumberTextProp,\n getMinutesClockNumberText: getMinutesClockNumberTextProp,\n getSecondsClockNumberText: getSecondsClockNumberTextProp,\n leftArrowButtonText: leftArrowButtonTextProp,\n maxTime,\n minTime,\n minutesStep = 1,\n rightArrowButtonText: rightArrowButtonTextProp,\n shouldDisableTime,\n showViewSwitcher,\n onChange,\n view,\n views = ['hours', 'minutes'],\n openTo,\n onViewChange,\n className,\n disabled,\n readOnly\n } = props;\n deprecatedPropsWarning({\n leftArrowButtonText: leftArrowButtonTextProp,\n rightArrowButtonText: rightArrowButtonTextProp,\n getClockLabelText: getClockLabelTextProp,\n getHoursClockNumberText: getHoursClockNumberTextProp,\n getMinutesClockNumberText: getMinutesClockNumberTextProp,\n getSecondsClockNumberText: getSecondsClockNumberTextProp\n });\n const localeText = useLocaleText();\n const leftArrowButtonText = leftArrowButtonTextProp != null ? leftArrowButtonTextProp : localeText.openPreviousView;\n const rightArrowButtonText = rightArrowButtonTextProp != null ? rightArrowButtonTextProp : localeText.openNextView;\n const getClockLabelText = getClockLabelTextProp != null ? getClockLabelTextProp : localeText.clockLabelText;\n const getHoursClockNumberText = getHoursClockNumberTextProp != null ? getHoursClockNumberTextProp : localeText.hoursClockNumberText;\n const getMinutesClockNumberText = getMinutesClockNumberTextProp != null ? getMinutesClockNumberTextProp : localeText.minutesClockNumberText;\n const getSecondsClockNumberText = getSecondsClockNumberTextProp != null ? getSecondsClockNumberTextProp : localeText.secondsClockNumberText;\n const {\n openView,\n setOpenView,\n nextView,\n previousView,\n handleChangeAndOpenNext\n } = useViews({\n view,\n views,\n openTo,\n onViewChange,\n onChange\n });\n const now = useNow();\n const utils = useUtils();\n const dateOrMidnight = React.useMemo(() => date || utils.setSeconds(utils.setMinutes(utils.setHours(now, 0), 0), 0), [date, now, utils]);\n const {\n meridiemMode,\n handleMeridiemChange\n } = useMeridiemMode(dateOrMidnight, ampm, handleChangeAndOpenNext);\n const isTimeDisabled = React.useCallback((rawValue, viewType) => {\n const isAfter = createIsAfterIgnoreDatePart(disableIgnoringDatePartForTimeValidation, utils);\n\n const containsValidTime = ({\n start,\n end\n }) => {\n if (minTime && isAfter(minTime, end)) {\n return false;\n }\n\n if (maxTime && isAfter(start, maxTime)) {\n return false;\n }\n\n return true;\n };\n\n const isValidValue = (value, step = 1) => {\n if (value % step !== 0) {\n return false;\n }\n\n if (shouldDisableTime) {\n return !shouldDisableTime(value, viewType);\n }\n\n return true;\n };\n\n switch (viewType) {\n case 'hours':\n {\n const value = convertValueToMeridiem(rawValue, meridiemMode, ampm);\n const dateWithNewHours = utils.setHours(dateOrMidnight, value);\n const start = utils.setSeconds(utils.setMinutes(dateWithNewHours, 0), 0);\n const end = utils.setSeconds(utils.setMinutes(dateWithNewHours, 59), 59);\n return !containsValidTime({\n start,\n end\n }) || !isValidValue(value);\n }\n\n case 'minutes':\n {\n const dateWithNewMinutes = utils.setMinutes(dateOrMidnight, rawValue);\n const start = utils.setSeconds(dateWithNewMinutes, 0);\n const end = utils.setSeconds(dateWithNewMinutes, 59);\n return !containsValidTime({\n start,\n end\n }) || !isValidValue(rawValue, minutesStep);\n }\n\n case 'seconds':\n {\n const dateWithNewSeconds = utils.setSeconds(dateOrMidnight, rawValue);\n const start = dateWithNewSeconds;\n const end = dateWithNewSeconds;\n return !containsValidTime({\n start,\n end\n }) || !isValidValue(rawValue);\n }\n\n default:\n throw new Error('not supported');\n }\n }, [ampm, dateOrMidnight, disableIgnoringDatePartForTimeValidation, maxTime, meridiemMode, minTime, minutesStep, shouldDisableTime, utils]);\n const selectedId = useId();\n const viewProps = React.useMemo(() => {\n switch (openView) {\n case 'hours':\n {\n const handleHoursChange = (value, isFinish) => {\n const valueWithMeridiem = convertValueToMeridiem(value, meridiemMode, ampm);\n handleChangeAndOpenNext(utils.setHours(dateOrMidnight, valueWithMeridiem), isFinish);\n };\n\n return {\n onChange: handleHoursChange,\n value: utils.getHours(dateOrMidnight),\n children: getHourNumbers({\n date,\n utils,\n ampm,\n onChange: handleHoursChange,\n getClockNumberText: getHoursClockNumberText,\n isDisabled: value => disabled || isTimeDisabled(value, 'hours'),\n selectedId\n })\n };\n }\n\n case 'minutes':\n {\n const minutesValue = utils.getMinutes(dateOrMidnight);\n\n const handleMinutesChange = (value, isFinish) => {\n handleChangeAndOpenNext(utils.setMinutes(dateOrMidnight, value), isFinish);\n };\n\n return {\n value: minutesValue,\n onChange: handleMinutesChange,\n children: getMinutesNumbers({\n utils,\n value: minutesValue,\n onChange: handleMinutesChange,\n getClockNumberText: getMinutesClockNumberText,\n isDisabled: value => disabled || isTimeDisabled(value, 'minutes'),\n selectedId\n })\n };\n }\n\n case 'seconds':\n {\n const secondsValue = utils.getSeconds(dateOrMidnight);\n\n const handleSecondsChange = (value, isFinish) => {\n handleChangeAndOpenNext(utils.setSeconds(dateOrMidnight, value), isFinish);\n };\n\n return {\n value: secondsValue,\n onChange: handleSecondsChange,\n children: getMinutesNumbers({\n utils,\n value: secondsValue,\n onChange: handleSecondsChange,\n getClockNumberText: getSecondsClockNumberText,\n isDisabled: value => disabled || isTimeDisabled(value, 'seconds'),\n selectedId\n })\n };\n }\n\n default:\n throw new Error('You must provide the type for ClockView');\n }\n }, [openView, utils, date, ampm, getHoursClockNumberText, getMinutesClockNumberText, getSecondsClockNumberText, meridiemMode, handleChangeAndOpenNext, dateOrMidnight, isTimeDisabled, selectedId, disabled]);\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(ClockPickerRoot, {\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n children: [showViewSwitcher && /*#__PURE__*/_jsx(ClockPickerArrowSwitcher, {\n className: classes.arrowSwitcher,\n leftArrowButtonText: leftArrowButtonText,\n rightArrowButtonText: rightArrowButtonText,\n components: components,\n componentsProps: componentsProps,\n onLeftClick: () => setOpenView(previousView),\n onRightClick: () => setOpenView(nextView),\n isLeftDisabled: !previousView,\n isRightDisabled: !nextView,\n ownerState: ownerState\n }), /*#__PURE__*/_jsx(Clock, _extends({\n autoFocus: autoFocus,\n date: date,\n ampmInClock: ampmInClock,\n type: openView,\n ampm: ampm,\n getClockLabelText: getClockLabelText,\n minutesStep: minutesStep,\n isTimeDisabled: isTimeDisabled,\n meridiemMode: meridiemMode,\n handleMeridiemChange: handleMeridiemChange,\n selectedId: selectedId,\n disabled: disabled,\n readOnly: readOnly\n }, viewProps))]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? ClockPicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * 12h/24h view for hour selection clock.\n * @default false\n */\n ampm: PropTypes.bool,\n\n /**\n * Display ampm controls under the clock (instead of in the toolbar).\n * @default false\n */\n ampmInClock: PropTypes.bool,\n\n /**\n * Set to `true` if focus should be moved to clock picker.\n */\n autoFocus: PropTypes.bool,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n className: PropTypes.string,\n\n /**\n * Overrideable components.\n * @default {}\n */\n components: PropTypes.object,\n\n /**\n * The props used for each component slot.\n * @default {}\n */\n componentsProps: PropTypes.object,\n\n /**\n * Selected date @DateIOType.\n */\n date: PropTypes.any,\n\n /**\n * If `true`, the picker and text field are disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * Do not ignore date part when validating min/max time.\n * @default false\n */\n disableIgnoringDatePartForTimeValidation: PropTypes.bool,\n\n /**\n * Accessible text that helps user to understand which time and view is selected.\n * @template TDate\n * @param {ClockPickerView} view The current view rendered.\n * @param {TDate | null} time The current time.\n * @param {MuiPickersAdapter} adapter The current date adapter.\n * @returns {string} The clock label.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n * @default (\n * view: ClockView,\n * time: TDate | null,\n * adapter: MuiPickersAdapter,\n * ) =>\n * `Select ${view}. ${\n * time === null ? 'No time selected' : `Selected time is ${adapter.format(time, 'fullTime')}`\n * }`\n */\n getClockLabelText: PropTypes.func,\n\n /**\n * Get clock number aria-text for hours.\n * @param {string} hours The hours to format.\n * @returns {string} the formatted hours text.\n * @default (hours: string) => `${hours} hours`\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n */\n getHoursClockNumberText: PropTypes.func,\n\n /**\n * Get clock number aria-text for minutes.\n * @param {string} minutes The minutes to format.\n * @returns {string} the formatted minutes text.\n * @default (minutes: string) => `${minutes} minutes`\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n */\n getMinutesClockNumberText: PropTypes.func,\n\n /**\n * Get clock number aria-text for seconds.\n * @param {string} seconds The seconds to format.\n * @returns {string} the formatted seconds text.\n * @default (seconds: string) => `${seconds} seconds`\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n */\n getSecondsClockNumberText: PropTypes.func,\n\n /**\n * Left arrow icon aria-label text.\n * @default 'open previous view'\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n */\n leftArrowButtonText: PropTypes.string,\n\n /**\n * Max time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n maxTime: PropTypes.any,\n\n /**\n * Min time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n minTime: PropTypes.any,\n\n /**\n * Step over minutes.\n * @default 1\n */\n minutesStep: PropTypes.number,\n\n /**\n * On change callback @DateIOType.\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Callback fired on view change.\n * @param {ClockPickerView} view The new view.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Initially open view.\n * @default 'hours'\n */\n openTo: PropTypes.oneOf(['hours', 'minutes', 'seconds']),\n\n /**\n * Make picker read only.\n * @default false\n */\n readOnly: PropTypes.bool,\n\n /**\n * Right arrow icon aria-label text.\n * @default 'open next view'\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n */\n rightArrowButtonText: PropTypes.string,\n\n /**\n * Dynamically check if time is disabled or not.\n * If returns `false` appropriate time point will ot be acceptable.\n * @param {number} timeValue The value to check.\n * @param {ClockPickerView} clockType The clock type of the timeValue.\n * @returns {boolean} Returns `true` if the time should be disabled\n */\n shouldDisableTime: PropTypes.func,\n showViewSwitcher: PropTypes.bool,\n\n /**\n * Controlled open view.\n */\n view: PropTypes.oneOf(['hours', 'minutes', 'seconds']),\n\n /**\n * Views for calendar picker.\n * @default ['hours', 'minutes']\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['hours', 'minutes', 'seconds']).isRequired)\n} : void 0;","export const buildDeprecatedPropsWarning = message => {\n let alreadyWarned = false;\n\n if (process.env.NODE_ENV === 'production') {\n return () => {};\n }\n\n const cleanMessage = Array.isArray(message) ? message.join('\\n') : message;\n return deprecatedProps => {\n const deprecatedKeys = Object.entries(deprecatedProps).filter(([, value]) => value !== undefined).map(([key]) => `- ${key}`);\n\n if (!alreadyWarned && deprecatedKeys.length > 0) {\n alreadyWarned = true;\n console.warn([cleanMessage, 'deprecated props observed:', ...deprecatedKeys].join('\\n'));\n }\n };\n};","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getPickersMonthUtilityClass(slot) {\n // TODO v6 Rename 'PrivatePickersMonth' to 'MuiPickersMonth' to follow convention\n return generateUtilityClass('PrivatePickersMonth', slot);\n}\nexport const pickersMonthClasses = generateUtilityClasses( // TODO v6 Rename 'PrivatePickersMonth' to 'MuiPickersMonth' to follow convention\n'PrivatePickersMonth', ['root', 'selected']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disabled\", \"onSelect\", \"selected\", \"value\", \"tabIndex\", \"hasFocus\", \"onFocus\", \"onBlur\"];\nimport * as React from 'react';\nimport Typography from '@mui/material/Typography';\nimport { styled, alpha } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/material/utils';\nimport { onSpaceOrEnter } from '../internals/utils/utils';\nimport { getPickersMonthUtilityClass, pickersMonthClasses } from './pickersMonthClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n selected\n } = ownerState;\n const slots = {\n root: ['root', selected && 'selected']\n };\n return composeClasses(slots, getPickersMonthUtilityClass, classes);\n};\n\nconst PickersMonthRoot = styled(Typography, {\n name: 'PrivatePickersMonth',\n slot: 'Root',\n overridesResolver: (_, styles) => [styles.root, {\n [`&.${pickersMonthClasses.selected}`]: styles.selected\n }]\n})(({\n theme\n}) => _extends({\n flex: '1 0 33.33%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: 'unset',\n backgroundColor: 'transparent',\n border: 0,\n outline: 0\n}, theme.typography.subtitle1, {\n margin: '8px 0',\n height: 36,\n borderRadius: 18,\n cursor: 'pointer',\n '&:focus, &:hover': {\n backgroundColor: alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n },\n '&:disabled': {\n pointerEvents: 'none',\n color: theme.palette.text.secondary\n },\n [`&.${pickersMonthClasses.selected}`]: {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.primary.main,\n '&:focus, &:hover': {\n backgroundColor: theme.palette.primary.dark\n }\n }\n}));\n\nconst noop = () => {};\n/**\n * @ignore - do not document.\n */\n\n\nexport const PickersMonth = props => {\n // TODO v6 add 'useThemeProps' once the component class names are aligned\n const {\n disabled,\n onSelect,\n selected,\n value,\n tabIndex,\n hasFocus,\n onFocus = noop,\n onBlur = noop\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const classes = useUtilityClasses(props);\n\n const handleSelection = () => {\n onSelect(value);\n };\n\n const ref = React.useRef(null);\n useEnhancedEffect(() => {\n if (hasFocus) {\n var _ref$current;\n\n (_ref$current = ref.current) == null ? void 0 : _ref$current.focus();\n }\n }, [hasFocus]);\n return /*#__PURE__*/_jsx(PickersMonthRoot, _extends({\n ref: ref,\n component: \"button\",\n type: \"button\",\n className: classes.root,\n tabIndex: tabIndex,\n onClick: handleSelection,\n onKeyDown: onSpaceOrEnter(handleSelection),\n color: selected ? 'primary' : undefined,\n variant: selected ? 'h5' : 'subtitle1',\n disabled: disabled,\n onFocus: event => onFocus(event, value),\n onBlur: event => onBlur(event, value)\n }, other));\n};","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getMonthPickerUtilityClass(slot) {\n return generateUtilityClass('MuiMonthPicker', slot);\n}\nexport const monthPickerClasses = generateUtilityClasses('MuiMonthPicker', ['root']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"date\", \"disabled\", \"disableFuture\", \"disablePast\", \"maxDate\", \"minDate\", \"onChange\", \"shouldDisableMonth\", \"readOnly\", \"disableHighlightToday\", \"autoFocus\", \"onMonthFocus\", \"hasFocus\", \"onFocusedViewChange\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { useTheme } from '@mui/system';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses, useControlled, useEventCallback } from '@mui/material';\nimport { PickersMonth } from './PickersMonth';\nimport { useUtils, useNow, useDefaultDates } from '../internals/hooks/useUtils';\nimport { getMonthPickerUtilityClass } from './monthPickerClasses';\nimport { parseNonNullablePickerDate } from '../internals/utils/date-utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getMonthPickerUtilityClass, classes);\n};\n\nexport function useMonthPickerDefaultizedProps(props, name) {\n const utils = useUtils();\n const defaultDates = useDefaultDates();\n const themeProps = useThemeProps({\n props,\n name\n });\n return _extends({\n disableFuture: false,\n disablePast: false\n }, themeProps, {\n minDate: parseNonNullablePickerDate(utils, themeProps.minDate, defaultDates.minDate),\n maxDate: parseNonNullablePickerDate(utils, themeProps.maxDate, defaultDates.maxDate)\n });\n}\nconst MonthPickerRoot = styled('div', {\n name: 'MuiMonthPicker',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n width: 310,\n display: 'flex',\n flexWrap: 'wrap',\n alignContent: 'stretch',\n margin: '0 4px'\n});\nexport const MonthPicker = /*#__PURE__*/React.forwardRef(function MonthPicker(inProps, ref) {\n const utils = useUtils();\n const now = useNow();\n const props = useMonthPickerDefaultizedProps(inProps, 'MuiMonthPicker');\n\n const {\n className,\n date,\n disabled,\n disableFuture,\n disablePast,\n maxDate,\n minDate,\n onChange,\n shouldDisableMonth,\n readOnly,\n disableHighlightToday,\n autoFocus = false,\n onMonthFocus,\n hasFocus,\n onFocusedViewChange\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n const theme = useTheme();\n const selectedDateOrStartOfMonth = React.useMemo(() => date != null ? date : utils.startOfMonth(now), [now, utils, date]);\n const selectedMonth = React.useMemo(() => {\n if (date != null) {\n return utils.getMonth(date);\n }\n\n if (disableHighlightToday) {\n return null;\n }\n\n return utils.getMonth(now);\n }, [now, date, utils, disableHighlightToday]);\n const [focusedMonth, setFocusedMonth] = React.useState(() => selectedMonth || utils.getMonth(now));\n const isMonthDisabled = React.useCallback(month => {\n const firstEnabledMonth = utils.startOfMonth(disablePast && utils.isAfter(now, minDate) ? now : minDate);\n const lastEnabledMonth = utils.startOfMonth(disableFuture && utils.isBefore(now, maxDate) ? now : maxDate);\n\n if (utils.isBefore(month, firstEnabledMonth)) {\n return true;\n }\n\n if (utils.isAfter(month, lastEnabledMonth)) {\n return true;\n }\n\n if (!shouldDisableMonth) {\n return false;\n }\n\n return shouldDisableMonth(month);\n }, [disableFuture, disablePast, maxDate, minDate, now, shouldDisableMonth, utils]);\n\n const onMonthSelect = month => {\n if (readOnly) {\n return;\n }\n\n const newDate = utils.setMonth(selectedDateOrStartOfMonth, month);\n onChange(newDate, 'finish');\n };\n\n const [internalHasFocus, setInternalHasFocus] = useControlled({\n name: 'MonthPicker',\n state: 'hasFocus',\n controlled: hasFocus,\n default: autoFocus\n });\n const changeHasFocus = React.useCallback(newHasFocus => {\n setInternalHasFocus(newHasFocus);\n\n if (onFocusedViewChange) {\n onFocusedViewChange(newHasFocus);\n }\n }, [setInternalHasFocus, onFocusedViewChange]);\n const focusMonth = React.useCallback(month => {\n if (!isMonthDisabled(utils.setMonth(selectedDateOrStartOfMonth, month))) {\n setFocusedMonth(month);\n changeHasFocus(true);\n\n if (onMonthFocus) {\n onMonthFocus(month);\n }\n }\n }, [isMonthDisabled, utils, selectedDateOrStartOfMonth, changeHasFocus, onMonthFocus]);\n React.useEffect(() => {\n setFocusedMonth(prevFocusedMonth => selectedMonth !== null && prevFocusedMonth !== selectedMonth ? selectedMonth : prevFocusedMonth);\n }, [selectedMonth]);\n const handleKeyDown = useEventCallback(event => {\n const monthsInYear = 12;\n const monthsInRow = 3;\n\n switch (event.key) {\n case 'ArrowUp':\n focusMonth((monthsInYear + focusedMonth - monthsInRow) % monthsInYear);\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n focusMonth((monthsInYear + focusedMonth + monthsInRow) % monthsInYear);\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n focusMonth((monthsInYear + focusedMonth + (theme.direction === 'ltr' ? -1 : 1)) % monthsInYear);\n event.preventDefault();\n break;\n\n case 'ArrowRight':\n focusMonth((monthsInYear + focusedMonth + (theme.direction === 'ltr' ? 1 : -1)) % monthsInYear);\n event.preventDefault();\n break;\n\n default:\n break;\n }\n });\n const handleMonthFocus = React.useCallback((event, month) => {\n focusMonth(month);\n }, [focusMonth]);\n const handleMonthBlur = React.useCallback(() => {\n changeHasFocus(false);\n }, [changeHasFocus]);\n const currentMonthNumber = utils.getMonth(now);\n return /*#__PURE__*/_jsx(MonthPickerRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n onKeyDown: handleKeyDown\n }, other, {\n children: utils.getMonthArray(selectedDateOrStartOfMonth).map(month => {\n const monthNumber = utils.getMonth(month);\n const monthText = utils.format(month, 'monthShort');\n const isDisabled = disabled || isMonthDisabled(month);\n return /*#__PURE__*/_jsx(PickersMonth, {\n value: monthNumber,\n selected: monthNumber === selectedMonth,\n tabIndex: monthNumber === focusedMonth && !isDisabled ? 0 : -1,\n hasFocus: internalHasFocus && monthNumber === focusedMonth,\n onSelect: onMonthSelect,\n onFocus: handleMonthFocus,\n onBlur: handleMonthBlur,\n disabled: isDisabled,\n \"aria-current\": currentMonthNumber === monthNumber ? 'date' : undefined,\n children: monthText\n }, monthText);\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? MonthPicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n autoFocus: PropTypes.bool,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * className applied to the root element.\n */\n className: PropTypes.string,\n\n /**\n * Date value for the MonthPicker\n */\n date: PropTypes.any,\n\n /**\n * If `true` picker is disabled\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true` future days are disabled.\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true`, today's date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * If `true` past days are disabled.\n * @default false\n */\n disablePast: PropTypes.bool,\n hasFocus: PropTypes.bool,\n\n /**\n * Maximal selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Minimal selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n\n /**\n * Callback fired on date change.\n */\n onChange: PropTypes.func.isRequired,\n onFocusedViewChange: PropTypes.func,\n onMonthFocus: PropTypes.func,\n\n /**\n * If `true` picker is readonly\n */\n readOnly: PropTypes.bool,\n\n /**\n * Disable specific months dynamically.\n * Works like `shouldDisableDate` but for month selection view @DateIOType.\n * @template TDate\n * @param {TDate} month The month to check.\n * @returns {boolean} If `true` the month will be disabled.\n */\n shouldDisableMonth: PropTypes.func,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;","import * as React from 'react';\nimport { useValidation } from './useValidation';\nimport { useLocalizationContext } from '../useUtils';\nimport { parseNonNullablePickerDate } from '../../utils/date-utils';\nexport const validateDate = ({\n props,\n value,\n adapter\n}) => {\n const now = adapter.utils.date();\n const date = adapter.utils.date(value);\n const minDate = parseNonNullablePickerDate(adapter.utils, props.minDate, adapter.defaultDates.minDate);\n const maxDate = parseNonNullablePickerDate(adapter.utils, props.maxDate, adapter.defaultDates.maxDate);\n\n if (date === null) {\n return null;\n }\n\n switch (true) {\n case !adapter.utils.isValid(value):\n return 'invalidDate';\n\n case Boolean(props.shouldDisableDate && props.shouldDisableDate(date)):\n return 'shouldDisableDate';\n\n case Boolean(props.disableFuture && adapter.utils.isAfterDay(date, now)):\n return 'disableFuture';\n\n case Boolean(props.disablePast && adapter.utils.isBeforeDay(date, now)):\n return 'disablePast';\n\n case Boolean(minDate && adapter.utils.isBeforeDay(date, minDate)):\n return 'minDate';\n\n case Boolean(maxDate && adapter.utils.isAfterDay(date, maxDate)):\n return 'maxDate';\n\n default:\n return null;\n }\n};\nexport const useIsDayDisabled = ({\n shouldDisableDate,\n minDate,\n maxDate,\n disableFuture,\n disablePast\n}) => {\n const adapter = useLocalizationContext();\n return React.useCallback(day => validateDate({\n adapter,\n value: day,\n props: {\n shouldDisableDate,\n minDate,\n maxDate,\n disableFuture,\n disablePast\n }\n }) !== null, [adapter, shouldDisableDate, minDate, maxDate, disableFuture, disablePast]);\n};\nexport const isSameDateError = (a, b) => a === b;\nexport const useDateValidation = props => useValidation(props, validateDate, isSameDateError);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useIsDayDisabled } from '../internals/hooks/validation/useDateValidation';\nimport { useUtils, useNow } from '../internals/hooks/useUtils';\nexport const createCalendarStateReducer = (reduceAnimations, disableSwitchToMonthOnDayFocus, utils) => (state, action) => {\n switch (action.type) {\n case 'changeMonth':\n return _extends({}, state, {\n slideDirection: action.direction,\n currentMonth: action.newMonth,\n isMonthSwitchingAnimating: !reduceAnimations\n });\n\n case 'finishMonthSwitchingAnimation':\n return _extends({}, state, {\n isMonthSwitchingAnimating: false\n });\n\n case 'changeFocusedDay':\n {\n if (state.focusedDay != null && action.focusedDay != null && utils.isSameDay(action.focusedDay, state.focusedDay)) {\n return state;\n }\n\n const needMonthSwitch = action.focusedDay != null && !disableSwitchToMonthOnDayFocus && !utils.isSameMonth(state.currentMonth, action.focusedDay);\n return _extends({}, state, {\n focusedDay: action.focusedDay,\n isMonthSwitchingAnimating: needMonthSwitch && !reduceAnimations && !action.withoutMonthSwitchingAnimation,\n currentMonth: needMonthSwitch ? utils.startOfMonth(action.focusedDay) : state.currentMonth,\n slideDirection: action.focusedDay != null && utils.isAfterDay(action.focusedDay, state.currentMonth) ? 'left' : 'right'\n });\n }\n\n default:\n throw new Error('missing support');\n }\n};\nexport const useCalendarState = ({\n date,\n defaultCalendarMonth,\n disableFuture,\n disablePast,\n disableSwitchToMonthOnDayFocus = false,\n maxDate,\n minDate,\n onMonthChange,\n reduceAnimations,\n shouldDisableDate\n}) => {\n var _ref;\n\n const now = useNow();\n const utils = useUtils();\n const reducerFn = React.useRef(createCalendarStateReducer(Boolean(reduceAnimations), disableSwitchToMonthOnDayFocus, utils)).current;\n const [calendarState, dispatch] = React.useReducer(reducerFn, {\n isMonthSwitchingAnimating: false,\n focusedDay: date || now,\n currentMonth: utils.startOfMonth((_ref = date != null ? date : defaultCalendarMonth) != null ? _ref : now),\n slideDirection: 'left'\n });\n const handleChangeMonth = React.useCallback(payload => {\n dispatch(_extends({\n type: 'changeMonth'\n }, payload));\n\n if (onMonthChange) {\n onMonthChange(payload.newMonth);\n }\n }, [onMonthChange]);\n const changeMonth = React.useCallback(newDate => {\n const newDateRequested = newDate != null ? newDate : now;\n\n if (utils.isSameMonth(newDateRequested, calendarState.currentMonth)) {\n return;\n }\n\n handleChangeMonth({\n newMonth: utils.startOfMonth(newDateRequested),\n direction: utils.isAfterDay(newDateRequested, calendarState.currentMonth) ? 'left' : 'right'\n });\n }, [calendarState.currentMonth, handleChangeMonth, now, utils]);\n const isDateDisabled = useIsDayDisabled({\n shouldDisableDate,\n minDate,\n maxDate,\n disableFuture,\n disablePast\n });\n const onMonthSwitchingAnimationEnd = React.useCallback(() => {\n dispatch({\n type: 'finishMonthSwitchingAnimation'\n });\n }, []);\n const changeFocusedDay = React.useCallback((newFocusedDate, withoutMonthSwitchingAnimation) => {\n if (!isDateDisabled(newFocusedDate)) {\n dispatch({\n type: 'changeFocusedDay',\n focusedDay: newFocusedDate,\n withoutMonthSwitchingAnimation\n });\n }\n }, [isDateDisabled]);\n return {\n calendarState,\n changeMonth,\n changeFocusedDay,\n isDateDisabled,\n onMonthSwitchingAnimationEnd,\n handleChangeMonth\n };\n};","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport const getPickersFadeTransitionGroupUtilityClass = slot => generateUtilityClass('MuiPickersFadeTransitionGroup', slot);\nexport const pickersFadeTransitionGroupClasses = generateUtilityClasses('MuiPickersFadeTransitionGroup', ['root']);","import * as React from 'react';\nimport clsx from 'clsx';\nimport Fade from '@mui/material/Fade';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { TransitionGroup } from 'react-transition-group';\nimport { getPickersFadeTransitionGroupUtilityClass } from './pickersFadeTransitionGroupClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getPickersFadeTransitionGroupUtilityClass, classes);\n};\n\nconst animationDuration = 500;\nconst PickersFadeTransitionGroupRoot = styled(TransitionGroup, {\n name: 'MuiPickersFadeTransitionGroup',\n slot: 'Root',\n overridesResolver: (_, styles) => styles.root\n})({\n display: 'block',\n position: 'relative'\n});\n/**\n * @ignore - do not document.\n */\n\nexport function PickersFadeTransitionGroup(inProps) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPickersFadeTransitionGroup'\n });\n const {\n children,\n className,\n reduceAnimations,\n transKey\n } = props;\n const classes = useUtilityClasses(props);\n\n if (reduceAnimations) {\n return children;\n }\n\n return /*#__PURE__*/_jsx(PickersFadeTransitionGroupRoot, {\n className: clsx(classes.root, className),\n children: /*#__PURE__*/_jsx(Fade, {\n appear: false,\n mountOnEnter: true,\n unmountOnExit: true,\n timeout: {\n appear: animationDuration,\n enter: animationDuration / 2,\n exit: 0\n },\n children: children\n }, transKey)\n });\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getPickersDayUtilityClass(slot) {\n return generateUtilityClass('MuiPickersDay', slot);\n}\nexport const pickersDayClasses = generateUtilityClasses('MuiPickersDay', ['root', 'dayWithMargin', 'dayOutsideMonth', 'hiddenDaySpacingFiller', 'today', 'selected', 'disabled']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"className\", \"day\", \"disabled\", \"disableHighlightToday\", \"disableMargin\", \"hidden\", \"isAnimating\", \"onClick\", \"onDaySelect\", \"onFocus\", \"onBlur\", \"onKeyDown\", \"onMouseDown\", \"outsideCurrentMonth\", \"selected\", \"showDaysOutsideCurrentMonth\", \"children\", \"today\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport ButtonBase from '@mui/material/ButtonBase';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { alpha, styled, useThemeProps } from '@mui/material/styles';\nimport { useForkRef } from '@mui/material/utils';\nimport { useUtils } from '../internals/hooks/useUtils';\nimport { DAY_SIZE, DAY_MARGIN } from '../internals/constants/dimensions';\nimport { getPickersDayUtilityClass, pickersDayClasses } from './pickersDayClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n selected,\n disableMargin,\n disableHighlightToday,\n today,\n disabled,\n outsideCurrentMonth,\n showDaysOutsideCurrentMonth,\n classes\n } = ownerState;\n const slots = {\n root: ['root', selected && 'selected', disabled && 'disabled', !disableMargin && 'dayWithMargin', !disableHighlightToday && today && 'today', outsideCurrentMonth && showDaysOutsideCurrentMonth && 'dayOutsideMonth', outsideCurrentMonth && !showDaysOutsideCurrentMonth && 'hiddenDaySpacingFiller'],\n hiddenDaySpacingFiller: ['hiddenDaySpacingFiller']\n };\n return composeClasses(slots, getPickersDayUtilityClass, classes);\n};\n\nconst styleArg = ({\n theme,\n ownerState\n}) => _extends({}, theme.typography.caption, {\n width: DAY_SIZE,\n height: DAY_SIZE,\n borderRadius: '50%',\n padding: 0,\n // background required here to prevent collides with the other days when animating with transition group\n backgroundColor: theme.palette.background.paper,\n color: theme.palette.text.primary,\n '&:hover': {\n backgroundColor: alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n },\n '&:focus': {\n backgroundColor: alpha(theme.palette.action.active, theme.palette.action.hoverOpacity),\n [`&.${pickersDayClasses.selected}`]: {\n willChange: 'background-color',\n backgroundColor: theme.palette.primary.dark\n }\n },\n [`&.${pickersDayClasses.selected}`]: {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.primary.main,\n fontWeight: theme.typography.fontWeightMedium,\n transition: theme.transitions.create('background-color', {\n duration: theme.transitions.duration.short\n }),\n '&:hover': {\n willChange: 'background-color',\n backgroundColor: theme.palette.primary.dark\n }\n },\n [`&.${pickersDayClasses.disabled}`]: {\n color: theme.palette.text.disabled\n }\n}, !ownerState.disableMargin && {\n margin: `0 ${DAY_MARGIN}px`\n}, ownerState.outsideCurrentMonth && ownerState.showDaysOutsideCurrentMonth && {\n color: theme.palette.text.secondary\n}, !ownerState.disableHighlightToday && ownerState.today && {\n [`&:not(.${pickersDayClasses.selected})`]: {\n border: `1px solid ${theme.palette.text.secondary}`\n }\n});\n\nconst overridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, !ownerState.disableMargin && styles.dayWithMargin, !ownerState.disableHighlightToday && ownerState.today && styles.today, !ownerState.outsideCurrentMonth && ownerState.showDaysOutsideCurrentMonth && styles.dayOutsideMonth, ownerState.outsideCurrentMonth && !ownerState.showDaysOutsideCurrentMonth && styles.hiddenDaySpacingFiller];\n};\n\nconst PickersDayRoot = styled(ButtonBase, {\n name: 'MuiPickersDay',\n slot: 'Root',\n overridesResolver\n})(styleArg);\nconst PickersDayFiller = styled('div', {\n name: 'MuiPickersDay',\n slot: 'Root',\n overridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({}, styleArg({\n theme,\n ownerState\n}), {\n // visibility: 'hidden' does not work here as it hides the element from screen readers as well\n opacity: 0,\n pointerEvents: 'none'\n}));\n\nconst noop = () => {};\n\nconst PickersDayRaw = /*#__PURE__*/React.forwardRef(function PickersDay(inProps, forwardedRef) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPickersDay'\n });\n\n const {\n autoFocus = false,\n className,\n day,\n disabled = false,\n disableHighlightToday = false,\n disableMargin = false,\n isAnimating,\n onClick,\n onDaySelect,\n onFocus = noop,\n onBlur = noop,\n onKeyDown = noop,\n onMouseDown,\n outsideCurrentMonth,\n selected = false,\n showDaysOutsideCurrentMonth = false,\n children,\n today: isToday = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n autoFocus,\n disabled,\n disableHighlightToday,\n disableMargin,\n selected,\n showDaysOutsideCurrentMonth,\n today: isToday\n });\n\n const classes = useUtilityClasses(ownerState);\n const utils = useUtils();\n const ref = React.useRef(null);\n const handleRef = useForkRef(ref, forwardedRef); // Since this is rendered when a Popper is opened we can't use passive effects.\n // Focusing in passive effects in Popper causes scroll jump.\n\n useEnhancedEffect(() => {\n if (autoFocus && !disabled && !isAnimating && !outsideCurrentMonth) {\n // ref.current being null would be a bug in MUI\n ref.current.focus();\n }\n }, [autoFocus, disabled, isAnimating, outsideCurrentMonth]); // For day outside of current month, move focus from mouseDown to mouseUp\n // Goal: have the onClick ends before sliding to the new month\n\n const handleMouseDown = event => {\n if (onMouseDown) {\n onMouseDown(event);\n }\n\n if (outsideCurrentMonth) {\n event.preventDefault();\n }\n };\n\n const handleClick = event => {\n if (!disabled) {\n onDaySelect(day, 'finish');\n }\n\n if (outsideCurrentMonth) {\n event.currentTarget.focus();\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n if (outsideCurrentMonth && !showDaysOutsideCurrentMonth) {\n return /*#__PURE__*/_jsx(PickersDayFiller, {\n className: clsx(classes.root, classes.hiddenDaySpacingFiller, className),\n ownerState: ownerState,\n role: other.role\n });\n }\n\n return /*#__PURE__*/_jsx(PickersDayRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: handleRef,\n centerRipple: true,\n disabled: disabled,\n tabIndex: selected ? 0 : -1,\n onKeyDown: event => onKeyDown(event, day),\n onFocus: event => onFocus(event, day),\n onBlur: event => onBlur(event, day),\n onClick: handleClick,\n onMouseDown: handleMouseDown\n }, other, {\n children: !children ? utils.format(day, 'dayOfMonth') : children\n }));\n});\nexport const areDayPropsEqual = (prevProps, nextProps) => {\n return prevProps.autoFocus === nextProps.autoFocus && prevProps.isAnimating === nextProps.isAnimating && prevProps.today === nextProps.today && prevProps.disabled === nextProps.disabled && prevProps.selected === nextProps.selected && prevProps.disableMargin === nextProps.disableMargin && prevProps.showDaysOutsideCurrentMonth === nextProps.showDaysOutsideCurrentMonth && prevProps.disableHighlightToday === nextProps.disableHighlightToday && prevProps.className === nextProps.className && prevProps.sx === nextProps.sx && prevProps.outsideCurrentMonth === nextProps.outsideCurrentMonth && prevProps.onFocus === nextProps.onFocus && prevProps.onBlur === nextProps.onBlur && prevProps.onDaySelect === nextProps.onDaySelect;\n};\nprocess.env.NODE_ENV !== \"production\" ? PickersDayRaw.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * The date to show.\n */\n day: PropTypes.any.isRequired,\n\n /**\n * If `true`, renders as disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, today's date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * If `true`, days are rendering without margin. Useful for displaying linked range of days.\n * @default false\n */\n disableMargin: PropTypes.bool,\n isAnimating: PropTypes.bool,\n onBlur: PropTypes.func,\n onDaySelect: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onKeyDown: PropTypes.func,\n\n /**\n * If `true`, day is outside of month and will be hidden.\n */\n outsideCurrentMonth: PropTypes.bool.isRequired,\n\n /**\n * If `true`, renders as selected.\n * @default false\n */\n selected: PropTypes.bool,\n\n /**\n * If `true`, days that have `outsideCurrentMonth={true}` are displayed.\n * @default false\n */\n showDaysOutsideCurrentMonth: PropTypes.bool,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * If `true`, renders as today date.\n * @default false\n */\n today: PropTypes.bool\n} : void 0;\n/**\n *\n * Demos:\n *\n * - [Date Picker](https://mui.com/x/react-date-pickers/date-picker/)\n *\n * API:\n *\n * - [PickersDay API](https://mui.com/x/api/date-pickers/pickers-day/)\n */\n\nexport const PickersDay = /*#__PURE__*/React.memo(PickersDayRaw, areDayPropsEqual);","function replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else if (typeof element.className === 'string') {\n element.className = replaceClassName(element.className, className);\n } else {\n element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport addOneClass from 'dom-helpers/addClass';\nimport removeOneClass from 'dom-helpers/removeClass';\nimport React from 'react';\nimport Transition from './Transition';\nimport { classNamesShape } from './utils/PropTypes';\nimport { forceReflow } from './utils/reflow';\n\nvar _addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return addOneClass(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return removeOneClass(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should\n * use it if you're using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n *
\n * {\"I'll receive my-node-* classes\"}\n *
\n *
\n * \n *
\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\n\nvar CSSTransition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.appliedClasses = {\n appear: {},\n enter: {},\n exit: {}\n };\n\n _this.onEnter = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument[0],\n appearing = _this$resolveArgument[1];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n if (_this.props.onEnter) {\n _this.props.onEnter(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntering = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument2[0],\n appearing = _this$resolveArgument2[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.addClass(node, type, 'active');\n\n if (_this.props.onEntering) {\n _this.props.onEntering(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntered = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument3[0],\n appearing = _this$resolveArgument3[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.removeClasses(node, type);\n\n _this.addClass(node, type, 'done');\n\n if (_this.props.onEntered) {\n _this.props.onEntered(maybeNode, maybeAppearing);\n }\n };\n\n _this.onExit = function (maybeNode) {\n var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument4[0];\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n _this.addClass(node, 'exit', 'base');\n\n if (_this.props.onExit) {\n _this.props.onExit(maybeNode);\n }\n };\n\n _this.onExiting = function (maybeNode) {\n var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument5[0];\n\n _this.addClass(node, 'exit', 'active');\n\n if (_this.props.onExiting) {\n _this.props.onExiting(maybeNode);\n }\n };\n\n _this.onExited = function (maybeNode) {\n var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument6[0];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, 'exit', 'done');\n\n if (_this.props.onExited) {\n _this.props.onExited(maybeNode);\n }\n };\n\n _this.resolveArguments = function (maybeNode, maybeAppearing) {\n return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n : [maybeNode, maybeAppearing];\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + \"-\" : '';\n var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n return {\n baseClassName: baseClassName,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.addClass = function addClass(node, type, phase) {\n var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n var _this$getClassNames = this.getClassNames('enter'),\n doneClassName = _this$getClassNames.doneClassName;\n\n if (type === 'appear' && phase === 'done' && doneClassName) {\n className += \" \" + doneClassName;\n } // This is to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n\n\n if (phase === 'active') {\n if (node) forceReflow(node);\n }\n\n if (className) {\n this.appliedClasses[type][phase] = className;\n\n _addClass(node, className);\n }\n };\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$appliedClasses$ = this.appliedClasses[type],\n baseClassName = _this$appliedClasses$.base,\n activeClassName = _this$appliedClasses$.active,\n doneClassName = _this$appliedClasses$.done;\n this.appliedClasses[type] = {};\n\n if (baseClassName) {\n removeClass(node, baseClassName);\n }\n\n if (activeClassName) {\n removeClass(node, activeClassName);\n }\n\n if (doneClassName) {\n removeClass(node, doneClassName);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n _ = _this$props.classNames,\n props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(React.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, Transition.propTypes, {\n /**\n * The animation classNames applied to the component as it appears, enters,\n * exits or has finished the transition. A single name can be provided, which\n * will be suffixed for each stage, e.g. `classNames=\"fade\"` applies:\n *\n * - `fade-appear`, `fade-appear-active`, `fade-appear-done`\n * - `fade-enter`, `fade-enter-active`, `fade-enter-done`\n * - `fade-exit`, `fade-exit-active`, `fade-exit-done`\n *\n * A few details to note about how these classes are applied:\n *\n * 1. They are _joined_ with the ones that are already defined on the child\n * component, so if you want to add some base styles, you can use\n * `className` without worrying that it will be overridden.\n *\n * 2. If the transition component mounts with `in={false}`, no classes are\n * applied yet. You might be expecting `*-exit-done`, but if you think\n * about it, a component cannot finish exiting if it hasn't entered yet.\n *\n * 2. `fade-appear-done` and `fade-enter-done` will _both_ be applied. This\n * allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply\n * an epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: classNamesShape,\n\n /**\n * A `` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit-active' is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nexport default CSSTransition;","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport const getPickersSlideTransitionUtilityClass = slot => // TODO v6: Rename 'PrivatePickersSlideTransition' to 'MuiPickersSlideTransition' to follow convention\ngenerateUtilityClass('PrivatePickersSlideTransition', slot);\nexport const pickersSlideTransitionClasses = generateUtilityClasses( // TODO v6: Rename 'PrivatePickersSlideTransition' to 'MuiPickersSlideTransition' to follow convention\n'PrivatePickersSlideTransition', ['root', 'slideEnter-left', 'slideEnter-right', 'slideEnterActive', 'slideExit', 'slideExitActiveLeft-left', 'slideExitActiveLeft-right']);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"reduceAnimations\", \"slideDirection\", \"transKey\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { styled } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { CSSTransition, TransitionGroup } from 'react-transition-group';\nimport { getPickersSlideTransitionUtilityClass, pickersSlideTransitionClasses } from './pickersSlideTransitionClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getPickersSlideTransitionUtilityClass, classes);\n};\n\nexport const slideAnimationDuration = 350;\nconst PickersSlideTransitionRoot = styled(TransitionGroup, {\n name: 'PrivatePickersSlideTransition',\n slot: 'Root',\n overridesResolver: (_, styles) => [styles.root, {\n [`.${pickersSlideTransitionClasses['slideEnter-left']}`]: styles['slideEnter-left']\n }, {\n [`.${pickersSlideTransitionClasses['slideEnter-right']}`]: styles['slideEnter-right']\n }, {\n [`.${pickersSlideTransitionClasses.slideEnterActive}`]: styles.slideEnterActive\n }, {\n [`.${pickersSlideTransitionClasses.slideExit}`]: styles.slideExit\n }, {\n [`.${pickersSlideTransitionClasses['slideExitActiveLeft-left']}`]: styles['slideExitActiveLeft-left']\n }, {\n [`.${pickersSlideTransitionClasses['slideExitActiveLeft-right']}`]: styles['slideExitActiveLeft-right']\n }]\n})(({\n theme\n}) => {\n const slideTransition = theme.transitions.create('transform', {\n duration: slideAnimationDuration,\n easing: 'cubic-bezier(0.35, 0.8, 0.4, 1)'\n });\n return {\n display: 'block',\n position: 'relative',\n overflowX: 'hidden',\n '& > *': {\n position: 'absolute',\n top: 0,\n right: 0,\n left: 0\n },\n [`& .${pickersSlideTransitionClasses['slideEnter-left']}`]: {\n willChange: 'transform',\n transform: 'translate(100%)',\n zIndex: 1\n },\n [`& .${pickersSlideTransitionClasses['slideEnter-right']}`]: {\n willChange: 'transform',\n transform: 'translate(-100%)',\n zIndex: 1\n },\n [`& .${pickersSlideTransitionClasses.slideEnterActive}`]: {\n transform: 'translate(0%)',\n transition: slideTransition\n },\n [`& .${pickersSlideTransitionClasses.slideExit}`]: {\n transform: 'translate(0%)'\n },\n [`& .${pickersSlideTransitionClasses['slideExitActiveLeft-left']}`]: {\n willChange: 'transform',\n transform: 'translate(-100%)',\n transition: slideTransition,\n zIndex: 0\n },\n [`& .${pickersSlideTransitionClasses['slideExitActiveLeft-right']}`]: {\n willChange: 'transform',\n transform: 'translate(100%)',\n transition: slideTransition,\n zIndex: 0\n }\n };\n});\n/**\n * @ignore - do not document.\n */\n\nexport const PickersSlideTransition = props => {\n // TODO v6: add 'useThemeProps' once the component class names are aligned\n const {\n children,\n className,\n reduceAnimations,\n slideDirection,\n transKey\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const classes = useUtilityClasses(props);\n\n if (reduceAnimations) {\n return /*#__PURE__*/_jsx(\"div\", {\n className: clsx(classes.root, className),\n children: children\n });\n }\n\n const transitionClasses = {\n exit: pickersSlideTransitionClasses.slideExit,\n enterActive: pickersSlideTransitionClasses.slideEnterActive,\n enter: pickersSlideTransitionClasses[`slideEnter-${slideDirection}`],\n exitActive: pickersSlideTransitionClasses[`slideExitActiveLeft-${slideDirection}`]\n };\n return /*#__PURE__*/_jsx(PickersSlideTransitionRoot, {\n className: clsx(classes.root, className),\n childFactory: element => /*#__PURE__*/React.cloneElement(element, {\n classNames: transitionClasses\n }),\n role: \"presentation\",\n children: /*#__PURE__*/_jsx(CSSTransition, _extends({\n mountOnEnter: true,\n unmountOnExit: true,\n timeout: slideAnimationDuration,\n classNames: transitionClasses\n }, other, {\n children: children\n }), transKey)\n });\n};","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport const getDayPickerUtilityClass = slot => generateUtilityClass('MuiDayPicker', slot);\nexport const dayPickerClasses = generateUtilityClasses('MuiDayPicker', ['header', 'weekDayLabel', 'loadingContainer', 'slideTransition', 'monthContainer', 'weekContainer']);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Typography from '@mui/material/Typography';\nimport { styled, useTheme, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport clsx from 'clsx';\nimport { PickersDay } from '../PickersDay/PickersDay';\nimport { useUtils, useNow } from '../internals/hooks/useUtils';\nimport { DAY_SIZE, DAY_MARGIN } from '../internals/constants/dimensions';\nimport { PickersSlideTransition } from './PickersSlideTransition';\nimport { useIsDayDisabled } from '../internals/hooks/validation/useDateValidation';\nimport { findClosestEnabledDate } from '../internals/utils/date-utils';\nimport { getDayPickerUtilityClass } from './dayPickerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { createElement as _createElement } from \"react\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n header: ['header'],\n weekDayLabel: ['weekDayLabel'],\n loadingContainer: ['loadingContainer'],\n slideTransition: ['slideTransition'],\n monthContainer: ['monthContainer'],\n weekContainer: ['weekContainer']\n };\n return composeClasses(slots, getDayPickerUtilityClass, classes);\n};\n\nconst defaultDayOfWeekFormatter = day => day.charAt(0).toUpperCase();\n\nconst weeksContainerHeight = (DAY_SIZE + DAY_MARGIN * 2) * 6;\nconst PickersCalendarDayHeader = styled('div', {\n name: 'MuiDayPicker',\n slot: 'Header',\n overridesResolver: (_, styles) => styles.header\n})({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n});\nconst PickersCalendarWeekDayLabel = styled(Typography, {\n name: 'MuiDayPicker',\n slot: 'WeekDayLabel',\n overridesResolver: (_, styles) => styles.weekDayLabel\n})(({\n theme\n}) => ({\n width: 36,\n height: 40,\n margin: '0 2px',\n textAlign: 'center',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n color: theme.palette.text.secondary\n}));\nconst PickersCalendarLoadingContainer = styled('div', {\n name: 'MuiDayPicker',\n slot: 'LoadingContainer',\n overridesResolver: (_, styles) => styles.loadingContainer\n})({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n minHeight: weeksContainerHeight\n});\nconst PickersCalendarSlideTransition = styled(PickersSlideTransition, {\n name: 'MuiDayPicker',\n slot: 'SlideTransition',\n overridesResolver: (_, styles) => styles.slideTransition\n})({\n minHeight: weeksContainerHeight\n});\nconst PickersCalendarWeekContainer = styled('div', {\n name: 'MuiDayPicker',\n slot: 'MonthContainer',\n overridesResolver: (_, styles) => styles.monthContainer\n})({\n overflow: 'hidden'\n});\nconst PickersCalendarWeek = styled('div', {\n name: 'MuiDayPicker',\n slot: 'WeekContainer',\n overridesResolver: (_, styles) => styles.weekContainer\n})({\n margin: `${DAY_MARGIN}px 0`,\n display: 'flex',\n justifyContent: 'center'\n});\n/**\n * @ignore - do not document.\n */\n\nexport function DayPicker(inProps) {\n const now = useNow();\n const utils = useUtils();\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDayPicker'\n });\n const classes = useUtilityClasses(props);\n const {\n onFocusedDayChange,\n className,\n currentMonth,\n selectedDays,\n disabled,\n disableHighlightToday,\n focusedDay,\n isMonthSwitchingAnimating,\n loading,\n onSelectedDaysChange,\n onMonthSwitchingAnimationEnd,\n readOnly,\n reduceAnimations,\n renderDay,\n renderLoading = () => /*#__PURE__*/_jsx(\"span\", {\n children: \"...\"\n }),\n showDaysOutsideCurrentMonth,\n slideDirection,\n TransitionProps,\n disablePast,\n disableFuture,\n minDate,\n maxDate,\n shouldDisableDate,\n dayOfWeekFormatter = defaultDayOfWeekFormatter,\n hasFocus,\n onFocusedViewChange,\n gridLabelId\n } = props;\n const isDateDisabled = useIsDayDisabled({\n shouldDisableDate,\n minDate,\n maxDate,\n disablePast,\n disableFuture\n });\n const [internalFocusedDay, setInternalFocusedDay] = React.useState(() => focusedDay || now);\n const changeHasFocus = React.useCallback(newHasFocus => {\n if (onFocusedViewChange) {\n onFocusedViewChange(newHasFocus);\n }\n }, [onFocusedViewChange]);\n const handleDaySelect = React.useCallback((day, isFinish = 'finish') => {\n if (readOnly) {\n return;\n }\n\n onSelectedDaysChange(day, isFinish);\n }, [onSelectedDaysChange, readOnly]);\n const focusDay = React.useCallback(day => {\n if (!isDateDisabled(day)) {\n onFocusedDayChange(day);\n setInternalFocusedDay(day);\n changeHasFocus(true);\n }\n }, [isDateDisabled, onFocusedDayChange, changeHasFocus]);\n const theme = useTheme();\n\n function handleKeyDown(event, day) {\n switch (event.key) {\n case 'ArrowUp':\n focusDay(utils.addDays(day, -7));\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n focusDay(utils.addDays(day, 7));\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n {\n const newFocusedDayDefault = utils.addDays(day, theme.direction === 'ltr' ? -1 : 1);\n const nextAvailableMonth = theme.direction === 'ltr' ? utils.getPreviousMonth(day) : utils.getNextMonth(day);\n const closestDayToFocus = findClosestEnabledDate({\n utils,\n date: newFocusedDayDefault,\n minDate: theme.direction === 'ltr' ? utils.startOfMonth(nextAvailableMonth) : newFocusedDayDefault,\n maxDate: theme.direction === 'ltr' ? newFocusedDayDefault : utils.endOfMonth(nextAvailableMonth),\n isDateDisabled\n });\n focusDay(closestDayToFocus || newFocusedDayDefault);\n event.preventDefault();\n break;\n }\n\n case 'ArrowRight':\n {\n const newFocusedDayDefault = utils.addDays(day, theme.direction === 'ltr' ? 1 : -1);\n const nextAvailableMonth = theme.direction === 'ltr' ? utils.getNextMonth(day) : utils.getPreviousMonth(day);\n const closestDayToFocus = findClosestEnabledDate({\n utils,\n date: newFocusedDayDefault,\n minDate: theme.direction === 'ltr' ? newFocusedDayDefault : utils.startOfMonth(nextAvailableMonth),\n maxDate: theme.direction === 'ltr' ? utils.endOfMonth(nextAvailableMonth) : newFocusedDayDefault,\n isDateDisabled\n });\n focusDay(closestDayToFocus || newFocusedDayDefault);\n event.preventDefault();\n break;\n }\n\n case 'Home':\n focusDay(utils.startOfWeek(day));\n event.preventDefault();\n break;\n\n case 'End':\n focusDay(utils.endOfWeek(day));\n event.preventDefault();\n break;\n\n case 'PageUp':\n focusDay(utils.getNextMonth(day));\n event.preventDefault();\n break;\n\n case 'PageDown':\n focusDay(utils.getPreviousMonth(day));\n event.preventDefault();\n break;\n\n default:\n break;\n }\n }\n\n function handleFocus(event, day) {\n focusDay(day);\n }\n\n function handleBlur(event, day) {\n if (hasFocus && utils.isSameDay(internalFocusedDay, day)) {\n changeHasFocus(false);\n }\n }\n\n const currentMonthNumber = utils.getMonth(currentMonth);\n const validSelectedDays = selectedDays.filter(day => !!day).map(day => utils.startOfDay(day)); // need a new ref whenever the `key` of the transition changes: http://reactcommunity.org/react-transition-group/transition/#Transition-prop-nodeRef.\n\n const transitionKey = currentMonthNumber; // eslint-disable-next-line react-hooks/exhaustive-deps\n\n const slideNodeRef = React.useMemo(() => /*#__PURE__*/React.createRef(), [transitionKey]);\n const startOfCurrentWeek = utils.startOfWeek(now);\n const focusableDay = React.useMemo(() => {\n const startOfMonth = utils.startOfMonth(currentMonth);\n const endOfMonth = utils.endOfMonth(currentMonth);\n\n if (isDateDisabled(internalFocusedDay) || utils.isAfterDay(internalFocusedDay, endOfMonth) || utils.isBeforeDay(internalFocusedDay, startOfMonth)) {\n return findClosestEnabledDate({\n utils,\n date: internalFocusedDay,\n minDate: startOfMonth,\n maxDate: endOfMonth,\n disablePast,\n disableFuture,\n isDateDisabled\n });\n }\n\n return internalFocusedDay;\n }, [currentMonth, disableFuture, disablePast, internalFocusedDay, isDateDisabled, utils]);\n return /*#__PURE__*/_jsxs(\"div\", {\n role: \"grid\",\n \"aria-labelledby\": gridLabelId,\n children: [/*#__PURE__*/_jsx(PickersCalendarDayHeader, {\n role: \"row\",\n className: classes.header,\n children: utils.getWeekdays().map((day, i) => {\n var _dayOfWeekFormatter;\n\n return /*#__PURE__*/_jsx(PickersCalendarWeekDayLabel, {\n variant: \"caption\",\n role: \"columnheader\",\n \"aria-label\": utils.format(utils.addDays(startOfCurrentWeek, i), 'weekday'),\n className: classes.weekDayLabel,\n children: (_dayOfWeekFormatter = dayOfWeekFormatter == null ? void 0 : dayOfWeekFormatter(day)) != null ? _dayOfWeekFormatter : day\n }, day + i.toString());\n })\n }), loading ? /*#__PURE__*/_jsx(PickersCalendarLoadingContainer, {\n className: classes.loadingContainer,\n children: renderLoading()\n }) : /*#__PURE__*/_jsx(PickersCalendarSlideTransition, _extends({\n transKey: transitionKey,\n onExited: onMonthSwitchingAnimationEnd,\n reduceAnimations: reduceAnimations,\n slideDirection: slideDirection,\n className: clsx(className, classes.slideTransition)\n }, TransitionProps, {\n nodeRef: slideNodeRef,\n children: /*#__PURE__*/_jsx(PickersCalendarWeekContainer, {\n ref: slideNodeRef,\n role: \"rowgroup\",\n className: classes.monthContainer,\n children: utils.getWeekArray(currentMonth).map(week => /*#__PURE__*/_jsx(PickersCalendarWeek, {\n role: \"row\",\n className: classes.weekContainer,\n children: week.map(day => {\n const isFocusableDay = focusableDay !== null && utils.isSameDay(day, focusableDay);\n const isSelected = validSelectedDays.some(selectedDay => utils.isSameDay(selectedDay, day));\n const isToday = utils.isSameDay(day, now);\n const pickersDayProps = {\n key: day == null ? void 0 : day.toString(),\n day,\n isAnimating: isMonthSwitchingAnimating,\n disabled: disabled || isDateDisabled(day),\n autoFocus: hasFocus && isFocusableDay,\n today: isToday,\n outsideCurrentMonth: utils.getMonth(day) !== currentMonthNumber,\n selected: isSelected,\n disableHighlightToday,\n showDaysOutsideCurrentMonth,\n onKeyDown: handleKeyDown,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onDaySelect: handleDaySelect,\n tabIndex: isFocusableDay ? 0 : -1,\n role: 'gridcell',\n 'aria-selected': isSelected\n };\n\n if (isToday) {\n pickersDayProps['aria-current'] = 'date';\n }\n\n return renderDay ? renderDay(day, validSelectedDays, pickersDayProps) : /*#__PURE__*/_createElement(PickersDay, _extends({}, pickersDayProps, {\n key: pickersDayProps.key\n }));\n })\n }, `week-${week[0]}`))\n })\n }))]\n });\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport const getPickersCalendarHeaderUtilityClass = slot => generateUtilityClass('MuiPickersCalendarHeader', slot);\nexport const pickersCalendarHeaderClasses = generateUtilityClasses('MuiPickersCalendarHeader', ['root', 'labelContainer', 'label', 'switchViewButton', 'switchViewIcon']);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Fade from '@mui/material/Fade';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport IconButton from '@mui/material/IconButton';\nimport { useLocaleText, useUtils } from '../internals/hooks/useUtils';\nimport { PickersFadeTransitionGroup } from './PickersFadeTransitionGroup';\nimport { ArrowDropDown } from '../internals/components/icons';\nimport { PickersArrowSwitcher } from '../internals/components/PickersArrowSwitcher';\nimport { usePreviousMonthDisabled, useNextMonthDisabled } from '../internals/hooks/date-helpers-hooks';\nimport { buildDeprecatedPropsWarning } from '../internals/utils/warning';\nimport { getPickersCalendarHeaderUtilityClass } from './pickersCalendarHeaderClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n labelContainer: ['labelContainer'],\n label: ['label'],\n switchViewButton: ['switchViewButton'],\n switchViewIcon: ['switchViewIcon']\n };\n return composeClasses(slots, getPickersCalendarHeaderUtilityClass, classes);\n};\n\nconst PickersCalendarHeaderRoot = styled('div', {\n name: 'MuiPickersCalendarHeader',\n slot: 'Root',\n overridesResolver: (_, styles) => styles.root\n})({\n display: 'flex',\n alignItems: 'center',\n marginTop: 16,\n marginBottom: 8,\n paddingLeft: 24,\n paddingRight: 12,\n // prevent jumping in safari\n maxHeight: 30,\n minHeight: 30\n});\nconst PickersCalendarHeaderLabelContainer = styled('div', {\n name: 'MuiPickersCalendarHeader',\n slot: 'LabelContainer',\n overridesResolver: (_, styles) => styles.labelContainer\n})(({\n theme\n}) => _extends({\n display: 'flex',\n maxHeight: 30,\n overflow: 'hidden',\n alignItems: 'center',\n cursor: 'pointer',\n marginRight: 'auto'\n}, theme.typography.body1, {\n fontWeight: theme.typography.fontWeightMedium\n}));\nconst PickersCalendarHeaderLabel = styled('div', {\n name: 'MuiPickersCalendarHeader',\n slot: 'Label',\n overridesResolver: (_, styles) => styles.label\n})({\n marginRight: 6\n});\nconst PickersCalendarHeaderSwitchViewButton = styled(IconButton, {\n name: 'MuiPickersCalendarHeader',\n slot: 'SwitchViewButton',\n overridesResolver: (_, styles) => styles.switchViewButton\n})({\n marginRight: 'auto'\n});\nconst PickersCalendarHeaderSwitchViewIcon = styled(ArrowDropDown, {\n name: 'MuiPickersCalendarHeader',\n slot: 'SwitchViewIcon',\n overridesResolver: (_, styles) => styles.switchViewIcon\n})(({\n theme,\n ownerState\n}) => _extends({\n willChange: 'transform',\n transition: theme.transitions.create('transform'),\n transform: 'rotate(0deg)'\n}, ownerState.openView === 'year' && {\n transform: 'rotate(180deg)'\n}));\nconst deprecatedPropsWarning = buildDeprecatedPropsWarning('Props for translation are deprecated. See https://mui.com/x/react-date-pickers/localization for more information.');\n/**\n * @ignore - do not document.\n */\n\nexport function PickersCalendarHeader(inProps) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPickersCalendarHeader'\n });\n const {\n components = {},\n componentsProps = {},\n currentMonth: month,\n disabled,\n disableFuture,\n disablePast,\n getViewSwitchingButtonText: getViewSwitchingButtonTextProp,\n leftArrowButtonText: leftArrowButtonTextProp,\n maxDate,\n minDate,\n onMonthChange,\n onViewChange,\n openView: currentView,\n reduceAnimations,\n rightArrowButtonText: rightArrowButtonTextProp,\n views,\n labelId\n } = props;\n deprecatedPropsWarning({\n leftArrowButtonText: leftArrowButtonTextProp,\n rightArrowButtonText: rightArrowButtonTextProp,\n getViewSwitchingButtonText: getViewSwitchingButtonTextProp\n });\n const localeText = useLocaleText();\n const leftArrowButtonText = leftArrowButtonTextProp != null ? leftArrowButtonTextProp : localeText.previousMonth;\n const rightArrowButtonText = rightArrowButtonTextProp != null ? rightArrowButtonTextProp : localeText.nextMonth;\n const getViewSwitchingButtonText = getViewSwitchingButtonTextProp != null ? getViewSwitchingButtonTextProp : localeText.calendarViewSwitchingButtonAriaLabel;\n const utils = useUtils();\n const classes = useUtilityClasses(props);\n const switchViewButtonProps = componentsProps.switchViewButton || {};\n\n const selectNextMonth = () => onMonthChange(utils.getNextMonth(month), 'left');\n\n const selectPreviousMonth = () => onMonthChange(utils.getPreviousMonth(month), 'right');\n\n const isNextMonthDisabled = useNextMonthDisabled(month, {\n disableFuture,\n maxDate\n });\n const isPreviousMonthDisabled = usePreviousMonthDisabled(month, {\n disablePast,\n minDate\n });\n\n const handleToggleView = () => {\n if (views.length === 1 || !onViewChange || disabled) {\n return;\n }\n\n if (views.length === 2) {\n onViewChange(views.find(view => view !== currentView) || views[0]);\n } else {\n // switching only between first 2\n const nextIndexToOpen = views.indexOf(currentView) !== 0 ? 0 : 1;\n onViewChange(views[nextIndexToOpen]);\n }\n }; // No need to display more information\n\n\n if (views.length === 1 && views[0] === 'year') {\n return null;\n }\n\n const ownerState = props;\n return /*#__PURE__*/_jsxs(PickersCalendarHeaderRoot, {\n ownerState: ownerState,\n className: classes.root,\n children: [/*#__PURE__*/_jsxs(PickersCalendarHeaderLabelContainer, {\n role: \"presentation\",\n onClick: handleToggleView,\n ownerState: ownerState // putting this on the label item element below breaks when using transition\n ,\n \"aria-live\": \"polite\",\n className: classes.labelContainer,\n children: [/*#__PURE__*/_jsx(PickersFadeTransitionGroup, {\n reduceAnimations: reduceAnimations,\n transKey: utils.format(month, 'monthAndYear'),\n children: /*#__PURE__*/_jsx(PickersCalendarHeaderLabel, {\n id: labelId,\n ownerState: ownerState,\n className: classes.label,\n children: utils.format(month, 'monthAndYear')\n })\n }), views.length > 1 && !disabled && /*#__PURE__*/_jsx(PickersCalendarHeaderSwitchViewButton, _extends({\n size: \"small\",\n as: components.SwitchViewButton,\n \"aria-label\": getViewSwitchingButtonText(currentView),\n className: classes.switchViewButton\n }, switchViewButtonProps, {\n children: /*#__PURE__*/_jsx(PickersCalendarHeaderSwitchViewIcon, {\n as: components.SwitchViewIcon,\n ownerState: ownerState,\n className: classes.switchViewIcon\n })\n }))]\n }), /*#__PURE__*/_jsx(Fade, {\n in: currentView === 'day',\n children: /*#__PURE__*/_jsx(PickersArrowSwitcher, {\n leftArrowButtonText: leftArrowButtonText,\n rightArrowButtonText: rightArrowButtonText,\n components: components,\n componentsProps: componentsProps,\n onLeftClick: selectPreviousMonth,\n onRightClick: selectNextMonth,\n isLeftDisabled: isPreviousMonthDisabled,\n isRightDisabled: isNextMonthDisabled\n })\n })]\n });\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getPickersYearUtilityClass(slot) {\n // TODO v6: Rename 'PrivatePickersYear' to 'MuiPickersYear' to follow convention\n return generateUtilityClass('PrivatePickersYear', slot);\n} // TODO v6: Rename 'PrivatePickersYear' to 'MuiPickersYear' to follow convention\n\nexport const pickersYearClasses = generateUtilityClasses('PrivatePickersYear', ['root', 'modeDesktop', 'modeMobile', 'yearButton', 'selected', 'disabled']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"className\", \"children\", \"disabled\", \"onClick\", \"onKeyDown\", \"value\", \"tabIndex\", \"onFocus\", \"onBlur\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { useForkRef, capitalize } from '@mui/material/utils';\nimport { alpha, styled } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { WrapperVariantContext } from '../internals/components/wrappers/WrapperVariantContext';\nimport { getPickersYearUtilityClass, pickersYearClasses } from './pickersYearClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n wrapperVariant,\n disabled,\n selected,\n classes\n } = ownerState;\n const slots = {\n root: ['root', wrapperVariant && `mode${capitalize(wrapperVariant)}`],\n yearButton: ['yearButton', disabled && 'disabled', selected && 'selected']\n };\n return composeClasses(slots, getPickersYearUtilityClass, classes);\n};\n\nconst PickersYearRoot = styled('div', {\n name: 'PrivatePickersYear',\n slot: 'Root',\n overridesResolver: (_, styles) => [styles.root, {\n [`&.${pickersYearClasses.modeDesktop}`]: styles.modeDesktop\n }, {\n [`&.${pickersYearClasses.modeMobile}`]: styles.modeMobile\n }]\n})(({\n ownerState\n}) => _extends({\n flexBasis: '33.3%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n}, (ownerState == null ? void 0 : ownerState.wrapperVariant) === 'desktop' && {\n flexBasis: '25%'\n}));\nconst PickersYearButton = styled('button', {\n name: 'PrivatePickersYear',\n slot: 'Button',\n overridesResolver: (_, styles) => [styles.button, {\n [`&.${pickersYearClasses.disabled}`]: styles.disabled\n }, {\n [`&.${pickersYearClasses.selected}`]: styles.selected\n }]\n})(({\n theme\n}) => _extends({\n color: 'unset',\n backgroundColor: 'transparent',\n border: 0,\n outline: 0\n}, theme.typography.subtitle1, {\n margin: '8px 0',\n height: 36,\n width: 72,\n borderRadius: 18,\n cursor: 'pointer',\n '&:focus, &:hover': {\n backgroundColor: alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n },\n [`&.${pickersYearClasses.disabled}`]: {\n color: theme.palette.text.secondary\n },\n [`&.${pickersYearClasses.selected}`]: {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.primary.main,\n '&:focus, &:hover': {\n backgroundColor: theme.palette.primary.dark\n }\n }\n}));\n\nconst noop = () => {};\n/**\n * @ignore - internal component.\n */\n\n\nexport const PickersYear = /*#__PURE__*/React.forwardRef(function PickersYear(props, forwardedRef) {\n // TODO v6: add 'useThemeProps' once the component class names are aligned\n const {\n autoFocus,\n className,\n children,\n disabled,\n onClick,\n onKeyDown,\n value,\n tabIndex,\n onFocus = noop,\n onBlur = noop\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ref = React.useRef(null);\n const refHandle = useForkRef(ref, forwardedRef);\n const wrapperVariant = React.useContext(WrapperVariantContext);\n\n const ownerState = _extends({}, props, {\n wrapperVariant\n });\n\n const classes = useUtilityClasses(ownerState); // We can't forward the `autoFocus` to the button because it is a native button, not a MUI Button\n\n React.useEffect(() => {\n if (autoFocus) {\n // `ref.current` being `null` would be a bug in MUI.\n ref.current.focus();\n }\n }, [autoFocus]);\n return /*#__PURE__*/_jsx(PickersYearRoot, {\n className: clsx(classes.root, className),\n ownerState: ownerState,\n children: /*#__PURE__*/_jsx(PickersYearButton, _extends({\n ref: refHandle,\n disabled: disabled,\n type: \"button\",\n tabIndex: disabled ? -1 : tabIndex,\n onClick: event => onClick(event, value),\n onKeyDown: event => onKeyDown(event, value),\n onFocus: event => onFocus(event, value),\n onBlur: event => onBlur(event, value),\n className: classes.yearButton,\n ownerState: ownerState\n }, other, {\n children: children\n }))\n });\n});","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getYearPickerUtilityClass(slot) {\n return generateUtilityClass('MuiYearPicker', slot);\n}\nexport const yearPickerClasses = generateUtilityClasses('MuiYearPicker', ['root']);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTheme, styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport clsx from 'clsx';\nimport { useForkRef } from '@mui/material/utils';\nimport { unstable_useControlled as useControlled } from '@mui/utils';\nimport { PickersYear } from './PickersYear';\nimport { useUtils, useNow, useDefaultDates } from '../internals/hooks/useUtils';\nimport { WrapperVariantContext } from '../internals/components/wrappers/WrapperVariantContext';\nimport { getYearPickerUtilityClass } from './yearPickerClasses';\nimport { parseNonNullablePickerDate } from '../internals/utils/date-utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getYearPickerUtilityClass, classes);\n};\n\nfunction useYearPickerDefaultizedProps(props, name) {\n const utils = useUtils();\n const defaultDates = useDefaultDates();\n const themeProps = useThemeProps({\n props,\n name\n });\n return _extends({\n disablePast: false,\n disableFuture: false\n }, themeProps, {\n minDate: parseNonNullablePickerDate(utils, themeProps.minDate, defaultDates.minDate),\n maxDate: parseNonNullablePickerDate(utils, themeProps.maxDate, defaultDates.maxDate)\n });\n}\n\nconst YearPickerRoot = styled('div', {\n name: 'MuiYearPicker',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n overflowY: 'auto',\n height: '100%',\n padding: '0 4px',\n maxHeight: '304px'\n});\nexport const YearPicker = /*#__PURE__*/React.forwardRef(function YearPicker(inProps, ref) {\n const now = useNow();\n const theme = useTheme();\n const utils = useUtils();\n const props = useYearPickerDefaultizedProps(inProps, 'MuiYearPicker');\n const {\n autoFocus,\n className,\n date,\n disabled,\n disableFuture,\n disablePast,\n maxDate,\n minDate,\n onChange,\n readOnly,\n shouldDisableYear,\n disableHighlightToday,\n onYearFocus,\n hasFocus,\n onFocusedViewChange\n } = props;\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n const selectedDateOrStartOfYear = React.useMemo(() => date != null ? date : utils.startOfYear(now), [now, utils, date]);\n const currentYear = React.useMemo(() => {\n if (date != null) {\n return utils.getYear(date);\n }\n\n if (disableHighlightToday) {\n return null;\n }\n\n return utils.getYear(now);\n }, [now, date, utils, disableHighlightToday]);\n const wrapperVariant = React.useContext(WrapperVariantContext);\n const selectedYearRef = React.useRef(null);\n const [focusedYear, setFocusedYear] = React.useState(() => currentYear || utils.getYear(now));\n const [internalHasFocus, setInternalHasFocus] = useControlled({\n name: 'YearPicker',\n state: 'hasFocus',\n controlled: hasFocus,\n default: autoFocus\n });\n const changeHasFocus = React.useCallback(newHasFocus => {\n setInternalHasFocus(newHasFocus);\n\n if (onFocusedViewChange) {\n onFocusedViewChange(newHasFocus);\n }\n }, [setInternalHasFocus, onFocusedViewChange]);\n const isYearDisabled = React.useCallback(dateToValidate => {\n if (disablePast && utils.isBeforeYear(dateToValidate, now)) {\n return true;\n }\n\n if (disableFuture && utils.isAfterYear(dateToValidate, now)) {\n return true;\n }\n\n if (minDate && utils.isBeforeYear(dateToValidate, minDate)) {\n return true;\n }\n\n if (maxDate && utils.isAfterYear(dateToValidate, maxDate)) {\n return true;\n }\n\n if (shouldDisableYear && shouldDisableYear(dateToValidate)) {\n return true;\n }\n\n return false;\n }, [disableFuture, disablePast, maxDate, minDate, now, shouldDisableYear, utils]);\n\n const handleYearSelection = (event, year, isFinish = 'finish') => {\n if (readOnly) {\n return;\n }\n\n const newDate = utils.setYear(selectedDateOrStartOfYear, year);\n onChange(newDate, isFinish);\n };\n\n const focusYear = React.useCallback(year => {\n if (!isYearDisabled(utils.setYear(selectedDateOrStartOfYear, year))) {\n setFocusedYear(year);\n changeHasFocus(true);\n onYearFocus == null ? void 0 : onYearFocus(year);\n }\n }, [isYearDisabled, utils, selectedDateOrStartOfYear, changeHasFocus, onYearFocus]);\n React.useEffect(() => {\n setFocusedYear(prevFocusedYear => currentYear !== null && prevFocusedYear !== currentYear ? currentYear : prevFocusedYear);\n }, [currentYear]);\n const yearsInRow = wrapperVariant === 'desktop' ? 4 : 3;\n const handleKeyDown = React.useCallback((event, year) => {\n switch (event.key) {\n case 'ArrowUp':\n focusYear(year - yearsInRow);\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n focusYear(year + yearsInRow);\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n focusYear(year + (theme.direction === 'ltr' ? -1 : 1));\n event.preventDefault();\n break;\n\n case 'ArrowRight':\n focusYear(year + (theme.direction === 'ltr' ? 1 : -1));\n event.preventDefault();\n break;\n\n default:\n break;\n }\n }, [focusYear, theme.direction, yearsInRow]);\n const handleFocus = React.useCallback((event, year) => {\n focusYear(year);\n }, [focusYear]);\n const handleBlur = React.useCallback((event, year) => {\n if (focusedYear === year) {\n changeHasFocus(false);\n }\n }, [focusedYear, changeHasFocus]);\n const nowYear = utils.getYear(now);\n const scrollerRef = React.useRef(null);\n const handleRef = useForkRef(ref, scrollerRef);\n React.useEffect(() => {\n if (autoFocus || scrollerRef.current === null) {\n return;\n }\n\n const tabbableButton = scrollerRef.current.querySelector('[tabindex=\"0\"]');\n\n if (!tabbableButton) {\n return;\n } // Taken from useScroll in x-data-grid, but vertically centered\n\n\n const offsetHeight = tabbableButton.offsetHeight;\n const offsetTop = tabbableButton.offsetTop;\n const clientHeight = scrollerRef.current.clientHeight;\n const scrollTop = scrollerRef.current.scrollTop;\n const elementBottom = offsetTop + offsetHeight;\n\n if (offsetHeight > clientHeight || offsetTop < scrollTop) {\n // Button already visible\n return;\n }\n\n scrollerRef.current.scrollTop = elementBottom - clientHeight / 2 - offsetHeight / 2;\n }, [autoFocus]);\n return /*#__PURE__*/_jsx(YearPickerRoot, {\n ref: handleRef,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n children: utils.getYearRange(minDate, maxDate).map(year => {\n const yearNumber = utils.getYear(year);\n const selected = yearNumber === currentYear;\n return /*#__PURE__*/_jsx(PickersYear, {\n selected: selected,\n value: yearNumber,\n onClick: handleYearSelection,\n onKeyDown: handleKeyDown,\n autoFocus: internalHasFocus && yearNumber === focusedYear,\n ref: selected ? selectedYearRef : undefined,\n disabled: disabled || isYearDisabled(year),\n tabIndex: yearNumber === focusedYear ? 0 : -1,\n onFocus: handleFocus,\n onBlur: handleBlur,\n \"aria-current\": nowYear === yearNumber ? 'date' : undefined,\n children: utils.format(year, 'year')\n }, utils.format(year, 'year'));\n })\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? YearPicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n autoFocus: PropTypes.bool,\n classes: PropTypes.object,\n className: PropTypes.string,\n date: PropTypes.any,\n disabled: PropTypes.bool,\n\n /**\n * If `true` future days are disabled.\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true`, today's date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * If `true` past days are disabled.\n * @default false\n */\n disablePast: PropTypes.bool,\n hasFocus: PropTypes.bool,\n\n /**\n * Maximal selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Minimal selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n onChange: PropTypes.func.isRequired,\n onFocusedDayChange: PropTypes.func,\n onFocusedViewChange: PropTypes.func,\n onYearFocus: PropTypes.func,\n readOnly: PropTypes.bool,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n * @template TDate\n * @param {TDate} year The year to test.\n * @returns {boolean} Returns `true` if the year should be disabled.\n */\n shouldDisableYear: PropTypes.func\n} : void 0;","export const defaultReduceAnimations = typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent);","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport const getCalendarPickerUtilityClass = slot => generateUtilityClass('MuiCalendarPicker', slot);\nexport const calendarPickerClasses = generateUtilityClasses('MuiCalendarPicker', ['root', 'viewTransitionContainer']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"onViewChange\", \"date\", \"disableFuture\", \"disablePast\", \"defaultCalendarMonth\", \"onChange\", \"onYearChange\", \"onMonthChange\", \"reduceAnimations\", \"shouldDisableDate\", \"shouldDisableMonth\", \"shouldDisableYear\", \"view\", \"views\", \"openTo\", \"className\", \"disabled\", \"readOnly\", \"minDate\", \"maxDate\", \"disableHighlightToday\", \"focusedView\", \"onFocusedViewChange\", \"classes\"];\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/material';\nimport { useControlled, unstable_useId as useId, useEventCallback } from '@mui/material/utils';\nimport { MonthPicker } from '../MonthPicker/MonthPicker';\nimport { useCalendarState } from './useCalendarState';\nimport { useDefaultDates, useUtils } from '../internals/hooks/useUtils';\nimport { PickersFadeTransitionGroup } from './PickersFadeTransitionGroup';\nimport { DayPicker } from './DayPicker';\nimport { useViews } from '../internals/hooks/useViews';\nimport { PickersCalendarHeader } from './PickersCalendarHeader';\nimport { YearPicker } from '../YearPicker/YearPicker';\nimport { findClosestEnabledDate, parseNonNullablePickerDate } from '../internals/utils/date-utils';\nimport { PickerViewRoot } from '../internals/components/PickerViewRoot';\nimport { defaultReduceAnimations } from '../internals/utils/defaultReduceAnimations';\nimport { getCalendarPickerUtilityClass } from './calendarPickerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n viewTransitionContainer: ['viewTransitionContainer']\n };\n return composeClasses(slots, getCalendarPickerUtilityClass, classes);\n};\n\nfunction useCalendarPickerDefaultizedProps(props, name) {\n const utils = useUtils();\n const defaultDates = useDefaultDates();\n const themeProps = useThemeProps({\n props,\n name\n });\n return _extends({\n loading: false,\n disablePast: false,\n disableFuture: false,\n openTo: 'day',\n views: ['year', 'day'],\n reduceAnimations: defaultReduceAnimations,\n renderLoading: () => /*#__PURE__*/_jsx(\"span\", {\n children: \"...\"\n })\n }, themeProps, {\n minDate: parseNonNullablePickerDate(utils, themeProps.minDate, defaultDates.minDate),\n maxDate: parseNonNullablePickerDate(utils, themeProps.maxDate, defaultDates.maxDate)\n });\n}\n\nconst CalendarPickerRoot = styled(PickerViewRoot, {\n name: 'MuiCalendarPicker',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'flex',\n flexDirection: 'column'\n});\nconst CalendarPickerViewTransitionContainer = styled(PickersFadeTransitionGroup, {\n name: 'MuiCalendarPicker',\n slot: 'ViewTransitionContainer',\n overridesResolver: (props, styles) => styles.viewTransitionContainer\n})({});\n\n/**\n *\n * Demos:\n *\n * - [Date Picker](https://mui.com/x/react-date-pickers/date-picker/)\n *\n * API:\n *\n * - [CalendarPicker API](https://mui.com/x/api/date-pickers/calendar-picker/)\n */\nexport const CalendarPicker = /*#__PURE__*/React.forwardRef(function CalendarPicker(inProps, ref) {\n const utils = useUtils();\n const id = useId();\n const props = useCalendarPickerDefaultizedProps(inProps, 'MuiCalendarPicker');\n\n const {\n autoFocus,\n onViewChange,\n date,\n disableFuture,\n disablePast,\n defaultCalendarMonth,\n onChange,\n onYearChange,\n onMonthChange,\n reduceAnimations,\n shouldDisableDate,\n shouldDisableMonth,\n shouldDisableYear,\n view,\n views,\n openTo,\n className,\n disabled,\n readOnly,\n minDate,\n maxDate,\n disableHighlightToday,\n focusedView,\n onFocusedViewChange\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const {\n openView,\n setOpenView,\n openNext\n } = useViews({\n view,\n views,\n openTo,\n onChange,\n onViewChange\n });\n const {\n calendarState,\n changeFocusedDay,\n changeMonth,\n handleChangeMonth,\n isDateDisabled,\n onMonthSwitchingAnimationEnd\n } = useCalendarState({\n date,\n defaultCalendarMonth,\n reduceAnimations,\n onMonthChange,\n minDate,\n maxDate,\n shouldDisableDate,\n disablePast,\n disableFuture\n });\n const handleDateMonthChange = React.useCallback((newDate, selectionState) => {\n const startOfMonth = utils.startOfMonth(newDate);\n const endOfMonth = utils.endOfMonth(newDate);\n const closestEnabledDate = isDateDisabled(newDate) ? findClosestEnabledDate({\n utils,\n date: newDate,\n minDate: utils.isBefore(minDate, startOfMonth) ? startOfMonth : minDate,\n maxDate: utils.isAfter(maxDate, endOfMonth) ? endOfMonth : maxDate,\n disablePast,\n disableFuture,\n isDateDisabled\n }) : newDate;\n\n if (closestEnabledDate) {\n onChange(closestEnabledDate, selectionState);\n onMonthChange == null ? void 0 : onMonthChange(startOfMonth);\n } else {\n openNext();\n changeMonth(startOfMonth);\n }\n\n changeFocusedDay(closestEnabledDate, true);\n }, [changeFocusedDay, disableFuture, disablePast, isDateDisabled, maxDate, minDate, onChange, onMonthChange, changeMonth, openNext, utils]);\n const handleDateYearChange = React.useCallback((newDate, selectionState) => {\n const startOfYear = utils.startOfYear(newDate);\n const endOfYear = utils.endOfYear(newDate);\n const closestEnabledDate = isDateDisabled(newDate) ? findClosestEnabledDate({\n utils,\n date: newDate,\n minDate: utils.isBefore(minDate, startOfYear) ? startOfYear : minDate,\n maxDate: utils.isAfter(maxDate, endOfYear) ? endOfYear : maxDate,\n disablePast,\n disableFuture,\n isDateDisabled\n }) : newDate;\n\n if (closestEnabledDate) {\n onChange(closestEnabledDate, selectionState);\n onYearChange == null ? void 0 : onYearChange(closestEnabledDate);\n } else {\n openNext();\n changeMonth(startOfYear);\n }\n\n changeFocusedDay(closestEnabledDate, true);\n }, [changeFocusedDay, disableFuture, disablePast, isDateDisabled, maxDate, minDate, onChange, onYearChange, openNext, utils, changeMonth]);\n const onSelectedDayChange = React.useCallback((day, isFinish) => {\n if (date && day) {\n // If there is a date already selected, then we want to keep its time\n return onChange(utils.mergeDateAndTime(day, date), isFinish);\n }\n\n return onChange(day, isFinish);\n }, [utils, date, onChange]);\n React.useEffect(() => {\n if (date) {\n changeMonth(date);\n }\n }, [date]); // eslint-disable-line\n\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n const baseDateValidationProps = {\n disablePast,\n disableFuture,\n maxDate,\n minDate\n }; // When disabled, limit the view to the selected date\n\n const minDateWithDisabled = disabled && date || minDate;\n const maxDateWithDisabled = disabled && date || maxDate;\n const commonViewProps = {\n disableHighlightToday,\n readOnly,\n disabled\n };\n const gridLabelId = `${id}-grid-label`;\n const [internalFocusedView, setInternalFocusedView] = useControlled({\n name: 'DayPicker',\n state: 'focusedView',\n controlled: focusedView,\n default: autoFocus ? openView : null\n });\n const hasFocus = internalFocusedView !== null;\n const handleFocusedViewChange = useEventCallback(eventView => newHasFocus => {\n if (onFocusedViewChange) {\n // Use the calendar or clock logic\n onFocusedViewChange(eventView)(newHasFocus);\n return;\n } // If alone, do the local modifications\n\n\n if (newHasFocus) {\n setInternalFocusedView(eventView);\n } else {\n setInternalFocusedView(prevView => prevView === eventView ? null : prevView);\n }\n });\n const prevOpenViewRef = React.useRef(openView);\n React.useEffect(() => {\n // Set focus to the button when switching from a view to another\n if (prevOpenViewRef.current === openView) {\n return;\n }\n\n prevOpenViewRef.current = openView;\n handleFocusedViewChange(openView)(true);\n }, [openView, handleFocusedViewChange]);\n return /*#__PURE__*/_jsxs(CalendarPickerRoot, {\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsx(PickersCalendarHeader, _extends({}, other, {\n views: views,\n openView: openView,\n currentMonth: calendarState.currentMonth,\n onViewChange: setOpenView,\n onMonthChange: (newMonth, direction) => handleChangeMonth({\n newMonth,\n direction\n }),\n minDate: minDateWithDisabled,\n maxDate: maxDateWithDisabled,\n disabled: disabled,\n disablePast: disablePast,\n disableFuture: disableFuture,\n reduceAnimations: reduceAnimations,\n labelId: gridLabelId\n })), /*#__PURE__*/_jsx(CalendarPickerViewTransitionContainer, {\n reduceAnimations: reduceAnimations,\n className: classes.viewTransitionContainer,\n transKey: openView,\n ownerState: ownerState,\n children: /*#__PURE__*/_jsxs(\"div\", {\n children: [openView === 'year' && /*#__PURE__*/_jsx(YearPicker, _extends({}, other, baseDateValidationProps, commonViewProps, {\n autoFocus: autoFocus,\n date: date,\n onChange: handleDateYearChange,\n shouldDisableYear: shouldDisableYear,\n hasFocus: hasFocus,\n onFocusedViewChange: handleFocusedViewChange('year')\n })), openView === 'month' && /*#__PURE__*/_jsx(MonthPicker, _extends({}, baseDateValidationProps, commonViewProps, {\n autoFocus: autoFocus,\n hasFocus: hasFocus,\n className: className,\n date: date,\n onChange: handleDateMonthChange,\n shouldDisableMonth: shouldDisableMonth,\n onFocusedViewChange: handleFocusedViewChange('month')\n })), openView === 'day' && /*#__PURE__*/_jsx(DayPicker, _extends({}, other, calendarState, baseDateValidationProps, commonViewProps, {\n autoFocus: autoFocus,\n onMonthSwitchingAnimationEnd: onMonthSwitchingAnimationEnd,\n onFocusedDayChange: changeFocusedDay,\n reduceAnimations: reduceAnimations,\n selectedDays: [date],\n onSelectedDaysChange: onSelectedDayChange,\n shouldDisableDate: shouldDisableDate,\n hasFocus: hasFocus,\n onFocusedViewChange: handleFocusedViewChange('day'),\n gridLabelId: gridLabelId\n }))]\n })\n })]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? CalendarPicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n autoFocus: PropTypes.bool,\n classes: PropTypes.object,\n className: PropTypes.string,\n\n /**\n * Overrideable components.\n * @default {}\n */\n components: PropTypes.object,\n\n /**\n * The props used for each component slot.\n * @default {}\n */\n componentsProps: PropTypes.object,\n date: PropTypes.any,\n\n /**\n * Formats the day of week displayed in the calendar header.\n * @param {string} day The day of week provided by the adapter's method `getWeekdays`.\n * @returns {string} The name to display.\n * @default (day) => day.charAt(0).toUpperCase()\n */\n dayOfWeekFormatter: PropTypes.func,\n\n /**\n * Default calendar month displayed when `value={null}`.\n */\n defaultCalendarMonth: PropTypes.any,\n\n /**\n * If `true`, the picker and text field are disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true` future days are disabled.\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true`, today's date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * If `true` past days are disabled.\n * @default false\n */\n disablePast: PropTypes.bool,\n focusedView: PropTypes.oneOf(['day', 'month', 'year']),\n\n /**\n * Get aria-label text for switching between views button.\n * @param {CalendarPickerView} currentView The view from which we want to get the button text.\n * @returns {string} The label of the view.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n */\n getViewSwitchingButtonText: PropTypes.func,\n\n /**\n * Left arrow icon aria-label text.\n * @deprecated\n */\n leftArrowButtonText: PropTypes.string,\n\n /**\n * If `true` renders `LoadingComponent` in calendar instead of calendar view.\n * Can be used to preload information and show it in calendar.\n * @default false\n */\n loading: PropTypes.bool,\n\n /**\n * Maximal selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Minimal selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n\n /**\n * Callback fired on date change\n */\n onChange: PropTypes.func.isRequired,\n onFocusedViewChange: PropTypes.func,\n\n /**\n * Callback firing on month change @DateIOType.\n * @template TDate\n * @param {TDate} month The new month.\n * @returns {void|Promise} -\n */\n onMonthChange: PropTypes.func,\n\n /**\n * Callback fired on view change.\n * @param {CalendarPickerView} view The new view.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Callback firing on year change @DateIOType.\n * @template TDate\n * @param {TDate} year The new year.\n */\n onYearChange: PropTypes.func,\n\n /**\n * Initially open view.\n * @default 'day'\n */\n openTo: PropTypes.oneOf(['day', 'month', 'year']),\n\n /**\n * Make picker read only.\n * @default false\n */\n readOnly: PropTypes.bool,\n\n /**\n * Disable heavy animations.\n * @default typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent)\n */\n reduceAnimations: PropTypes.bool,\n\n /**\n * Custom renderer for day. Check the [PickersDay](https://mui.com/x/api/date-pickers/pickers-day/) component.\n * @template TDate\n * @param {TDate} day The day to render.\n * @param {Array} selectedDays The days currently selected.\n * @param {PickersDayProps} pickersDayProps The props of the day to render.\n * @returns {JSX.Element} The element representing the day.\n */\n renderDay: PropTypes.func,\n\n /**\n * Component displaying when passed `loading` true.\n * @returns {React.ReactNode} The node to render when loading.\n * @default () => ...\n */\n renderLoading: PropTypes.func,\n\n /**\n * Right arrow icon aria-label text.\n * @deprecated\n */\n rightArrowButtonText: PropTypes.string,\n\n /**\n * Disable specific date. @DateIOType\n * @template TDate\n * @param {TDate} day The date to test.\n * @returns {boolean} Returns `true` if the date should be disabled.\n */\n shouldDisableDate: PropTypes.func,\n\n /**\n * Disable specific months dynamically.\n * Works like `shouldDisableDate` but for month selection view @DateIOType.\n * @template TDate\n * @param {TDate} month The month to check.\n * @returns {boolean} If `true` the month will be disabled.\n */\n shouldDisableMonth: PropTypes.func,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n * @template TDate\n * @param {TDate} year The year to test.\n * @returns {boolean} Returns `true` if the year should be disabled.\n */\n shouldDisableYear: PropTypes.func,\n\n /**\n * If `true`, days that have `outsideCurrentMonth={true}` are displayed.\n * @default false\n */\n showDaysOutsideCurrentMonth: PropTypes.bool,\n\n /**\n * Controlled open view.\n */\n view: PropTypes.oneOf(['day', 'month', 'year']),\n\n /**\n * Views for calendar picker.\n * @default ['year', 'day']\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year']).isRequired)\n} : void 0;","import { useReducer, useRef, useLayoutEffect, useEffect } from 'react';\n\nconst useRifm = props => {\n const [, refresh] = useReducer(c => c + 1, 0);\n const valueRef = useRef(null);\n const {\n replace,\n append\n } = props;\n const userValue = replace ? replace(props.format(props.value)) : props.format(props.value); // state of delete button see comments below about inputType support\n\n const isDeleleteButtonDownRef = useRef(false);\n\n const onChange = evt => {\n if (process.env.NODE_ENV !== 'production') {\n if (evt.target.type === 'number') {\n console.error('Rifm does not support input type=number, use type=tel instead.');\n return;\n }\n\n if (evt.target.type === 'date') {\n console.error('Rifm does not support input type=date.');\n return;\n }\n }\n\n const eventValue = evt.target.value;\n valueRef.current = [eventValue, // eventValue\n evt.target, // input\n eventValue.length > userValue.length, // isSizeIncreaseOperation\n isDeleleteButtonDownRef.current, // isDeleleteButtonDown\n userValue === props.format(eventValue) // isNoOperation\n ];\n\n if (process.env.NODE_ENV !== 'production') {\n const formattedEventValue = props.format(eventValue);\n\n if (eventValue !== formattedEventValue && eventValue.toLowerCase() === formattedEventValue.toLowerCase()) {\n console.warn('Case enforcement does not work with format. Please use replace={value => value.toLowerCase()} instead');\n }\n } // The main trick is to update underlying input with non formatted value (= eventValue)\n // that allows us to calculate right cursor position after formatting (see getCursorPosition)\n // then we format new value and call props.onChange with masked/formatted value\n // and finally we are able to set cursor position into right place\n\n\n refresh();\n }; // React prints warn on server in non production mode about useLayoutEffect usage\n // in both cases it's noop\n\n\n if (process.env.NODE_ENV === 'production' || typeof window !== 'undefined') {\n useLayoutEffect(() => {\n if (valueRef.current == null) return;\n let [eventValue, input, isSizeIncreaseOperation, isDeleleteButtonDown, // No operation means that value itself hasn't been changed, BTW cursor, selection etc can be changed\n isNoOperation] = valueRef.current;\n valueRef.current = null; // this usually occurs on deleting special symbols like ' here 123'123.00\n // in case of isDeleleteButtonDown cursor should move differently vs backspace\n\n const deleteWasNoOp = isDeleleteButtonDown && isNoOperation;\n const valueAfterSelectionStart = eventValue.slice(input.selectionStart);\n const acceptedCharIndexAfterDelete = valueAfterSelectionStart.search(props.accept || /\\d/g);\n const charsToSkipAfterDelete = acceptedCharIndexAfterDelete !== -1 ? acceptedCharIndexAfterDelete : 0; // Create string from only accepted symbols\n\n const clean = str => (str.match(props.accept || /\\d/g) || []).join('');\n\n const valueBeforeSelectionStart = clean(eventValue.substr(0, input.selectionStart)); // trying to find cursor position in formatted value having knowledge about valueBeforeSelectionStart\n // This works because we assume that format doesn't change the order of accepted symbols.\n // Imagine we have formatter which adds ' symbol between numbers, and by default we refuse all non numeric symbols\n // for example we had input = 1'2|'4 (| means cursor position) then user entered '3' symbol\n // inputValue = 1'23'|4 so valueBeforeSelectionStart = 123 and formatted value = 1'2'3'4\n // calling getCursorPosition(\"1'2'3'4\") will give us position after 3, 1'2'3|'4\n // so for formatting just this function to determine cursor position after formatting is enough\n // with masking we need to do some additional checks see `mask` below\n\n const getCursorPosition = val => {\n let start = 0;\n let cleanPos = 0;\n\n for (let i = 0; i !== valueBeforeSelectionStart.length; ++i) {\n let newPos = val.indexOf(valueBeforeSelectionStart[i], start) + 1;\n let newCleanPos = clean(val).indexOf(valueBeforeSelectionStart[i], cleanPos) + 1; // this skips position change if accepted symbols order was broken\n // For example fixes edge case with fixed point numbers:\n // You have '0|.00', then press 1, it becomes 01|.00 and after format 1.00, this breaks our assumption\n // that order of accepted symbols is not changed after format,\n // so here we don't update start position if other accepted symbols was inbetween current and new position\n\n if (newCleanPos - cleanPos > 1) {\n newPos = start;\n newCleanPos = cleanPos;\n }\n\n cleanPos = Math.max(newCleanPos, cleanPos);\n start = Math.max(start, newPos);\n }\n\n return start;\n }; // Masking part, for masks if size of mask is above some value\n // we need to replace symbols instead of do nothing as like in format\n\n\n if (props.mask === true && isSizeIncreaseOperation && !isNoOperation) {\n let start = getCursorPosition(eventValue);\n const c = clean(eventValue.substr(start))[0];\n start = eventValue.indexOf(c, start);\n eventValue = `${eventValue.substr(0, start)}${eventValue.substr(start + 1)}`;\n }\n\n let formattedValue = props.format(eventValue);\n\n if (append != null && // cursor at the end\n input.selectionStart === eventValue.length && !isNoOperation) {\n if (isSizeIncreaseOperation) {\n formattedValue = append(formattedValue);\n } else {\n // If after delete last char is special character and we use append\n // delete it too\n // was: \"12-3|\" backspace pressed, then should be \"12|\"\n if (clean(formattedValue.slice(-1)) === '') {\n formattedValue = formattedValue.slice(0, -1);\n }\n }\n }\n\n const replacedValue = replace ? replace(formattedValue) : formattedValue;\n\n if (userValue === replacedValue) {\n // if nothing changed for formatted value, just refresh so userValue will be used at render\n refresh();\n } else {\n props.onChange(replacedValue);\n }\n\n return () => {\n let start = getCursorPosition(formattedValue); // Visually improves working with masked values,\n // like cursor jumping over refused symbols\n // as an example date mask: was \"5|1-24-3\" then user pressed \"6\"\n // it becomes \"56-|12-43\" with this code, and \"56|-12-43\" without\n\n if (props.mask != null && (isSizeIncreaseOperation || isDeleleteButtonDown && !deleteWasNoOp)) {\n while (formattedValue[start] && clean(formattedValue[start]) === '') {\n start += 1;\n }\n }\n\n input.selectionStart = input.selectionEnd = start + (deleteWasNoOp ? 1 + charsToSkipAfterDelete : 0);\n };\n });\n }\n\n useEffect(() => {\n // until https://developer.mozilla.org/en-US/docs/Web/API/InputEvent/inputType will be supported\n // by all major browsers (now supported by: +chrome, +safari, ?edge, !firefox)\n // there is no way I found to distinguish in onChange\n // backspace or delete was called in some situations\n // firefox track https://bugzilla.mozilla.org/show_bug.cgi?id=1447239\n const handleKeyDown = evt => {\n if (evt.code === 'Delete') {\n isDeleleteButtonDownRef.current = true;\n }\n };\n\n const handleKeyUp = evt => {\n if (evt.code === 'Delete') {\n isDeleleteButtonDownRef.current = false;\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n document.addEventListener('keyup', handleKeyUp);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('keyup', handleKeyUp);\n };\n }, []);\n return {\n value: valueRef.current != null ? valueRef.current[0] : userValue,\n onChange\n };\n};\nconst Rifm = props => {\n const renderProps = useRifm(props);\n return props.children(renderProps);\n};\n\nexport { Rifm, useRifm };\n","export const getDisplayDate = (utils, rawValue, inputFormat) => {\n const date = utils.date(rawValue);\n const isEmpty = rawValue === null;\n\n if (isEmpty) {\n return '';\n }\n\n return utils.isValid(date) ? utils.formatByString( // TODO: should `isValid` narrow `TDate | null` to `NonNullable`?\n // Either we allow `TDate | null` to be valid and guard against calling `formatByString` with `null`.\n // Or we ensure `formatByString` is callable with `null`.\n date, inputFormat) : '';\n};\nconst MASK_USER_INPUT_SYMBOL = '_';\nconst staticDateWith2DigitTokens = '2019-11-21T22:30:00.000';\nconst staticDateWith1DigitTokens = '2019-01-01T09:00:00.000';\nexport function getMaskFromCurrentFormat(mask, format, acceptRegex, utils) {\n if (mask) {\n return mask;\n }\n\n const formattedDateWith1Digit = utils.formatByString(utils.date(staticDateWith1DigitTokens), format);\n const inferredFormatPatternWith1Digits = formattedDateWith1Digit.replace(acceptRegex, MASK_USER_INPUT_SYMBOL);\n const inferredFormatPatternWith2Digits = utils.formatByString(utils.date(staticDateWith2DigitTokens), format).replace(acceptRegex, '_');\n\n if (inferredFormatPatternWith1Digits === inferredFormatPatternWith2Digits) {\n return inferredFormatPatternWith1Digits;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n console.warn([`Mask does not support numbers with variable length such as 'M'.`, `Either use numbers with fix length or disable mask feature with 'disableMaskedInput' prop`, `Falling down to uncontrolled no-mask input.`].join('\\n'));\n }\n\n return '';\n}\nexport function checkMaskIsValidForCurrentFormat(mask, format, acceptRegex, utils) {\n if (!mask) {\n return false;\n }\n\n const formattedDateWith1Digit = utils.formatByString(utils.date(staticDateWith1DigitTokens), format);\n const inferredFormatPatternWith1Digits = formattedDateWith1Digit.replace(acceptRegex, MASK_USER_INPUT_SYMBOL);\n const inferredFormatPatternWith2Digits = utils.formatByString(utils.date(staticDateWith2DigitTokens), format).replace(acceptRegex, '_');\n const isMaskValid = inferredFormatPatternWith2Digits === inferredFormatPatternWith1Digits && mask === inferredFormatPatternWith2Digits;\n\n if (!isMaskValid && utils.lib !== 'luxon' && process.env.NODE_ENV !== 'production') {\n if (format.includes('MMM')) {\n console.warn([`Mask does not support literals such as 'MMM'.`, `Either use numbers with fix length or disable mask feature with 'disableMaskedInput' prop`, `Falling down to uncontrolled no-mask input.`].join('\\n'));\n } else if (inferredFormatPatternWith2Digits && inferredFormatPatternWith2Digits !== inferredFormatPatternWith1Digits) {\n console.warn([`Mask does not support numbers with variable length such as 'M'.`, `Either use numbers with fix length or disable mask feature with 'disableMaskedInput' prop`, `Falling down to uncontrolled no-mask input.`].join('\\n'));\n } else if (mask) {\n console.warn([`The mask \"${mask}\" you passed is not valid for the format used ${format}.`, `Falling down to uncontrolled no-mask input.`].join('\\n'));\n }\n }\n\n return isMaskValid;\n}\nexport const maskedDateFormatter = (mask, acceptRegexp) => value => {\n let outputCharIndex = 0;\n return value.split('').map((char, inputCharIndex) => {\n acceptRegexp.lastIndex = 0;\n\n if (outputCharIndex > mask.length - 1) {\n return '';\n }\n\n const maskChar = mask[outputCharIndex];\n const nextMaskChar = mask[outputCharIndex + 1];\n const acceptedChar = acceptRegexp.test(char) ? char : '';\n const formattedChar = maskChar === MASK_USER_INPUT_SYMBOL ? acceptedChar : maskChar + acceptedChar;\n outputCharIndex += formattedChar.length;\n const isLastCharacter = inputCharIndex === value.length - 1;\n\n if (isLastCharacter && nextMaskChar && nextMaskChar !== MASK_USER_INPUT_SYMBOL) {\n // when cursor at the end of mask part (e.g. month) prerender next symbol \"21\" -> \"21/\"\n return formattedChar ? formattedChar + nextMaskChar : '';\n }\n\n return formattedChar;\n }).join('');\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useRifm } from 'rifm';\nimport { useUtils } from './useUtils';\nimport { maskedDateFormatter, getDisplayDate, checkMaskIsValidForCurrentFormat, getMaskFromCurrentFormat } from '../utils/text-field-helper';\nexport const useMaskedInput = ({\n acceptRegex = /[\\d]/gi,\n disabled,\n disableMaskedInput,\n ignoreInvalidInputs,\n inputFormat,\n inputProps,\n label,\n mask,\n onChange,\n rawValue,\n readOnly,\n rifmFormatter,\n TextFieldProps,\n validationError\n}) => {\n const utils = useUtils();\n const formatHelperText = utils.getFormatHelperText(inputFormat);\n const {\n shouldUseMaskedInput,\n maskToUse\n } = React.useMemo(() => {\n // formatting of dates is a quite slow thing, so do not make useless .format calls\n if (disableMaskedInput) {\n return {\n shouldUseMaskedInput: false,\n maskToUse: ''\n };\n }\n\n const computedMaskToUse = getMaskFromCurrentFormat(mask, inputFormat, acceptRegex, utils);\n return {\n shouldUseMaskedInput: checkMaskIsValidForCurrentFormat(computedMaskToUse, inputFormat, acceptRegex, utils),\n maskToUse: computedMaskToUse\n };\n }, [acceptRegex, disableMaskedInput, inputFormat, mask, utils]);\n const formatter = React.useMemo(() => shouldUseMaskedInput && maskToUse ? maskedDateFormatter(maskToUse, acceptRegex) : st => st, [acceptRegex, maskToUse, shouldUseMaskedInput]); // TODO: Implement with controlled vs uncontrolled `rawValue`\n\n const parsedValue = rawValue === null ? null : utils.date(rawValue); // Track the value of the input\n\n const [innerInputValue, setInnerInputValue] = React.useState(parsedValue); // control the input text\n\n const [innerDisplayedInputValue, setInnerDisplayedInputValue] = React.useState(getDisplayDate(utils, rawValue, inputFormat)); // Inspired from autocomplete: https://github.com/mui/material-ui/blob/2c89d036dc2e16f100528f161600dffc83241768/packages/mui-base/src/AutocompleteUnstyled/useAutocomplete.js#L185:L201\n\n const prevRawValue = React.useRef();\n const prevLocale = React.useRef(utils.locale);\n const prevInputFormat = React.useRef(inputFormat);\n React.useEffect(() => {\n const rawValueHasChanged = rawValue !== prevRawValue.current;\n const localeHasChanged = utils.locale !== prevLocale.current;\n const inputFormatHasChanged = inputFormat !== prevInputFormat.current;\n prevRawValue.current = rawValue;\n prevLocale.current = utils.locale;\n prevInputFormat.current = inputFormat;\n\n if (!rawValueHasChanged && !localeHasChanged && !inputFormatHasChanged) {\n return;\n }\n\n const newParsedValue = rawValue === null ? null : utils.date(rawValue);\n const isAcceptedValue = rawValue === null || utils.isValid(newParsedValue);\n let innerEqualsParsed = innerInputValue === null && newParsedValue === null; // equal by being both null\n\n if (innerInputValue !== null && newParsedValue !== null) {\n const areEqual = utils.isEqual(innerInputValue, newParsedValue);\n\n if (areEqual) {\n innerEqualsParsed = true;\n } else {\n const diff = Math.abs(utils.getDiff(innerInputValue, newParsedValue)); // diff in ms\n\n innerEqualsParsed = diff === 0 ? areEqual // if no diff, use equal to test the time-zone\n : diff < 1000; // accept a difference bellow 1s\n }\n }\n\n if (!localeHasChanged && !inputFormatHasChanged && (!isAcceptedValue || innerEqualsParsed)) {\n return;\n } // When dev set a new valid value, we trust them\n\n\n const newDisplayDate = getDisplayDate(utils, rawValue, inputFormat);\n setInnerInputValue(newParsedValue);\n setInnerDisplayedInputValue(newDisplayDate);\n }, [utils, rawValue, inputFormat, innerInputValue]);\n\n const handleChange = text => {\n const finalString = text === '' || text === mask ? '' : text;\n setInnerDisplayedInputValue(finalString);\n const date = finalString === null ? null : utils.parse(finalString, inputFormat);\n\n if (ignoreInvalidInputs && !utils.isValid(date)) {\n return;\n }\n\n setInnerInputValue(date);\n onChange(date, finalString || undefined);\n };\n\n const rifmProps = useRifm({\n value: innerDisplayedInputValue,\n onChange: handleChange,\n format: rifmFormatter || formatter\n });\n const inputStateArgs = shouldUseMaskedInput ? rifmProps : {\n value: innerDisplayedInputValue,\n onChange: event => {\n handleChange(event.currentTarget.value);\n }\n };\n return _extends({\n label,\n disabled,\n error: validationError,\n inputProps: _extends({}, inputStateArgs, {\n disabled,\n placeholder: formatHelperText,\n readOnly,\n type: shouldUseMaskedInput ? 'tel' : 'text'\n }, inputProps)\n }, TextFieldProps);\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"components\", \"disableOpenPicker\", \"getOpenDialogAriaText\", \"InputAdornmentProps\", \"InputProps\", \"inputRef\", \"openPicker\", \"OpenPickerButtonProps\", \"renderInput\"];\nimport * as React from 'react';\nimport IconButton from '@mui/material/IconButton';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport { useLocaleText, useUtils } from '../hooks/useUtils';\nimport { Calendar } from './icons';\nimport { useMaskedInput } from '../hooks/useMaskedInput';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const KeyboardDateInput = /*#__PURE__*/React.forwardRef(function KeyboardDateInput(props, ref) {\n const {\n className,\n components = {},\n disableOpenPicker,\n getOpenDialogAriaText: getOpenDialogAriaTextProp,\n InputAdornmentProps,\n InputProps,\n inputRef,\n openPicker,\n OpenPickerButtonProps,\n renderInput\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const localeText = useLocaleText();\n const getOpenDialogAriaText = getOpenDialogAriaTextProp != null ? getOpenDialogAriaTextProp : localeText.openDatePickerDialogue;\n const utils = useUtils();\n const textFieldProps = useMaskedInput(other);\n const adornmentPosition = (InputAdornmentProps == null ? void 0 : InputAdornmentProps.position) || 'end';\n const OpenPickerIcon = components.OpenPickerIcon || Calendar;\n return renderInput(_extends({\n ref,\n inputRef,\n className\n }, textFieldProps, {\n InputProps: _extends({}, InputProps, {\n [`${adornmentPosition}Adornment`]: disableOpenPicker ? undefined : /*#__PURE__*/_jsx(InputAdornment, _extends({\n position: adornmentPosition\n }, InputAdornmentProps, {\n children: /*#__PURE__*/_jsx(IconButton, _extends({\n edge: adornmentPosition,\n disabled: other.disabled || other.readOnly,\n \"aria-label\": getOpenDialogAriaText(other.rawValue, utils)\n }, OpenPickerButtonProps, {\n onClick: openPicker,\n children: /*#__PURE__*/_jsx(OpenPickerIcon, {})\n }))\n }))\n })\n }));\n});","import * as React from 'react';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { arrayIncludes } from '../utils/utils';\n\nfunction getOrientation() {\n if (typeof window === 'undefined') {\n return 'portrait';\n }\n\n if (window.screen && window.screen.orientation && window.screen.orientation.angle) {\n return Math.abs(window.screen.orientation.angle) === 90 ? 'landscape' : 'portrait';\n } // Support IOS safari\n\n\n if (window.orientation) {\n return Math.abs(Number(window.orientation)) === 90 ? 'landscape' : 'portrait';\n }\n\n return 'portrait';\n}\n\nexport const useIsLandscape = (views, customOrientation) => {\n const [orientation, setOrientation] = React.useState(getOrientation);\n useEnhancedEffect(() => {\n const eventHandler = () => {\n setOrientation(getOrientation());\n };\n\n window.addEventListener('orientationchange', eventHandler);\n return () => {\n window.removeEventListener('orientationchange', eventHandler);\n };\n }, []);\n\n if (arrayIncludes(views, ['hours', 'minutes', 'seconds'])) {\n // could not display 13:34:44 in landscape mode\n return false;\n }\n\n const orientationToUse = customOrientation || orientation;\n return orientationToUse === 'landscape';\n};","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getCalendarOrClockPickerUtilityClass(slot) {\n return generateUtilityClass('MuiCalendarOrClockPicker', slot);\n}\nexport const calendarOrClockPickerClasses = generateUtilityClasses('MuiCalendarOrClockPicker', ['root', 'mobileKeyboardInputView']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"className\", \"parsedValue\", \"DateInputProps\", \"isMobileKeyboardViewOpen\", \"onDateChange\", \"onViewChange\", \"openTo\", \"orientation\", \"showToolbar\", \"toggleMobileKeyboardView\", \"ToolbarComponent\", \"toolbarFormat\", \"toolbarPlaceholder\", \"toolbarTitle\", \"views\", \"dateRangeIcon\", \"timeIcon\", \"hideTabs\", \"classes\"];\nimport * as React from 'react';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { useViews } from '../../hooks/useViews';\nimport { ClockPicker } from '../../../ClockPicker/ClockPicker';\nimport { CalendarPicker } from '../../../CalendarPicker/CalendarPicker';\nimport { KeyboardDateInput } from '../KeyboardDateInput';\nimport { useIsLandscape } from '../../hooks/useIsLandscape';\nimport { WrapperVariantContext } from '../wrappers/WrapperVariantContext';\nimport { PickerViewRoot } from '../PickerViewRoot';\nimport { useFocusManagement } from './useFocusManagement';\nimport { getCalendarOrClockPickerUtilityClass } from './calendarOrClockPickerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n mobileKeyboardInputView: ['mobileKeyboardInputView']\n };\n return composeClasses(slots, getCalendarOrClockPickerUtilityClass, classes);\n};\n\nexport const MobileKeyboardInputView = styled('div', {\n name: 'MuiCalendarOrClockPicker',\n slot: 'MobileKeyboardInputView',\n overridesResolver: (_, styles) => styles.mobileKeyboardInputView\n})({\n padding: '16px 24px'\n});\nconst PickerRoot = styled('div', {\n name: 'MuiCalendarOrClockPicker',\n slot: 'Root',\n overridesResolver: (_, styles) => styles.root\n})(({\n ownerState\n}) => _extends({\n display: 'flex',\n flexDirection: 'column'\n}, ownerState.isLandscape && {\n flexDirection: 'row'\n}));\nconst MobileKeyboardTextFieldProps = {\n fullWidth: true\n};\n\nconst isDatePickerView = view => view === 'year' || view === 'month' || view === 'day';\n\nconst isTimePickerView = view => view === 'hours' || view === 'minutes' || view === 'seconds';\n\nlet warnedOnceNotValidOpenTo = false;\nexport function CalendarOrClockPicker(inProps) {\n var _other$components, _other$componentsProp;\n\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCalendarOrClockPicker'\n });\n\n const {\n autoFocus,\n parsedValue,\n DateInputProps,\n isMobileKeyboardViewOpen,\n onDateChange,\n onViewChange,\n openTo,\n orientation,\n showToolbar,\n toggleMobileKeyboardView,\n ToolbarComponent = () => null,\n toolbarFormat,\n toolbarPlaceholder,\n toolbarTitle,\n views,\n dateRangeIcon,\n timeIcon,\n hideTabs\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const TabsComponent = (_other$components = other.components) == null ? void 0 : _other$components.Tabs;\n const isLandscape = useIsLandscape(views, orientation);\n const wrapperVariant = React.useContext(WrapperVariantContext);\n const classes = useUtilityClasses(props);\n const toShowToolbar = showToolbar != null ? showToolbar : wrapperVariant !== 'desktop';\n const showTabs = !hideTabs && typeof window !== 'undefined' && window.innerHeight > 667;\n const handleDateChange = React.useCallback((newDate, selectionState) => {\n onDateChange(newDate, wrapperVariant, selectionState);\n }, [onDateChange, wrapperVariant]);\n const handleViewChange = React.useCallback(newView => {\n if (isMobileKeyboardViewOpen) {\n toggleMobileKeyboardView();\n }\n\n if (onViewChange) {\n onViewChange(newView);\n }\n }, [isMobileKeyboardViewOpen, onViewChange, toggleMobileKeyboardView]);\n\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnceNotValidOpenTo && !views.includes(openTo)) {\n console.warn(`MUI: \\`openTo=\"${openTo}\"\\` is not a valid prop.`, `It must be an element of \\`views=[\"${views.join('\", \"')}\"]\\`.`);\n warnedOnceNotValidOpenTo = true;\n }\n }\n\n const {\n openView,\n setOpenView,\n handleChangeAndOpenNext\n } = useViews({\n view: undefined,\n views,\n openTo,\n onChange: handleDateChange,\n onViewChange: handleViewChange\n });\n const {\n focusedView,\n setFocusedView\n } = useFocusManagement({\n autoFocus,\n openView\n });\n return /*#__PURE__*/_jsxs(PickerRoot, {\n ownerState: {\n isLandscape\n },\n className: classes.root,\n children: [toShowToolbar && /*#__PURE__*/_jsx(ToolbarComponent, _extends({}, other, {\n views: views,\n isLandscape: isLandscape,\n parsedValue: parsedValue,\n onChange: handleDateChange,\n setOpenView: setOpenView,\n openView: openView,\n toolbarTitle: toolbarTitle,\n toolbarFormat: toolbarFormat,\n toolbarPlaceholder: toolbarPlaceholder,\n isMobileKeyboardViewOpen: isMobileKeyboardViewOpen,\n toggleMobileKeyboardView: toggleMobileKeyboardView\n })), showTabs && !!TabsComponent && /*#__PURE__*/_jsx(TabsComponent, _extends({\n dateRangeIcon: dateRangeIcon,\n timeIcon: timeIcon,\n view: openView,\n onChange: setOpenView\n }, (_other$componentsProp = other.componentsProps) == null ? void 0 : _other$componentsProp.tabs)), /*#__PURE__*/_jsx(PickerViewRoot, {\n children: isMobileKeyboardViewOpen ? /*#__PURE__*/_jsx(MobileKeyboardInputView, {\n className: classes.mobileKeyboardInputView,\n children: /*#__PURE__*/_jsx(KeyboardDateInput, _extends({}, DateInputProps, {\n ignoreInvalidInputs: true,\n disableOpenPicker: true,\n TextFieldProps: MobileKeyboardTextFieldProps\n }))\n }) : /*#__PURE__*/_jsxs(React.Fragment, {\n children: [isDatePickerView(openView) && /*#__PURE__*/_jsx(CalendarPicker, _extends({\n autoFocus: autoFocus,\n date: parsedValue,\n onViewChange: setOpenView,\n onChange: handleChangeAndOpenNext,\n view: openView // Unclear why the predicate `isDatePickerView` does not imply the casted type\n ,\n views: views.filter(isDatePickerView),\n focusedView: focusedView,\n onFocusedViewChange: setFocusedView\n }, other)), isTimePickerView(openView) && /*#__PURE__*/_jsx(ClockPicker, _extends({}, other, {\n autoFocus: autoFocus,\n date: parsedValue,\n view: openView // Unclear why the predicate `isDatePickerView` does not imply the casted type\n ,\n views: views.filter(isTimePickerView),\n onChange: handleChangeAndOpenNext,\n onViewChange: setOpenView,\n showViewSwitcher: wrapperVariant === 'desktop'\n }))]\n })\n })]\n });\n}","import * as React from 'react';\nexport const useFocusManagement = ({\n autoFocus,\n openView\n}) => {\n const [focusedView, setFocusedView] = React.useState(autoFocus ? openView : null);\n const setFocusedViewCallback = React.useCallback(view => newHasFocus => {\n if (newHasFocus) {\n setFocusedView(view);\n } else {\n setFocusedView(prevFocusedView => view === prevFocusedView ? null : prevFocusedView);\n }\n }, []);\n return {\n focusedView,\n setFocusedView: setFocusedViewCallback\n };\n};","import { createIsAfterIgnoreDatePart } from '../../utils/time-utils';\nimport { useValidation } from './useValidation';\nexport const validateTime = ({\n adapter,\n value,\n props\n}) => {\n const {\n minTime,\n maxTime,\n minutesStep,\n shouldDisableTime,\n disableIgnoringDatePartForTimeValidation\n } = props;\n const date = adapter.utils.date(value);\n const isAfter = createIsAfterIgnoreDatePart(disableIgnoringDatePartForTimeValidation, adapter.utils);\n\n if (value === null) {\n return null;\n }\n\n switch (true) {\n case !adapter.utils.isValid(value):\n return 'invalidDate';\n\n case Boolean(minTime && isAfter(minTime, date)):\n return 'minTime';\n\n case Boolean(maxTime && isAfter(date, maxTime)):\n return 'maxTime';\n\n case Boolean(shouldDisableTime && shouldDisableTime(adapter.utils.getHours(date), 'hours')):\n return 'shouldDisableTime-hours';\n\n case Boolean(shouldDisableTime && shouldDisableTime(adapter.utils.getMinutes(date), 'minutes')):\n return 'shouldDisableTime-minutes';\n\n case Boolean(shouldDisableTime && shouldDisableTime(adapter.utils.getSeconds(date), 'seconds')):\n return 'shouldDisableTime-seconds';\n\n case Boolean(minutesStep && adapter.utils.getMinutes(date) % minutesStep !== 0):\n return 'minutesStep';\n\n default:\n return null;\n }\n};\n\nconst isSameTimeError = (a, b) => a === b;\n\nexport const useTimeValidation = props => useValidation(props, validateTime, isSameTimeError);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"minDate\", \"maxDate\", \"disableFuture\", \"shouldDisableDate\", \"disablePast\"];\nimport { useValidation } from './useValidation';\nimport { validateDate } from './useDateValidation';\nimport { validateTime } from './useTimeValidation';\nexport const validateDateTime = ({\n props,\n value,\n adapter\n}) => {\n const {\n minDate,\n maxDate,\n disableFuture,\n shouldDisableDate,\n disablePast\n } = props,\n timeValidationProps = _objectWithoutPropertiesLoose(props, _excluded);\n\n const dateValidationResult = validateDate({\n adapter,\n value,\n props: {\n minDate,\n maxDate,\n disableFuture,\n shouldDisableDate,\n disablePast\n }\n });\n\n if (dateValidationResult !== null) {\n return dateValidationResult;\n }\n\n return validateTime({\n adapter,\n value,\n props: timeValidationProps\n });\n};\n\nconst isSameDateTimeError = (a, b) => a === b;\n\nexport function useDateTimeValidation(props) {\n return useValidation(props, validateDateTime, isSameDateTimeError);\n}","import * as React from 'react';\nimport { useLocalizationContext } from '../useUtils';\nexport function useValidation(props, validate, isSameError) {\n const {\n value,\n onError\n } = props;\n const adapter = useLocalizationContext();\n const previousValidationErrorRef = React.useRef(null);\n const validationError = validate({\n adapter,\n value,\n props\n });\n React.useEffect(() => {\n if (onError && !isSameError(validationError, previousValidationErrorRef.current)) {\n onError(validationError, value);\n }\n\n previousValidationErrorRef.current = validationError;\n }, [isSameError, onError, previousValidationErrorRef, validationError, value]);\n return validationError;\n}","import * as React from 'react';\nexport const useOpenState = ({\n open,\n onOpen,\n onClose\n}) => {\n const isControllingOpenProp = React.useRef(typeof open === 'boolean').current;\n const [openState, setIsOpenState] = React.useState(false); // It is required to update inner state in useEffect in order to avoid situation when\n // Our component is not mounted yet, but `open` state is set to `true` (e.g. initially opened)\n\n React.useEffect(() => {\n if (isControllingOpenProp) {\n if (typeof open !== 'boolean') {\n throw new Error('You must not mix controlling and uncontrolled mode for `open` prop');\n }\n\n setIsOpenState(open);\n }\n }, [isControllingOpenProp, open]);\n const setIsOpen = React.useCallback(newIsOpen => {\n if (!isControllingOpenProp) {\n setIsOpenState(newIsOpen);\n }\n\n if (newIsOpen && onOpen) {\n onOpen();\n }\n\n if (!newIsOpen && onClose) {\n onClose();\n }\n }, [isControllingOpenProp, onOpen, onClose]);\n return {\n isOpen: openState,\n setIsOpen\n };\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useOpenState } from './useOpenState';\nimport { useUtils } from './useUtils';\nexport const usePickerState = (props, valueManager) => {\n const {\n onAccept,\n onChange,\n value,\n closeOnSelect\n } = props;\n const utils = useUtils();\n const {\n isOpen,\n setIsOpen\n } = useOpenState(props);\n const parsedDateValue = React.useMemo(() => valueManager.parseInput(utils, value), [valueManager, utils, value]);\n const [lastValidDateValue, setLastValidDateValue] = React.useState(parsedDateValue);\n const [dateState, setDateState] = React.useState(() => ({\n committed: parsedDateValue,\n draft: parsedDateValue,\n resetFallback: parsedDateValue\n }));\n const setDate = React.useCallback(params => {\n setDateState(prev => {\n switch (params.action) {\n case 'setAll':\n case 'acceptAndClose':\n {\n return {\n draft: params.value,\n committed: params.value,\n resetFallback: params.value\n };\n }\n\n case 'setCommitted':\n {\n return _extends({}, prev, {\n draft: params.value,\n committed: params.value\n });\n }\n\n case 'setDraft':\n {\n return _extends({}, prev, {\n draft: params.value\n });\n }\n\n default:\n {\n return prev;\n }\n }\n });\n\n if (params.forceOnChangeCall || !params.skipOnChangeCall && !valueManager.areValuesEqual(utils, dateState.committed, params.value)) {\n onChange(params.value);\n }\n\n if (params.action === 'acceptAndClose') {\n setIsOpen(false);\n\n if (onAccept && !valueManager.areValuesEqual(utils, dateState.resetFallback, params.value)) {\n onAccept(params.value);\n }\n }\n }, [onAccept, onChange, setIsOpen, dateState, utils, valueManager]);\n React.useEffect(() => {\n if (utils.isValid(parsedDateValue)) {\n setLastValidDateValue(parsedDateValue);\n }\n }, [utils, parsedDateValue]);\n React.useEffect(() => {\n if (isOpen) {\n // Update all dates in state to equal the current prop value\n setDate({\n action: 'setAll',\n value: parsedDateValue,\n skipOnChangeCall: true\n });\n }\n }, [isOpen]); // eslint-disable-line react-hooks/exhaustive-deps\n // Set the draft and committed date to equal the new prop value.\n\n if (!valueManager.areValuesEqual(utils, dateState.committed, parsedDateValue)) {\n setDate({\n action: 'setCommitted',\n value: parsedDateValue,\n skipOnChangeCall: true\n });\n }\n\n const wrapperProps = React.useMemo(() => ({\n open: isOpen,\n onClear: () => {\n // Reset all date in state to the empty value and close picker.\n setDate({\n value: valueManager.emptyValue,\n action: 'acceptAndClose',\n // force `onChange` in cases like input (value) === `Invalid date`\n forceOnChangeCall: !valueManager.areValuesEqual(utils, value, valueManager.emptyValue)\n });\n },\n onAccept: () => {\n // Set all date in state to equal the current draft value and close picker.\n setDate({\n value: dateState.draft,\n action: 'acceptAndClose',\n // force `onChange` in cases like input (value) === `Invalid date`\n forceOnChangeCall: !valueManager.areValuesEqual(utils, value, parsedDateValue)\n });\n },\n onDismiss: () => {\n // Set all dates in state to equal the last committed date.\n // e.g. Reset the state to the last committed value.\n setDate({\n value: dateState.committed,\n action: 'acceptAndClose'\n });\n },\n onCancel: () => {\n // Set all dates in state to equal the last accepted date and close picker.\n // e.g. Reset the state to the last accepted value\n setDate({\n value: dateState.resetFallback,\n action: 'acceptAndClose'\n });\n },\n onSetToday: () => {\n // Set all dates in state to equal today and close picker.\n setDate({\n value: valueManager.getTodayValue(utils),\n action: 'acceptAndClose'\n });\n }\n }), [setDate, isOpen, utils, dateState, valueManager, value, parsedDateValue]); // Mobile keyboard view is a special case.\n // When it's open picker should work like closed, because we are just showing text field\n\n const [isMobileKeyboardViewOpen, setMobileKeyboardViewOpen] = React.useState(false);\n const pickerProps = React.useMemo(() => ({\n parsedValue: dateState.draft,\n isMobileKeyboardViewOpen,\n toggleMobileKeyboardView: () => setMobileKeyboardViewOpen(!isMobileKeyboardViewOpen),\n onDateChange: (newDate, wrapperVariant, selectionState = 'partial') => {\n switch (selectionState) {\n case 'shallow':\n {\n // Update the `draft` state but do not fire `onChange`\n return setDate({\n action: 'setDraft',\n value: newDate,\n skipOnChangeCall: true\n });\n }\n\n case 'partial':\n {\n // Update the `draft` state and fire `onChange`\n return setDate({\n action: 'setDraft',\n value: newDate\n });\n }\n\n case 'finish':\n {\n if (closeOnSelect != null ? closeOnSelect : wrapperVariant === 'desktop') {\n // Set all dates in state to equal the new date and close picker.\n return setDate({\n value: newDate,\n action: 'acceptAndClose'\n });\n } // Updates the `committed` state and fire `onChange`\n\n\n return setDate({\n value: newDate,\n action: 'setCommitted'\n });\n }\n\n default:\n {\n throw new Error('MUI: Invalid selectionState passed to `onDateChange`');\n }\n }\n }\n }), [setDate, isMobileKeyboardViewOpen, dateState.draft, closeOnSelect]);\n const handleInputChange = React.useCallback((newParsedValue, keyboardInputValue) => {\n const cleanParsedValue = valueManager.valueReducer ? valueManager.valueReducer(utils, lastValidDateValue, newParsedValue) : newParsedValue;\n onChange(cleanParsedValue, keyboardInputValue);\n }, [onChange, valueManager, lastValidDateValue, utils]);\n const inputProps = React.useMemo(() => ({\n onChange: handleInputChange,\n open: isOpen,\n rawValue: value,\n openPicker: () => setIsOpen(true)\n }), [handleInputChange, isOpen, value, setIsOpen]);\n const pickerState = {\n pickerProps,\n inputProps,\n wrapperProps\n };\n React.useDebugValue(pickerState, () => ({\n MuiPickerState: {\n dateState,\n other: pickerState\n }\n }));\n return pickerState;\n};","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getDateTimePickerTabsUtilityClass(slot) {\n return generateUtilityClass('MuiDateTimePickerTabs', slot);\n}\nexport const dateTimePickerTabsClasses = generateUtilityClasses('MuiDateTimePickerTabs', ['root']);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport Tab from '@mui/material/Tab';\nimport Tabs, { tabsClasses } from '@mui/material/Tabs';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { Time, DateRange } from '../internals/components/icons';\nimport { WrapperVariantContext } from '../internals/components/wrappers/WrapperVariantContext';\nimport { useLocaleText } from '../internals/hooks/useUtils';\nimport { getDateTimePickerTabsUtilityClass } from './dateTimePickerTabsClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst viewToTab = openView => {\n if (['day', 'month', 'year'].includes(openView)) {\n return 'date';\n }\n\n return 'time';\n};\n\nconst tabToView = tab => {\n if (tab === 'date') {\n return 'day';\n }\n\n return 'hours';\n};\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getDateTimePickerTabsUtilityClass, classes);\n};\n\nconst DateTimePickerTabsRoot = styled(Tabs, {\n name: 'MuiDateTimePickerTabs',\n slot: 'Root',\n overridesResolver: (_, styles) => styles.root\n})(({\n ownerState,\n theme\n}) => _extends({\n boxShadow: `0 -1px 0 0 inset ${theme.palette.divider}`\n}, ownerState.wrapperVariant === 'desktop' && {\n order: 1,\n boxShadow: `0 1px 0 0 inset ${theme.palette.divider}`,\n [`& .${tabsClasses.indicator}`]: {\n bottom: 'auto',\n top: 0\n }\n}));\n\nconst DateTimePickerTabs = function DateTimePickerTabs(inProps) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDateTimePickerTabs'\n });\n const {\n dateRangeIcon = /*#__PURE__*/_jsx(DateRange, {}),\n onChange,\n timeIcon = /*#__PURE__*/_jsx(Time, {}),\n view\n } = props;\n const localeText = useLocaleText();\n const wrapperVariant = React.useContext(WrapperVariantContext);\n\n const ownerState = _extends({}, props, {\n wrapperVariant\n });\n\n const classes = useUtilityClasses(ownerState);\n\n const handleChange = (event, value) => {\n onChange(tabToView(value));\n };\n\n return /*#__PURE__*/_jsxs(DateTimePickerTabsRoot, {\n ownerState: ownerState,\n variant: \"fullWidth\",\n value: viewToTab(view),\n onChange: handleChange,\n className: classes.root,\n children: [/*#__PURE__*/_jsx(Tab, {\n value: \"date\",\n \"aria-label\": localeText.dateTableLabel,\n icon: /*#__PURE__*/_jsx(React.Fragment, {\n children: dateRangeIcon\n })\n }), /*#__PURE__*/_jsx(Tab, {\n value: \"time\",\n \"aria-label\": localeText.timeTableLabel,\n icon: /*#__PURE__*/_jsx(React.Fragment, {\n children: timeIcon\n })\n })]\n });\n};\n\nprocess.env.NODE_ENV !== \"production\" ? DateTimePickerTabs.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * Date tab icon.\n * @default DateRange\n */\n dateRangeIcon: PropTypes.node,\n\n /**\n * Callback called when tab is clicked\n * @param {CalendarOrClockPickerView} view Picker view that was clicked\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Time tab icon.\n * @default Time\n */\n timeIcon: PropTypes.node,\n\n /**\n * Open picker view\n */\n view: PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']).isRequired\n} : void 0;\nexport { DateTimePickerTabs };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onChange\", \"PaperProps\", \"PopperProps\", \"ToolbarComponent\", \"TransitionComponent\", \"value\", \"components\", \"componentsProps\", \"hideTabs\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useDateTimePickerDefaultizedProps, dateTimePickerValueManager } from '../DateTimePicker/shared';\nimport { DateTimePickerToolbar } from '../DateTimePicker/DateTimePickerToolbar';\nimport { DesktopWrapper } from '../internals/components/wrappers/DesktopWrapper';\nimport { CalendarOrClockPicker } from '../internals/components/CalendarOrClockPicker';\nimport { useDateTimeValidation } from '../internals/hooks/validation/useDateTimeValidation';\nimport { KeyboardDateInput } from '../internals/components/KeyboardDateInput';\nimport { usePickerState } from '../internals/hooks/usePickerState';\nimport { DateTimePickerTabs } from '../DateTimePicker/DateTimePickerTabs';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n *\n * Demos:\n *\n * - [Date Time Picker](https://mui.com/x/react-date-pickers/date-time-picker/)\n *\n * API:\n *\n * - [DesktopDateTimePicker API](https://mui.com/x/api/date-pickers/desktop-date-time-picker/)\n */\nexport const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDateTimePicker(inProps, ref) {\n const props = useDateTimePickerDefaultizedProps(inProps, 'MuiDesktopDateTimePicker');\n const validationError = useDateTimeValidation(props) !== null;\n const {\n pickerProps,\n inputProps,\n wrapperProps\n } = usePickerState(props, dateTimePickerValueManager);\n\n const {\n PaperProps,\n PopperProps,\n ToolbarComponent = DateTimePickerToolbar,\n TransitionComponent,\n components: providedComponents,\n componentsProps,\n hideTabs = true\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const components = React.useMemo(() => _extends({\n Tabs: DateTimePickerTabs\n }, providedComponents), [providedComponents]);\n\n const AllDateInputProps = _extends({}, inputProps, other, {\n components,\n componentsProps,\n ref,\n validationError\n });\n\n return /*#__PURE__*/_jsx(DesktopWrapper, _extends({}, wrapperProps, {\n DateInputProps: AllDateInputProps,\n KeyboardDateInputComponent: KeyboardDateInput,\n PopperProps: PopperProps,\n PaperProps: PaperProps,\n TransitionComponent: TransitionComponent,\n components: components,\n componentsProps: componentsProps,\n children: /*#__PURE__*/_jsx(CalendarOrClockPicker, _extends({}, pickerProps, {\n autoFocus: true,\n toolbarTitle: props.label || props.toolbarTitle,\n ToolbarComponent: ToolbarComponent,\n DateInputProps: AllDateInputProps,\n components: components,\n componentsProps: componentsProps,\n hideTabs: hideTabs\n }, other))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? DesktopDateTimePicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Regular expression to detect \"accepted\" symbols.\n * @default /\\dap/gi\n */\n acceptRegex: PropTypes.instanceOf(RegExp),\n\n /**\n * 12h/24h view for hour selection clock.\n * @default `utils.is12HourCycleInCurrentLocale()`\n */\n ampm: PropTypes.bool,\n\n /**\n * Display ampm controls under the clock (instead of in the toolbar).\n * @default false\n */\n ampmInClock: PropTypes.bool,\n autoFocus: PropTypes.bool,\n children: PropTypes.node,\n\n /**\n * className applied to the root component.\n */\n className: PropTypes.string,\n\n /**\n * If `true` the popup or dialog will immediately close after submitting full date.\n * @default `true` for Desktop, `false` for Mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).\n */\n closeOnSelect: PropTypes.bool,\n\n /**\n * Overrideable components.\n * @default {}\n */\n components: PropTypes.object,\n\n /**\n * The props used for each component slot.\n * @default {}\n */\n componentsProps: PropTypes.object,\n\n /**\n * Date tab icon.\n */\n dateRangeIcon: PropTypes.node,\n\n /**\n * Formats the day of week displayed in the calendar header.\n * @param {string} day The day of week provided by the adapter's method `getWeekdays`.\n * @returns {string} The name to display.\n * @default (day) => day.charAt(0).toUpperCase()\n */\n dayOfWeekFormatter: PropTypes.func,\n\n /**\n * Default calendar month displayed when `value={null}`.\n */\n defaultCalendarMonth: PropTypes.any,\n\n /**\n * If `true`, the picker and text field are disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true` future days are disabled.\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true`, today's date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * Do not ignore date part when validating min/max time.\n * @default false\n */\n disableIgnoringDatePartForTimeValidation: PropTypes.bool,\n\n /**\n * Disable mask on the keyboard, this should be used rarely. Consider passing proper mask for your format.\n * @default false\n */\n disableMaskedInput: PropTypes.bool,\n\n /**\n * Do not render open picker button (renders only text field with validation).\n * @default false\n */\n disableOpenPicker: PropTypes.bool,\n\n /**\n * If `true` past days are disabled.\n * @default false\n */\n disablePast: PropTypes.bool,\n\n /**\n * Accessible text that helps user to understand which time and view is selected.\n * @template TDate\n * @param {ClockPickerView} view The current view rendered.\n * @param {TDate | null} time The current time.\n * @param {MuiPickersAdapter} adapter The current date adapter.\n * @returns {string} The clock label.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n * @default (\n * view: ClockView,\n * time: TDate | null,\n * adapter: MuiPickersAdapter,\n * ) =>\n * `Select ${view}. ${\n * time === null ? 'No time selected' : `Selected time is ${adapter.format(time, 'fullTime')}`\n * }`\n */\n getClockLabelText: PropTypes.func,\n\n /**\n * Get aria-label text for control that opens picker dialog. Aria-label text must include selected date. @DateIOType\n * @template TInputDate, TDate\n * @param {TInputDate} date The date from which we want to add an aria-text.\n * @param {MuiPickersAdapter} utils The utils to manipulate the date.\n * @returns {string} The aria-text to render inside the dialog.\n * @default (date, utils) => `Choose date, selected date is ${utils.format(utils.date(date), 'fullDate')}`\n */\n getOpenDialogAriaText: PropTypes.func,\n\n /**\n * Get aria-label text for switching between views button.\n * @param {CalendarPickerView} currentView The view from which we want to get the button text.\n * @returns {string} The label of the view.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n */\n getViewSwitchingButtonText: PropTypes.func,\n\n /**\n * Toggles visibility of date time switching tabs\n * @default false for mobile, true for desktop\n */\n hideTabs: PropTypes.bool,\n ignoreInvalidInputs: PropTypes.bool,\n\n /**\n * Props to pass to keyboard input adornment.\n */\n InputAdornmentProps: PropTypes.object,\n\n /**\n * Format string.\n */\n inputFormat: PropTypes.string,\n InputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.object\n })]),\n label: PropTypes.node,\n\n /**\n * Left arrow icon aria-label text.\n * @deprecated\n */\n leftArrowButtonText: PropTypes.string,\n\n /**\n * If `true` renders `LoadingComponent` in calendar instead of calendar view.\n * Can be used to preload information and show it in calendar.\n * @default false\n */\n loading: PropTypes.bool,\n\n /**\n * Custom mask. Can be used to override generate from format. (e.g. `__/__/____ __:__` or `__/__/____ __:__ _M`).\n */\n mask: PropTypes.string,\n\n /**\n * Maximal selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Maximal selectable moment of time with binding to date, to set max time in each day use `maxTime`.\n */\n maxDateTime: PropTypes.any,\n\n /**\n * Max time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n maxTime: PropTypes.any,\n\n /**\n * Minimal selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n\n /**\n * Minimal selectable moment of time with binding to date, to set min time in each day use `minTime`.\n */\n minDateTime: PropTypes.any,\n\n /**\n * Min time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n minTime: PropTypes.any,\n\n /**\n * Step over minutes.\n * @default 1\n */\n minutesStep: PropTypes.number,\n\n /**\n * Callback fired when date is accepted @DateIOType.\n * @template TValue\n * @param {TValue} value The value that was just accepted.\n */\n onAccept: PropTypes.func,\n\n /**\n * Callback fired when the value (the selected date) changes @DateIOType.\n * @template TValue\n * @param {TValue} value The new parsed value.\n * @param {string} keyboardInputValue The current value of the keyboard input.\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Callback fired when the popup requests to be closed.\n * Use in controlled mode (see open).\n */\n onClose: PropTypes.func,\n\n /**\n * Callback that fired when input value or new `value` prop validation returns **new** validation error (or value is valid after error).\n * In case of validation error detected `reason` prop return non-null value and `TextField` must be displayed in `error` state.\n * This can be used to render appropriate form error.\n *\n * [Read the guide](https://next.material-ui-pickers.dev/guides/forms) about form integration and error displaying.\n * @DateIOType\n *\n * @template TError, TInputValue\n * @param {TError} reason The reason why the current value is not valid.\n * @param {TInputValue} value The invalid value.\n */\n onError: PropTypes.func,\n\n /**\n * Callback firing on month change @DateIOType.\n * @template TDate\n * @param {TDate} month The new month.\n * @returns {void|Promise} -\n */\n onMonthChange: PropTypes.func,\n\n /**\n * Callback fired when the popup requests to be opened.\n * Use in controlled mode (see open).\n */\n onOpen: PropTypes.func,\n\n /**\n * Callback fired on view change.\n * @param {CalendarOrClockPickerView} view The new view.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Callback firing on year change @DateIOType.\n * @template TDate\n * @param {TDate} year The new year.\n */\n onYearChange: PropTypes.func,\n\n /**\n * Control the popup or dialog open state.\n */\n open: PropTypes.bool,\n\n /**\n * Props to pass to keyboard adornment button.\n */\n OpenPickerButtonProps: PropTypes.object,\n\n /**\n * First view to show.\n * Must be a valid option from `views` list\n * @default 'day'\n */\n openTo: PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']),\n\n /**\n * Force rendering in particular orientation.\n */\n orientation: PropTypes.oneOf(['landscape', 'portrait']),\n\n /**\n * Paper props passed down to [Paper](https://mui.com/material-ui/api/paper/) component.\n */\n PaperProps: PropTypes.object,\n\n /**\n * Popper props passed down to [Popper](https://mui.com/material-ui/api/popper/) component.\n */\n PopperProps: PropTypes.object,\n\n /**\n * Make picker read only.\n * @default false\n */\n readOnly: PropTypes.bool,\n\n /**\n * Disable heavy animations.\n * @default typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent)\n */\n reduceAnimations: PropTypes.bool,\n\n /**\n * Custom renderer for day. Check the [PickersDay](https://mui.com/x/api/date-pickers/pickers-day/) component.\n * @template TDate\n * @param {TDate} day The day to render.\n * @param {Array} selectedDays The days currently selected.\n * @param {PickersDayProps} pickersDayProps The props of the day to render.\n * @returns {JSX.Element} The element representing the day.\n */\n renderDay: PropTypes.func,\n\n /**\n * The `renderInput` prop allows you to customize the rendered input.\n * The `props` argument of this render prop contains props of [TextField](https://mui.com/material-ui/api/text-field/#props) that you need to forward.\n * Pay specific attention to the `ref` and `inputProps` keys.\n * @example ```jsx\n * renderInput={props => }\n * ````\n * @param {MuiTextFieldPropsType} props The props of the input.\n * @returns {React.ReactNode} The node to render as the input.\n */\n renderInput: PropTypes.func.isRequired,\n\n /**\n * Component displaying when passed `loading` true.\n * @returns {React.ReactNode} The node to render when loading.\n * @default () => ...\n */\n renderLoading: PropTypes.func,\n\n /**\n * Custom formatter to be passed into Rifm component.\n * @param {string} str The un-formatted string.\n * @returns {string} The formatted string.\n */\n rifmFormatter: PropTypes.func,\n\n /**\n * Right arrow icon aria-label text.\n * @deprecated\n */\n rightArrowButtonText: PropTypes.string,\n\n /**\n * Disable specific date. @DateIOType\n * @template TDate\n * @param {TDate} day The date to test.\n * @returns {boolean} Returns `true` if the date should be disabled.\n */\n shouldDisableDate: PropTypes.func,\n\n /**\n * Disable specific months dynamically.\n * Works like `shouldDisableDate` but for month selection view @DateIOType.\n * @template TDate\n * @param {TDate} month The month to check.\n * @returns {boolean} If `true` the month will be disabled.\n */\n shouldDisableMonth: PropTypes.func,\n\n /**\n * Dynamically check if time is disabled or not.\n * If returns `false` appropriate time point will ot be acceptable.\n * @param {number} timeValue The value to check.\n * @param {ClockPickerView} clockType The clock type of the timeValue.\n * @returns {boolean} Returns `true` if the time should be disabled\n */\n shouldDisableTime: PropTypes.func,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n * @template TDate\n * @param {TDate} year The year to test.\n * @returns {boolean} Returns `true` if the year should be disabled.\n */\n shouldDisableYear: PropTypes.func,\n\n /**\n * If `true`, days that have `outsideCurrentMonth={true}` are displayed.\n * @default false\n */\n showDaysOutsideCurrentMonth: PropTypes.bool,\n\n /**\n * If `true`, show the toolbar even in desktop mode.\n */\n showToolbar: PropTypes.bool,\n\n /**\n * Time tab icon.\n */\n timeIcon: PropTypes.node,\n\n /**\n * Component that will replace default toolbar renderer.\n * @default DateTimePickerToolbar\n */\n ToolbarComponent: PropTypes.elementType,\n\n /**\n * Date format, that is displaying in toolbar.\n */\n toolbarFormat: PropTypes.string,\n\n /**\n * Mobile picker date value placeholder, displaying if `value` === `null`.\n * @default '–'\n */\n toolbarPlaceholder: PropTypes.node,\n\n /**\n * Mobile picker title, displaying in the toolbar.\n * @default 'Select date & time'\n */\n toolbarTitle: PropTypes.node,\n\n /**\n * Custom component for popper [Transition](https://mui.com/material-ui/transitions/#transitioncomponent-prop).\n */\n TransitionComponent: PropTypes.elementType,\n\n /**\n * The value of the picker.\n */\n value: PropTypes.any,\n\n /**\n * Array of views to show.\n * @default ['year', 'day', 'hours', 'minutes']\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']).isRequired)\n} : void 0;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getDialogContentUtilityClass(slot) {\n return generateUtilityClass('MuiDialogContent', slot);\n}\nconst dialogContentClasses = generateUtilityClasses('MuiDialogContent', ['root', 'dividers']);\nexport default dialogContentClasses;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getDialogTitleUtilityClass(slot) {\n return generateUtilityClass('MuiDialogTitle', slot);\n}\nconst dialogTitleClasses = generateUtilityClasses('MuiDialogTitle', ['root']);\nexport default dialogTitleClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"dividers\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getDialogContentUtilityClass } from './dialogContentClasses';\nimport dialogTitleClasses from '../DialogTitle/dialogTitleClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n dividers\n } = ownerState;\n const slots = {\n root: ['root', dividers && 'dividers']\n };\n return composeClasses(slots, getDialogContentUtilityClass, classes);\n};\nconst DialogContentRoot = styled('div', {\n name: 'MuiDialogContent',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.dividers && styles.dividers];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n flex: '1 1 auto',\n // Add iOS momentum scrolling for iOS < 13.0\n WebkitOverflowScrolling: 'touch',\n overflowY: 'auto',\n padding: '20px 24px'\n}, ownerState.dividers ? {\n padding: '16px 24px',\n borderTop: `1px solid ${(theme.vars || theme).palette.divider}`,\n borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`\n} : {\n [`.${dialogTitleClasses.root} + &`]: {\n paddingTop: 0\n }\n}));\nconst DialogContent = /*#__PURE__*/React.forwardRef(function DialogContent(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDialogContent'\n });\n const {\n className,\n dividers = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n dividers\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(DialogContentRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogContent.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * Display the top and bottom dividers.\n * @default false\n */\n dividers: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default DialogContent;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getDialogUtilityClass(slot) {\n return generateUtilityClass('MuiDialog', slot);\n}\nconst dialogClasses = generateUtilityClasses('MuiDialog', ['root', 'scrollPaper', 'scrollBody', 'container', 'paper', 'paperScrollPaper', 'paperScrollBody', 'paperWidthFalse', 'paperWidthXs', 'paperWidthSm', 'paperWidthMd', 'paperWidthLg', 'paperWidthXl', 'paperFullWidth', 'paperFullScreen']);\nexport default dialogClasses;","import * as React from 'react';\nconst DialogContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n DialogContext.displayName = 'DialogContext';\n}\nexport default DialogContext;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"aria-describedby\", \"aria-labelledby\", \"BackdropComponent\", \"BackdropProps\", \"children\", \"className\", \"disableEscapeKeyDown\", \"fullScreen\", \"fullWidth\", \"maxWidth\", \"onBackdropClick\", \"onClose\", \"open\", \"PaperComponent\", \"PaperProps\", \"scroll\", \"TransitionComponent\", \"transitionDuration\", \"TransitionProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport { unstable_useId as useId } from '@mui/utils';\nimport capitalize from '../utils/capitalize';\nimport Modal from '../Modal';\nimport Fade from '../Fade';\nimport Paper from '../Paper';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport dialogClasses, { getDialogUtilityClass } from './dialogClasses';\nimport DialogContext from './DialogContext';\nimport Backdrop from '../Backdrop';\nimport useTheme from '../styles/useTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DialogBackdrop = styled(Backdrop, {\n name: 'MuiDialog',\n slot: 'Backdrop',\n overrides: (props, styles) => styles.backdrop\n})({\n // Improve scrollable dialog support.\n zIndex: -1\n});\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n scroll,\n maxWidth,\n fullWidth,\n fullScreen\n } = ownerState;\n const slots = {\n root: ['root'],\n container: ['container', `scroll${capitalize(scroll)}`],\n paper: ['paper', `paperScroll${capitalize(scroll)}`, `paperWidth${capitalize(String(maxWidth))}`, fullWidth && 'paperFullWidth', fullScreen && 'paperFullScreen']\n };\n return composeClasses(slots, getDialogUtilityClass, classes);\n};\nconst DialogRoot = styled(Modal, {\n name: 'MuiDialog',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n '@media print': {\n // Use !important to override the Modal inline-style.\n position: 'absolute !important'\n }\n});\nconst DialogContainer = styled('div', {\n name: 'MuiDialog',\n slot: 'Container',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.container, styles[`scroll${capitalize(ownerState.scroll)}`]];\n }\n})(({\n ownerState\n}) => _extends({\n height: '100%',\n '@media print': {\n height: 'auto'\n },\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0\n}, ownerState.scroll === 'paper' && {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n}, ownerState.scroll === 'body' && {\n overflowY: 'auto',\n overflowX: 'hidden',\n textAlign: 'center',\n '&:after': {\n content: '\"\"',\n display: 'inline-block',\n verticalAlign: 'middle',\n height: '100%',\n width: '0'\n }\n}));\nconst DialogPaper = styled(Paper, {\n name: 'MuiDialog',\n slot: 'Paper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.paper, styles[`scrollPaper${capitalize(ownerState.scroll)}`], styles[`paperWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fullWidth && styles.paperFullWidth, ownerState.fullScreen && styles.paperFullScreen];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n margin: 32,\n position: 'relative',\n overflowY: 'auto',\n // Fix IE11 issue, to remove at some point.\n '@media print': {\n overflowY: 'visible',\n boxShadow: 'none'\n }\n}, ownerState.scroll === 'paper' && {\n display: 'flex',\n flexDirection: 'column',\n maxHeight: 'calc(100% - 64px)'\n}, ownerState.scroll === 'body' && {\n display: 'inline-block',\n verticalAlign: 'middle',\n textAlign: 'left' // 'initial' doesn't work on IE11\n}, !ownerState.maxWidth && {\n maxWidth: 'calc(100% - 64px)'\n}, ownerState.maxWidth === 'xs' && {\n maxWidth: theme.breakpoints.unit === 'px' ? Math.max(theme.breakpoints.values.xs, 444) : `max(${theme.breakpoints.values.xs}${theme.breakpoints.unit}, 444px)`,\n [`&.${dialogClasses.paperScrollBody}`]: {\n [theme.breakpoints.down(Math.max(theme.breakpoints.values.xs, 444) + 32 * 2)]: {\n maxWidth: 'calc(100% - 64px)'\n }\n }\n}, ownerState.maxWidth && ownerState.maxWidth !== 'xs' && {\n maxWidth: `${theme.breakpoints.values[ownerState.maxWidth]}${theme.breakpoints.unit}`,\n [`&.${dialogClasses.paperScrollBody}`]: {\n [theme.breakpoints.down(theme.breakpoints.values[ownerState.maxWidth] + 32 * 2)]: {\n maxWidth: 'calc(100% - 64px)'\n }\n }\n}, ownerState.fullWidth && {\n width: 'calc(100% - 64px)'\n}, ownerState.fullScreen && {\n margin: 0,\n width: '100%',\n maxWidth: '100%',\n height: '100%',\n maxHeight: 'none',\n borderRadius: 0,\n [`&.${dialogClasses.paperScrollBody}`]: {\n margin: 0,\n maxWidth: '100%'\n }\n}));\n\n/**\n * Dialogs are overlaid modal paper based components with a backdrop.\n */\nconst Dialog = /*#__PURE__*/React.forwardRef(function Dialog(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDialog'\n });\n const theme = useTheme();\n const defaultTransitionDuration = {\n enter: theme.transitions.duration.enteringScreen,\n exit: theme.transitions.duration.leavingScreen\n };\n const {\n 'aria-describedby': ariaDescribedby,\n 'aria-labelledby': ariaLabelledbyProp,\n BackdropComponent,\n BackdropProps,\n children,\n className,\n disableEscapeKeyDown = false,\n fullScreen = false,\n fullWidth = false,\n maxWidth = 'sm',\n onBackdropClick,\n onClose,\n open,\n PaperComponent = Paper,\n PaperProps = {},\n scroll = 'paper',\n TransitionComponent = Fade,\n transitionDuration = defaultTransitionDuration,\n TransitionProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n disableEscapeKeyDown,\n fullScreen,\n fullWidth,\n maxWidth,\n scroll\n });\n const classes = useUtilityClasses(ownerState);\n const backdropClick = React.useRef();\n const handleMouseDown = event => {\n // We don't want to close the dialog when clicking the dialog content.\n // Make sure the event starts and ends on the same DOM element.\n backdropClick.current = event.target === event.currentTarget;\n };\n const handleBackdropClick = event => {\n // Ignore the events not coming from the \"backdrop\".\n if (!backdropClick.current) {\n return;\n }\n backdropClick.current = null;\n if (onBackdropClick) {\n onBackdropClick(event);\n }\n if (onClose) {\n onClose(event, 'backdropClick');\n }\n };\n const ariaLabelledby = useId(ariaLabelledbyProp);\n const dialogContextValue = React.useMemo(() => {\n return {\n titleId: ariaLabelledby\n };\n }, [ariaLabelledby]);\n return /*#__PURE__*/_jsx(DialogRoot, _extends({\n className: clsx(classes.root, className),\n closeAfterTransition: true,\n components: {\n Backdrop: DialogBackdrop\n },\n componentsProps: {\n backdrop: _extends({\n transitionDuration,\n as: BackdropComponent\n }, BackdropProps)\n },\n disableEscapeKeyDown: disableEscapeKeyDown,\n onClose: onClose,\n open: open,\n ref: ref,\n onClick: handleBackdropClick,\n ownerState: ownerState\n }, other, {\n children: /*#__PURE__*/_jsx(TransitionComponent, _extends({\n appear: true,\n in: open,\n timeout: transitionDuration,\n role: \"presentation\"\n }, TransitionProps, {\n children: /*#__PURE__*/_jsx(DialogContainer, {\n className: clsx(classes.container),\n onMouseDown: handleMouseDown,\n ownerState: ownerState,\n children: /*#__PURE__*/_jsx(DialogPaper, _extends({\n as: PaperComponent,\n elevation: 24,\n role: \"dialog\",\n \"aria-describedby\": ariaDescribedby,\n \"aria-labelledby\": ariaLabelledby\n }, PaperProps, {\n className: clsx(classes.paper, PaperProps.className),\n ownerState: ownerState,\n children: /*#__PURE__*/_jsx(DialogContext.Provider, {\n value: dialogContextValue,\n children: children\n })\n }))\n })\n }))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Dialog.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 id(s) of the element(s) that describe the dialog.\n */\n 'aria-describedby': PropTypes.string,\n /**\n * The id(s) of the element(s) that label the dialog.\n */\n 'aria-labelledby': PropTypes.string,\n /**\n * A backdrop component. This prop enables custom backdrop rendering.\n * @deprecated Use `slots.backdrop` instead. While this prop currently works, it will be removed in the next major version.\n * Use the `slots.backdrop` prop to make your application ready for the next version of Material UI.\n * @default styled(Backdrop, {\n * name: 'MuiModal',\n * slot: 'Backdrop',\n * overridesResolver: (props, styles) => {\n * return styles.backdrop;\n * },\n * })({\n * zIndex: -1,\n * })\n */\n BackdropComponent: PropTypes.elementType,\n /**\n * @ignore\n */\n BackdropProps: PropTypes.object,\n /**\n * Dialog children, usually the included sub-components.\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 * If `true`, hitting escape will not fire the `onClose` callback.\n * @default false\n */\n disableEscapeKeyDown: PropTypes.bool,\n /**\n * If `true`, the dialog is full-screen.\n * @default false\n */\n fullScreen: PropTypes.bool,\n /**\n * If `true`, the dialog stretches to `maxWidth`.\n *\n * Notice that the dialog width grow is limited by the default margin.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * Determine the max-width of the dialog.\n * The dialog width grows with the size of the screen.\n * Set to `false` to disable `maxWidth`.\n * @default 'sm'\n */\n maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n /**\n * Callback fired when the backdrop is clicked.\n * @deprecated Use the `onClose` prop with the `reason` argument to handle the `backdropClick` events.\n */\n onBackdropClick: PropTypes.func,\n /**\n * Callback fired when the component requests to be closed.\n *\n * @param {object} event The event source of the callback.\n * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`.\n */\n onClose: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * The component used to render the body of the dialog.\n * @default Paper\n */\n PaperComponent: PropTypes.elementType,\n /**\n * Props applied to the [`Paper`](/material-ui/api/paper/) element.\n * @default {}\n */\n PaperProps: PropTypes.object,\n /**\n * Determine the container for scrolling the dialog.\n * @default 'paper'\n */\n scroll: PropTypes.oneOf(['body', 'paper']),\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 component used for the transition.\n * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n * @default Fade\n */\n TransitionComponent: PropTypes.elementType,\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n * @default {\n * enter: theme.transitions.duration.enteringScreen,\n * exit: theme.transitions.duration.leavingScreen,\n * }\n */\n transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })]),\n /**\n * Props applied to the transition element.\n * By default, the element is based on this [`Transition`](http://reactcommunity.org/react-transition-group/transition/) component.\n */\n TransitionProps: PropTypes.object\n} : void 0;\nexport default Dialog;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport DialogContent from '@mui/material/DialogContent';\nimport Dialog, { dialogClasses } from '@mui/material/Dialog';\nimport { styled } from '@mui/material/styles';\nimport { DIALOG_WIDTH } from '../constants/dimensions';\nimport { PickersActionBar } from '../../PickersActionBar';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst PickersModalDialogRoot = styled(Dialog)({\n [`& .${dialogClasses.container}`]: {\n outline: 0\n },\n [`& .${dialogClasses.paper}`]: {\n outline: 0,\n minWidth: DIALOG_WIDTH\n }\n});\nconst PickersModalDialogContent = styled(DialogContent)({\n '&:first-of-type': {\n padding: 0\n }\n});\nexport const PickersModalDialog = props => {\n var _components$ActionBar;\n\n const {\n children,\n DialogProps = {},\n onAccept,\n onClear,\n onDismiss,\n onCancel,\n onSetToday,\n open,\n components,\n componentsProps\n } = props;\n const ActionBar = (_components$ActionBar = components == null ? void 0 : components.ActionBar) != null ? _components$ActionBar : PickersActionBar;\n return /*#__PURE__*/_jsxs(PickersModalDialogRoot, _extends({\n open: open,\n onClose: onDismiss\n }, DialogProps, {\n children: [/*#__PURE__*/_jsx(PickersModalDialogContent, {\n children: children\n }), /*#__PURE__*/_jsx(ActionBar, _extends({\n onAccept: onAccept,\n onClear: onClear,\n onCancel: onCancel,\n onSetToday: onSetToday,\n actions: ['cancel', 'accept']\n }, componentsProps == null ? void 0 : componentsProps.actionBar))]\n }));\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"DateInputProps\", \"DialogProps\", \"onAccept\", \"onClear\", \"onDismiss\", \"onCancel\", \"onSetToday\", \"open\", \"PureDateInputComponent\", \"components\", \"componentsProps\"];\nimport * as React from 'react';\nimport { WrapperVariantContext } from './WrapperVariantContext';\nimport { PickersModalDialog } from '../PickersModalDialog';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function MobileWrapper(props) {\n const {\n children,\n DateInputProps,\n DialogProps,\n onAccept,\n onClear,\n onDismiss,\n onCancel,\n onSetToday,\n open,\n PureDateInputComponent,\n components,\n componentsProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n return /*#__PURE__*/_jsxs(WrapperVariantContext.Provider, {\n value: \"mobile\",\n children: [/*#__PURE__*/_jsx(PureDateInputComponent, _extends({\n components: components\n }, other, DateInputProps)), /*#__PURE__*/_jsx(PickersModalDialog, {\n DialogProps: DialogProps,\n onAccept: onAccept,\n onClear: onClear,\n onDismiss: onDismiss,\n onCancel: onCancel,\n onSetToday: onSetToday,\n open: open,\n components: components,\n componentsProps: componentsProps,\n children: children\n })]\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useEventCallback } from '@mui/material/utils';\nimport { onSpaceOrEnter } from '../utils/utils';\nimport { useLocaleText, useUtils } from '../hooks/useUtils';\nimport { getDisplayDate } from '../utils/text-field-helper';\n// TODO: why is this called \"Pure*\" when it's not memoized? Does \"Pure\" mean \"readonly\"?\nexport const PureDateInput = /*#__PURE__*/React.forwardRef(function PureDateInput(props, ref) {\n const {\n disabled,\n getOpenDialogAriaText: getOpenDialogAriaTextProp,\n inputFormat,\n InputProps,\n inputRef,\n label,\n openPicker: onOpen,\n rawValue,\n renderInput,\n TextFieldProps = {},\n validationError,\n className\n } = props;\n const localeText = useLocaleText(); // The prop can not be deprecated\n // Default is \"Choose date, ...\", but time pickers override it with \"Choose time, ...\"\n\n const getOpenDialogAriaText = getOpenDialogAriaTextProp != null ? getOpenDialogAriaTextProp : localeText.openDatePickerDialogue;\n const utils = useUtils();\n const PureDateInputProps = React.useMemo(() => _extends({}, InputProps, {\n readOnly: true\n }), [InputProps]);\n const inputValue = getDisplayDate(utils, rawValue, inputFormat);\n const handleOnClick = useEventCallback(event => {\n event.stopPropagation();\n onOpen();\n });\n return renderInput(_extends({\n label,\n disabled,\n ref,\n inputRef,\n error: validationError,\n InputProps: PureDateInputProps,\n className\n }, !props.readOnly && !props.disabled && {\n onClick: handleOnClick\n }, {\n inputProps: _extends({\n disabled,\n readOnly: true,\n 'aria-readonly': true,\n 'aria-label': getOpenDialogAriaText(rawValue, utils),\n value: inputValue\n }, !props.readOnly && {\n onClick: handleOnClick\n }, {\n onKeyDown: onSpaceOrEnter(onOpen)\n })\n }, TextFieldProps));\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"ToolbarComponent\", \"value\", \"onChange\", \"components\", \"componentsProps\", \"hideTabs\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useDateTimePickerDefaultizedProps, dateTimePickerValueManager } from '../DateTimePicker/shared';\nimport { DateTimePickerToolbar } from '../DateTimePicker/DateTimePickerToolbar';\nimport { MobileWrapper } from '../internals/components/wrappers/MobileWrapper';\nimport { CalendarOrClockPicker } from '../internals/components/CalendarOrClockPicker';\nimport { useDateTimeValidation } from '../internals/hooks/validation/useDateTimeValidation';\nimport { PureDateInput } from '../internals/components/PureDateInput';\nimport { usePickerState } from '../internals/hooks/usePickerState';\nimport { DateTimePickerTabs } from '../DateTimePicker/DateTimePickerTabs';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n *\n * Demos:\n *\n * - [Date Time Picker](https://mui.com/x/react-date-pickers/date-time-picker/)\n *\n * API:\n *\n * - [MobileDateTimePicker API](https://mui.com/x/api/date-pickers/mobile-date-time-picker/)\n */\nexport const MobileDateTimePicker = /*#__PURE__*/React.forwardRef(function MobileDateTimePicker(inProps, ref) {\n const props = useDateTimePickerDefaultizedProps(inProps, 'MuiMobileDateTimePicker');\n const validationError = useDateTimeValidation(props) !== null;\n const {\n pickerProps,\n inputProps,\n wrapperProps\n } = usePickerState(props, dateTimePickerValueManager); // Note that we are passing down all the value without spread.\n // It saves us >1kb gzip and make any prop available automatically on any level down.\n\n const {\n ToolbarComponent = DateTimePickerToolbar,\n components: providedComponents,\n componentsProps,\n hideTabs = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const components = React.useMemo(() => _extends({\n Tabs: DateTimePickerTabs\n }, providedComponents), [providedComponents]);\n\n const DateInputProps = _extends({}, inputProps, other, {\n components,\n componentsProps,\n ref,\n validationError\n });\n\n return /*#__PURE__*/_jsx(MobileWrapper, _extends({}, other, wrapperProps, {\n DateInputProps: DateInputProps,\n PureDateInputComponent: PureDateInput,\n components: components,\n componentsProps: componentsProps,\n children: /*#__PURE__*/_jsx(CalendarOrClockPicker, _extends({}, pickerProps, {\n autoFocus: true,\n toolbarTitle: props.label || props.toolbarTitle,\n ToolbarComponent: ToolbarComponent,\n DateInputProps: DateInputProps,\n components: components,\n componentsProps: componentsProps,\n hideTabs: hideTabs\n }, other))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? MobileDateTimePicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Regular expression to detect \"accepted\" symbols.\n * @default /\\dap/gi\n */\n acceptRegex: PropTypes.instanceOf(RegExp),\n\n /**\n * 12h/24h view for hour selection clock.\n * @default `utils.is12HourCycleInCurrentLocale()`\n */\n ampm: PropTypes.bool,\n\n /**\n * Display ampm controls under the clock (instead of in the toolbar).\n * @default false\n */\n ampmInClock: PropTypes.bool,\n autoFocus: PropTypes.bool,\n children: PropTypes.node,\n\n /**\n * className applied to the root component.\n */\n className: PropTypes.string,\n\n /**\n * If `true` the popup or dialog will immediately close after submitting full date.\n * @default `true` for Desktop, `false` for Mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).\n */\n closeOnSelect: PropTypes.bool,\n\n /**\n * Overrideable components.\n * @default {}\n */\n components: PropTypes.object,\n\n /**\n * The props used for each component slot.\n * @default {}\n */\n componentsProps: PropTypes.object,\n\n /**\n * Date tab icon.\n */\n dateRangeIcon: PropTypes.node,\n\n /**\n * Formats the day of week displayed in the calendar header.\n * @param {string} day The day of week provided by the adapter's method `getWeekdays`.\n * @returns {string} The name to display.\n * @default (day) => day.charAt(0).toUpperCase()\n */\n dayOfWeekFormatter: PropTypes.func,\n\n /**\n * Default calendar month displayed when `value={null}`.\n */\n defaultCalendarMonth: PropTypes.any,\n\n /**\n * Props applied to the [`Dialog`](https://mui.com/material-ui/api/dialog/) element.\n */\n DialogProps: PropTypes.object,\n\n /**\n * If `true`, the picker and text field are disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true` future days are disabled.\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true`, today's date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * Do not ignore date part when validating min/max time.\n * @default false\n */\n disableIgnoringDatePartForTimeValidation: PropTypes.bool,\n\n /**\n * Disable mask on the keyboard, this should be used rarely. Consider passing proper mask for your format.\n * @default false\n */\n disableMaskedInput: PropTypes.bool,\n\n /**\n * Do not render open picker button (renders only text field with validation).\n * @default false\n */\n disableOpenPicker: PropTypes.bool,\n\n /**\n * If `true` past days are disabled.\n * @default false\n */\n disablePast: PropTypes.bool,\n\n /**\n * Accessible text that helps user to understand which time and view is selected.\n * @template TDate\n * @param {ClockPickerView} view The current view rendered.\n * @param {TDate | null} time The current time.\n * @param {MuiPickersAdapter} adapter The current date adapter.\n * @returns {string} The clock label.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n * @default (\n * view: ClockView,\n * time: TDate | null,\n * adapter: MuiPickersAdapter,\n * ) =>\n * `Select ${view}. ${\n * time === null ? 'No time selected' : `Selected time is ${adapter.format(time, 'fullTime')}`\n * }`\n */\n getClockLabelText: PropTypes.func,\n\n /**\n * Get aria-label text for control that opens picker dialog. Aria-label text must include selected date. @DateIOType\n * @template TInputDate, TDate\n * @param {TInputDate} date The date from which we want to add an aria-text.\n * @param {MuiPickersAdapter} utils The utils to manipulate the date.\n * @returns {string} The aria-text to render inside the dialog.\n * @default (date, utils) => `Choose date, selected date is ${utils.format(utils.date(date), 'fullDate')}`\n */\n getOpenDialogAriaText: PropTypes.func,\n\n /**\n * Get aria-label text for switching between views button.\n * @param {CalendarPickerView} currentView The view from which we want to get the button text.\n * @returns {string} The label of the view.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n */\n getViewSwitchingButtonText: PropTypes.func,\n\n /**\n * Toggles visibility of date time switching tabs\n * @default false for mobile, true for desktop\n */\n hideTabs: PropTypes.bool,\n ignoreInvalidInputs: PropTypes.bool,\n\n /**\n * Props to pass to keyboard input adornment.\n */\n InputAdornmentProps: PropTypes.object,\n\n /**\n * Format string.\n */\n inputFormat: PropTypes.string,\n InputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.object\n })]),\n label: PropTypes.node,\n\n /**\n * Left arrow icon aria-label text.\n * @deprecated\n */\n leftArrowButtonText: PropTypes.string,\n\n /**\n * If `true` renders `LoadingComponent` in calendar instead of calendar view.\n * Can be used to preload information and show it in calendar.\n * @default false\n */\n loading: PropTypes.bool,\n\n /**\n * Custom mask. Can be used to override generate from format. (e.g. `__/__/____ __:__` or `__/__/____ __:__ _M`).\n */\n mask: PropTypes.string,\n\n /**\n * Maximal selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Maximal selectable moment of time with binding to date, to set max time in each day use `maxTime`.\n */\n maxDateTime: PropTypes.any,\n\n /**\n * Max time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n maxTime: PropTypes.any,\n\n /**\n * Minimal selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n\n /**\n * Minimal selectable moment of time with binding to date, to set min time in each day use `minTime`.\n */\n minDateTime: PropTypes.any,\n\n /**\n * Min time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n minTime: PropTypes.any,\n\n /**\n * Step over minutes.\n * @default 1\n */\n minutesStep: PropTypes.number,\n\n /**\n * Callback fired when date is accepted @DateIOType.\n * @template TValue\n * @param {TValue} value The value that was just accepted.\n */\n onAccept: PropTypes.func,\n\n /**\n * Callback fired when the value (the selected date) changes @DateIOType.\n * @template TValue\n * @param {TValue} value The new parsed value.\n * @param {string} keyboardInputValue The current value of the keyboard input.\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Callback fired when the popup requests to be closed.\n * Use in controlled mode (see open).\n */\n onClose: PropTypes.func,\n\n /**\n * Callback that fired when input value or new `value` prop validation returns **new** validation error (or value is valid after error).\n * In case of validation error detected `reason` prop return non-null value and `TextField` must be displayed in `error` state.\n * This can be used to render appropriate form error.\n *\n * [Read the guide](https://next.material-ui-pickers.dev/guides/forms) about form integration and error displaying.\n * @DateIOType\n *\n * @template TError, TInputValue\n * @param {TError} reason The reason why the current value is not valid.\n * @param {TInputValue} value The invalid value.\n */\n onError: PropTypes.func,\n\n /**\n * Callback firing on month change @DateIOType.\n * @template TDate\n * @param {TDate} month The new month.\n * @returns {void|Promise} -\n */\n onMonthChange: PropTypes.func,\n\n /**\n * Callback fired when the popup requests to be opened.\n * Use in controlled mode (see open).\n */\n onOpen: PropTypes.func,\n\n /**\n * Callback fired on view change.\n * @param {CalendarOrClockPickerView} view The new view.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Callback firing on year change @DateIOType.\n * @template TDate\n * @param {TDate} year The new year.\n */\n onYearChange: PropTypes.func,\n\n /**\n * Control the popup or dialog open state.\n */\n open: PropTypes.bool,\n\n /**\n * Props to pass to keyboard adornment button.\n */\n OpenPickerButtonProps: PropTypes.object,\n\n /**\n * First view to show.\n * Must be a valid option from `views` list\n * @default 'day'\n */\n openTo: PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']),\n\n /**\n * Force rendering in particular orientation.\n */\n orientation: PropTypes.oneOf(['landscape', 'portrait']),\n\n /**\n * Make picker read only.\n * @default false\n */\n readOnly: PropTypes.bool,\n\n /**\n * Disable heavy animations.\n * @default typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent)\n */\n reduceAnimations: PropTypes.bool,\n\n /**\n * Custom renderer for day. Check the [PickersDay](https://mui.com/x/api/date-pickers/pickers-day/) component.\n * @template TDate\n * @param {TDate} day The day to render.\n * @param {Array} selectedDays The days currently selected.\n * @param {PickersDayProps} pickersDayProps The props of the day to render.\n * @returns {JSX.Element} The element representing the day.\n */\n renderDay: PropTypes.func,\n\n /**\n * The `renderInput` prop allows you to customize the rendered input.\n * The `props` argument of this render prop contains props of [TextField](https://mui.com/material-ui/api/text-field/#props) that you need to forward.\n * Pay specific attention to the `ref` and `inputProps` keys.\n * @example ```jsx\n * renderInput={props => }\n * ````\n * @param {MuiTextFieldPropsType} props The props of the input.\n * @returns {React.ReactNode} The node to render as the input.\n */\n renderInput: PropTypes.func.isRequired,\n\n /**\n * Component displaying when passed `loading` true.\n * @returns {React.ReactNode} The node to render when loading.\n * @default () => ...\n */\n renderLoading: PropTypes.func,\n\n /**\n * Custom formatter to be passed into Rifm component.\n * @param {string} str The un-formatted string.\n * @returns {string} The formatted string.\n */\n rifmFormatter: PropTypes.func,\n\n /**\n * Right arrow icon aria-label text.\n * @deprecated\n */\n rightArrowButtonText: PropTypes.string,\n\n /**\n * Disable specific date. @DateIOType\n * @template TDate\n * @param {TDate} day The date to test.\n * @returns {boolean} Returns `true` if the date should be disabled.\n */\n shouldDisableDate: PropTypes.func,\n\n /**\n * Disable specific months dynamically.\n * Works like `shouldDisableDate` but for month selection view @DateIOType.\n * @template TDate\n * @param {TDate} month The month to check.\n * @returns {boolean} If `true` the month will be disabled.\n */\n shouldDisableMonth: PropTypes.func,\n\n /**\n * Dynamically check if time is disabled or not.\n * If returns `false` appropriate time point will ot be acceptable.\n * @param {number} timeValue The value to check.\n * @param {ClockPickerView} clockType The clock type of the timeValue.\n * @returns {boolean} Returns `true` if the time should be disabled\n */\n shouldDisableTime: PropTypes.func,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n * @template TDate\n * @param {TDate} year The year to test.\n * @returns {boolean} Returns `true` if the year should be disabled.\n */\n shouldDisableYear: PropTypes.func,\n\n /**\n * If `true`, days that have `outsideCurrentMonth={true}` are displayed.\n * @default false\n */\n showDaysOutsideCurrentMonth: PropTypes.bool,\n\n /**\n * If `true`, show the toolbar even in desktop mode.\n */\n showToolbar: PropTypes.bool,\n\n /**\n * Time tab icon.\n */\n timeIcon: PropTypes.node,\n\n /**\n * Component that will replace default toolbar renderer.\n * @default DateTimePickerToolbar\n */\n ToolbarComponent: PropTypes.elementType,\n\n /**\n * Date format, that is displaying in toolbar.\n */\n toolbarFormat: PropTypes.string,\n\n /**\n * Mobile picker date value placeholder, displaying if `value` === `null`.\n * @default '–'\n */\n toolbarPlaceholder: PropTypes.node,\n\n /**\n * Mobile picker title, displaying in the toolbar.\n * @default 'Select date & time'\n */\n toolbarTitle: PropTypes.node,\n\n /**\n * The value of the picker.\n */\n value: PropTypes.any,\n\n /**\n * Array of views to show.\n * @default ['year', 'day', 'hours', 'minutes']\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']).isRequired)\n} : void 0;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"desktopModeMediaQuery\", \"DialogProps\", \"PopperProps\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useThemeProps } from '@mui/material/styles';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport { DesktopDateTimePicker } from '../DesktopDateTimePicker';\nimport { MobileDateTimePicker } from '../MobileDateTimePicker';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n *\n * Demos:\n *\n * - [Date Time Picker](https://mui.com/x/react-date-pickers/date-time-picker/)\n * - [Pickers](https://mui.com/x/react-date-pickers/)\n *\n * API:\n *\n * - [DateTimePicker API](https://mui.com/x/api/date-pickers/date-time-picker/)\n */\nexport const DateTimePicker = /*#__PURE__*/React.forwardRef(function DateTimePicker(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDateTimePicker'\n });\n\n const {\n desktopModeMediaQuery = '@media (pointer: fine)',\n DialogProps,\n PopperProps,\n TransitionComponent\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded); // defaults to `true` in environments where `window.matchMedia` would not be available (i.e. test/jsdom)\n\n\n const isDesktop = useMediaQuery(desktopModeMediaQuery, {\n defaultMatches: true\n });\n\n if (isDesktop) {\n return /*#__PURE__*/_jsx(DesktopDateTimePicker, _extends({\n ref: ref,\n PopperProps: PopperProps,\n TransitionComponent: TransitionComponent\n }, other));\n }\n\n return /*#__PURE__*/_jsx(MobileDateTimePicker, _extends({\n ref: ref,\n DialogProps: DialogProps\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? DateTimePicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Regular expression to detect \"accepted\" symbols.\n * @default /\\dap/gi\n */\n acceptRegex: PropTypes.instanceOf(RegExp),\n\n /**\n * 12h/24h view for hour selection clock.\n * @default `utils.is12HourCycleInCurrentLocale()`\n */\n ampm: PropTypes.bool,\n\n /**\n * Display ampm controls under the clock (instead of in the toolbar).\n * @default false\n */\n ampmInClock: PropTypes.bool,\n autoFocus: PropTypes.bool,\n children: PropTypes.node,\n\n /**\n * className applied to the root component.\n */\n className: PropTypes.string,\n\n /**\n * If `true` the popup or dialog will immediately close after submitting full date.\n * @default `true` for Desktop, `false` for Mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).\n */\n closeOnSelect: PropTypes.bool,\n\n /**\n * Overrideable components.\n * @default {}\n */\n components: PropTypes.object,\n\n /**\n * The props used for each component slot.\n * @default {}\n */\n componentsProps: PropTypes.object,\n\n /**\n * Date tab icon.\n */\n dateRangeIcon: PropTypes.node,\n\n /**\n * Formats the day of week displayed in the calendar header.\n * @param {string} day The day of week provided by the adapter's method `getWeekdays`.\n * @returns {string} The name to display.\n * @default (day) => day.charAt(0).toUpperCase()\n */\n dayOfWeekFormatter: PropTypes.func,\n\n /**\n * Default calendar month displayed when `value={null}`.\n */\n defaultCalendarMonth: PropTypes.any,\n\n /**\n * CSS media query when `Mobile` mode will be changed to `Desktop`.\n * @default '@media (pointer: fine)'\n * @example '@media (min-width: 720px)' or theme.breakpoints.up(\"sm\")\n */\n desktopModeMediaQuery: PropTypes.string,\n\n /**\n * Props applied to the [`Dialog`](https://mui.com/material-ui/api/dialog/) element.\n */\n DialogProps: PropTypes.object,\n\n /**\n * If `true`, the picker and text field are disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true` future days are disabled.\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true`, today's date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * Do not ignore date part when validating min/max time.\n * @default false\n */\n disableIgnoringDatePartForTimeValidation: PropTypes.bool,\n\n /**\n * Disable mask on the keyboard, this should be used rarely. Consider passing proper mask for your format.\n * @default false\n */\n disableMaskedInput: PropTypes.bool,\n\n /**\n * Do not render open picker button (renders only text field with validation).\n * @default false\n */\n disableOpenPicker: PropTypes.bool,\n\n /**\n * If `true` past days are disabled.\n * @default false\n */\n disablePast: PropTypes.bool,\n\n /**\n * Accessible text that helps user to understand which time and view is selected.\n * @template TDate\n * @param {ClockPickerView} view The current view rendered.\n * @param {TDate | null} time The current time.\n * @param {MuiPickersAdapter} adapter The current date adapter.\n * @returns {string} The clock label.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n * @default (\n * view: ClockView,\n * time: TDate | null,\n * adapter: MuiPickersAdapter,\n * ) =>\n * `Select ${view}. ${\n * time === null ? 'No time selected' : `Selected time is ${adapter.format(time, 'fullTime')}`\n * }`\n */\n getClockLabelText: PropTypes.func,\n\n /**\n * Get aria-label text for control that opens picker dialog. Aria-label text must include selected date. @DateIOType\n * @template TInputDate, TDate\n * @param {TInputDate} date The date from which we want to add an aria-text.\n * @param {MuiPickersAdapter} utils The utils to manipulate the date.\n * @returns {string} The aria-text to render inside the dialog.\n * @default (date, utils) => `Choose date, selected date is ${utils.format(utils.date(date), 'fullDate')}`\n */\n getOpenDialogAriaText: PropTypes.func,\n\n /**\n * Get aria-label text for switching between views button.\n * @param {CalendarPickerView} currentView The view from which we want to get the button text.\n * @returns {string} The label of the view.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n */\n getViewSwitchingButtonText: PropTypes.func,\n\n /**\n * Toggles visibility of date time switching tabs\n * @default false for mobile, true for desktop\n */\n hideTabs: PropTypes.bool,\n ignoreInvalidInputs: PropTypes.bool,\n\n /**\n * Props to pass to keyboard input adornment.\n */\n InputAdornmentProps: PropTypes.object,\n\n /**\n * Format string.\n */\n inputFormat: PropTypes.string,\n InputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.object\n })]),\n label: PropTypes.node,\n\n /**\n * Left arrow icon aria-label text.\n * @deprecated\n */\n leftArrowButtonText: PropTypes.string,\n\n /**\n * If `true` renders `LoadingComponent` in calendar instead of calendar view.\n * Can be used to preload information and show it in calendar.\n * @default false\n */\n loading: PropTypes.bool,\n\n /**\n * Custom mask. Can be used to override generate from format. (e.g. `__/__/____ __:__` or `__/__/____ __:__ _M`).\n */\n mask: PropTypes.string,\n\n /**\n * Maximal selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Maximal selectable moment of time with binding to date, to set max time in each day use `maxTime`.\n */\n maxDateTime: PropTypes.any,\n\n /**\n * Max time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n maxTime: PropTypes.any,\n\n /**\n * Minimal selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n\n /**\n * Minimal selectable moment of time with binding to date, to set min time in each day use `minTime`.\n */\n minDateTime: PropTypes.any,\n\n /**\n * Min time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n minTime: PropTypes.any,\n\n /**\n * Step over minutes.\n * @default 1\n */\n minutesStep: PropTypes.number,\n\n /**\n * Callback fired when date is accepted @DateIOType.\n * @template TValue\n * @param {TValue} value The value that was just accepted.\n */\n onAccept: PropTypes.func,\n\n /**\n * Callback fired when the value (the selected date) changes @DateIOType.\n * @template TValue\n * @param {TValue} value The new parsed value.\n * @param {string} keyboardInputValue The current value of the keyboard input.\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Callback fired when the popup requests to be closed.\n * Use in controlled mode (see open).\n */\n onClose: PropTypes.func,\n\n /**\n * Callback that fired when input value or new `value` prop validation returns **new** validation error (or value is valid after error).\n * In case of validation error detected `reason` prop return non-null value and `TextField` must be displayed in `error` state.\n * This can be used to render appropriate form error.\n *\n * [Read the guide](https://next.material-ui-pickers.dev/guides/forms) about form integration and error displaying.\n * @DateIOType\n *\n * @template TError, TInputValue\n * @param {TError} reason The reason why the current value is not valid.\n * @param {TInputValue} value The invalid value.\n */\n onError: PropTypes.func,\n\n /**\n * Callback firing on month change @DateIOType.\n * @template TDate\n * @param {TDate} month The new month.\n * @returns {void|Promise} -\n */\n onMonthChange: PropTypes.func,\n\n /**\n * Callback fired when the popup requests to be opened.\n * Use in controlled mode (see open).\n */\n onOpen: PropTypes.func,\n\n /**\n * Callback fired on view change.\n * @param {CalendarOrClockPickerView} view The new view.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Callback firing on year change @DateIOType.\n * @template TDate\n * @param {TDate} year The new year.\n */\n onYearChange: PropTypes.func,\n\n /**\n * Control the popup or dialog open state.\n */\n open: PropTypes.bool,\n\n /**\n * Props to pass to keyboard adornment button.\n */\n OpenPickerButtonProps: PropTypes.object,\n\n /**\n * First view to show.\n * Must be a valid option from `views` list\n * @default 'day'\n */\n openTo: PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']),\n\n /**\n * Force rendering in particular orientation.\n */\n orientation: PropTypes.oneOf(['landscape', 'portrait']),\n\n /**\n * Paper props passed down to [Paper](https://mui.com/material-ui/api/paper/) component.\n */\n PaperProps: PropTypes.object,\n\n /**\n * Popper props passed down to [Popper](https://mui.com/material-ui/api/popper/) component.\n */\n PopperProps: PropTypes.object,\n\n /**\n * Make picker read only.\n * @default false\n */\n readOnly: PropTypes.bool,\n\n /**\n * Disable heavy animations.\n * @default typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent)\n */\n reduceAnimations: PropTypes.bool,\n\n /**\n * Custom renderer for day. Check the [PickersDay](https://mui.com/x/api/date-pickers/pickers-day/) component.\n * @template TDate\n * @param {TDate} day The day to render.\n * @param {Array} selectedDays The days currently selected.\n * @param {PickersDayProps} pickersDayProps The props of the day to render.\n * @returns {JSX.Element} The element representing the day.\n */\n renderDay: PropTypes.func,\n\n /**\n * The `renderInput` prop allows you to customize the rendered input.\n * The `props` argument of this render prop contains props of [TextField](https://mui.com/material-ui/api/text-field/#props) that you need to forward.\n * Pay specific attention to the `ref` and `inputProps` keys.\n * @example ```jsx\n * renderInput={props => }\n * ````\n * @param {MuiTextFieldPropsType} props The props of the input.\n * @returns {React.ReactNode} The node to render as the input.\n */\n renderInput: PropTypes.func.isRequired,\n\n /**\n * Component displaying when passed `loading` true.\n * @returns {React.ReactNode} The node to render when loading.\n * @default () => ...\n */\n renderLoading: PropTypes.func,\n\n /**\n * Custom formatter to be passed into Rifm component.\n * @param {string} str The un-formatted string.\n * @returns {string} The formatted string.\n */\n rifmFormatter: PropTypes.func,\n\n /**\n * Right arrow icon aria-label text.\n * @deprecated\n */\n rightArrowButtonText: PropTypes.string,\n\n /**\n * Disable specific date. @DateIOType\n * @template TDate\n * @param {TDate} day The date to test.\n * @returns {boolean} Returns `true` if the date should be disabled.\n */\n shouldDisableDate: PropTypes.func,\n\n /**\n * Disable specific months dynamically.\n * Works like `shouldDisableDate` but for month selection view @DateIOType.\n * @template TDate\n * @param {TDate} month The month to check.\n * @returns {boolean} If `true` the month will be disabled.\n */\n shouldDisableMonth: PropTypes.func,\n\n /**\n * Dynamically check if time is disabled or not.\n * If returns `false` appropriate time point will ot be acceptable.\n * @param {number} timeValue The value to check.\n * @param {ClockPickerView} clockType The clock type of the timeValue.\n * @returns {boolean} Returns `true` if the time should be disabled\n */\n shouldDisableTime: PropTypes.func,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n * @template TDate\n * @param {TDate} year The year to test.\n * @returns {boolean} Returns `true` if the year should be disabled.\n */\n shouldDisableYear: PropTypes.func,\n\n /**\n * If `true`, days that have `outsideCurrentMonth={true}` are displayed.\n * @default false\n */\n showDaysOutsideCurrentMonth: PropTypes.bool,\n\n /**\n * If `true`, show the toolbar even in desktop mode.\n */\n showToolbar: PropTypes.bool,\n\n /**\n * Time tab icon.\n */\n timeIcon: PropTypes.node,\n\n /**\n * Component that will replace default toolbar renderer.\n * @default DateTimePickerToolbar\n */\n ToolbarComponent: PropTypes.elementType,\n\n /**\n * Date format, that is displaying in toolbar.\n */\n toolbarFormat: PropTypes.string,\n\n /**\n * Mobile picker date value placeholder, displaying if `value` === `null`.\n * @default '–'\n */\n toolbarPlaceholder: PropTypes.node,\n\n /**\n * Mobile picker title, displaying in the toolbar.\n * @default 'Select date & time'\n */\n toolbarTitle: PropTypes.node,\n\n /**\n * Custom component for popper [Transition](https://mui.com/material-ui/transitions/#transitioncomponent-prop).\n */\n TransitionComponent: PropTypes.elementType,\n\n /**\n * The value of the picker.\n */\n value: PropTypes.any,\n\n /**\n * Array of views to show.\n * @default ['year', 'day', 'hours', 'minutes']\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']).isRequired)\n} : void 0;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport const getPickersLocalization = pickersTranslations => {\n return {\n components: {\n MuiLocalizationProvider: {\n defaultProps: {\n localeText: _extends({}, pickersTranslations)\n }\n }\n }\n };\n};","import { getPickersLocalization } from './utils/getPickersLocalization'; // This object is not Partial because it is the default values\n\nconst enUSPickers = {\n // Calendar navigation\n previousMonth: 'Previous month',\n nextMonth: 'Next month',\n // View navigation\n openPreviousView: 'open previous view',\n openNextView: 'open next view',\n calendarViewSwitchingButtonAriaLabel: view => view === 'year' ? 'year view is open, switch to calendar view' : 'calendar view is open, switch to year view',\n inputModeToggleButtonAriaLabel: (isKeyboardInputOpen, viewType) => isKeyboardInputOpen ? `text input view is open, go to ${viewType} view` : `${viewType} view is open, go to text input view`,\n // DateRange placeholders\n start: 'Start',\n end: 'End',\n // Action bar\n cancelButtonLabel: 'Cancel',\n clearButtonLabel: 'Clear',\n okButtonLabel: 'OK',\n todayButtonLabel: 'Today',\n // Toolbar titles\n datePickerDefaultToolbarTitle: 'Select date',\n dateTimePickerDefaultToolbarTitle: 'Select date & time',\n timePickerDefaultToolbarTitle: 'Select time',\n dateRangePickerDefaultToolbarTitle: 'Select date range',\n // Clock labels\n clockLabelText: (view, time, adapter) => `Select ${view}. ${time === null ? 'No time selected' : `Selected time is ${adapter.format(time, 'fullTime')}`}`,\n hoursClockNumberText: hours => `${hours} hours`,\n minutesClockNumberText: minutes => `${minutes} minutes`,\n secondsClockNumberText: seconds => `${seconds} seconds`,\n // Open picker labels\n openDatePickerDialogue: (rawValue, utils) => rawValue && utils.isValid(utils.date(rawValue)) ? `Choose date, selected date is ${utils.format(utils.date(rawValue), 'fullDate')}` : 'Choose date',\n openTimePickerDialogue: (rawValue, utils) => rawValue && utils.isValid(utils.date(rawValue)) ? `Choose time, selected time is ${utils.format(utils.date(rawValue), 'fullTime')}` : 'Choose time',\n // Table labels\n timeTableLabel: 'pick time',\n dateTableLabel: 'pick date'\n};\nexport const DEFAULT_LOCALE = enUSPickers;\nexport const enUS = getPickersLocalization(enUSPickers);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useThemeProps } from '@mui/material/styles';\nimport { DEFAULT_LOCALE } from '../locales';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const MuiPickersAdapterContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n MuiPickersAdapterContext.displayName = 'MuiPickersAdapterContext';\n}\n\nlet warnedOnce = false;\n/**\n * @ignore - do not document.\n */\n\nexport function LocalizationProvider(inProps) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiLocalizationProvider'\n });\n const {\n children,\n dateAdapter: Utils,\n dateFormats,\n dateLibInstance,\n locale,\n adapterLocale,\n localeText\n } = props;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce && locale !== undefined) {\n warnedOnce = true;\n console.warn(\"LocalizationProvider's prop `locale` is deprecated and replaced by `adapterLocale`\");\n }\n }\n\n const utils = React.useMemo(() => new Utils({\n locale: adapterLocale != null ? adapterLocale : locale,\n formats: dateFormats,\n instance: dateLibInstance\n }), [Utils, locale, adapterLocale, dateFormats, dateLibInstance]);\n const defaultDates = React.useMemo(() => {\n return {\n minDate: utils.date('1900-01-01T00:00:00.000'),\n maxDate: utils.date('2099-12-31T00:00:00.000')\n };\n }, [utils]);\n const contextValue = React.useMemo(() => {\n return {\n utils,\n defaultDates,\n localeText: _extends({}, DEFAULT_LOCALE, localeText != null ? localeText : {})\n };\n }, [defaultDates, utils, localeText]);\n return /*#__PURE__*/_jsx(MuiPickersAdapterContext.Provider, {\n value: contextValue,\n children: children\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? LocalizationProvider.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Locale for the date library you are using\n */\n adapterLocale: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n children: PropTypes.node,\n\n /**\n * DateIO adapter class function\n */\n dateAdapter: PropTypes.func.isRequired,\n\n /**\n * Formats that are used for any child pickers\n */\n dateFormats: PropTypes.shape({\n dayOfMonth: PropTypes.string,\n fullDate: PropTypes.string,\n fullDateTime: PropTypes.string,\n fullDateTime12h: PropTypes.string,\n fullDateTime24h: PropTypes.string,\n fullDateWithWeekday: PropTypes.string,\n fullTime: PropTypes.string,\n fullTime12h: PropTypes.string,\n fullTime24h: PropTypes.string,\n hours12h: PropTypes.string,\n hours24h: PropTypes.string,\n keyboardDate: PropTypes.string,\n keyboardDateTime: PropTypes.string,\n keyboardDateTime12h: PropTypes.string,\n keyboardDateTime24h: PropTypes.string,\n minutes: PropTypes.string,\n month: PropTypes.string,\n monthAndDate: PropTypes.string,\n monthAndYear: PropTypes.string,\n monthShort: PropTypes.string,\n normalDate: PropTypes.string,\n normalDateWithWeekday: PropTypes.string,\n seconds: PropTypes.string,\n shortDate: PropTypes.string,\n weekday: PropTypes.string,\n weekdayShort: PropTypes.string,\n year: PropTypes.string\n }),\n\n /**\n * Date library instance you are using, if it has some global overrides\n * ```jsx\n * dateLibInstance={momentTimeZone}\n * ```\n */\n dateLibInstance: PropTypes.any,\n\n /**\n * Locale for the date library you are using\n * @deprecated Use `adapterLocale` instead\n */\n locale: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n\n /**\n * Locale for components texts\n */\n localeText: PropTypes.object\n} : void 0;"],"names":["defaultFormats","dayOfMonth","fullDate","fullDateWithWeekday","fullDateTime","fullDateTime12h","fullDateTime24h","fullTime","fullTime12h","fullTime24h","hours12h","hours24h","keyboardDate","keyboardDateTime","keyboardDateTime12h","keyboardDateTime24h","minutes","seconds","month","monthAndDate","monthAndYear","monthShort","weekday","weekdayShort","normalDate","normalDateWithWeekday","shortDate","year","LuxonUtils","_createClass","_this","_ref","arguments","length","undefined","locale","formats","_classCallCheck","this","lib","date","value","DateTime","local","fromJSDate","Date","isDateTime","toJsDate","toJSDate","parseISO","isoString","fromISO","toISO","format","parse","formatString","fromFormat","is12HourCycleInCurrentLocale","_a","_b","Intl","DateTimeFormat","Boolean","hour","resolvedOptions","hour12","getFormatHelperText","getCurrentLocaleCode","Settings","defaultLocale","addSeconds","count","plus","addMinutes","addHours","hours","addDays","days","addWeeks","weeks","addMonths","months","addYears","years","isValid","isEqual","comparing","equals","isSameDay","hasSame","isSameMonth","isSameYear","isSameHour","isAfter","isBefore","isBeforeDay","diff","startOf","toObject","isAfterDay","endOf","isBeforeMonth","isAfterMonth","isBeforeYear","isAfterYear","getDiff","unit","Math","floor","as","startOfDay","endOfDay","formatKey","formatByString","setLocale","toFormat","formatNumber","numberToFormat","getHours","get","setHours","set","getMinutes","setMinutes","minute","getSeconds","setSeconds","second","getMonth","getDaysInMonth","daysInMonth","setMonth","getYear","setYear","getDate","setDate","day","mergeDateAndTime","time","startOfYear","endOfYear","startOfMonth","endOfMonth","startOfWeek","endOfWeek","getNextMonth","getPreviousMonth","minus","getMonthArray","monthArray","prevMonth","push","getWeekdays","Info","weekdaysFormat","getWeekArray","Array","round","fill","map","_","i","forEach","v","getYearRange","start","end","startDate","endDate","current","getMeridiemText","ampm","meridiems","find","toLowerCase","isNull","isWithinRange","_ref2","_ref3","_slicedToArray","Object","assign","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","getInputAdornmentUtilityClass","slot","generateUtilityClass","_span","generateUtilityClasses","_excluded","InputAdornmentRoot","styled","name","overridesResolver","props","styles","ownerState","root","concat","capitalize","position","disablePointerEvents","variant","theme","_extends","display","height","maxHeight","alignItems","whiteSpace","color","vars","palette","action","active","_defineProperty","inputAdornmentClasses","positionStart","hiddenLabel","marginTop","marginRight","marginLeft","pointerEvents","React","inProps","ref","useThemeProps","children","className","_props$component","component","_props$disablePointer","_props$disableTypogra","disableTypography","variantProp","other","_objectWithoutPropertiesLoose","muiFormControl","useFormControl","size","classes","slots","composeClasses","useUtilityClasses","_jsx","FormControlContext","Provider","clsx","_jsxs","Typography","useMediaQueryOld","query","defaultMatches","matchMedia","ssrMatchMedia","noSsr","_React$useState","matches","_React$useState2","match","setMatch","useEnhancedEffect","queryList","updateMatch","addListener","removeListener","maybeReactUseSyncExternalStore","useMediaQueryNew","getDefaultSnapshot","getServerSnapshot","_React$useMemo","mediaQueryList","notify","_React$useMemo2","getSnapshot","subscribe","useMediaQuery","queryInput","options","useTheme","supportMatchMedia","window","_getThemeProps","getThemeProps","_getThemeProps$defaul","_getThemeProps$matchM","_getThemeProps$ssrMat","_getThemeProps$noSsr","replace","useLocalizationContext","localization","MuiPickersAdapterContext","Error","useUtils","utils","useDefaultDates","defaultDates","useLocaleText","localeText","useNow","findClosestEnabledDate","disableFuture","disablePast","maxDate","minDate","isDateDisabled","today","forward","backward","parseNonNullablePickerDate","defaultValue","parsedValue","useDateTimePickerDefaultizedProps","_themeProps$ampm","_themeProps$minDateTi","_themeProps$maxDateTi","_themeProps$minDateTi2","_themeProps$maxDateTi2","themeProps","orientation","openTo","views","ampmInClock","acceptRegex","disableMaskedInput","inputFormat","disableIgnoringDatePartForTimeValidation","minDateTime","maxDateTime","minTime","maxTime","dateTimePickerValueManager","emptyValue","getTodayValue","parseInput","areValuesEqual","a","b","resolveViewTypeFromView","view","r","e","t","f","n","isArray","getPickersToolbarTextUtilityClass","pickersToolbarTextClasses","PickersToolbarTextRoot","selected","transition","transitions","create","text","secondary","primary","PickersToolbarText","ArrowDropDown","createSvgIcon","ArrowLeft","ArrowRight","Calendar","Clock","DateRange","Pen","Time","getPickersToolbarUtilityClass","pickersToolbarClasses","PickersToolbarRoot","flexDirection","justifyContent","padding","spacing","isLandscape","maxWidth","flexWrap","PickersToolbarContent","Grid","content","flex","PickersToolbarPenIconButton","IconButton","penIconButtonLandscape","penIconButton","getViewTypeIcon","viewType","PickersToolbar","getMobileKeyboardInputViewButtonText","isMobileKeyboardViewOpen","_props$landscapeDirec","landscapeDirection","toggleMobileKeyboardView","toolbarTitle","_props$viewType","container","direction","onClick","inputModeToggleButtonAriaLabel","PickersToolbarButtonRoot","Button","minWidth","textTransform","PickersToolbarButton","align","typographyClassName","getDateTimePickerToolbarUtilityClass","DateTimePickerToolbarRoot","paddingLeft","paddingRight","top","left","right","DateTimePickerToolbarDateContainer","dateContainer","DateTimePickerToolbarTimeContainer","timeContainer","DateTimePickerToolbarSeparator","separator","margin","cursor","DateTimePickerToolbar","openView","setOpenView","toolbarFormat","_props$toolbarPlaceho","toolbarPlaceholder","toolbarTitleProp","dateTimePickerDefaultToolbarTitle","dateText","includes","tabIndex","WrapperVariantContext","getDialogActionsUtilityClass","DialogActionsRoot","disableSpacing","_props$disableSpacing","PickersActionBar","onAccept","onClear","onCancel","onSetToday","actions","wrapperVariant","actionsArray","buttons","actionType","clearButtonLabel","cancelButtonLabel","okButtonLabel","todayButtonLabel","DialogActions","getPickersPopperUtilityClass","arrayIncludes","array","itemOrItems","every","item","indexOf","onSpaceOrEnter","innerFn","onFocus","event","key","preventDefault","stopPropagation","getActiveElement","activeEl","document","activeElement","shadowRoot","paper","PickersPopperRoot","Popper","zIndex","modal","PickersPopperPaper","Paper","transformOrigin","outline","placement","PickersPopper","_components$ActionBar","anchorEl","_props$containerRef","containerRef","onBlur","onClose","open","PopperProps","role","_props$TransitionComp","TransitionComponent","Grow","TrapFocusProps","_props$PaperProps","PaperProps","components","componentsProps","handleKeyDown","nativeEvent","addEventListener","removeEventListener","lastFocusedElementRef","HTMLElement","setTimeout","focus","_useClickAwayListener","onClickAway","movedRef","syntheticEventRef","nodeRef","activatedRef","armClickAwayListener","handleClickAway","useEventCallback","insideReactTree","doc","ownerDocument","documentElement","clientWidth","clientX","clientHeight","clientY","clickedRootScrollbar","composedPath","contains","target","handleSynthetic","handleTouchMove","useClickAwayListener","_useClickAwayListener2","clickAwayRef","onPaperClick","onPaperTouchStart","paperRef","handleRef","useForkRef","handlePaperRef","onPaperClickProp","onPaperTouchStartProp","onTouchStart","otherPaperProps","ActionBar","PaperContent","onKeyDown","TransitionProps","TrapFocus","disableAutoFocus","disableRestoreFocus","disableEnforceFocus","isEnabled","elevation","paperContent","actionBar","DesktopWrapper","DateInputProps","KeyboardDateInputComponent","onDismiss","ownInputRef","inputRef","useViews","_views","_views2","onChange","onViewChange","_useControlled","useControlled","state","controlled","_useControlled2","previousView","nextView","changeView","newView","openNext","handleChangeAndOpenNext","currentViewSelectionState","isSelectionFinishedOnCurrentView","globalSelectionState","CLOCK_WIDTH","CLOCK_HOUR_WIDTH","clockCenter","x","y","cx","cy","getAngleValue","step","offsetX","offsetY","atan","atan2","deg","PI","delta","pow","distance","sqrt","getClockPointerUtilityClass","thumb","ClockPointerRoot","width","backgroundColor","main","bottom","shouldAnimate","ClockPointerThumb","contrastText","borderRadius","border","boxSizing","hasSelected","ClockPointer","isInner","type","previousType","style","angle","transform","getAngleStyle","getClockUtilityClass","ClockRoot","ClockClock","clock","flexShrink","ClockWrapper","wrapper","ClockSquareMask","squareMask","touchAction","userSelect","disabled","ClockPin","pin","ClockAmButton","amButton","_ref4","meridiemMode","light","ClockPmButton","pmButton","_ref5","autoFocus","getClockLabelText","handleMeridiemChange","isTimeDisabled","_props$minutesStep","minutesStep","selectedId","readOnly","isMoving","isSelectedTimeDisabled","isPointerInner","handleValueChange","newValue","isFinish","setTime","rect","getBoundingClientRect","changedTouches","newSelectedValue","_getAngleValue2","keyboardControlStep","listboxRef","onTouchMove","onTouchEnd","onMouseUp","onMouseMove","getClockNumberUtilityClass","clockNumberClasses","ClockNumberRoot","_extends2","fontFamily","typography","background","inner","body2","ClockNumber","index","label","cos","sin","getHourNumbers","getClockNumberText","isDisabled","currentHours","hourNumbers","endHour","isSelected","toString","id","getMinutesNumbers","numberValue","getPickersArrowSwitcherUtilityClass","PickersArrowSwitcherRoot","PickersArrowSwitcherSpacer","spacer","PickersArrowSwitcherButton","button","hidden","visibility","PickersArrowSwitcher","isLeftDisabled","isLeftHidden","isRightDisabled","isRightHidden","leftArrowButtonText","onLeftClick","onRightClick","rightArrowButtonText","isRtl","leftArrowButtonProps","leftArrowButton","LeftArrowIcon","rightArrowButtonProps","rightArrowButton","RightArrowIcon","LeftArrowButton","title","edge","RightArrowButton","convertValueToMeridiem","meridiem","getSecondsInDay","createIsAfterIgnoreDatePart","dateLeft","dateRight","useMeridiemMode","getMeridiem","mode","timeWithMeridiem","newHoursAmount","convertToMeridiem","getClockPickerUtilityClass","PickerViewRoot","overflowX","ClockPickerRoot","ClockPickerArrowSwitcher","arrowSwitcher","deprecatedPropsWarning","ClockPicker","_props$ampm","_props$ampmInClock","getClockLabelTextProp","getHoursClockNumberTextProp","getHoursClockNumberText","getMinutesClockNumberTextProp","getMinutesClockNumberText","getSecondsClockNumberTextProp","getSecondsClockNumberText","leftArrowButtonTextProp","rightArrowButtonTextProp","shouldDisableTime","showViewSwitcher","_props$views","openPreviousView","openNextView","clockLabelText","hoursClockNumberText","minutesClockNumberText","secondsClockNumberText","_useViews","now","dateOrMidnight","_useMeridiemMode","rawValue","containsValidTime","isValidValue","dateWithNewHours","dateWithNewMinutes","dateWithNewSeconds","useId","viewProps","handleHoursChange","valueWithMeridiem","minutesValue","handleMinutesChange","secondsValue","handleSecondsChange","getPickersMonthUtilityClass","pickersMonthClasses","PickersMonthRoot","subtitle1","alpha","hoverOpacity","dark","noop","PickersMonth","onSelect","hasFocus","_props$onFocus","_props$onBlur","handleSelection","_ref$current","getMonthPickerUtilityClass","MonthPickerRoot","alignContent","MonthPicker","useMonthPickerDefaultizedProps","shouldDisableMonth","disableHighlightToday","_props$autoFocus","onMonthFocus","onFocusedViewChange","selectedDateOrStartOfMonth","selectedMonth","focusedMonth","setFocusedMonth","isMonthDisabled","firstEnabledMonth","lastEnabledMonth","onMonthSelect","newDate","internalHasFocus","setInternalHasFocus","changeHasFocus","newHasFocus","focusMonth","prevFocusedMonth","monthsInYear","handleMonthFocus","handleMonthBlur","currentMonthNumber","monthNumber","monthText","validateDate","adapter","shouldDisableDate","useIsDayDisabled","useCalendarState","defaultCalendarMonth","_ref2$disableSwitchTo","disableSwitchToMonthOnDayFocus","onMonthChange","reduceAnimations","reducerFn","slideDirection","currentMonth","newMonth","isMonthSwitchingAnimating","focusedDay","needMonthSwitch","withoutMonthSwitchingAnimation","createCalendarStateReducer","_React$useReducer","_React$useReducer2","calendarState","dispatch","handleChangeMonth","payload","changeMonth","newDateRequested","onMonthSwitchingAnimationEnd","changeFocusedDay","newFocusedDate","getPickersFadeTransitionGroupUtilityClass","animationDuration","PickersFadeTransitionGroupRoot","TransitionGroup","PickersFadeTransitionGroup","transKey","Fade","appear","mountOnEnter","unmountOnExit","timeout","enter","exit","getPickersDayUtilityClass","pickersDayClasses","styleArg","caption","willChange","fontWeight","fontWeightMedium","duration","short","disableMargin","outsideCurrentMonth","showDaysOutsideCurrentMonth","dayWithMargin","dayOutsideMonth","hiddenDaySpacingFiller","PickersDayRoot","ButtonBase","PickersDayFiller","opacity","PickersDayRaw","forwardedRef","_props$disabled","_props$disableHighlig","_props$disableMargin","isAnimating","onDaySelect","_props$onKeyDown","onMouseDown","_props$selected","_props$showDaysOutsid","_props$today","isToday","centerRipple","currentTarget","areDayPropsEqual","prevProps","nextProps","sx","PickersDay","replaceClassName","origClass","classToRemove","RegExp","removeClass","node","split","c","element","classList","remove","setAttribute","baseVal","CSSTransition","_React$Component","_len","args","_key","call","apply","appliedClasses","onEnter","maybeNode","maybeAppearing","_this$resolveArgument","resolveArguments","appearing","removeClasses","addClass","onEntering","_this$resolveArgument2","onEntered","_this$resolveArgument3","onExit","onExiting","onExited","getClassNames","classNames","isStringClassNames","baseClassName","activeClassName","doneClassName","_inheritsLoose","_proto","prototype","phase","forceReflow","add","hasClass","_addClass","_this$appliedClasses$","base","done","render","_this$props","Transition","defaultProps","propTypes","getPickersSlideTransitionUtilityClass","pickersSlideTransitionClasses","PickersSlideTransitionRoot","slideEnterActive","slideExit","_ref7","_ref8","slideTransition","easing","getDayPickerUtilityClass","defaultDayOfWeekFormatter","charAt","toUpperCase","PickersCalendarDayHeader","header","PickersCalendarWeekDayLabel","weekDayLabel","textAlign","PickersCalendarLoadingContainer","loadingContainer","minHeight","PickersCalendarSlideTransition","transitionClasses","enterActive","exitActive","childFactory","PickersCalendarWeekContainer","monthContainer","overflow","PickersCalendarWeek","weekContainer","DayPicker","onFocusedDayChange","selectedDays","loading","onSelectedDaysChange","renderDay","_props$renderLoading","renderLoading","_props$dayOfWeekForma","dayOfWeekFormatter","gridLabelId","internalFocusedDay","setInternalFocusedDay","handleDaySelect","focusDay","newFocusedDayDefault","nextAvailableMonth","closestDayToFocus","handleFocus","handleBlur","validSelectedDays","filter","transitionKey","slideNodeRef","startOfCurrentWeek","focusableDay","_dayOfWeekFormatter","week","isFocusableDay","some","selectedDay","pickersDayProps","_createElement","getPickersCalendarHeaderUtilityClass","PickersCalendarHeaderRoot","marginBottom","PickersCalendarHeaderLabelContainer","labelContainer","body1","PickersCalendarHeaderLabel","PickersCalendarHeaderSwitchViewButton","switchViewButton","PickersCalendarHeaderSwitchViewIcon","switchViewIcon","PickersCalendarHeader","_props$components","_props$componentsProp","getViewSwitchingButtonTextProp","getViewSwitchingButtonText","currentView","labelId","previousMonth","nextMonth","calendarViewSwitchingButtonAriaLabel","switchViewButtonProps","isNextMonthDisabled","useNextMonthDisabled","isPreviousMonthDisabled","usePreviousMonthDisabled","nextIndexToOpen","SwitchViewButton","SwitchViewIcon","in","getPickersYearUtilityClass","pickersYearClasses","PickersYearRoot","modeDesktop","modeMobile","flexBasis","PickersYearButton","_ref6","PickersYear","refHandle","yearButton","getYearPickerUtilityClass","YearPickerRoot","overflowY","YearPicker","useYearPickerDefaultizedProps","shouldDisableYear","onYearFocus","selectedDateOrStartOfYear","currentYear","selectedYearRef","focusedYear","setFocusedYear","isYearDisabled","dateToValidate","handleYearSelection","focusYear","prevFocusedYear","yearsInRow","nowYear","scrollerRef","tabbableButton","querySelector","offsetHeight","offsetTop","scrollTop","elementBottom","yearNumber","defaultReduceAnimations","navigator","test","userAgent","getCalendarPickerUtilityClass","CalendarPickerRoot","CalendarPickerViewTransitionContainer","viewTransitionContainer","CalendarPicker","useCalendarPickerDefaultizedProps","onYearChange","focusedView","_useCalendarState","handleDateMonthChange","selectionState","closestEnabledDate","handleDateYearChange","onSelectedDayChange","baseDateValidationProps","minDateWithDisabled","maxDateWithDisabled","commonViewProps","internalFocusedView","setInternalFocusedView","handleFocusedViewChange","eventView","prevView","prevOpenViewRef","useRifm","_useReducer","useReducer","refresh","valueRef","useRef","append","userValue","isDeleleteButtonDownRef","useLayoutEffect","_valueRef$current","eventValue","input","isSizeIncreaseOperation","isDeleleteButtonDown","isNoOperation","deleteWasNoOp","acceptedCharIndexAfterDelete","slice","selectionStart","search","accept","charsToSkipAfterDelete","clean","str","join","valueBeforeSelectionStart","substr","getCursorPosition","val","cleanPos","newPos","newCleanPos","max","mask","formattedValue","replacedValue","selectionEnd","useEffect","evt","code","handleKeyUp","getDisplayDate","MASK_USER_INPUT_SYMBOL","staticDateWith2DigitTokens","staticDateWith1DigitTokens","checkMaskIsValidForCurrentFormat","inferredFormatPatternWith1Digits","inferredFormatPatternWith2Digits","isMaskValid","useMaskedInput","_ref$acceptRegex","ignoreInvalidInputs","inputProps","rifmFormatter","TextFieldProps","validationError","formatHelperText","shouldUseMaskedInput","maskToUse","computedMaskToUse","getMaskFromCurrentFormat","formatter","acceptRegexp","outputCharIndex","char","inputCharIndex","lastIndex","maskChar","nextMaskChar","acceptedChar","formattedChar","maskedDateFormatter","st","innerInputValue","setInnerInputValue","_React$useState3","_React$useState4","innerDisplayedInputValue","setInnerDisplayedInputValue","prevRawValue","prevLocale","prevInputFormat","rawValueHasChanged","localeHasChanged","inputFormatHasChanged","newParsedValue","isAcceptedValue","innerEqualsParsed","areEqual","abs","newDisplayDate","handleChange","finalString","rifmProps","inputStateArgs","error","placeholder","KeyboardDateInput","disableOpenPicker","getOpenDialogAriaTextProp","getOpenDialogAriaText","InputAdornmentProps","InputProps","openPicker","OpenPickerButtonProps","renderInput","openDatePickerDialogue","textFieldProps","adornmentPosition","OpenPickerIcon","InputAdornment","getOrientation","screen","Number","getCalendarOrClockPickerUtilityClass","MobileKeyboardInputView","mobileKeyboardInputView","PickerRoot","MobileKeyboardTextFieldProps","fullWidth","isDatePickerView","isTimePickerView","CalendarOrClockPicker","_other$components","_other$componentsProp","onDateChange","showToolbar","_props$ToolbarCompone","ToolbarComponent","dateRangeIcon","timeIcon","hideTabs","TabsComponent","Tabs","customOrientation","setOrientation","eventHandler","useIsLandscape","toShowToolbar","showTabs","innerHeight","handleDateChange","_useFocusManagement","setFocusedView","prevFocusedView","useFocusManagement","tabs","validateTime","validateDateTime","timeValidationProps","dateValidationResult","isSameDateTimeError","useDateTimeValidation","validate","isSameError","onError","previousValidationErrorRef","useValidation","usePickerState","valueManager","closeOnSelect","_useOpenState","onOpen","isControllingOpenProp","openState","setIsOpenState","isOpen","setIsOpen","newIsOpen","useOpenState","parsedDateValue","lastValidDateValue","setLastValidDateValue","committed","draft","resetFallback","dateState","setDateState","params","prev","forceOnChangeCall","skipOnChangeCall","wrapperProps","_React$useState5","_React$useState6","setMobileKeyboardViewOpen","pickerProps","handleInputChange","keyboardInputValue","cleanParsedValue","valueReducer","pickerState","MuiPickerState","getDateTimePickerTabsUtilityClass","DateTimePickerTabsRoot","boxShadow","divider","order","tabsClasses","indicator","DateTimePickerTabs","_props$dateRangeIcon","_props$timeIcon","Tab","dateTableLabel","icon","timeTableLabel","DesktopDateTimePicker","_usePickerState","providedComponents","_props$hideTabs","AllDateInputProps","getDialogContentUtilityClass","DialogContentRoot","dividers","WebkitOverflowScrolling","borderTop","borderBottom","dialogTitleClasses","paddingTop","_props$dividers","getDialogUtilityClass","DialogBackdrop","Backdrop","overrides","backdrop","DialogRoot","Modal","DialogContainer","scroll","verticalAlign","DialogPaper","String","paperFullWidth","fullScreen","paperFullScreen","breakpoints","values","xs","dialogClasses","paperScrollBody","down","defaultTransitionDuration","enteringScreen","leavingScreen","ariaDescribedby","ariaLabelledbyProp","BackdropComponent","BackdropProps","_props$disableEscapeK","disableEscapeKeyDown","_props$fullScreen","_props$fullWidth","_props$maxWidth","onBackdropClick","_props$PaperComponent","PaperComponent","_props$scroll","_props$transitionDura","transitionDuration","backdropClick","ariaLabelledby","dialogContextValue","titleId","closeAfterTransition","DialogContext","PickersModalDialogRoot","Dialog","_styled","PickersModalDialogContent","DialogContent","PickersModalDialog","_props$DialogProps","DialogProps","MobileWrapper","PureDateInputComponent","PureDateInput","_props$TextFieldProps","PureDateInputProps","inputValue","handleOnClick","MobileDateTimePicker","DateTimePicker","_props$desktopModeMed","desktopModeMediaQuery","pickersTranslations","enUSPickers","isKeyboardInputOpen","datePickerDefaultToolbarTitle","timePickerDefaultToolbarTitle","dateRangePickerDefaultToolbarTitle","openTimePickerDialogue","DEFAULT_LOCALE","LocalizationProvider","Utils","dateAdapter","dateFormats","dateLibInstance","adapterLocale","instance","contextValue"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/2193.a74f0e37.chunk.js","mappings":"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","sources":["../node_modules/@date-io/luxon/build/index.esm.js","../node_modules/@mui/icons-material/Schedule.js","../node_modules/@mui/material/InputAdornment/inputAdornmentClasses.js","../node_modules/@mui/material/InputAdornment/InputAdornment.js","../node_modules/@mui/material/useMediaQuery/useMediaQuery.js","../node_modules/@mui/x-date-pickers/internals/hooks/useUtils.js","../node_modules/@mui/x-date-pickers/internals/utils/date-utils.js","../node_modules/@mui/x-date-pickers/DateTimePicker/shared.js","../node_modules/@mui/x-date-pickers/node_modules/clsx/dist/clsx.m.js","../node_modules/@mui/x-date-pickers/internals/components/pickersToolbarTextClasses.js","../node_modules/@mui/x-date-pickers/internals/components/PickersToolbarText.js","../node_modules/@mui/x-date-pickers/internals/components/icons/index.js","../node_modules/@mui/x-date-pickers/internals/components/pickersToolbarClasses.js","../node_modules/@mui/x-date-pickers/internals/components/PickersToolbar.js","../node_modules/@mui/x-date-pickers/internals/components/PickersToolbarButton.js","../node_modules/@mui/x-date-pickers/DateTimePicker/dateTimePickerToolbarClasses.js","../node_modules/@mui/x-date-pickers/DateTimePicker/DateTimePickerToolbar.js","../node_modules/@mui/x-date-pickers/internals/components/wrappers/WrapperVariantContext.js","../node_modules/@mui/material/DialogActions/dialogActionsClasses.js","../node_modules/@mui/material/DialogActions/DialogActions.js","../node_modules/@mui/x-date-pickers/PickersActionBar/PickersActionBar.js","../node_modules/@mui/x-date-pickers/internals/components/pickersPopperClasses.js","../node_modules/@mui/x-date-pickers/internals/utils/utils.js","../node_modules/@mui/x-date-pickers/internals/components/PickersPopper.js","../node_modules/@mui/x-date-pickers/internals/components/wrappers/DesktopWrapper.js","../node_modules/@mui/x-date-pickers/internals/hooks/useViews.js","../node_modules/@mui/x-date-pickers/ClockPicker/shared.js","../node_modules/@mui/x-date-pickers/ClockPicker/clockPointerClasses.js","../node_modules/@mui/x-date-pickers/ClockPicker/ClockPointer.js","../node_modules/@mui/x-date-pickers/ClockPicker/clockClasses.js","../node_modules/@mui/x-date-pickers/ClockPicker/Clock.js","../node_modules/@mui/x-date-pickers/ClockPicker/clockNumberClasses.js","../node_modules/@mui/x-date-pickers/ClockPicker/ClockNumber.js","../node_modules/@mui/x-date-pickers/ClockPicker/ClockNumbers.js","../node_modules/@mui/x-date-pickers/internals/components/pickersArrowSwitcherClasses.js","../node_modules/@mui/x-date-pickers/internals/components/PickersArrowSwitcher.js","../node_modules/@mui/x-date-pickers/internals/utils/time-utils.js","../node_modules/@mui/x-date-pickers/internals/hooks/date-helpers-hooks.js","../node_modules/@mui/x-date-pickers/ClockPicker/clockPickerClasses.js","../node_modules/@mui/x-date-pickers/internals/components/PickerViewRoot/PickerViewRoot.js","../node_modules/@mui/x-date-pickers/internals/constants/dimensions.js","../node_modules/@mui/x-date-pickers/ClockPicker/ClockPicker.js","../node_modules/@mui/x-date-pickers/internals/utils/warning.js","../node_modules/@mui/x-date-pickers/MonthPicker/pickersMonthClasses.js","../node_modules/@mui/x-date-pickers/MonthPicker/PickersMonth.js","../node_modules/@mui/x-date-pickers/MonthPicker/monthPickerClasses.js","../node_modules/@mui/x-date-pickers/MonthPicker/MonthPicker.js","../node_modules/@mui/x-date-pickers/internals/hooks/validation/useDateValidation.js","../node_modules/@mui/x-date-pickers/CalendarPicker/useCalendarState.js","../node_modules/@mui/x-date-pickers/CalendarPicker/pickersFadeTransitionGroupClasses.js","../node_modules/@mui/x-date-pickers/CalendarPicker/PickersFadeTransitionGroup.js","../node_modules/@mui/x-date-pickers/PickersDay/pickersDayClasses.js","../node_modules/@mui/x-date-pickers/PickersDay/PickersDay.js","../node_modules/dom-helpers/esm/removeClass.js","../node_modules/react-transition-group/esm/CSSTransition.js","../node_modules/dom-helpers/esm/addClass.js","../node_modules/dom-helpers/esm/hasClass.js","../node_modules/@mui/x-date-pickers/CalendarPicker/pickersSlideTransitionClasses.js","../node_modules/@mui/x-date-pickers/CalendarPicker/PickersSlideTransition.js","../node_modules/@mui/x-date-pickers/CalendarPicker/dayPickerClasses.js","../node_modules/@mui/x-date-pickers/CalendarPicker/DayPicker.js","../node_modules/@mui/x-date-pickers/CalendarPicker/pickersCalendarHeaderClasses.js","../node_modules/@mui/x-date-pickers/CalendarPicker/PickersCalendarHeader.js","../node_modules/@mui/x-date-pickers/YearPicker/pickersYearClasses.js","../node_modules/@mui/x-date-pickers/YearPicker/PickersYear.js","../node_modules/@mui/x-date-pickers/YearPicker/yearPickerClasses.js","../node_modules/@mui/x-date-pickers/YearPicker/YearPicker.js","../node_modules/@mui/x-date-pickers/internals/utils/defaultReduceAnimations.js","../node_modules/@mui/x-date-pickers/CalendarPicker/calendarPickerClasses.js","../node_modules/@mui/x-date-pickers/CalendarPicker/CalendarPicker.js","../node_modules/rifm/dist/rifm.esm.js","../node_modules/@mui/x-date-pickers/internals/utils/text-field-helper.js","../node_modules/@mui/x-date-pickers/internals/hooks/useMaskedInput.js","../node_modules/@mui/x-date-pickers/internals/components/KeyboardDateInput.js","../node_modules/@mui/x-date-pickers/internals/hooks/useIsLandscape.js","../node_modules/@mui/x-date-pickers/internals/components/CalendarOrClockPicker/calendarOrClockPickerClasses.js","../node_modules/@mui/x-date-pickers/internals/components/CalendarOrClockPicker/CalendarOrClockPicker.js","../node_modules/@mui/x-date-pickers/internals/components/CalendarOrClockPicker/useFocusManagement.js","../node_modules/@mui/x-date-pickers/internals/hooks/validation/useTimeValidation.js","../node_modules/@mui/x-date-pickers/internals/hooks/validation/useDateTimeValidation.js","../node_modules/@mui/x-date-pickers/internals/hooks/validation/useValidation.js","../node_modules/@mui/x-date-pickers/internals/hooks/useOpenState.js","../node_modules/@mui/x-date-pickers/internals/hooks/usePickerState.js","../node_modules/@mui/x-date-pickers/DateTimePicker/dateTimePickerTabsClasses.js","../node_modules/@mui/x-date-pickers/DateTimePicker/DateTimePickerTabs.js","../node_modules/@mui/x-date-pickers/DesktopDateTimePicker/DesktopDateTimePicker.js","../node_modules/@mui/material/DialogContent/dialogContentClasses.js","../node_modules/@mui/material/DialogTitle/dialogTitleClasses.js","../node_modules/@mui/material/DialogContent/DialogContent.js","../node_modules/@mui/material/Dialog/dialogClasses.js","../node_modules/@mui/material/Dialog/DialogContext.js","../node_modules/@mui/material/Dialog/Dialog.js","../node_modules/@mui/x-date-pickers/internals/components/PickersModalDialog.js","../node_modules/@mui/x-date-pickers/internals/components/wrappers/MobileWrapper.js","../node_modules/@mui/x-date-pickers/internals/components/PureDateInput.js","../node_modules/@mui/x-date-pickers/MobileDateTimePicker/MobileDateTimePicker.js","../node_modules/@mui/x-date-pickers/DateTimePicker/DateTimePicker.js","../node_modules/@mui/x-date-pickers/locales/utils/getPickersLocalization.js","../node_modules/@mui/x-date-pickers/locales/enUS.js","../node_modules/@mui/x-date-pickers/LocalizationProvider/LocalizationProvider.js"],"sourcesContent":["import { DateTime, Settings, Info } from 'luxon';\n\nconst defaultFormats = {\n dayOfMonth: \"d\",\n fullDate: \"DD\",\n fullDateWithWeekday: \"DDDD\",\n fullDateTime: \"ff\",\n fullDateTime12h: \"DD, hh:mm a\",\n fullDateTime24h: \"DD, T\",\n fullTime: \"t\",\n fullTime12h: \"hh:mm a\",\n fullTime24h: \"HH:mm\",\n hours12h: \"hh\",\n hours24h: \"HH\",\n keyboardDate: \"D\",\n keyboardDateTime: \"D t\",\n keyboardDateTime12h: \"D hh:mm a\",\n keyboardDateTime24h: \"D T\",\n minutes: \"mm\",\n seconds: \"ss\",\n month: \"LLLL\",\n monthAndDate: \"MMMM d\",\n monthAndYear: \"LLLL yyyy\",\n monthShort: \"MMM\",\n weekday: \"cccc\",\n weekdayShort: \"ccc\",\n normalDate: \"d MMMM\",\n normalDateWithWeekday: \"EEE, MMM d\",\n shortDate: \"MMM d\",\n year: \"yyyy\",\n};\nclass LuxonUtils {\n constructor({ locale, formats, } = {}) {\n this.lib = \"luxon\";\n this.date = (value) => {\n if (typeof value === \"undefined\") {\n return DateTime.local();\n }\n if (value === null) {\n return null;\n }\n if (typeof value === \"string\") {\n return DateTime.fromJSDate(new Date(value), { locale: this.locale });\n }\n if (DateTime.isDateTime(value)) {\n return value;\n }\n return DateTime.fromJSDate(value, { locale: this.locale });\n };\n this.toJsDate = (value) => {\n return value.toJSDate();\n };\n this.parseISO = (isoString) => {\n return DateTime.fromISO(isoString);\n };\n this.toISO = (value) => {\n return value.toISO({ format: \"extended\" });\n };\n this.parse = (value, formatString) => {\n if (value === \"\") {\n return null;\n }\n return DateTime.fromFormat(value, formatString, { locale: this.locale });\n };\n /* istanbul ignore next */\n this.is12HourCycleInCurrentLocale = () => {\n var _a, _b;\n if (typeof Intl === \"undefined\" || typeof Intl.DateTimeFormat === \"undefined\") {\n return true; // Luxon defaults to en-US if Intl not found\n }\n return Boolean((_b = (_a = new Intl.DateTimeFormat(this.locale, { hour: \"numeric\" })) === null || _a === void 0 ? void 0 : _a.resolvedOptions()) === null || _b === void 0 ? void 0 : _b.hour12);\n };\n this.getFormatHelperText = (format) => {\n // Unfortunately there is no way for luxon to retrieve readable formats from localized format\n return \"\";\n };\n /* istanbul ignore next */\n this.getCurrentLocaleCode = () => {\n return this.locale || Settings.defaultLocale;\n };\n this.addSeconds = (date, count) => {\n return date.plus({ seconds: count });\n };\n this.addMinutes = (date, count) => {\n return date.plus({ minutes: count });\n };\n this.addHours = (date, count) => {\n return date.plus({ hours: count });\n };\n this.addDays = (date, count) => {\n return date.plus({ days: count });\n };\n this.addWeeks = (date, count) => {\n return date.plus({ weeks: count });\n };\n this.addMonths = (date, count) => {\n return date.plus({ months: count });\n };\n this.addYears = (date, count) => {\n return date.plus({ years: count });\n };\n this.isValid = (value) => {\n var _a, _b;\n if (DateTime.isDateTime(value)) {\n return value.isValid;\n }\n if (value === null) {\n return false;\n }\n return (_b = (_a = this.date(value)) === null || _a === void 0 ? void 0 : _a.isValid) !== null && _b !== void 0 ? _b : false;\n };\n this.isEqual = (value, comparing) => {\n var _a, _b;\n if (value === null && comparing === null) {\n return true;\n }\n // make sure that null will not be passed to this.date\n if (value === null || comparing === null) {\n return false;\n }\n if (!this.date(comparing)) {\n /* istanbul ignore next */\n return false;\n }\n return (_b = (_a = this.date(value)) === null || _a === void 0 ? void 0 : _a.equals(this.date(comparing))) !== null && _b !== void 0 ? _b : false;\n };\n this.isSameDay = (date, comparing) => {\n return date.hasSame(comparing, \"day\");\n };\n this.isSameMonth = (date, comparing) => {\n return date.hasSame(comparing, \"month\");\n };\n this.isSameYear = (date, comparing) => {\n return date.hasSame(comparing, \"year\");\n };\n this.isSameHour = (date, comparing) => {\n return date.hasSame(comparing, \"hour\");\n };\n this.isAfter = (value, comparing) => {\n return value > comparing;\n };\n this.isBefore = (value, comparing) => {\n return value < comparing;\n };\n this.isBeforeDay = (value, comparing) => {\n const diff = value.diff(comparing.startOf(\"day\"), \"days\").toObject();\n return diff.days < 0;\n };\n this.isAfterDay = (value, comparing) => {\n const diff = value.diff(comparing.endOf(\"day\"), \"days\").toObject();\n return diff.days > 0;\n };\n this.isBeforeMonth = (value, comparing) => {\n const diff = value.diff(comparing.startOf(\"month\"), \"months\").toObject();\n return diff.months < 0;\n };\n this.isAfterMonth = (value, comparing) => {\n const diff = value.diff(comparing.startOf(\"month\"), \"months\").toObject();\n return diff.months > 0;\n };\n this.isBeforeYear = (value, comparing) => {\n const diff = value.diff(comparing.startOf(\"year\"), \"years\").toObject();\n return diff.years < 0;\n };\n this.isAfterYear = (value, comparing) => {\n const diff = value.diff(comparing.endOf(\"year\"), \"years\").toObject();\n return diff.years > 0;\n };\n this.getDiff = (value, comparing, unit) => {\n if (typeof comparing === \"string\") {\n comparing = DateTime.fromJSDate(new Date(comparing));\n }\n if (!comparing.isValid) {\n return 0;\n }\n if (unit) {\n return Math.floor(value.diff(comparing).as(unit));\n }\n return value.diff(comparing).as(\"millisecond\");\n };\n this.startOfDay = (value) => {\n return value.startOf(\"day\");\n };\n this.endOfDay = (value) => {\n return value.endOf(\"day\");\n };\n this.format = (date, formatKey) => {\n return this.formatByString(date, this.formats[formatKey]);\n };\n this.formatByString = (date, format) => {\n return date.setLocale(this.locale).toFormat(format);\n };\n this.formatNumber = (numberToFormat) => {\n return numberToFormat;\n };\n this.getHours = (value) => {\n return value.get(\"hour\");\n };\n this.setHours = (value, count) => {\n return value.set({ hour: count });\n };\n this.getMinutes = (value) => {\n return value.get(\"minute\");\n };\n this.setMinutes = (value, count) => {\n return value.set({ minute: count });\n };\n this.getSeconds = (value) => {\n return value.get(\"second\");\n };\n this.setSeconds = (value, count) => {\n return value.set({ second: count });\n };\n this.getMonth = (value) => {\n // See https://github.com/moment/luxon/blob/master/docs/moment.md#major-functional-differences\n return value.get(\"month\") - 1;\n };\n this.getDaysInMonth = (value) => {\n return value.daysInMonth;\n };\n this.setMonth = (value, count) => {\n return value.set({ month: count + 1 });\n };\n this.getYear = (value) => {\n return value.get(\"year\");\n };\n this.setYear = (value, year) => {\n return value.set({ year });\n };\n this.getDate = (value) => {\n return value.get(\"day\");\n };\n this.setDate = (value, day) => {\n return value.set({ day });\n };\n this.mergeDateAndTime = (date, time) => {\n return date.set({\n second: time.second,\n hour: time.hour,\n minute: time.minute,\n });\n };\n this.startOfYear = (value) => {\n return value.startOf(\"year\");\n };\n this.endOfYear = (value) => {\n return value.endOf(\"year\");\n };\n this.startOfMonth = (value) => {\n return value.startOf(\"month\");\n };\n this.endOfMonth = (value) => {\n return value.endOf(\"month\");\n };\n this.startOfWeek = (value) => {\n return value.startOf(\"week\");\n };\n this.endOfWeek = (value) => {\n return value.endOf(\"week\");\n };\n this.getNextMonth = (value) => {\n return value.plus({ months: 1 });\n };\n this.getPreviousMonth = (value) => {\n return value.minus({ months: 1 });\n };\n this.getMonthArray = (date) => {\n const firstMonth = date.startOf(\"year\");\n const monthArray = [firstMonth];\n while (monthArray.length < 12) {\n const prevMonth = monthArray[monthArray.length - 1];\n monthArray.push(this.getNextMonth(prevMonth));\n }\n return monthArray;\n };\n this.getWeekdays = () => {\n return Info.weekdaysFormat(\"short\", { locale: this.locale });\n };\n this.getWeekArray = (date) => {\n const { days } = date\n .endOf(\"month\")\n .endOf(\"week\")\n .diff(date.startOf(\"month\").startOf(\"week\"), \"days\")\n .toObject();\n const weeks = [];\n new Array(Math.round(days))\n .fill(0)\n .map((_, i) => i)\n .map((day) => date.startOf(\"month\").startOf(\"week\").plus({ days: day }))\n .forEach((v, i) => {\n if (i === 0 || (i % 7 === 0 && i > 6)) {\n weeks.push([v]);\n return;\n }\n weeks[weeks.length - 1].push(v);\n });\n return weeks;\n };\n this.getYearRange = (start, end) => {\n const startDate = start.startOf(\"year\");\n const endDate = end.endOf(\"year\");\n let current = startDate;\n const years = [];\n while (current < endDate) {\n years.push(current);\n current = current.plus({ year: 1 });\n }\n return years;\n };\n this.getMeridiemText = (ampm) => {\n return Info.meridiems({ locale: this.locale }).find((v) => v.toLowerCase() === ampm.toLowerCase());\n };\n this.isNull = (date) => {\n return date === null;\n };\n this.isWithinRange = (date, [start, end]) => {\n return (date.equals(start) ||\n date.equals(end) ||\n (this.isAfter(date, start) && this.isBefore(date, end)));\n };\n this.locale = locale || \"en-US\";\n this.formats = Object.assign({}, defaultFormats, formats);\n }\n}\n\nexport { LuxonUtils as default };\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)([/*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}, \"0\"), /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\"\n}, \"1\")], 'Schedule');\nexports.default = _default;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getInputAdornmentUtilityClass(slot) {\n return generateUtilityClass('MuiInputAdornment', slot);\n}\nconst inputAdornmentClasses = generateUtilityClasses('MuiInputAdornment', ['root', 'filled', 'standard', 'outlined', 'positionStart', 'positionEnd', 'disablePointerEvents', 'hiddenLabel', 'sizeSmall']);\nexport default inputAdornmentClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _span;\nconst _excluded = [\"children\", \"className\", \"component\", \"disablePointerEvents\", \"disableTypography\", \"position\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport capitalize from '../utils/capitalize';\nimport Typography from '../Typography';\nimport FormControlContext from '../FormControl/FormControlContext';\nimport useFormControl from '../FormControl/useFormControl';\nimport styled from '../styles/styled';\nimport inputAdornmentClasses, { getInputAdornmentUtilityClass } from './inputAdornmentClasses';\nimport useThemeProps from '../styles/useThemeProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst overridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`position${capitalize(ownerState.position)}`], ownerState.disablePointerEvents === true && styles.disablePointerEvents, styles[ownerState.variant]];\n};\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disablePointerEvents,\n hiddenLabel,\n position,\n size,\n variant\n } = ownerState;\n const slots = {\n root: ['root', disablePointerEvents && 'disablePointerEvents', position && `position${capitalize(position)}`, variant, hiddenLabel && 'hiddenLabel', size && `size${capitalize(size)}`]\n };\n return composeClasses(slots, getInputAdornmentUtilityClass, classes);\n};\nconst InputAdornmentRoot = styled('div', {\n name: 'MuiInputAdornment',\n slot: 'Root',\n overridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'flex',\n height: '0.01em',\n // Fix IE11 flexbox alignment. To remove at some point.\n maxHeight: '2em',\n alignItems: 'center',\n whiteSpace: 'nowrap',\n color: (theme.vars || theme).palette.action.active\n}, ownerState.variant === 'filled' && {\n // Styles applied to the root element if `variant=\"filled\"`.\n [`&.${inputAdornmentClasses.positionStart}&:not(.${inputAdornmentClasses.hiddenLabel})`]: {\n marginTop: 16\n }\n}, ownerState.position === 'start' && {\n // Styles applied to the root element if `position=\"start\"`.\n marginRight: 8\n}, ownerState.position === 'end' && {\n // Styles applied to the root element if `position=\"end\"`.\n marginLeft: 8\n}, ownerState.disablePointerEvents === true && {\n // Styles applied to the root element if `disablePointerEvents={true}`.\n pointerEvents: 'none'\n}));\nconst InputAdornment = /*#__PURE__*/React.forwardRef(function InputAdornment(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiInputAdornment'\n });\n const {\n children,\n className,\n component = 'div',\n disablePointerEvents = false,\n disableTypography = false,\n position,\n variant: variantProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl() || {};\n let variant = variantProp;\n if (variantProp && muiFormControl.variant) {\n if (process.env.NODE_ENV !== 'production') {\n if (variantProp === muiFormControl.variant) {\n console.error('MUI: The `InputAdornment` variant infers the variant prop ' + 'you do not have to provide one.');\n }\n }\n }\n if (muiFormControl && !variant) {\n variant = muiFormControl.variant;\n }\n const ownerState = _extends({}, props, {\n hiddenLabel: muiFormControl.hiddenLabel,\n size: muiFormControl.size,\n disablePointerEvents,\n position,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(FormControlContext.Provider, {\n value: null,\n children: /*#__PURE__*/_jsx(InputAdornmentRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: typeof children === 'string' && !disableTypography ? /*#__PURE__*/_jsx(Typography, {\n color: \"text.secondary\",\n children: children\n }) : /*#__PURE__*/_jsxs(React.Fragment, {\n children: [position === 'start' ? /* notranslate needed while Google Translate will not fix zero-width space issue */_span || (_span = /*#__PURE__*/_jsx(\"span\", {\n className: \"notranslate\",\n children: \"\\u200B\"\n })) : null, children]\n })\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? InputAdornment.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component, normally an `IconButton` or string.\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 * Disable pointer events on the root.\n * This allows for the content of the adornment to focus the `input` on click.\n * @default false\n */\n disablePointerEvents: PropTypes.bool,\n /**\n * If children is a string then disable wrapping in a Typography component.\n * @default false\n */\n disableTypography: PropTypes.bool,\n /**\n * The position this adornment should appear relative to the `Input`.\n */\n position: PropTypes.oneOf(['end', 'start']).isRequired,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n * Note: If you are using the `TextField` component or the `FormControl` component\n * you do not have to set this manually.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default InputAdornment;","'use client';\n\nimport * 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\n/**\n * @deprecated Not used internally. Use `MediaQueryList` from lib.dom.d.ts instead.\n */\n\n/**\n * @deprecated Not used internally. Use `(event: MediaQueryListEvent) => void` instead.\n */\n\nfunction useMediaQueryOld(query, defaultMatches, matchMedia, ssrMatchMedia, noSsr) {\n const [match, setMatch] = React.useState(() => {\n if (noSsr && matchMedia) {\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 (!matchMedia) {\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]);\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, noSsr) {\n const getDefaultSnapshot = React.useCallback(() => defaultMatches, [defaultMatches]);\n const getServerSnapshot = React.useMemo(() => {\n if (noSsr && matchMedia) {\n return () => matchMedia(query).matches;\n }\n if (ssrMatchMedia !== null) {\n const {\n matches\n } = ssrMatchMedia(query);\n return () => matches;\n }\n return getDefaultSnapshot;\n }, [getDefaultSnapshot, query, ssrMatchMedia, noSsr, matchMedia]);\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 = false\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}","import * as React from 'react';\nimport { MuiPickersAdapterContext } from '../../LocalizationProvider/LocalizationProvider';\nexport const useLocalizationContext = () => {\n const localization = React.useContext(MuiPickersAdapterContext);\n\n if (localization === null) {\n throw new Error('MUI: Can not find utils in context. It looks like you forgot to wrap your component in LocalizationProvider, or pass dateAdapter prop directly.');\n }\n\n return localization;\n};\nexport const useUtils = () => useLocalizationContext().utils;\nexport const useDefaultDates = () => useLocalizationContext().defaultDates;\nexport const useLocaleText = () => useLocalizationContext().localeText;\nexport const useNow = () => {\n const utils = useUtils();\n const now = React.useRef(utils.date());\n return now.current;\n};","export const findClosestEnabledDate = ({\n date,\n disableFuture,\n disablePast,\n maxDate,\n minDate,\n isDateDisabled,\n utils\n}) => {\n const today = utils.startOfDay(utils.date());\n\n if (disablePast && utils.isBefore(minDate, today)) {\n minDate = today;\n }\n\n if (disableFuture && utils.isAfter(maxDate, today)) {\n maxDate = today;\n }\n\n let forward = date;\n let backward = date;\n\n if (utils.isBefore(date, minDate)) {\n forward = utils.date(minDate);\n backward = null;\n }\n\n if (utils.isAfter(date, maxDate)) {\n if (backward) {\n backward = utils.date(maxDate);\n }\n\n forward = null;\n }\n\n while (forward || backward) {\n if (forward && utils.isAfter(forward, maxDate)) {\n forward = null;\n }\n\n if (backward && utils.isBefore(backward, minDate)) {\n backward = null;\n }\n\n if (forward) {\n if (!isDateDisabled(forward)) {\n return forward;\n }\n\n forward = utils.addDays(forward, 1);\n }\n\n if (backward) {\n if (!isDateDisabled(backward)) {\n return backward;\n }\n\n backward = utils.addDays(backward, -1);\n }\n }\n\n return null;\n};\nexport const parsePickerInputValue = (utils, value) => {\n const parsedValue = utils.date(value);\n return utils.isValid(parsedValue) ? parsedValue : null;\n};\nexport const parseNonNullablePickerDate = (utils, value, defaultValue) => {\n if (value == null) {\n return defaultValue;\n }\n\n const parsedValue = utils.date(value);\n const isDateValid = utils.isValid(parsedValue);\n\n if (isDateValid) {\n return parsedValue;\n }\n\n return defaultValue;\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { useThemeProps } from '@mui/material/styles';\nimport { useDefaultDates, useUtils } from '../internals/hooks/useUtils';\nimport { parsePickerInputValue, parseNonNullablePickerDate } from '../internals/utils/date-utils';\nexport function useDateTimePickerDefaultizedProps(props, name) {\n var _themeProps$ampm, _themeProps$minDateTi, _themeProps$maxDateTi, _themeProps$minDateTi2, _themeProps$maxDateTi2;\n\n // This is technically unsound if the type parameters appear in optional props.\n // Optional props can be filled by `useThemeProps` with types that don't match the type parameters.\n const themeProps = useThemeProps({\n props,\n name\n });\n const utils = useUtils();\n const defaultDates = useDefaultDates();\n const ampm = (_themeProps$ampm = themeProps.ampm) != null ? _themeProps$ampm : utils.is12HourCycleInCurrentLocale();\n\n if (themeProps.orientation != null && themeProps.orientation !== 'portrait') {\n throw new Error('We are not supporting custom orientation for DateTimePicker yet :(');\n }\n\n return _extends({\n ampm,\n orientation: 'portrait',\n openTo: 'day',\n views: ['year', 'day', 'hours', 'minutes'],\n ampmInClock: true,\n acceptRegex: ampm ? /[\\dap]/gi : /\\d/gi,\n disableMaskedInput: false,\n inputFormat: ampm ? utils.formats.keyboardDateTime12h : utils.formats.keyboardDateTime24h,\n disableIgnoringDatePartForTimeValidation: Boolean(themeProps.minDateTime || themeProps.maxDateTime),\n disablePast: false,\n disableFuture: false\n }, themeProps, {\n minDate: parseNonNullablePickerDate(utils, (_themeProps$minDateTi = themeProps.minDateTime) != null ? _themeProps$minDateTi : themeProps.minDate, defaultDates.minDate),\n maxDate: parseNonNullablePickerDate(utils, (_themeProps$maxDateTi = themeProps.maxDateTime) != null ? _themeProps$maxDateTi : themeProps.maxDate, defaultDates.maxDate),\n minTime: (_themeProps$minDateTi2 = themeProps.minDateTime) != null ? _themeProps$minDateTi2 : themeProps.minTime,\n maxTime: (_themeProps$maxDateTi2 = themeProps.maxDateTime) != null ? _themeProps$maxDateTi2 : themeProps.maxTime\n });\n}\nexport const dateTimePickerValueManager = {\n emptyValue: null,\n getTodayValue: utils => utils.date(),\n parseInput: parsePickerInputValue,\n areValuesEqual: (utils, a, b) => utils.isEqual(a, b)\n};\nexport const resolveViewTypeFromView = view => {\n switch (view) {\n case 'year':\n case 'month':\n case 'day':\n return 'calendar';\n\n default:\n return 'clock';\n }\n};","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t {\n const {\n classes,\n selected\n } = ownerState;\n const slots = {\n root: ['root', selected && 'selected']\n };\n return composeClasses(slots, getPickersToolbarTextUtilityClass, classes);\n};\n\nconst PickersToolbarTextRoot = styled(Typography, {\n name: 'PrivatePickersToolbarText',\n slot: 'Root',\n overridesResolver: (_, styles) => [styles.root, {\n [`&.${pickersToolbarTextClasses.selected}`]: styles.selected\n }]\n})(({\n theme\n}) => ({\n transition: theme.transitions.create('color'),\n color: theme.palette.text.secondary,\n [`&.${pickersToolbarTextClasses.selected}`]: {\n color: theme.palette.text.primary\n }\n}));\nexport const PickersToolbarText = /*#__PURE__*/React.forwardRef(function PickersToolbarText(props, ref) {\n // TODO v6: add 'useThemeProps' once the component class names are aligned\n const {\n className,\n value\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const classes = useUtilityClasses(props);\n return /*#__PURE__*/_jsx(PickersToolbarTextRoot, _extends({\n ref: ref,\n className: clsx(className, classes.root),\n component: \"span\"\n }, other, {\n children: value\n }));\n});","import { createSvgIcon } from '@mui/material/utils';\nimport * as React from 'react';\n/**\n * @ignore - internal component.\n */\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const ArrowDropDown = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M7 10l5 5 5-5z\"\n}), 'ArrowDropDown');\n/**\n * @ignore - internal component.\n */\n\nexport const ArrowLeft = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z\"\n}), 'ArrowLeft');\n/**\n * @ignore - internal component.\n */\n\nexport const ArrowRight = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\"\n}), 'ArrowRight');\n/**\n * @ignore - internal component.\n */\n\nexport const Calendar = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M17 12h-5v5h5v-5zM16 1v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z\"\n}), 'Calendar');\n/**\n * @ignore - internal component.\n */\n\nexport const Clock = createSvgIcon( /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(\"path\", {\n d: \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n }), /*#__PURE__*/_jsx(\"path\", {\n d: \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\"\n })]\n}), 'Clock');\n/**\n * @ignore - internal component.\n */\n\nexport const DateRange = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M9 11H7v2h2v-2zm4 0h-2v2h2v-2zm4 0h-2v2h2v-2zm2-7h-1V2h-2v2H8V2H6v2H5c-1.11 0-1.99.9-1.99 2L3 20c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V9h14v11z\"\n}), 'DateRange');\n/**\n * @ignore - internal component.\n */\n\nexport const Pen = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 00-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\"\n}), 'Pen');\n/**\n * @ignore - internal component.\n */\n\nexport const Time = createSvgIcon( /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(\"path\", {\n d: \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n }), /*#__PURE__*/_jsx(\"path\", {\n d: \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\"\n })]\n}), 'Time');","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getPickersToolbarUtilityClass(slot) {\n return generateUtilityClass('MuiPickersToolbar', slot);\n}\nexport const pickersToolbarClasses = generateUtilityClasses('MuiPickersToolbar', ['root', 'content', 'penIconButton', 'penIconButtonLandscape']);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { Pen, Calendar, Clock } from './icons';\nimport { useLocaleText } from '../hooks/useUtils';\nimport { getPickersToolbarUtilityClass, pickersToolbarClasses } from './pickersToolbarClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n isLandscape\n } = ownerState;\n const slots = {\n root: ['root'],\n content: ['content'],\n penIconButton: ['penIconButton', isLandscape && 'penIconButtonLandscape']\n };\n return composeClasses(slots, getPickersToolbarUtilityClass, classes);\n};\n\nconst PickersToolbarRoot = styled('div', {\n name: 'MuiPickersToolbar',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n padding: theme.spacing(2, 3)\n}, ownerState.isLandscape && {\n height: 'auto',\n maxWidth: 160,\n padding: 16,\n justifyContent: 'flex-start',\n flexWrap: 'wrap'\n}));\nconst PickersToolbarContent = styled(Grid, {\n name: 'MuiPickersToolbar',\n slot: 'Content',\n overridesResolver: (props, styles) => styles.content\n})(({\n ownerState\n}) => _extends({\n flex: 1\n}, !ownerState.isLandscape && {\n alignItems: 'center'\n}));\nconst PickersToolbarPenIconButton = styled(IconButton, {\n name: 'MuiPickersToolbar',\n slot: 'PenIconButton',\n overridesResolver: (props, styles) => [{\n [`&.${pickersToolbarClasses.penIconButtonLandscape}`]: styles.penIconButtonLandscape\n }, styles.penIconButton]\n})({});\n\nconst getViewTypeIcon = viewType => viewType === 'clock' ? /*#__PURE__*/_jsx(Clock, {\n color: \"inherit\"\n}) : /*#__PURE__*/_jsx(Calendar, {\n color: \"inherit\"\n});\n\nexport const PickersToolbar = /*#__PURE__*/React.forwardRef(function PickersToolbar(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPickersToolbar'\n });\n const {\n children,\n className,\n getMobileKeyboardInputViewButtonText,\n isLandscape,\n isMobileKeyboardViewOpen,\n landscapeDirection = 'column',\n toggleMobileKeyboardView,\n toolbarTitle,\n viewType = 'calendar'\n } = props;\n const ownerState = props;\n const localeText = useLocaleText();\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(PickersToolbarRoot, {\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsx(Typography, {\n color: \"text.secondary\",\n variant: \"overline\",\n children: toolbarTitle\n }), /*#__PURE__*/_jsxs(PickersToolbarContent, {\n container: true,\n justifyContent: \"space-between\",\n className: classes.content,\n ownerState: ownerState,\n direction: isLandscape ? landscapeDirection : 'row',\n alignItems: isLandscape ? 'flex-start' : 'flex-end',\n children: [children, /*#__PURE__*/_jsx(PickersToolbarPenIconButton, {\n onClick: toggleMobileKeyboardView,\n className: classes.penIconButton,\n ownerState: ownerState,\n color: \"inherit\",\n \"aria-label\": getMobileKeyboardInputViewButtonText ? getMobileKeyboardInputViewButtonText(isMobileKeyboardViewOpen, viewType) : localeText.inputModeToggleButtonAriaLabel(isMobileKeyboardViewOpen, viewType),\n children: isMobileKeyboardViewOpen ? getViewTypeIcon(viewType) : /*#__PURE__*/_jsx(Pen, {\n color: \"inherit\"\n })\n })]\n })]\n });\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"align\", \"className\", \"selected\", \"typographyClassName\", \"value\", \"variant\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport Button from '@mui/material/Button';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { PickersToolbarText } from './PickersToolbarText';\nimport { getPickersToolbarUtilityClass } from './pickersToolbarClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getPickersToolbarUtilityClass, classes);\n};\n\nconst PickersToolbarButtonRoot = styled(Button, {\n name: 'MuiPickersToolbarButton',\n slot: 'Root',\n overridesResolver: (_, styles) => styles.root\n})({\n padding: 0,\n minWidth: 16,\n textTransform: 'none'\n});\nexport const PickersToolbarButton = /*#__PURE__*/React.forwardRef(function PickersToolbarButton(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPickersToolbarButton'\n });\n\n const {\n align,\n className,\n selected,\n typographyClassName,\n value,\n variant\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const classes = useUtilityClasses(props);\n return /*#__PURE__*/_jsx(PickersToolbarButtonRoot, _extends({\n variant: \"text\",\n ref: ref,\n className: clsx(className, classes.root)\n }, other, {\n children: /*#__PURE__*/_jsx(PickersToolbarText, {\n align: align,\n className: typographyClassName,\n variant: variant,\n value: value,\n selected: selected\n })\n }));\n});","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getDateTimePickerToolbarUtilityClass(slot) {\n return generateUtilityClass('MuiDateTimePickerToolbar', slot);\n}\nexport const dateTimePickerToolbarClasses = generateUtilityClasses('MuiDateTimePickerToolbar', ['root', 'dateContainer', 'timeContainer', 'separator']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"ampm\", \"parsedValue\", \"isMobileKeyboardViewOpen\", \"onChange\", \"openView\", \"setOpenView\", \"toggleMobileKeyboardView\", \"toolbarFormat\", \"toolbarPlaceholder\", \"toolbarTitle\", \"views\"];\nimport * as React from 'react';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { PickersToolbarText } from '../internals/components/PickersToolbarText';\nimport { PickersToolbar } from '../internals/components/PickersToolbar';\nimport { pickersToolbarClasses } from '../internals/components/pickersToolbarClasses';\nimport { PickersToolbarButton } from '../internals/components/PickersToolbarButton';\nimport { useLocaleText, useUtils } from '../internals/hooks/useUtils';\nimport { getDateTimePickerToolbarUtilityClass } from './dateTimePickerToolbarClasses';\nimport { resolveViewTypeFromView } from './shared';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n dateContainer: ['dateContainer'],\n timeContainer: ['timeContainer'],\n separator: ['separator']\n };\n return composeClasses(slots, getDateTimePickerToolbarUtilityClass, classes);\n};\n\nconst DateTimePickerToolbarRoot = styled(PickersToolbar, {\n name: 'MuiDateTimePickerToolbar',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(({\n theme\n}) => ({\n paddingLeft: 16,\n paddingRight: 16,\n justifyContent: 'space-around',\n position: 'relative',\n [`& .${pickersToolbarClasses.penIconButton}`]: _extends({\n position: 'absolute',\n top: 8\n }, theme.direction === 'rtl' ? {\n left: 8\n } : {\n right: 8\n })\n}));\nconst DateTimePickerToolbarDateContainer = styled('div', {\n name: 'MuiDateTimePickerToolbar',\n slot: 'DateContainer',\n overridesResolver: (props, styles) => styles.dateContainer\n})({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start'\n});\nconst DateTimePickerToolbarTimeContainer = styled('div', {\n name: 'MuiDateTimePickerToolbar',\n slot: 'TimeContainer',\n overridesResolver: (props, styles) => styles.timeContainer\n})({\n display: 'flex'\n});\nconst DateTimePickerToolbarSeparator = styled(PickersToolbarText, {\n name: 'MuiDateTimePickerToolbar',\n slot: 'Separator',\n overridesResolver: (props, styles) => styles.separator\n})({\n margin: '0 4px 0 2px',\n cursor: 'default'\n});\n/**\n * @ignore - internal component.\n */\n\nexport function DateTimePickerToolbar(inProps) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDateTimePickerToolbar'\n });\n\n const {\n ampm,\n parsedValue,\n isMobileKeyboardViewOpen,\n openView,\n setOpenView,\n toggleMobileKeyboardView,\n toolbarFormat,\n toolbarPlaceholder = '––',\n toolbarTitle: toolbarTitleProp,\n views\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = props;\n const utils = useUtils();\n const localeText = useLocaleText();\n const classes = useUtilityClasses(ownerState);\n const toolbarTitle = toolbarTitleProp != null ? toolbarTitleProp : localeText.dateTimePickerDefaultToolbarTitle;\n\n const formatHours = time => ampm ? utils.format(time, 'hours12h') : utils.format(time, 'hours24h');\n\n const dateText = React.useMemo(() => {\n if (!parsedValue) {\n return toolbarPlaceholder;\n }\n\n if (toolbarFormat) {\n return utils.formatByString(parsedValue, toolbarFormat);\n }\n\n return utils.format(parsedValue, 'shortDate');\n }, [parsedValue, toolbarFormat, toolbarPlaceholder, utils]);\n return /*#__PURE__*/_jsxs(DateTimePickerToolbarRoot, _extends({\n toolbarTitle: toolbarTitle,\n isMobileKeyboardViewOpen: isMobileKeyboardViewOpen,\n toggleMobileKeyboardView: toggleMobileKeyboardView,\n className: classes.root,\n viewType: resolveViewTypeFromView(openView)\n }, other, {\n isLandscape: false,\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsxs(DateTimePickerToolbarDateContainer, {\n className: classes.dateContainer,\n ownerState: ownerState,\n children: [views.includes('year') && /*#__PURE__*/_jsx(PickersToolbarButton, {\n tabIndex: -1,\n variant: \"subtitle1\",\n onClick: () => setOpenView('year'),\n selected: openView === 'year',\n value: parsedValue ? utils.format(parsedValue, 'year') : '–'\n }), views.includes('day') && /*#__PURE__*/_jsx(PickersToolbarButton, {\n tabIndex: -1,\n variant: \"h4\",\n onClick: () => setOpenView('day'),\n selected: openView === 'day',\n value: dateText\n })]\n }), /*#__PURE__*/_jsxs(DateTimePickerToolbarTimeContainer, {\n className: classes.timeContainer,\n ownerState: ownerState,\n children: [views.includes('hours') && /*#__PURE__*/_jsx(PickersToolbarButton, {\n variant: \"h3\",\n onClick: () => setOpenView('hours'),\n selected: openView === 'hours',\n value: parsedValue ? formatHours(parsedValue) : '--'\n }), views.includes('minutes') && /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(DateTimePickerToolbarSeparator, {\n variant: \"h3\",\n value: \":\",\n className: classes.separator,\n ownerState: ownerState\n }), /*#__PURE__*/_jsx(PickersToolbarButton, {\n variant: \"h3\",\n onClick: () => setOpenView('minutes'),\n selected: openView === 'minutes',\n value: parsedValue ? utils.format(parsedValue, 'minutes') : '--'\n })]\n }), views.includes('seconds') && /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(DateTimePickerToolbarSeparator, {\n variant: \"h3\",\n value: \":\",\n className: classes.separator,\n ownerState: ownerState\n }), /*#__PURE__*/_jsx(PickersToolbarButton, {\n variant: \"h3\",\n onClick: () => setOpenView('seconds'),\n selected: openView === 'seconds',\n value: parsedValue ? utils.format(parsedValue, 'seconds') : '--'\n })]\n })]\n })]\n }));\n}","import * as React from 'react';\n\n/**\n * TODO consider getting rid from wrapper variant\n * @ignore - internal component.\n */\nexport const WrapperVariantContext = /*#__PURE__*/React.createContext(null);","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getDialogActionsUtilityClass(slot) {\n return generateUtilityClass('MuiDialogActions', slot);\n}\nconst dialogActionsClasses = generateUtilityClasses('MuiDialogActions', ['root', 'spacing']);\nexport default dialogActionsClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"disableSpacing\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getDialogActionsUtilityClass } from './dialogActionsClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disableSpacing\n } = ownerState;\n const slots = {\n root: ['root', !disableSpacing && 'spacing']\n };\n return composeClasses(slots, getDialogActionsUtilityClass, classes);\n};\nconst DialogActionsRoot = styled('div', {\n name: 'MuiDialogActions',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, !ownerState.disableSpacing && styles.spacing];\n }\n})(({\n ownerState\n}) => _extends({\n display: 'flex',\n alignItems: 'center',\n padding: 8,\n justifyContent: 'flex-end',\n flex: '0 0 auto'\n}, !ownerState.disableSpacing && {\n '& > :not(:first-of-type)': {\n marginLeft: 8\n }\n}));\nconst DialogActions = /*#__PURE__*/React.forwardRef(function DialogActions(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDialogActions'\n });\n const {\n className,\n disableSpacing = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n disableSpacing\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(DialogActionsRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogActions.propTypes /* 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 * If `true`, the actions do not have additional margin.\n * @default false\n */\n disableSpacing: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default DialogActions;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onAccept\", \"onClear\", \"onCancel\", \"onSetToday\", \"actions\"];\nimport * as React from 'react';\nimport Button from '@mui/material/Button';\nimport DialogActions from '@mui/material/DialogActions';\nimport { useLocaleText } from '../internals/hooks/useUtils';\nimport { WrapperVariantContext } from '../internals/components/wrappers/WrapperVariantContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const PickersActionBar = props => {\n const {\n onAccept,\n onClear,\n onCancel,\n onSetToday,\n actions\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const wrapperVariant = React.useContext(WrapperVariantContext);\n const localeText = useLocaleText();\n const actionsArray = typeof actions === 'function' ? actions(wrapperVariant) : actions;\n\n if (actionsArray == null || actionsArray.length === 0) {\n return null;\n }\n\n const buttons = actionsArray == null ? void 0 : actionsArray.map(actionType => {\n switch (actionType) {\n case 'clear':\n return /*#__PURE__*/_jsx(Button, {\n onClick: onClear,\n children: localeText.clearButtonLabel\n }, actionType);\n\n case 'cancel':\n return /*#__PURE__*/_jsx(Button, {\n onClick: onCancel,\n children: localeText.cancelButtonLabel\n }, actionType);\n\n case 'accept':\n return /*#__PURE__*/_jsx(Button, {\n onClick: onAccept,\n children: localeText.okButtonLabel\n }, actionType);\n\n case 'today':\n return /*#__PURE__*/_jsx(Button, {\n onClick: onSetToday,\n children: localeText.todayButtonLabel\n }, actionType);\n\n default:\n return null;\n }\n });\n return /*#__PURE__*/_jsx(DialogActions, _extends({}, other, {\n children: buttons\n }));\n};","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getPickersPopperUtilityClass(slot) {\n return generateUtilityClass('MuiPickersPopper', slot);\n}\nexport const pickersPopperClasses = generateUtilityClasses('MuiPickersPopper', ['root', 'paper']);","/* Use it instead of .includes method for IE support */\nexport function arrayIncludes(array, itemOrItems) {\n if (Array.isArray(itemOrItems)) {\n return itemOrItems.every(item => array.indexOf(item) !== -1);\n }\n\n return array.indexOf(itemOrItems) !== -1;\n}\nexport const onSpaceOrEnter = (innerFn, onFocus) => event => {\n if (event.key === 'Enter' || event.key === ' ') {\n innerFn(event); // prevent any side effects\n\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (onFocus) {\n onFocus(event);\n }\n};\nexport const executeInTheNextEventLoopTick = fn => {\n setTimeout(fn, 0);\n};\nexport const doNothing = () => {}; // https://www.abeautifulsite.net/posts/finding-the-active-element-in-a-shadow-root/\n\nexport const getActiveElement = (root = document) => {\n const activeEl = root.activeElement;\n\n if (!activeEl) {\n return null;\n }\n\n if (activeEl.shadowRoot) {\n return getActiveElement(activeEl.shadowRoot);\n }\n\n return activeEl;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"onClick\", \"onTouchStart\"];\nimport * as React from 'react';\nimport Grow from '@mui/material/Grow';\nimport Paper from '@mui/material/Paper';\nimport Popper from '@mui/material/Popper';\nimport TrapFocus from '@mui/material/Unstable_TrapFocus';\nimport { useForkRef, useEventCallback, ownerDocument } from '@mui/material/utils';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { PickersActionBar } from '../../PickersActionBar';\nimport { getPickersPopperUtilityClass } from './pickersPopperClasses';\nimport { getActiveElement } from '../utils/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n paper: ['paper']\n };\n return composeClasses(slots, getPickersPopperUtilityClass, classes);\n};\n\nconst PickersPopperRoot = styled(Popper, {\n name: 'MuiPickersPopper',\n slot: 'Root',\n overridesResolver: (_, styles) => styles.root\n})(({\n theme\n}) => ({\n zIndex: theme.zIndex.modal\n}));\nconst PickersPopperPaper = styled(Paper, {\n name: 'MuiPickersPopper',\n slot: 'Paper',\n overridesResolver: (_, styles) => styles.paper\n})(({\n ownerState\n}) => _extends({\n transformOrigin: 'top center',\n outline: 0\n}, ownerState.placement === 'top' && {\n transformOrigin: 'bottom center'\n}));\n\nfunction clickedRootScrollbar(event, doc) {\n return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;\n}\n\n/**\n * Based on @mui/material/ClickAwayListener without the customization.\n * We can probably strip away even more since children won't be portaled.\n * @param {boolean} active Only listen to clicks when the popper is opened.\n * @param {(event: MouseEvent | TouchEvent) => void} onClickAway The callback to call when clicking outside the popper.\n * @returns {Array} The ref and event handler to listen to the outside clicks.\n */\nfunction useClickAwayListener(active, onClickAway) {\n const movedRef = React.useRef(false);\n const syntheticEventRef = React.useRef(false);\n const nodeRef = React.useRef(null);\n const activatedRef = React.useRef(false);\n React.useEffect(() => {\n if (!active) {\n return undefined;\n } // Ensure that this hook is not \"activated\" synchronously.\n // https://github.com/facebook/react/issues/20074\n\n\n function armClickAwayListener() {\n activatedRef.current = true;\n }\n\n document.addEventListener('mousedown', armClickAwayListener, true);\n document.addEventListener('touchstart', armClickAwayListener, true);\n return () => {\n document.removeEventListener('mousedown', armClickAwayListener, true);\n document.removeEventListener('touchstart', armClickAwayListener, true);\n activatedRef.current = false;\n };\n }, [active]); // The handler doesn't take event.defaultPrevented into account:\n //\n // event.preventDefault() is meant to stop default behaviors like\n // clicking a checkbox to check it, hitting a button to submit a form,\n // and hitting left arrow to move the cursor in a text input etc.\n // Only special HTML elements have these default behaviors.\n\n const handleClickAway = useEventCallback(event => {\n if (!activatedRef.current) {\n return;\n } // Given developers can stop the propagation of the synthetic event,\n // we can only be confident with a positive value.\n\n\n const insideReactTree = syntheticEventRef.current;\n syntheticEventRef.current = false;\n const doc = ownerDocument(nodeRef.current); // 1. IE11 support, which trigger the handleClickAway even after the unbind\n // 2. The child might render null.\n // 3. Behave like a blur listener.\n\n if (!nodeRef.current || // is a TouchEvent?\n 'clientX' in event && clickedRootScrollbar(event, doc)) {\n return;\n } // Do not act if user performed touchmove\n\n\n if (movedRef.current) {\n movedRef.current = false;\n return;\n }\n\n let insideDOM; // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n\n if (event.composedPath) {\n insideDOM = event.composedPath().indexOf(nodeRef.current) > -1;\n } else {\n insideDOM = !doc.documentElement.contains(event.target) || nodeRef.current.contains(event.target);\n }\n\n if (!insideDOM && !insideReactTree) {\n onClickAway(event);\n }\n }); // Keep track of mouse/touch events that bubbled up through the portal.\n\n const handleSynthetic = () => {\n syntheticEventRef.current = true;\n };\n\n React.useEffect(() => {\n if (active) {\n const doc = ownerDocument(nodeRef.current);\n\n const handleTouchMove = () => {\n movedRef.current = true;\n };\n\n doc.addEventListener('touchstart', handleClickAway);\n doc.addEventListener('touchmove', handleTouchMove);\n return () => {\n doc.removeEventListener('touchstart', handleClickAway);\n doc.removeEventListener('touchmove', handleTouchMove);\n };\n }\n\n return undefined;\n }, [active, handleClickAway]);\n React.useEffect(() => {\n // TODO This behavior is not tested automatically\n // It's unclear whether this is due to different update semantics in test (batched in act() vs discrete on click).\n // Or if this is a timing related issues due to different Transition components\n // Once we get rid of all the manual scheduling (e.g. setTimeout(update, 0)) we can revisit this code+test.\n if (active) {\n const doc = ownerDocument(nodeRef.current);\n doc.addEventListener('click', handleClickAway);\n return () => {\n doc.removeEventListener('click', handleClickAway); // cleanup `handleClickAway`\n\n syntheticEventRef.current = false;\n };\n }\n\n return undefined;\n }, [active, handleClickAway]);\n return [nodeRef, handleSynthetic, handleSynthetic];\n}\n\nexport function PickersPopper(inProps) {\n var _components$ActionBar;\n\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPickersPopper'\n });\n const {\n anchorEl,\n children,\n containerRef = null,\n onBlur,\n onClose,\n onClear,\n onAccept,\n onCancel,\n onSetToday,\n open,\n PopperProps,\n role,\n TransitionComponent = Grow,\n TrapFocusProps,\n PaperProps = {},\n components,\n componentsProps\n } = props;\n React.useEffect(() => {\n function handleKeyDown(nativeEvent) {\n // IE11, Edge (prior to using Bink?) use 'Esc'\n if (open && (nativeEvent.key === 'Escape' || nativeEvent.key === 'Esc')) {\n onClose();\n }\n }\n\n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [onClose, open]);\n const lastFocusedElementRef = React.useRef(null);\n React.useEffect(() => {\n if (role === 'tooltip') {\n return;\n }\n\n if (open) {\n lastFocusedElementRef.current = getActiveElement(document);\n } else if (lastFocusedElementRef.current && lastFocusedElementRef.current instanceof HTMLElement) {\n // make sure the button is flushed with updated label, before returning focus to it\n // avoids issue, where screen reader could fail to announce selected date after selection\n setTimeout(() => {\n if (lastFocusedElementRef.current instanceof HTMLElement) {\n lastFocusedElementRef.current.focus();\n }\n });\n }\n }, [open, role]);\n const [clickAwayRef, onPaperClick, onPaperTouchStart] = useClickAwayListener(open, onBlur != null ? onBlur : onClose);\n const paperRef = React.useRef(null);\n const handleRef = useForkRef(paperRef, containerRef);\n const handlePaperRef = useForkRef(handleRef, clickAwayRef);\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n\n const {\n onClick: onPaperClickProp,\n onTouchStart: onPaperTouchStartProp\n } = PaperProps,\n otherPaperProps = _objectWithoutPropertiesLoose(PaperProps, _excluded);\n\n const handleKeyDown = event => {\n if (event.key === 'Escape') {\n // stop the propagation to avoid closing parent modal\n event.stopPropagation();\n onClose();\n }\n };\n\n const ActionBar = (_components$ActionBar = components == null ? void 0 : components.ActionBar) != null ? _components$ActionBar : PickersActionBar;\n const PaperContent = (components == null ? void 0 : components.PaperContent) || React.Fragment;\n return /*#__PURE__*/_jsx(PickersPopperRoot, _extends({\n transition: true,\n role: role,\n open: open,\n anchorEl: anchorEl,\n onKeyDown: handleKeyDown,\n className: classes.root\n }, PopperProps, {\n children: ({\n TransitionProps,\n placement\n }) => /*#__PURE__*/_jsx(TrapFocus, _extends({\n open: open,\n disableAutoFocus: true // pickers are managing focus position manually\n // without this prop the focus is returned to the button before `aria-label` is updated\n // which would force screen readers to read too old label\n ,\n disableRestoreFocus: true,\n disableEnforceFocus: role === 'tooltip',\n isEnabled: () => true\n }, TrapFocusProps, {\n children: /*#__PURE__*/_jsx(TransitionComponent, _extends({}, TransitionProps, {\n children: /*#__PURE__*/_jsx(PickersPopperPaper, _extends({\n tabIndex: -1,\n elevation: 8,\n ref: handlePaperRef,\n onClick: event => {\n onPaperClick(event);\n\n if (onPaperClickProp) {\n onPaperClickProp(event);\n }\n },\n onTouchStart: event => {\n onPaperTouchStart(event);\n\n if (onPaperTouchStartProp) {\n onPaperTouchStartProp(event);\n }\n },\n ownerState: _extends({}, ownerState, {\n placement\n }),\n className: classes.paper\n }, otherPaperProps, {\n children: /*#__PURE__*/_jsxs(PaperContent, _extends({}, componentsProps == null ? void 0 : componentsProps.paperContent, {\n children: [children, /*#__PURE__*/_jsx(ActionBar, _extends({\n onAccept: onAccept,\n onClear: onClear,\n onCancel: onCancel,\n onSetToday: onSetToday,\n actions: []\n }, componentsProps == null ? void 0 : componentsProps.actionBar))]\n }))\n }))\n }))\n }))\n }));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useForkRef } from '@mui/material/utils';\nimport { WrapperVariantContext } from './WrapperVariantContext';\nimport { PickersPopper } from '../PickersPopper';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function DesktopWrapper(props) {\n const {\n children,\n DateInputProps,\n KeyboardDateInputComponent,\n onClear,\n onDismiss,\n onCancel,\n onAccept,\n onSetToday,\n open,\n PopperProps,\n PaperProps,\n TransitionComponent,\n components,\n componentsProps\n } = props;\n const ownInputRef = React.useRef(null);\n const inputRef = useForkRef(DateInputProps.inputRef, ownInputRef);\n return /*#__PURE__*/_jsxs(WrapperVariantContext.Provider, {\n value: \"desktop\",\n children: [/*#__PURE__*/_jsx(KeyboardDateInputComponent, _extends({}, DateInputProps, {\n inputRef: inputRef\n })), /*#__PURE__*/_jsx(PickersPopper, {\n role: \"dialog\",\n open: open,\n anchorEl: ownInputRef.current,\n TransitionComponent: TransitionComponent,\n PopperProps: PopperProps,\n PaperProps: PaperProps,\n onClose: onDismiss,\n onCancel: onCancel,\n onClear: onClear,\n onAccept: onAccept,\n onSetToday: onSetToday,\n components: components,\n componentsProps: componentsProps,\n children: children\n })]\n });\n}","import * as React from 'react';\nimport { useControlled } from '@mui/material/utils';\nimport { arrayIncludes } from '../utils/utils';\nexport function useViews({\n onChange,\n onViewChange,\n openTo,\n view,\n views\n}) {\n var _views, _views2;\n\n const [openView, setOpenView] = useControlled({\n name: 'Picker',\n state: 'view',\n controlled: view,\n default: openTo && arrayIncludes(views, openTo) ? openTo : views[0]\n });\n const previousView = (_views = views[views.indexOf(openView) - 1]) != null ? _views : null;\n const nextView = (_views2 = views[views.indexOf(openView) + 1]) != null ? _views2 : null;\n const changeView = React.useCallback(newView => {\n setOpenView(newView);\n\n if (onViewChange) {\n onViewChange(newView);\n }\n }, [setOpenView, onViewChange]);\n const openNext = React.useCallback(() => {\n if (nextView) {\n changeView(nextView);\n }\n }, [nextView, changeView]);\n const handleChangeAndOpenNext = React.useCallback((date, currentViewSelectionState) => {\n const isSelectionFinishedOnCurrentView = currentViewSelectionState === 'finish';\n const globalSelectionState = isSelectionFinishedOnCurrentView && Boolean(nextView) ? 'partial' : currentViewSelectionState;\n onChange(date, globalSelectionState);\n\n if (isSelectionFinishedOnCurrentView) {\n openNext();\n }\n }, [nextView, onChange, openNext]);\n return {\n handleChangeAndOpenNext,\n nextView,\n previousView,\n openNext,\n openView,\n setOpenView: changeView\n };\n}","export const CLOCK_WIDTH = 220;\nexport const CLOCK_HOUR_WIDTH = 36;\nconst clockCenter = {\n x: CLOCK_WIDTH / 2,\n y: CLOCK_WIDTH / 2\n};\nconst baseClockPoint = {\n x: clockCenter.x,\n y: 0\n};\nconst cx = baseClockPoint.x - clockCenter.x;\nconst cy = baseClockPoint.y - clockCenter.y;\n\nconst rad2deg = rad => rad * (180 / Math.PI);\n\nconst getAngleValue = (step, offsetX, offsetY) => {\n const x = offsetX - clockCenter.x;\n const y = offsetY - clockCenter.y;\n const atan = Math.atan2(cx, cy) - Math.atan2(x, y);\n let deg = rad2deg(atan);\n deg = Math.round(deg / step) * step;\n deg %= 360;\n const value = Math.floor(deg / step) || 0;\n const delta = x ** 2 + y ** 2;\n const distance = Math.sqrt(delta);\n return {\n value,\n distance\n };\n};\n\nexport const getMinutes = (offsetX, offsetY, step = 1) => {\n const angleStep = step * 6;\n let {\n value\n } = getAngleValue(angleStep, offsetX, offsetY);\n value = value * step % 60;\n return value;\n};\nexport const getHours = (offsetX, offsetY, ampm) => {\n const {\n value,\n distance\n } = getAngleValue(30, offsetX, offsetY);\n let hour = value || 12;\n\n if (!ampm) {\n if (distance < CLOCK_WIDTH / 2 - CLOCK_HOUR_WIDTH) {\n hour += 12;\n hour %= 24;\n }\n } else {\n hour %= 12;\n }\n\n return hour;\n};","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getClockPointerUtilityClass(slot) {\n return generateUtilityClass('MuiClockPointer', slot);\n}\nexport const clockPointerClasses = generateUtilityClasses('MuiClockPointer', ['root', 'thumb']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"hasSelected\", \"isInner\", \"type\", \"value\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { CLOCK_WIDTH, CLOCK_HOUR_WIDTH } from './shared';\nimport { getClockPointerUtilityClass } from './clockPointerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n thumb: ['thumb']\n };\n return composeClasses(slots, getClockPointerUtilityClass, classes);\n};\n\nconst ClockPointerRoot = styled('div', {\n name: 'MuiClockPointer',\n slot: 'Root',\n overridesResolver: (_, styles) => styles.root\n})(({\n theme,\n ownerState\n}) => _extends({\n width: 2,\n backgroundColor: theme.palette.primary.main,\n position: 'absolute',\n left: 'calc(50% - 1px)',\n bottom: '50%',\n transformOrigin: 'center bottom 0px'\n}, ownerState.shouldAnimate && {\n transition: theme.transitions.create(['transform', 'height'])\n}));\nconst ClockPointerThumb = styled('div', {\n name: 'MuiClockPointer',\n slot: 'Thumb',\n overridesResolver: (_, styles) => styles.thumb\n})(({\n theme,\n ownerState\n}) => _extends({\n width: 4,\n height: 4,\n backgroundColor: theme.palette.primary.contrastText,\n borderRadius: '50%',\n position: 'absolute',\n top: -21,\n left: `calc(50% - ${CLOCK_HOUR_WIDTH / 2}px)`,\n border: `${(CLOCK_HOUR_WIDTH - 4) / 2}px solid ${theme.palette.primary.main}`,\n boxSizing: 'content-box'\n}, ownerState.hasSelected && {\n backgroundColor: theme.palette.primary.main\n}));\n/**\n * @ignore - internal component.\n */\n\nexport function ClockPointer(inProps) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiClockPointer'\n });\n\n const {\n className,\n isInner,\n type,\n value\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const previousType = React.useRef(type);\n React.useEffect(() => {\n previousType.current = type;\n }, [type]);\n\n const ownerState = _extends({}, props, {\n shouldAnimate: previousType.current !== type\n });\n\n const classes = useUtilityClasses(ownerState);\n\n const getAngleStyle = () => {\n const max = type === 'hours' ? 12 : 60;\n let angle = 360 / max * value;\n\n if (type === 'hours' && value > 12) {\n angle -= 360; // round up angle to max 360 degrees\n }\n\n return {\n height: Math.round((isInner ? 0.26 : 0.4) * CLOCK_WIDTH),\n transform: `rotateZ(${angle}deg)`\n };\n };\n\n return /*#__PURE__*/_jsx(ClockPointerRoot, _extends({\n style: getAngleStyle(),\n className: clsx(className, classes.root),\n ownerState: ownerState\n }, other, {\n children: /*#__PURE__*/_jsx(ClockPointerThumb, {\n ownerState: ownerState,\n className: classes.thumb\n })\n }));\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getClockUtilityClass(slot) {\n return generateUtilityClass('MuiClock', slot);\n}\nexport const clockClasses = generateUtilityClasses('MuiClock', ['root', 'clock', 'wrapper', 'squareMask', 'pin', 'amButton', 'pmButton']);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport IconButton from '@mui/material/IconButton';\nimport Typography from '@mui/material/Typography';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_useEnhancedEffect as useEnhancedEffect, unstable_composeClasses as composeClasses } from '@mui/utils';\nimport { ClockPointer } from './ClockPointer';\nimport { useUtils } from '../internals/hooks/useUtils';\nimport { WrapperVariantContext } from '../internals/components/wrappers/WrapperVariantContext';\nimport { getHours, getMinutes } from './shared';\nimport { getClockUtilityClass } from './clockClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n clock: ['clock'],\n wrapper: ['wrapper'],\n squareMask: ['squareMask'],\n pin: ['pin'],\n amButton: ['amButton'],\n pmButton: ['pmButton']\n };\n return composeClasses(slots, getClockUtilityClass, classes);\n};\n\nconst ClockRoot = styled('div', {\n name: 'MuiClock',\n slot: 'Root',\n overridesResolver: (_, styles) => styles.root\n})(({\n theme\n}) => ({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n margin: theme.spacing(2)\n}));\nconst ClockClock = styled('div', {\n name: 'MuiClock',\n slot: 'Clock',\n overridesResolver: (_, styles) => styles.clock\n})({\n backgroundColor: 'rgba(0,0,0,.07)',\n borderRadius: '50%',\n height: 220,\n width: 220,\n flexShrink: 0,\n position: 'relative',\n pointerEvents: 'none'\n});\nconst ClockWrapper = styled('div', {\n name: 'MuiClock',\n slot: 'Wrapper',\n overridesResolver: (_, styles) => styles.wrapper\n})({\n '&:focus': {\n outline: 'none'\n }\n});\nconst ClockSquareMask = styled('div', {\n name: 'MuiClock',\n slot: 'SquareMask',\n overridesResolver: (_, styles) => styles.squareMask\n})(({\n ownerState\n}) => _extends({\n width: '100%',\n height: '100%',\n position: 'absolute',\n pointerEvents: 'auto',\n outline: 0,\n // Disable scroll capabilities.\n touchAction: 'none',\n userSelect: 'none'\n}, ownerState.disabled ? {} : {\n '@media (pointer: fine)': {\n cursor: 'pointer',\n borderRadius: '50%'\n },\n '&:active': {\n cursor: 'move'\n }\n}));\nconst ClockPin = styled('div', {\n name: 'MuiClock',\n slot: 'Pin',\n overridesResolver: (_, styles) => styles.pin\n})(({\n theme\n}) => ({\n width: 6,\n height: 6,\n borderRadius: '50%',\n backgroundColor: theme.palette.primary.main,\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)'\n}));\nconst ClockAmButton = styled(IconButton, {\n name: 'MuiClock',\n slot: 'AmButton',\n overridesResolver: (_, styles) => styles.amButton\n})(({\n theme,\n ownerState\n}) => _extends({\n zIndex: 1,\n position: 'absolute',\n bottom: ownerState.ampmInClock ? 64 : 8,\n left: 8\n}, ownerState.meridiemMode === 'am' && {\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.primary.contrastText,\n '&:hover': {\n backgroundColor: theme.palette.primary.light\n }\n}));\nconst ClockPmButton = styled(IconButton, {\n name: 'MuiClock',\n slot: 'PmButton',\n overridesResolver: (_, styles) => styles.pmButton\n})(({\n theme,\n ownerState\n}) => _extends({\n zIndex: 1,\n position: 'absolute',\n bottom: ownerState.ampmInClock ? 64 : 8,\n right: 8\n}, ownerState.meridiemMode === 'pm' && {\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.primary.contrastText,\n '&:hover': {\n backgroundColor: theme.palette.primary.light\n }\n}));\n/**\n * @ignore - internal component.\n */\n\nexport function Clock(inProps) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiClock'\n });\n const {\n ampm,\n ampmInClock,\n autoFocus,\n children,\n date,\n getClockLabelText,\n handleMeridiemChange,\n isTimeDisabled,\n meridiemMode,\n minutesStep = 1,\n onChange,\n selectedId,\n type,\n value,\n disabled,\n readOnly,\n className\n } = props;\n const ownerState = props;\n const utils = useUtils();\n const wrapperVariant = React.useContext(WrapperVariantContext);\n const isMoving = React.useRef(false);\n const classes = useUtilityClasses(ownerState);\n const isSelectedTimeDisabled = isTimeDisabled(value, type);\n const isPointerInner = !ampm && type === 'hours' && (value < 1 || value > 12);\n\n const handleValueChange = (newValue, isFinish) => {\n if (disabled || readOnly) {\n return;\n }\n\n if (isTimeDisabled(newValue, type)) {\n return;\n }\n\n onChange(newValue, isFinish);\n };\n\n const setTime = (event, isFinish) => {\n let {\n offsetX,\n offsetY\n } = event;\n\n if (offsetX === undefined) {\n const rect = event.target.getBoundingClientRect();\n offsetX = event.changedTouches[0].clientX - rect.left;\n offsetY = event.changedTouches[0].clientY - rect.top;\n }\n\n const newSelectedValue = type === 'seconds' || type === 'minutes' ? getMinutes(offsetX, offsetY, minutesStep) : getHours(offsetX, offsetY, Boolean(ampm));\n handleValueChange(newSelectedValue, isFinish);\n };\n\n const handleTouchMove = event => {\n isMoving.current = true;\n setTime(event, 'shallow');\n };\n\n const handleTouchEnd = event => {\n if (isMoving.current) {\n setTime(event, 'finish');\n isMoving.current = false;\n }\n };\n\n const handleMouseMove = event => {\n // event.buttons & PRIMARY_MOUSE_BUTTON\n if (event.buttons > 0) {\n setTime(event.nativeEvent, 'shallow');\n }\n };\n\n const handleMouseUp = event => {\n if (isMoving.current) {\n isMoving.current = false;\n }\n\n setTime(event.nativeEvent, 'finish');\n };\n\n const hasSelected = React.useMemo(() => {\n if (type === 'hours') {\n return true;\n }\n\n return value % 5 === 0;\n }, [type, value]);\n const keyboardControlStep = type === 'minutes' ? minutesStep : 1;\n const listboxRef = React.useRef(null); // Since this is rendered when a Popper is opened we can't use passive effects.\n // Focusing in passive effects in Popper causes scroll jump.\n\n useEnhancedEffect(() => {\n if (autoFocus) {\n // The ref not being resolved would be a bug in MUI.\n listboxRef.current.focus();\n }\n }, [autoFocus]);\n\n const handleKeyDown = event => {\n // TODO: Why this early exit?\n if (isMoving.current) {\n return;\n }\n\n switch (event.key) {\n case 'Home':\n // annulate both hours and minutes\n handleValueChange(0, 'partial');\n event.preventDefault();\n break;\n\n case 'End':\n handleValueChange(type === 'minutes' ? 59 : 23, 'partial');\n event.preventDefault();\n break;\n\n case 'ArrowUp':\n handleValueChange(value + keyboardControlStep, 'partial');\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n handleValueChange(value - keyboardControlStep, 'partial');\n event.preventDefault();\n break;\n\n default: // do nothing\n\n }\n };\n\n return /*#__PURE__*/_jsxs(ClockRoot, {\n className: clsx(className, classes.root),\n children: [/*#__PURE__*/_jsxs(ClockClock, {\n className: classes.clock,\n children: [/*#__PURE__*/_jsx(ClockSquareMask, {\n onTouchMove: handleTouchMove,\n onTouchEnd: handleTouchEnd,\n onMouseUp: handleMouseUp,\n onMouseMove: handleMouseMove,\n ownerState: {\n disabled\n },\n className: classes.squareMask\n }), !isSelectedTimeDisabled && /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(ClockPin, {\n className: classes.pin\n }), date && /*#__PURE__*/_jsx(ClockPointer, {\n type: type,\n value: value,\n isInner: isPointerInner,\n hasSelected: hasSelected\n })]\n }), /*#__PURE__*/_jsx(ClockWrapper, {\n \"aria-activedescendant\": selectedId,\n \"aria-label\": getClockLabelText(type, date, utils),\n ref: listboxRef,\n role: \"listbox\",\n onKeyDown: handleKeyDown,\n tabIndex: 0,\n className: classes.wrapper,\n children: children\n })]\n }), ampm && (wrapperVariant === 'desktop' || ampmInClock) && /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(ClockAmButton, {\n onClick: readOnly ? undefined : () => handleMeridiemChange('am'),\n disabled: disabled || meridiemMode === null,\n ownerState: ownerState,\n className: classes.amButton,\n children: /*#__PURE__*/_jsx(Typography, {\n variant: \"caption\",\n children: \"AM\"\n })\n }), /*#__PURE__*/_jsx(ClockPmButton, {\n disabled: disabled || meridiemMode === null,\n onClick: readOnly ? undefined : () => handleMeridiemChange('pm'),\n ownerState: ownerState,\n className: classes.pmButton,\n children: /*#__PURE__*/_jsx(Typography, {\n variant: \"caption\",\n children: \"PM\"\n })\n })]\n })]\n });\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getClockNumberUtilityClass(slot) {\n return generateUtilityClass('MuiClockNumber', slot);\n}\nexport const clockNumberClasses = generateUtilityClasses('MuiClockNumber', ['root', 'selected', 'disabled']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"disabled\", \"index\", \"inner\", \"label\", \"selected\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { CLOCK_WIDTH, CLOCK_HOUR_WIDTH } from './shared';\nimport { getClockNumberUtilityClass, clockNumberClasses } from './clockNumberClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n selected,\n disabled\n } = ownerState;\n const slots = {\n root: ['root', selected && 'selected', disabled && 'disabled']\n };\n return composeClasses(slots, getClockNumberUtilityClass, classes);\n};\n\nconst ClockNumberRoot = styled('span', {\n name: 'MuiClockNumber',\n slot: 'Root',\n overridesResolver: (_, styles) => [styles.root, {\n [`&.${clockNumberClasses.disabled}`]: styles.disabled\n }, {\n [`&.${clockNumberClasses.selected}`]: styles.selected\n }]\n})(({\n theme,\n ownerState\n}) => _extends({\n height: CLOCK_HOUR_WIDTH,\n width: CLOCK_HOUR_WIDTH,\n position: 'absolute',\n left: `calc((100% - ${CLOCK_HOUR_WIDTH}px) / 2)`,\n display: 'inline-flex',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '50%',\n color: theme.palette.text.primary,\n fontFamily: theme.typography.fontFamily,\n '&:focused': {\n backgroundColor: theme.palette.background.paper\n },\n [`&.${clockNumberClasses.selected}`]: {\n color: theme.palette.primary.contrastText\n },\n [`&.${clockNumberClasses.disabled}`]: {\n pointerEvents: 'none',\n color: theme.palette.text.disabled\n }\n}, ownerState.inner && _extends({}, theme.typography.body2, {\n color: theme.palette.text.secondary\n})));\n/**\n * @ignore - internal component.\n */\n\nexport function ClockNumber(inProps) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiClockNumber'\n });\n\n const {\n className,\n disabled,\n index,\n inner,\n label,\n selected\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n const angle = index % 12 / 12 * Math.PI * 2 - Math.PI / 2;\n const length = (CLOCK_WIDTH - CLOCK_HOUR_WIDTH - 2) / 2 * (inner ? 0.65 : 1);\n const x = Math.round(Math.cos(angle) * length);\n const y = Math.round(Math.sin(angle) * length);\n return /*#__PURE__*/_jsx(ClockNumberRoot, _extends({\n className: clsx(className, classes.root),\n \"aria-disabled\": disabled ? true : undefined,\n \"aria-selected\": selected ? true : undefined,\n role: \"option\",\n style: {\n transform: `translate(${x}px, ${y + (CLOCK_WIDTH - CLOCK_HOUR_WIDTH) / 2}px`\n },\n ownerState: ownerState\n }, other, {\n children: label\n }));\n}","import * as React from 'react';\nimport { ClockNumber } from './ClockNumber';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n * @ignore - internal component.\n */\nexport const getHourNumbers = ({\n ampm,\n date,\n getClockNumberText,\n isDisabled,\n selectedId,\n utils\n}) => {\n const currentHours = date ? utils.getHours(date) : null;\n const hourNumbers = [];\n const startHour = ampm ? 1 : 0;\n const endHour = ampm ? 12 : 23;\n\n const isSelected = hour => {\n if (currentHours === null) {\n return false;\n }\n\n if (ampm) {\n if (hour === 12) {\n return currentHours === 12 || currentHours === 0;\n }\n\n return currentHours === hour || currentHours - 12 === hour;\n }\n\n return currentHours === hour;\n };\n\n for (let hour = startHour; hour <= endHour; hour += 1) {\n let label = hour.toString();\n\n if (hour === 0) {\n label = '00';\n }\n\n const inner = !ampm && (hour === 0 || hour > 12);\n label = utils.formatNumber(label);\n const selected = isSelected(hour);\n hourNumbers.push( /*#__PURE__*/_jsx(ClockNumber, {\n id: selected ? selectedId : undefined,\n index: hour,\n inner: inner,\n selected: selected,\n disabled: isDisabled(hour),\n label: label,\n \"aria-label\": getClockNumberText(label)\n }, hour));\n }\n\n return hourNumbers;\n};\nexport const getMinutesNumbers = ({\n utils,\n value,\n isDisabled,\n getClockNumberText,\n selectedId\n}) => {\n const f = utils.formatNumber;\n return [[5, f('05')], [10, f('10')], [15, f('15')], [20, f('20')], [25, f('25')], [30, f('30')], [35, f('35')], [40, f('40')], [45, f('45')], [50, f('50')], [55, f('55')], [0, f('00')]].map(([numberValue, label], index) => {\n const selected = numberValue === value;\n return /*#__PURE__*/_jsx(ClockNumber, {\n label: label,\n id: selected ? selectedId : undefined,\n index: index + 1,\n inner: false,\n disabled: isDisabled(numberValue),\n selected: selected,\n \"aria-label\": getClockNumberText(label)\n }, numberValue);\n });\n};","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getPickersArrowSwitcherUtilityClass(slot) {\n return generateUtilityClass('MuiPickersArrowSwitcher', slot);\n}\nexport const pickersArrowSwitcherClasses = generateUtilityClasses('MuiPickersArrowSwitcher', ['root', 'spacer', 'button']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"components\", \"componentsProps\", \"isLeftDisabled\", \"isLeftHidden\", \"isRightDisabled\", \"isRightHidden\", \"leftArrowButtonText\", \"onLeftClick\", \"onRightClick\", \"rightArrowButtonText\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport Typography from '@mui/material/Typography';\nimport { useTheme, styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport IconButton from '@mui/material/IconButton';\nimport { ArrowLeft, ArrowRight } from './icons';\nimport { getPickersArrowSwitcherUtilityClass } from './pickersArrowSwitcherClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n spacer: ['spacer'],\n button: ['button']\n };\n return composeClasses(slots, getPickersArrowSwitcherUtilityClass, classes);\n};\n\nconst PickersArrowSwitcherRoot = styled('div', {\n name: 'MuiPickersArrowSwitcher',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'flex'\n});\nconst PickersArrowSwitcherSpacer = styled('div', {\n name: 'MuiPickersArrowSwitcher',\n slot: 'Spacer',\n overridesResolver: (props, styles) => styles.spacer\n})(({\n theme\n}) => ({\n width: theme.spacing(3)\n}));\nconst PickersArrowSwitcherButton = styled(IconButton, {\n name: 'MuiPickersArrowSwitcher',\n slot: 'Button',\n overridesResolver: (props, styles) => styles.button\n})(({\n ownerState\n}) => _extends({}, ownerState.hidden && {\n visibility: 'hidden'\n}));\nexport const PickersArrowSwitcher = /*#__PURE__*/React.forwardRef(function PickersArrowSwitcher(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPickersArrowSwitcher'\n });\n\n const {\n children,\n className,\n components,\n componentsProps,\n isLeftDisabled,\n isLeftHidden,\n isRightDisabled,\n isRightHidden,\n leftArrowButtonText,\n onLeftClick,\n onRightClick,\n rightArrowButtonText\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const theme = useTheme();\n const isRtl = theme.direction === 'rtl';\n const leftArrowButtonProps = (componentsProps == null ? void 0 : componentsProps.leftArrowButton) || {};\n const LeftArrowIcon = (components == null ? void 0 : components.LeftArrowIcon) || ArrowLeft;\n const rightArrowButtonProps = (componentsProps == null ? void 0 : componentsProps.rightArrowButton) || {};\n const RightArrowIcon = (components == null ? void 0 : components.RightArrowIcon) || ArrowRight;\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(PickersArrowSwitcherRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, other, {\n children: [/*#__PURE__*/_jsx(PickersArrowSwitcherButton, _extends({\n as: components == null ? void 0 : components.LeftArrowButton,\n size: \"small\",\n \"aria-label\": leftArrowButtonText,\n title: leftArrowButtonText,\n disabled: isLeftDisabled,\n edge: \"end\",\n onClick: onLeftClick\n }, leftArrowButtonProps, {\n className: clsx(classes.button, leftArrowButtonProps.className),\n ownerState: _extends({}, ownerState, leftArrowButtonProps, {\n hidden: isLeftHidden\n }),\n children: isRtl ? /*#__PURE__*/_jsx(RightArrowIcon, {}) : /*#__PURE__*/_jsx(LeftArrowIcon, {})\n })), children ? /*#__PURE__*/_jsx(Typography, {\n variant: \"subtitle1\",\n component: \"span\",\n children: children\n }) : /*#__PURE__*/_jsx(PickersArrowSwitcherSpacer, {\n className: classes.spacer,\n ownerState: ownerState\n }), /*#__PURE__*/_jsx(PickersArrowSwitcherButton, _extends({\n as: components == null ? void 0 : components.RightArrowButton,\n size: \"small\",\n \"aria-label\": rightArrowButtonText,\n title: rightArrowButtonText,\n edge: \"start\",\n disabled: isRightDisabled,\n onClick: onRightClick\n }, rightArrowButtonProps, {\n className: clsx(classes.button, rightArrowButtonProps.className),\n ownerState: _extends({}, ownerState, rightArrowButtonProps, {\n hidden: isRightHidden\n }),\n children: isRtl ? /*#__PURE__*/_jsx(LeftArrowIcon, {}) : /*#__PURE__*/_jsx(RightArrowIcon, {})\n }))]\n }));\n});","export const getMeridiem = (date, utils) => {\n if (!date) {\n return null;\n }\n\n return utils.getHours(date) >= 12 ? 'pm' : 'am';\n};\nexport const convertValueToMeridiem = (value, meridiem, ampm) => {\n if (ampm) {\n const currentMeridiem = value >= 12 ? 'pm' : 'am';\n\n if (currentMeridiem !== meridiem) {\n return meridiem === 'am' ? value - 12 : value + 12;\n }\n }\n\n return value;\n};\nexport const convertToMeridiem = (time, meridiem, ampm, utils) => {\n const newHoursAmount = convertValueToMeridiem(utils.getHours(time), meridiem, ampm);\n return utils.setHours(time, newHoursAmount);\n};\nexport const getSecondsInDay = (date, utils) => {\n return utils.getHours(date) * 3600 + utils.getMinutes(date) * 60 + utils.getSeconds(date);\n};\nexport const createIsAfterIgnoreDatePart = (disableIgnoringDatePartForTimeValidation = false, utils) => (dateLeft, dateRight) => {\n if (disableIgnoringDatePartForTimeValidation) {\n return utils.isAfter(dateLeft, dateRight);\n }\n\n return getSecondsInDay(dateLeft, utils) > getSecondsInDay(dateRight, utils);\n};","import * as React from 'react';\nimport { useUtils } from './useUtils';\nimport { getMeridiem, convertToMeridiem } from '../utils/time-utils';\nexport function useNextMonthDisabled(month, {\n disableFuture,\n maxDate\n}) {\n const utils = useUtils();\n return React.useMemo(() => {\n const now = utils.date();\n const lastEnabledMonth = utils.startOfMonth(disableFuture && utils.isBefore(now, maxDate) ? now : maxDate);\n return !utils.isAfter(lastEnabledMonth, month);\n }, [disableFuture, maxDate, month, utils]);\n}\nexport function usePreviousMonthDisabled(month, {\n disablePast,\n minDate\n}) {\n const utils = useUtils();\n return React.useMemo(() => {\n const now = utils.date();\n const firstEnabledMonth = utils.startOfMonth(disablePast && utils.isAfter(now, minDate) ? now : minDate);\n return !utils.isBefore(firstEnabledMonth, month);\n }, [disablePast, minDate, month, utils]);\n}\nexport function useMeridiemMode(date, ampm, onChange) {\n const utils = useUtils();\n const meridiemMode = getMeridiem(date, utils);\n const handleMeridiemChange = React.useCallback(mode => {\n const timeWithMeridiem = date == null ? null : convertToMeridiem(date, mode, Boolean(ampm), utils);\n onChange(timeWithMeridiem, 'partial');\n }, [ampm, date, onChange, utils]);\n return {\n meridiemMode,\n handleMeridiemChange\n };\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getClockPickerUtilityClass(slot) {\n return generateUtilityClass('MuiClockPicker', slot);\n}\nexport const clockPickerClasses = generateUtilityClasses('MuiClockPicker', ['root', 'arrowSwitcher']);","import { styled } from '@mui/material/styles';\nimport { DIALOG_WIDTH, VIEW_HEIGHT } from '../../constants/dimensions';\nexport const PickerViewRoot = styled('div')({\n overflowX: 'hidden',\n width: DIALOG_WIDTH,\n maxHeight: VIEW_HEIGHT,\n display: 'flex',\n flexDirection: 'column',\n margin: '0 auto'\n});","export const DAY_SIZE = 36;\nexport const DAY_MARGIN = 2;\nexport const DIALOG_WIDTH = 320;\nexport const VIEW_HEIGHT = 358;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { unstable_useId as useId } from '@mui/material/utils';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { Clock } from './Clock';\nimport { useUtils, useNow, useLocaleText } from '../internals/hooks/useUtils';\nimport { buildDeprecatedPropsWarning } from '../internals/utils/warning';\nimport { getHourNumbers, getMinutesNumbers } from './ClockNumbers';\nimport { PickersArrowSwitcher } from '../internals/components/PickersArrowSwitcher';\nimport { convertValueToMeridiem, createIsAfterIgnoreDatePart } from '../internals/utils/time-utils';\nimport { useViews } from '../internals/hooks/useViews';\nimport { useMeridiemMode } from '../internals/hooks/date-helpers-hooks';\nimport { getClockPickerUtilityClass } from './clockPickerClasses';\nimport { PickerViewRoot } from '../internals/components/PickerViewRoot';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n arrowSwitcher: ['arrowSwitcher']\n };\n return composeClasses(slots, getClockPickerUtilityClass, classes);\n};\n\nconst ClockPickerRoot = styled(PickerViewRoot, {\n name: 'MuiClockPicker',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'flex',\n flexDirection: 'column'\n});\nconst ClockPickerArrowSwitcher = styled(PickersArrowSwitcher, {\n name: 'MuiClockPicker',\n slot: 'ArrowSwitcher',\n overridesResolver: (props, styles) => styles.arrowSwitcher\n})({\n position: 'absolute',\n right: 12,\n top: 15\n});\nconst deprecatedPropsWarning = buildDeprecatedPropsWarning('Props for translation are deprecated. See https://mui.com/x/react-date-pickers/localization for more information.');\n/**\n *\n * API:\n *\n * - [ClockPicker API](https://mui.com/x/api/date-pickers/clock-picker/)\n */\n\nexport const ClockPicker = /*#__PURE__*/React.forwardRef(function ClockPicker(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiClockPicker'\n });\n const {\n ampm = false,\n ampmInClock = false,\n autoFocus,\n components,\n componentsProps,\n date,\n disableIgnoringDatePartForTimeValidation,\n getClockLabelText: getClockLabelTextProp,\n getHoursClockNumberText: getHoursClockNumberTextProp,\n getMinutesClockNumberText: getMinutesClockNumberTextProp,\n getSecondsClockNumberText: getSecondsClockNumberTextProp,\n leftArrowButtonText: leftArrowButtonTextProp,\n maxTime,\n minTime,\n minutesStep = 1,\n rightArrowButtonText: rightArrowButtonTextProp,\n shouldDisableTime,\n showViewSwitcher,\n onChange,\n view,\n views = ['hours', 'minutes'],\n openTo,\n onViewChange,\n className,\n disabled,\n readOnly\n } = props;\n deprecatedPropsWarning({\n leftArrowButtonText: leftArrowButtonTextProp,\n rightArrowButtonText: rightArrowButtonTextProp,\n getClockLabelText: getClockLabelTextProp,\n getHoursClockNumberText: getHoursClockNumberTextProp,\n getMinutesClockNumberText: getMinutesClockNumberTextProp,\n getSecondsClockNumberText: getSecondsClockNumberTextProp\n });\n const localeText = useLocaleText();\n const leftArrowButtonText = leftArrowButtonTextProp != null ? leftArrowButtonTextProp : localeText.openPreviousView;\n const rightArrowButtonText = rightArrowButtonTextProp != null ? rightArrowButtonTextProp : localeText.openNextView;\n const getClockLabelText = getClockLabelTextProp != null ? getClockLabelTextProp : localeText.clockLabelText;\n const getHoursClockNumberText = getHoursClockNumberTextProp != null ? getHoursClockNumberTextProp : localeText.hoursClockNumberText;\n const getMinutesClockNumberText = getMinutesClockNumberTextProp != null ? getMinutesClockNumberTextProp : localeText.minutesClockNumberText;\n const getSecondsClockNumberText = getSecondsClockNumberTextProp != null ? getSecondsClockNumberTextProp : localeText.secondsClockNumberText;\n const {\n openView,\n setOpenView,\n nextView,\n previousView,\n handleChangeAndOpenNext\n } = useViews({\n view,\n views,\n openTo,\n onViewChange,\n onChange\n });\n const now = useNow();\n const utils = useUtils();\n const dateOrMidnight = React.useMemo(() => date || utils.setSeconds(utils.setMinutes(utils.setHours(now, 0), 0), 0), [date, now, utils]);\n const {\n meridiemMode,\n handleMeridiemChange\n } = useMeridiemMode(dateOrMidnight, ampm, handleChangeAndOpenNext);\n const isTimeDisabled = React.useCallback((rawValue, viewType) => {\n const isAfter = createIsAfterIgnoreDatePart(disableIgnoringDatePartForTimeValidation, utils);\n\n const containsValidTime = ({\n start,\n end\n }) => {\n if (minTime && isAfter(minTime, end)) {\n return false;\n }\n\n if (maxTime && isAfter(start, maxTime)) {\n return false;\n }\n\n return true;\n };\n\n const isValidValue = (value, step = 1) => {\n if (value % step !== 0) {\n return false;\n }\n\n if (shouldDisableTime) {\n return !shouldDisableTime(value, viewType);\n }\n\n return true;\n };\n\n switch (viewType) {\n case 'hours':\n {\n const value = convertValueToMeridiem(rawValue, meridiemMode, ampm);\n const dateWithNewHours = utils.setHours(dateOrMidnight, value);\n const start = utils.setSeconds(utils.setMinutes(dateWithNewHours, 0), 0);\n const end = utils.setSeconds(utils.setMinutes(dateWithNewHours, 59), 59);\n return !containsValidTime({\n start,\n end\n }) || !isValidValue(value);\n }\n\n case 'minutes':\n {\n const dateWithNewMinutes = utils.setMinutes(dateOrMidnight, rawValue);\n const start = utils.setSeconds(dateWithNewMinutes, 0);\n const end = utils.setSeconds(dateWithNewMinutes, 59);\n return !containsValidTime({\n start,\n end\n }) || !isValidValue(rawValue, minutesStep);\n }\n\n case 'seconds':\n {\n const dateWithNewSeconds = utils.setSeconds(dateOrMidnight, rawValue);\n const start = dateWithNewSeconds;\n const end = dateWithNewSeconds;\n return !containsValidTime({\n start,\n end\n }) || !isValidValue(rawValue);\n }\n\n default:\n throw new Error('not supported');\n }\n }, [ampm, dateOrMidnight, disableIgnoringDatePartForTimeValidation, maxTime, meridiemMode, minTime, minutesStep, shouldDisableTime, utils]);\n const selectedId = useId();\n const viewProps = React.useMemo(() => {\n switch (openView) {\n case 'hours':\n {\n const handleHoursChange = (value, isFinish) => {\n const valueWithMeridiem = convertValueToMeridiem(value, meridiemMode, ampm);\n handleChangeAndOpenNext(utils.setHours(dateOrMidnight, valueWithMeridiem), isFinish);\n };\n\n return {\n onChange: handleHoursChange,\n value: utils.getHours(dateOrMidnight),\n children: getHourNumbers({\n date,\n utils,\n ampm,\n onChange: handleHoursChange,\n getClockNumberText: getHoursClockNumberText,\n isDisabled: value => disabled || isTimeDisabled(value, 'hours'),\n selectedId\n })\n };\n }\n\n case 'minutes':\n {\n const minutesValue = utils.getMinutes(dateOrMidnight);\n\n const handleMinutesChange = (value, isFinish) => {\n handleChangeAndOpenNext(utils.setMinutes(dateOrMidnight, value), isFinish);\n };\n\n return {\n value: minutesValue,\n onChange: handleMinutesChange,\n children: getMinutesNumbers({\n utils,\n value: minutesValue,\n onChange: handleMinutesChange,\n getClockNumberText: getMinutesClockNumberText,\n isDisabled: value => disabled || isTimeDisabled(value, 'minutes'),\n selectedId\n })\n };\n }\n\n case 'seconds':\n {\n const secondsValue = utils.getSeconds(dateOrMidnight);\n\n const handleSecondsChange = (value, isFinish) => {\n handleChangeAndOpenNext(utils.setSeconds(dateOrMidnight, value), isFinish);\n };\n\n return {\n value: secondsValue,\n onChange: handleSecondsChange,\n children: getMinutesNumbers({\n utils,\n value: secondsValue,\n onChange: handleSecondsChange,\n getClockNumberText: getSecondsClockNumberText,\n isDisabled: value => disabled || isTimeDisabled(value, 'seconds'),\n selectedId\n })\n };\n }\n\n default:\n throw new Error('You must provide the type for ClockView');\n }\n }, [openView, utils, date, ampm, getHoursClockNumberText, getMinutesClockNumberText, getSecondsClockNumberText, meridiemMode, handleChangeAndOpenNext, dateOrMidnight, isTimeDisabled, selectedId, disabled]);\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(ClockPickerRoot, {\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n children: [showViewSwitcher && /*#__PURE__*/_jsx(ClockPickerArrowSwitcher, {\n className: classes.arrowSwitcher,\n leftArrowButtonText: leftArrowButtonText,\n rightArrowButtonText: rightArrowButtonText,\n components: components,\n componentsProps: componentsProps,\n onLeftClick: () => setOpenView(previousView),\n onRightClick: () => setOpenView(nextView),\n isLeftDisabled: !previousView,\n isRightDisabled: !nextView,\n ownerState: ownerState\n }), /*#__PURE__*/_jsx(Clock, _extends({\n autoFocus: autoFocus,\n date: date,\n ampmInClock: ampmInClock,\n type: openView,\n ampm: ampm,\n getClockLabelText: getClockLabelText,\n minutesStep: minutesStep,\n isTimeDisabled: isTimeDisabled,\n meridiemMode: meridiemMode,\n handleMeridiemChange: handleMeridiemChange,\n selectedId: selectedId,\n disabled: disabled,\n readOnly: readOnly\n }, viewProps))]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? ClockPicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * 12h/24h view for hour selection clock.\n * @default false\n */\n ampm: PropTypes.bool,\n\n /**\n * Display ampm controls under the clock (instead of in the toolbar).\n * @default false\n */\n ampmInClock: PropTypes.bool,\n\n /**\n * Set to `true` if focus should be moved to clock picker.\n */\n autoFocus: PropTypes.bool,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n className: PropTypes.string,\n\n /**\n * Overrideable components.\n * @default {}\n */\n components: PropTypes.object,\n\n /**\n * The props used for each component slot.\n * @default {}\n */\n componentsProps: PropTypes.object,\n\n /**\n * Selected date @DateIOType.\n */\n date: PropTypes.any,\n\n /**\n * If `true`, the picker and text field are disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * Do not ignore date part when validating min/max time.\n * @default false\n */\n disableIgnoringDatePartForTimeValidation: PropTypes.bool,\n\n /**\n * Accessible text that helps user to understand which time and view is selected.\n * @template TDate\n * @param {ClockPickerView} view The current view rendered.\n * @param {TDate | null} time The current time.\n * @param {MuiPickersAdapter} adapter The current date adapter.\n * @returns {string} The clock label.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n * @default (\n * view: ClockView,\n * time: TDate | null,\n * adapter: MuiPickersAdapter,\n * ) =>\n * `Select ${view}. ${\n * time === null ? 'No time selected' : `Selected time is ${adapter.format(time, 'fullTime')}`\n * }`\n */\n getClockLabelText: PropTypes.func,\n\n /**\n * Get clock number aria-text for hours.\n * @param {string} hours The hours to format.\n * @returns {string} the formatted hours text.\n * @default (hours: string) => `${hours} hours`\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n */\n getHoursClockNumberText: PropTypes.func,\n\n /**\n * Get clock number aria-text for minutes.\n * @param {string} minutes The minutes to format.\n * @returns {string} the formatted minutes text.\n * @default (minutes: string) => `${minutes} minutes`\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n */\n getMinutesClockNumberText: PropTypes.func,\n\n /**\n * Get clock number aria-text for seconds.\n * @param {string} seconds The seconds to format.\n * @returns {string} the formatted seconds text.\n * @default (seconds: string) => `${seconds} seconds`\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n */\n getSecondsClockNumberText: PropTypes.func,\n\n /**\n * Left arrow icon aria-label text.\n * @default 'open previous view'\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n */\n leftArrowButtonText: PropTypes.string,\n\n /**\n * Max time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n maxTime: PropTypes.any,\n\n /**\n * Min time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n minTime: PropTypes.any,\n\n /**\n * Step over minutes.\n * @default 1\n */\n minutesStep: PropTypes.number,\n\n /**\n * On change callback @DateIOType.\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Callback fired on view change.\n * @param {ClockPickerView} view The new view.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Initially open view.\n * @default 'hours'\n */\n openTo: PropTypes.oneOf(['hours', 'minutes', 'seconds']),\n\n /**\n * Make picker read only.\n * @default false\n */\n readOnly: PropTypes.bool,\n\n /**\n * Right arrow icon aria-label text.\n * @default 'open next view'\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n */\n rightArrowButtonText: PropTypes.string,\n\n /**\n * Dynamically check if time is disabled or not.\n * If returns `false` appropriate time point will ot be acceptable.\n * @param {number} timeValue The value to check.\n * @param {ClockPickerView} clockType The clock type of the timeValue.\n * @returns {boolean} Returns `true` if the time should be disabled\n */\n shouldDisableTime: PropTypes.func,\n showViewSwitcher: PropTypes.bool,\n\n /**\n * Controlled open view.\n */\n view: PropTypes.oneOf(['hours', 'minutes', 'seconds']),\n\n /**\n * Views for calendar picker.\n * @default ['hours', 'minutes']\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['hours', 'minutes', 'seconds']).isRequired)\n} : void 0;","export const buildDeprecatedPropsWarning = message => {\n let alreadyWarned = false;\n\n if (process.env.NODE_ENV === 'production') {\n return () => {};\n }\n\n const cleanMessage = Array.isArray(message) ? message.join('\\n') : message;\n return deprecatedProps => {\n const deprecatedKeys = Object.entries(deprecatedProps).filter(([, value]) => value !== undefined).map(([key]) => `- ${key}`);\n\n if (!alreadyWarned && deprecatedKeys.length > 0) {\n alreadyWarned = true;\n console.warn([cleanMessage, 'deprecated props observed:', ...deprecatedKeys].join('\\n'));\n }\n };\n};","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getPickersMonthUtilityClass(slot) {\n // TODO v6 Rename 'PrivatePickersMonth' to 'MuiPickersMonth' to follow convention\n return generateUtilityClass('PrivatePickersMonth', slot);\n}\nexport const pickersMonthClasses = generateUtilityClasses( // TODO v6 Rename 'PrivatePickersMonth' to 'MuiPickersMonth' to follow convention\n'PrivatePickersMonth', ['root', 'selected']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disabled\", \"onSelect\", \"selected\", \"value\", \"tabIndex\", \"hasFocus\", \"onFocus\", \"onBlur\"];\nimport * as React from 'react';\nimport Typography from '@mui/material/Typography';\nimport { styled, alpha } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/material/utils';\nimport { onSpaceOrEnter } from '../internals/utils/utils';\nimport { getPickersMonthUtilityClass, pickersMonthClasses } from './pickersMonthClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n selected\n } = ownerState;\n const slots = {\n root: ['root', selected && 'selected']\n };\n return composeClasses(slots, getPickersMonthUtilityClass, classes);\n};\n\nconst PickersMonthRoot = styled(Typography, {\n name: 'PrivatePickersMonth',\n slot: 'Root',\n overridesResolver: (_, styles) => [styles.root, {\n [`&.${pickersMonthClasses.selected}`]: styles.selected\n }]\n})(({\n theme\n}) => _extends({\n flex: '1 0 33.33%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: 'unset',\n backgroundColor: 'transparent',\n border: 0,\n outline: 0\n}, theme.typography.subtitle1, {\n margin: '8px 0',\n height: 36,\n borderRadius: 18,\n cursor: 'pointer',\n '&:focus, &:hover': {\n backgroundColor: alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n },\n '&:disabled': {\n pointerEvents: 'none',\n color: theme.palette.text.secondary\n },\n [`&.${pickersMonthClasses.selected}`]: {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.primary.main,\n '&:focus, &:hover': {\n backgroundColor: theme.palette.primary.dark\n }\n }\n}));\n\nconst noop = () => {};\n/**\n * @ignore - do not document.\n */\n\n\nexport const PickersMonth = props => {\n // TODO v6 add 'useThemeProps' once the component class names are aligned\n const {\n disabled,\n onSelect,\n selected,\n value,\n tabIndex,\n hasFocus,\n onFocus = noop,\n onBlur = noop\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const classes = useUtilityClasses(props);\n\n const handleSelection = () => {\n onSelect(value);\n };\n\n const ref = React.useRef(null);\n useEnhancedEffect(() => {\n if (hasFocus) {\n var _ref$current;\n\n (_ref$current = ref.current) == null ? void 0 : _ref$current.focus();\n }\n }, [hasFocus]);\n return /*#__PURE__*/_jsx(PickersMonthRoot, _extends({\n ref: ref,\n component: \"button\",\n type: \"button\",\n className: classes.root,\n tabIndex: tabIndex,\n onClick: handleSelection,\n onKeyDown: onSpaceOrEnter(handleSelection),\n color: selected ? 'primary' : undefined,\n variant: selected ? 'h5' : 'subtitle1',\n disabled: disabled,\n onFocus: event => onFocus(event, value),\n onBlur: event => onBlur(event, value)\n }, other));\n};","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getMonthPickerUtilityClass(slot) {\n return generateUtilityClass('MuiMonthPicker', slot);\n}\nexport const monthPickerClasses = generateUtilityClasses('MuiMonthPicker', ['root']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"date\", \"disabled\", \"disableFuture\", \"disablePast\", \"maxDate\", \"minDate\", \"onChange\", \"shouldDisableMonth\", \"readOnly\", \"disableHighlightToday\", \"autoFocus\", \"onMonthFocus\", \"hasFocus\", \"onFocusedViewChange\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { useTheme } from '@mui/system';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses, useControlled, useEventCallback } from '@mui/material';\nimport { PickersMonth } from './PickersMonth';\nimport { useUtils, useNow, useDefaultDates } from '../internals/hooks/useUtils';\nimport { getMonthPickerUtilityClass } from './monthPickerClasses';\nimport { parseNonNullablePickerDate } from '../internals/utils/date-utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getMonthPickerUtilityClass, classes);\n};\n\nexport function useMonthPickerDefaultizedProps(props, name) {\n const utils = useUtils();\n const defaultDates = useDefaultDates();\n const themeProps = useThemeProps({\n props,\n name\n });\n return _extends({\n disableFuture: false,\n disablePast: false\n }, themeProps, {\n minDate: parseNonNullablePickerDate(utils, themeProps.minDate, defaultDates.minDate),\n maxDate: parseNonNullablePickerDate(utils, themeProps.maxDate, defaultDates.maxDate)\n });\n}\nconst MonthPickerRoot = styled('div', {\n name: 'MuiMonthPicker',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n width: 310,\n display: 'flex',\n flexWrap: 'wrap',\n alignContent: 'stretch',\n margin: '0 4px'\n});\nexport const MonthPicker = /*#__PURE__*/React.forwardRef(function MonthPicker(inProps, ref) {\n const utils = useUtils();\n const now = useNow();\n const props = useMonthPickerDefaultizedProps(inProps, 'MuiMonthPicker');\n\n const {\n className,\n date,\n disabled,\n disableFuture,\n disablePast,\n maxDate,\n minDate,\n onChange,\n shouldDisableMonth,\n readOnly,\n disableHighlightToday,\n autoFocus = false,\n onMonthFocus,\n hasFocus,\n onFocusedViewChange\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n const theme = useTheme();\n const selectedDateOrStartOfMonth = React.useMemo(() => date != null ? date : utils.startOfMonth(now), [now, utils, date]);\n const selectedMonth = React.useMemo(() => {\n if (date != null) {\n return utils.getMonth(date);\n }\n\n if (disableHighlightToday) {\n return null;\n }\n\n return utils.getMonth(now);\n }, [now, date, utils, disableHighlightToday]);\n const [focusedMonth, setFocusedMonth] = React.useState(() => selectedMonth || utils.getMonth(now));\n const isMonthDisabled = React.useCallback(month => {\n const firstEnabledMonth = utils.startOfMonth(disablePast && utils.isAfter(now, minDate) ? now : minDate);\n const lastEnabledMonth = utils.startOfMonth(disableFuture && utils.isBefore(now, maxDate) ? now : maxDate);\n\n if (utils.isBefore(month, firstEnabledMonth)) {\n return true;\n }\n\n if (utils.isAfter(month, lastEnabledMonth)) {\n return true;\n }\n\n if (!shouldDisableMonth) {\n return false;\n }\n\n return shouldDisableMonth(month);\n }, [disableFuture, disablePast, maxDate, minDate, now, shouldDisableMonth, utils]);\n\n const onMonthSelect = month => {\n if (readOnly) {\n return;\n }\n\n const newDate = utils.setMonth(selectedDateOrStartOfMonth, month);\n onChange(newDate, 'finish');\n };\n\n const [internalHasFocus, setInternalHasFocus] = useControlled({\n name: 'MonthPicker',\n state: 'hasFocus',\n controlled: hasFocus,\n default: autoFocus\n });\n const changeHasFocus = React.useCallback(newHasFocus => {\n setInternalHasFocus(newHasFocus);\n\n if (onFocusedViewChange) {\n onFocusedViewChange(newHasFocus);\n }\n }, [setInternalHasFocus, onFocusedViewChange]);\n const focusMonth = React.useCallback(month => {\n if (!isMonthDisabled(utils.setMonth(selectedDateOrStartOfMonth, month))) {\n setFocusedMonth(month);\n changeHasFocus(true);\n\n if (onMonthFocus) {\n onMonthFocus(month);\n }\n }\n }, [isMonthDisabled, utils, selectedDateOrStartOfMonth, changeHasFocus, onMonthFocus]);\n React.useEffect(() => {\n setFocusedMonth(prevFocusedMonth => selectedMonth !== null && prevFocusedMonth !== selectedMonth ? selectedMonth : prevFocusedMonth);\n }, [selectedMonth]);\n const handleKeyDown = useEventCallback(event => {\n const monthsInYear = 12;\n const monthsInRow = 3;\n\n switch (event.key) {\n case 'ArrowUp':\n focusMonth((monthsInYear + focusedMonth - monthsInRow) % monthsInYear);\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n focusMonth((monthsInYear + focusedMonth + monthsInRow) % monthsInYear);\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n focusMonth((monthsInYear + focusedMonth + (theme.direction === 'ltr' ? -1 : 1)) % monthsInYear);\n event.preventDefault();\n break;\n\n case 'ArrowRight':\n focusMonth((monthsInYear + focusedMonth + (theme.direction === 'ltr' ? 1 : -1)) % monthsInYear);\n event.preventDefault();\n break;\n\n default:\n break;\n }\n });\n const handleMonthFocus = React.useCallback((event, month) => {\n focusMonth(month);\n }, [focusMonth]);\n const handleMonthBlur = React.useCallback(() => {\n changeHasFocus(false);\n }, [changeHasFocus]);\n const currentMonthNumber = utils.getMonth(now);\n return /*#__PURE__*/_jsx(MonthPickerRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n onKeyDown: handleKeyDown\n }, other, {\n children: utils.getMonthArray(selectedDateOrStartOfMonth).map(month => {\n const monthNumber = utils.getMonth(month);\n const monthText = utils.format(month, 'monthShort');\n const isDisabled = disabled || isMonthDisabled(month);\n return /*#__PURE__*/_jsx(PickersMonth, {\n value: monthNumber,\n selected: monthNumber === selectedMonth,\n tabIndex: monthNumber === focusedMonth && !isDisabled ? 0 : -1,\n hasFocus: internalHasFocus && monthNumber === focusedMonth,\n onSelect: onMonthSelect,\n onFocus: handleMonthFocus,\n onBlur: handleMonthBlur,\n disabled: isDisabled,\n \"aria-current\": currentMonthNumber === monthNumber ? 'date' : undefined,\n children: monthText\n }, monthText);\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? MonthPicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n autoFocus: PropTypes.bool,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * className applied to the root element.\n */\n className: PropTypes.string,\n\n /**\n * Date value for the MonthPicker\n */\n date: PropTypes.any,\n\n /**\n * If `true` picker is disabled\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true` future days are disabled.\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true`, today's date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * If `true` past days are disabled.\n * @default false\n */\n disablePast: PropTypes.bool,\n hasFocus: PropTypes.bool,\n\n /**\n * Maximal selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Minimal selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n\n /**\n * Callback fired on date change.\n */\n onChange: PropTypes.func.isRequired,\n onFocusedViewChange: PropTypes.func,\n onMonthFocus: PropTypes.func,\n\n /**\n * If `true` picker is readonly\n */\n readOnly: PropTypes.bool,\n\n /**\n * Disable specific months dynamically.\n * Works like `shouldDisableDate` but for month selection view @DateIOType.\n * @template TDate\n * @param {TDate} month The month to check.\n * @returns {boolean} If `true` the month will be disabled.\n */\n shouldDisableMonth: PropTypes.func,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;","import * as React from 'react';\nimport { useValidation } from './useValidation';\nimport { useLocalizationContext } from '../useUtils';\nimport { parseNonNullablePickerDate } from '../../utils/date-utils';\nexport const validateDate = ({\n props,\n value,\n adapter\n}) => {\n const now = adapter.utils.date();\n const date = adapter.utils.date(value);\n const minDate = parseNonNullablePickerDate(adapter.utils, props.minDate, adapter.defaultDates.minDate);\n const maxDate = parseNonNullablePickerDate(adapter.utils, props.maxDate, adapter.defaultDates.maxDate);\n\n if (date === null) {\n return null;\n }\n\n switch (true) {\n case !adapter.utils.isValid(value):\n return 'invalidDate';\n\n case Boolean(props.shouldDisableDate && props.shouldDisableDate(date)):\n return 'shouldDisableDate';\n\n case Boolean(props.disableFuture && adapter.utils.isAfterDay(date, now)):\n return 'disableFuture';\n\n case Boolean(props.disablePast && adapter.utils.isBeforeDay(date, now)):\n return 'disablePast';\n\n case Boolean(minDate && adapter.utils.isBeforeDay(date, minDate)):\n return 'minDate';\n\n case Boolean(maxDate && adapter.utils.isAfterDay(date, maxDate)):\n return 'maxDate';\n\n default:\n return null;\n }\n};\nexport const useIsDayDisabled = ({\n shouldDisableDate,\n minDate,\n maxDate,\n disableFuture,\n disablePast\n}) => {\n const adapter = useLocalizationContext();\n return React.useCallback(day => validateDate({\n adapter,\n value: day,\n props: {\n shouldDisableDate,\n minDate,\n maxDate,\n disableFuture,\n disablePast\n }\n }) !== null, [adapter, shouldDisableDate, minDate, maxDate, disableFuture, disablePast]);\n};\nexport const isSameDateError = (a, b) => a === b;\nexport const useDateValidation = props => useValidation(props, validateDate, isSameDateError);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useIsDayDisabled } from '../internals/hooks/validation/useDateValidation';\nimport { useUtils, useNow } from '../internals/hooks/useUtils';\nexport const createCalendarStateReducer = (reduceAnimations, disableSwitchToMonthOnDayFocus, utils) => (state, action) => {\n switch (action.type) {\n case 'changeMonth':\n return _extends({}, state, {\n slideDirection: action.direction,\n currentMonth: action.newMonth,\n isMonthSwitchingAnimating: !reduceAnimations\n });\n\n case 'finishMonthSwitchingAnimation':\n return _extends({}, state, {\n isMonthSwitchingAnimating: false\n });\n\n case 'changeFocusedDay':\n {\n if (state.focusedDay != null && action.focusedDay != null && utils.isSameDay(action.focusedDay, state.focusedDay)) {\n return state;\n }\n\n const needMonthSwitch = action.focusedDay != null && !disableSwitchToMonthOnDayFocus && !utils.isSameMonth(state.currentMonth, action.focusedDay);\n return _extends({}, state, {\n focusedDay: action.focusedDay,\n isMonthSwitchingAnimating: needMonthSwitch && !reduceAnimations && !action.withoutMonthSwitchingAnimation,\n currentMonth: needMonthSwitch ? utils.startOfMonth(action.focusedDay) : state.currentMonth,\n slideDirection: action.focusedDay != null && utils.isAfterDay(action.focusedDay, state.currentMonth) ? 'left' : 'right'\n });\n }\n\n default:\n throw new Error('missing support');\n }\n};\nexport const useCalendarState = ({\n date,\n defaultCalendarMonth,\n disableFuture,\n disablePast,\n disableSwitchToMonthOnDayFocus = false,\n maxDate,\n minDate,\n onMonthChange,\n reduceAnimations,\n shouldDisableDate\n}) => {\n var _ref;\n\n const now = useNow();\n const utils = useUtils();\n const reducerFn = React.useRef(createCalendarStateReducer(Boolean(reduceAnimations), disableSwitchToMonthOnDayFocus, utils)).current;\n const [calendarState, dispatch] = React.useReducer(reducerFn, {\n isMonthSwitchingAnimating: false,\n focusedDay: date || now,\n currentMonth: utils.startOfMonth((_ref = date != null ? date : defaultCalendarMonth) != null ? _ref : now),\n slideDirection: 'left'\n });\n const handleChangeMonth = React.useCallback(payload => {\n dispatch(_extends({\n type: 'changeMonth'\n }, payload));\n\n if (onMonthChange) {\n onMonthChange(payload.newMonth);\n }\n }, [onMonthChange]);\n const changeMonth = React.useCallback(newDate => {\n const newDateRequested = newDate != null ? newDate : now;\n\n if (utils.isSameMonth(newDateRequested, calendarState.currentMonth)) {\n return;\n }\n\n handleChangeMonth({\n newMonth: utils.startOfMonth(newDateRequested),\n direction: utils.isAfterDay(newDateRequested, calendarState.currentMonth) ? 'left' : 'right'\n });\n }, [calendarState.currentMonth, handleChangeMonth, now, utils]);\n const isDateDisabled = useIsDayDisabled({\n shouldDisableDate,\n minDate,\n maxDate,\n disableFuture,\n disablePast\n });\n const onMonthSwitchingAnimationEnd = React.useCallback(() => {\n dispatch({\n type: 'finishMonthSwitchingAnimation'\n });\n }, []);\n const changeFocusedDay = React.useCallback((newFocusedDate, withoutMonthSwitchingAnimation) => {\n if (!isDateDisabled(newFocusedDate)) {\n dispatch({\n type: 'changeFocusedDay',\n focusedDay: newFocusedDate,\n withoutMonthSwitchingAnimation\n });\n }\n }, [isDateDisabled]);\n return {\n calendarState,\n changeMonth,\n changeFocusedDay,\n isDateDisabled,\n onMonthSwitchingAnimationEnd,\n handleChangeMonth\n };\n};","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport const getPickersFadeTransitionGroupUtilityClass = slot => generateUtilityClass('MuiPickersFadeTransitionGroup', slot);\nexport const pickersFadeTransitionGroupClasses = generateUtilityClasses('MuiPickersFadeTransitionGroup', ['root']);","import * as React from 'react';\nimport clsx from 'clsx';\nimport Fade from '@mui/material/Fade';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { TransitionGroup } from 'react-transition-group';\nimport { getPickersFadeTransitionGroupUtilityClass } from './pickersFadeTransitionGroupClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getPickersFadeTransitionGroupUtilityClass, classes);\n};\n\nconst animationDuration = 500;\nconst PickersFadeTransitionGroupRoot = styled(TransitionGroup, {\n name: 'MuiPickersFadeTransitionGroup',\n slot: 'Root',\n overridesResolver: (_, styles) => styles.root\n})({\n display: 'block',\n position: 'relative'\n});\n/**\n * @ignore - do not document.\n */\n\nexport function PickersFadeTransitionGroup(inProps) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPickersFadeTransitionGroup'\n });\n const {\n children,\n className,\n reduceAnimations,\n transKey\n } = props;\n const classes = useUtilityClasses(props);\n\n if (reduceAnimations) {\n return children;\n }\n\n return /*#__PURE__*/_jsx(PickersFadeTransitionGroupRoot, {\n className: clsx(classes.root, className),\n children: /*#__PURE__*/_jsx(Fade, {\n appear: false,\n mountOnEnter: true,\n unmountOnExit: true,\n timeout: {\n appear: animationDuration,\n enter: animationDuration / 2,\n exit: 0\n },\n children: children\n }, transKey)\n });\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getPickersDayUtilityClass(slot) {\n return generateUtilityClass('MuiPickersDay', slot);\n}\nexport const pickersDayClasses = generateUtilityClasses('MuiPickersDay', ['root', 'dayWithMargin', 'dayOutsideMonth', 'hiddenDaySpacingFiller', 'today', 'selected', 'disabled']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"className\", \"day\", \"disabled\", \"disableHighlightToday\", \"disableMargin\", \"hidden\", \"isAnimating\", \"onClick\", \"onDaySelect\", \"onFocus\", \"onBlur\", \"onKeyDown\", \"onMouseDown\", \"outsideCurrentMonth\", \"selected\", \"showDaysOutsideCurrentMonth\", \"children\", \"today\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport ButtonBase from '@mui/material/ButtonBase';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { alpha, styled, useThemeProps } from '@mui/material/styles';\nimport { useForkRef } from '@mui/material/utils';\nimport { useUtils } from '../internals/hooks/useUtils';\nimport { DAY_SIZE, DAY_MARGIN } from '../internals/constants/dimensions';\nimport { getPickersDayUtilityClass, pickersDayClasses } from './pickersDayClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n selected,\n disableMargin,\n disableHighlightToday,\n today,\n disabled,\n outsideCurrentMonth,\n showDaysOutsideCurrentMonth,\n classes\n } = ownerState;\n const slots = {\n root: ['root', selected && 'selected', disabled && 'disabled', !disableMargin && 'dayWithMargin', !disableHighlightToday && today && 'today', outsideCurrentMonth && showDaysOutsideCurrentMonth && 'dayOutsideMonth', outsideCurrentMonth && !showDaysOutsideCurrentMonth && 'hiddenDaySpacingFiller'],\n hiddenDaySpacingFiller: ['hiddenDaySpacingFiller']\n };\n return composeClasses(slots, getPickersDayUtilityClass, classes);\n};\n\nconst styleArg = ({\n theme,\n ownerState\n}) => _extends({}, theme.typography.caption, {\n width: DAY_SIZE,\n height: DAY_SIZE,\n borderRadius: '50%',\n padding: 0,\n // background required here to prevent collides with the other days when animating with transition group\n backgroundColor: theme.palette.background.paper,\n color: theme.palette.text.primary,\n '&:hover': {\n backgroundColor: alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n },\n '&:focus': {\n backgroundColor: alpha(theme.palette.action.active, theme.palette.action.hoverOpacity),\n [`&.${pickersDayClasses.selected}`]: {\n willChange: 'background-color',\n backgroundColor: theme.palette.primary.dark\n }\n },\n [`&.${pickersDayClasses.selected}`]: {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.primary.main,\n fontWeight: theme.typography.fontWeightMedium,\n transition: theme.transitions.create('background-color', {\n duration: theme.transitions.duration.short\n }),\n '&:hover': {\n willChange: 'background-color',\n backgroundColor: theme.palette.primary.dark\n }\n },\n [`&.${pickersDayClasses.disabled}`]: {\n color: theme.palette.text.disabled\n }\n}, !ownerState.disableMargin && {\n margin: `0 ${DAY_MARGIN}px`\n}, ownerState.outsideCurrentMonth && ownerState.showDaysOutsideCurrentMonth && {\n color: theme.palette.text.secondary\n}, !ownerState.disableHighlightToday && ownerState.today && {\n [`&:not(.${pickersDayClasses.selected})`]: {\n border: `1px solid ${theme.palette.text.secondary}`\n }\n});\n\nconst overridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, !ownerState.disableMargin && styles.dayWithMargin, !ownerState.disableHighlightToday && ownerState.today && styles.today, !ownerState.outsideCurrentMonth && ownerState.showDaysOutsideCurrentMonth && styles.dayOutsideMonth, ownerState.outsideCurrentMonth && !ownerState.showDaysOutsideCurrentMonth && styles.hiddenDaySpacingFiller];\n};\n\nconst PickersDayRoot = styled(ButtonBase, {\n name: 'MuiPickersDay',\n slot: 'Root',\n overridesResolver\n})(styleArg);\nconst PickersDayFiller = styled('div', {\n name: 'MuiPickersDay',\n slot: 'Root',\n overridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({}, styleArg({\n theme,\n ownerState\n}), {\n // visibility: 'hidden' does not work here as it hides the element from screen readers as well\n opacity: 0,\n pointerEvents: 'none'\n}));\n\nconst noop = () => {};\n\nconst PickersDayRaw = /*#__PURE__*/React.forwardRef(function PickersDay(inProps, forwardedRef) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPickersDay'\n });\n\n const {\n autoFocus = false,\n className,\n day,\n disabled = false,\n disableHighlightToday = false,\n disableMargin = false,\n isAnimating,\n onClick,\n onDaySelect,\n onFocus = noop,\n onBlur = noop,\n onKeyDown = noop,\n onMouseDown,\n outsideCurrentMonth,\n selected = false,\n showDaysOutsideCurrentMonth = false,\n children,\n today: isToday = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n autoFocus,\n disabled,\n disableHighlightToday,\n disableMargin,\n selected,\n showDaysOutsideCurrentMonth,\n today: isToday\n });\n\n const classes = useUtilityClasses(ownerState);\n const utils = useUtils();\n const ref = React.useRef(null);\n const handleRef = useForkRef(ref, forwardedRef); // Since this is rendered when a Popper is opened we can't use passive effects.\n // Focusing in passive effects in Popper causes scroll jump.\n\n useEnhancedEffect(() => {\n if (autoFocus && !disabled && !isAnimating && !outsideCurrentMonth) {\n // ref.current being null would be a bug in MUI\n ref.current.focus();\n }\n }, [autoFocus, disabled, isAnimating, outsideCurrentMonth]); // For day outside of current month, move focus from mouseDown to mouseUp\n // Goal: have the onClick ends before sliding to the new month\n\n const handleMouseDown = event => {\n if (onMouseDown) {\n onMouseDown(event);\n }\n\n if (outsideCurrentMonth) {\n event.preventDefault();\n }\n };\n\n const handleClick = event => {\n if (!disabled) {\n onDaySelect(day, 'finish');\n }\n\n if (outsideCurrentMonth) {\n event.currentTarget.focus();\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n if (outsideCurrentMonth && !showDaysOutsideCurrentMonth) {\n return /*#__PURE__*/_jsx(PickersDayFiller, {\n className: clsx(classes.root, classes.hiddenDaySpacingFiller, className),\n ownerState: ownerState,\n role: other.role\n });\n }\n\n return /*#__PURE__*/_jsx(PickersDayRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: handleRef,\n centerRipple: true,\n disabled: disabled,\n tabIndex: selected ? 0 : -1,\n onKeyDown: event => onKeyDown(event, day),\n onFocus: event => onFocus(event, day),\n onBlur: event => onBlur(event, day),\n onClick: handleClick,\n onMouseDown: handleMouseDown\n }, other, {\n children: !children ? utils.format(day, 'dayOfMonth') : children\n }));\n});\nexport const areDayPropsEqual = (prevProps, nextProps) => {\n return prevProps.autoFocus === nextProps.autoFocus && prevProps.isAnimating === nextProps.isAnimating && prevProps.today === nextProps.today && prevProps.disabled === nextProps.disabled && prevProps.selected === nextProps.selected && prevProps.disableMargin === nextProps.disableMargin && prevProps.showDaysOutsideCurrentMonth === nextProps.showDaysOutsideCurrentMonth && prevProps.disableHighlightToday === nextProps.disableHighlightToday && prevProps.className === nextProps.className && prevProps.sx === nextProps.sx && prevProps.outsideCurrentMonth === nextProps.outsideCurrentMonth && prevProps.onFocus === nextProps.onFocus && prevProps.onBlur === nextProps.onBlur && prevProps.onDaySelect === nextProps.onDaySelect;\n};\nprocess.env.NODE_ENV !== \"production\" ? PickersDayRaw.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * The date to show.\n */\n day: PropTypes.any.isRequired,\n\n /**\n * If `true`, renders as disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, today's date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * If `true`, days are rendering without margin. Useful for displaying linked range of days.\n * @default false\n */\n disableMargin: PropTypes.bool,\n isAnimating: PropTypes.bool,\n onBlur: PropTypes.func,\n onDaySelect: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n onKeyDown: PropTypes.func,\n\n /**\n * If `true`, day is outside of month and will be hidden.\n */\n outsideCurrentMonth: PropTypes.bool.isRequired,\n\n /**\n * If `true`, renders as selected.\n * @default false\n */\n selected: PropTypes.bool,\n\n /**\n * If `true`, days that have `outsideCurrentMonth={true}` are displayed.\n * @default false\n */\n showDaysOutsideCurrentMonth: PropTypes.bool,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * If `true`, renders as today date.\n * @default false\n */\n today: PropTypes.bool\n} : void 0;\n/**\n *\n * Demos:\n *\n * - [Date Picker](https://mui.com/x/react-date-pickers/date-picker/)\n *\n * API:\n *\n * - [PickersDay API](https://mui.com/x/api/date-pickers/pickers-day/)\n */\n\nexport const PickersDay = /*#__PURE__*/React.memo(PickersDayRaw, areDayPropsEqual);","function replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else if (typeof element.className === 'string') {\n element.className = replaceClassName(element.className, className);\n } else {\n element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport addOneClass from 'dom-helpers/addClass';\nimport removeOneClass from 'dom-helpers/removeClass';\nimport React from 'react';\nimport Transition from './Transition';\nimport { classNamesShape } from './utils/PropTypes';\nimport { forceReflow } from './utils/reflow';\n\nvar _addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return addOneClass(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return removeOneClass(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should\n * use it if you're using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n *
\n * {\"I'll receive my-node-* classes\"}\n *
\n *
\n * \n *
\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\n\nvar CSSTransition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.appliedClasses = {\n appear: {},\n enter: {},\n exit: {}\n };\n\n _this.onEnter = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument[0],\n appearing = _this$resolveArgument[1];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n if (_this.props.onEnter) {\n _this.props.onEnter(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntering = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument2[0],\n appearing = _this$resolveArgument2[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.addClass(node, type, 'active');\n\n if (_this.props.onEntering) {\n _this.props.onEntering(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntered = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument3[0],\n appearing = _this$resolveArgument3[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.removeClasses(node, type);\n\n _this.addClass(node, type, 'done');\n\n if (_this.props.onEntered) {\n _this.props.onEntered(maybeNode, maybeAppearing);\n }\n };\n\n _this.onExit = function (maybeNode) {\n var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument4[0];\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n _this.addClass(node, 'exit', 'base');\n\n if (_this.props.onExit) {\n _this.props.onExit(maybeNode);\n }\n };\n\n _this.onExiting = function (maybeNode) {\n var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument5[0];\n\n _this.addClass(node, 'exit', 'active');\n\n if (_this.props.onExiting) {\n _this.props.onExiting(maybeNode);\n }\n };\n\n _this.onExited = function (maybeNode) {\n var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument6[0];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, 'exit', 'done');\n\n if (_this.props.onExited) {\n _this.props.onExited(maybeNode);\n }\n };\n\n _this.resolveArguments = function (maybeNode, maybeAppearing) {\n return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n : [maybeNode, maybeAppearing];\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + \"-\" : '';\n var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n return {\n baseClassName: baseClassName,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.addClass = function addClass(node, type, phase) {\n var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n var _this$getClassNames = this.getClassNames('enter'),\n doneClassName = _this$getClassNames.doneClassName;\n\n if (type === 'appear' && phase === 'done' && doneClassName) {\n className += \" \" + doneClassName;\n } // This is to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n\n\n if (phase === 'active') {\n if (node) forceReflow(node);\n }\n\n if (className) {\n this.appliedClasses[type][phase] = className;\n\n _addClass(node, className);\n }\n };\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$appliedClasses$ = this.appliedClasses[type],\n baseClassName = _this$appliedClasses$.base,\n activeClassName = _this$appliedClasses$.active,\n doneClassName = _this$appliedClasses$.done;\n this.appliedClasses[type] = {};\n\n if (baseClassName) {\n removeClass(node, baseClassName);\n }\n\n if (activeClassName) {\n removeClass(node, activeClassName);\n }\n\n if (doneClassName) {\n removeClass(node, doneClassName);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n _ = _this$props.classNames,\n props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(React.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, Transition.propTypes, {\n /**\n * The animation classNames applied to the component as it appears, enters,\n * exits or has finished the transition. A single name can be provided, which\n * will be suffixed for each stage, e.g. `classNames=\"fade\"` applies:\n *\n * - `fade-appear`, `fade-appear-active`, `fade-appear-done`\n * - `fade-enter`, `fade-enter-active`, `fade-enter-done`\n * - `fade-exit`, `fade-exit-active`, `fade-exit-done`\n *\n * A few details to note about how these classes are applied:\n *\n * 1. They are _joined_ with the ones that are already defined on the child\n * component, so if you want to add some base styles, you can use\n * `className` without worrying that it will be overridden.\n *\n * 2. If the transition component mounts with `in={false}`, no classes are\n * applied yet. You might be expecting `*-exit-done`, but if you think\n * about it, a component cannot finish exiting if it hasn't entered yet.\n *\n * 2. `fade-appear-done` and `fade-enter-done` will _both_ be applied. This\n * allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply\n * an epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: classNamesShape,\n\n /**\n * A `` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit-active' is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nexport default CSSTransition;","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport const getPickersSlideTransitionUtilityClass = slot => // TODO v6: Rename 'PrivatePickersSlideTransition' to 'MuiPickersSlideTransition' to follow convention\ngenerateUtilityClass('PrivatePickersSlideTransition', slot);\nexport const pickersSlideTransitionClasses = generateUtilityClasses( // TODO v6: Rename 'PrivatePickersSlideTransition' to 'MuiPickersSlideTransition' to follow convention\n'PrivatePickersSlideTransition', ['root', 'slideEnter-left', 'slideEnter-right', 'slideEnterActive', 'slideExit', 'slideExitActiveLeft-left', 'slideExitActiveLeft-right']);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"reduceAnimations\", \"slideDirection\", \"transKey\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { styled } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { CSSTransition, TransitionGroup } from 'react-transition-group';\nimport { getPickersSlideTransitionUtilityClass, pickersSlideTransitionClasses } from './pickersSlideTransitionClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getPickersSlideTransitionUtilityClass, classes);\n};\n\nexport const slideAnimationDuration = 350;\nconst PickersSlideTransitionRoot = styled(TransitionGroup, {\n name: 'PrivatePickersSlideTransition',\n slot: 'Root',\n overridesResolver: (_, styles) => [styles.root, {\n [`.${pickersSlideTransitionClasses['slideEnter-left']}`]: styles['slideEnter-left']\n }, {\n [`.${pickersSlideTransitionClasses['slideEnter-right']}`]: styles['slideEnter-right']\n }, {\n [`.${pickersSlideTransitionClasses.slideEnterActive}`]: styles.slideEnterActive\n }, {\n [`.${pickersSlideTransitionClasses.slideExit}`]: styles.slideExit\n }, {\n [`.${pickersSlideTransitionClasses['slideExitActiveLeft-left']}`]: styles['slideExitActiveLeft-left']\n }, {\n [`.${pickersSlideTransitionClasses['slideExitActiveLeft-right']}`]: styles['slideExitActiveLeft-right']\n }]\n})(({\n theme\n}) => {\n const slideTransition = theme.transitions.create('transform', {\n duration: slideAnimationDuration,\n easing: 'cubic-bezier(0.35, 0.8, 0.4, 1)'\n });\n return {\n display: 'block',\n position: 'relative',\n overflowX: 'hidden',\n '& > *': {\n position: 'absolute',\n top: 0,\n right: 0,\n left: 0\n },\n [`& .${pickersSlideTransitionClasses['slideEnter-left']}`]: {\n willChange: 'transform',\n transform: 'translate(100%)',\n zIndex: 1\n },\n [`& .${pickersSlideTransitionClasses['slideEnter-right']}`]: {\n willChange: 'transform',\n transform: 'translate(-100%)',\n zIndex: 1\n },\n [`& .${pickersSlideTransitionClasses.slideEnterActive}`]: {\n transform: 'translate(0%)',\n transition: slideTransition\n },\n [`& .${pickersSlideTransitionClasses.slideExit}`]: {\n transform: 'translate(0%)'\n },\n [`& .${pickersSlideTransitionClasses['slideExitActiveLeft-left']}`]: {\n willChange: 'transform',\n transform: 'translate(-100%)',\n transition: slideTransition,\n zIndex: 0\n },\n [`& .${pickersSlideTransitionClasses['slideExitActiveLeft-right']}`]: {\n willChange: 'transform',\n transform: 'translate(100%)',\n transition: slideTransition,\n zIndex: 0\n }\n };\n});\n/**\n * @ignore - do not document.\n */\n\nexport const PickersSlideTransition = props => {\n // TODO v6: add 'useThemeProps' once the component class names are aligned\n const {\n children,\n className,\n reduceAnimations,\n slideDirection,\n transKey\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const classes = useUtilityClasses(props);\n\n if (reduceAnimations) {\n return /*#__PURE__*/_jsx(\"div\", {\n className: clsx(classes.root, className),\n children: children\n });\n }\n\n const transitionClasses = {\n exit: pickersSlideTransitionClasses.slideExit,\n enterActive: pickersSlideTransitionClasses.slideEnterActive,\n enter: pickersSlideTransitionClasses[`slideEnter-${slideDirection}`],\n exitActive: pickersSlideTransitionClasses[`slideExitActiveLeft-${slideDirection}`]\n };\n return /*#__PURE__*/_jsx(PickersSlideTransitionRoot, {\n className: clsx(classes.root, className),\n childFactory: element => /*#__PURE__*/React.cloneElement(element, {\n classNames: transitionClasses\n }),\n role: \"presentation\",\n children: /*#__PURE__*/_jsx(CSSTransition, _extends({\n mountOnEnter: true,\n unmountOnExit: true,\n timeout: slideAnimationDuration,\n classNames: transitionClasses\n }, other, {\n children: children\n }), transKey)\n });\n};","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport const getDayPickerUtilityClass = slot => generateUtilityClass('MuiDayPicker', slot);\nexport const dayPickerClasses = generateUtilityClasses('MuiDayPicker', ['header', 'weekDayLabel', 'loadingContainer', 'slideTransition', 'monthContainer', 'weekContainer']);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Typography from '@mui/material/Typography';\nimport { styled, useTheme, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport clsx from 'clsx';\nimport { PickersDay } from '../PickersDay/PickersDay';\nimport { useUtils, useNow } from '../internals/hooks/useUtils';\nimport { DAY_SIZE, DAY_MARGIN } from '../internals/constants/dimensions';\nimport { PickersSlideTransition } from './PickersSlideTransition';\nimport { useIsDayDisabled } from '../internals/hooks/validation/useDateValidation';\nimport { findClosestEnabledDate } from '../internals/utils/date-utils';\nimport { getDayPickerUtilityClass } from './dayPickerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { createElement as _createElement } from \"react\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n header: ['header'],\n weekDayLabel: ['weekDayLabel'],\n loadingContainer: ['loadingContainer'],\n slideTransition: ['slideTransition'],\n monthContainer: ['monthContainer'],\n weekContainer: ['weekContainer']\n };\n return composeClasses(slots, getDayPickerUtilityClass, classes);\n};\n\nconst defaultDayOfWeekFormatter = day => day.charAt(0).toUpperCase();\n\nconst weeksContainerHeight = (DAY_SIZE + DAY_MARGIN * 2) * 6;\nconst PickersCalendarDayHeader = styled('div', {\n name: 'MuiDayPicker',\n slot: 'Header',\n overridesResolver: (_, styles) => styles.header\n})({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n});\nconst PickersCalendarWeekDayLabel = styled(Typography, {\n name: 'MuiDayPicker',\n slot: 'WeekDayLabel',\n overridesResolver: (_, styles) => styles.weekDayLabel\n})(({\n theme\n}) => ({\n width: 36,\n height: 40,\n margin: '0 2px',\n textAlign: 'center',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n color: theme.palette.text.secondary\n}));\nconst PickersCalendarLoadingContainer = styled('div', {\n name: 'MuiDayPicker',\n slot: 'LoadingContainer',\n overridesResolver: (_, styles) => styles.loadingContainer\n})({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n minHeight: weeksContainerHeight\n});\nconst PickersCalendarSlideTransition = styled(PickersSlideTransition, {\n name: 'MuiDayPicker',\n slot: 'SlideTransition',\n overridesResolver: (_, styles) => styles.slideTransition\n})({\n minHeight: weeksContainerHeight\n});\nconst PickersCalendarWeekContainer = styled('div', {\n name: 'MuiDayPicker',\n slot: 'MonthContainer',\n overridesResolver: (_, styles) => styles.monthContainer\n})({\n overflow: 'hidden'\n});\nconst PickersCalendarWeek = styled('div', {\n name: 'MuiDayPicker',\n slot: 'WeekContainer',\n overridesResolver: (_, styles) => styles.weekContainer\n})({\n margin: `${DAY_MARGIN}px 0`,\n display: 'flex',\n justifyContent: 'center'\n});\n/**\n * @ignore - do not document.\n */\n\nexport function DayPicker(inProps) {\n const now = useNow();\n const utils = useUtils();\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDayPicker'\n });\n const classes = useUtilityClasses(props);\n const {\n onFocusedDayChange,\n className,\n currentMonth,\n selectedDays,\n disabled,\n disableHighlightToday,\n focusedDay,\n isMonthSwitchingAnimating,\n loading,\n onSelectedDaysChange,\n onMonthSwitchingAnimationEnd,\n readOnly,\n reduceAnimations,\n renderDay,\n renderLoading = () => /*#__PURE__*/_jsx(\"span\", {\n children: \"...\"\n }),\n showDaysOutsideCurrentMonth,\n slideDirection,\n TransitionProps,\n disablePast,\n disableFuture,\n minDate,\n maxDate,\n shouldDisableDate,\n dayOfWeekFormatter = defaultDayOfWeekFormatter,\n hasFocus,\n onFocusedViewChange,\n gridLabelId\n } = props;\n const isDateDisabled = useIsDayDisabled({\n shouldDisableDate,\n minDate,\n maxDate,\n disablePast,\n disableFuture\n });\n const [internalFocusedDay, setInternalFocusedDay] = React.useState(() => focusedDay || now);\n const changeHasFocus = React.useCallback(newHasFocus => {\n if (onFocusedViewChange) {\n onFocusedViewChange(newHasFocus);\n }\n }, [onFocusedViewChange]);\n const handleDaySelect = React.useCallback((day, isFinish = 'finish') => {\n if (readOnly) {\n return;\n }\n\n onSelectedDaysChange(day, isFinish);\n }, [onSelectedDaysChange, readOnly]);\n const focusDay = React.useCallback(day => {\n if (!isDateDisabled(day)) {\n onFocusedDayChange(day);\n setInternalFocusedDay(day);\n changeHasFocus(true);\n }\n }, [isDateDisabled, onFocusedDayChange, changeHasFocus]);\n const theme = useTheme();\n\n function handleKeyDown(event, day) {\n switch (event.key) {\n case 'ArrowUp':\n focusDay(utils.addDays(day, -7));\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n focusDay(utils.addDays(day, 7));\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n {\n const newFocusedDayDefault = utils.addDays(day, theme.direction === 'ltr' ? -1 : 1);\n const nextAvailableMonth = theme.direction === 'ltr' ? utils.getPreviousMonth(day) : utils.getNextMonth(day);\n const closestDayToFocus = findClosestEnabledDate({\n utils,\n date: newFocusedDayDefault,\n minDate: theme.direction === 'ltr' ? utils.startOfMonth(nextAvailableMonth) : newFocusedDayDefault,\n maxDate: theme.direction === 'ltr' ? newFocusedDayDefault : utils.endOfMonth(nextAvailableMonth),\n isDateDisabled\n });\n focusDay(closestDayToFocus || newFocusedDayDefault);\n event.preventDefault();\n break;\n }\n\n case 'ArrowRight':\n {\n const newFocusedDayDefault = utils.addDays(day, theme.direction === 'ltr' ? 1 : -1);\n const nextAvailableMonth = theme.direction === 'ltr' ? utils.getNextMonth(day) : utils.getPreviousMonth(day);\n const closestDayToFocus = findClosestEnabledDate({\n utils,\n date: newFocusedDayDefault,\n minDate: theme.direction === 'ltr' ? newFocusedDayDefault : utils.startOfMonth(nextAvailableMonth),\n maxDate: theme.direction === 'ltr' ? utils.endOfMonth(nextAvailableMonth) : newFocusedDayDefault,\n isDateDisabled\n });\n focusDay(closestDayToFocus || newFocusedDayDefault);\n event.preventDefault();\n break;\n }\n\n case 'Home':\n focusDay(utils.startOfWeek(day));\n event.preventDefault();\n break;\n\n case 'End':\n focusDay(utils.endOfWeek(day));\n event.preventDefault();\n break;\n\n case 'PageUp':\n focusDay(utils.getNextMonth(day));\n event.preventDefault();\n break;\n\n case 'PageDown':\n focusDay(utils.getPreviousMonth(day));\n event.preventDefault();\n break;\n\n default:\n break;\n }\n }\n\n function handleFocus(event, day) {\n focusDay(day);\n }\n\n function handleBlur(event, day) {\n if (hasFocus && utils.isSameDay(internalFocusedDay, day)) {\n changeHasFocus(false);\n }\n }\n\n const currentMonthNumber = utils.getMonth(currentMonth);\n const validSelectedDays = selectedDays.filter(day => !!day).map(day => utils.startOfDay(day)); // need a new ref whenever the `key` of the transition changes: http://reactcommunity.org/react-transition-group/transition/#Transition-prop-nodeRef.\n\n const transitionKey = currentMonthNumber; // eslint-disable-next-line react-hooks/exhaustive-deps\n\n const slideNodeRef = React.useMemo(() => /*#__PURE__*/React.createRef(), [transitionKey]);\n const startOfCurrentWeek = utils.startOfWeek(now);\n const focusableDay = React.useMemo(() => {\n const startOfMonth = utils.startOfMonth(currentMonth);\n const endOfMonth = utils.endOfMonth(currentMonth);\n\n if (isDateDisabled(internalFocusedDay) || utils.isAfterDay(internalFocusedDay, endOfMonth) || utils.isBeforeDay(internalFocusedDay, startOfMonth)) {\n return findClosestEnabledDate({\n utils,\n date: internalFocusedDay,\n minDate: startOfMonth,\n maxDate: endOfMonth,\n disablePast,\n disableFuture,\n isDateDisabled\n });\n }\n\n return internalFocusedDay;\n }, [currentMonth, disableFuture, disablePast, internalFocusedDay, isDateDisabled, utils]);\n return /*#__PURE__*/_jsxs(\"div\", {\n role: \"grid\",\n \"aria-labelledby\": gridLabelId,\n children: [/*#__PURE__*/_jsx(PickersCalendarDayHeader, {\n role: \"row\",\n className: classes.header,\n children: utils.getWeekdays().map((day, i) => {\n var _dayOfWeekFormatter;\n\n return /*#__PURE__*/_jsx(PickersCalendarWeekDayLabel, {\n variant: \"caption\",\n role: \"columnheader\",\n \"aria-label\": utils.format(utils.addDays(startOfCurrentWeek, i), 'weekday'),\n className: classes.weekDayLabel,\n children: (_dayOfWeekFormatter = dayOfWeekFormatter == null ? void 0 : dayOfWeekFormatter(day)) != null ? _dayOfWeekFormatter : day\n }, day + i.toString());\n })\n }), loading ? /*#__PURE__*/_jsx(PickersCalendarLoadingContainer, {\n className: classes.loadingContainer,\n children: renderLoading()\n }) : /*#__PURE__*/_jsx(PickersCalendarSlideTransition, _extends({\n transKey: transitionKey,\n onExited: onMonthSwitchingAnimationEnd,\n reduceAnimations: reduceAnimations,\n slideDirection: slideDirection,\n className: clsx(className, classes.slideTransition)\n }, TransitionProps, {\n nodeRef: slideNodeRef,\n children: /*#__PURE__*/_jsx(PickersCalendarWeekContainer, {\n ref: slideNodeRef,\n role: \"rowgroup\",\n className: classes.monthContainer,\n children: utils.getWeekArray(currentMonth).map(week => /*#__PURE__*/_jsx(PickersCalendarWeek, {\n role: \"row\",\n className: classes.weekContainer,\n children: week.map(day => {\n const isFocusableDay = focusableDay !== null && utils.isSameDay(day, focusableDay);\n const isSelected = validSelectedDays.some(selectedDay => utils.isSameDay(selectedDay, day));\n const isToday = utils.isSameDay(day, now);\n const pickersDayProps = {\n key: day == null ? void 0 : day.toString(),\n day,\n isAnimating: isMonthSwitchingAnimating,\n disabled: disabled || isDateDisabled(day),\n autoFocus: hasFocus && isFocusableDay,\n today: isToday,\n outsideCurrentMonth: utils.getMonth(day) !== currentMonthNumber,\n selected: isSelected,\n disableHighlightToday,\n showDaysOutsideCurrentMonth,\n onKeyDown: handleKeyDown,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onDaySelect: handleDaySelect,\n tabIndex: isFocusableDay ? 0 : -1,\n role: 'gridcell',\n 'aria-selected': isSelected\n };\n\n if (isToday) {\n pickersDayProps['aria-current'] = 'date';\n }\n\n return renderDay ? renderDay(day, validSelectedDays, pickersDayProps) : /*#__PURE__*/_createElement(PickersDay, _extends({}, pickersDayProps, {\n key: pickersDayProps.key\n }));\n })\n }, `week-${week[0]}`))\n })\n }))]\n });\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport const getPickersCalendarHeaderUtilityClass = slot => generateUtilityClass('MuiPickersCalendarHeader', slot);\nexport const pickersCalendarHeaderClasses = generateUtilityClasses('MuiPickersCalendarHeader', ['root', 'labelContainer', 'label', 'switchViewButton', 'switchViewIcon']);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Fade from '@mui/material/Fade';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport IconButton from '@mui/material/IconButton';\nimport { useLocaleText, useUtils } from '../internals/hooks/useUtils';\nimport { PickersFadeTransitionGroup } from './PickersFadeTransitionGroup';\nimport { ArrowDropDown } from '../internals/components/icons';\nimport { PickersArrowSwitcher } from '../internals/components/PickersArrowSwitcher';\nimport { usePreviousMonthDisabled, useNextMonthDisabled } from '../internals/hooks/date-helpers-hooks';\nimport { buildDeprecatedPropsWarning } from '../internals/utils/warning';\nimport { getPickersCalendarHeaderUtilityClass } from './pickersCalendarHeaderClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n labelContainer: ['labelContainer'],\n label: ['label'],\n switchViewButton: ['switchViewButton'],\n switchViewIcon: ['switchViewIcon']\n };\n return composeClasses(slots, getPickersCalendarHeaderUtilityClass, classes);\n};\n\nconst PickersCalendarHeaderRoot = styled('div', {\n name: 'MuiPickersCalendarHeader',\n slot: 'Root',\n overridesResolver: (_, styles) => styles.root\n})({\n display: 'flex',\n alignItems: 'center',\n marginTop: 16,\n marginBottom: 8,\n paddingLeft: 24,\n paddingRight: 12,\n // prevent jumping in safari\n maxHeight: 30,\n minHeight: 30\n});\nconst PickersCalendarHeaderLabelContainer = styled('div', {\n name: 'MuiPickersCalendarHeader',\n slot: 'LabelContainer',\n overridesResolver: (_, styles) => styles.labelContainer\n})(({\n theme\n}) => _extends({\n display: 'flex',\n maxHeight: 30,\n overflow: 'hidden',\n alignItems: 'center',\n cursor: 'pointer',\n marginRight: 'auto'\n}, theme.typography.body1, {\n fontWeight: theme.typography.fontWeightMedium\n}));\nconst PickersCalendarHeaderLabel = styled('div', {\n name: 'MuiPickersCalendarHeader',\n slot: 'Label',\n overridesResolver: (_, styles) => styles.label\n})({\n marginRight: 6\n});\nconst PickersCalendarHeaderSwitchViewButton = styled(IconButton, {\n name: 'MuiPickersCalendarHeader',\n slot: 'SwitchViewButton',\n overridesResolver: (_, styles) => styles.switchViewButton\n})({\n marginRight: 'auto'\n});\nconst PickersCalendarHeaderSwitchViewIcon = styled(ArrowDropDown, {\n name: 'MuiPickersCalendarHeader',\n slot: 'SwitchViewIcon',\n overridesResolver: (_, styles) => styles.switchViewIcon\n})(({\n theme,\n ownerState\n}) => _extends({\n willChange: 'transform',\n transition: theme.transitions.create('transform'),\n transform: 'rotate(0deg)'\n}, ownerState.openView === 'year' && {\n transform: 'rotate(180deg)'\n}));\nconst deprecatedPropsWarning = buildDeprecatedPropsWarning('Props for translation are deprecated. See https://mui.com/x/react-date-pickers/localization for more information.');\n/**\n * @ignore - do not document.\n */\n\nexport function PickersCalendarHeader(inProps) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPickersCalendarHeader'\n });\n const {\n components = {},\n componentsProps = {},\n currentMonth: month,\n disabled,\n disableFuture,\n disablePast,\n getViewSwitchingButtonText: getViewSwitchingButtonTextProp,\n leftArrowButtonText: leftArrowButtonTextProp,\n maxDate,\n minDate,\n onMonthChange,\n onViewChange,\n openView: currentView,\n reduceAnimations,\n rightArrowButtonText: rightArrowButtonTextProp,\n views,\n labelId\n } = props;\n deprecatedPropsWarning({\n leftArrowButtonText: leftArrowButtonTextProp,\n rightArrowButtonText: rightArrowButtonTextProp,\n getViewSwitchingButtonText: getViewSwitchingButtonTextProp\n });\n const localeText = useLocaleText();\n const leftArrowButtonText = leftArrowButtonTextProp != null ? leftArrowButtonTextProp : localeText.previousMonth;\n const rightArrowButtonText = rightArrowButtonTextProp != null ? rightArrowButtonTextProp : localeText.nextMonth;\n const getViewSwitchingButtonText = getViewSwitchingButtonTextProp != null ? getViewSwitchingButtonTextProp : localeText.calendarViewSwitchingButtonAriaLabel;\n const utils = useUtils();\n const classes = useUtilityClasses(props);\n const switchViewButtonProps = componentsProps.switchViewButton || {};\n\n const selectNextMonth = () => onMonthChange(utils.getNextMonth(month), 'left');\n\n const selectPreviousMonth = () => onMonthChange(utils.getPreviousMonth(month), 'right');\n\n const isNextMonthDisabled = useNextMonthDisabled(month, {\n disableFuture,\n maxDate\n });\n const isPreviousMonthDisabled = usePreviousMonthDisabled(month, {\n disablePast,\n minDate\n });\n\n const handleToggleView = () => {\n if (views.length === 1 || !onViewChange || disabled) {\n return;\n }\n\n if (views.length === 2) {\n onViewChange(views.find(view => view !== currentView) || views[0]);\n } else {\n // switching only between first 2\n const nextIndexToOpen = views.indexOf(currentView) !== 0 ? 0 : 1;\n onViewChange(views[nextIndexToOpen]);\n }\n }; // No need to display more information\n\n\n if (views.length === 1 && views[0] === 'year') {\n return null;\n }\n\n const ownerState = props;\n return /*#__PURE__*/_jsxs(PickersCalendarHeaderRoot, {\n ownerState: ownerState,\n className: classes.root,\n children: [/*#__PURE__*/_jsxs(PickersCalendarHeaderLabelContainer, {\n role: \"presentation\",\n onClick: handleToggleView,\n ownerState: ownerState // putting this on the label item element below breaks when using transition\n ,\n \"aria-live\": \"polite\",\n className: classes.labelContainer,\n children: [/*#__PURE__*/_jsx(PickersFadeTransitionGroup, {\n reduceAnimations: reduceAnimations,\n transKey: utils.format(month, 'monthAndYear'),\n children: /*#__PURE__*/_jsx(PickersCalendarHeaderLabel, {\n id: labelId,\n ownerState: ownerState,\n className: classes.label,\n children: utils.format(month, 'monthAndYear')\n })\n }), views.length > 1 && !disabled && /*#__PURE__*/_jsx(PickersCalendarHeaderSwitchViewButton, _extends({\n size: \"small\",\n as: components.SwitchViewButton,\n \"aria-label\": getViewSwitchingButtonText(currentView),\n className: classes.switchViewButton\n }, switchViewButtonProps, {\n children: /*#__PURE__*/_jsx(PickersCalendarHeaderSwitchViewIcon, {\n as: components.SwitchViewIcon,\n ownerState: ownerState,\n className: classes.switchViewIcon\n })\n }))]\n }), /*#__PURE__*/_jsx(Fade, {\n in: currentView === 'day',\n children: /*#__PURE__*/_jsx(PickersArrowSwitcher, {\n leftArrowButtonText: leftArrowButtonText,\n rightArrowButtonText: rightArrowButtonText,\n components: components,\n componentsProps: componentsProps,\n onLeftClick: selectPreviousMonth,\n onRightClick: selectNextMonth,\n isLeftDisabled: isPreviousMonthDisabled,\n isRightDisabled: isNextMonthDisabled\n })\n })]\n });\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getPickersYearUtilityClass(slot) {\n // TODO v6: Rename 'PrivatePickersYear' to 'MuiPickersYear' to follow convention\n return generateUtilityClass('PrivatePickersYear', slot);\n} // TODO v6: Rename 'PrivatePickersYear' to 'MuiPickersYear' to follow convention\n\nexport const pickersYearClasses = generateUtilityClasses('PrivatePickersYear', ['root', 'modeDesktop', 'modeMobile', 'yearButton', 'selected', 'disabled']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"className\", \"children\", \"disabled\", \"onClick\", \"onKeyDown\", \"value\", \"tabIndex\", \"onFocus\", \"onBlur\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { useForkRef, capitalize } from '@mui/material/utils';\nimport { alpha, styled } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { WrapperVariantContext } from '../internals/components/wrappers/WrapperVariantContext';\nimport { getPickersYearUtilityClass, pickersYearClasses } from './pickersYearClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n wrapperVariant,\n disabled,\n selected,\n classes\n } = ownerState;\n const slots = {\n root: ['root', wrapperVariant && `mode${capitalize(wrapperVariant)}`],\n yearButton: ['yearButton', disabled && 'disabled', selected && 'selected']\n };\n return composeClasses(slots, getPickersYearUtilityClass, classes);\n};\n\nconst PickersYearRoot = styled('div', {\n name: 'PrivatePickersYear',\n slot: 'Root',\n overridesResolver: (_, styles) => [styles.root, {\n [`&.${pickersYearClasses.modeDesktop}`]: styles.modeDesktop\n }, {\n [`&.${pickersYearClasses.modeMobile}`]: styles.modeMobile\n }]\n})(({\n ownerState\n}) => _extends({\n flexBasis: '33.3%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n}, (ownerState == null ? void 0 : ownerState.wrapperVariant) === 'desktop' && {\n flexBasis: '25%'\n}));\nconst PickersYearButton = styled('button', {\n name: 'PrivatePickersYear',\n slot: 'Button',\n overridesResolver: (_, styles) => [styles.button, {\n [`&.${pickersYearClasses.disabled}`]: styles.disabled\n }, {\n [`&.${pickersYearClasses.selected}`]: styles.selected\n }]\n})(({\n theme\n}) => _extends({\n color: 'unset',\n backgroundColor: 'transparent',\n border: 0,\n outline: 0\n}, theme.typography.subtitle1, {\n margin: '8px 0',\n height: 36,\n width: 72,\n borderRadius: 18,\n cursor: 'pointer',\n '&:focus, &:hover': {\n backgroundColor: alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n },\n [`&.${pickersYearClasses.disabled}`]: {\n color: theme.palette.text.secondary\n },\n [`&.${pickersYearClasses.selected}`]: {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.primary.main,\n '&:focus, &:hover': {\n backgroundColor: theme.palette.primary.dark\n }\n }\n}));\n\nconst noop = () => {};\n/**\n * @ignore - internal component.\n */\n\n\nexport const PickersYear = /*#__PURE__*/React.forwardRef(function PickersYear(props, forwardedRef) {\n // TODO v6: add 'useThemeProps' once the component class names are aligned\n const {\n autoFocus,\n className,\n children,\n disabled,\n onClick,\n onKeyDown,\n value,\n tabIndex,\n onFocus = noop,\n onBlur = noop\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ref = React.useRef(null);\n const refHandle = useForkRef(ref, forwardedRef);\n const wrapperVariant = React.useContext(WrapperVariantContext);\n\n const ownerState = _extends({}, props, {\n wrapperVariant\n });\n\n const classes = useUtilityClasses(ownerState); // We can't forward the `autoFocus` to the button because it is a native button, not a MUI Button\n\n React.useEffect(() => {\n if (autoFocus) {\n // `ref.current` being `null` would be a bug in MUI.\n ref.current.focus();\n }\n }, [autoFocus]);\n return /*#__PURE__*/_jsx(PickersYearRoot, {\n className: clsx(classes.root, className),\n ownerState: ownerState,\n children: /*#__PURE__*/_jsx(PickersYearButton, _extends({\n ref: refHandle,\n disabled: disabled,\n type: \"button\",\n tabIndex: disabled ? -1 : tabIndex,\n onClick: event => onClick(event, value),\n onKeyDown: event => onKeyDown(event, value),\n onFocus: event => onFocus(event, value),\n onBlur: event => onBlur(event, value),\n className: classes.yearButton,\n ownerState: ownerState\n }, other, {\n children: children\n }))\n });\n});","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getYearPickerUtilityClass(slot) {\n return generateUtilityClass('MuiYearPicker', slot);\n}\nexport const yearPickerClasses = generateUtilityClasses('MuiYearPicker', ['root']);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTheme, styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport clsx from 'clsx';\nimport { useForkRef } from '@mui/material/utils';\nimport { unstable_useControlled as useControlled } from '@mui/utils';\nimport { PickersYear } from './PickersYear';\nimport { useUtils, useNow, useDefaultDates } from '../internals/hooks/useUtils';\nimport { WrapperVariantContext } from '../internals/components/wrappers/WrapperVariantContext';\nimport { getYearPickerUtilityClass } from './yearPickerClasses';\nimport { parseNonNullablePickerDate } from '../internals/utils/date-utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getYearPickerUtilityClass, classes);\n};\n\nfunction useYearPickerDefaultizedProps(props, name) {\n const utils = useUtils();\n const defaultDates = useDefaultDates();\n const themeProps = useThemeProps({\n props,\n name\n });\n return _extends({\n disablePast: false,\n disableFuture: false\n }, themeProps, {\n minDate: parseNonNullablePickerDate(utils, themeProps.minDate, defaultDates.minDate),\n maxDate: parseNonNullablePickerDate(utils, themeProps.maxDate, defaultDates.maxDate)\n });\n}\n\nconst YearPickerRoot = styled('div', {\n name: 'MuiYearPicker',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n overflowY: 'auto',\n height: '100%',\n padding: '0 4px',\n maxHeight: '304px'\n});\nexport const YearPicker = /*#__PURE__*/React.forwardRef(function YearPicker(inProps, ref) {\n const now = useNow();\n const theme = useTheme();\n const utils = useUtils();\n const props = useYearPickerDefaultizedProps(inProps, 'MuiYearPicker');\n const {\n autoFocus,\n className,\n date,\n disabled,\n disableFuture,\n disablePast,\n maxDate,\n minDate,\n onChange,\n readOnly,\n shouldDisableYear,\n disableHighlightToday,\n onYearFocus,\n hasFocus,\n onFocusedViewChange\n } = props;\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n const selectedDateOrStartOfYear = React.useMemo(() => date != null ? date : utils.startOfYear(now), [now, utils, date]);\n const currentYear = React.useMemo(() => {\n if (date != null) {\n return utils.getYear(date);\n }\n\n if (disableHighlightToday) {\n return null;\n }\n\n return utils.getYear(now);\n }, [now, date, utils, disableHighlightToday]);\n const wrapperVariant = React.useContext(WrapperVariantContext);\n const selectedYearRef = React.useRef(null);\n const [focusedYear, setFocusedYear] = React.useState(() => currentYear || utils.getYear(now));\n const [internalHasFocus, setInternalHasFocus] = useControlled({\n name: 'YearPicker',\n state: 'hasFocus',\n controlled: hasFocus,\n default: autoFocus\n });\n const changeHasFocus = React.useCallback(newHasFocus => {\n setInternalHasFocus(newHasFocus);\n\n if (onFocusedViewChange) {\n onFocusedViewChange(newHasFocus);\n }\n }, [setInternalHasFocus, onFocusedViewChange]);\n const isYearDisabled = React.useCallback(dateToValidate => {\n if (disablePast && utils.isBeforeYear(dateToValidate, now)) {\n return true;\n }\n\n if (disableFuture && utils.isAfterYear(dateToValidate, now)) {\n return true;\n }\n\n if (minDate && utils.isBeforeYear(dateToValidate, minDate)) {\n return true;\n }\n\n if (maxDate && utils.isAfterYear(dateToValidate, maxDate)) {\n return true;\n }\n\n if (shouldDisableYear && shouldDisableYear(dateToValidate)) {\n return true;\n }\n\n return false;\n }, [disableFuture, disablePast, maxDate, minDate, now, shouldDisableYear, utils]);\n\n const handleYearSelection = (event, year, isFinish = 'finish') => {\n if (readOnly) {\n return;\n }\n\n const newDate = utils.setYear(selectedDateOrStartOfYear, year);\n onChange(newDate, isFinish);\n };\n\n const focusYear = React.useCallback(year => {\n if (!isYearDisabled(utils.setYear(selectedDateOrStartOfYear, year))) {\n setFocusedYear(year);\n changeHasFocus(true);\n onYearFocus == null ? void 0 : onYearFocus(year);\n }\n }, [isYearDisabled, utils, selectedDateOrStartOfYear, changeHasFocus, onYearFocus]);\n React.useEffect(() => {\n setFocusedYear(prevFocusedYear => currentYear !== null && prevFocusedYear !== currentYear ? currentYear : prevFocusedYear);\n }, [currentYear]);\n const yearsInRow = wrapperVariant === 'desktop' ? 4 : 3;\n const handleKeyDown = React.useCallback((event, year) => {\n switch (event.key) {\n case 'ArrowUp':\n focusYear(year - yearsInRow);\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n focusYear(year + yearsInRow);\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n focusYear(year + (theme.direction === 'ltr' ? -1 : 1));\n event.preventDefault();\n break;\n\n case 'ArrowRight':\n focusYear(year + (theme.direction === 'ltr' ? 1 : -1));\n event.preventDefault();\n break;\n\n default:\n break;\n }\n }, [focusYear, theme.direction, yearsInRow]);\n const handleFocus = React.useCallback((event, year) => {\n focusYear(year);\n }, [focusYear]);\n const handleBlur = React.useCallback((event, year) => {\n if (focusedYear === year) {\n changeHasFocus(false);\n }\n }, [focusedYear, changeHasFocus]);\n const nowYear = utils.getYear(now);\n const scrollerRef = React.useRef(null);\n const handleRef = useForkRef(ref, scrollerRef);\n React.useEffect(() => {\n if (autoFocus || scrollerRef.current === null) {\n return;\n }\n\n const tabbableButton = scrollerRef.current.querySelector('[tabindex=\"0\"]');\n\n if (!tabbableButton) {\n return;\n } // Taken from useScroll in x-data-grid, but vertically centered\n\n\n const offsetHeight = tabbableButton.offsetHeight;\n const offsetTop = tabbableButton.offsetTop;\n const clientHeight = scrollerRef.current.clientHeight;\n const scrollTop = scrollerRef.current.scrollTop;\n const elementBottom = offsetTop + offsetHeight;\n\n if (offsetHeight > clientHeight || offsetTop < scrollTop) {\n // Button already visible\n return;\n }\n\n scrollerRef.current.scrollTop = elementBottom - clientHeight / 2 - offsetHeight / 2;\n }, [autoFocus]);\n return /*#__PURE__*/_jsx(YearPickerRoot, {\n ref: handleRef,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n children: utils.getYearRange(minDate, maxDate).map(year => {\n const yearNumber = utils.getYear(year);\n const selected = yearNumber === currentYear;\n return /*#__PURE__*/_jsx(PickersYear, {\n selected: selected,\n value: yearNumber,\n onClick: handleYearSelection,\n onKeyDown: handleKeyDown,\n autoFocus: internalHasFocus && yearNumber === focusedYear,\n ref: selected ? selectedYearRef : undefined,\n disabled: disabled || isYearDisabled(year),\n tabIndex: yearNumber === focusedYear ? 0 : -1,\n onFocus: handleFocus,\n onBlur: handleBlur,\n \"aria-current\": nowYear === yearNumber ? 'date' : undefined,\n children: utils.format(year, 'year')\n }, utils.format(year, 'year'));\n })\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? YearPicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n autoFocus: PropTypes.bool,\n classes: PropTypes.object,\n className: PropTypes.string,\n date: PropTypes.any,\n disabled: PropTypes.bool,\n\n /**\n * If `true` future days are disabled.\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true`, today's date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * If `true` past days are disabled.\n * @default false\n */\n disablePast: PropTypes.bool,\n hasFocus: PropTypes.bool,\n\n /**\n * Maximal selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Minimal selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n onChange: PropTypes.func.isRequired,\n onFocusedDayChange: PropTypes.func,\n onFocusedViewChange: PropTypes.func,\n onYearFocus: PropTypes.func,\n readOnly: PropTypes.bool,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n * @template TDate\n * @param {TDate} year The year to test.\n * @returns {boolean} Returns `true` if the year should be disabled.\n */\n shouldDisableYear: PropTypes.func\n} : void 0;","export const defaultReduceAnimations = typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent);","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport const getCalendarPickerUtilityClass = slot => generateUtilityClass('MuiCalendarPicker', slot);\nexport const calendarPickerClasses = generateUtilityClasses('MuiCalendarPicker', ['root', 'viewTransitionContainer']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"onViewChange\", \"date\", \"disableFuture\", \"disablePast\", \"defaultCalendarMonth\", \"onChange\", \"onYearChange\", \"onMonthChange\", \"reduceAnimations\", \"shouldDisableDate\", \"shouldDisableMonth\", \"shouldDisableYear\", \"view\", \"views\", \"openTo\", \"className\", \"disabled\", \"readOnly\", \"minDate\", \"maxDate\", \"disableHighlightToday\", \"focusedView\", \"onFocusedViewChange\", \"classes\"];\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/material';\nimport { useControlled, unstable_useId as useId, useEventCallback } from '@mui/material/utils';\nimport { MonthPicker } from '../MonthPicker/MonthPicker';\nimport { useCalendarState } from './useCalendarState';\nimport { useDefaultDates, useUtils } from '../internals/hooks/useUtils';\nimport { PickersFadeTransitionGroup } from './PickersFadeTransitionGroup';\nimport { DayPicker } from './DayPicker';\nimport { useViews } from '../internals/hooks/useViews';\nimport { PickersCalendarHeader } from './PickersCalendarHeader';\nimport { YearPicker } from '../YearPicker/YearPicker';\nimport { findClosestEnabledDate, parseNonNullablePickerDate } from '../internals/utils/date-utils';\nimport { PickerViewRoot } from '../internals/components/PickerViewRoot';\nimport { defaultReduceAnimations } from '../internals/utils/defaultReduceAnimations';\nimport { getCalendarPickerUtilityClass } from './calendarPickerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n viewTransitionContainer: ['viewTransitionContainer']\n };\n return composeClasses(slots, getCalendarPickerUtilityClass, classes);\n};\n\nfunction useCalendarPickerDefaultizedProps(props, name) {\n const utils = useUtils();\n const defaultDates = useDefaultDates();\n const themeProps = useThemeProps({\n props,\n name\n });\n return _extends({\n loading: false,\n disablePast: false,\n disableFuture: false,\n openTo: 'day',\n views: ['year', 'day'],\n reduceAnimations: defaultReduceAnimations,\n renderLoading: () => /*#__PURE__*/_jsx(\"span\", {\n children: \"...\"\n })\n }, themeProps, {\n minDate: parseNonNullablePickerDate(utils, themeProps.minDate, defaultDates.minDate),\n maxDate: parseNonNullablePickerDate(utils, themeProps.maxDate, defaultDates.maxDate)\n });\n}\n\nconst CalendarPickerRoot = styled(PickerViewRoot, {\n name: 'MuiCalendarPicker',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'flex',\n flexDirection: 'column'\n});\nconst CalendarPickerViewTransitionContainer = styled(PickersFadeTransitionGroup, {\n name: 'MuiCalendarPicker',\n slot: 'ViewTransitionContainer',\n overridesResolver: (props, styles) => styles.viewTransitionContainer\n})({});\n\n/**\n *\n * Demos:\n *\n * - [Date Picker](https://mui.com/x/react-date-pickers/date-picker/)\n *\n * API:\n *\n * - [CalendarPicker API](https://mui.com/x/api/date-pickers/calendar-picker/)\n */\nexport const CalendarPicker = /*#__PURE__*/React.forwardRef(function CalendarPicker(inProps, ref) {\n const utils = useUtils();\n const id = useId();\n const props = useCalendarPickerDefaultizedProps(inProps, 'MuiCalendarPicker');\n\n const {\n autoFocus,\n onViewChange,\n date,\n disableFuture,\n disablePast,\n defaultCalendarMonth,\n onChange,\n onYearChange,\n onMonthChange,\n reduceAnimations,\n shouldDisableDate,\n shouldDisableMonth,\n shouldDisableYear,\n view,\n views,\n openTo,\n className,\n disabled,\n readOnly,\n minDate,\n maxDate,\n disableHighlightToday,\n focusedView,\n onFocusedViewChange\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const {\n openView,\n setOpenView,\n openNext\n } = useViews({\n view,\n views,\n openTo,\n onChange,\n onViewChange\n });\n const {\n calendarState,\n changeFocusedDay,\n changeMonth,\n handleChangeMonth,\n isDateDisabled,\n onMonthSwitchingAnimationEnd\n } = useCalendarState({\n date,\n defaultCalendarMonth,\n reduceAnimations,\n onMonthChange,\n minDate,\n maxDate,\n shouldDisableDate,\n disablePast,\n disableFuture\n });\n const handleDateMonthChange = React.useCallback((newDate, selectionState) => {\n const startOfMonth = utils.startOfMonth(newDate);\n const endOfMonth = utils.endOfMonth(newDate);\n const closestEnabledDate = isDateDisabled(newDate) ? findClosestEnabledDate({\n utils,\n date: newDate,\n minDate: utils.isBefore(minDate, startOfMonth) ? startOfMonth : minDate,\n maxDate: utils.isAfter(maxDate, endOfMonth) ? endOfMonth : maxDate,\n disablePast,\n disableFuture,\n isDateDisabled\n }) : newDate;\n\n if (closestEnabledDate) {\n onChange(closestEnabledDate, selectionState);\n onMonthChange == null ? void 0 : onMonthChange(startOfMonth);\n } else {\n openNext();\n changeMonth(startOfMonth);\n }\n\n changeFocusedDay(closestEnabledDate, true);\n }, [changeFocusedDay, disableFuture, disablePast, isDateDisabled, maxDate, minDate, onChange, onMonthChange, changeMonth, openNext, utils]);\n const handleDateYearChange = React.useCallback((newDate, selectionState) => {\n const startOfYear = utils.startOfYear(newDate);\n const endOfYear = utils.endOfYear(newDate);\n const closestEnabledDate = isDateDisabled(newDate) ? findClosestEnabledDate({\n utils,\n date: newDate,\n minDate: utils.isBefore(minDate, startOfYear) ? startOfYear : minDate,\n maxDate: utils.isAfter(maxDate, endOfYear) ? endOfYear : maxDate,\n disablePast,\n disableFuture,\n isDateDisabled\n }) : newDate;\n\n if (closestEnabledDate) {\n onChange(closestEnabledDate, selectionState);\n onYearChange == null ? void 0 : onYearChange(closestEnabledDate);\n } else {\n openNext();\n changeMonth(startOfYear);\n }\n\n changeFocusedDay(closestEnabledDate, true);\n }, [changeFocusedDay, disableFuture, disablePast, isDateDisabled, maxDate, minDate, onChange, onYearChange, openNext, utils, changeMonth]);\n const onSelectedDayChange = React.useCallback((day, isFinish) => {\n if (date && day) {\n // If there is a date already selected, then we want to keep its time\n return onChange(utils.mergeDateAndTime(day, date), isFinish);\n }\n\n return onChange(day, isFinish);\n }, [utils, date, onChange]);\n React.useEffect(() => {\n if (date) {\n changeMonth(date);\n }\n }, [date]); // eslint-disable-line\n\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n const baseDateValidationProps = {\n disablePast,\n disableFuture,\n maxDate,\n minDate\n }; // When disabled, limit the view to the selected date\n\n const minDateWithDisabled = disabled && date || minDate;\n const maxDateWithDisabled = disabled && date || maxDate;\n const commonViewProps = {\n disableHighlightToday,\n readOnly,\n disabled\n };\n const gridLabelId = `${id}-grid-label`;\n const [internalFocusedView, setInternalFocusedView] = useControlled({\n name: 'DayPicker',\n state: 'focusedView',\n controlled: focusedView,\n default: autoFocus ? openView : null\n });\n const hasFocus = internalFocusedView !== null;\n const handleFocusedViewChange = useEventCallback(eventView => newHasFocus => {\n if (onFocusedViewChange) {\n // Use the calendar or clock logic\n onFocusedViewChange(eventView)(newHasFocus);\n return;\n } // If alone, do the local modifications\n\n\n if (newHasFocus) {\n setInternalFocusedView(eventView);\n } else {\n setInternalFocusedView(prevView => prevView === eventView ? null : prevView);\n }\n });\n const prevOpenViewRef = React.useRef(openView);\n React.useEffect(() => {\n // Set focus to the button when switching from a view to another\n if (prevOpenViewRef.current === openView) {\n return;\n }\n\n prevOpenViewRef.current = openView;\n handleFocusedViewChange(openView)(true);\n }, [openView, handleFocusedViewChange]);\n return /*#__PURE__*/_jsxs(CalendarPickerRoot, {\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsx(PickersCalendarHeader, _extends({}, other, {\n views: views,\n openView: openView,\n currentMonth: calendarState.currentMonth,\n onViewChange: setOpenView,\n onMonthChange: (newMonth, direction) => handleChangeMonth({\n newMonth,\n direction\n }),\n minDate: minDateWithDisabled,\n maxDate: maxDateWithDisabled,\n disabled: disabled,\n disablePast: disablePast,\n disableFuture: disableFuture,\n reduceAnimations: reduceAnimations,\n labelId: gridLabelId\n })), /*#__PURE__*/_jsx(CalendarPickerViewTransitionContainer, {\n reduceAnimations: reduceAnimations,\n className: classes.viewTransitionContainer,\n transKey: openView,\n ownerState: ownerState,\n children: /*#__PURE__*/_jsxs(\"div\", {\n children: [openView === 'year' && /*#__PURE__*/_jsx(YearPicker, _extends({}, other, baseDateValidationProps, commonViewProps, {\n autoFocus: autoFocus,\n date: date,\n onChange: handleDateYearChange,\n shouldDisableYear: shouldDisableYear,\n hasFocus: hasFocus,\n onFocusedViewChange: handleFocusedViewChange('year')\n })), openView === 'month' && /*#__PURE__*/_jsx(MonthPicker, _extends({}, baseDateValidationProps, commonViewProps, {\n autoFocus: autoFocus,\n hasFocus: hasFocus,\n className: className,\n date: date,\n onChange: handleDateMonthChange,\n shouldDisableMonth: shouldDisableMonth,\n onFocusedViewChange: handleFocusedViewChange('month')\n })), openView === 'day' && /*#__PURE__*/_jsx(DayPicker, _extends({}, other, calendarState, baseDateValidationProps, commonViewProps, {\n autoFocus: autoFocus,\n onMonthSwitchingAnimationEnd: onMonthSwitchingAnimationEnd,\n onFocusedDayChange: changeFocusedDay,\n reduceAnimations: reduceAnimations,\n selectedDays: [date],\n onSelectedDaysChange: onSelectedDayChange,\n shouldDisableDate: shouldDisableDate,\n hasFocus: hasFocus,\n onFocusedViewChange: handleFocusedViewChange('day'),\n gridLabelId: gridLabelId\n }))]\n })\n })]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? CalendarPicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n autoFocus: PropTypes.bool,\n classes: PropTypes.object,\n className: PropTypes.string,\n\n /**\n * Overrideable components.\n * @default {}\n */\n components: PropTypes.object,\n\n /**\n * The props used for each component slot.\n * @default {}\n */\n componentsProps: PropTypes.object,\n date: PropTypes.any,\n\n /**\n * Formats the day of week displayed in the calendar header.\n * @param {string} day The day of week provided by the adapter's method `getWeekdays`.\n * @returns {string} The name to display.\n * @default (day) => day.charAt(0).toUpperCase()\n */\n dayOfWeekFormatter: PropTypes.func,\n\n /**\n * Default calendar month displayed when `value={null}`.\n */\n defaultCalendarMonth: PropTypes.any,\n\n /**\n * If `true`, the picker and text field are disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true` future days are disabled.\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true`, today's date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * If `true` past days are disabled.\n * @default false\n */\n disablePast: PropTypes.bool,\n focusedView: PropTypes.oneOf(['day', 'month', 'year']),\n\n /**\n * Get aria-label text for switching between views button.\n * @param {CalendarPickerView} currentView The view from which we want to get the button text.\n * @returns {string} The label of the view.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n */\n getViewSwitchingButtonText: PropTypes.func,\n\n /**\n * Left arrow icon aria-label text.\n * @deprecated\n */\n leftArrowButtonText: PropTypes.string,\n\n /**\n * If `true` renders `LoadingComponent` in calendar instead of calendar view.\n * Can be used to preload information and show it in calendar.\n * @default false\n */\n loading: PropTypes.bool,\n\n /**\n * Maximal selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Minimal selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n\n /**\n * Callback fired on date change\n */\n onChange: PropTypes.func.isRequired,\n onFocusedViewChange: PropTypes.func,\n\n /**\n * Callback firing on month change @DateIOType.\n * @template TDate\n * @param {TDate} month The new month.\n * @returns {void|Promise} -\n */\n onMonthChange: PropTypes.func,\n\n /**\n * Callback fired on view change.\n * @param {CalendarPickerView} view The new view.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Callback firing on year change @DateIOType.\n * @template TDate\n * @param {TDate} year The new year.\n */\n onYearChange: PropTypes.func,\n\n /**\n * Initially open view.\n * @default 'day'\n */\n openTo: PropTypes.oneOf(['day', 'month', 'year']),\n\n /**\n * Make picker read only.\n * @default false\n */\n readOnly: PropTypes.bool,\n\n /**\n * Disable heavy animations.\n * @default typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent)\n */\n reduceAnimations: PropTypes.bool,\n\n /**\n * Custom renderer for day. Check the [PickersDay](https://mui.com/x/api/date-pickers/pickers-day/) component.\n * @template TDate\n * @param {TDate} day The day to render.\n * @param {Array} selectedDays The days currently selected.\n * @param {PickersDayProps} pickersDayProps The props of the day to render.\n * @returns {JSX.Element} The element representing the day.\n */\n renderDay: PropTypes.func,\n\n /**\n * Component displaying when passed `loading` true.\n * @returns {React.ReactNode} The node to render when loading.\n * @default () => ...\n */\n renderLoading: PropTypes.func,\n\n /**\n * Right arrow icon aria-label text.\n * @deprecated\n */\n rightArrowButtonText: PropTypes.string,\n\n /**\n * Disable specific date. @DateIOType\n * @template TDate\n * @param {TDate} day The date to test.\n * @returns {boolean} Returns `true` if the date should be disabled.\n */\n shouldDisableDate: PropTypes.func,\n\n /**\n * Disable specific months dynamically.\n * Works like `shouldDisableDate` but for month selection view @DateIOType.\n * @template TDate\n * @param {TDate} month The month to check.\n * @returns {boolean} If `true` the month will be disabled.\n */\n shouldDisableMonth: PropTypes.func,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n * @template TDate\n * @param {TDate} year The year to test.\n * @returns {boolean} Returns `true` if the year should be disabled.\n */\n shouldDisableYear: PropTypes.func,\n\n /**\n * If `true`, days that have `outsideCurrentMonth={true}` are displayed.\n * @default false\n */\n showDaysOutsideCurrentMonth: PropTypes.bool,\n\n /**\n * Controlled open view.\n */\n view: PropTypes.oneOf(['day', 'month', 'year']),\n\n /**\n * Views for calendar picker.\n * @default ['year', 'day']\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year']).isRequired)\n} : void 0;","import { useReducer, useRef, useLayoutEffect, useEffect } from 'react';\n\nconst useRifm = props => {\n const [, refresh] = useReducer(c => c + 1, 0);\n const valueRef = useRef(null);\n const {\n replace,\n append\n } = props;\n const userValue = replace ? replace(props.format(props.value)) : props.format(props.value); // state of delete button see comments below about inputType support\n\n const isDeleleteButtonDownRef = useRef(false);\n\n const onChange = evt => {\n if (process.env.NODE_ENV !== 'production') {\n if (evt.target.type === 'number') {\n console.error('Rifm does not support input type=number, use type=tel instead.');\n return;\n }\n\n if (evt.target.type === 'date') {\n console.error('Rifm does not support input type=date.');\n return;\n }\n }\n\n const eventValue = evt.target.value;\n valueRef.current = [eventValue, // eventValue\n evt.target, // input\n eventValue.length > userValue.length, // isSizeIncreaseOperation\n isDeleleteButtonDownRef.current, // isDeleleteButtonDown\n userValue === props.format(eventValue) // isNoOperation\n ];\n\n if (process.env.NODE_ENV !== 'production') {\n const formattedEventValue = props.format(eventValue);\n\n if (eventValue !== formattedEventValue && eventValue.toLowerCase() === formattedEventValue.toLowerCase()) {\n console.warn('Case enforcement does not work with format. Please use replace={value => value.toLowerCase()} instead');\n }\n } // The main trick is to update underlying input with non formatted value (= eventValue)\n // that allows us to calculate right cursor position after formatting (see getCursorPosition)\n // then we format new value and call props.onChange with masked/formatted value\n // and finally we are able to set cursor position into right place\n\n\n refresh();\n }; // React prints warn on server in non production mode about useLayoutEffect usage\n // in both cases it's noop\n\n\n if (process.env.NODE_ENV === 'production' || typeof window !== 'undefined') {\n useLayoutEffect(() => {\n if (valueRef.current == null) return;\n let [eventValue, input, isSizeIncreaseOperation, isDeleleteButtonDown, // No operation means that value itself hasn't been changed, BTW cursor, selection etc can be changed\n isNoOperation] = valueRef.current;\n valueRef.current = null; // this usually occurs on deleting special symbols like ' here 123'123.00\n // in case of isDeleleteButtonDown cursor should move differently vs backspace\n\n const deleteWasNoOp = isDeleleteButtonDown && isNoOperation;\n const valueAfterSelectionStart = eventValue.slice(input.selectionStart);\n const acceptedCharIndexAfterDelete = valueAfterSelectionStart.search(props.accept || /\\d/g);\n const charsToSkipAfterDelete = acceptedCharIndexAfterDelete !== -1 ? acceptedCharIndexAfterDelete : 0; // Create string from only accepted symbols\n\n const clean = str => (str.match(props.accept || /\\d/g) || []).join('');\n\n const valueBeforeSelectionStart = clean(eventValue.substr(0, input.selectionStart)); // trying to find cursor position in formatted value having knowledge about valueBeforeSelectionStart\n // This works because we assume that format doesn't change the order of accepted symbols.\n // Imagine we have formatter which adds ' symbol between numbers, and by default we refuse all non numeric symbols\n // for example we had input = 1'2|'4 (| means cursor position) then user entered '3' symbol\n // inputValue = 1'23'|4 so valueBeforeSelectionStart = 123 and formatted value = 1'2'3'4\n // calling getCursorPosition(\"1'2'3'4\") will give us position after 3, 1'2'3|'4\n // so for formatting just this function to determine cursor position after formatting is enough\n // with masking we need to do some additional checks see `mask` below\n\n const getCursorPosition = val => {\n let start = 0;\n let cleanPos = 0;\n\n for (let i = 0; i !== valueBeforeSelectionStart.length; ++i) {\n let newPos = val.indexOf(valueBeforeSelectionStart[i], start) + 1;\n let newCleanPos = clean(val).indexOf(valueBeforeSelectionStart[i], cleanPos) + 1; // this skips position change if accepted symbols order was broken\n // For example fixes edge case with fixed point numbers:\n // You have '0|.00', then press 1, it becomes 01|.00 and after format 1.00, this breaks our assumption\n // that order of accepted symbols is not changed after format,\n // so here we don't update start position if other accepted symbols was inbetween current and new position\n\n if (newCleanPos - cleanPos > 1) {\n newPos = start;\n newCleanPos = cleanPos;\n }\n\n cleanPos = Math.max(newCleanPos, cleanPos);\n start = Math.max(start, newPos);\n }\n\n return start;\n }; // Masking part, for masks if size of mask is above some value\n // we need to replace symbols instead of do nothing as like in format\n\n\n if (props.mask === true && isSizeIncreaseOperation && !isNoOperation) {\n let start = getCursorPosition(eventValue);\n const c = clean(eventValue.substr(start))[0];\n start = eventValue.indexOf(c, start);\n eventValue = `${eventValue.substr(0, start)}${eventValue.substr(start + 1)}`;\n }\n\n let formattedValue = props.format(eventValue);\n\n if (append != null && // cursor at the end\n input.selectionStart === eventValue.length && !isNoOperation) {\n if (isSizeIncreaseOperation) {\n formattedValue = append(formattedValue);\n } else {\n // If after delete last char is special character and we use append\n // delete it too\n // was: \"12-3|\" backspace pressed, then should be \"12|\"\n if (clean(formattedValue.slice(-1)) === '') {\n formattedValue = formattedValue.slice(0, -1);\n }\n }\n }\n\n const replacedValue = replace ? replace(formattedValue) : formattedValue;\n\n if (userValue === replacedValue) {\n // if nothing changed for formatted value, just refresh so userValue will be used at render\n refresh();\n } else {\n props.onChange(replacedValue);\n }\n\n return () => {\n let start = getCursorPosition(formattedValue); // Visually improves working with masked values,\n // like cursor jumping over refused symbols\n // as an example date mask: was \"5|1-24-3\" then user pressed \"6\"\n // it becomes \"56-|12-43\" with this code, and \"56|-12-43\" without\n\n if (props.mask != null && (isSizeIncreaseOperation || isDeleleteButtonDown && !deleteWasNoOp)) {\n while (formattedValue[start] && clean(formattedValue[start]) === '') {\n start += 1;\n }\n }\n\n input.selectionStart = input.selectionEnd = start + (deleteWasNoOp ? 1 + charsToSkipAfterDelete : 0);\n };\n });\n }\n\n useEffect(() => {\n // until https://developer.mozilla.org/en-US/docs/Web/API/InputEvent/inputType will be supported\n // by all major browsers (now supported by: +chrome, +safari, ?edge, !firefox)\n // there is no way I found to distinguish in onChange\n // backspace or delete was called in some situations\n // firefox track https://bugzilla.mozilla.org/show_bug.cgi?id=1447239\n const handleKeyDown = evt => {\n if (evt.code === 'Delete') {\n isDeleleteButtonDownRef.current = true;\n }\n };\n\n const handleKeyUp = evt => {\n if (evt.code === 'Delete') {\n isDeleleteButtonDownRef.current = false;\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n document.addEventListener('keyup', handleKeyUp);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('keyup', handleKeyUp);\n };\n }, []);\n return {\n value: valueRef.current != null ? valueRef.current[0] : userValue,\n onChange\n };\n};\nconst Rifm = props => {\n const renderProps = useRifm(props);\n return props.children(renderProps);\n};\n\nexport { Rifm, useRifm };\n","export const getDisplayDate = (utils, rawValue, inputFormat) => {\n const date = utils.date(rawValue);\n const isEmpty = rawValue === null;\n\n if (isEmpty) {\n return '';\n }\n\n return utils.isValid(date) ? utils.formatByString( // TODO: should `isValid` narrow `TDate | null` to `NonNullable`?\n // Either we allow `TDate | null` to be valid and guard against calling `formatByString` with `null`.\n // Or we ensure `formatByString` is callable with `null`.\n date, inputFormat) : '';\n};\nconst MASK_USER_INPUT_SYMBOL = '_';\nconst staticDateWith2DigitTokens = '2019-11-21T22:30:00.000';\nconst staticDateWith1DigitTokens = '2019-01-01T09:00:00.000';\nexport function getMaskFromCurrentFormat(mask, format, acceptRegex, utils) {\n if (mask) {\n return mask;\n }\n\n const formattedDateWith1Digit = utils.formatByString(utils.date(staticDateWith1DigitTokens), format);\n const inferredFormatPatternWith1Digits = formattedDateWith1Digit.replace(acceptRegex, MASK_USER_INPUT_SYMBOL);\n const inferredFormatPatternWith2Digits = utils.formatByString(utils.date(staticDateWith2DigitTokens), format).replace(acceptRegex, '_');\n\n if (inferredFormatPatternWith1Digits === inferredFormatPatternWith2Digits) {\n return inferredFormatPatternWith1Digits;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n console.warn([`Mask does not support numbers with variable length such as 'M'.`, `Either use numbers with fix length or disable mask feature with 'disableMaskedInput' prop`, `Falling down to uncontrolled no-mask input.`].join('\\n'));\n }\n\n return '';\n}\nexport function checkMaskIsValidForCurrentFormat(mask, format, acceptRegex, utils) {\n if (!mask) {\n return false;\n }\n\n const formattedDateWith1Digit = utils.formatByString(utils.date(staticDateWith1DigitTokens), format);\n const inferredFormatPatternWith1Digits = formattedDateWith1Digit.replace(acceptRegex, MASK_USER_INPUT_SYMBOL);\n const inferredFormatPatternWith2Digits = utils.formatByString(utils.date(staticDateWith2DigitTokens), format).replace(acceptRegex, '_');\n const isMaskValid = inferredFormatPatternWith2Digits === inferredFormatPatternWith1Digits && mask === inferredFormatPatternWith2Digits;\n\n if (!isMaskValid && utils.lib !== 'luxon' && process.env.NODE_ENV !== 'production') {\n if (format.includes('MMM')) {\n console.warn([`Mask does not support literals such as 'MMM'.`, `Either use numbers with fix length or disable mask feature with 'disableMaskedInput' prop`, `Falling down to uncontrolled no-mask input.`].join('\\n'));\n } else if (inferredFormatPatternWith2Digits && inferredFormatPatternWith2Digits !== inferredFormatPatternWith1Digits) {\n console.warn([`Mask does not support numbers with variable length such as 'M'.`, `Either use numbers with fix length or disable mask feature with 'disableMaskedInput' prop`, `Falling down to uncontrolled no-mask input.`].join('\\n'));\n } else if (mask) {\n console.warn([`The mask \"${mask}\" you passed is not valid for the format used ${format}.`, `Falling down to uncontrolled no-mask input.`].join('\\n'));\n }\n }\n\n return isMaskValid;\n}\nexport const maskedDateFormatter = (mask, acceptRegexp) => value => {\n let outputCharIndex = 0;\n return value.split('').map((char, inputCharIndex) => {\n acceptRegexp.lastIndex = 0;\n\n if (outputCharIndex > mask.length - 1) {\n return '';\n }\n\n const maskChar = mask[outputCharIndex];\n const nextMaskChar = mask[outputCharIndex + 1];\n const acceptedChar = acceptRegexp.test(char) ? char : '';\n const formattedChar = maskChar === MASK_USER_INPUT_SYMBOL ? acceptedChar : maskChar + acceptedChar;\n outputCharIndex += formattedChar.length;\n const isLastCharacter = inputCharIndex === value.length - 1;\n\n if (isLastCharacter && nextMaskChar && nextMaskChar !== MASK_USER_INPUT_SYMBOL) {\n // when cursor at the end of mask part (e.g. month) prerender next symbol \"21\" -> \"21/\"\n return formattedChar ? formattedChar + nextMaskChar : '';\n }\n\n return formattedChar;\n }).join('');\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useRifm } from 'rifm';\nimport { useUtils } from './useUtils';\nimport { maskedDateFormatter, getDisplayDate, checkMaskIsValidForCurrentFormat, getMaskFromCurrentFormat } from '../utils/text-field-helper';\nexport const useMaskedInput = ({\n acceptRegex = /[\\d]/gi,\n disabled,\n disableMaskedInput,\n ignoreInvalidInputs,\n inputFormat,\n inputProps,\n label,\n mask,\n onChange,\n rawValue,\n readOnly,\n rifmFormatter,\n TextFieldProps,\n validationError\n}) => {\n const utils = useUtils();\n const formatHelperText = utils.getFormatHelperText(inputFormat);\n const {\n shouldUseMaskedInput,\n maskToUse\n } = React.useMemo(() => {\n // formatting of dates is a quite slow thing, so do not make useless .format calls\n if (disableMaskedInput) {\n return {\n shouldUseMaskedInput: false,\n maskToUse: ''\n };\n }\n\n const computedMaskToUse = getMaskFromCurrentFormat(mask, inputFormat, acceptRegex, utils);\n return {\n shouldUseMaskedInput: checkMaskIsValidForCurrentFormat(computedMaskToUse, inputFormat, acceptRegex, utils),\n maskToUse: computedMaskToUse\n };\n }, [acceptRegex, disableMaskedInput, inputFormat, mask, utils]);\n const formatter = React.useMemo(() => shouldUseMaskedInput && maskToUse ? maskedDateFormatter(maskToUse, acceptRegex) : st => st, [acceptRegex, maskToUse, shouldUseMaskedInput]); // TODO: Implement with controlled vs uncontrolled `rawValue`\n\n const parsedValue = rawValue === null ? null : utils.date(rawValue); // Track the value of the input\n\n const [innerInputValue, setInnerInputValue] = React.useState(parsedValue); // control the input text\n\n const [innerDisplayedInputValue, setInnerDisplayedInputValue] = React.useState(getDisplayDate(utils, rawValue, inputFormat)); // Inspired from autocomplete: https://github.com/mui/material-ui/blob/2c89d036dc2e16f100528f161600dffc83241768/packages/mui-base/src/AutocompleteUnstyled/useAutocomplete.js#L185:L201\n\n const prevRawValue = React.useRef();\n const prevLocale = React.useRef(utils.locale);\n const prevInputFormat = React.useRef(inputFormat);\n React.useEffect(() => {\n const rawValueHasChanged = rawValue !== prevRawValue.current;\n const localeHasChanged = utils.locale !== prevLocale.current;\n const inputFormatHasChanged = inputFormat !== prevInputFormat.current;\n prevRawValue.current = rawValue;\n prevLocale.current = utils.locale;\n prevInputFormat.current = inputFormat;\n\n if (!rawValueHasChanged && !localeHasChanged && !inputFormatHasChanged) {\n return;\n }\n\n const newParsedValue = rawValue === null ? null : utils.date(rawValue);\n const isAcceptedValue = rawValue === null || utils.isValid(newParsedValue);\n let innerEqualsParsed = innerInputValue === null && newParsedValue === null; // equal by being both null\n\n if (innerInputValue !== null && newParsedValue !== null) {\n const areEqual = utils.isEqual(innerInputValue, newParsedValue);\n\n if (areEqual) {\n innerEqualsParsed = true;\n } else {\n const diff = Math.abs(utils.getDiff(innerInputValue, newParsedValue)); // diff in ms\n\n innerEqualsParsed = diff === 0 ? areEqual // if no diff, use equal to test the time-zone\n : diff < 1000; // accept a difference bellow 1s\n }\n }\n\n if (!localeHasChanged && !inputFormatHasChanged && (!isAcceptedValue || innerEqualsParsed)) {\n return;\n } // When dev set a new valid value, we trust them\n\n\n const newDisplayDate = getDisplayDate(utils, rawValue, inputFormat);\n setInnerInputValue(newParsedValue);\n setInnerDisplayedInputValue(newDisplayDate);\n }, [utils, rawValue, inputFormat, innerInputValue]);\n\n const handleChange = text => {\n const finalString = text === '' || text === mask ? '' : text;\n setInnerDisplayedInputValue(finalString);\n const date = finalString === null ? null : utils.parse(finalString, inputFormat);\n\n if (ignoreInvalidInputs && !utils.isValid(date)) {\n return;\n }\n\n setInnerInputValue(date);\n onChange(date, finalString || undefined);\n };\n\n const rifmProps = useRifm({\n value: innerDisplayedInputValue,\n onChange: handleChange,\n format: rifmFormatter || formatter\n });\n const inputStateArgs = shouldUseMaskedInput ? rifmProps : {\n value: innerDisplayedInputValue,\n onChange: event => {\n handleChange(event.currentTarget.value);\n }\n };\n return _extends({\n label,\n disabled,\n error: validationError,\n inputProps: _extends({}, inputStateArgs, {\n disabled,\n placeholder: formatHelperText,\n readOnly,\n type: shouldUseMaskedInput ? 'tel' : 'text'\n }, inputProps)\n }, TextFieldProps);\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"components\", \"disableOpenPicker\", \"getOpenDialogAriaText\", \"InputAdornmentProps\", \"InputProps\", \"inputRef\", \"openPicker\", \"OpenPickerButtonProps\", \"renderInput\"];\nimport * as React from 'react';\nimport IconButton from '@mui/material/IconButton';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport { useLocaleText, useUtils } from '../hooks/useUtils';\nimport { Calendar } from './icons';\nimport { useMaskedInput } from '../hooks/useMaskedInput';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const KeyboardDateInput = /*#__PURE__*/React.forwardRef(function KeyboardDateInput(props, ref) {\n const {\n className,\n components = {},\n disableOpenPicker,\n getOpenDialogAriaText: getOpenDialogAriaTextProp,\n InputAdornmentProps,\n InputProps,\n inputRef,\n openPicker,\n OpenPickerButtonProps,\n renderInput\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const localeText = useLocaleText();\n const getOpenDialogAriaText = getOpenDialogAriaTextProp != null ? getOpenDialogAriaTextProp : localeText.openDatePickerDialogue;\n const utils = useUtils();\n const textFieldProps = useMaskedInput(other);\n const adornmentPosition = (InputAdornmentProps == null ? void 0 : InputAdornmentProps.position) || 'end';\n const OpenPickerIcon = components.OpenPickerIcon || Calendar;\n return renderInput(_extends({\n ref,\n inputRef,\n className\n }, textFieldProps, {\n InputProps: _extends({}, InputProps, {\n [`${adornmentPosition}Adornment`]: disableOpenPicker ? undefined : /*#__PURE__*/_jsx(InputAdornment, _extends({\n position: adornmentPosition\n }, InputAdornmentProps, {\n children: /*#__PURE__*/_jsx(IconButton, _extends({\n edge: adornmentPosition,\n disabled: other.disabled || other.readOnly,\n \"aria-label\": getOpenDialogAriaText(other.rawValue, utils)\n }, OpenPickerButtonProps, {\n onClick: openPicker,\n children: /*#__PURE__*/_jsx(OpenPickerIcon, {})\n }))\n }))\n })\n }));\n});","import * as React from 'react';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { arrayIncludes } from '../utils/utils';\n\nfunction getOrientation() {\n if (typeof window === 'undefined') {\n return 'portrait';\n }\n\n if (window.screen && window.screen.orientation && window.screen.orientation.angle) {\n return Math.abs(window.screen.orientation.angle) === 90 ? 'landscape' : 'portrait';\n } // Support IOS safari\n\n\n if (window.orientation) {\n return Math.abs(Number(window.orientation)) === 90 ? 'landscape' : 'portrait';\n }\n\n return 'portrait';\n}\n\nexport const useIsLandscape = (views, customOrientation) => {\n const [orientation, setOrientation] = React.useState(getOrientation);\n useEnhancedEffect(() => {\n const eventHandler = () => {\n setOrientation(getOrientation());\n };\n\n window.addEventListener('orientationchange', eventHandler);\n return () => {\n window.removeEventListener('orientationchange', eventHandler);\n };\n }, []);\n\n if (arrayIncludes(views, ['hours', 'minutes', 'seconds'])) {\n // could not display 13:34:44 in landscape mode\n return false;\n }\n\n const orientationToUse = customOrientation || orientation;\n return orientationToUse === 'landscape';\n};","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getCalendarOrClockPickerUtilityClass(slot) {\n return generateUtilityClass('MuiCalendarOrClockPicker', slot);\n}\nexport const calendarOrClockPickerClasses = generateUtilityClasses('MuiCalendarOrClockPicker', ['root', 'mobileKeyboardInputView']);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"className\", \"parsedValue\", \"DateInputProps\", \"isMobileKeyboardViewOpen\", \"onDateChange\", \"onViewChange\", \"openTo\", \"orientation\", \"showToolbar\", \"toggleMobileKeyboardView\", \"ToolbarComponent\", \"toolbarFormat\", \"toolbarPlaceholder\", \"toolbarTitle\", \"views\", \"dateRangeIcon\", \"timeIcon\", \"hideTabs\", \"classes\"];\nimport * as React from 'react';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { useViews } from '../../hooks/useViews';\nimport { ClockPicker } from '../../../ClockPicker/ClockPicker';\nimport { CalendarPicker } from '../../../CalendarPicker/CalendarPicker';\nimport { KeyboardDateInput } from '../KeyboardDateInput';\nimport { useIsLandscape } from '../../hooks/useIsLandscape';\nimport { WrapperVariantContext } from '../wrappers/WrapperVariantContext';\nimport { PickerViewRoot } from '../PickerViewRoot';\nimport { useFocusManagement } from './useFocusManagement';\nimport { getCalendarOrClockPickerUtilityClass } from './calendarOrClockPickerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n mobileKeyboardInputView: ['mobileKeyboardInputView']\n };\n return composeClasses(slots, getCalendarOrClockPickerUtilityClass, classes);\n};\n\nexport const MobileKeyboardInputView = styled('div', {\n name: 'MuiCalendarOrClockPicker',\n slot: 'MobileKeyboardInputView',\n overridesResolver: (_, styles) => styles.mobileKeyboardInputView\n})({\n padding: '16px 24px'\n});\nconst PickerRoot = styled('div', {\n name: 'MuiCalendarOrClockPicker',\n slot: 'Root',\n overridesResolver: (_, styles) => styles.root\n})(({\n ownerState\n}) => _extends({\n display: 'flex',\n flexDirection: 'column'\n}, ownerState.isLandscape && {\n flexDirection: 'row'\n}));\nconst MobileKeyboardTextFieldProps = {\n fullWidth: true\n};\n\nconst isDatePickerView = view => view === 'year' || view === 'month' || view === 'day';\n\nconst isTimePickerView = view => view === 'hours' || view === 'minutes' || view === 'seconds';\n\nlet warnedOnceNotValidOpenTo = false;\nexport function CalendarOrClockPicker(inProps) {\n var _other$components, _other$componentsProp;\n\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCalendarOrClockPicker'\n });\n\n const {\n autoFocus,\n parsedValue,\n DateInputProps,\n isMobileKeyboardViewOpen,\n onDateChange,\n onViewChange,\n openTo,\n orientation,\n showToolbar,\n toggleMobileKeyboardView,\n ToolbarComponent = () => null,\n toolbarFormat,\n toolbarPlaceholder,\n toolbarTitle,\n views,\n dateRangeIcon,\n timeIcon,\n hideTabs\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const TabsComponent = (_other$components = other.components) == null ? void 0 : _other$components.Tabs;\n const isLandscape = useIsLandscape(views, orientation);\n const wrapperVariant = React.useContext(WrapperVariantContext);\n const classes = useUtilityClasses(props);\n const toShowToolbar = showToolbar != null ? showToolbar : wrapperVariant !== 'desktop';\n const showTabs = !hideTabs && typeof window !== 'undefined' && window.innerHeight > 667;\n const handleDateChange = React.useCallback((newDate, selectionState) => {\n onDateChange(newDate, wrapperVariant, selectionState);\n }, [onDateChange, wrapperVariant]);\n const handleViewChange = React.useCallback(newView => {\n if (isMobileKeyboardViewOpen) {\n toggleMobileKeyboardView();\n }\n\n if (onViewChange) {\n onViewChange(newView);\n }\n }, [isMobileKeyboardViewOpen, onViewChange, toggleMobileKeyboardView]);\n\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnceNotValidOpenTo && !views.includes(openTo)) {\n console.warn(`MUI: \\`openTo=\"${openTo}\"\\` is not a valid prop.`, `It must be an element of \\`views=[\"${views.join('\", \"')}\"]\\`.`);\n warnedOnceNotValidOpenTo = true;\n }\n }\n\n const {\n openView,\n setOpenView,\n handleChangeAndOpenNext\n } = useViews({\n view: undefined,\n views,\n openTo,\n onChange: handleDateChange,\n onViewChange: handleViewChange\n });\n const {\n focusedView,\n setFocusedView\n } = useFocusManagement({\n autoFocus,\n openView\n });\n return /*#__PURE__*/_jsxs(PickerRoot, {\n ownerState: {\n isLandscape\n },\n className: classes.root,\n children: [toShowToolbar && /*#__PURE__*/_jsx(ToolbarComponent, _extends({}, other, {\n views: views,\n isLandscape: isLandscape,\n parsedValue: parsedValue,\n onChange: handleDateChange,\n setOpenView: setOpenView,\n openView: openView,\n toolbarTitle: toolbarTitle,\n toolbarFormat: toolbarFormat,\n toolbarPlaceholder: toolbarPlaceholder,\n isMobileKeyboardViewOpen: isMobileKeyboardViewOpen,\n toggleMobileKeyboardView: toggleMobileKeyboardView\n })), showTabs && !!TabsComponent && /*#__PURE__*/_jsx(TabsComponent, _extends({\n dateRangeIcon: dateRangeIcon,\n timeIcon: timeIcon,\n view: openView,\n onChange: setOpenView\n }, (_other$componentsProp = other.componentsProps) == null ? void 0 : _other$componentsProp.tabs)), /*#__PURE__*/_jsx(PickerViewRoot, {\n children: isMobileKeyboardViewOpen ? /*#__PURE__*/_jsx(MobileKeyboardInputView, {\n className: classes.mobileKeyboardInputView,\n children: /*#__PURE__*/_jsx(KeyboardDateInput, _extends({}, DateInputProps, {\n ignoreInvalidInputs: true,\n disableOpenPicker: true,\n TextFieldProps: MobileKeyboardTextFieldProps\n }))\n }) : /*#__PURE__*/_jsxs(React.Fragment, {\n children: [isDatePickerView(openView) && /*#__PURE__*/_jsx(CalendarPicker, _extends({\n autoFocus: autoFocus,\n date: parsedValue,\n onViewChange: setOpenView,\n onChange: handleChangeAndOpenNext,\n view: openView // Unclear why the predicate `isDatePickerView` does not imply the casted type\n ,\n views: views.filter(isDatePickerView),\n focusedView: focusedView,\n onFocusedViewChange: setFocusedView\n }, other)), isTimePickerView(openView) && /*#__PURE__*/_jsx(ClockPicker, _extends({}, other, {\n autoFocus: autoFocus,\n date: parsedValue,\n view: openView // Unclear why the predicate `isDatePickerView` does not imply the casted type\n ,\n views: views.filter(isTimePickerView),\n onChange: handleChangeAndOpenNext,\n onViewChange: setOpenView,\n showViewSwitcher: wrapperVariant === 'desktop'\n }))]\n })\n })]\n });\n}","import * as React from 'react';\nexport const useFocusManagement = ({\n autoFocus,\n openView\n}) => {\n const [focusedView, setFocusedView] = React.useState(autoFocus ? openView : null);\n const setFocusedViewCallback = React.useCallback(view => newHasFocus => {\n if (newHasFocus) {\n setFocusedView(view);\n } else {\n setFocusedView(prevFocusedView => view === prevFocusedView ? null : prevFocusedView);\n }\n }, []);\n return {\n focusedView,\n setFocusedView: setFocusedViewCallback\n };\n};","import { createIsAfterIgnoreDatePart } from '../../utils/time-utils';\nimport { useValidation } from './useValidation';\nexport const validateTime = ({\n adapter,\n value,\n props\n}) => {\n const {\n minTime,\n maxTime,\n minutesStep,\n shouldDisableTime,\n disableIgnoringDatePartForTimeValidation\n } = props;\n const date = adapter.utils.date(value);\n const isAfter = createIsAfterIgnoreDatePart(disableIgnoringDatePartForTimeValidation, adapter.utils);\n\n if (value === null) {\n return null;\n }\n\n switch (true) {\n case !adapter.utils.isValid(value):\n return 'invalidDate';\n\n case Boolean(minTime && isAfter(minTime, date)):\n return 'minTime';\n\n case Boolean(maxTime && isAfter(date, maxTime)):\n return 'maxTime';\n\n case Boolean(shouldDisableTime && shouldDisableTime(adapter.utils.getHours(date), 'hours')):\n return 'shouldDisableTime-hours';\n\n case Boolean(shouldDisableTime && shouldDisableTime(adapter.utils.getMinutes(date), 'minutes')):\n return 'shouldDisableTime-minutes';\n\n case Boolean(shouldDisableTime && shouldDisableTime(adapter.utils.getSeconds(date), 'seconds')):\n return 'shouldDisableTime-seconds';\n\n case Boolean(minutesStep && adapter.utils.getMinutes(date) % minutesStep !== 0):\n return 'minutesStep';\n\n default:\n return null;\n }\n};\n\nconst isSameTimeError = (a, b) => a === b;\n\nexport const useTimeValidation = props => useValidation(props, validateTime, isSameTimeError);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"minDate\", \"maxDate\", \"disableFuture\", \"shouldDisableDate\", \"disablePast\"];\nimport { useValidation } from './useValidation';\nimport { validateDate } from './useDateValidation';\nimport { validateTime } from './useTimeValidation';\nexport const validateDateTime = ({\n props,\n value,\n adapter\n}) => {\n const {\n minDate,\n maxDate,\n disableFuture,\n shouldDisableDate,\n disablePast\n } = props,\n timeValidationProps = _objectWithoutPropertiesLoose(props, _excluded);\n\n const dateValidationResult = validateDate({\n adapter,\n value,\n props: {\n minDate,\n maxDate,\n disableFuture,\n shouldDisableDate,\n disablePast\n }\n });\n\n if (dateValidationResult !== null) {\n return dateValidationResult;\n }\n\n return validateTime({\n adapter,\n value,\n props: timeValidationProps\n });\n};\n\nconst isSameDateTimeError = (a, b) => a === b;\n\nexport function useDateTimeValidation(props) {\n return useValidation(props, validateDateTime, isSameDateTimeError);\n}","import * as React from 'react';\nimport { useLocalizationContext } from '../useUtils';\nexport function useValidation(props, validate, isSameError) {\n const {\n value,\n onError\n } = props;\n const adapter = useLocalizationContext();\n const previousValidationErrorRef = React.useRef(null);\n const validationError = validate({\n adapter,\n value,\n props\n });\n React.useEffect(() => {\n if (onError && !isSameError(validationError, previousValidationErrorRef.current)) {\n onError(validationError, value);\n }\n\n previousValidationErrorRef.current = validationError;\n }, [isSameError, onError, previousValidationErrorRef, validationError, value]);\n return validationError;\n}","import * as React from 'react';\nexport const useOpenState = ({\n open,\n onOpen,\n onClose\n}) => {\n const isControllingOpenProp = React.useRef(typeof open === 'boolean').current;\n const [openState, setIsOpenState] = React.useState(false); // It is required to update inner state in useEffect in order to avoid situation when\n // Our component is not mounted yet, but `open` state is set to `true` (e.g. initially opened)\n\n React.useEffect(() => {\n if (isControllingOpenProp) {\n if (typeof open !== 'boolean') {\n throw new Error('You must not mix controlling and uncontrolled mode for `open` prop');\n }\n\n setIsOpenState(open);\n }\n }, [isControllingOpenProp, open]);\n const setIsOpen = React.useCallback(newIsOpen => {\n if (!isControllingOpenProp) {\n setIsOpenState(newIsOpen);\n }\n\n if (newIsOpen && onOpen) {\n onOpen();\n }\n\n if (!newIsOpen && onClose) {\n onClose();\n }\n }, [isControllingOpenProp, onOpen, onClose]);\n return {\n isOpen: openState,\n setIsOpen\n };\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useOpenState } from './useOpenState';\nimport { useUtils } from './useUtils';\nexport const usePickerState = (props, valueManager) => {\n const {\n onAccept,\n onChange,\n value,\n closeOnSelect\n } = props;\n const utils = useUtils();\n const {\n isOpen,\n setIsOpen\n } = useOpenState(props);\n const parsedDateValue = React.useMemo(() => valueManager.parseInput(utils, value), [valueManager, utils, value]);\n const [lastValidDateValue, setLastValidDateValue] = React.useState(parsedDateValue);\n const [dateState, setDateState] = React.useState(() => ({\n committed: parsedDateValue,\n draft: parsedDateValue,\n resetFallback: parsedDateValue\n }));\n const setDate = React.useCallback(params => {\n setDateState(prev => {\n switch (params.action) {\n case 'setAll':\n case 'acceptAndClose':\n {\n return {\n draft: params.value,\n committed: params.value,\n resetFallback: params.value\n };\n }\n\n case 'setCommitted':\n {\n return _extends({}, prev, {\n draft: params.value,\n committed: params.value\n });\n }\n\n case 'setDraft':\n {\n return _extends({}, prev, {\n draft: params.value\n });\n }\n\n default:\n {\n return prev;\n }\n }\n });\n\n if (params.forceOnChangeCall || !params.skipOnChangeCall && !valueManager.areValuesEqual(utils, dateState.committed, params.value)) {\n onChange(params.value);\n }\n\n if (params.action === 'acceptAndClose') {\n setIsOpen(false);\n\n if (onAccept && !valueManager.areValuesEqual(utils, dateState.resetFallback, params.value)) {\n onAccept(params.value);\n }\n }\n }, [onAccept, onChange, setIsOpen, dateState, utils, valueManager]);\n React.useEffect(() => {\n if (utils.isValid(parsedDateValue)) {\n setLastValidDateValue(parsedDateValue);\n }\n }, [utils, parsedDateValue]);\n React.useEffect(() => {\n if (isOpen) {\n // Update all dates in state to equal the current prop value\n setDate({\n action: 'setAll',\n value: parsedDateValue,\n skipOnChangeCall: true\n });\n }\n }, [isOpen]); // eslint-disable-line react-hooks/exhaustive-deps\n // Set the draft and committed date to equal the new prop value.\n\n if (!valueManager.areValuesEqual(utils, dateState.committed, parsedDateValue)) {\n setDate({\n action: 'setCommitted',\n value: parsedDateValue,\n skipOnChangeCall: true\n });\n }\n\n const wrapperProps = React.useMemo(() => ({\n open: isOpen,\n onClear: () => {\n // Reset all date in state to the empty value and close picker.\n setDate({\n value: valueManager.emptyValue,\n action: 'acceptAndClose',\n // force `onChange` in cases like input (value) === `Invalid date`\n forceOnChangeCall: !valueManager.areValuesEqual(utils, value, valueManager.emptyValue)\n });\n },\n onAccept: () => {\n // Set all date in state to equal the current draft value and close picker.\n setDate({\n value: dateState.draft,\n action: 'acceptAndClose',\n // force `onChange` in cases like input (value) === `Invalid date`\n forceOnChangeCall: !valueManager.areValuesEqual(utils, value, parsedDateValue)\n });\n },\n onDismiss: () => {\n // Set all dates in state to equal the last committed date.\n // e.g. Reset the state to the last committed value.\n setDate({\n value: dateState.committed,\n action: 'acceptAndClose'\n });\n },\n onCancel: () => {\n // Set all dates in state to equal the last accepted date and close picker.\n // e.g. Reset the state to the last accepted value\n setDate({\n value: dateState.resetFallback,\n action: 'acceptAndClose'\n });\n },\n onSetToday: () => {\n // Set all dates in state to equal today and close picker.\n setDate({\n value: valueManager.getTodayValue(utils),\n action: 'acceptAndClose'\n });\n }\n }), [setDate, isOpen, utils, dateState, valueManager, value, parsedDateValue]); // Mobile keyboard view is a special case.\n // When it's open picker should work like closed, because we are just showing text field\n\n const [isMobileKeyboardViewOpen, setMobileKeyboardViewOpen] = React.useState(false);\n const pickerProps = React.useMemo(() => ({\n parsedValue: dateState.draft,\n isMobileKeyboardViewOpen,\n toggleMobileKeyboardView: () => setMobileKeyboardViewOpen(!isMobileKeyboardViewOpen),\n onDateChange: (newDate, wrapperVariant, selectionState = 'partial') => {\n switch (selectionState) {\n case 'shallow':\n {\n // Update the `draft` state but do not fire `onChange`\n return setDate({\n action: 'setDraft',\n value: newDate,\n skipOnChangeCall: true\n });\n }\n\n case 'partial':\n {\n // Update the `draft` state and fire `onChange`\n return setDate({\n action: 'setDraft',\n value: newDate\n });\n }\n\n case 'finish':\n {\n if (closeOnSelect != null ? closeOnSelect : wrapperVariant === 'desktop') {\n // Set all dates in state to equal the new date and close picker.\n return setDate({\n value: newDate,\n action: 'acceptAndClose'\n });\n } // Updates the `committed` state and fire `onChange`\n\n\n return setDate({\n value: newDate,\n action: 'setCommitted'\n });\n }\n\n default:\n {\n throw new Error('MUI: Invalid selectionState passed to `onDateChange`');\n }\n }\n }\n }), [setDate, isMobileKeyboardViewOpen, dateState.draft, closeOnSelect]);\n const handleInputChange = React.useCallback((newParsedValue, keyboardInputValue) => {\n const cleanParsedValue = valueManager.valueReducer ? valueManager.valueReducer(utils, lastValidDateValue, newParsedValue) : newParsedValue;\n onChange(cleanParsedValue, keyboardInputValue);\n }, [onChange, valueManager, lastValidDateValue, utils]);\n const inputProps = React.useMemo(() => ({\n onChange: handleInputChange,\n open: isOpen,\n rawValue: value,\n openPicker: () => setIsOpen(true)\n }), [handleInputChange, isOpen, value, setIsOpen]);\n const pickerState = {\n pickerProps,\n inputProps,\n wrapperProps\n };\n React.useDebugValue(pickerState, () => ({\n MuiPickerState: {\n dateState,\n other: pickerState\n }\n }));\n return pickerState;\n};","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getDateTimePickerTabsUtilityClass(slot) {\n return generateUtilityClass('MuiDateTimePickerTabs', slot);\n}\nexport const dateTimePickerTabsClasses = generateUtilityClasses('MuiDateTimePickerTabs', ['root']);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport Tab from '@mui/material/Tab';\nimport Tabs, { tabsClasses } from '@mui/material/Tabs';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { Time, DateRange } from '../internals/components/icons';\nimport { WrapperVariantContext } from '../internals/components/wrappers/WrapperVariantContext';\nimport { useLocaleText } from '../internals/hooks/useUtils';\nimport { getDateTimePickerTabsUtilityClass } from './dateTimePickerTabsClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst viewToTab = openView => {\n if (['day', 'month', 'year'].includes(openView)) {\n return 'date';\n }\n\n return 'time';\n};\n\nconst tabToView = tab => {\n if (tab === 'date') {\n return 'day';\n }\n\n return 'hours';\n};\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getDateTimePickerTabsUtilityClass, classes);\n};\n\nconst DateTimePickerTabsRoot = styled(Tabs, {\n name: 'MuiDateTimePickerTabs',\n slot: 'Root',\n overridesResolver: (_, styles) => styles.root\n})(({\n ownerState,\n theme\n}) => _extends({\n boxShadow: `0 -1px 0 0 inset ${theme.palette.divider}`\n}, ownerState.wrapperVariant === 'desktop' && {\n order: 1,\n boxShadow: `0 1px 0 0 inset ${theme.palette.divider}`,\n [`& .${tabsClasses.indicator}`]: {\n bottom: 'auto',\n top: 0\n }\n}));\n\nconst DateTimePickerTabs = function DateTimePickerTabs(inProps) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDateTimePickerTabs'\n });\n const {\n dateRangeIcon = /*#__PURE__*/_jsx(DateRange, {}),\n onChange,\n timeIcon = /*#__PURE__*/_jsx(Time, {}),\n view\n } = props;\n const localeText = useLocaleText();\n const wrapperVariant = React.useContext(WrapperVariantContext);\n\n const ownerState = _extends({}, props, {\n wrapperVariant\n });\n\n const classes = useUtilityClasses(ownerState);\n\n const handleChange = (event, value) => {\n onChange(tabToView(value));\n };\n\n return /*#__PURE__*/_jsxs(DateTimePickerTabsRoot, {\n ownerState: ownerState,\n variant: \"fullWidth\",\n value: viewToTab(view),\n onChange: handleChange,\n className: classes.root,\n children: [/*#__PURE__*/_jsx(Tab, {\n value: \"date\",\n \"aria-label\": localeText.dateTableLabel,\n icon: /*#__PURE__*/_jsx(React.Fragment, {\n children: dateRangeIcon\n })\n }), /*#__PURE__*/_jsx(Tab, {\n value: \"time\",\n \"aria-label\": localeText.timeTableLabel,\n icon: /*#__PURE__*/_jsx(React.Fragment, {\n children: timeIcon\n })\n })]\n });\n};\n\nprocess.env.NODE_ENV !== \"production\" ? DateTimePickerTabs.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * Date tab icon.\n * @default DateRange\n */\n dateRangeIcon: PropTypes.node,\n\n /**\n * Callback called when tab is clicked\n * @param {CalendarOrClockPickerView} view Picker view that was clicked\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Time tab icon.\n * @default Time\n */\n timeIcon: PropTypes.node,\n\n /**\n * Open picker view\n */\n view: PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']).isRequired\n} : void 0;\nexport { DateTimePickerTabs };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onChange\", \"PaperProps\", \"PopperProps\", \"ToolbarComponent\", \"TransitionComponent\", \"value\", \"components\", \"componentsProps\", \"hideTabs\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useDateTimePickerDefaultizedProps, dateTimePickerValueManager } from '../DateTimePicker/shared';\nimport { DateTimePickerToolbar } from '../DateTimePicker/DateTimePickerToolbar';\nimport { DesktopWrapper } from '../internals/components/wrappers/DesktopWrapper';\nimport { CalendarOrClockPicker } from '../internals/components/CalendarOrClockPicker';\nimport { useDateTimeValidation } from '../internals/hooks/validation/useDateTimeValidation';\nimport { KeyboardDateInput } from '../internals/components/KeyboardDateInput';\nimport { usePickerState } from '../internals/hooks/usePickerState';\nimport { DateTimePickerTabs } from '../DateTimePicker/DateTimePickerTabs';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n *\n * Demos:\n *\n * - [Date Time Picker](https://mui.com/x/react-date-pickers/date-time-picker/)\n *\n * API:\n *\n * - [DesktopDateTimePicker API](https://mui.com/x/api/date-pickers/desktop-date-time-picker/)\n */\nexport const DesktopDateTimePicker = /*#__PURE__*/React.forwardRef(function DesktopDateTimePicker(inProps, ref) {\n const props = useDateTimePickerDefaultizedProps(inProps, 'MuiDesktopDateTimePicker');\n const validationError = useDateTimeValidation(props) !== null;\n const {\n pickerProps,\n inputProps,\n wrapperProps\n } = usePickerState(props, dateTimePickerValueManager);\n\n const {\n PaperProps,\n PopperProps,\n ToolbarComponent = DateTimePickerToolbar,\n TransitionComponent,\n components: providedComponents,\n componentsProps,\n hideTabs = true\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const components = React.useMemo(() => _extends({\n Tabs: DateTimePickerTabs\n }, providedComponents), [providedComponents]);\n\n const AllDateInputProps = _extends({}, inputProps, other, {\n components,\n componentsProps,\n ref,\n validationError\n });\n\n return /*#__PURE__*/_jsx(DesktopWrapper, _extends({}, wrapperProps, {\n DateInputProps: AllDateInputProps,\n KeyboardDateInputComponent: KeyboardDateInput,\n PopperProps: PopperProps,\n PaperProps: PaperProps,\n TransitionComponent: TransitionComponent,\n components: components,\n componentsProps: componentsProps,\n children: /*#__PURE__*/_jsx(CalendarOrClockPicker, _extends({}, pickerProps, {\n autoFocus: true,\n toolbarTitle: props.label || props.toolbarTitle,\n ToolbarComponent: ToolbarComponent,\n DateInputProps: AllDateInputProps,\n components: components,\n componentsProps: componentsProps,\n hideTabs: hideTabs\n }, other))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? DesktopDateTimePicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Regular expression to detect \"accepted\" symbols.\n * @default /\\dap/gi\n */\n acceptRegex: PropTypes.instanceOf(RegExp),\n\n /**\n * 12h/24h view for hour selection clock.\n * @default `utils.is12HourCycleInCurrentLocale()`\n */\n ampm: PropTypes.bool,\n\n /**\n * Display ampm controls under the clock (instead of in the toolbar).\n * @default false\n */\n ampmInClock: PropTypes.bool,\n autoFocus: PropTypes.bool,\n children: PropTypes.node,\n\n /**\n * className applied to the root component.\n */\n className: PropTypes.string,\n\n /**\n * If `true` the popup or dialog will immediately close after submitting full date.\n * @default `true` for Desktop, `false` for Mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).\n */\n closeOnSelect: PropTypes.bool,\n\n /**\n * Overrideable components.\n * @default {}\n */\n components: PropTypes.object,\n\n /**\n * The props used for each component slot.\n * @default {}\n */\n componentsProps: PropTypes.object,\n\n /**\n * Date tab icon.\n */\n dateRangeIcon: PropTypes.node,\n\n /**\n * Formats the day of week displayed in the calendar header.\n * @param {string} day The day of week provided by the adapter's method `getWeekdays`.\n * @returns {string} The name to display.\n * @default (day) => day.charAt(0).toUpperCase()\n */\n dayOfWeekFormatter: PropTypes.func,\n\n /**\n * Default calendar month displayed when `value={null}`.\n */\n defaultCalendarMonth: PropTypes.any,\n\n /**\n * If `true`, the picker and text field are disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true` future days are disabled.\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true`, today's date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * Do not ignore date part when validating min/max time.\n * @default false\n */\n disableIgnoringDatePartForTimeValidation: PropTypes.bool,\n\n /**\n * Disable mask on the keyboard, this should be used rarely. Consider passing proper mask for your format.\n * @default false\n */\n disableMaskedInput: PropTypes.bool,\n\n /**\n * Do not render open picker button (renders only text field with validation).\n * @default false\n */\n disableOpenPicker: PropTypes.bool,\n\n /**\n * If `true` past days are disabled.\n * @default false\n */\n disablePast: PropTypes.bool,\n\n /**\n * Accessible text that helps user to understand which time and view is selected.\n * @template TDate\n * @param {ClockPickerView} view The current view rendered.\n * @param {TDate | null} time The current time.\n * @param {MuiPickersAdapter} adapter The current date adapter.\n * @returns {string} The clock label.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n * @default (\n * view: ClockView,\n * time: TDate | null,\n * adapter: MuiPickersAdapter,\n * ) =>\n * `Select ${view}. ${\n * time === null ? 'No time selected' : `Selected time is ${adapter.format(time, 'fullTime')}`\n * }`\n */\n getClockLabelText: PropTypes.func,\n\n /**\n * Get aria-label text for control that opens picker dialog. Aria-label text must include selected date. @DateIOType\n * @template TInputDate, TDate\n * @param {TInputDate} date The date from which we want to add an aria-text.\n * @param {MuiPickersAdapter} utils The utils to manipulate the date.\n * @returns {string} The aria-text to render inside the dialog.\n * @default (date, utils) => `Choose date, selected date is ${utils.format(utils.date(date), 'fullDate')}`\n */\n getOpenDialogAriaText: PropTypes.func,\n\n /**\n * Get aria-label text for switching between views button.\n * @param {CalendarPickerView} currentView The view from which we want to get the button text.\n * @returns {string} The label of the view.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n */\n getViewSwitchingButtonText: PropTypes.func,\n\n /**\n * Toggles visibility of date time switching tabs\n * @default false for mobile, true for desktop\n */\n hideTabs: PropTypes.bool,\n ignoreInvalidInputs: PropTypes.bool,\n\n /**\n * Props to pass to keyboard input adornment.\n */\n InputAdornmentProps: PropTypes.object,\n\n /**\n * Format string.\n */\n inputFormat: PropTypes.string,\n InputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.object\n })]),\n label: PropTypes.node,\n\n /**\n * Left arrow icon aria-label text.\n * @deprecated\n */\n leftArrowButtonText: PropTypes.string,\n\n /**\n * If `true` renders `LoadingComponent` in calendar instead of calendar view.\n * Can be used to preload information and show it in calendar.\n * @default false\n */\n loading: PropTypes.bool,\n\n /**\n * Custom mask. Can be used to override generate from format. (e.g. `__/__/____ __:__` or `__/__/____ __:__ _M`).\n */\n mask: PropTypes.string,\n\n /**\n * Maximal selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Maximal selectable moment of time with binding to date, to set max time in each day use `maxTime`.\n */\n maxDateTime: PropTypes.any,\n\n /**\n * Max time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n maxTime: PropTypes.any,\n\n /**\n * Minimal selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n\n /**\n * Minimal selectable moment of time with binding to date, to set min time in each day use `minTime`.\n */\n minDateTime: PropTypes.any,\n\n /**\n * Min time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n minTime: PropTypes.any,\n\n /**\n * Step over minutes.\n * @default 1\n */\n minutesStep: PropTypes.number,\n\n /**\n * Callback fired when date is accepted @DateIOType.\n * @template TValue\n * @param {TValue} value The value that was just accepted.\n */\n onAccept: PropTypes.func,\n\n /**\n * Callback fired when the value (the selected date) changes @DateIOType.\n * @template TValue\n * @param {TValue} value The new parsed value.\n * @param {string} keyboardInputValue The current value of the keyboard input.\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Callback fired when the popup requests to be closed.\n * Use in controlled mode (see open).\n */\n onClose: PropTypes.func,\n\n /**\n * Callback that fired when input value or new `value` prop validation returns **new** validation error (or value is valid after error).\n * In case of validation error detected `reason` prop return non-null value and `TextField` must be displayed in `error` state.\n * This can be used to render appropriate form error.\n *\n * [Read the guide](https://next.material-ui-pickers.dev/guides/forms) about form integration and error displaying.\n * @DateIOType\n *\n * @template TError, TInputValue\n * @param {TError} reason The reason why the current value is not valid.\n * @param {TInputValue} value The invalid value.\n */\n onError: PropTypes.func,\n\n /**\n * Callback firing on month change @DateIOType.\n * @template TDate\n * @param {TDate} month The new month.\n * @returns {void|Promise} -\n */\n onMonthChange: PropTypes.func,\n\n /**\n * Callback fired when the popup requests to be opened.\n * Use in controlled mode (see open).\n */\n onOpen: PropTypes.func,\n\n /**\n * Callback fired on view change.\n * @param {CalendarOrClockPickerView} view The new view.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Callback firing on year change @DateIOType.\n * @template TDate\n * @param {TDate} year The new year.\n */\n onYearChange: PropTypes.func,\n\n /**\n * Control the popup or dialog open state.\n */\n open: PropTypes.bool,\n\n /**\n * Props to pass to keyboard adornment button.\n */\n OpenPickerButtonProps: PropTypes.object,\n\n /**\n * First view to show.\n * Must be a valid option from `views` list\n * @default 'day'\n */\n openTo: PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']),\n\n /**\n * Force rendering in particular orientation.\n */\n orientation: PropTypes.oneOf(['landscape', 'portrait']),\n\n /**\n * Paper props passed down to [Paper](https://mui.com/material-ui/api/paper/) component.\n */\n PaperProps: PropTypes.object,\n\n /**\n * Popper props passed down to [Popper](https://mui.com/material-ui/api/popper/) component.\n */\n PopperProps: PropTypes.object,\n\n /**\n * Make picker read only.\n * @default false\n */\n readOnly: PropTypes.bool,\n\n /**\n * Disable heavy animations.\n * @default typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent)\n */\n reduceAnimations: PropTypes.bool,\n\n /**\n * Custom renderer for day. Check the [PickersDay](https://mui.com/x/api/date-pickers/pickers-day/) component.\n * @template TDate\n * @param {TDate} day The day to render.\n * @param {Array} selectedDays The days currently selected.\n * @param {PickersDayProps} pickersDayProps The props of the day to render.\n * @returns {JSX.Element} The element representing the day.\n */\n renderDay: PropTypes.func,\n\n /**\n * The `renderInput` prop allows you to customize the rendered input.\n * The `props` argument of this render prop contains props of [TextField](https://mui.com/material-ui/api/text-field/#props) that you need to forward.\n * Pay specific attention to the `ref` and `inputProps` keys.\n * @example ```jsx\n * renderInput={props => }\n * ````\n * @param {MuiTextFieldPropsType} props The props of the input.\n * @returns {React.ReactNode} The node to render as the input.\n */\n renderInput: PropTypes.func.isRequired,\n\n /**\n * Component displaying when passed `loading` true.\n * @returns {React.ReactNode} The node to render when loading.\n * @default () => ...\n */\n renderLoading: PropTypes.func,\n\n /**\n * Custom formatter to be passed into Rifm component.\n * @param {string} str The un-formatted string.\n * @returns {string} The formatted string.\n */\n rifmFormatter: PropTypes.func,\n\n /**\n * Right arrow icon aria-label text.\n * @deprecated\n */\n rightArrowButtonText: PropTypes.string,\n\n /**\n * Disable specific date. @DateIOType\n * @template TDate\n * @param {TDate} day The date to test.\n * @returns {boolean} Returns `true` if the date should be disabled.\n */\n shouldDisableDate: PropTypes.func,\n\n /**\n * Disable specific months dynamically.\n * Works like `shouldDisableDate` but for month selection view @DateIOType.\n * @template TDate\n * @param {TDate} month The month to check.\n * @returns {boolean} If `true` the month will be disabled.\n */\n shouldDisableMonth: PropTypes.func,\n\n /**\n * Dynamically check if time is disabled or not.\n * If returns `false` appropriate time point will ot be acceptable.\n * @param {number} timeValue The value to check.\n * @param {ClockPickerView} clockType The clock type of the timeValue.\n * @returns {boolean} Returns `true` if the time should be disabled\n */\n shouldDisableTime: PropTypes.func,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n * @template TDate\n * @param {TDate} year The year to test.\n * @returns {boolean} Returns `true` if the year should be disabled.\n */\n shouldDisableYear: PropTypes.func,\n\n /**\n * If `true`, days that have `outsideCurrentMonth={true}` are displayed.\n * @default false\n */\n showDaysOutsideCurrentMonth: PropTypes.bool,\n\n /**\n * If `true`, show the toolbar even in desktop mode.\n */\n showToolbar: PropTypes.bool,\n\n /**\n * Time tab icon.\n */\n timeIcon: PropTypes.node,\n\n /**\n * Component that will replace default toolbar renderer.\n * @default DateTimePickerToolbar\n */\n ToolbarComponent: PropTypes.elementType,\n\n /**\n * Date format, that is displaying in toolbar.\n */\n toolbarFormat: PropTypes.string,\n\n /**\n * Mobile picker date value placeholder, displaying if `value` === `null`.\n * @default '–'\n */\n toolbarPlaceholder: PropTypes.node,\n\n /**\n * Mobile picker title, displaying in the toolbar.\n * @default 'Select date & time'\n */\n toolbarTitle: PropTypes.node,\n\n /**\n * Custom component for popper [Transition](https://mui.com/material-ui/transitions/#transitioncomponent-prop).\n */\n TransitionComponent: PropTypes.elementType,\n\n /**\n * The value of the picker.\n */\n value: PropTypes.any,\n\n /**\n * Array of views to show.\n * @default ['year', 'day', 'hours', 'minutes']\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']).isRequired)\n} : void 0;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getDialogContentUtilityClass(slot) {\n return generateUtilityClass('MuiDialogContent', slot);\n}\nconst dialogContentClasses = generateUtilityClasses('MuiDialogContent', ['root', 'dividers']);\nexport default dialogContentClasses;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getDialogTitleUtilityClass(slot) {\n return generateUtilityClass('MuiDialogTitle', slot);\n}\nconst dialogTitleClasses = generateUtilityClasses('MuiDialogTitle', ['root']);\nexport default dialogTitleClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"dividers\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getDialogContentUtilityClass } from './dialogContentClasses';\nimport dialogTitleClasses from '../DialogTitle/dialogTitleClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n dividers\n } = ownerState;\n const slots = {\n root: ['root', dividers && 'dividers']\n };\n return composeClasses(slots, getDialogContentUtilityClass, classes);\n};\nconst DialogContentRoot = styled('div', {\n name: 'MuiDialogContent',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.dividers && styles.dividers];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n flex: '1 1 auto',\n // Add iOS momentum scrolling for iOS < 13.0\n WebkitOverflowScrolling: 'touch',\n overflowY: 'auto',\n padding: '20px 24px'\n}, ownerState.dividers ? {\n padding: '16px 24px',\n borderTop: `1px solid ${(theme.vars || theme).palette.divider}`,\n borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`\n} : {\n [`.${dialogTitleClasses.root} + &`]: {\n paddingTop: 0\n }\n}));\nconst DialogContent = /*#__PURE__*/React.forwardRef(function DialogContent(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDialogContent'\n });\n const {\n className,\n dividers = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n dividers\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(DialogContentRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogContent.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * Display the top and bottom dividers.\n * @default false\n */\n dividers: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default DialogContent;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getDialogUtilityClass(slot) {\n return generateUtilityClass('MuiDialog', slot);\n}\nconst dialogClasses = generateUtilityClasses('MuiDialog', ['root', 'scrollPaper', 'scrollBody', 'container', 'paper', 'paperScrollPaper', 'paperScrollBody', 'paperWidthFalse', 'paperWidthXs', 'paperWidthSm', 'paperWidthMd', 'paperWidthLg', 'paperWidthXl', 'paperFullWidth', 'paperFullScreen']);\nexport default dialogClasses;","import * as React from 'react';\nconst DialogContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n DialogContext.displayName = 'DialogContext';\n}\nexport default DialogContext;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"aria-describedby\", \"aria-labelledby\", \"BackdropComponent\", \"BackdropProps\", \"children\", \"className\", \"disableEscapeKeyDown\", \"fullScreen\", \"fullWidth\", \"maxWidth\", \"onBackdropClick\", \"onClose\", \"open\", \"PaperComponent\", \"PaperProps\", \"scroll\", \"TransitionComponent\", \"transitionDuration\", \"TransitionProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport { unstable_useId as useId } from '@mui/utils';\nimport capitalize from '../utils/capitalize';\nimport Modal from '../Modal';\nimport Fade from '../Fade';\nimport Paper from '../Paper';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport dialogClasses, { getDialogUtilityClass } from './dialogClasses';\nimport DialogContext from './DialogContext';\nimport Backdrop from '../Backdrop';\nimport useTheme from '../styles/useTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DialogBackdrop = styled(Backdrop, {\n name: 'MuiDialog',\n slot: 'Backdrop',\n overrides: (props, styles) => styles.backdrop\n})({\n // Improve scrollable dialog support.\n zIndex: -1\n});\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n scroll,\n maxWidth,\n fullWidth,\n fullScreen\n } = ownerState;\n const slots = {\n root: ['root'],\n container: ['container', `scroll${capitalize(scroll)}`],\n paper: ['paper', `paperScroll${capitalize(scroll)}`, `paperWidth${capitalize(String(maxWidth))}`, fullWidth && 'paperFullWidth', fullScreen && 'paperFullScreen']\n };\n return composeClasses(slots, getDialogUtilityClass, classes);\n};\nconst DialogRoot = styled(Modal, {\n name: 'MuiDialog',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n '@media print': {\n // Use !important to override the Modal inline-style.\n position: 'absolute !important'\n }\n});\nconst DialogContainer = styled('div', {\n name: 'MuiDialog',\n slot: 'Container',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.container, styles[`scroll${capitalize(ownerState.scroll)}`]];\n }\n})(({\n ownerState\n}) => _extends({\n height: '100%',\n '@media print': {\n height: 'auto'\n },\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0\n}, ownerState.scroll === 'paper' && {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n}, ownerState.scroll === 'body' && {\n overflowY: 'auto',\n overflowX: 'hidden',\n textAlign: 'center',\n '&:after': {\n content: '\"\"',\n display: 'inline-block',\n verticalAlign: 'middle',\n height: '100%',\n width: '0'\n }\n}));\nconst DialogPaper = styled(Paper, {\n name: 'MuiDialog',\n slot: 'Paper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.paper, styles[`scrollPaper${capitalize(ownerState.scroll)}`], styles[`paperWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fullWidth && styles.paperFullWidth, ownerState.fullScreen && styles.paperFullScreen];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n margin: 32,\n position: 'relative',\n overflowY: 'auto',\n // Fix IE11 issue, to remove at some point.\n '@media print': {\n overflowY: 'visible',\n boxShadow: 'none'\n }\n}, ownerState.scroll === 'paper' && {\n display: 'flex',\n flexDirection: 'column',\n maxHeight: 'calc(100% - 64px)'\n}, ownerState.scroll === 'body' && {\n display: 'inline-block',\n verticalAlign: 'middle',\n textAlign: 'left' // 'initial' doesn't work on IE11\n}, !ownerState.maxWidth && {\n maxWidth: 'calc(100% - 64px)'\n}, ownerState.maxWidth === 'xs' && {\n maxWidth: theme.breakpoints.unit === 'px' ? Math.max(theme.breakpoints.values.xs, 444) : `max(${theme.breakpoints.values.xs}${theme.breakpoints.unit}, 444px)`,\n [`&.${dialogClasses.paperScrollBody}`]: {\n [theme.breakpoints.down(Math.max(theme.breakpoints.values.xs, 444) + 32 * 2)]: {\n maxWidth: 'calc(100% - 64px)'\n }\n }\n}, ownerState.maxWidth && ownerState.maxWidth !== 'xs' && {\n maxWidth: `${theme.breakpoints.values[ownerState.maxWidth]}${theme.breakpoints.unit}`,\n [`&.${dialogClasses.paperScrollBody}`]: {\n [theme.breakpoints.down(theme.breakpoints.values[ownerState.maxWidth] + 32 * 2)]: {\n maxWidth: 'calc(100% - 64px)'\n }\n }\n}, ownerState.fullWidth && {\n width: 'calc(100% - 64px)'\n}, ownerState.fullScreen && {\n margin: 0,\n width: '100%',\n maxWidth: '100%',\n height: '100%',\n maxHeight: 'none',\n borderRadius: 0,\n [`&.${dialogClasses.paperScrollBody}`]: {\n margin: 0,\n maxWidth: '100%'\n }\n}));\n\n/**\n * Dialogs are overlaid modal paper based components with a backdrop.\n */\nconst Dialog = /*#__PURE__*/React.forwardRef(function Dialog(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDialog'\n });\n const theme = useTheme();\n const defaultTransitionDuration = {\n enter: theme.transitions.duration.enteringScreen,\n exit: theme.transitions.duration.leavingScreen\n };\n const {\n 'aria-describedby': ariaDescribedby,\n 'aria-labelledby': ariaLabelledbyProp,\n BackdropComponent,\n BackdropProps,\n children,\n className,\n disableEscapeKeyDown = false,\n fullScreen = false,\n fullWidth = false,\n maxWidth = 'sm',\n onBackdropClick,\n onClose,\n open,\n PaperComponent = Paper,\n PaperProps = {},\n scroll = 'paper',\n TransitionComponent = Fade,\n transitionDuration = defaultTransitionDuration,\n TransitionProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n disableEscapeKeyDown,\n fullScreen,\n fullWidth,\n maxWidth,\n scroll\n });\n const classes = useUtilityClasses(ownerState);\n const backdropClick = React.useRef();\n const handleMouseDown = event => {\n // We don't want to close the dialog when clicking the dialog content.\n // Make sure the event starts and ends on the same DOM element.\n backdropClick.current = event.target === event.currentTarget;\n };\n const handleBackdropClick = event => {\n // Ignore the events not coming from the \"backdrop\".\n if (!backdropClick.current) {\n return;\n }\n backdropClick.current = null;\n if (onBackdropClick) {\n onBackdropClick(event);\n }\n if (onClose) {\n onClose(event, 'backdropClick');\n }\n };\n const ariaLabelledby = useId(ariaLabelledbyProp);\n const dialogContextValue = React.useMemo(() => {\n return {\n titleId: ariaLabelledby\n };\n }, [ariaLabelledby]);\n return /*#__PURE__*/_jsx(DialogRoot, _extends({\n className: clsx(classes.root, className),\n closeAfterTransition: true,\n components: {\n Backdrop: DialogBackdrop\n },\n componentsProps: {\n backdrop: _extends({\n transitionDuration,\n as: BackdropComponent\n }, BackdropProps)\n },\n disableEscapeKeyDown: disableEscapeKeyDown,\n onClose: onClose,\n open: open,\n ref: ref,\n onClick: handleBackdropClick,\n ownerState: ownerState\n }, other, {\n children: /*#__PURE__*/_jsx(TransitionComponent, _extends({\n appear: true,\n in: open,\n timeout: transitionDuration,\n role: \"presentation\"\n }, TransitionProps, {\n children: /*#__PURE__*/_jsx(DialogContainer, {\n className: clsx(classes.container),\n onMouseDown: handleMouseDown,\n ownerState: ownerState,\n children: /*#__PURE__*/_jsx(DialogPaper, _extends({\n as: PaperComponent,\n elevation: 24,\n role: \"dialog\",\n \"aria-describedby\": ariaDescribedby,\n \"aria-labelledby\": ariaLabelledby\n }, PaperProps, {\n className: clsx(classes.paper, PaperProps.className),\n ownerState: ownerState,\n children: /*#__PURE__*/_jsx(DialogContext.Provider, {\n value: dialogContextValue,\n children: children\n })\n }))\n })\n }))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Dialog.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 id(s) of the element(s) that describe the dialog.\n */\n 'aria-describedby': PropTypes.string,\n /**\n * The id(s) of the element(s) that label the dialog.\n */\n 'aria-labelledby': PropTypes.string,\n /**\n * A backdrop component. This prop enables custom backdrop rendering.\n * @deprecated Use `slots.backdrop` instead. While this prop currently works, it will be removed in the next major version.\n * Use the `slots.backdrop` prop to make your application ready for the next version of Material UI.\n * @default styled(Backdrop, {\n * name: 'MuiModal',\n * slot: 'Backdrop',\n * overridesResolver: (props, styles) => {\n * return styles.backdrop;\n * },\n * })({\n * zIndex: -1,\n * })\n */\n BackdropComponent: PropTypes.elementType,\n /**\n * @ignore\n */\n BackdropProps: PropTypes.object,\n /**\n * Dialog children, usually the included sub-components.\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 * If `true`, hitting escape will not fire the `onClose` callback.\n * @default false\n */\n disableEscapeKeyDown: PropTypes.bool,\n /**\n * If `true`, the dialog is full-screen.\n * @default false\n */\n fullScreen: PropTypes.bool,\n /**\n * If `true`, the dialog stretches to `maxWidth`.\n *\n * Notice that the dialog width grow is limited by the default margin.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * Determine the max-width of the dialog.\n * The dialog width grows with the size of the screen.\n * Set to `false` to disable `maxWidth`.\n * @default 'sm'\n */\n maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n /**\n * Callback fired when the backdrop is clicked.\n * @deprecated Use the `onClose` prop with the `reason` argument to handle the `backdropClick` events.\n */\n onBackdropClick: PropTypes.func,\n /**\n * Callback fired when the component requests to be closed.\n *\n * @param {object} event The event source of the callback.\n * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`.\n */\n onClose: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * The component used to render the body of the dialog.\n * @default Paper\n */\n PaperComponent: PropTypes.elementType,\n /**\n * Props applied to the [`Paper`](/material-ui/api/paper/) element.\n * @default {}\n */\n PaperProps: PropTypes.object,\n /**\n * Determine the container for scrolling the dialog.\n * @default 'paper'\n */\n scroll: PropTypes.oneOf(['body', 'paper']),\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 component used for the transition.\n * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n * @default Fade\n */\n TransitionComponent: PropTypes.elementType,\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n * @default {\n * enter: theme.transitions.duration.enteringScreen,\n * exit: theme.transitions.duration.leavingScreen,\n * }\n */\n transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })]),\n /**\n * Props applied to the transition element.\n * By default, the element is based on this [`Transition`](http://reactcommunity.org/react-transition-group/transition/) component.\n */\n TransitionProps: PropTypes.object\n} : void 0;\nexport default Dialog;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport DialogContent from '@mui/material/DialogContent';\nimport Dialog, { dialogClasses } from '@mui/material/Dialog';\nimport { styled } from '@mui/material/styles';\nimport { DIALOG_WIDTH } from '../constants/dimensions';\nimport { PickersActionBar } from '../../PickersActionBar';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst PickersModalDialogRoot = styled(Dialog)({\n [`& .${dialogClasses.container}`]: {\n outline: 0\n },\n [`& .${dialogClasses.paper}`]: {\n outline: 0,\n minWidth: DIALOG_WIDTH\n }\n});\nconst PickersModalDialogContent = styled(DialogContent)({\n '&:first-of-type': {\n padding: 0\n }\n});\nexport const PickersModalDialog = props => {\n var _components$ActionBar;\n\n const {\n children,\n DialogProps = {},\n onAccept,\n onClear,\n onDismiss,\n onCancel,\n onSetToday,\n open,\n components,\n componentsProps\n } = props;\n const ActionBar = (_components$ActionBar = components == null ? void 0 : components.ActionBar) != null ? _components$ActionBar : PickersActionBar;\n return /*#__PURE__*/_jsxs(PickersModalDialogRoot, _extends({\n open: open,\n onClose: onDismiss\n }, DialogProps, {\n children: [/*#__PURE__*/_jsx(PickersModalDialogContent, {\n children: children\n }), /*#__PURE__*/_jsx(ActionBar, _extends({\n onAccept: onAccept,\n onClear: onClear,\n onCancel: onCancel,\n onSetToday: onSetToday,\n actions: ['cancel', 'accept']\n }, componentsProps == null ? void 0 : componentsProps.actionBar))]\n }));\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"DateInputProps\", \"DialogProps\", \"onAccept\", \"onClear\", \"onDismiss\", \"onCancel\", \"onSetToday\", \"open\", \"PureDateInputComponent\", \"components\", \"componentsProps\"];\nimport * as React from 'react';\nimport { WrapperVariantContext } from './WrapperVariantContext';\nimport { PickersModalDialog } from '../PickersModalDialog';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function MobileWrapper(props) {\n const {\n children,\n DateInputProps,\n DialogProps,\n onAccept,\n onClear,\n onDismiss,\n onCancel,\n onSetToday,\n open,\n PureDateInputComponent,\n components,\n componentsProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n return /*#__PURE__*/_jsxs(WrapperVariantContext.Provider, {\n value: \"mobile\",\n children: [/*#__PURE__*/_jsx(PureDateInputComponent, _extends({\n components: components\n }, other, DateInputProps)), /*#__PURE__*/_jsx(PickersModalDialog, {\n DialogProps: DialogProps,\n onAccept: onAccept,\n onClear: onClear,\n onDismiss: onDismiss,\n onCancel: onCancel,\n onSetToday: onSetToday,\n open: open,\n components: components,\n componentsProps: componentsProps,\n children: children\n })]\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useEventCallback } from '@mui/material/utils';\nimport { onSpaceOrEnter } from '../utils/utils';\nimport { useLocaleText, useUtils } from '../hooks/useUtils';\nimport { getDisplayDate } from '../utils/text-field-helper';\n// TODO: why is this called \"Pure*\" when it's not memoized? Does \"Pure\" mean \"readonly\"?\nexport const PureDateInput = /*#__PURE__*/React.forwardRef(function PureDateInput(props, ref) {\n const {\n disabled,\n getOpenDialogAriaText: getOpenDialogAriaTextProp,\n inputFormat,\n InputProps,\n inputRef,\n label,\n openPicker: onOpen,\n rawValue,\n renderInput,\n TextFieldProps = {},\n validationError,\n className\n } = props;\n const localeText = useLocaleText(); // The prop can not be deprecated\n // Default is \"Choose date, ...\", but time pickers override it with \"Choose time, ...\"\n\n const getOpenDialogAriaText = getOpenDialogAriaTextProp != null ? getOpenDialogAriaTextProp : localeText.openDatePickerDialogue;\n const utils = useUtils();\n const PureDateInputProps = React.useMemo(() => _extends({}, InputProps, {\n readOnly: true\n }), [InputProps]);\n const inputValue = getDisplayDate(utils, rawValue, inputFormat);\n const handleOnClick = useEventCallback(event => {\n event.stopPropagation();\n onOpen();\n });\n return renderInput(_extends({\n label,\n disabled,\n ref,\n inputRef,\n error: validationError,\n InputProps: PureDateInputProps,\n className\n }, !props.readOnly && !props.disabled && {\n onClick: handleOnClick\n }, {\n inputProps: _extends({\n disabled,\n readOnly: true,\n 'aria-readonly': true,\n 'aria-label': getOpenDialogAriaText(rawValue, utils),\n value: inputValue\n }, !props.readOnly && {\n onClick: handleOnClick\n }, {\n onKeyDown: onSpaceOrEnter(onOpen)\n })\n }, TextFieldProps));\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"ToolbarComponent\", \"value\", \"onChange\", \"components\", \"componentsProps\", \"hideTabs\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useDateTimePickerDefaultizedProps, dateTimePickerValueManager } from '../DateTimePicker/shared';\nimport { DateTimePickerToolbar } from '../DateTimePicker/DateTimePickerToolbar';\nimport { MobileWrapper } from '../internals/components/wrappers/MobileWrapper';\nimport { CalendarOrClockPicker } from '../internals/components/CalendarOrClockPicker';\nimport { useDateTimeValidation } from '../internals/hooks/validation/useDateTimeValidation';\nimport { PureDateInput } from '../internals/components/PureDateInput';\nimport { usePickerState } from '../internals/hooks/usePickerState';\nimport { DateTimePickerTabs } from '../DateTimePicker/DateTimePickerTabs';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n *\n * Demos:\n *\n * - [Date Time Picker](https://mui.com/x/react-date-pickers/date-time-picker/)\n *\n * API:\n *\n * - [MobileDateTimePicker API](https://mui.com/x/api/date-pickers/mobile-date-time-picker/)\n */\nexport const MobileDateTimePicker = /*#__PURE__*/React.forwardRef(function MobileDateTimePicker(inProps, ref) {\n const props = useDateTimePickerDefaultizedProps(inProps, 'MuiMobileDateTimePicker');\n const validationError = useDateTimeValidation(props) !== null;\n const {\n pickerProps,\n inputProps,\n wrapperProps\n } = usePickerState(props, dateTimePickerValueManager); // Note that we are passing down all the value without spread.\n // It saves us >1kb gzip and make any prop available automatically on any level down.\n\n const {\n ToolbarComponent = DateTimePickerToolbar,\n components: providedComponents,\n componentsProps,\n hideTabs = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const components = React.useMemo(() => _extends({\n Tabs: DateTimePickerTabs\n }, providedComponents), [providedComponents]);\n\n const DateInputProps = _extends({}, inputProps, other, {\n components,\n componentsProps,\n ref,\n validationError\n });\n\n return /*#__PURE__*/_jsx(MobileWrapper, _extends({}, other, wrapperProps, {\n DateInputProps: DateInputProps,\n PureDateInputComponent: PureDateInput,\n components: components,\n componentsProps: componentsProps,\n children: /*#__PURE__*/_jsx(CalendarOrClockPicker, _extends({}, pickerProps, {\n autoFocus: true,\n toolbarTitle: props.label || props.toolbarTitle,\n ToolbarComponent: ToolbarComponent,\n DateInputProps: DateInputProps,\n components: components,\n componentsProps: componentsProps,\n hideTabs: hideTabs\n }, other))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? MobileDateTimePicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Regular expression to detect \"accepted\" symbols.\n * @default /\\dap/gi\n */\n acceptRegex: PropTypes.instanceOf(RegExp),\n\n /**\n * 12h/24h view for hour selection clock.\n * @default `utils.is12HourCycleInCurrentLocale()`\n */\n ampm: PropTypes.bool,\n\n /**\n * Display ampm controls under the clock (instead of in the toolbar).\n * @default false\n */\n ampmInClock: PropTypes.bool,\n autoFocus: PropTypes.bool,\n children: PropTypes.node,\n\n /**\n * className applied to the root component.\n */\n className: PropTypes.string,\n\n /**\n * If `true` the popup or dialog will immediately close after submitting full date.\n * @default `true` for Desktop, `false` for Mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).\n */\n closeOnSelect: PropTypes.bool,\n\n /**\n * Overrideable components.\n * @default {}\n */\n components: PropTypes.object,\n\n /**\n * The props used for each component slot.\n * @default {}\n */\n componentsProps: PropTypes.object,\n\n /**\n * Date tab icon.\n */\n dateRangeIcon: PropTypes.node,\n\n /**\n * Formats the day of week displayed in the calendar header.\n * @param {string} day The day of week provided by the adapter's method `getWeekdays`.\n * @returns {string} The name to display.\n * @default (day) => day.charAt(0).toUpperCase()\n */\n dayOfWeekFormatter: PropTypes.func,\n\n /**\n * Default calendar month displayed when `value={null}`.\n */\n defaultCalendarMonth: PropTypes.any,\n\n /**\n * Props applied to the [`Dialog`](https://mui.com/material-ui/api/dialog/) element.\n */\n DialogProps: PropTypes.object,\n\n /**\n * If `true`, the picker and text field are disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true` future days are disabled.\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true`, today's date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * Do not ignore date part when validating min/max time.\n * @default false\n */\n disableIgnoringDatePartForTimeValidation: PropTypes.bool,\n\n /**\n * Disable mask on the keyboard, this should be used rarely. Consider passing proper mask for your format.\n * @default false\n */\n disableMaskedInput: PropTypes.bool,\n\n /**\n * Do not render open picker button (renders only text field with validation).\n * @default false\n */\n disableOpenPicker: PropTypes.bool,\n\n /**\n * If `true` past days are disabled.\n * @default false\n */\n disablePast: PropTypes.bool,\n\n /**\n * Accessible text that helps user to understand which time and view is selected.\n * @template TDate\n * @param {ClockPickerView} view The current view rendered.\n * @param {TDate | null} time The current time.\n * @param {MuiPickersAdapter} adapter The current date adapter.\n * @returns {string} The clock label.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n * @default (\n * view: ClockView,\n * time: TDate | null,\n * adapter: MuiPickersAdapter,\n * ) =>\n * `Select ${view}. ${\n * time === null ? 'No time selected' : `Selected time is ${adapter.format(time, 'fullTime')}`\n * }`\n */\n getClockLabelText: PropTypes.func,\n\n /**\n * Get aria-label text for control that opens picker dialog. Aria-label text must include selected date. @DateIOType\n * @template TInputDate, TDate\n * @param {TInputDate} date The date from which we want to add an aria-text.\n * @param {MuiPickersAdapter} utils The utils to manipulate the date.\n * @returns {string} The aria-text to render inside the dialog.\n * @default (date, utils) => `Choose date, selected date is ${utils.format(utils.date(date), 'fullDate')}`\n */\n getOpenDialogAriaText: PropTypes.func,\n\n /**\n * Get aria-label text for switching between views button.\n * @param {CalendarPickerView} currentView The view from which we want to get the button text.\n * @returns {string} The label of the view.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n */\n getViewSwitchingButtonText: PropTypes.func,\n\n /**\n * Toggles visibility of date time switching tabs\n * @default false for mobile, true for desktop\n */\n hideTabs: PropTypes.bool,\n ignoreInvalidInputs: PropTypes.bool,\n\n /**\n * Props to pass to keyboard input adornment.\n */\n InputAdornmentProps: PropTypes.object,\n\n /**\n * Format string.\n */\n inputFormat: PropTypes.string,\n InputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.object\n })]),\n label: PropTypes.node,\n\n /**\n * Left arrow icon aria-label text.\n * @deprecated\n */\n leftArrowButtonText: PropTypes.string,\n\n /**\n * If `true` renders `LoadingComponent` in calendar instead of calendar view.\n * Can be used to preload information and show it in calendar.\n * @default false\n */\n loading: PropTypes.bool,\n\n /**\n * Custom mask. Can be used to override generate from format. (e.g. `__/__/____ __:__` or `__/__/____ __:__ _M`).\n */\n mask: PropTypes.string,\n\n /**\n * Maximal selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Maximal selectable moment of time with binding to date, to set max time in each day use `maxTime`.\n */\n maxDateTime: PropTypes.any,\n\n /**\n * Max time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n maxTime: PropTypes.any,\n\n /**\n * Minimal selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n\n /**\n * Minimal selectable moment of time with binding to date, to set min time in each day use `minTime`.\n */\n minDateTime: PropTypes.any,\n\n /**\n * Min time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n minTime: PropTypes.any,\n\n /**\n * Step over minutes.\n * @default 1\n */\n minutesStep: PropTypes.number,\n\n /**\n * Callback fired when date is accepted @DateIOType.\n * @template TValue\n * @param {TValue} value The value that was just accepted.\n */\n onAccept: PropTypes.func,\n\n /**\n * Callback fired when the value (the selected date) changes @DateIOType.\n * @template TValue\n * @param {TValue} value The new parsed value.\n * @param {string} keyboardInputValue The current value of the keyboard input.\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Callback fired when the popup requests to be closed.\n * Use in controlled mode (see open).\n */\n onClose: PropTypes.func,\n\n /**\n * Callback that fired when input value or new `value` prop validation returns **new** validation error (or value is valid after error).\n * In case of validation error detected `reason` prop return non-null value and `TextField` must be displayed in `error` state.\n * This can be used to render appropriate form error.\n *\n * [Read the guide](https://next.material-ui-pickers.dev/guides/forms) about form integration and error displaying.\n * @DateIOType\n *\n * @template TError, TInputValue\n * @param {TError} reason The reason why the current value is not valid.\n * @param {TInputValue} value The invalid value.\n */\n onError: PropTypes.func,\n\n /**\n * Callback firing on month change @DateIOType.\n * @template TDate\n * @param {TDate} month The new month.\n * @returns {void|Promise} -\n */\n onMonthChange: PropTypes.func,\n\n /**\n * Callback fired when the popup requests to be opened.\n * Use in controlled mode (see open).\n */\n onOpen: PropTypes.func,\n\n /**\n * Callback fired on view change.\n * @param {CalendarOrClockPickerView} view The new view.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Callback firing on year change @DateIOType.\n * @template TDate\n * @param {TDate} year The new year.\n */\n onYearChange: PropTypes.func,\n\n /**\n * Control the popup or dialog open state.\n */\n open: PropTypes.bool,\n\n /**\n * Props to pass to keyboard adornment button.\n */\n OpenPickerButtonProps: PropTypes.object,\n\n /**\n * First view to show.\n * Must be a valid option from `views` list\n * @default 'day'\n */\n openTo: PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']),\n\n /**\n * Force rendering in particular orientation.\n */\n orientation: PropTypes.oneOf(['landscape', 'portrait']),\n\n /**\n * Make picker read only.\n * @default false\n */\n readOnly: PropTypes.bool,\n\n /**\n * Disable heavy animations.\n * @default typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent)\n */\n reduceAnimations: PropTypes.bool,\n\n /**\n * Custom renderer for day. Check the [PickersDay](https://mui.com/x/api/date-pickers/pickers-day/) component.\n * @template TDate\n * @param {TDate} day The day to render.\n * @param {Array} selectedDays The days currently selected.\n * @param {PickersDayProps} pickersDayProps The props of the day to render.\n * @returns {JSX.Element} The element representing the day.\n */\n renderDay: PropTypes.func,\n\n /**\n * The `renderInput` prop allows you to customize the rendered input.\n * The `props` argument of this render prop contains props of [TextField](https://mui.com/material-ui/api/text-field/#props) that you need to forward.\n * Pay specific attention to the `ref` and `inputProps` keys.\n * @example ```jsx\n * renderInput={props => }\n * ````\n * @param {MuiTextFieldPropsType} props The props of the input.\n * @returns {React.ReactNode} The node to render as the input.\n */\n renderInput: PropTypes.func.isRequired,\n\n /**\n * Component displaying when passed `loading` true.\n * @returns {React.ReactNode} The node to render when loading.\n * @default () => ...\n */\n renderLoading: PropTypes.func,\n\n /**\n * Custom formatter to be passed into Rifm component.\n * @param {string} str The un-formatted string.\n * @returns {string} The formatted string.\n */\n rifmFormatter: PropTypes.func,\n\n /**\n * Right arrow icon aria-label text.\n * @deprecated\n */\n rightArrowButtonText: PropTypes.string,\n\n /**\n * Disable specific date. @DateIOType\n * @template TDate\n * @param {TDate} day The date to test.\n * @returns {boolean} Returns `true` if the date should be disabled.\n */\n shouldDisableDate: PropTypes.func,\n\n /**\n * Disable specific months dynamically.\n * Works like `shouldDisableDate` but for month selection view @DateIOType.\n * @template TDate\n * @param {TDate} month The month to check.\n * @returns {boolean} If `true` the month will be disabled.\n */\n shouldDisableMonth: PropTypes.func,\n\n /**\n * Dynamically check if time is disabled or not.\n * If returns `false` appropriate time point will ot be acceptable.\n * @param {number} timeValue The value to check.\n * @param {ClockPickerView} clockType The clock type of the timeValue.\n * @returns {boolean} Returns `true` if the time should be disabled\n */\n shouldDisableTime: PropTypes.func,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n * @template TDate\n * @param {TDate} year The year to test.\n * @returns {boolean} Returns `true` if the year should be disabled.\n */\n shouldDisableYear: PropTypes.func,\n\n /**\n * If `true`, days that have `outsideCurrentMonth={true}` are displayed.\n * @default false\n */\n showDaysOutsideCurrentMonth: PropTypes.bool,\n\n /**\n * If `true`, show the toolbar even in desktop mode.\n */\n showToolbar: PropTypes.bool,\n\n /**\n * Time tab icon.\n */\n timeIcon: PropTypes.node,\n\n /**\n * Component that will replace default toolbar renderer.\n * @default DateTimePickerToolbar\n */\n ToolbarComponent: PropTypes.elementType,\n\n /**\n * Date format, that is displaying in toolbar.\n */\n toolbarFormat: PropTypes.string,\n\n /**\n * Mobile picker date value placeholder, displaying if `value` === `null`.\n * @default '–'\n */\n toolbarPlaceholder: PropTypes.node,\n\n /**\n * Mobile picker title, displaying in the toolbar.\n * @default 'Select date & time'\n */\n toolbarTitle: PropTypes.node,\n\n /**\n * The value of the picker.\n */\n value: PropTypes.any,\n\n /**\n * Array of views to show.\n * @default ['year', 'day', 'hours', 'minutes']\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']).isRequired)\n} : void 0;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"desktopModeMediaQuery\", \"DialogProps\", \"PopperProps\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useThemeProps } from '@mui/material/styles';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport { DesktopDateTimePicker } from '../DesktopDateTimePicker';\nimport { MobileDateTimePicker } from '../MobileDateTimePicker';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n *\n * Demos:\n *\n * - [Date Time Picker](https://mui.com/x/react-date-pickers/date-time-picker/)\n * - [Pickers](https://mui.com/x/react-date-pickers/)\n *\n * API:\n *\n * - [DateTimePicker API](https://mui.com/x/api/date-pickers/date-time-picker/)\n */\nexport const DateTimePicker = /*#__PURE__*/React.forwardRef(function DateTimePicker(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDateTimePicker'\n });\n\n const {\n desktopModeMediaQuery = '@media (pointer: fine)',\n DialogProps,\n PopperProps,\n TransitionComponent\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded); // defaults to `true` in environments where `window.matchMedia` would not be available (i.e. test/jsdom)\n\n\n const isDesktop = useMediaQuery(desktopModeMediaQuery, {\n defaultMatches: true\n });\n\n if (isDesktop) {\n return /*#__PURE__*/_jsx(DesktopDateTimePicker, _extends({\n ref: ref,\n PopperProps: PopperProps,\n TransitionComponent: TransitionComponent\n }, other));\n }\n\n return /*#__PURE__*/_jsx(MobileDateTimePicker, _extends({\n ref: ref,\n DialogProps: DialogProps\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? DateTimePicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Regular expression to detect \"accepted\" symbols.\n * @default /\\dap/gi\n */\n acceptRegex: PropTypes.instanceOf(RegExp),\n\n /**\n * 12h/24h view for hour selection clock.\n * @default `utils.is12HourCycleInCurrentLocale()`\n */\n ampm: PropTypes.bool,\n\n /**\n * Display ampm controls under the clock (instead of in the toolbar).\n * @default false\n */\n ampmInClock: PropTypes.bool,\n autoFocus: PropTypes.bool,\n children: PropTypes.node,\n\n /**\n * className applied to the root component.\n */\n className: PropTypes.string,\n\n /**\n * If `true` the popup or dialog will immediately close after submitting full date.\n * @default `true` for Desktop, `false` for Mobile (based on the chosen wrapper and `desktopModeMediaQuery` prop).\n */\n closeOnSelect: PropTypes.bool,\n\n /**\n * Overrideable components.\n * @default {}\n */\n components: PropTypes.object,\n\n /**\n * The props used for each component slot.\n * @default {}\n */\n componentsProps: PropTypes.object,\n\n /**\n * Date tab icon.\n */\n dateRangeIcon: PropTypes.node,\n\n /**\n * Formats the day of week displayed in the calendar header.\n * @param {string} day The day of week provided by the adapter's method `getWeekdays`.\n * @returns {string} The name to display.\n * @default (day) => day.charAt(0).toUpperCase()\n */\n dayOfWeekFormatter: PropTypes.func,\n\n /**\n * Default calendar month displayed when `value={null}`.\n */\n defaultCalendarMonth: PropTypes.any,\n\n /**\n * CSS media query when `Mobile` mode will be changed to `Desktop`.\n * @default '@media (pointer: fine)'\n * @example '@media (min-width: 720px)' or theme.breakpoints.up(\"sm\")\n */\n desktopModeMediaQuery: PropTypes.string,\n\n /**\n * Props applied to the [`Dialog`](https://mui.com/material-ui/api/dialog/) element.\n */\n DialogProps: PropTypes.object,\n\n /**\n * If `true`, the picker and text field are disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true` future days are disabled.\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true`, today's date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * Do not ignore date part when validating min/max time.\n * @default false\n */\n disableIgnoringDatePartForTimeValidation: PropTypes.bool,\n\n /**\n * Disable mask on the keyboard, this should be used rarely. Consider passing proper mask for your format.\n * @default false\n */\n disableMaskedInput: PropTypes.bool,\n\n /**\n * Do not render open picker button (renders only text field with validation).\n * @default false\n */\n disableOpenPicker: PropTypes.bool,\n\n /**\n * If `true` past days are disabled.\n * @default false\n */\n disablePast: PropTypes.bool,\n\n /**\n * Accessible text that helps user to understand which time and view is selected.\n * @template TDate\n * @param {ClockPickerView} view The current view rendered.\n * @param {TDate | null} time The current time.\n * @param {MuiPickersAdapter} adapter The current date adapter.\n * @returns {string} The clock label.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n * @default (\n * view: ClockView,\n * time: TDate | null,\n * adapter: MuiPickersAdapter,\n * ) =>\n * `Select ${view}. ${\n * time === null ? 'No time selected' : `Selected time is ${adapter.format(time, 'fullTime')}`\n * }`\n */\n getClockLabelText: PropTypes.func,\n\n /**\n * Get aria-label text for control that opens picker dialog. Aria-label text must include selected date. @DateIOType\n * @template TInputDate, TDate\n * @param {TInputDate} date The date from which we want to add an aria-text.\n * @param {MuiPickersAdapter} utils The utils to manipulate the date.\n * @returns {string} The aria-text to render inside the dialog.\n * @default (date, utils) => `Choose date, selected date is ${utils.format(utils.date(date), 'fullDate')}`\n */\n getOpenDialogAriaText: PropTypes.func,\n\n /**\n * Get aria-label text for switching between views button.\n * @param {CalendarPickerView} currentView The view from which we want to get the button text.\n * @returns {string} The label of the view.\n * @deprecated Use the `localeText` prop of `LocalizationProvider` instead, see https://mui.com/x/react-date-pickers/localization/.\n */\n getViewSwitchingButtonText: PropTypes.func,\n\n /**\n * Toggles visibility of date time switching tabs\n * @default false for mobile, true for desktop\n */\n hideTabs: PropTypes.bool,\n ignoreInvalidInputs: PropTypes.bool,\n\n /**\n * Props to pass to keyboard input adornment.\n */\n InputAdornmentProps: PropTypes.object,\n\n /**\n * Format string.\n */\n inputFormat: PropTypes.string,\n InputProps: PropTypes.object,\n\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.object\n })]),\n label: PropTypes.node,\n\n /**\n * Left arrow icon aria-label text.\n * @deprecated\n */\n leftArrowButtonText: PropTypes.string,\n\n /**\n * If `true` renders `LoadingComponent` in calendar instead of calendar view.\n * Can be used to preload information and show it in calendar.\n * @default false\n */\n loading: PropTypes.bool,\n\n /**\n * Custom mask. Can be used to override generate from format. (e.g. `__/__/____ __:__` or `__/__/____ __:__ _M`).\n */\n mask: PropTypes.string,\n\n /**\n * Maximal selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Maximal selectable moment of time with binding to date, to set max time in each day use `maxTime`.\n */\n maxDateTime: PropTypes.any,\n\n /**\n * Max time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n maxTime: PropTypes.any,\n\n /**\n * Minimal selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n\n /**\n * Minimal selectable moment of time with binding to date, to set min time in each day use `minTime`.\n */\n minDateTime: PropTypes.any,\n\n /**\n * Min time acceptable time.\n * For input validation date part of passed object will be ignored if `disableIgnoringDatePartForTimeValidation` not specified.\n */\n minTime: PropTypes.any,\n\n /**\n * Step over minutes.\n * @default 1\n */\n minutesStep: PropTypes.number,\n\n /**\n * Callback fired when date is accepted @DateIOType.\n * @template TValue\n * @param {TValue} value The value that was just accepted.\n */\n onAccept: PropTypes.func,\n\n /**\n * Callback fired when the value (the selected date) changes @DateIOType.\n * @template TValue\n * @param {TValue} value The new parsed value.\n * @param {string} keyboardInputValue The current value of the keyboard input.\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Callback fired when the popup requests to be closed.\n * Use in controlled mode (see open).\n */\n onClose: PropTypes.func,\n\n /**\n * Callback that fired when input value or new `value` prop validation returns **new** validation error (or value is valid after error).\n * In case of validation error detected `reason` prop return non-null value and `TextField` must be displayed in `error` state.\n * This can be used to render appropriate form error.\n *\n * [Read the guide](https://next.material-ui-pickers.dev/guides/forms) about form integration and error displaying.\n * @DateIOType\n *\n * @template TError, TInputValue\n * @param {TError} reason The reason why the current value is not valid.\n * @param {TInputValue} value The invalid value.\n */\n onError: PropTypes.func,\n\n /**\n * Callback firing on month change @DateIOType.\n * @template TDate\n * @param {TDate} month The new month.\n * @returns {void|Promise} -\n */\n onMonthChange: PropTypes.func,\n\n /**\n * Callback fired when the popup requests to be opened.\n * Use in controlled mode (see open).\n */\n onOpen: PropTypes.func,\n\n /**\n * Callback fired on view change.\n * @param {CalendarOrClockPickerView} view The new view.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Callback firing on year change @DateIOType.\n * @template TDate\n * @param {TDate} year The new year.\n */\n onYearChange: PropTypes.func,\n\n /**\n * Control the popup or dialog open state.\n */\n open: PropTypes.bool,\n\n /**\n * Props to pass to keyboard adornment button.\n */\n OpenPickerButtonProps: PropTypes.object,\n\n /**\n * First view to show.\n * Must be a valid option from `views` list\n * @default 'day'\n */\n openTo: PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']),\n\n /**\n * Force rendering in particular orientation.\n */\n orientation: PropTypes.oneOf(['landscape', 'portrait']),\n\n /**\n * Paper props passed down to [Paper](https://mui.com/material-ui/api/paper/) component.\n */\n PaperProps: PropTypes.object,\n\n /**\n * Popper props passed down to [Popper](https://mui.com/material-ui/api/popper/) component.\n */\n PopperProps: PropTypes.object,\n\n /**\n * Make picker read only.\n * @default false\n */\n readOnly: PropTypes.bool,\n\n /**\n * Disable heavy animations.\n * @default typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent)\n */\n reduceAnimations: PropTypes.bool,\n\n /**\n * Custom renderer for day. Check the [PickersDay](https://mui.com/x/api/date-pickers/pickers-day/) component.\n * @template TDate\n * @param {TDate} day The day to render.\n * @param {Array} selectedDays The days currently selected.\n * @param {PickersDayProps} pickersDayProps The props of the day to render.\n * @returns {JSX.Element} The element representing the day.\n */\n renderDay: PropTypes.func,\n\n /**\n * The `renderInput` prop allows you to customize the rendered input.\n * The `props` argument of this render prop contains props of [TextField](https://mui.com/material-ui/api/text-field/#props) that you need to forward.\n * Pay specific attention to the `ref` and `inputProps` keys.\n * @example ```jsx\n * renderInput={props => }\n * ````\n * @param {MuiTextFieldPropsType} props The props of the input.\n * @returns {React.ReactNode} The node to render as the input.\n */\n renderInput: PropTypes.func.isRequired,\n\n /**\n * Component displaying when passed `loading` true.\n * @returns {React.ReactNode} The node to render when loading.\n * @default () => ...\n */\n renderLoading: PropTypes.func,\n\n /**\n * Custom formatter to be passed into Rifm component.\n * @param {string} str The un-formatted string.\n * @returns {string} The formatted string.\n */\n rifmFormatter: PropTypes.func,\n\n /**\n * Right arrow icon aria-label text.\n * @deprecated\n */\n rightArrowButtonText: PropTypes.string,\n\n /**\n * Disable specific date. @DateIOType\n * @template TDate\n * @param {TDate} day The date to test.\n * @returns {boolean} Returns `true` if the date should be disabled.\n */\n shouldDisableDate: PropTypes.func,\n\n /**\n * Disable specific months dynamically.\n * Works like `shouldDisableDate` but for month selection view @DateIOType.\n * @template TDate\n * @param {TDate} month The month to check.\n * @returns {boolean} If `true` the month will be disabled.\n */\n shouldDisableMonth: PropTypes.func,\n\n /**\n * Dynamically check if time is disabled or not.\n * If returns `false` appropriate time point will ot be acceptable.\n * @param {number} timeValue The value to check.\n * @param {ClockPickerView} clockType The clock type of the timeValue.\n * @returns {boolean} Returns `true` if the time should be disabled\n */\n shouldDisableTime: PropTypes.func,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n * @template TDate\n * @param {TDate} year The year to test.\n * @returns {boolean} Returns `true` if the year should be disabled.\n */\n shouldDisableYear: PropTypes.func,\n\n /**\n * If `true`, days that have `outsideCurrentMonth={true}` are displayed.\n * @default false\n */\n showDaysOutsideCurrentMonth: PropTypes.bool,\n\n /**\n * If `true`, show the toolbar even in desktop mode.\n */\n showToolbar: PropTypes.bool,\n\n /**\n * Time tab icon.\n */\n timeIcon: PropTypes.node,\n\n /**\n * Component that will replace default toolbar renderer.\n * @default DateTimePickerToolbar\n */\n ToolbarComponent: PropTypes.elementType,\n\n /**\n * Date format, that is displaying in toolbar.\n */\n toolbarFormat: PropTypes.string,\n\n /**\n * Mobile picker date value placeholder, displaying if `value` === `null`.\n * @default '–'\n */\n toolbarPlaceholder: PropTypes.node,\n\n /**\n * Mobile picker title, displaying in the toolbar.\n * @default 'Select date & time'\n */\n toolbarTitle: PropTypes.node,\n\n /**\n * Custom component for popper [Transition](https://mui.com/material-ui/transitions/#transitioncomponent-prop).\n */\n TransitionComponent: PropTypes.elementType,\n\n /**\n * The value of the picker.\n */\n value: PropTypes.any,\n\n /**\n * Array of views to show.\n * @default ['year', 'day', 'hours', 'minutes']\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'hours', 'minutes', 'month', 'seconds', 'year']).isRequired)\n} : void 0;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport const getPickersLocalization = pickersTranslations => {\n return {\n components: {\n MuiLocalizationProvider: {\n defaultProps: {\n localeText: _extends({}, pickersTranslations)\n }\n }\n }\n };\n};","import { getPickersLocalization } from './utils/getPickersLocalization'; // This object is not Partial because it is the default values\n\nconst enUSPickers = {\n // Calendar navigation\n previousMonth: 'Previous month',\n nextMonth: 'Next month',\n // View navigation\n openPreviousView: 'open previous view',\n openNextView: 'open next view',\n calendarViewSwitchingButtonAriaLabel: view => view === 'year' ? 'year view is open, switch to calendar view' : 'calendar view is open, switch to year view',\n inputModeToggleButtonAriaLabel: (isKeyboardInputOpen, viewType) => isKeyboardInputOpen ? `text input view is open, go to ${viewType} view` : `${viewType} view is open, go to text input view`,\n // DateRange placeholders\n start: 'Start',\n end: 'End',\n // Action bar\n cancelButtonLabel: 'Cancel',\n clearButtonLabel: 'Clear',\n okButtonLabel: 'OK',\n todayButtonLabel: 'Today',\n // Toolbar titles\n datePickerDefaultToolbarTitle: 'Select date',\n dateTimePickerDefaultToolbarTitle: 'Select date & time',\n timePickerDefaultToolbarTitle: 'Select time',\n dateRangePickerDefaultToolbarTitle: 'Select date range',\n // Clock labels\n clockLabelText: (view, time, adapter) => `Select ${view}. ${time === null ? 'No time selected' : `Selected time is ${adapter.format(time, 'fullTime')}`}`,\n hoursClockNumberText: hours => `${hours} hours`,\n minutesClockNumberText: minutes => `${minutes} minutes`,\n secondsClockNumberText: seconds => `${seconds} seconds`,\n // Open picker labels\n openDatePickerDialogue: (rawValue, utils) => rawValue && utils.isValid(utils.date(rawValue)) ? `Choose date, selected date is ${utils.format(utils.date(rawValue), 'fullDate')}` : 'Choose date',\n openTimePickerDialogue: (rawValue, utils) => rawValue && utils.isValid(utils.date(rawValue)) ? `Choose time, selected time is ${utils.format(utils.date(rawValue), 'fullTime')}` : 'Choose time',\n // Table labels\n timeTableLabel: 'pick time',\n dateTableLabel: 'pick date'\n};\nexport const DEFAULT_LOCALE = enUSPickers;\nexport const enUS = getPickersLocalization(enUSPickers);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useThemeProps } from '@mui/material/styles';\nimport { DEFAULT_LOCALE } from '../locales';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const MuiPickersAdapterContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n MuiPickersAdapterContext.displayName = 'MuiPickersAdapterContext';\n}\n\nlet warnedOnce = false;\n/**\n * @ignore - do not document.\n */\n\nexport function LocalizationProvider(inProps) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiLocalizationProvider'\n });\n const {\n children,\n dateAdapter: Utils,\n dateFormats,\n dateLibInstance,\n locale,\n adapterLocale,\n localeText\n } = props;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce && locale !== undefined) {\n warnedOnce = true;\n console.warn(\"LocalizationProvider's prop `locale` is deprecated and replaced by `adapterLocale`\");\n }\n }\n\n const utils = React.useMemo(() => new Utils({\n locale: adapterLocale != null ? adapterLocale : locale,\n formats: dateFormats,\n instance: dateLibInstance\n }), [Utils, locale, adapterLocale, dateFormats, dateLibInstance]);\n const defaultDates = React.useMemo(() => {\n return {\n minDate: utils.date('1900-01-01T00:00:00.000'),\n maxDate: utils.date('2099-12-31T00:00:00.000')\n };\n }, [utils]);\n const contextValue = React.useMemo(() => {\n return {\n utils,\n defaultDates,\n localeText: _extends({}, DEFAULT_LOCALE, localeText != null ? localeText : {})\n };\n }, [defaultDates, utils, localeText]);\n return /*#__PURE__*/_jsx(MuiPickersAdapterContext.Provider, {\n value: contextValue,\n children: children\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? LocalizationProvider.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Locale for the date library you are using\n */\n adapterLocale: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n children: PropTypes.node,\n\n /**\n * DateIO adapter class function\n */\n dateAdapter: PropTypes.func.isRequired,\n\n /**\n * Formats that are used for any child pickers\n */\n dateFormats: PropTypes.shape({\n dayOfMonth: PropTypes.string,\n fullDate: PropTypes.string,\n fullDateTime: PropTypes.string,\n fullDateTime12h: PropTypes.string,\n fullDateTime24h: PropTypes.string,\n fullDateWithWeekday: PropTypes.string,\n fullTime: PropTypes.string,\n fullTime12h: PropTypes.string,\n fullTime24h: PropTypes.string,\n hours12h: PropTypes.string,\n hours24h: PropTypes.string,\n keyboardDate: PropTypes.string,\n keyboardDateTime: PropTypes.string,\n keyboardDateTime12h: PropTypes.string,\n keyboardDateTime24h: PropTypes.string,\n minutes: PropTypes.string,\n month: PropTypes.string,\n monthAndDate: PropTypes.string,\n monthAndYear: PropTypes.string,\n monthShort: PropTypes.string,\n normalDate: PropTypes.string,\n normalDateWithWeekday: PropTypes.string,\n seconds: PropTypes.string,\n shortDate: PropTypes.string,\n weekday: PropTypes.string,\n weekdayShort: PropTypes.string,\n year: PropTypes.string\n }),\n\n /**\n * Date library instance you are using, if it has some global overrides\n * ```jsx\n * dateLibInstance={momentTimeZone}\n * ```\n */\n dateLibInstance: PropTypes.any,\n\n /**\n * Locale for the date library you are using\n * @deprecated Use `adapterLocale` instead\n */\n locale: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n\n /**\n * Locale for components texts\n */\n localeText: PropTypes.object\n} : void 0;"],"names":["defaultFormats","dayOfMonth","fullDate","fullDateWithWeekday","fullDateTime","fullDateTime12h","fullDateTime24h","fullTime","fullTime12h","fullTime24h","hours12h","hours24h","keyboardDate","keyboardDateTime","keyboardDateTime12h","keyboardDateTime24h","minutes","seconds","month","monthAndDate","monthAndYear","monthShort","weekday","weekdayShort","normalDate","normalDateWithWeekday","shortDate","year","LuxonUtils","_createClass","_this","_ref","arguments","length","undefined","locale","formats","_classCallCheck","this","lib","date","value","DateTime","local","fromJSDate","Date","isDateTime","toJsDate","toJSDate","parseISO","isoString","fromISO","toISO","format","parse","formatString","fromFormat","is12HourCycleInCurrentLocale","_a","_b","Intl","DateTimeFormat","Boolean","hour","resolvedOptions","hour12","getFormatHelperText","getCurrentLocaleCode","Settings","defaultLocale","addSeconds","count","plus","addMinutes","addHours","hours","addDays","days","addWeeks","weeks","addMonths","months","addYears","years","isValid","isEqual","comparing","equals","isSameDay","hasSame","isSameMonth","isSameYear","isSameHour","isAfter","isBefore","isBeforeDay","diff","startOf","toObject","isAfterDay","endOf","isBeforeMonth","isAfterMonth","isBeforeYear","isAfterYear","getDiff","unit","Math","floor","as","startOfDay","endOfDay","formatKey","formatByString","setLocale","toFormat","formatNumber","numberToFormat","getHours","get","setHours","set","getMinutes","setMinutes","minute","getSeconds","setSeconds","second","getMonth","getDaysInMonth","daysInMonth","setMonth","getYear","setYear","getDate","setDate","day","mergeDateAndTime","time","startOfYear","endOfYear","startOfMonth","endOfMonth","startOfWeek","endOfWeek","getNextMonth","getPreviousMonth","minus","getMonthArray","monthArray","prevMonth","push","getWeekdays","Info","weekdaysFormat","getWeekArray","Array","round","fill","map","_","i","forEach","v","getYearRange","start","end","startDate","endDate","current","getMeridiemText","ampm","meridiems","find","toLowerCase","isNull","isWithinRange","_ref2","_ref3","_slicedToArray","Object","assign","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","getInputAdornmentUtilityClass","slot","generateUtilityClass","_span","generateUtilityClasses","_excluded","InputAdornmentRoot","styled","name","overridesResolver","props","styles","ownerState","root","concat","capitalize","position","disablePointerEvents","variant","theme","_extends","display","height","maxHeight","alignItems","whiteSpace","color","vars","palette","action","active","_defineProperty","inputAdornmentClasses","positionStart","hiddenLabel","marginTop","marginRight","marginLeft","pointerEvents","React","inProps","ref","useThemeProps","children","className","_props$component","component","_props$disablePointer","_props$disableTypogra","disableTypography","variantProp","other","_objectWithoutPropertiesLoose","muiFormControl","useFormControl","size","classes","slots","composeClasses","useUtilityClasses","_jsx","FormControlContext","Provider","clsx","_jsxs","Typography","useMediaQueryOld","query","defaultMatches","matchMedia","ssrMatchMedia","noSsr","_React$useState","matches","_React$useState2","match","setMatch","useEnhancedEffect","queryList","updateMatch","addListener","removeListener","maybeReactUseSyncExternalStore","useMediaQueryNew","getDefaultSnapshot","getServerSnapshot","_React$useMemo","mediaQueryList","notify","_React$useMemo2","getSnapshot","subscribe","useMediaQuery","queryInput","options","useTheme","supportMatchMedia","window","_getThemeProps","getThemeProps","_getThemeProps$defaul","_getThemeProps$matchM","_getThemeProps$ssrMat","_getThemeProps$noSsr","replace","useLocalizationContext","localization","MuiPickersAdapterContext","Error","useUtils","utils","useDefaultDates","defaultDates","useLocaleText","localeText","useNow","findClosestEnabledDate","disableFuture","disablePast","maxDate","minDate","isDateDisabled","today","forward","backward","parseNonNullablePickerDate","defaultValue","parsedValue","useDateTimePickerDefaultizedProps","_themeProps$ampm","_themeProps$minDateTi","_themeProps$maxDateTi","_themeProps$minDateTi2","_themeProps$maxDateTi2","themeProps","orientation","openTo","views","ampmInClock","acceptRegex","disableMaskedInput","inputFormat","disableIgnoringDatePartForTimeValidation","minDateTime","maxDateTime","minTime","maxTime","dateTimePickerValueManager","emptyValue","getTodayValue","parseInput","areValuesEqual","a","b","resolveViewTypeFromView","view","r","e","t","f","n","isArray","getPickersToolbarTextUtilityClass","pickersToolbarTextClasses","PickersToolbarTextRoot","selected","transition","transitions","create","text","secondary","primary","PickersToolbarText","ArrowDropDown","createSvgIcon","ArrowLeft","ArrowRight","Calendar","Clock","DateRange","Pen","Time","getPickersToolbarUtilityClass","pickersToolbarClasses","PickersToolbarRoot","flexDirection","justifyContent","padding","spacing","isLandscape","maxWidth","flexWrap","PickersToolbarContent","Grid","content","flex","PickersToolbarPenIconButton","IconButton","penIconButtonLandscape","penIconButton","getViewTypeIcon","viewType","PickersToolbar","getMobileKeyboardInputViewButtonText","isMobileKeyboardViewOpen","_props$landscapeDirec","landscapeDirection","toggleMobileKeyboardView","toolbarTitle","_props$viewType","container","direction","onClick","inputModeToggleButtonAriaLabel","PickersToolbarButtonRoot","Button","minWidth","textTransform","PickersToolbarButton","align","typographyClassName","getDateTimePickerToolbarUtilityClass","DateTimePickerToolbarRoot","paddingLeft","paddingRight","top","left","right","DateTimePickerToolbarDateContainer","dateContainer","DateTimePickerToolbarTimeContainer","timeContainer","DateTimePickerToolbarSeparator","separator","margin","cursor","DateTimePickerToolbar","openView","setOpenView","toolbarFormat","_props$toolbarPlaceho","toolbarPlaceholder","toolbarTitleProp","dateTimePickerDefaultToolbarTitle","dateText","includes","tabIndex","WrapperVariantContext","getDialogActionsUtilityClass","DialogActionsRoot","disableSpacing","_props$disableSpacing","PickersActionBar","onAccept","onClear","onCancel","onSetToday","actions","wrapperVariant","actionsArray","buttons","actionType","clearButtonLabel","cancelButtonLabel","okButtonLabel","todayButtonLabel","DialogActions","getPickersPopperUtilityClass","arrayIncludes","array","itemOrItems","every","item","indexOf","onSpaceOrEnter","innerFn","onFocus","event","key","preventDefault","stopPropagation","getActiveElement","activeEl","document","activeElement","shadowRoot","paper","PickersPopperRoot","Popper","zIndex","modal","PickersPopperPaper","Paper","transformOrigin","outline","placement","PickersPopper","_components$ActionBar","anchorEl","_props$containerRef","containerRef","onBlur","onClose","open","PopperProps","role","_props$TransitionComp","TransitionComponent","Grow","TrapFocusProps","_props$PaperProps","PaperProps","components","componentsProps","handleKeyDown","nativeEvent","addEventListener","removeEventListener","lastFocusedElementRef","HTMLElement","setTimeout","focus","_useClickAwayListener","onClickAway","movedRef","syntheticEventRef","nodeRef","activatedRef","armClickAwayListener","handleClickAway","useEventCallback","insideReactTree","doc","ownerDocument","documentElement","clientWidth","clientX","clientHeight","clientY","clickedRootScrollbar","composedPath","contains","target","handleSynthetic","handleTouchMove","useClickAwayListener","_useClickAwayListener2","clickAwayRef","onPaperClick","onPaperTouchStart","paperRef","handleRef","useForkRef","handlePaperRef","onPaperClickProp","onPaperTouchStartProp","onTouchStart","otherPaperProps","ActionBar","PaperContent","onKeyDown","TransitionProps","TrapFocus","disableAutoFocus","disableRestoreFocus","disableEnforceFocus","isEnabled","elevation","paperContent","actionBar","DesktopWrapper","DateInputProps","KeyboardDateInputComponent","onDismiss","ownInputRef","inputRef","useViews","_views","_views2","onChange","onViewChange","_useControlled","useControlled","state","controlled","_useControlled2","previousView","nextView","changeView","newView","openNext","handleChangeAndOpenNext","currentViewSelectionState","isSelectionFinishedOnCurrentView","globalSelectionState","CLOCK_WIDTH","CLOCK_HOUR_WIDTH","clockCenter","x","y","cx","cy","getAngleValue","step","offsetX","offsetY","atan","atan2","deg","PI","delta","pow","distance","sqrt","getClockPointerUtilityClass","thumb","ClockPointerRoot","width","backgroundColor","main","bottom","shouldAnimate","ClockPointerThumb","contrastText","borderRadius","border","boxSizing","hasSelected","ClockPointer","isInner","type","previousType","style","angle","transform","getAngleStyle","getClockUtilityClass","ClockRoot","ClockClock","clock","flexShrink","ClockWrapper","wrapper","ClockSquareMask","squareMask","touchAction","userSelect","disabled","ClockPin","pin","ClockAmButton","amButton","_ref4","meridiemMode","light","ClockPmButton","pmButton","_ref5","autoFocus","getClockLabelText","handleMeridiemChange","isTimeDisabled","_props$minutesStep","minutesStep","selectedId","readOnly","isMoving","isSelectedTimeDisabled","isPointerInner","handleValueChange","newValue","isFinish","setTime","rect","getBoundingClientRect","changedTouches","newSelectedValue","_getAngleValue2","keyboardControlStep","listboxRef","onTouchMove","onTouchEnd","onMouseUp","onMouseMove","getClockNumberUtilityClass","clockNumberClasses","ClockNumberRoot","_extends2","fontFamily","typography","background","inner","body2","ClockNumber","index","label","cos","sin","getHourNumbers","getClockNumberText","isDisabled","currentHours","hourNumbers","endHour","isSelected","toString","id","getMinutesNumbers","numberValue","getPickersArrowSwitcherUtilityClass","PickersArrowSwitcherRoot","PickersArrowSwitcherSpacer","spacer","PickersArrowSwitcherButton","button","hidden","visibility","PickersArrowSwitcher","isLeftDisabled","isLeftHidden","isRightDisabled","isRightHidden","leftArrowButtonText","onLeftClick","onRightClick","rightArrowButtonText","isRtl","leftArrowButtonProps","leftArrowButton","LeftArrowIcon","rightArrowButtonProps","rightArrowButton","RightArrowIcon","LeftArrowButton","title","edge","RightArrowButton","convertValueToMeridiem","meridiem","getSecondsInDay","createIsAfterIgnoreDatePart","dateLeft","dateRight","useMeridiemMode","getMeridiem","mode","timeWithMeridiem","newHoursAmount","convertToMeridiem","getClockPickerUtilityClass","PickerViewRoot","overflowX","ClockPickerRoot","ClockPickerArrowSwitcher","arrowSwitcher","deprecatedPropsWarning","ClockPicker","_props$ampm","_props$ampmInClock","getClockLabelTextProp","getHoursClockNumberTextProp","getHoursClockNumberText","getMinutesClockNumberTextProp","getMinutesClockNumberText","getSecondsClockNumberTextProp","getSecondsClockNumberText","leftArrowButtonTextProp","rightArrowButtonTextProp","shouldDisableTime","showViewSwitcher","_props$views","openPreviousView","openNextView","clockLabelText","hoursClockNumberText","minutesClockNumberText","secondsClockNumberText","_useViews","now","dateOrMidnight","_useMeridiemMode","rawValue","containsValidTime","isValidValue","dateWithNewHours","dateWithNewMinutes","dateWithNewSeconds","useId","viewProps","handleHoursChange","valueWithMeridiem","minutesValue","handleMinutesChange","secondsValue","handleSecondsChange","getPickersMonthUtilityClass","pickersMonthClasses","PickersMonthRoot","subtitle1","alpha","hoverOpacity","dark","noop","PickersMonth","onSelect","hasFocus","_props$onFocus","_props$onBlur","handleSelection","_ref$current","getMonthPickerUtilityClass","MonthPickerRoot","alignContent","MonthPicker","useMonthPickerDefaultizedProps","shouldDisableMonth","disableHighlightToday","_props$autoFocus","onMonthFocus","onFocusedViewChange","selectedDateOrStartOfMonth","selectedMonth","focusedMonth","setFocusedMonth","isMonthDisabled","firstEnabledMonth","lastEnabledMonth","onMonthSelect","newDate","internalHasFocus","setInternalHasFocus","changeHasFocus","newHasFocus","focusMonth","prevFocusedMonth","monthsInYear","handleMonthFocus","handleMonthBlur","currentMonthNumber","monthNumber","monthText","validateDate","adapter","shouldDisableDate","useIsDayDisabled","useCalendarState","defaultCalendarMonth","_ref2$disableSwitchTo","disableSwitchToMonthOnDayFocus","onMonthChange","reduceAnimations","reducerFn","slideDirection","currentMonth","newMonth","isMonthSwitchingAnimating","focusedDay","needMonthSwitch","withoutMonthSwitchingAnimation","createCalendarStateReducer","_React$useReducer","_React$useReducer2","calendarState","dispatch","handleChangeMonth","payload","changeMonth","newDateRequested","onMonthSwitchingAnimationEnd","changeFocusedDay","newFocusedDate","getPickersFadeTransitionGroupUtilityClass","animationDuration","PickersFadeTransitionGroupRoot","TransitionGroup","PickersFadeTransitionGroup","transKey","Fade","appear","mountOnEnter","unmountOnExit","timeout","enter","exit","getPickersDayUtilityClass","pickersDayClasses","styleArg","caption","willChange","fontWeight","fontWeightMedium","duration","short","disableMargin","outsideCurrentMonth","showDaysOutsideCurrentMonth","dayWithMargin","dayOutsideMonth","hiddenDaySpacingFiller","PickersDayRoot","ButtonBase","PickersDayFiller","opacity","PickersDayRaw","forwardedRef","_props$disabled","_props$disableHighlig","_props$disableMargin","isAnimating","onDaySelect","_props$onKeyDown","onMouseDown","_props$selected","_props$showDaysOutsid","_props$today","isToday","centerRipple","currentTarget","areDayPropsEqual","prevProps","nextProps","sx","PickersDay","replaceClassName","origClass","classToRemove","RegExp","removeClass","node","split","c","element","classList","remove","setAttribute","baseVal","CSSTransition","_React$Component","_len","args","_key","call","apply","appliedClasses","onEnter","maybeNode","maybeAppearing","_this$resolveArgument","resolveArguments","appearing","removeClasses","addClass","onEntering","_this$resolveArgument2","onEntered","_this$resolveArgument3","onExit","onExiting","onExited","getClassNames","classNames","isStringClassNames","baseClassName","activeClassName","doneClassName","_inheritsLoose","_proto","prototype","phase","forceReflow","add","hasClass","_addClass","_this$appliedClasses$","base","done","render","_this$props","Transition","defaultProps","propTypes","getPickersSlideTransitionUtilityClass","pickersSlideTransitionClasses","PickersSlideTransitionRoot","slideEnterActive","slideExit","_ref7","_ref8","slideTransition","easing","getDayPickerUtilityClass","defaultDayOfWeekFormatter","charAt","toUpperCase","PickersCalendarDayHeader","header","PickersCalendarWeekDayLabel","weekDayLabel","textAlign","PickersCalendarLoadingContainer","loadingContainer","minHeight","PickersCalendarSlideTransition","transitionClasses","enterActive","exitActive","childFactory","PickersCalendarWeekContainer","monthContainer","overflow","PickersCalendarWeek","weekContainer","DayPicker","onFocusedDayChange","selectedDays","loading","onSelectedDaysChange","renderDay","_props$renderLoading","renderLoading","_props$dayOfWeekForma","dayOfWeekFormatter","gridLabelId","internalFocusedDay","setInternalFocusedDay","handleDaySelect","focusDay","newFocusedDayDefault","nextAvailableMonth","closestDayToFocus","handleFocus","handleBlur","validSelectedDays","filter","transitionKey","slideNodeRef","startOfCurrentWeek","focusableDay","_dayOfWeekFormatter","week","isFocusableDay","some","selectedDay","pickersDayProps","_createElement","getPickersCalendarHeaderUtilityClass","PickersCalendarHeaderRoot","marginBottom","PickersCalendarHeaderLabelContainer","labelContainer","body1","PickersCalendarHeaderLabel","PickersCalendarHeaderSwitchViewButton","switchViewButton","PickersCalendarHeaderSwitchViewIcon","switchViewIcon","PickersCalendarHeader","_props$components","_props$componentsProp","getViewSwitchingButtonTextProp","getViewSwitchingButtonText","currentView","labelId","previousMonth","nextMonth","calendarViewSwitchingButtonAriaLabel","switchViewButtonProps","isNextMonthDisabled","useNextMonthDisabled","isPreviousMonthDisabled","usePreviousMonthDisabled","nextIndexToOpen","SwitchViewButton","SwitchViewIcon","in","getPickersYearUtilityClass","pickersYearClasses","PickersYearRoot","modeDesktop","modeMobile","flexBasis","PickersYearButton","_ref6","PickersYear","refHandle","yearButton","getYearPickerUtilityClass","YearPickerRoot","overflowY","YearPicker","useYearPickerDefaultizedProps","shouldDisableYear","onYearFocus","selectedDateOrStartOfYear","currentYear","selectedYearRef","focusedYear","setFocusedYear","isYearDisabled","dateToValidate","handleYearSelection","focusYear","prevFocusedYear","yearsInRow","nowYear","scrollerRef","tabbableButton","querySelector","offsetHeight","offsetTop","scrollTop","elementBottom","yearNumber","defaultReduceAnimations","navigator","test","userAgent","getCalendarPickerUtilityClass","CalendarPickerRoot","CalendarPickerViewTransitionContainer","viewTransitionContainer","CalendarPicker","useCalendarPickerDefaultizedProps","onYearChange","focusedView","_useCalendarState","handleDateMonthChange","selectionState","closestEnabledDate","handleDateYearChange","onSelectedDayChange","baseDateValidationProps","minDateWithDisabled","maxDateWithDisabled","commonViewProps","internalFocusedView","setInternalFocusedView","handleFocusedViewChange","eventView","prevView","prevOpenViewRef","useRifm","_useReducer","useReducer","refresh","valueRef","useRef","append","userValue","isDeleleteButtonDownRef","useLayoutEffect","_valueRef$current","eventValue","input","isSizeIncreaseOperation","isDeleleteButtonDown","isNoOperation","deleteWasNoOp","acceptedCharIndexAfterDelete","slice","selectionStart","search","accept","charsToSkipAfterDelete","clean","str","join","valueBeforeSelectionStart","substr","getCursorPosition","val","cleanPos","newPos","newCleanPos","max","mask","formattedValue","replacedValue","selectionEnd","useEffect","evt","code","handleKeyUp","getDisplayDate","MASK_USER_INPUT_SYMBOL","staticDateWith2DigitTokens","staticDateWith1DigitTokens","checkMaskIsValidForCurrentFormat","inferredFormatPatternWith1Digits","inferredFormatPatternWith2Digits","isMaskValid","useMaskedInput","_ref$acceptRegex","ignoreInvalidInputs","inputProps","rifmFormatter","TextFieldProps","validationError","formatHelperText","shouldUseMaskedInput","maskToUse","computedMaskToUse","getMaskFromCurrentFormat","formatter","acceptRegexp","outputCharIndex","char","inputCharIndex","lastIndex","maskChar","nextMaskChar","acceptedChar","formattedChar","maskedDateFormatter","st","innerInputValue","setInnerInputValue","_React$useState3","_React$useState4","innerDisplayedInputValue","setInnerDisplayedInputValue","prevRawValue","prevLocale","prevInputFormat","rawValueHasChanged","localeHasChanged","inputFormatHasChanged","newParsedValue","isAcceptedValue","innerEqualsParsed","areEqual","abs","newDisplayDate","handleChange","finalString","rifmProps","inputStateArgs","error","placeholder","KeyboardDateInput","disableOpenPicker","getOpenDialogAriaTextProp","getOpenDialogAriaText","InputAdornmentProps","InputProps","openPicker","OpenPickerButtonProps","renderInput","openDatePickerDialogue","textFieldProps","adornmentPosition","OpenPickerIcon","InputAdornment","getOrientation","screen","Number","getCalendarOrClockPickerUtilityClass","MobileKeyboardInputView","mobileKeyboardInputView","PickerRoot","MobileKeyboardTextFieldProps","fullWidth","isDatePickerView","isTimePickerView","CalendarOrClockPicker","_other$components","_other$componentsProp","onDateChange","showToolbar","_props$ToolbarCompone","ToolbarComponent","dateRangeIcon","timeIcon","hideTabs","TabsComponent","Tabs","customOrientation","setOrientation","eventHandler","useIsLandscape","toShowToolbar","showTabs","innerHeight","handleDateChange","_useFocusManagement","setFocusedView","prevFocusedView","useFocusManagement","tabs","validateTime","validateDateTime","timeValidationProps","dateValidationResult","isSameDateTimeError","useDateTimeValidation","validate","isSameError","onError","previousValidationErrorRef","useValidation","usePickerState","valueManager","closeOnSelect","_useOpenState","onOpen","isControllingOpenProp","openState","setIsOpenState","isOpen","setIsOpen","newIsOpen","useOpenState","parsedDateValue","lastValidDateValue","setLastValidDateValue","committed","draft","resetFallback","dateState","setDateState","params","prev","forceOnChangeCall","skipOnChangeCall","wrapperProps","_React$useState5","_React$useState6","setMobileKeyboardViewOpen","pickerProps","handleInputChange","keyboardInputValue","cleanParsedValue","valueReducer","pickerState","MuiPickerState","getDateTimePickerTabsUtilityClass","DateTimePickerTabsRoot","boxShadow","divider","order","tabsClasses","indicator","DateTimePickerTabs","_props$dateRangeIcon","_props$timeIcon","Tab","dateTableLabel","icon","timeTableLabel","DesktopDateTimePicker","_usePickerState","providedComponents","_props$hideTabs","AllDateInputProps","getDialogContentUtilityClass","DialogContentRoot","dividers","WebkitOverflowScrolling","borderTop","borderBottom","dialogTitleClasses","paddingTop","_props$dividers","getDialogUtilityClass","DialogBackdrop","Backdrop","overrides","backdrop","DialogRoot","Modal","DialogContainer","scroll","verticalAlign","DialogPaper","String","paperFullWidth","fullScreen","paperFullScreen","breakpoints","values","xs","dialogClasses","paperScrollBody","down","defaultTransitionDuration","enteringScreen","leavingScreen","ariaDescribedby","ariaLabelledbyProp","BackdropComponent","BackdropProps","_props$disableEscapeK","disableEscapeKeyDown","_props$fullScreen","_props$fullWidth","_props$maxWidth","onBackdropClick","_props$PaperComponent","PaperComponent","_props$scroll","_props$transitionDura","transitionDuration","backdropClick","ariaLabelledby","dialogContextValue","titleId","closeAfterTransition","DialogContext","PickersModalDialogRoot","Dialog","_styled","PickersModalDialogContent","DialogContent","PickersModalDialog","_props$DialogProps","DialogProps","MobileWrapper","PureDateInputComponent","PureDateInput","_props$TextFieldProps","PureDateInputProps","inputValue","handleOnClick","MobileDateTimePicker","DateTimePicker","_props$desktopModeMed","desktopModeMediaQuery","pickersTranslations","enUSPickers","isKeyboardInputOpen","datePickerDefaultToolbarTitle","timePickerDefaultToolbarTitle","dateRangePickerDefaultToolbarTitle","openTimePickerDialogue","DEFAULT_LOCALE","LocalizationProvider","Utils","dateAdapter","dateFormats","dateLibInstance","adapterLocale","instance","contextValue"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/225.4a99e6a2.chunk.js b/portal-ui/build/static/js/225.4a99e6a2.chunk.js new file mode 100644 index 0000000000..6847375c84 --- /dev/null +++ b/portal-ui/build/static/js/225.4a99e6a2.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[225],{81918:function(e,a,o){o.d(a,{Z:function(){return w}});var t=o(4942),c=o(63366),l=o(87462),r=o(72791),n=o(63733),i=o(94419),s=o(12065),d=o(76189),p=o(80184),v=(0,d.Z)((0,p.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"),u=o(42071),m=o(14036),b=o(95080),Z=o(31402),f=o(66934),g=o(75878),C=o(21217);function h(e){return(0,C.Z)("MuiChip",e)}var y=(0,g.Z)("MuiChip",["root","sizeSmall","sizeMedium","colorError","colorInfo","colorPrimary","colorSecondary","colorSuccess","colorWarning","disabled","clickable","clickableColorPrimary","clickableColorSecondary","deletable","deletableColorPrimary","deletableColorSecondary","outlined","filled","outlinedPrimary","outlinedSecondary","filledPrimary","filledSecondary","avatar","avatarSmall","avatarMedium","avatarColorPrimary","avatarColorSecondary","icon","iconSmall","iconMedium","iconColorPrimary","iconColorSecondary","label","labelSmall","labelMedium","deleteIcon","deleteIconSmall","deleteIconMedium","deleteIconColorPrimary","deleteIconColorSecondary","deleteIconOutlinedColorPrimary","deleteIconOutlinedColorSecondary","deleteIconFilledColorPrimary","deleteIconFilledColorSecondary","focusVisible"]),k=["avatar","className","clickable","color","component","deleteIcon","disabled","icon","label","onClick","onDelete","onKeyDown","onKeyUp","size","variant","tabIndex","skipFocusWhenDisabled"],S=(0,f.ZP)("div",{name:"MuiChip",slot:"Root",overridesResolver:function(e,a){var o=e.ownerState,c=o.color,l=o.iconColor,r=o.clickable,n=o.onDelete,i=o.size,s=o.variant;return[(0,t.Z)({},"& .".concat(y.avatar),a.avatar),(0,t.Z)({},"& .".concat(y.avatar),a["avatar".concat((0,m.Z)(i))]),(0,t.Z)({},"& .".concat(y.avatar),a["avatarColor".concat((0,m.Z)(c))]),(0,t.Z)({},"& .".concat(y.icon),a.icon),(0,t.Z)({},"& .".concat(y.icon),a["icon".concat((0,m.Z)(i))]),(0,t.Z)({},"& .".concat(y.icon),a["iconColor".concat((0,m.Z)(l))]),(0,t.Z)({},"& .".concat(y.deleteIcon),a.deleteIcon),(0,t.Z)({},"& .".concat(y.deleteIcon),a["deleteIcon".concat((0,m.Z)(i))]),(0,t.Z)({},"& .".concat(y.deleteIcon),a["deleteIconColor".concat((0,m.Z)(c))]),(0,t.Z)({},"& .".concat(y.deleteIcon),a["deleteIcon".concat((0,m.Z)(s),"Color").concat((0,m.Z)(c))]),a.root,a["size".concat((0,m.Z)(i))],a["color".concat((0,m.Z)(c))],r&&a.clickable,r&&"default"!==c&&a["clickableColor".concat((0,m.Z)(c),")")],n&&a.deletable,n&&"default"!==c&&a["deletableColor".concat((0,m.Z)(c))],a[s],a["".concat(s).concat((0,m.Z)(c))]]}})((function(e){var a,o=e.theme,c=e.ownerState,r="light"===o.palette.mode?o.palette.grey[700]:o.palette.grey[300];return(0,l.Z)((a={maxWidth:"100%",fontFamily:o.typography.fontFamily,fontSize:o.typography.pxToRem(13),display:"inline-flex",alignItems:"center",justifyContent:"center",height:32,color:(o.vars||o).palette.text.primary,backgroundColor:(o.vars||o).palette.action.selected,borderRadius:16,whiteSpace:"nowrap",transition:o.transitions.create(["background-color","box-shadow"]),cursor:"unset",outline:0,textDecoration:"none",border:0,padding:0,verticalAlign:"middle",boxSizing:"border-box"},(0,t.Z)(a,"&.".concat(y.disabled),{opacity:(o.vars||o).palette.action.disabledOpacity,pointerEvents:"none"}),(0,t.Z)(a,"& .".concat(y.avatar),{marginLeft:5,marginRight:-6,width:24,height:24,color:o.vars?o.vars.palette.Chip.defaultAvatarColor:r,fontSize:o.typography.pxToRem(12)}),(0,t.Z)(a,"& .".concat(y.avatarColorPrimary),{color:(o.vars||o).palette.primary.contrastText,backgroundColor:(o.vars||o).palette.primary.dark}),(0,t.Z)(a,"& .".concat(y.avatarColorSecondary),{color:(o.vars||o).palette.secondary.contrastText,backgroundColor:(o.vars||o).palette.secondary.dark}),(0,t.Z)(a,"& .".concat(y.avatarSmall),{marginLeft:4,marginRight:-4,width:18,height:18,fontSize:o.typography.pxToRem(10)}),(0,t.Z)(a,"& .".concat(y.icon),(0,l.Z)({marginLeft:5,marginRight:-6},"small"===c.size&&{fontSize:18,marginLeft:4,marginRight:-4},c.iconColor===c.color&&(0,l.Z)({color:o.vars?o.vars.palette.Chip.defaultIconColor:r},"default"!==c.color&&{color:"inherit"}))),(0,t.Z)(a,"& .".concat(y.deleteIcon),(0,l.Z)({WebkitTapHighlightColor:"transparent",color:o.vars?"rgba(".concat(o.vars.palette.text.primaryChannel," / 0.26)"):(0,s.Fq)(o.palette.text.primary,.26),fontSize:22,cursor:"pointer",margin:"0 5px 0 -6px","&:hover":{color:o.vars?"rgba(".concat(o.vars.palette.text.primaryChannel," / 0.4)"):(0,s.Fq)(o.palette.text.primary,.4)}},"small"===c.size&&{fontSize:16,marginRight:4,marginLeft:-4},"default"!==c.color&&{color:o.vars?"rgba(".concat(o.vars.palette[c.color].contrastTextChannel," / 0.7)"):(0,s.Fq)(o.palette[c.color].contrastText,.7),"&:hover, &:active":{color:(o.vars||o).palette[c.color].contrastText}})),a),"small"===c.size&&{height:24},"default"!==c.color&&{backgroundColor:(o.vars||o).palette[c.color].main,color:(o.vars||o).palette[c.color].contrastText},c.onDelete&&(0,t.Z)({},"&.".concat(y.focusVisible),{backgroundColor:o.vars?"rgba(".concat(o.vars.palette.action.selectedChannel," / calc(").concat(o.vars.palette.action.selectedOpacity," + ").concat(o.vars.palette.action.focusOpacity,"))"):(0,s.Fq)(o.palette.action.selected,o.palette.action.selectedOpacity+o.palette.action.focusOpacity)}),c.onDelete&&"default"!==c.color&&(0,t.Z)({},"&.".concat(y.focusVisible),{backgroundColor:(o.vars||o).palette[c.color].dark}))}),(function(e){var a,o=e.theme,c=e.ownerState;return(0,l.Z)({},c.clickable&&(a={userSelect:"none",WebkitTapHighlightColor:"transparent",cursor:"pointer","&:hover":{backgroundColor:o.vars?"rgba(".concat(o.vars.palette.action.selectedChannel," / calc(").concat(o.vars.palette.action.selectedOpacity," + ").concat(o.vars.palette.action.hoverOpacity,"))"):(0,s.Fq)(o.palette.action.selected,o.palette.action.selectedOpacity+o.palette.action.hoverOpacity)}},(0,t.Z)(a,"&.".concat(y.focusVisible),{backgroundColor:o.vars?"rgba(".concat(o.vars.palette.action.selectedChannel," / calc(").concat(o.vars.palette.action.selectedOpacity," + ").concat(o.vars.palette.action.focusOpacity,"))"):(0,s.Fq)(o.palette.action.selected,o.palette.action.selectedOpacity+o.palette.action.focusOpacity)}),(0,t.Z)(a,"&:active",{boxShadow:(o.vars||o).shadows[1]}),a),c.clickable&&"default"!==c.color&&(0,t.Z)({},"&:hover, &.".concat(y.focusVisible),{backgroundColor:(o.vars||o).palette[c.color].dark}))}),(function(e){var a,o,c=e.theme,r=e.ownerState;return(0,l.Z)({},"outlined"===r.variant&&(a={backgroundColor:"transparent",border:c.vars?"1px solid ".concat(c.vars.palette.Chip.defaultBorder):"1px solid ".concat("light"===c.palette.mode?c.palette.grey[400]:c.palette.grey[700])},(0,t.Z)(a,"&.".concat(y.clickable,":hover"),{backgroundColor:(c.vars||c).palette.action.hover}),(0,t.Z)(a,"&.".concat(y.focusVisible),{backgroundColor:(c.vars||c).palette.action.focus}),(0,t.Z)(a,"& .".concat(y.avatar),{marginLeft:4}),(0,t.Z)(a,"& .".concat(y.avatarSmall),{marginLeft:2}),(0,t.Z)(a,"& .".concat(y.icon),{marginLeft:4}),(0,t.Z)(a,"& .".concat(y.iconSmall),{marginLeft:2}),(0,t.Z)(a,"& .".concat(y.deleteIcon),{marginRight:5}),(0,t.Z)(a,"& .".concat(y.deleteIconSmall),{marginRight:3}),a),"outlined"===r.variant&&"default"!==r.color&&(o={color:(c.vars||c).palette[r.color].main,border:"1px solid ".concat(c.vars?"rgba(".concat(c.vars.palette[r.color].mainChannel," / 0.7)"):(0,s.Fq)(c.palette[r.color].main,.7))},(0,t.Z)(o,"&.".concat(y.clickable,":hover"),{backgroundColor:c.vars?"rgba(".concat(c.vars.palette[r.color].mainChannel," / ").concat(c.vars.palette.action.hoverOpacity,")"):(0,s.Fq)(c.palette[r.color].main,c.palette.action.hoverOpacity)}),(0,t.Z)(o,"&.".concat(y.focusVisible),{backgroundColor:c.vars?"rgba(".concat(c.vars.palette[r.color].mainChannel," / ").concat(c.vars.palette.action.focusOpacity,")"):(0,s.Fq)(c.palette[r.color].main,c.palette.action.focusOpacity)}),(0,t.Z)(o,"& .".concat(y.deleteIcon),{color:c.vars?"rgba(".concat(c.vars.palette[r.color].mainChannel," / 0.7)"):(0,s.Fq)(c.palette[r.color].main,.7),"&:hover, &:active":{color:(c.vars||c).palette[r.color].main}}),o))})),I=(0,f.ZP)("span",{name:"MuiChip",slot:"Label",overridesResolver:function(e,a){var o=e.ownerState.size;return[a.label,a["label".concat((0,m.Z)(o))]]}})((function(e){var a=e.ownerState;return(0,l.Z)({overflow:"hidden",textOverflow:"ellipsis",paddingLeft:12,paddingRight:12,whiteSpace:"nowrap"},"small"===a.size&&{paddingLeft:8,paddingRight:8})}));function x(e){return"Backspace"===e.key||"Delete"===e.key}var w=r.forwardRef((function(e,a){var o=(0,Z.Z)({props:e,name:"MuiChip"}),t=o.avatar,s=o.className,d=o.clickable,f=o.color,g=void 0===f?"default":f,C=o.component,y=o.deleteIcon,w=o.disabled,z=void 0!==w&&w,O=o.icon,R=o.label,F=o.onClick,D=o.onDelete,P=o.onKeyDown,L=o.onKeyUp,T=o.size,V=void 0===T?"medium":T,N=o.variant,E=void 0===N?"filled":N,M=o.tabIndex,q=o.skipFocusWhenDisabled,K=void 0!==q&&q,W=(0,c.Z)(o,k),j=r.useRef(null),U=(0,u.Z)(j,a),A=function(e){e.stopPropagation(),D&&D(e)},B=!(!1===d||!F)||d,H=B||D?b.Z:C||"div",_=(0,l.Z)({},o,{component:H,disabled:z,size:V,color:g,iconColor:r.isValidElement(O)&&O.props.color||g,onDelete:!!D,clickable:B,variant:E}),G=function(e){var a=e.classes,o=e.disabled,t=e.size,c=e.color,l=e.iconColor,r=e.onDelete,n=e.clickable,s=e.variant,d={root:["root",s,o&&"disabled","size".concat((0,m.Z)(t)),"color".concat((0,m.Z)(c)),n&&"clickable",n&&"clickableColor".concat((0,m.Z)(c)),r&&"deletable",r&&"deletableColor".concat((0,m.Z)(c)),"".concat(s).concat((0,m.Z)(c))],label:["label","label".concat((0,m.Z)(t))],avatar:["avatar","avatar".concat((0,m.Z)(t)),"avatarColor".concat((0,m.Z)(c))],icon:["icon","icon".concat((0,m.Z)(t)),"iconColor".concat((0,m.Z)(l))],deleteIcon:["deleteIcon","deleteIcon".concat((0,m.Z)(t)),"deleteIconColor".concat((0,m.Z)(c)),"deleteIcon".concat((0,m.Z)(s),"Color").concat((0,m.Z)(c))]};return(0,i.Z)(d,h,a)}(_),J=H===b.Z?(0,l.Z)({component:C||"div",focusVisibleClassName:G.focusVisible},D&&{disableRipple:!0}):{},Q=null;D&&(Q=y&&r.isValidElement(y)?r.cloneElement(y,{className:(0,n.Z)(y.props.className,G.deleteIcon),onClick:A}):(0,p.jsx)(v,{className:(0,n.Z)(G.deleteIcon),onClick:A}));var X=null;t&&r.isValidElement(t)&&(X=r.cloneElement(t,{className:(0,n.Z)(G.avatar,t.props.className)}));var Y=null;return O&&r.isValidElement(O)&&(Y=r.cloneElement(O,{className:(0,n.Z)(G.icon,O.props.className)})),(0,p.jsxs)(S,(0,l.Z)({as:H,className:(0,n.Z)(G.root,s),disabled:!(!B||!z)||void 0,onClick:F,onKeyDown:function(e){e.currentTarget===e.target&&x(e)&&e.preventDefault(),P&&P(e)},onKeyUp:function(e){e.currentTarget===e.target&&(D&&x(e)?D(e):"Escape"===e.key&&j.current&&j.current.blur()),L&&L(e)},ref:U,tabIndex:K&&z?-1:M,ownerState:_},J,W,{children:[X||Y,(0,p.jsx)(I,{className:(0,n.Z)(G.label),ownerState:_,children:R}),Q]}))}))},36229:function(e,a,o){var t=o(72791);a.Z=function(e){var a=t.useRef({});return t.useEffect((function(){a.current=e})),a.current}}}]); +//# sourceMappingURL=225.4a99e6a2.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/225.4a99e6a2.chunk.js.map b/portal-ui/build/static/js/225.4a99e6a2.chunk.js.map new file mode 100644 index 0000000000..4345b8de53 --- /dev/null +++ b/portal-ui/build/static/js/225.4a99e6a2.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/225.4a99e6a2.chunk.js","mappings":"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","sources":["../node_modules/@mui/material/internal/svg-icons/Cancel.js","../node_modules/@mui/material/Chip/chipClasses.js","../node_modules/@mui/material/Chip/Chip.js","../node_modules/@mui/utils/esm/usePreviousProps.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M12 2C6.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');","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getChipUtilityClass(slot) {\n return generateUtilityClass('MuiChip', slot);\n}\nconst chipClasses = generateUtilityClasses('MuiChip', ['root', 'sizeSmall', 'sizeMedium', 'colorError', 'colorInfo', 'colorPrimary', 'colorSecondary', 'colorSuccess', 'colorWarning', 'disabled', 'clickable', 'clickableColorPrimary', 'clickableColorSecondary', 'deletable', 'deletableColorPrimary', 'deletableColorSecondary', 'outlined', 'filled', 'outlinedPrimary', 'outlinedSecondary', 'filledPrimary', 'filledSecondary', 'avatar', 'avatarSmall', 'avatarMedium', 'avatarColorPrimary', 'avatarColorSecondary', 'icon', 'iconSmall', 'iconMedium', 'iconColorPrimary', 'iconColorSecondary', 'label', 'labelSmall', 'labelMedium', 'deleteIcon', 'deleteIconSmall', 'deleteIconMedium', 'deleteIconColorPrimary', 'deleteIconColorSecondary', 'deleteIconOutlinedColorPrimary', 'deleteIconOutlinedColorSecondary', 'deleteIconFilledColorPrimary', 'deleteIconFilledColorSecondary', 'focusVisible']);\nexport default chipClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"avatar\", \"className\", \"clickable\", \"color\", \"component\", \"deleteIcon\", \"disabled\", \"icon\", \"label\", \"onClick\", \"onDelete\", \"onKeyDown\", \"onKeyUp\", \"size\", \"variant\", \"tabIndex\", \"skipFocusWhenDisabled\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport { alpha } from '@mui/system';\nimport CancelIcon from '../internal/svg-icons/Cancel';\nimport useForkRef from '../utils/useForkRef';\nimport unsupportedProp from '../utils/unsupportedProp';\nimport capitalize from '../utils/capitalize';\nimport ButtonBase from '../ButtonBase';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport chipClasses, { getChipUtilityClass } from './chipClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disabled,\n size,\n color,\n iconColor,\n onDelete,\n clickable,\n variant\n } = ownerState;\n const slots = {\n root: ['root', variant, disabled && 'disabled', `size${capitalize(size)}`, `color${capitalize(color)}`, clickable && 'clickable', clickable && `clickableColor${capitalize(color)}`, onDelete && 'deletable', onDelete && `deletableColor${capitalize(color)}`, `${variant}${capitalize(color)}`],\n label: ['label', `label${capitalize(size)}`],\n avatar: ['avatar', `avatar${capitalize(size)}`, `avatarColor${capitalize(color)}`],\n icon: ['icon', `icon${capitalize(size)}`, `iconColor${capitalize(iconColor)}`],\n deleteIcon: ['deleteIcon', `deleteIcon${capitalize(size)}`, `deleteIconColor${capitalize(color)}`, `deleteIcon${capitalize(variant)}Color${capitalize(color)}`]\n };\n return composeClasses(slots, getChipUtilityClass, classes);\n};\nconst ChipRoot = styled('div', {\n name: 'MuiChip',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n const {\n color,\n iconColor,\n clickable,\n onDelete,\n size,\n variant\n } = ownerState;\n return [{\n [`& .${chipClasses.avatar}`]: styles.avatar\n }, {\n [`& .${chipClasses.avatar}`]: styles[`avatar${capitalize(size)}`]\n }, {\n [`& .${chipClasses.avatar}`]: styles[`avatarColor${capitalize(color)}`]\n }, {\n [`& .${chipClasses.icon}`]: styles.icon\n }, {\n [`& .${chipClasses.icon}`]: styles[`icon${capitalize(size)}`]\n }, {\n [`& .${chipClasses.icon}`]: styles[`iconColor${capitalize(iconColor)}`]\n }, {\n [`& .${chipClasses.deleteIcon}`]: styles.deleteIcon\n }, {\n [`& .${chipClasses.deleteIcon}`]: styles[`deleteIcon${capitalize(size)}`]\n }, {\n [`& .${chipClasses.deleteIcon}`]: styles[`deleteIconColor${capitalize(color)}`]\n }, {\n [`& .${chipClasses.deleteIcon}`]: styles[`deleteIcon${capitalize(variant)}Color${capitalize(color)}`]\n }, styles.root, styles[`size${capitalize(size)}`], styles[`color${capitalize(color)}`], clickable && styles.clickable, clickable && color !== 'default' && styles[`clickableColor${capitalize(color)})`], onDelete && styles.deletable, onDelete && color !== 'default' && styles[`deletableColor${capitalize(color)}`], styles[variant], styles[`${variant}${capitalize(color)}`]];\n }\n})(({\n theme,\n ownerState\n}) => {\n const textColor = theme.palette.mode === 'light' ? theme.palette.grey[700] : theme.palette.grey[300];\n return _extends({\n maxWidth: '100%',\n fontFamily: theme.typography.fontFamily,\n fontSize: theme.typography.pxToRem(13),\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: 32,\n color: (theme.vars || theme).palette.text.primary,\n backgroundColor: (theme.vars || theme).palette.action.selected,\n borderRadius: 32 / 2,\n whiteSpace: 'nowrap',\n transition: theme.transitions.create(['background-color', 'box-shadow']),\n // reset cursor explicitly in case ButtonBase is used\n cursor: 'unset',\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n textDecoration: 'none',\n border: 0,\n // Remove `button` border\n padding: 0,\n // Remove `button` padding\n verticalAlign: 'middle',\n boxSizing: 'border-box',\n [`&.${chipClasses.disabled}`]: {\n opacity: (theme.vars || theme).palette.action.disabledOpacity,\n pointerEvents: 'none'\n },\n [`& .${chipClasses.avatar}`]: {\n marginLeft: 5,\n marginRight: -6,\n width: 24,\n height: 24,\n color: theme.vars ? theme.vars.palette.Chip.defaultAvatarColor : textColor,\n fontSize: theme.typography.pxToRem(12)\n },\n [`& .${chipClasses.avatarColorPrimary}`]: {\n color: (theme.vars || theme).palette.primary.contrastText,\n backgroundColor: (theme.vars || theme).palette.primary.dark\n },\n [`& .${chipClasses.avatarColorSecondary}`]: {\n color: (theme.vars || theme).palette.secondary.contrastText,\n backgroundColor: (theme.vars || theme).palette.secondary.dark\n },\n [`& .${chipClasses.avatarSmall}`]: {\n marginLeft: 4,\n marginRight: -4,\n width: 18,\n height: 18,\n fontSize: theme.typography.pxToRem(10)\n },\n [`& .${chipClasses.icon}`]: _extends({\n marginLeft: 5,\n marginRight: -6\n }, ownerState.size === 'small' && {\n fontSize: 18,\n marginLeft: 4,\n marginRight: -4\n }, ownerState.iconColor === ownerState.color && _extends({\n color: theme.vars ? theme.vars.palette.Chip.defaultIconColor : textColor\n }, ownerState.color !== 'default' && {\n color: 'inherit'\n })),\n [`& .${chipClasses.deleteIcon}`]: _extends({\n WebkitTapHighlightColor: 'transparent',\n color: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.26)` : alpha(theme.palette.text.primary, 0.26),\n fontSize: 22,\n cursor: 'pointer',\n margin: '0 5px 0 -6px',\n '&:hover': {\n color: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.4)` : alpha(theme.palette.text.primary, 0.4)\n }\n }, ownerState.size === 'small' && {\n fontSize: 16,\n marginRight: 4,\n marginLeft: -4\n }, ownerState.color !== 'default' && {\n color: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].contrastTextChannel} / 0.7)` : alpha(theme.palette[ownerState.color].contrastText, 0.7),\n '&:hover, &:active': {\n color: (theme.vars || theme).palette[ownerState.color].contrastText\n }\n })\n }, ownerState.size === 'small' && {\n height: 24\n }, ownerState.color !== 'default' && {\n backgroundColor: (theme.vars || theme).palette[ownerState.color].main,\n color: (theme.vars || theme).palette[ownerState.color].contrastText\n }, ownerState.onDelete && {\n [`&.${chipClasses.focusVisible}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n }\n }, ownerState.onDelete && ownerState.color !== 'default' && {\n [`&.${chipClasses.focusVisible}`]: {\n backgroundColor: (theme.vars || theme).palette[ownerState.color].dark\n }\n });\n}, ({\n theme,\n ownerState\n}) => _extends({}, ownerState.clickable && {\n userSelect: 'none',\n WebkitTapHighlightColor: 'transparent',\n cursor: 'pointer',\n '&:hover': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity)\n },\n [`&.${chipClasses.focusVisible}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n },\n '&:active': {\n boxShadow: (theme.vars || theme).shadows[1]\n }\n}, ownerState.clickable && ownerState.color !== 'default' && {\n [`&:hover, &.${chipClasses.focusVisible}`]: {\n backgroundColor: (theme.vars || theme).palette[ownerState.color].dark\n }\n}), ({\n theme,\n ownerState\n}) => _extends({}, ownerState.variant === 'outlined' && {\n backgroundColor: 'transparent',\n border: theme.vars ? `1px solid ${theme.vars.palette.Chip.defaultBorder}` : `1px solid ${theme.palette.mode === 'light' ? theme.palette.grey[400] : theme.palette.grey[700]}`,\n [`&.${chipClasses.clickable}:hover`]: {\n backgroundColor: (theme.vars || theme).palette.action.hover\n },\n [`&.${chipClasses.focusVisible}`]: {\n backgroundColor: (theme.vars || theme).palette.action.focus\n },\n [`& .${chipClasses.avatar}`]: {\n marginLeft: 4\n },\n [`& .${chipClasses.avatarSmall}`]: {\n marginLeft: 2\n },\n [`& .${chipClasses.icon}`]: {\n marginLeft: 4\n },\n [`& .${chipClasses.iconSmall}`]: {\n marginLeft: 2\n },\n [`& .${chipClasses.deleteIcon}`]: {\n marginRight: 5\n },\n [`& .${chipClasses.deleteIconSmall}`]: {\n marginRight: 3\n }\n}, ownerState.variant === 'outlined' && ownerState.color !== 'default' && {\n color: (theme.vars || theme).palette[ownerState.color].main,\n border: `1px solid ${theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.7)` : alpha(theme.palette[ownerState.color].main, 0.7)}`,\n [`&.${chipClasses.clickable}:hover`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity)\n },\n [`&.${chipClasses.focusVisible}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.focusOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.focusOpacity)\n },\n [`& .${chipClasses.deleteIcon}`]: {\n color: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.7)` : alpha(theme.palette[ownerState.color].main, 0.7),\n '&:hover, &:active': {\n color: (theme.vars || theme).palette[ownerState.color].main\n }\n }\n}));\nconst ChipLabel = styled('span', {\n name: 'MuiChip',\n slot: 'Label',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n const {\n size\n } = ownerState;\n return [styles.label, styles[`label${capitalize(size)}`]];\n }\n})(({\n ownerState\n}) => _extends({\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n paddingLeft: 12,\n paddingRight: 12,\n whiteSpace: 'nowrap'\n}, ownerState.size === 'small' && {\n paddingLeft: 8,\n paddingRight: 8\n}));\nfunction isDeleteKeyboardEvent(keyboardEvent) {\n return keyboardEvent.key === 'Backspace' || keyboardEvent.key === 'Delete';\n}\n\n/**\n * Chips represent complex entities in small blocks, such as a contact.\n */\nconst Chip = /*#__PURE__*/React.forwardRef(function Chip(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiChip'\n });\n const {\n avatar: avatarProp,\n className,\n clickable: clickableProp,\n color = 'default',\n component: ComponentProp,\n deleteIcon: deleteIconProp,\n disabled = false,\n icon: iconProp,\n label,\n onClick,\n onDelete,\n onKeyDown,\n onKeyUp,\n size = 'medium',\n variant = 'filled',\n tabIndex,\n skipFocusWhenDisabled = false // TODO v6: Rename to `focusableWhenDisabled`.\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const chipRef = React.useRef(null);\n const handleRef = useForkRef(chipRef, ref);\n const handleDeleteIconClick = event => {\n // Stop the event from bubbling up to the `Chip`\n event.stopPropagation();\n if (onDelete) {\n onDelete(event);\n }\n };\n const handleKeyDown = event => {\n // Ignore events from children of `Chip`.\n if (event.currentTarget === event.target && isDeleteKeyboardEvent(event)) {\n // Will be handled in keyUp, otherwise some browsers\n // might init navigation\n event.preventDefault();\n }\n if (onKeyDown) {\n onKeyDown(event);\n }\n };\n const handleKeyUp = event => {\n // Ignore events from children of `Chip`.\n if (event.currentTarget === event.target) {\n if (onDelete && isDeleteKeyboardEvent(event)) {\n onDelete(event);\n } else if (event.key === 'Escape' && chipRef.current) {\n chipRef.current.blur();\n }\n }\n if (onKeyUp) {\n onKeyUp(event);\n }\n };\n const clickable = clickableProp !== false && onClick ? true : clickableProp;\n const component = clickable || onDelete ? ButtonBase : ComponentProp || 'div';\n const ownerState = _extends({}, props, {\n component,\n disabled,\n size,\n color,\n iconColor: /*#__PURE__*/React.isValidElement(iconProp) ? iconProp.props.color || color : color,\n onDelete: !!onDelete,\n clickable,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n const moreProps = component === ButtonBase ? _extends({\n component: ComponentProp || 'div',\n focusVisibleClassName: classes.focusVisible\n }, onDelete && {\n disableRipple: true\n }) : {};\n let deleteIcon = null;\n if (onDelete) {\n deleteIcon = deleteIconProp && /*#__PURE__*/React.isValidElement(deleteIconProp) ? /*#__PURE__*/React.cloneElement(deleteIconProp, {\n className: clsx(deleteIconProp.props.className, classes.deleteIcon),\n onClick: handleDeleteIconClick\n }) : /*#__PURE__*/_jsx(CancelIcon, {\n className: clsx(classes.deleteIcon),\n onClick: handleDeleteIconClick\n });\n }\n let avatar = null;\n if (avatarProp && /*#__PURE__*/React.isValidElement(avatarProp)) {\n avatar = /*#__PURE__*/React.cloneElement(avatarProp, {\n className: clsx(classes.avatar, avatarProp.props.className)\n });\n }\n let icon = null;\n if (iconProp && /*#__PURE__*/React.isValidElement(iconProp)) {\n icon = /*#__PURE__*/React.cloneElement(iconProp, {\n className: clsx(classes.icon, iconProp.props.className)\n });\n }\n if (process.env.NODE_ENV !== 'production') {\n if (avatar && icon) {\n console.error('MUI: The Chip component can not handle the avatar ' + 'and the icon prop at the same time. Pick one.');\n }\n }\n return /*#__PURE__*/_jsxs(ChipRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n disabled: clickable && disabled ? true : undefined,\n onClick: onClick,\n onKeyDown: handleKeyDown,\n onKeyUp: handleKeyUp,\n ref: handleRef,\n tabIndex: skipFocusWhenDisabled && disabled ? -1 : tabIndex,\n ownerState: ownerState\n }, moreProps, other, {\n children: [avatar || icon, /*#__PURE__*/_jsx(ChipLabel, {\n className: clsx(classes.label),\n ownerState: ownerState,\n children: label\n }), deleteIcon]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Chip.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 Avatar element to display.\n */\n avatar: PropTypes.element,\n /**\n * This prop isn't supported.\n * Use the `component` prop if you need to change the children structure.\n */\n children: unsupportedProp,\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 * If `true`, the chip will appear clickable, and will raise when pressed,\n * even if the onClick prop is not defined.\n * If `false`, the chip will not appear clickable, even if onClick prop is defined.\n * This can be used, for example,\n * along with the component prop to indicate an anchor Chip is clickable.\n * Note: this controls the UI and does not affect the onClick event.\n */\n clickable: PropTypes.bool,\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 'default'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Override the default delete icon element. Shown only if `onDelete` is set.\n */\n deleteIcon: PropTypes.element,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * Icon element.\n */\n icon: PropTypes.element,\n /**\n * The content of the component.\n */\n label: PropTypes.node,\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n /**\n * Callback fired when the delete icon is clicked.\n * If set, the delete icon will be shown.\n */\n onDelete: PropTypes.func,\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n /**\n * @ignore\n */\n onKeyUp: PropTypes.func,\n /**\n * The size of the component.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n /**\n * If `true`, allows the disabled chip to escape focus.\n * If `false`, allows the disabled chip to receive focus.\n * @default false\n */\n skipFocusWhenDisabled: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * @ignore\n */\n tabIndex: PropTypes.number,\n /**\n * The variant to use.\n * @default 'filled'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['filled', 'outlined']), PropTypes.string])\n} : void 0;\nexport default Chip;","'use client';\n\nimport * as React from 'react';\nconst usePreviousProps = value => {\n const ref = React.useRef({});\n React.useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n};\nexport default usePreviousProps;"],"names":["createSvgIcon","_jsx","d","getChipUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","ChipRoot","styled","name","overridesResolver","props","styles","ownerState","color","iconColor","clickable","onDelete","size","variant","_defineProperty","concat","chipClasses","avatar","capitalize","icon","deleteIcon","root","deletable","_ref11","_extends2","theme","textColor","palette","mode","grey","_extends","maxWidth","fontFamily","typography","fontSize","pxToRem","display","alignItems","justifyContent","height","vars","text","primary","backgroundColor","action","selected","borderRadius","whiteSpace","transition","transitions","create","cursor","outline","textDecoration","border","padding","verticalAlign","boxSizing","disabled","opacity","disabledOpacity","pointerEvents","marginLeft","marginRight","width","Chip","defaultAvatarColor","avatarColorPrimary","contrastText","dark","avatarColorSecondary","secondary","avatarSmall","defaultIconColor","WebkitTapHighlightColor","primaryChannel","alpha","margin","contrastTextChannel","main","focusVisible","selectedChannel","selectedOpacity","focusOpacity","_ref14","_ref15","userSelect","hoverOpacity","boxShadow","shadows","_ref17","_ref18","_ref19","defaultBorder","hover","focus","iconSmall","deleteIconSmall","mainChannel","ChipLabel","label","_ref20","overflow","textOverflow","paddingLeft","paddingRight","isDeleteKeyboardEvent","keyboardEvent","key","React","inProps","ref","useThemeProps","avatarProp","className","clickableProp","_props$color","ComponentProp","component","deleteIconProp","_props$disabled","iconProp","onClick","onKeyDown","onKeyUp","_props$size","_props$variant","tabIndex","_props$skipFocusWhenD","skipFocusWhenDisabled","other","_objectWithoutPropertiesLoose","chipRef","handleRef","useForkRef","handleDeleteIconClick","event","stopPropagation","ButtonBase","classes","slots","composeClasses","useUtilityClasses","moreProps","focusVisibleClassName","disableRipple","clsx","CancelIcon","_jsxs","as","undefined","currentTarget","target","preventDefault","current","blur","children","value"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/225.b0001aa0.chunk.js b/portal-ui/build/static/js/225.b0001aa0.chunk.js deleted file mode 100644 index af3c40f60f..0000000000 --- a/portal-ui/build/static/js/225.b0001aa0.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[225],{81918:function(e,a,o){o.d(a,{Z:function(){return w}});var t=o(4942),c=o(63366),l=o(87462),r=o(72791),n=o(63733),i=o(94419),s=o(12065),d=o(76189),p=o(80184),v=(0,d.Z)((0,p.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"),u=o(42071),m=o(14036),b=o(95080),Z=o(31402),f=o(66934),g=o(75878),C=o(21217);function h(e){return(0,C.Z)("MuiChip",e)}var y=(0,g.Z)("MuiChip",["root","sizeSmall","sizeMedium","colorError","colorInfo","colorPrimary","colorSecondary","colorSuccess","colorWarning","disabled","clickable","clickableColorPrimary","clickableColorSecondary","deletable","deletableColorPrimary","deletableColorSecondary","outlined","filled","outlinedPrimary","outlinedSecondary","filledPrimary","filledSecondary","avatar","avatarSmall","avatarMedium","avatarColorPrimary","avatarColorSecondary","icon","iconSmall","iconMedium","iconColorPrimary","iconColorSecondary","label","labelSmall","labelMedium","deleteIcon","deleteIconSmall","deleteIconMedium","deleteIconColorPrimary","deleteIconColorSecondary","deleteIconOutlinedColorPrimary","deleteIconOutlinedColorSecondary","deleteIconFilledColorPrimary","deleteIconFilledColorSecondary","focusVisible"]),k=["avatar","className","clickable","color","component","deleteIcon","disabled","icon","label","onClick","onDelete","onKeyDown","onKeyUp","size","variant","tabIndex","skipFocusWhenDisabled"],S=(0,f.ZP)("div",{name:"MuiChip",slot:"Root",overridesResolver:function(e,a){var o=e.ownerState,c=o.color,l=o.iconColor,r=o.clickable,n=o.onDelete,i=o.size,s=o.variant;return[(0,t.Z)({},"& .".concat(y.avatar),a.avatar),(0,t.Z)({},"& .".concat(y.avatar),a["avatar".concat((0,m.Z)(i))]),(0,t.Z)({},"& .".concat(y.avatar),a["avatarColor".concat((0,m.Z)(c))]),(0,t.Z)({},"& .".concat(y.icon),a.icon),(0,t.Z)({},"& .".concat(y.icon),a["icon".concat((0,m.Z)(i))]),(0,t.Z)({},"& .".concat(y.icon),a["iconColor".concat((0,m.Z)(l))]),(0,t.Z)({},"& .".concat(y.deleteIcon),a.deleteIcon),(0,t.Z)({},"& .".concat(y.deleteIcon),a["deleteIcon".concat((0,m.Z)(i))]),(0,t.Z)({},"& .".concat(y.deleteIcon),a["deleteIconColor".concat((0,m.Z)(c))]),(0,t.Z)({},"& .".concat(y.deleteIcon),a["deleteIcon".concat((0,m.Z)(s),"Color").concat((0,m.Z)(c))]),a.root,a["size".concat((0,m.Z)(i))],a["color".concat((0,m.Z)(c))],r&&a.clickable,r&&"default"!==c&&a["clickableColor".concat((0,m.Z)(c),")")],n&&a.deletable,n&&"default"!==c&&a["deletableColor".concat((0,m.Z)(c))],a[s],a["".concat(s).concat((0,m.Z)(c))]]}})((function(e){var a,o=e.theme,c=e.ownerState,r="light"===o.palette.mode?o.palette.grey[700]:o.palette.grey[300];return(0,l.Z)((a={maxWidth:"100%",fontFamily:o.typography.fontFamily,fontSize:o.typography.pxToRem(13),display:"inline-flex",alignItems:"center",justifyContent:"center",height:32,color:(o.vars||o).palette.text.primary,backgroundColor:(o.vars||o).palette.action.selected,borderRadius:16,whiteSpace:"nowrap",transition:o.transitions.create(["background-color","box-shadow"]),outline:0,textDecoration:"none",border:0,padding:0,verticalAlign:"middle",boxSizing:"border-box"},(0,t.Z)(a,"&.".concat(y.disabled),{opacity:(o.vars||o).palette.action.disabledOpacity,pointerEvents:"none"}),(0,t.Z)(a,"& .".concat(y.avatar),{marginLeft:5,marginRight:-6,width:24,height:24,color:o.vars?o.vars.palette.Chip.defaultAvatarColor:r,fontSize:o.typography.pxToRem(12)}),(0,t.Z)(a,"& .".concat(y.avatarColorPrimary),{color:(o.vars||o).palette.primary.contrastText,backgroundColor:(o.vars||o).palette.primary.dark}),(0,t.Z)(a,"& .".concat(y.avatarColorSecondary),{color:(o.vars||o).palette.secondary.contrastText,backgroundColor:(o.vars||o).palette.secondary.dark}),(0,t.Z)(a,"& .".concat(y.avatarSmall),{marginLeft:4,marginRight:-4,width:18,height:18,fontSize:o.typography.pxToRem(10)}),(0,t.Z)(a,"& .".concat(y.icon),(0,l.Z)({marginLeft:5,marginRight:-6},"small"===c.size&&{fontSize:18,marginLeft:4,marginRight:-4},c.iconColor===c.color&&(0,l.Z)({color:o.vars?o.vars.palette.Chip.defaultIconColor:r},"default"!==c.color&&{color:"inherit"}))),(0,t.Z)(a,"& .".concat(y.deleteIcon),(0,l.Z)({WebkitTapHighlightColor:"transparent",color:o.vars?"rgba(".concat(o.vars.palette.text.primaryChannel," / 0.26)"):(0,s.Fq)(o.palette.text.primary,.26),fontSize:22,cursor:"pointer",margin:"0 5px 0 -6px","&:hover":{color:o.vars?"rgba(".concat(o.vars.palette.text.primaryChannel," / 0.4)"):(0,s.Fq)(o.palette.text.primary,.4)}},"small"===c.size&&{fontSize:16,marginRight:4,marginLeft:-4},"default"!==c.color&&{color:o.vars?"rgba(".concat(o.vars.palette[c.color].contrastTextChannel," / 0.7)"):(0,s.Fq)(o.palette[c.color].contrastText,.7),"&:hover, &:active":{color:(o.vars||o).palette[c.color].contrastText}})),a),"small"===c.size&&{height:24},"default"!==c.color&&{backgroundColor:(o.vars||o).palette[c.color].main,color:(o.vars||o).palette[c.color].contrastText},c.onDelete&&(0,t.Z)({},"&.".concat(y.focusVisible),{backgroundColor:o.vars?"rgba(".concat(o.vars.palette.action.selectedChannel," / calc(").concat(o.vars.palette.action.selectedOpacity," + ").concat(o.vars.palette.action.focusOpacity,"))"):(0,s.Fq)(o.palette.action.selected,o.palette.action.selectedOpacity+o.palette.action.focusOpacity)}),c.onDelete&&"default"!==c.color&&(0,t.Z)({},"&.".concat(y.focusVisible),{backgroundColor:(o.vars||o).palette[c.color].dark}))}),(function(e){var a,o=e.theme,c=e.ownerState;return(0,l.Z)({},c.clickable&&(a={userSelect:"none",WebkitTapHighlightColor:"transparent",cursor:"pointer","&:hover":{backgroundColor:o.vars?"rgba(".concat(o.vars.palette.action.selectedChannel," / calc(").concat(o.vars.palette.action.selectedOpacity," + ").concat(o.vars.palette.action.hoverOpacity,"))"):(0,s.Fq)(o.palette.action.selected,o.palette.action.selectedOpacity+o.palette.action.hoverOpacity)}},(0,t.Z)(a,"&.".concat(y.focusVisible),{backgroundColor:o.vars?"rgba(".concat(o.vars.palette.action.selectedChannel," / calc(").concat(o.vars.palette.action.selectedOpacity," + ").concat(o.vars.palette.action.focusOpacity,"))"):(0,s.Fq)(o.palette.action.selected,o.palette.action.selectedOpacity+o.palette.action.focusOpacity)}),(0,t.Z)(a,"&:active",{boxShadow:(o.vars||o).shadows[1]}),a),c.clickable&&"default"!==c.color&&(0,t.Z)({},"&:hover, &.".concat(y.focusVisible),{backgroundColor:(o.vars||o).palette[c.color].dark}))}),(function(e){var a,o,c=e.theme,r=e.ownerState;return(0,l.Z)({},"outlined"===r.variant&&(a={backgroundColor:"transparent",border:c.vars?"1px solid ".concat(c.vars.palette.Chip.defaultBorder):"1px solid ".concat("light"===c.palette.mode?c.palette.grey[400]:c.palette.grey[700])},(0,t.Z)(a,"&.".concat(y.clickable,":hover"),{backgroundColor:(c.vars||c).palette.action.hover}),(0,t.Z)(a,"&.".concat(y.focusVisible),{backgroundColor:(c.vars||c).palette.action.focus}),(0,t.Z)(a,"& .".concat(y.avatar),{marginLeft:4}),(0,t.Z)(a,"& .".concat(y.avatarSmall),{marginLeft:2}),(0,t.Z)(a,"& .".concat(y.icon),{marginLeft:4}),(0,t.Z)(a,"& .".concat(y.iconSmall),{marginLeft:2}),(0,t.Z)(a,"& .".concat(y.deleteIcon),{marginRight:5}),(0,t.Z)(a,"& .".concat(y.deleteIconSmall),{marginRight:3}),a),"outlined"===r.variant&&"default"!==r.color&&(o={color:(c.vars||c).palette[r.color].main,border:"1px solid ".concat(c.vars?"rgba(".concat(c.vars.palette[r.color].mainChannel," / 0.7)"):(0,s.Fq)(c.palette[r.color].main,.7))},(0,t.Z)(o,"&.".concat(y.clickable,":hover"),{backgroundColor:c.vars?"rgba(".concat(c.vars.palette[r.color].mainChannel," / ").concat(c.vars.palette.action.hoverOpacity,")"):(0,s.Fq)(c.palette[r.color].main,c.palette.action.hoverOpacity)}),(0,t.Z)(o,"&.".concat(y.focusVisible),{backgroundColor:c.vars?"rgba(".concat(c.vars.palette[r.color].mainChannel," / ").concat(c.vars.palette.action.focusOpacity,")"):(0,s.Fq)(c.palette[r.color].main,c.palette.action.focusOpacity)}),(0,t.Z)(o,"& .".concat(y.deleteIcon),{color:c.vars?"rgba(".concat(c.vars.palette[r.color].mainChannel," / 0.7)"):(0,s.Fq)(c.palette[r.color].main,.7),"&:hover, &:active":{color:(c.vars||c).palette[r.color].main}}),o))})),I=(0,f.ZP)("span",{name:"MuiChip",slot:"Label",overridesResolver:function(e,a){var o=e.ownerState.size;return[a.label,a["label".concat((0,m.Z)(o))]]}})((function(e){var a=e.ownerState;return(0,l.Z)({overflow:"hidden",textOverflow:"ellipsis",paddingLeft:12,paddingRight:12,whiteSpace:"nowrap"},"small"===a.size&&{paddingLeft:8,paddingRight:8})}));function x(e){return"Backspace"===e.key||"Delete"===e.key}var w=r.forwardRef((function(e,a){var o=(0,Z.Z)({props:e,name:"MuiChip"}),t=o.avatar,s=o.className,d=o.clickable,f=o.color,g=void 0===f?"default":f,C=o.component,y=o.deleteIcon,w=o.disabled,z=void 0!==w&&w,O=o.icon,R=o.label,F=o.onClick,D=o.onDelete,P=o.onKeyDown,L=o.onKeyUp,T=o.size,V=void 0===T?"medium":T,N=o.variant,E=void 0===N?"filled":N,M=o.tabIndex,q=o.skipFocusWhenDisabled,K=void 0!==q&&q,W=(0,c.Z)(o,k),j=r.useRef(null),U=(0,u.Z)(j,a),A=function(e){e.stopPropagation(),D&&D(e)},B=!(!1===d||!F)||d,H=B||D?b.Z:C||"div",_=(0,l.Z)({},o,{component:H,disabled:z,size:V,color:g,iconColor:r.isValidElement(O)&&O.props.color||g,onDelete:!!D,clickable:B,variant:E}),G=function(e){var a=e.classes,o=e.disabled,t=e.size,c=e.color,l=e.iconColor,r=e.onDelete,n=e.clickable,s=e.variant,d={root:["root",s,o&&"disabled","size".concat((0,m.Z)(t)),"color".concat((0,m.Z)(c)),n&&"clickable",n&&"clickableColor".concat((0,m.Z)(c)),r&&"deletable",r&&"deletableColor".concat((0,m.Z)(c)),"".concat(s).concat((0,m.Z)(c))],label:["label","label".concat((0,m.Z)(t))],avatar:["avatar","avatar".concat((0,m.Z)(t)),"avatarColor".concat((0,m.Z)(c))],icon:["icon","icon".concat((0,m.Z)(t)),"iconColor".concat((0,m.Z)(l))],deleteIcon:["deleteIcon","deleteIcon".concat((0,m.Z)(t)),"deleteIconColor".concat((0,m.Z)(c)),"deleteIcon".concat((0,m.Z)(s),"Color").concat((0,m.Z)(c))]};return(0,i.Z)(d,h,a)}(_),J=H===b.Z?(0,l.Z)({component:C||"div",focusVisibleClassName:G.focusVisible},D&&{disableRipple:!0}):{},Q=null;D&&(Q=y&&r.isValidElement(y)?r.cloneElement(y,{className:(0,n.Z)(y.props.className,G.deleteIcon),onClick:A}):(0,p.jsx)(v,{className:(0,n.Z)(G.deleteIcon),onClick:A}));var X=null;t&&r.isValidElement(t)&&(X=r.cloneElement(t,{className:(0,n.Z)(G.avatar,t.props.className)}));var Y=null;return O&&r.isValidElement(O)&&(Y=r.cloneElement(O,{className:(0,n.Z)(G.icon,O.props.className)})),(0,p.jsxs)(S,(0,l.Z)({as:H,className:(0,n.Z)(G.root,s),disabled:!(!B||!z)||void 0,onClick:F,onKeyDown:function(e){e.currentTarget===e.target&&x(e)&&e.preventDefault(),P&&P(e)},onKeyUp:function(e){e.currentTarget===e.target&&(D&&x(e)?D(e):"Escape"===e.key&&j.current&&j.current.blur()),L&&L(e)},ref:U,tabIndex:K&&z?-1:M,ownerState:_},J,W,{children:[X||Y,(0,p.jsx)(I,{className:(0,n.Z)(G.label),ownerState:_,children:R}),Q]}))}))},36229:function(e,a,o){var t=o(72791);a.Z=function(e){var a=t.useRef({});return t.useEffect((function(){a.current=e})),a.current}}}]); -//# sourceMappingURL=225.b0001aa0.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/225.b0001aa0.chunk.js.map b/portal-ui/build/static/js/225.b0001aa0.chunk.js.map deleted file mode 100644 index f855e7a6e4..0000000000 --- a/portal-ui/build/static/js/225.b0001aa0.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/225.b0001aa0.chunk.js","mappings":"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","sources":["../node_modules/@mui/material/internal/svg-icons/Cancel.js","../node_modules/@mui/material/Chip/chipClasses.js","../node_modules/@mui/material/Chip/Chip.js","../node_modules/@mui/utils/esm/usePreviousProps.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M12 2C6.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');","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getChipUtilityClass(slot) {\n return generateUtilityClass('MuiChip', slot);\n}\nconst chipClasses = generateUtilityClasses('MuiChip', ['root', 'sizeSmall', 'sizeMedium', 'colorError', 'colorInfo', 'colorPrimary', 'colorSecondary', 'colorSuccess', 'colorWarning', 'disabled', 'clickable', 'clickableColorPrimary', 'clickableColorSecondary', 'deletable', 'deletableColorPrimary', 'deletableColorSecondary', 'outlined', 'filled', 'outlinedPrimary', 'outlinedSecondary', 'filledPrimary', 'filledSecondary', 'avatar', 'avatarSmall', 'avatarMedium', 'avatarColorPrimary', 'avatarColorSecondary', 'icon', 'iconSmall', 'iconMedium', 'iconColorPrimary', 'iconColorSecondary', 'label', 'labelSmall', 'labelMedium', 'deleteIcon', 'deleteIconSmall', 'deleteIconMedium', 'deleteIconColorPrimary', 'deleteIconColorSecondary', 'deleteIconOutlinedColorPrimary', 'deleteIconOutlinedColorSecondary', 'deleteIconFilledColorPrimary', 'deleteIconFilledColorSecondary', 'focusVisible']);\nexport default chipClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"avatar\", \"className\", \"clickable\", \"color\", \"component\", \"deleteIcon\", \"disabled\", \"icon\", \"label\", \"onClick\", \"onDelete\", \"onKeyDown\", \"onKeyUp\", \"size\", \"variant\", \"tabIndex\", \"skipFocusWhenDisabled\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport { alpha } from '@mui/system';\nimport CancelIcon from '../internal/svg-icons/Cancel';\nimport useForkRef from '../utils/useForkRef';\nimport unsupportedProp from '../utils/unsupportedProp';\nimport capitalize from '../utils/capitalize';\nimport ButtonBase from '../ButtonBase';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport chipClasses, { getChipUtilityClass } from './chipClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disabled,\n size,\n color,\n iconColor,\n onDelete,\n clickable,\n variant\n } = ownerState;\n const slots = {\n root: ['root', variant, disabled && 'disabled', `size${capitalize(size)}`, `color${capitalize(color)}`, clickable && 'clickable', clickable && `clickableColor${capitalize(color)}`, onDelete && 'deletable', onDelete && `deletableColor${capitalize(color)}`, `${variant}${capitalize(color)}`],\n label: ['label', `label${capitalize(size)}`],\n avatar: ['avatar', `avatar${capitalize(size)}`, `avatarColor${capitalize(color)}`],\n icon: ['icon', `icon${capitalize(size)}`, `iconColor${capitalize(iconColor)}`],\n deleteIcon: ['deleteIcon', `deleteIcon${capitalize(size)}`, `deleteIconColor${capitalize(color)}`, `deleteIcon${capitalize(variant)}Color${capitalize(color)}`]\n };\n return composeClasses(slots, getChipUtilityClass, classes);\n};\nconst ChipRoot = styled('div', {\n name: 'MuiChip',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n const {\n color,\n iconColor,\n clickable,\n onDelete,\n size,\n variant\n } = ownerState;\n return [{\n [`& .${chipClasses.avatar}`]: styles.avatar\n }, {\n [`& .${chipClasses.avatar}`]: styles[`avatar${capitalize(size)}`]\n }, {\n [`& .${chipClasses.avatar}`]: styles[`avatarColor${capitalize(color)}`]\n }, {\n [`& .${chipClasses.icon}`]: styles.icon\n }, {\n [`& .${chipClasses.icon}`]: styles[`icon${capitalize(size)}`]\n }, {\n [`& .${chipClasses.icon}`]: styles[`iconColor${capitalize(iconColor)}`]\n }, {\n [`& .${chipClasses.deleteIcon}`]: styles.deleteIcon\n }, {\n [`& .${chipClasses.deleteIcon}`]: styles[`deleteIcon${capitalize(size)}`]\n }, {\n [`& .${chipClasses.deleteIcon}`]: styles[`deleteIconColor${capitalize(color)}`]\n }, {\n [`& .${chipClasses.deleteIcon}`]: styles[`deleteIcon${capitalize(variant)}Color${capitalize(color)}`]\n }, styles.root, styles[`size${capitalize(size)}`], styles[`color${capitalize(color)}`], clickable && styles.clickable, clickable && color !== 'default' && styles[`clickableColor${capitalize(color)})`], onDelete && styles.deletable, onDelete && color !== 'default' && styles[`deletableColor${capitalize(color)}`], styles[variant], styles[`${variant}${capitalize(color)}`]];\n }\n})(({\n theme,\n ownerState\n}) => {\n const textColor = theme.palette.mode === 'light' ? theme.palette.grey[700] : theme.palette.grey[300];\n return _extends({\n maxWidth: '100%',\n fontFamily: theme.typography.fontFamily,\n fontSize: theme.typography.pxToRem(13),\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: 32,\n color: (theme.vars || theme).palette.text.primary,\n backgroundColor: (theme.vars || theme).palette.action.selected,\n borderRadius: 32 / 2,\n whiteSpace: 'nowrap',\n transition: theme.transitions.create(['background-color', 'box-shadow']),\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n textDecoration: 'none',\n border: 0,\n // Remove `button` border\n padding: 0,\n // Remove `button` padding\n verticalAlign: 'middle',\n boxSizing: 'border-box',\n [`&.${chipClasses.disabled}`]: {\n opacity: (theme.vars || theme).palette.action.disabledOpacity,\n pointerEvents: 'none'\n },\n [`& .${chipClasses.avatar}`]: {\n marginLeft: 5,\n marginRight: -6,\n width: 24,\n height: 24,\n color: theme.vars ? theme.vars.palette.Chip.defaultAvatarColor : textColor,\n fontSize: theme.typography.pxToRem(12)\n },\n [`& .${chipClasses.avatarColorPrimary}`]: {\n color: (theme.vars || theme).palette.primary.contrastText,\n backgroundColor: (theme.vars || theme).palette.primary.dark\n },\n [`& .${chipClasses.avatarColorSecondary}`]: {\n color: (theme.vars || theme).palette.secondary.contrastText,\n backgroundColor: (theme.vars || theme).palette.secondary.dark\n },\n [`& .${chipClasses.avatarSmall}`]: {\n marginLeft: 4,\n marginRight: -4,\n width: 18,\n height: 18,\n fontSize: theme.typography.pxToRem(10)\n },\n [`& .${chipClasses.icon}`]: _extends({\n marginLeft: 5,\n marginRight: -6\n }, ownerState.size === 'small' && {\n fontSize: 18,\n marginLeft: 4,\n marginRight: -4\n }, ownerState.iconColor === ownerState.color && _extends({\n color: theme.vars ? theme.vars.palette.Chip.defaultIconColor : textColor\n }, ownerState.color !== 'default' && {\n color: 'inherit'\n })),\n [`& .${chipClasses.deleteIcon}`]: _extends({\n WebkitTapHighlightColor: 'transparent',\n color: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.26)` : alpha(theme.palette.text.primary, 0.26),\n fontSize: 22,\n cursor: 'pointer',\n margin: '0 5px 0 -6px',\n '&:hover': {\n color: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.4)` : alpha(theme.palette.text.primary, 0.4)\n }\n }, ownerState.size === 'small' && {\n fontSize: 16,\n marginRight: 4,\n marginLeft: -4\n }, ownerState.color !== 'default' && {\n color: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].contrastTextChannel} / 0.7)` : alpha(theme.palette[ownerState.color].contrastText, 0.7),\n '&:hover, &:active': {\n color: (theme.vars || theme).palette[ownerState.color].contrastText\n }\n })\n }, ownerState.size === 'small' && {\n height: 24\n }, ownerState.color !== 'default' && {\n backgroundColor: (theme.vars || theme).palette[ownerState.color].main,\n color: (theme.vars || theme).palette[ownerState.color].contrastText\n }, ownerState.onDelete && {\n [`&.${chipClasses.focusVisible}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n }\n }, ownerState.onDelete && ownerState.color !== 'default' && {\n [`&.${chipClasses.focusVisible}`]: {\n backgroundColor: (theme.vars || theme).palette[ownerState.color].dark\n }\n });\n}, ({\n theme,\n ownerState\n}) => _extends({}, ownerState.clickable && {\n userSelect: 'none',\n WebkitTapHighlightColor: 'transparent',\n cursor: 'pointer',\n '&:hover': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity)\n },\n [`&.${chipClasses.focusVisible}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n },\n '&:active': {\n boxShadow: (theme.vars || theme).shadows[1]\n }\n}, ownerState.clickable && ownerState.color !== 'default' && {\n [`&:hover, &.${chipClasses.focusVisible}`]: {\n backgroundColor: (theme.vars || theme).palette[ownerState.color].dark\n }\n}), ({\n theme,\n ownerState\n}) => _extends({}, ownerState.variant === 'outlined' && {\n backgroundColor: 'transparent',\n border: theme.vars ? `1px solid ${theme.vars.palette.Chip.defaultBorder}` : `1px solid ${theme.palette.mode === 'light' ? theme.palette.grey[400] : theme.palette.grey[700]}`,\n [`&.${chipClasses.clickable}:hover`]: {\n backgroundColor: (theme.vars || theme).palette.action.hover\n },\n [`&.${chipClasses.focusVisible}`]: {\n backgroundColor: (theme.vars || theme).palette.action.focus\n },\n [`& .${chipClasses.avatar}`]: {\n marginLeft: 4\n },\n [`& .${chipClasses.avatarSmall}`]: {\n marginLeft: 2\n },\n [`& .${chipClasses.icon}`]: {\n marginLeft: 4\n },\n [`& .${chipClasses.iconSmall}`]: {\n marginLeft: 2\n },\n [`& .${chipClasses.deleteIcon}`]: {\n marginRight: 5\n },\n [`& .${chipClasses.deleteIconSmall}`]: {\n marginRight: 3\n }\n}, ownerState.variant === 'outlined' && ownerState.color !== 'default' && {\n color: (theme.vars || theme).palette[ownerState.color].main,\n border: `1px solid ${theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.7)` : alpha(theme.palette[ownerState.color].main, 0.7)}`,\n [`&.${chipClasses.clickable}:hover`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity)\n },\n [`&.${chipClasses.focusVisible}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.focusOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.focusOpacity)\n },\n [`& .${chipClasses.deleteIcon}`]: {\n color: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.7)` : alpha(theme.palette[ownerState.color].main, 0.7),\n '&:hover, &:active': {\n color: (theme.vars || theme).palette[ownerState.color].main\n }\n }\n}));\nconst ChipLabel = styled('span', {\n name: 'MuiChip',\n slot: 'Label',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n const {\n size\n } = ownerState;\n return [styles.label, styles[`label${capitalize(size)}`]];\n }\n})(({\n ownerState\n}) => _extends({\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n paddingLeft: 12,\n paddingRight: 12,\n whiteSpace: 'nowrap'\n}, ownerState.size === 'small' && {\n paddingLeft: 8,\n paddingRight: 8\n}));\nfunction isDeleteKeyboardEvent(keyboardEvent) {\n return keyboardEvent.key === 'Backspace' || keyboardEvent.key === 'Delete';\n}\n\n/**\n * Chips represent complex entities in small blocks, such as a contact.\n */\nconst Chip = /*#__PURE__*/React.forwardRef(function Chip(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiChip'\n });\n const {\n avatar: avatarProp,\n className,\n clickable: clickableProp,\n color = 'default',\n component: ComponentProp,\n deleteIcon: deleteIconProp,\n disabled = false,\n icon: iconProp,\n label,\n onClick,\n onDelete,\n onKeyDown,\n onKeyUp,\n size = 'medium',\n variant = 'filled',\n tabIndex,\n skipFocusWhenDisabled = false // TODO v6: Rename to `focusableWhenDisabled`.\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const chipRef = React.useRef(null);\n const handleRef = useForkRef(chipRef, ref);\n const handleDeleteIconClick = event => {\n // Stop the event from bubbling up to the `Chip`\n event.stopPropagation();\n if (onDelete) {\n onDelete(event);\n }\n };\n const handleKeyDown = event => {\n // Ignore events from children of `Chip`.\n if (event.currentTarget === event.target && isDeleteKeyboardEvent(event)) {\n // Will be handled in keyUp, otherwise some browsers\n // might init navigation\n event.preventDefault();\n }\n if (onKeyDown) {\n onKeyDown(event);\n }\n };\n const handleKeyUp = event => {\n // Ignore events from children of `Chip`.\n if (event.currentTarget === event.target) {\n if (onDelete && isDeleteKeyboardEvent(event)) {\n onDelete(event);\n } else if (event.key === 'Escape' && chipRef.current) {\n chipRef.current.blur();\n }\n }\n if (onKeyUp) {\n onKeyUp(event);\n }\n };\n const clickable = clickableProp !== false && onClick ? true : clickableProp;\n const component = clickable || onDelete ? ButtonBase : ComponentProp || 'div';\n const ownerState = _extends({}, props, {\n component,\n disabled,\n size,\n color,\n iconColor: /*#__PURE__*/React.isValidElement(iconProp) ? iconProp.props.color || color : color,\n onDelete: !!onDelete,\n clickable,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n const moreProps = component === ButtonBase ? _extends({\n component: ComponentProp || 'div',\n focusVisibleClassName: classes.focusVisible\n }, onDelete && {\n disableRipple: true\n }) : {};\n let deleteIcon = null;\n if (onDelete) {\n deleteIcon = deleteIconProp && /*#__PURE__*/React.isValidElement(deleteIconProp) ? /*#__PURE__*/React.cloneElement(deleteIconProp, {\n className: clsx(deleteIconProp.props.className, classes.deleteIcon),\n onClick: handleDeleteIconClick\n }) : /*#__PURE__*/_jsx(CancelIcon, {\n className: clsx(classes.deleteIcon),\n onClick: handleDeleteIconClick\n });\n }\n let avatar = null;\n if (avatarProp && /*#__PURE__*/React.isValidElement(avatarProp)) {\n avatar = /*#__PURE__*/React.cloneElement(avatarProp, {\n className: clsx(classes.avatar, avatarProp.props.className)\n });\n }\n let icon = null;\n if (iconProp && /*#__PURE__*/React.isValidElement(iconProp)) {\n icon = /*#__PURE__*/React.cloneElement(iconProp, {\n className: clsx(classes.icon, iconProp.props.className)\n });\n }\n if (process.env.NODE_ENV !== 'production') {\n if (avatar && icon) {\n console.error('MUI: The Chip component can not handle the avatar ' + 'and the icon prop at the same time. Pick one.');\n }\n }\n return /*#__PURE__*/_jsxs(ChipRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n disabled: clickable && disabled ? true : undefined,\n onClick: onClick,\n onKeyDown: handleKeyDown,\n onKeyUp: handleKeyUp,\n ref: handleRef,\n tabIndex: skipFocusWhenDisabled && disabled ? -1 : tabIndex,\n ownerState: ownerState\n }, moreProps, other, {\n children: [avatar || icon, /*#__PURE__*/_jsx(ChipLabel, {\n className: clsx(classes.label),\n ownerState: ownerState,\n children: label\n }), deleteIcon]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Chip.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 Avatar element to display.\n */\n avatar: PropTypes.element,\n /**\n * This prop isn't supported.\n * Use the `component` prop if you need to change the children structure.\n */\n children: unsupportedProp,\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 * If `true`, the chip will appear clickable, and will raise when pressed,\n * even if the onClick prop is not defined.\n * If `false`, the chip will not appear clickable, even if onClick prop is defined.\n * This can be used, for example,\n * along with the component prop to indicate an anchor Chip is clickable.\n * Note: this controls the UI and does not affect the onClick event.\n */\n clickable: PropTypes.bool,\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 'default'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Override the default delete icon element. Shown only if `onDelete` is set.\n */\n deleteIcon: PropTypes.element,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * Icon element.\n */\n icon: PropTypes.element,\n /**\n * The content of the component.\n */\n label: PropTypes.node,\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n /**\n * Callback fired when the delete icon is clicked.\n * If set, the delete icon will be shown.\n */\n onDelete: PropTypes.func,\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n /**\n * @ignore\n */\n onKeyUp: PropTypes.func,\n /**\n * The size of the component.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n /**\n * If `true`, allows the disabled chip to escape focus.\n * If `false`, allows the disabled chip to receive focus.\n * @default false\n */\n skipFocusWhenDisabled: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * @ignore\n */\n tabIndex: PropTypes.number,\n /**\n * The variant to use.\n * @default 'filled'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['filled', 'outlined']), PropTypes.string])\n} : void 0;\nexport default Chip;","'use client';\n\nimport * as React from 'react';\nconst usePreviousProps = value => {\n const ref = React.useRef({});\n React.useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n};\nexport default usePreviousProps;"],"names":["createSvgIcon","_jsx","d","getChipUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","ChipRoot","styled","name","overridesResolver","props","styles","ownerState","color","iconColor","clickable","onDelete","size","variant","_defineProperty","concat","chipClasses","avatar","capitalize","icon","deleteIcon","root","deletable","_ref11","_extends2","theme","textColor","palette","mode","grey","_extends","maxWidth","fontFamily","typography","fontSize","pxToRem","display","alignItems","justifyContent","height","vars","text","primary","backgroundColor","action","selected","borderRadius","whiteSpace","transition","transitions","create","outline","textDecoration","border","padding","verticalAlign","boxSizing","disabled","opacity","disabledOpacity","pointerEvents","marginLeft","marginRight","width","Chip","defaultAvatarColor","avatarColorPrimary","contrastText","dark","avatarColorSecondary","secondary","avatarSmall","defaultIconColor","WebkitTapHighlightColor","primaryChannel","alpha","cursor","margin","contrastTextChannel","main","focusVisible","selectedChannel","selectedOpacity","focusOpacity","_ref14","_ref15","userSelect","hoverOpacity","boxShadow","shadows","_ref17","_ref18","_ref19","defaultBorder","hover","focus","iconSmall","deleteIconSmall","mainChannel","ChipLabel","label","_ref20","overflow","textOverflow","paddingLeft","paddingRight","isDeleteKeyboardEvent","keyboardEvent","key","React","inProps","ref","useThemeProps","avatarProp","className","clickableProp","_props$color","ComponentProp","component","deleteIconProp","_props$disabled","iconProp","onClick","onKeyDown","onKeyUp","_props$size","_props$variant","tabIndex","_props$skipFocusWhenD","skipFocusWhenDisabled","other","_objectWithoutPropertiesLoose","chipRef","handleRef","useForkRef","handleDeleteIconClick","event","stopPropagation","ButtonBase","classes","slots","composeClasses","useUtilityClasses","moreProps","focusVisibleClassName","disableRipple","clsx","CancelIcon","_jsxs","as","undefined","currentTarget","target","preventDefault","current","blur","children","value"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/2338.0676e9a1.chunk.js b/portal-ui/build/static/js/2338.6e3ddba5.chunk.js similarity index 97% rename from portal-ui/build/static/js/2338.0676e9a1.chunk.js rename to portal-ui/build/static/js/2338.6e3ddba5.chunk.js index 5261a16d49..e6f83591b8 100644 --- a/portal-ui/build/static/js/2338.0676e9a1.chunk.js +++ b/portal-ui/build/static/js/2338.6e3ddba5.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2338],{72338:function(e,t,n){n.r(t),n.d(t,{default:function(){return b}});var o=n(72791),r=n(57689),i=n(64554),a=n(34345),s=n(56087),c=n(17691),l=n(26181),m=n.n(l),u=n(80184),g=c.ZP.button((function(e){var t=e.theme;return{background:m()(t,"boxBackground","#FFF"),border:"".concat(m()(t,"borderColor","#E2E2E2")," 1px solid"),borderRadius:5,height:80,display:"flex",alignItems:"center",justifyContent:"start",marginBottom:16,marginRight:8,cursor:"pointer",overflow:"hidden","&:hover":{backgroundColor:m()(t,"buttons.regular.hover.background","#ebebeb")},"& .imageContainer":{width:80,"& .min-icon":{maxWidth:46,maxHeight:46}},"& .tierNotifTitle":{color:m()(t,"buttons.callAction.enabled.background","#07193E"),fontSize:16,fontFamily:"Inter,sans-serif",paddingLeft:18,fontWeight:"bold"}}})),d=function(e){var t=e.onClick,n=e.icon,o=e.name;return(0,u.jsxs)(g,{onClick:function(){t(o)},children:[(0,u.jsx)("span",{className:"imageContainer",children:n}),(0,u.jsx)("span",{className:"tierNotifTitle",children:o})]})},f=n(29945),h=n(47974),j=n(99670),p=n(87995),x=n(81551),b=function(){var e=(0,r.s0)(),t=(0,x.TL)();return(0,o.useEffect)((function(){t((0,p.Sc)("tier-type-selector"))}),[t]),(0,u.jsxs)(o.Fragment,{children:[(0,u.jsx)(h.Z,{label:(0,u.jsx)(o.Fragment,{children:(0,u.jsx)(f.hbI,{label:"Tier Types",onClick:function(){return e(s.gA.TIERS)}})}),actions:(0,u.jsx)(j.Z,{})}),(0,u.jsx)(f.Xgh,{children:(0,u.jsx)(f.ltY,{title:"Select Tier Type",icon:(0,u.jsx)(f.y2Y,{}),helpBox:(0,u.jsx)(f.KfX,{iconComponent:(0,u.jsx)(f.y2Y,{}),title:"Tier Types",help:(0,u.jsxs)(o.Fragment,{children:["MinIO supports creating object transition lifecycle management rules, where MinIO can automatically move an object to a remote storage \u201ctier\u201d.",(0,u.jsx)("br",{}),(0,u.jsx)("br",{}),"MinIO supports the following Tier types:",(0,u.jsx)("br",{}),(0,u.jsxs)("ul",{children:[(0,u.jsx)("li",{children:(0,u.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:"noopener",children:"MinIO or other S3-compatible storage"})}),(0,u.jsx)("li",{children:(0,u.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:"noopener",children:"Amazon S3"})}),(0,u.jsx)("li",{children:(0,u.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:"noopener",children:"Google Cloud Storage"})}),(0,u.jsx)("li",{children:(0,u.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:"noopener",children:"Microsoft Azure Blob Storage"})})]})]})}),children:(0,u.jsx)(i.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:a.Bh.map((function(t,n){return(0,u.jsx)(d,{name:t.targetTitle,onClick:function(){var n;n=t.serviceName,e("".concat(s.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 l},Pp:function(){return i},b2:function(){return s},f0:function(){return a},vB:function(){return c}});var o=n(29945),r=n(80184),i="minio",a="gcs",s="s3",c="azure",l=[{serviceName:i,targetTitle:"MinIO",logo:(0,r.jsx)(o.$E9,{}),logoXs:(0,r.jsx)(o.YEz,{})},{serviceName:a,targetTitle:"Google Cloud Storage",logo:(0,r.jsx)(o.UQG,{}),logoXs:(0,r.jsx)(o.Vwu,{})},{serviceName:s,targetTitle:"AWS S3",logo:(0,r.jsx)(o.feu,{}),logoXs:(0,r.jsx)(o.Xj3,{})},{serviceName:c,targetTitle:"Azure",logo:(0,r.jsx)(o.jze,{}),logoXs:(0,r.jsx)(o.nAe,{})}]}}]); -//# sourceMappingURL=2338.0676e9a1.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2338],{72338:function(e,t,n){n.r(t),n.d(t,{default:function(){return b}});var o=n(72791),r=n(57689),i=n(64554),a=n(34345),s=n(56087),c=n(17691),l=n(26181),m=n.n(l),u=n(80184),g=c.ZP.button((function(e){var t=e.theme;return{background:m()(t,"boxBackground","#FFF"),border:"".concat(m()(t,"borderColor","#E2E2E2")," 1px solid"),borderRadius:5,height:80,display:"flex",alignItems:"center",justifyContent:"start",marginBottom:16,marginRight:8,cursor:"pointer",overflow:"hidden","&:hover":{backgroundColor:m()(t,"buttons.regular.hover.background","#ebebeb")},"& .imageContainer":{width:80,"& .min-icon":{maxWidth:46,maxHeight:46}},"& .tierNotifTitle":{color:m()(t,"buttons.callAction.enabled.background","#07193E"),fontSize:16,fontFamily:"Inter,sans-serif",paddingLeft:18,fontWeight:"bold"}}})),d=function(e){var t=e.onClick,n=e.icon,o=e.name;return(0,u.jsxs)(g,{onClick:function(){t(o)},children:[(0,u.jsx)("span",{className:"imageContainer",children:n}),(0,u.jsx)("span",{className:"tierNotifTitle",children:o})]})},f=n(29945),h=n(47974),j=n(99670),p=n(87995),x=n(44690),b=function(){var e=(0,r.s0)(),t=(0,x.TL)();return(0,o.useEffect)((function(){t((0,p.Sc)("tier-type-selector"))}),[t]),(0,u.jsxs)(o.Fragment,{children:[(0,u.jsx)(h.Z,{label:(0,u.jsx)(o.Fragment,{children:(0,u.jsx)(f.hbI,{label:"Tier Types",onClick:function(){return e(s.gA.TIERS)}})}),actions:(0,u.jsx)(j.Z,{})}),(0,u.jsx)(f.Xgh,{children:(0,u.jsx)(f.ltY,{title:"Select Tier Type",icon:(0,u.jsx)(f.y2Y,{}),helpBox:(0,u.jsx)(f.KfX,{iconComponent:(0,u.jsx)(f.y2Y,{}),title:"Tier Types",help:(0,u.jsxs)(o.Fragment,{children:["MinIO supports creating object transition lifecycle management rules, where MinIO can automatically move an object to a remote storage \u201ctier\u201d.",(0,u.jsx)("br",{}),(0,u.jsx)("br",{}),"MinIO supports the following Tier types:",(0,u.jsx)("br",{}),(0,u.jsxs)("ul",{children:[(0,u.jsx)("li",{children:(0,u.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:"noopener",children:"MinIO or other S3-compatible storage"})}),(0,u.jsx)("li",{children:(0,u.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:"noopener",children:"Amazon S3"})}),(0,u.jsx)("li",{children:(0,u.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:"noopener",children:"Google Cloud Storage"})}),(0,u.jsx)("li",{children:(0,u.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:"noopener",children:"Microsoft Azure Blob Storage"})})]})]})}),children:(0,u.jsx)(i.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:a.Bh.map((function(t,n){return(0,u.jsx)(d,{name:t.targetTitle,onClick:function(){var n;n=t.serviceName,e("".concat(s.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 l},Pp:function(){return i},b2:function(){return s},f0:function(){return a},vB:function(){return c}});var o=n(29945),r=n(80184),i="minio",a="gcs",s="s3",c="azure",l=[{serviceName:i,targetTitle:"MinIO",logo:(0,r.jsx)(o.$E9,{}),logoXs:(0,r.jsx)(o.YEz,{})},{serviceName:a,targetTitle:"Google Cloud Storage",logo:(0,r.jsx)(o.UQG,{}),logoXs:(0,r.jsx)(o.Vwu,{})},{serviceName:s,targetTitle:"AWS S3",logo:(0,r.jsx)(o.feu,{}),logoXs:(0,r.jsx)(o.Xj3,{})},{serviceName:c,targetTitle:"Azure",logo:(0,r.jsx)(o.jze,{}),logoXs:(0,r.jsx)(o.nAe,{})}]}}]); +//# sourceMappingURL=2338.6e3ddba5.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/2338.0676e9a1.chunk.js.map b/portal-ui/build/static/js/2338.6e3ddba5.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/2338.0676e9a1.chunk.js.map rename to portal-ui/build/static/js/2338.6e3ddba5.chunk.js.map index 31e60cff5b..f87cd12fe3 100644 --- a/portal-ui/build/static/js/2338.0676e9a1.chunk.js.map +++ b/portal-ui/build/static/js/2338.6e3ddba5.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/2338.0676e9a1.chunk.js","mappings":"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","sources":["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) 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 styled from \"styled-components\";\nimport get from \"lodash/get\";\n\nconst TierButtonBase = styled.button(({ theme }) => ({\n background: get(theme, \"boxBackground\", \"#FFF\"),\n border: `${get(theme, \"borderColor\", \"#E2E2E2\")} 1px solid`,\n borderRadius: 5,\n height: 80,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"start\",\n marginBottom: 16,\n marginRight: 8,\n cursor: \"pointer\",\n overflow: \"hidden\",\n \"&:hover\": {\n backgroundColor: get(theme, \"buttons.regular.hover.background\", \"#ebebeb\"),\n },\n \"& .imageContainer\": {\n width: 80,\n \"& .min-icon\": {\n maxWidth: 46,\n maxHeight: 46,\n },\n },\n \"& .tierNotifTitle\": {\n color: get(theme, \"buttons.callAction.enabled.background\", \"#07193E\"),\n fontSize: 16,\n fontFamily: \"Inter,sans-serif\",\n paddingLeft: 18,\n fontWeight: \"bold\",\n },\n}));\n\ntype TierTypeCardProps = {\n onClick: (name: string) => void;\n icon?: any;\n name: string;\n};\nconst TierTypeCard = ({ onClick, icon, name }: TierTypeCardProps) => {\n return (\n {\n onClick(name);\n }}\n >\n {icon}\n {name}\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, useEffect } 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 TierTypeCard from \"./TierTypeCard\";\nimport { BackLink, FormLayout, HelpBox, PageLayout, TiersIcon } from \"mds\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../../HelpMenu\";\nimport { setHelpName } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\nconst TierTypeSelector = () => {\n const navigate = useNavigate();\n\n const typeSelect = (selectName: string) => {\n navigate(`${IAM_PAGES.TIERS_ADD}/${selectName}`);\n };\n const dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(setHelpName(\"tier-type-selector\"));\n }, [dispatch]);\n\n return (\n \n \n navigate(IAM_PAGES.TIERS)}\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 MinIO or other S3-compatible storage\n \n
  • \n
  • \n \n Amazon S3\n \n
  • \n
  • \n \n Google Cloud Storage\n \n
  • \n
  • \n \n Microsoft Azure Blob Storage\n \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":["TierButtonBase","styled","button","_ref","theme","background","get","border","concat","borderRadius","height","display","alignItems","justifyContent","marginBottom","marginRight","cursor","overflow","backgroundColor","width","maxWidth","maxHeight","color","fontSize","fontFamily","paddingLeft","fontWeight","_ref2","onClick","icon","name","_jsxs","children","_jsx","className","navigate","useNavigate","dispatch","useAppDispatch","useEffect","setHelpName","Fragment","PageHeaderWrapper","label","BackLink","IAM_PAGES","TIERS","actions","HelpMenu","PageLayout","FormLayout","title","TiersIcon","helpBox","HelpBox","iconComponent","help","href","target","rel","Box","sx","margin","gridGap","gridTemplateColumns","xs","sm","md","lg","tierTypes","map","tierType","index","TierTypeCard","targetTitle","selectName","serviceName","TIERS_ADD","logo","toString","minioServiceName","gcsServiceName","s3ServiceName","azureServiceName","MinIOTierIcon","logoXs","MinIOTierIconXs","GoogleTierIcon","GoogleTierIconXs","S3TierIcon","S3TierIconXs","AzureTierIcon","AzureTierIconXs"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/2338.6e3ddba5.chunk.js","mappings":"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","sources":["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) 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 styled from \"styled-components\";\nimport get from \"lodash/get\";\n\nconst TierButtonBase = styled.button(({ theme }) => ({\n background: get(theme, \"boxBackground\", \"#FFF\"),\n border: `${get(theme, \"borderColor\", \"#E2E2E2\")} 1px solid`,\n borderRadius: 5,\n height: 80,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"start\",\n marginBottom: 16,\n marginRight: 8,\n cursor: \"pointer\",\n overflow: \"hidden\",\n \"&:hover\": {\n backgroundColor: get(theme, \"buttons.regular.hover.background\", \"#ebebeb\"),\n },\n \"& .imageContainer\": {\n width: 80,\n \"& .min-icon\": {\n maxWidth: 46,\n maxHeight: 46,\n },\n },\n \"& .tierNotifTitle\": {\n color: get(theme, \"buttons.callAction.enabled.background\", \"#07193E\"),\n fontSize: 16,\n fontFamily: \"Inter,sans-serif\",\n paddingLeft: 18,\n fontWeight: \"bold\",\n },\n}));\n\ntype TierTypeCardProps = {\n onClick: (name: string) => void;\n icon?: any;\n name: string;\n};\nconst TierTypeCard = ({ onClick, icon, name }: TierTypeCardProps) => {\n return (\n {\n onClick(name);\n }}\n >\n {icon}\n {name}\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, useEffect } 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 TierTypeCard from \"./TierTypeCard\";\nimport { BackLink, FormLayout, HelpBox, PageLayout, TiersIcon } from \"mds\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../../HelpMenu\";\nimport { setHelpName } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\nconst TierTypeSelector = () => {\n const navigate = useNavigate();\n\n const typeSelect = (selectName: string) => {\n navigate(`${IAM_PAGES.TIERS_ADD}/${selectName}`);\n };\n const dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(setHelpName(\"tier-type-selector\"));\n }, [dispatch]);\n\n return (\n \n \n navigate(IAM_PAGES.TIERS)}\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 MinIO or other S3-compatible storage\n \n
  • \n
  • \n \n Amazon S3\n \n
  • \n
  • \n \n Google Cloud Storage\n \n
  • \n
  • \n \n Microsoft Azure Blob Storage\n \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":["TierButtonBase","styled","button","_ref","theme","background","get","border","concat","borderRadius","height","display","alignItems","justifyContent","marginBottom","marginRight","cursor","overflow","backgroundColor","width","maxWidth","maxHeight","color","fontSize","fontFamily","paddingLeft","fontWeight","_ref2","onClick","icon","name","_jsxs","children","_jsx","className","navigate","useNavigate","dispatch","useAppDispatch","useEffect","setHelpName","Fragment","PageHeaderWrapper","label","BackLink","IAM_PAGES","TIERS","actions","HelpMenu","PageLayout","FormLayout","title","TiersIcon","helpBox","HelpBox","iconComponent","help","href","target","rel","Box","sx","margin","gridGap","gridTemplateColumns","xs","sm","md","lg","tierTypes","map","tierType","index","TierTypeCard","targetTitle","selectName","serviceName","TIERS_ADD","logo","toString","minioServiceName","gcsServiceName","s3ServiceName","azureServiceName","MinIOTierIcon","logoXs","MinIOTierIconXs","GoogleTierIcon","GoogleTierIconXs","S3TierIcon","S3TierIconXs","AzureTierIcon","AzureTierIconXs"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/247.af004b44.chunk.js b/portal-ui/build/static/js/247.83abc0ba.chunk.js similarity index 98% rename from portal-ui/build/static/js/247.af004b44.chunk.js rename to portal-ui/build/static/js/247.83abc0ba.chunk.js index 7ccb2b4950..5578966152 100644 --- a/portal-ui/build/static/js/247.af004b44.chunk.js +++ b/portal-ui/build/static/js/247.83abc0ba.chunk.js @@ -1,2 +1,2 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[247],{40247:function(e,n,t){"use strict";t.r(n);var r=t(29439),o=t(1413),a=t(72791),i=t(29945),u=t(61889),l=t(11135),s=t(25787),c=t(23814),d=t(21435),f=t(56028),p=t(87995),v=t(81551),Z=t(31776),x=t(82342),m=t(80184);n.default=(0,s.Z)((function(e){return(0,l.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},c.DF),c.ID),c.bK))}))((function(e){var n=e.modalOpen,t=e.currentTags,l=e.onCloseAndUpdate,s=e.bucketName,c=e.classes,h=(0,v.TL)(),b=(0,a.useState)(""),j=(0,r.Z)(b,2),g=j[0],C=j[1],y=(0,a.useState)(""),w=(0,r.Z)(y,2),N=w[0],P=w[1],k=(0,a.useState)(!1),T=(0,r.Z)(k,2),F=T[0],z=T[1];return(0,m.jsx)(f.Z,{modalOpen:n,title:"Add New Tag ",onClose:function(){l(!1)},titleIcon:(0,m.jsx)(i.OCT,{}),children:(0,m.jsxs)(u.ZP,{container:!0,children:[(0,m.jsxs)("div",{className:c.spacerBottom,children:[(0,m.jsx)("strong",{children:"Bucket"}),": ",s]}),(0,m.jsx)(u.ZP,{item:!0,xs:12,className:c.formFieldRow,children:(0,m.jsx)(d.Z,{value:g,label:"New Tag Key",id:"newTagKey",name:"newTagKey",placeholder:"Enter New Tag Key",onChange:function(e){C(e.target.value)}})}),(0,m.jsx)(u.ZP,{item:!0,xs:12,className:c.formFieldRow,children:(0,m.jsx)(d.Z,{value:N,label:"New Tag Label",id:"newTagLabel",name:"newTagLabel",placeholder:"Enter New Tag Label",onChange:function(e){P(e.target.value)}})}),(0,m.jsxs)(u.ZP,{item:!0,xs:12,className:c.modalButtonBar,children:[(0,m.jsx)(i.zxk,{id:"clear",type:"button",variant:"regular",onClick:function(){P(""),C("")},label:"Clear"}),(0,m.jsx)(i.zxk,{id:"save-add-bucket-tag",type:"submit",variant:"callAction",color:"primary",disabled:""===N.trim()||""===g.trim()||F,onClick:function(){z(!0);var e={};e[g]=N;var n=(0,o.Z)((0,o.Z)({},t),e);Z.h.buckets.putBucketTags(s,{tags:n}).then((function(){z(!1),l(!0)})).catch((function(e){h((0,p.zb)((0,x.g)(e.error))),z(!1)}))},label:"Save"})]})]})})}))},21435:function(e,n,t){"use strict";var r=t(29439),o=t(1413),a=t(72791),i=t(20817),u=t(61889),l=t(30829),s=t(20068),c=t(13400),d=t(20165),f=t(3579),p=t(11135),v=t(72455),Z=t(25787),x=t(23814),m=t(29945),h=t(63733),b=t(80184),j=(0,v.Z)((function(e){return(0,p.Z)((0,o.Z)({},x.gM))}));function g(e){var n=j();return(0,b.jsx)(i.Z,(0,o.Z)({InputProps:{classes:n}},e))}n.Z=(0,Z.Z)((function(e){return(0,p.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},x.YI),x.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}}}))}))((function(e){var n=e.label,t=e.onChange,i=e.value,p=e.id,v=e.name,Z=e.type,x=void 0===Z?"text":Z,j=e.autoComplete,C=void 0===j?"off":j,y=e.disabled,w=void 0!==y&&y,N=e.multiline,P=void 0!==N&&N,k=e.tooltip,T=void 0===k?"":k,F=e.index,z=void 0===F?0:F,I=e.error,L=void 0===I?"":I,M=e.required,_=void 0!==M&&M,R=e.placeholder,B=void 0===R?"":R,K=e.min,A=e.max,E=e.overlayId,O=e.overlayIcon,S=void 0===O?null:O,W=e.overlayObject,D=void 0===W?null:W,q=e.extraInputProps,G=void 0===q?{}:q,H=e.overlayAction,V=e.noLabelMinWidth,U=void 0!==V&&V,Y=e.pattern,J=void 0===Y?"":Y,Q=e.autoFocus,X=void 0!==Q&&Q,$=e.classes,ee=e.className,ne=void 0===ee?"":ee,te=e.onKeyPress,re=e.onFocus,oe=e.onPaste,ae=(0,o.Z)({"data-index":z},G),ie=(0,a.useState)(!1),ue=(0,r.Z)(ie,2),le=ue[0],se=ue[1];"number"===x&&K&&(ae.min=K),"number"===x&&A&&(ae.max=A),""!==J&&(ae.pattern=J);var ce=S,de=x;return"password"===x&&null===S&&(ce=le?(0,b.jsx)(d.Z,{}):(0,b.jsx)(f.Z,{}),de=le?"text":"password"),(0,b.jsx)(a.Fragment,{children:(0,b.jsxs)(u.ZP,{container:!0,className:(0,h.Z)(""!==ne?ne:"",""!==L?$.errorInField:$.inputBoxContainer),children:[""!==n&&(0,b.jsxs)(l.Z,{htmlFor:p,className:U?$.noMinWidthLabel:$.inputLabel,children:[(0,b.jsxs)("span",{children:[n,_?"*":""]}),""!==T&&(0,b.jsx)("div",{className:$.tooltipContainer,children:(0,b.jsx)(s.Z,{title:T,placement:"top-start",children:(0,b.jsx)("div",{className:$.tooltip,children:(0,b.jsx)(m.byK,{})})})})]}),(0,b.jsxs)("div",{className:$.textBoxContainer,children:[(0,b.jsx)(g,{id:p,name:v,fullWidth:!0,value:i,autoFocus:X,disabled:w,onChange:t,type:de,multiline:P,autoComplete:C,inputProps:ae,error:""!==L,helperText:L,placeholder:B,className:$.inputRebase,onKeyPress:te,onFocus:re,onPaste:oe}),ce&&(0,b.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==n?"withLabel":""),children:(0,b.jsx)(c.Z,{onClick:H?function(){H()}:function(){return se(!le)},id:E,size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:ce})}),D&&(0,b.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==n?"withLabel":""),children:D})]})]})})}))},3579:function(e,n,t){"use strict";var r=t(64836);n.Z=void 0;var o=r(t(45649)),a=t(80184),i=(0,o.default)((0,a.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"}),"RemoveRedEye");n.Z=i},20165:function(e,n,t){"use strict";var r=t(64836);n.Z=void 0;var o=r(t(45649)),a=t(80184),i=(0,o.default)((0,a.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}),"VisibilityOff");n.Z=i},45649:function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return r.createSvgIcon}});var r=t(28610)},31260:function(e,n,t){"use strict";var r=t(78949);n.Z=r.Z},28610:function(e,n,t){"use strict";t.r(n),t.d(n,{capitalize:function(){return o.Z},createChainedFunction:function(){return a.Z},createSvgIcon:function(){return i.Z},debounce:function(){return u.Z},deprecatedPropType:function(){return l},isMuiElement:function(){return s.Z},ownerDocument:function(){return c.Z},ownerWindow:function(){return d.Z},requirePropFactory:function(){return f},setRef:function(){return p},unstable_ClassNameGenerator:function(){return g},unstable_useEnhancedEffect:function(){return v.Z},unstable_useId:function(){return Z.Z},unsupportedProp:function(){return x},useControlled:function(){return m.Z},useEventCallback:function(){return h.Z},useForkRef:function(){return b.Z},useIsFocusVisible:function(){return j.Z}});var r=t(55902),o=t(14036),a=t(31260),i=t(76189),u=t(83199);var l=function(e,n){return function(){return null}},s=t(19103),c=t(98301),d=t(17602);t(87462);var f=function(e,n){return function(){return null}},p=t(62971).Z,v=t(40162),Z=t(67384);var x=function(e,n,t,r,o){return null},m=t(98278),h=t(89683),b=t(42071),j=t(23031),g={configure:function(e){r.Z.configure(e)}}},64836:function(e){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); -//# sourceMappingURL=247.af004b44.chunk.js.map \ No newline at end of file +(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[247],{40247:function(e,n,t){"use strict";t.r(n);var r=t(29439),o=t(1413),a=t(72791),i=t(29945),u=t(61889),l=t(11135),s=t(25787),c=t(23814),d=t(21435),f=t(56028),p=t(87995),v=t(44690),Z=t(31776),x=t(82342),m=t(80184);n.default=(0,s.Z)((function(e){return(0,l.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},c.DF),c.ID),c.bK))}))((function(e){var n=e.modalOpen,t=e.currentTags,l=e.onCloseAndUpdate,s=e.bucketName,c=e.classes,h=(0,v.TL)(),b=(0,a.useState)(""),j=(0,r.Z)(b,2),g=j[0],C=j[1],y=(0,a.useState)(""),w=(0,r.Z)(y,2),N=w[0],P=w[1],k=(0,a.useState)(!1),T=(0,r.Z)(k,2),F=T[0],z=T[1];return(0,m.jsx)(f.Z,{modalOpen:n,title:"Add New Tag ",onClose:function(){l(!1)},titleIcon:(0,m.jsx)(i.OCT,{}),children:(0,m.jsxs)(u.ZP,{container:!0,children:[(0,m.jsxs)("div",{className:c.spacerBottom,children:[(0,m.jsx)("strong",{children:"Bucket"}),": ",s]}),(0,m.jsx)(u.ZP,{item:!0,xs:12,className:c.formFieldRow,children:(0,m.jsx)(d.Z,{value:g,label:"New Tag Key",id:"newTagKey",name:"newTagKey",placeholder:"Enter New Tag Key",onChange:function(e){C(e.target.value)}})}),(0,m.jsx)(u.ZP,{item:!0,xs:12,className:c.formFieldRow,children:(0,m.jsx)(d.Z,{value:N,label:"New Tag Label",id:"newTagLabel",name:"newTagLabel",placeholder:"Enter New Tag Label",onChange:function(e){P(e.target.value)}})}),(0,m.jsxs)(u.ZP,{item:!0,xs:12,className:c.modalButtonBar,children:[(0,m.jsx)(i.zxk,{id:"clear",type:"button",variant:"regular",onClick:function(){P(""),C("")},label:"Clear"}),(0,m.jsx)(i.zxk,{id:"save-add-bucket-tag",type:"submit",variant:"callAction",color:"primary",disabled:""===N.trim()||""===g.trim()||F,onClick:function(){z(!0);var e={};e[g]=N;var n=(0,o.Z)((0,o.Z)({},t),e);Z.h.buckets.putBucketTags(s,{tags:n}).then((function(){z(!1),l(!0)})).catch((function(e){h((0,p.zb)((0,x.g)(e.error))),z(!1)}))},label:"Save"})]})]})})}))},21435:function(e,n,t){"use strict";var r=t(29439),o=t(1413),a=t(72791),i=t(20817),u=t(61889),l=t(30829),s=t(20068),c=t(13400),d=t(20165),f=t(3579),p=t(11135),v=t(72455),Z=t(25787),x=t(23814),m=t(29945),h=t(63733),b=t(80184),j=(0,v.Z)((function(e){return(0,p.Z)((0,o.Z)({},x.gM))}));function g(e){var n=j();return(0,b.jsx)(i.Z,(0,o.Z)({InputProps:{classes:n}},e))}n.Z=(0,Z.Z)((function(e){return(0,p.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},x.YI),x.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}}}))}))((function(e){var n=e.label,t=e.onChange,i=e.value,p=e.id,v=e.name,Z=e.type,x=void 0===Z?"text":Z,j=e.autoComplete,C=void 0===j?"off":j,y=e.disabled,w=void 0!==y&&y,N=e.multiline,P=void 0!==N&&N,k=e.tooltip,T=void 0===k?"":k,F=e.index,z=void 0===F?0:F,I=e.error,L=void 0===I?"":I,M=e.required,_=void 0!==M&&M,R=e.placeholder,B=void 0===R?"":R,K=e.min,A=e.max,E=e.overlayId,O=e.overlayIcon,S=void 0===O?null:O,W=e.overlayObject,D=void 0===W?null:W,q=e.extraInputProps,G=void 0===q?{}:q,H=e.overlayAction,V=e.noLabelMinWidth,U=void 0!==V&&V,Y=e.pattern,J=void 0===Y?"":Y,Q=e.autoFocus,X=void 0!==Q&&Q,$=e.classes,ee=e.className,ne=void 0===ee?"":ee,te=e.onKeyPress,re=e.onFocus,oe=e.onPaste,ae=(0,o.Z)({"data-index":z},G),ie=(0,a.useState)(!1),ue=(0,r.Z)(ie,2),le=ue[0],se=ue[1];"number"===x&&K&&(ae.min=K),"number"===x&&A&&(ae.max=A),""!==J&&(ae.pattern=J);var ce=S,de=x;return"password"===x&&null===S&&(ce=le?(0,b.jsx)(d.Z,{}):(0,b.jsx)(f.Z,{}),de=le?"text":"password"),(0,b.jsx)(a.Fragment,{children:(0,b.jsxs)(u.ZP,{container:!0,className:(0,h.Z)(""!==ne?ne:"",""!==L?$.errorInField:$.inputBoxContainer),children:[""!==n&&(0,b.jsxs)(l.Z,{htmlFor:p,className:U?$.noMinWidthLabel:$.inputLabel,children:[(0,b.jsxs)("span",{children:[n,_?"*":""]}),""!==T&&(0,b.jsx)("div",{className:$.tooltipContainer,children:(0,b.jsx)(s.Z,{title:T,placement:"top-start",children:(0,b.jsx)("div",{className:$.tooltip,children:(0,b.jsx)(m.byK,{})})})})]}),(0,b.jsxs)("div",{className:$.textBoxContainer,children:[(0,b.jsx)(g,{id:p,name:v,fullWidth:!0,value:i,autoFocus:X,disabled:w,onChange:t,type:de,multiline:P,autoComplete:C,inputProps:ae,error:""!==L,helperText:L,placeholder:B,className:$.inputRebase,onKeyPress:te,onFocus:re,onPaste:oe}),ce&&(0,b.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==n?"withLabel":""),children:(0,b.jsx)(c.Z,{onClick:H?function(){H()}:function(){return se(!le)},id:E,size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:ce})}),D&&(0,b.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==n?"withLabel":""),children:D})]})]})})}))},3579:function(e,n,t){"use strict";var r=t(64836);n.Z=void 0;var o=r(t(45649)),a=t(80184),i=(0,o.default)((0,a.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"}),"RemoveRedEye");n.Z=i},20165:function(e,n,t){"use strict";var r=t(64836);n.Z=void 0;var o=r(t(45649)),a=t(80184),i=(0,o.default)((0,a.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}),"VisibilityOff");n.Z=i},45649:function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return r.createSvgIcon}});var r=t(28610)},31260:function(e,n,t){"use strict";var r=t(78949);n.Z=r.Z},28610:function(e,n,t){"use strict";t.r(n),t.d(n,{capitalize:function(){return o.Z},createChainedFunction:function(){return a.Z},createSvgIcon:function(){return i.Z},debounce:function(){return u.Z},deprecatedPropType:function(){return l},isMuiElement:function(){return s.Z},ownerDocument:function(){return c.Z},ownerWindow:function(){return d.Z},requirePropFactory:function(){return f},setRef:function(){return p},unstable_ClassNameGenerator:function(){return g},unstable_useEnhancedEffect:function(){return v.Z},unstable_useId:function(){return Z.Z},unsupportedProp:function(){return x},useControlled:function(){return m.Z},useEventCallback:function(){return h.Z},useForkRef:function(){return b.Z},useIsFocusVisible:function(){return j.Z}});var r=t(55902),o=t(14036),a=t(31260),i=t(76189),u=t(83199);var l=function(e,n){return function(){return null}},s=t(19103),c=t(98301),d=t(17602);t(87462);var f=function(e,n){return function(){return null}},p=t(62971).Z,v=t(40162),Z=t(67384);var x=function(e,n,t,r,o){return null},m=t(98278),h=t(89683),b=t(42071),j=t(23031),g={configure:function(e){r.Z.configure(e)}}},64836:function(e){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); +//# sourceMappingURL=247.83abc0ba.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/247.af004b44.chunk.js.map b/portal-ui/build/static/js/247.83abc0ba.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/247.af004b44.chunk.js.map rename to portal-ui/build/static/js/247.83abc0ba.chunk.js.map index 05bf9110ac..da09df4879 100644 --- a/portal-ui/build/static/js/247.af004b44.chunk.js.map +++ b/portal-ui/build/static/js/247.83abc0ba.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/247.af004b44.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/AddBucketTagModal.tsx","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","../node_modules/@mui/icons-material/RemoveRedEye.js","../node_modules/@mui/icons-material/VisibilityOff.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/esm/deprecatedPropType.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/esm/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/esm/unsupportedProp.js","../node_modules/@mui/material/utils/index.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { AddNewTagIcon, 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 InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IBucketTagModal {\n modalOpen: boolean;\n currentTags: any;\n bucketName: string;\n onCloseAndUpdate: (refresh: boolean) => void;\n\n 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.buckets\n .putBucketTags(bucketName, {\n tags: newTagList,\n })\n .then(() => {\n setIsSending(false);\n onCloseAndUpdate(true);\n })\n .catch((error) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(error.error)));\n setIsSending(false);\n });\n };\n\n return (\n {\n onCloseAndUpdate(false);\n }}\n titleIcon={}\n >\n \n
\n Bucket: {bucketName}\n
\n \n {\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, { ClipboardEvent, useState } from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n onKeyPress?: (e: any) => void;\n onFocus?: () => void;\n onPaste?: (e: ClipboardEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayId?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n }),\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayId,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n onFocus,\n onPaste,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n const [toggleTextInput, setToggleTextInput] = useState(false);\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n let inputBoxWrapperIcon = overlayIcon;\n let inputBoxWrapperType = type;\n\n if (type === \"password\" && overlayIcon === null) {\n inputBoxWrapperIcon = toggleTextInput ? (\n \n ) : (\n \n );\n inputBoxWrapperType = toggleTextInput ? \"text\" : \"password\";\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n
\n \n {inputBoxWrapperIcon && (\n \n {\n overlayAction();\n }\n : () => setToggleTextInput(!toggleTextInput)\n }\n id={overlayId}\n size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {inputBoxWrapperIcon}\n \n
\n )}\n {overlayObject && (\n \n {overlayObject}\n \n )}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'RemoveRedEye');\nexports.default = _default;","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["withStyles","theme","createStyles","_objectSpread","formFieldStyles","modalStyleUtils","spacingUtils","_ref","modalOpen","currentTags","onCloseAndUpdate","bucketName","classes","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","newKey","setNewKey","_useState3","_useState4","newLabel","setNewLabel","_useState5","_useState6","isSending","setIsSending","_jsx","ModalWrapper","title","onClose","titleIcon","AddNewTagIcon","children","_jsxs","Grid","container","className","spacerBottom","item","xs","formFieldRow","InputBoxWrapper","value","label","id","name","placeholder","onChange","e","target","modalButtonBar","Button","type","variant","onClick","color","disabled","trim","newTag","newTagList","api","buckets","putBucketTags","tags","then","catch","error","setModalErrorSnackMessage","errorToHandler","inputStyles","makeStyles","inputFieldStyles","InputField","props","TextField","InputProps","fieldBasic","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","_ref$type","_ref$autoComplete","autoComplete","_ref$disabled","_ref$multiline","multiline","_ref$tooltip","tooltip","_ref$index","index","_ref$error","_ref$required","required","_ref$placeholder","min","max","overlayId","_ref$overlayIcon","overlayIcon","_ref$overlayObject","overlayObject","_ref$extraInputProps","extraInputProps","_ref$noLabelMinWidth","noLabelMinWidth","_ref$pattern","pattern","_ref$autoFocus","autoFocus","_ref$className","onKeyPress","onFocus","onPaste","inputProps","toggleTextInput","setToggleTextInput","inputBoxWrapperIcon","inputBoxWrapperType","VisibilityOffIcon","RemoveRedEyeIcon","React","clsx","errorInField","inputBoxContainer","InputLabel","htmlFor","noMinWidthLabel","inputLabel","tooltipContainer","Tooltip","placement","HelpIcon","fullWidth","helperText","inputRebase","concat","IconButton","size","disableFocusRipple","disableRipple","disableTouchRipple","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Object","defineProperty","enumerable","get","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/247.83abc0ba.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/AddBucketTagModal.tsx","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","../node_modules/@mui/icons-material/RemoveRedEye.js","../node_modules/@mui/icons-material/VisibilityOff.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/esm/deprecatedPropType.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/esm/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/esm/unsupportedProp.js","../node_modules/@mui/material/utils/index.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { AddNewTagIcon, 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 InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IBucketTagModal {\n modalOpen: boolean;\n currentTags: any;\n bucketName: string;\n onCloseAndUpdate: (refresh: boolean) => void;\n\n 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.buckets\n .putBucketTags(bucketName, {\n tags: newTagList,\n })\n .then(() => {\n setIsSending(false);\n onCloseAndUpdate(true);\n })\n .catch((error) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(error.error)));\n setIsSending(false);\n });\n };\n\n return (\n {\n onCloseAndUpdate(false);\n }}\n titleIcon={}\n >\n \n
\n Bucket: {bucketName}\n
\n \n {\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, { ClipboardEvent, useState } from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n onKeyPress?: (e: any) => void;\n onFocus?: () => void;\n onPaste?: (e: ClipboardEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayId?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n }),\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayId,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n onFocus,\n onPaste,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n const [toggleTextInput, setToggleTextInput] = useState(false);\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n let inputBoxWrapperIcon = overlayIcon;\n let inputBoxWrapperType = type;\n\n if (type === \"password\" && overlayIcon === null) {\n inputBoxWrapperIcon = toggleTextInput ? (\n \n ) : (\n \n );\n inputBoxWrapperType = toggleTextInput ? \"text\" : \"password\";\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n
\n \n {inputBoxWrapperIcon && (\n \n {\n overlayAction();\n }\n : () => setToggleTextInput(!toggleTextInput)\n }\n id={overlayId}\n size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {inputBoxWrapperIcon}\n \n
\n )}\n {overlayObject && (\n \n {overlayObject}\n \n )}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'RemoveRedEye');\nexports.default = _default;","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["withStyles","theme","createStyles","_objectSpread","formFieldStyles","modalStyleUtils","spacingUtils","_ref","modalOpen","currentTags","onCloseAndUpdate","bucketName","classes","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","newKey","setNewKey","_useState3","_useState4","newLabel","setNewLabel","_useState5","_useState6","isSending","setIsSending","_jsx","ModalWrapper","title","onClose","titleIcon","AddNewTagIcon","children","_jsxs","Grid","container","className","spacerBottom","item","xs","formFieldRow","InputBoxWrapper","value","label","id","name","placeholder","onChange","e","target","modalButtonBar","Button","type","variant","onClick","color","disabled","trim","newTag","newTagList","api","buckets","putBucketTags","tags","then","catch","error","setModalErrorSnackMessage","errorToHandler","inputStyles","makeStyles","inputFieldStyles","InputField","props","TextField","InputProps","fieldBasic","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","_ref$type","_ref$autoComplete","autoComplete","_ref$disabled","_ref$multiline","multiline","_ref$tooltip","tooltip","_ref$index","index","_ref$error","_ref$required","required","_ref$placeholder","min","max","overlayId","_ref$overlayIcon","overlayIcon","_ref$overlayObject","overlayObject","_ref$extraInputProps","extraInputProps","_ref$noLabelMinWidth","noLabelMinWidth","_ref$pattern","pattern","_ref$autoFocus","autoFocus","_ref$className","onKeyPress","onFocus","onPaste","inputProps","toggleTextInput","setToggleTextInput","inputBoxWrapperIcon","inputBoxWrapperType","VisibilityOffIcon","RemoveRedEyeIcon","React","clsx","errorInField","inputBoxContainer","InputLabel","htmlFor","noMinWidthLabel","inputLabel","tooltipContainer","Tooltip","placement","HelpIcon","fullWidth","helperText","inputRebase","concat","IconButton","size","disableFocusRipple","disableRipple","disableTouchRipple","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Object","defineProperty","enumerable","get","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/2545.ffac2fbb.chunk.js b/portal-ui/build/static/js/2545.ff1b01f5.chunk.js similarity index 98% rename from portal-ui/build/static/js/2545.ffac2fbb.chunk.js rename to portal-ui/build/static/js/2545.ff1b01f5.chunk.js index bc32fef8d8..e0c5b779b5 100644 --- a/portal-ui/build/static/js/2545.ffac2fbb.chunk.js +++ b/portal-ui/build/static/js/2545.ff1b01f5.chunk.js @@ -1,2 +1,2 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2545],{92217:function(e,t,n){"use strict";var o=n(72791),r=n(29945),i=n(78029),a=n.n(i),c=n(27454),l=n(80184);t.Z=function(e){var t=e.value,n=e.label,i=void 0===n?"":n,s=e.tooltip,u=void 0===s?"":s,p=e.mode,f=void 0===p?"json":p,d=e.onChange,y=e.editorHeight,x=void 0===y?250:y;return(0,l.jsx)(r.pq4,{value:t,onChange:function(e){return d(e)},mode:f,tooltip:u,editorHeight:x,label:i,helpTools:(0,l.jsx)(o.Fragment,{children:(0,l.jsx)(c.Z,{tooltip:"Copy to Clipboard",children:(0,l.jsx)(a(),{text:t,children:(0,l.jsx)(r.zxk,{type:"button",id:"copy-code-mirror",icon:(0,l.jsx)(r.TIy,{}),color:"primary",variant:"regular"})})})})})}},52545:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return g}});var o=n(29439),r=n(72791),i=n(29945),a=n(64554),c=n(80184),l=function(e){var t=e.icon,n=e.description;return(0,c.jsxs)(a.Z,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[t," ",(0,c.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:n})]})},s=function(){return(0,c.jsxs)(a.Z,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px"},children:[(0,c.jsxs)(a.Z,{sx:{fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center",marginBottom:"16px",paddingBottom:"20px","& .min-icon":{height:"21px",width:"21px",marginRight:"15px"}},children:[(0,c.jsx)(i.M9A,{}),(0,c.jsx)("div",{children:"Learn more about Policies"})]}),(0,c.jsxs)(a.Z,{sx:{fontSize:"14px",marginBottom:"15px"},children:[(0,c.jsxs)(a.Z,{sx:{paddingBottom:"20px"},children:[(0,c.jsx)(l,{icon:(0,c.jsx)(i.v42,{}),description:"Create Policies"}),(0,c.jsxs)(a.Z,{sx:{paddingTop:"20px"},children:["MinIO uses Policy-Based Access Control (PBAC) to define the authorized actions and resources to which an authenticated user has access. Each policy describes one or more actions and conditions that outline the permissions of a user or group of users."," "]})]}),(0,c.jsx)(a.Z,{sx:{paddingBottom:"20px"},children:"MinIO PBAC is built for compatibility with AWS IAM policy syntax, structure, and behavior."}),(0,c.jsx)(a.Z,{sx:{paddingBottom:"20px"},children:"Each user can access only those resources and operations which are explicitly granted by the built-in role. MinIO denies access to any other resource or action by default."})]})]})},u=n(92217),p=n(47974),f=n(99670),d=n(56087),y=n(87995),x=n(57689),h=n(81551),b=n(19859),m=n(31776),g=function(){var e=(0,h.TL)(),t=(0,x.s0)(),n=(0,r.useState)(!1),a=(0,o.Z)(n,2),l=a[0],g=a[1],v=(0,r.useState)(""),j=(0,o.Z)(v,2),C=j[0],w=j[1],O=(0,r.useState)(b.L),P=(0,o.Z)(O,2),S=P[0],E=P[1],k=""!==C.trim()&&-1===C.indexOf(" ")&&""!==S.trim();return(0,r.useEffect)((function(){e((0,y.Sc)("add_policy"))}),[]),(0,c.jsx)(r.Fragment,{children:(0,c.jsxs)(i.rjZ,{item:!0,xs:12,children:[(0,c.jsx)(p.Z,{label:(0,c.jsx)(i.hbI,{label:"Policies",onClick:function(){return t(d.gA.POLICIES)}}),actions:(0,c.jsx)(f.Z,{})}),(0,c.jsx)(i.Xgh,{children:(0,c.jsx)(i.ltY,{title:"Create Policy",icon:(0,c.jsx)(i.sR0,{}),helpBox:(0,c.jsx)(s,{}),children:(0,c.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(n){n.preventDefault(),l||(g(!0),m.h.policies.addPolicy({name:C,policy:S}).then((function(e){g(!1),t("".concat(d.gA.POLICIES))})).catch((function(t){g(!1),e((0,y.Ih)({errorMessage:"There was an error creating a Policy ",detailedError:"There was an error creating a Policy: "+(t.error.detailedMessage||"")+". Please check Policy syntax."}))})))},children:(0,c.jsxs)(i.rjZ,{container:!0,children:[(0,c.jsx)(i.rjZ,{item:!0,xs:12,children:(0,c.jsx)(i.Wzg,{id:"policy-name",name:"policy-name",label:"Policy Name",autoFocus:!0,value:C,error:function(e){return-1!==e.indexOf(" ")?"Policy name cannot contain spaces":""}(C),onChange:function(e){w(e.target.value)}})}),(0,c.jsx)(i.rjZ,{item:!0,xs:12,children:(0,c.jsx)(u.Z,{label:"Write Policy",value:S,onChange:function(e){E(e)},editorHeight:"350px"})}),(0,c.jsx)(i.rjZ,{item:!0,xs:12,sx:{textAlign:"right"},children:(0,c.jsxs)(i.xuv,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end",marginTop:"20px",gap:"15px"},children:[(0,c.jsx)(i.zxk,{id:"clear",type:"button",variant:"regular",onClick:function(){w(""),E("")},label:"Clear"}),(0,c.jsx)(i.zxk,{id:"save-policy",type:"submit",variant:"callAction",color:"primary",disabled:l||!k,label:"Save"})]})})]})})})})]})})}},19859:function(e,t,n){"use strict";n.d(t,{L:function(){return o}});var o='{\n "Version": "2012-10-17",\n "Statement": [\n \n ]\n}'},76998:function(e,t,n){"use strict";var o=n(42458),r={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,i,a,c,l,s,u=!1;t||(t={}),n=t.debug||!1;try{if(a=o(),c=document.createRange(),l=document.getSelection(),(s=document.createElement("span")).textContent=e,s.ariaHidden="true",s.style.all="unset",s.style.position="fixed",s.style.top=0,s.style.clip="rect(0, 0, 0, 0)",s.style.whiteSpace="pre",s.style.webkitUserSelect="text",s.style.MozUserSelect="text",s.style.msUserSelect="text",s.style.userSelect="text",s.addEventListener("copy",(function(o){if(o.stopPropagation(),t.format)if(o.preventDefault(),"undefined"===typeof o.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var i=r[t.format]||r.default;window.clipboardData.setData(i,e)}else o.clipboardData.clearData(),o.clipboardData.setData(t.format,e);t.onCopy&&(o.preventDefault(),t.onCopy(o.clipboardData))})),document.body.appendChild(s),c.selectNodeContents(s),l.addRange(c),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");u=!0}catch(p){n&&console.error("unable to copy using execCommand: ",p),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),u=!0}catch(p){n&&console.error("unable to copy using clipboardData: ",p),n&&console.error("falling back to prompt"),i=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(i,e)}}finally{l&&("function"==typeof l.removeRange?l.removeRange(c):l.removeAllRanges()),s&&document.body.removeChild(s),a()}return u}},568:function(e,t,n){"use strict";function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var r=c(n(72791)),i=c(n(76998)),a=["text","onCopy","options","children"];function c(e){return e&&e.__esModule?e:{default:e}}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function s(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function p(e,t){for(var n=0;n=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function p(e,t){for(var n=0;n.\n\nimport React, { Fragment } from \"react\";\nimport { Button, CodeEditor, CopyIcon } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n onChange: (value: string) => any;\n editorHeight?: string | number;\n}\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n onChange,\n editorHeight = 250,\n}: ICodeWrapper) => {\n return (\n onChange(value)}\n mode={mode}\n tooltip={tooltip}\n editorHeight={editorHeight}\n label={label}\n helpTools={\n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n }\n />\n );\n};\n\nexport default CodeMirrorWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport { HelpIconFilled, IAMPoliciesIcon } from \"mds\";\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};\n\nconst AddPolicyHelpBox = () => {\n return (\n \n \n \n
Learn more about Policies
\n \n \n \n }\n description={`Create Policies`}\n />\n \n MinIO uses Policy-Based Access Control (PBAC) to define the\n authorized actions and resources to which an authenticated user has\n access. Each policy describes one or more actions and conditions\n that outline the permissions of a user or group of users.{\" \"}\n \n \n \n MinIO PBAC is built for compatibility with AWS IAM policy syntax,\n structure, and behavior.\n \n \n Each user can access only those resources and operations which are\n explicitly granted by the built-in role. MinIO denies access to any\n other resource or action by default.\n \n \n \n );\n};\n\nexport default AddPolicyHelpBox;\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 {\n AddAccessRuleIcon,\n BackLink,\n Box,\n Button,\n FormLayout,\n Grid,\n InputBox,\n PageLayout,\n} from \"mds\";\nimport AddPolicyHelpBox from \"./AddPolicyHelpBox\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useAppDispatch } from \"../../../store\";\nimport { emptyPolicy } from \"./utils\";\nimport { api } from \"../../../api\";\n\nconst AddPolicyScreen = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [addLoading, setAddLoading] = useState(false);\n const [policyName, setPolicyName] = useState(\"\");\n const [policyDefinition, setPolicyDefinition] = useState(emptyPolicy);\n\n const addRecord = (event: React.FormEvent) => {\n event.preventDefault();\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n api.policies\n .addPolicy({\n name: policyName,\n policy: policyDefinition,\n })\n .then((res) => {\n setAddLoading(false);\n navigate(`${IAM_PAGES.POLICIES}`);\n })\n .catch((err) => {\n setAddLoading(false);\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"There was an error creating a Policy \",\n detailedError:\n \"There was an error creating a Policy: \" +\n (err.error.detailedMessage || \"\") +\n \". Please check Policy syntax.\",\n }),\n );\n });\n };\n\n const resetForm = () => {\n setPolicyName(\"\");\n setPolicyDefinition(\"\");\n };\n\n const validatePolicyname = (policyName: string) => {\n if (policyName.indexOf(\" \") !== -1) {\n return \"Policy name cannot contain spaces\";\n } else return \"\";\n };\n\n const validSave =\n policyName.trim() !== \"\" &&\n policyName.indexOf(\" \") === -1 &&\n policyDefinition.trim() !== \"\";\n\n useEffect(() => {\n dispatch(setHelpName(\"add_policy\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return (\n \n \n navigate(IAM_PAGES.POLICIES)}\n />\n }\n actions={}\n />\n \n }\n helpBox={}\n >\n ) => {\n addRecord(e);\n }}\n >\n \n \n ) => {\n setPolicyName(e.target.value);\n }}\n />\n \n \n {\n setPolicyDefinition(value);\n }}\n editorHeight={\"350px\"}\n />\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default AddPolicyScreen;\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 emptyPolicy =\n \"{\\n\" +\n ' \"Version\": \"2012-10-17\",\\n' +\n ' \"Statement\": [\\n' +\n \" \\n\" +\n \" ]\\n\" +\n \"}\";\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n"],"names":["_ref","value","_ref$label","label","_ref$tooltip","tooltip","_ref$mode","mode","onChange","_ref$editorHeight","editorHeight","_jsx","CodeEditor","helpTools","Fragment","children","TooltipWrapper","CopyToClipboard","text","Button","type","id","icon","CopyIcon","color","variant","FeatureItem","description","_jsxs","Box","sx","display","marginRight","height","width","marginBottom","style","fontSize","fontStyle","flex","border","borderRadius","flexFlow","padding","fontWeight","alignItems","paddingBottom","HelpIconFilled","IAMPoliciesIcon","paddingTop","dispatch","useAppDispatch","navigate","useNavigate","_useState","useState","_useState2","_slicedToArray","addLoading","setAddLoading","_useState3","_useState4","policyName","setPolicyName","_useState5","emptyPolicy","_useState6","policyDefinition","setPolicyDefinition","validSave","trim","indexOf","useEffect","setHelpName","Grid","item","xs","PageHeaderWrapper","BackLink","onClick","IAM_PAGES","POLICIES","actions","HelpMenu","PageLayout","FormLayout","title","AddAccessRuleIcon","helpBox","AddPolicyHelpBox","noValidate","autoComplete","onSubmit","e","preventDefault","api","policies","addPolicy","name","policy","then","res","concat","catch","err","setErrorSnackMessage","errorMessage","detailedError","error","detailedMessage","container","InputBox","autoFocus","validatePolicyname","target","CodeMirrorWrapper","textAlign","justifyContent","marginTop","gap","disabled","deselectCurrent","require","clipboardToIE11Formatting","module","exports","options","debug","message","reselectPrevious","range","selection","mark","success","document","createRange","getSelection","createElement","textContent","ariaHidden","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","format","clipboardData","console","warn","window","clearData","setData","onCopy","body","appendChild","selectNodeContents","addRange","execCommand","Error","copyKey","test","navigator","userAgent","replace","prompt","removeRange","removeAllRanges","removeChild","_typeof","obj","Symbol","iterator","constructor","prototype","Object","defineProperty","_react","_interopRequireDefault","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","call","_defineProperties","props","descriptor","configurable","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","result","Super","_getPrototypeOf","NewTarget","this","self","TypeError","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","getPrototypeOf","_React$PureComponent","subClass","superClass","create","_inherits","Constructor","protoProps","staticProps","_super","_this","instance","_classCallCheck","_len","args","Array","_key","event","_this$props","elem","Children","only","_this$props2","cloneElement","PureComponent","undefined","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/2545.ff1b01f5.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper.tsx","screens/Console/Policies/AddPolicyHelpBox.tsx","screens/Console/Policies/AddPolicyScreen.tsx","screens/Console/Policies/utils.ts","../node_modules/copy-to-clipboard/index.js","../node_modules/react-copy-to-clipboard/lib/Component.js","../node_modules/react-copy-to-clipboard/lib/index.js","../node_modules/toggle-selection/index.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 } from \"react\";\nimport { Button, CodeEditor, CopyIcon } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n onChange: (value: string) => any;\n editorHeight?: string | number;\n}\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n onChange,\n editorHeight = 250,\n}: ICodeWrapper) => {\n return (\n onChange(value)}\n mode={mode}\n tooltip={tooltip}\n editorHeight={editorHeight}\n label={label}\n helpTools={\n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n }\n />\n );\n};\n\nexport default CodeMirrorWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport { HelpIconFilled, IAMPoliciesIcon } from \"mds\";\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};\n\nconst AddPolicyHelpBox = () => {\n return (\n \n \n \n
Learn more about Policies
\n \n \n \n }\n description={`Create Policies`}\n />\n \n MinIO uses Policy-Based Access Control (PBAC) to define the\n authorized actions and resources to which an authenticated user has\n access. Each policy describes one or more actions and conditions\n that outline the permissions of a user or group of users.{\" \"}\n \n \n \n MinIO PBAC is built for compatibility with AWS IAM policy syntax,\n structure, and behavior.\n \n \n Each user can access only those resources and operations which are\n explicitly granted by the built-in role. MinIO denies access to any\n other resource or action by default.\n \n \n \n );\n};\n\nexport default AddPolicyHelpBox;\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 {\n AddAccessRuleIcon,\n BackLink,\n Box,\n Button,\n FormLayout,\n Grid,\n InputBox,\n PageLayout,\n} from \"mds\";\nimport AddPolicyHelpBox from \"./AddPolicyHelpBox\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useAppDispatch } from \"../../../store\";\nimport { emptyPolicy } from \"./utils\";\nimport { api } from \"../../../api\";\n\nconst AddPolicyScreen = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [addLoading, setAddLoading] = useState(false);\n const [policyName, setPolicyName] = useState(\"\");\n const [policyDefinition, setPolicyDefinition] = useState(emptyPolicy);\n\n const addRecord = (event: React.FormEvent) => {\n event.preventDefault();\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n api.policies\n .addPolicy({\n name: policyName,\n policy: policyDefinition,\n })\n .then((res) => {\n setAddLoading(false);\n navigate(`${IAM_PAGES.POLICIES}`);\n })\n .catch((err) => {\n setAddLoading(false);\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"There was an error creating a Policy \",\n detailedError:\n \"There was an error creating a Policy: \" +\n (err.error.detailedMessage || \"\") +\n \". Please check Policy syntax.\",\n }),\n );\n });\n };\n\n const resetForm = () => {\n setPolicyName(\"\");\n setPolicyDefinition(\"\");\n };\n\n const validatePolicyname = (policyName: string) => {\n if (policyName.indexOf(\" \") !== -1) {\n return \"Policy name cannot contain spaces\";\n } else return \"\";\n };\n\n const validSave =\n policyName.trim() !== \"\" &&\n policyName.indexOf(\" \") === -1 &&\n policyDefinition.trim() !== \"\";\n\n useEffect(() => {\n dispatch(setHelpName(\"add_policy\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return (\n \n \n navigate(IAM_PAGES.POLICIES)}\n />\n }\n actions={}\n />\n \n }\n helpBox={}\n >\n ) => {\n addRecord(e);\n }}\n >\n \n \n ) => {\n setPolicyName(e.target.value);\n }}\n />\n \n \n {\n setPolicyDefinition(value);\n }}\n editorHeight={\"350px\"}\n />\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default AddPolicyScreen;\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 emptyPolicy =\n \"{\\n\" +\n ' \"Version\": \"2012-10-17\",\\n' +\n ' \"Statement\": [\\n' +\n \" \\n\" +\n \" ]\\n\" +\n \"}\";\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n"],"names":["_ref","value","_ref$label","label","_ref$tooltip","tooltip","_ref$mode","mode","onChange","_ref$editorHeight","editorHeight","_jsx","CodeEditor","helpTools","Fragment","children","TooltipWrapper","CopyToClipboard","text","Button","type","id","icon","CopyIcon","color","variant","FeatureItem","description","_jsxs","Box","sx","display","marginRight","height","width","marginBottom","style","fontSize","fontStyle","flex","border","borderRadius","flexFlow","padding","fontWeight","alignItems","paddingBottom","HelpIconFilled","IAMPoliciesIcon","paddingTop","dispatch","useAppDispatch","navigate","useNavigate","_useState","useState","_useState2","_slicedToArray","addLoading","setAddLoading","_useState3","_useState4","policyName","setPolicyName","_useState5","emptyPolicy","_useState6","policyDefinition","setPolicyDefinition","validSave","trim","indexOf","useEffect","setHelpName","Grid","item","xs","PageHeaderWrapper","BackLink","onClick","IAM_PAGES","POLICIES","actions","HelpMenu","PageLayout","FormLayout","title","AddAccessRuleIcon","helpBox","AddPolicyHelpBox","noValidate","autoComplete","onSubmit","e","preventDefault","api","policies","addPolicy","name","policy","then","res","concat","catch","err","setErrorSnackMessage","errorMessage","detailedError","error","detailedMessage","container","InputBox","autoFocus","validatePolicyname","target","CodeMirrorWrapper","textAlign","justifyContent","marginTop","gap","disabled","deselectCurrent","require","clipboardToIE11Formatting","module","exports","options","debug","message","reselectPrevious","range","selection","mark","success","document","createRange","getSelection","createElement","textContent","ariaHidden","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","format","clipboardData","console","warn","window","clearData","setData","onCopy","body","appendChild","selectNodeContents","addRange","execCommand","Error","copyKey","test","navigator","userAgent","replace","prompt","removeRange","removeAllRanges","removeChild","_typeof","obj","Symbol","iterator","constructor","prototype","Object","defineProperty","_react","_interopRequireDefault","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","call","_defineProperties","props","descriptor","configurable","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","result","Super","_getPrototypeOf","NewTarget","this","self","TypeError","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","getPrototypeOf","_React$PureComponent","subClass","superClass","create","_inherits","Constructor","protoProps","staticProps","_super","_this","instance","_classCallCheck","_len","args","Array","_key","event","_this$props","elem","Children","only","_this$props2","cloneElement","PureComponent","undefined","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/2661.32a75c53.chunk.js b/portal-ui/build/static/js/2661.32a75c53.chunk.js deleted file mode 100644 index 91ab61ee8b..0000000000 --- a/portal-ui/build/static/js/2661.32a75c53.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2661],{82661:function(e,n,t){t.r(n),t.d(n,{default:function(){return E}});var l=t(1413),a=t(93433),i=t(29439),s=t(72791),u=t(29945),o=t(87995),c=t(81551),r=t(31776),d=t(66315),f=t(56028),x=t(61889),p=t(20817),v=t(30829),h=t(20068),j=t(68096),b=t(72455),m=t(56786),Z=t(11135),g=t(25787),C=t(23814),k=t(80184),S=(0,b.Z)((function(e){return(0,Z.Z)((0,l.Z)({},C.gM))}));function F(e){var n=S();return(0,k.jsx)(p.Z,(0,l.Z)({InputProps:{classes:n}},e))}var L=(0,g.Z)((function(e){return(0,Z.Z)((0,l.Z)((0,l.Z)({},C.YI),C.Hr))}))((function(e){var n=e.classes,t=e.id,a=e.name,o=e.onChange,c=e.options,r=e.label,d=e.tooltip,f=void 0===d?"":d,p=e.value,b=e.disabled,Z=void 0!==b&&b,g=(0,s.useState)(c[0]),C=(0,i.Z)(g,2),S=C[0],L=C[1];return(0,k.jsx)(s.Fragment,{children:(0,k.jsxs)(x.ZP,{item:!0,xs:12,className:n.fieldContainer,children:[""!==r&&(0,k.jsxs)(v.Z,{htmlFor:t,className:n.inputLabel,children:[(0,k.jsx)("span",{children:r}),""!==f&&(0,k.jsx)("div",{className:n.tooltipContainer,children:(0,k.jsx)(h.Z,{title:f,placement:"top-start",children:(0,k.jsx)("div",{className:n.tooltip,children:(0,k.jsx)(u.byK,{})})})})]}),(0,k.jsx)(j.Z,{fullWidth:!0,children:(0,k.jsx)(m.Z,{id:t,options:c,getOptionLabel:function(e){return e.label},isOptionEqualToValue:function(e){return e.value===p},disabled:Z,renderInput:function(e){return(0,k.jsx)(F,(0,l.Z)((0,l.Z)({},e),{},{name:a}))},value:S,onChange:function(e,n){n&&(o(n.value),L(n))},autoHighlight:!0})})]})})})),E=function(e){var n=e.open,t=e.selectedBucket,x=e.closeModalAndRefresh,p=(0,c.TL)(),v=(0,s.useState)(!1),h=(0,i.Z)(v,2),j=h[0],b=h[1],m=(0,s.useState)(""),Z=(0,i.Z)(m,2),g=Z[0],S=Z[1],F=(0,s.useState)(""),E=(0,i.Z)(F,2),I=E[0],O=E[1],D=(0,s.useState)(""),R=(0,i.Z)(D,2),w=R[0],P=R[1],T=(0,s.useState)([]),y=(0,i.Z)(T,2),z=y[0],B=y[1],N=(0,s.useState)([]),A=(0,i.Z)(N,2),M=A[0],W=A[1],H=(0,s.useCallback)((function(){b(!0),r.h.admin.arnList().then((function(e){null!==e.data.arns&&W(e.data.arns),b(!1)})).catch((function(e){b(!1),p((0,o.zb)(e))}))}),[p]);(0,s.useEffect)((function(){H()}),[H]);var G=[{label:"PUT - Object Uploaded",value:d.Ln.Put},{label:"GET - Object accessed",value:d.Ln.Get},{label:"DELETE - Object Deleted",value:d.Ln.Delete},{label:"REPLICA - Object Replicated",value:d.Ln.Replica},{label:"ILM - Object Transitioned",value:d.Ln.Ilm}],K=null===M||void 0===M?void 0:M.map((function(e){return{label:e,value:e}}));return(0,k.jsx)(f.Z,{modalOpen:n,onClose:function(){x()},title:"Subscribe To Bucket Events",titleIcon:(0,k.jsx)(u.c3W,{}),children:(0,k.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),j||(b(!0),r.h.buckets.createBucketEvent(t,{configuration:{arn:w,events:z,prefix:g,suffix:I},ignoreExisting:!0}).then((function(){b(!1),x()})).catch((function(e){b(!1),p((0,o.zb)(e))})))},children:(0,k.jsxs)(u.rjZ,{container:!0,children:[(0,k.jsxs)(u.rjZ,{item:!0,xs:12,sx:C.oO.formScrollable,children:[(0,k.jsx)(u.rjZ,{item:!0,xs:12,sx:(0,l.Z)((0,l.Z)({},C.DF.formFieldRow),{},{"& div div .MuiOutlinedInput-root":{padding:0}}),children:(0,k.jsx)(L,{onChange:function(e){P(e)},id:"select-access-policy",name:"select-access-policy",label:"ARN",value:w,options:K||[]})}),(0,k.jsx)(u.rjZ,{item:!0,xs:12,sx:C.DF.formFieldRow,children:(0,k.jsx)(u.Wzg,{id:"prefix-input",name:"prefix-input",label:"Prefix",value:g,onChange:function(e){S(e.target.value)}})}),(0,k.jsx)(u.rjZ,{item:!0,xs:12,sx:C.DF.formFieldRow,children:(0,k.jsx)(u.Wzg,{id:"suffix-input",name:"suffix-input",label:"Suffix",value:I,onChange:function(e){O(e.target.value)}})}),(0,k.jsx)(u.rjZ,{item:!0,xs:12,sx:C.DF.formFieldRow,children:(0,k.jsx)(u.wQF,{columns:[{label:"Event",elementKey:"label"}],idField:"value",records:G,onSelect:function(e){var n=e.target,t=n.value,l=n.checked,i=(0,a.Z)(z);l?i.push(t):i=i.filter((function(e){return e!==t})),B(i)},selectedItems:z,noBackground:!0,customPaperHeight:"260px"})})]}),(0,k.jsxs)(u.rjZ,{item:!0,xs:12,sx:C.ID.modalButtonBar,children:[(0,k.jsx)(u.zxk,{id:"cancel-add-event",type:"button",variant:"regular",disabled:j,onClick:function(){x()},label:"Cancel"}),(0,k.jsx)(u.zxk,{id:"save-event",type:"submit",variant:"callAction",disabled:j||""===w||0===z.length,label:"Save"})]})]})})})}}}]); -//# sourceMappingURL=2661.32a75c53.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/2661.32a75c53.chunk.js.map b/portal-ui/build/static/js/2661.32a75c53.chunk.js.map deleted file mode 100644 index b128ee7ad0..0000000000 --- a/portal-ui/build/static/js/2661.32a75c53.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/2661.32a75c53.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/AutocompleteWrapper/AutocompleteWrapper.tsx","screens/Console/Buckets/BucketDetails/AddEvent.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 .\nimport React, { useState } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n FormControl,\n InputLabel,\n OutlinedInputProps,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\n\ninterface selectorTypes {\n label: string;\n value: string;\n}\n\ninterface SelectProps {\n options: selectorTypes[];\n value: string;\n label: string;\n id: string;\n name: string;\n tooltip?: string;\n onChange: (returnedValue: string) => void;\n disabled?: boolean;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n }),\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst AutocompleteWrapper = ({\n classes,\n id,\n name,\n onChange,\n options,\n label,\n tooltip = \"\",\n value,\n disabled = false,\n}: SelectProps) => {\n const [internalValue, setInternalValue] = useState(options[0]);\n\n const executeOnSelect = (_: any, selectedValue: any) => {\n if (selectedValue) {\n onChange(selectedValue.value);\n setInternalValue(selectedValue);\n }\n };\n\n return (\n \n \n {label !== \"\" && (\n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n
\n )}\n \n option.label}\n isOptionEqualToValue={(option) => option.value === value}\n disabled={disabled}\n renderInput={(params) => }\n value={internalValue}\n onChange={executeOnSelect}\n autoHighlight\n />\n \n
\n
\n );\n};\n\nexport default withStyles(styles)(AutocompleteWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { Button, DataTable, EventSubscriptionIcon, Grid, InputBox } from \"mds\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { api } from \"api\";\nimport { NotificationEventType } from \"api/consoleApi\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport AutocompleteWrapper from \"../../Common/FormComponents/AutocompleteWrapper/AutocompleteWrapper\";\nimport {\n formFieldStyles,\n modalBasic,\n modalStyleUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\n\ninterface IAddEventProps {\n open: boolean;\n selectedBucket: string;\n closeModalAndRefresh: () => void;\n}\n\nconst AddEvent = ({\n open,\n selectedBucket,\n closeModalAndRefresh,\n}: IAddEventProps) => {\n const dispatch = useAppDispatch();\n const [addLoading, setAddLoading] = useState(false);\n const [prefix, setPrefix] = useState(\"\");\n const [suffix, setSuffix] = useState(\"\");\n const [arn, setArn] = useState(\"\");\n const [selectedEvents, setSelectedEvents] = useState(\n [],\n );\n const [arnList, setArnList] = useState([]);\n\n const addRecord = (event: React.FormEvent) => {\n event.preventDefault();\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n api.buckets\n .createBucketEvent(selectedBucket, {\n configuration: {\n arn: arn,\n events: selectedEvents,\n prefix: prefix,\n suffix: suffix,\n },\n ignoreExisting: true,\n })\n .then(() => {\n setAddLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n };\n\n const fetchArnList = useCallback(() => {\n setAddLoading(true);\n api.admin\n .arnList()\n .then((res) => {\n if (res.data.arns !== null) {\n setArnList(res.data.arns);\n }\n setAddLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }, [dispatch]);\n\n useEffect(() => {\n fetchArnList();\n }, [fetchArnList]);\n\n const events = [\n { label: \"PUT - Object Uploaded\", value: NotificationEventType.Put },\n { label: \"GET - Object accessed\", value: NotificationEventType.Get },\n { label: \"DELETE - Object Deleted\", value: NotificationEventType.Delete },\n {\n label: \"REPLICA - Object Replicated\",\n value: NotificationEventType.Replica,\n },\n { label: \"ILM - Object Transitioned\", value: NotificationEventType.Ilm },\n ];\n\n const handleClick = (event: React.ChangeEvent) => {\n const targetD = event.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: NotificationEventType[] = [...selectedEvents];\n\n if (checked) {\n elements.push(value as NotificationEventType);\n } else {\n elements = elements.filter((element) => element !== value);\n }\n\n setSelectedEvents(elements);\n };\n\n const arnValues = arnList?.map((arnConstant) => ({\n label: arnConstant,\n value: arnConstant,\n }));\n\n return (\n {\n closeModalAndRefresh();\n }}\n title=\"Subscribe To Bucket Events\"\n titleIcon={}\n >\n ) => {\n addRecord(e);\n }}\n >\n \n \n \n {\n setArn(value);\n }}\n id=\"select-access-policy\"\n name=\"select-access-policy\"\n label={\"ARN\"}\n value={arn}\n options={arnValues || []}\n />\n \n \n ) => {\n setPrefix(e.target.value);\n }}\n />\n \n \n ) => {\n setSuffix(e.target.value);\n }}\n />\n \n \n \n \n \n \n {\n closeModalAndRefresh();\n }}\n label={\"Cancel\"}\n />\n \n \n \n \n \n );\n};\n\nexport default AddEvent;\n"],"names":["inputStyles","makeStyles","theme","createStyles","_objectSpread","inputFieldStyles","InputField","props","classes","_jsx","TextField","InputProps","withStyles","fieldBasic","tooltipHelper","_ref","id","name","onChange","options","label","_ref$tooltip","tooltip","value","_ref$disabled","disabled","_useState","useState","_useState2","_slicedToArray","internalValue","setInternalValue","React","children","_jsxs","Grid","item","xs","className","fieldContainer","InputLabel","htmlFor","inputLabel","tooltipContainer","Tooltip","title","placement","HelpIcon","FormControl","fullWidth","Autocomplete","getOptionLabel","option","isOptionEqualToValue","renderInput","params","_","selectedValue","autoHighlight","open","selectedBucket","closeModalAndRefresh","dispatch","useAppDispatch","addLoading","setAddLoading","_useState3","_useState4","prefix","setPrefix","_useState5","_useState6","suffix","setSuffix","_useState7","_useState8","arn","setArn","_useState9","_useState10","selectedEvents","setSelectedEvents","_useState11","_useState12","arnList","setArnList","fetchArnList","useCallback","api","admin","then","res","data","arns","catch","err","setModalErrorSnackMessage","useEffect","events","NotificationEventType","Put","Get","Delete","Replica","Ilm","arnValues","map","arnConstant","ModalWrapper","modalOpen","onClose","titleIcon","EventSubscriptionIcon","noValidate","autoComplete","onSubmit","e","preventDefault","buckets","createBucketEvent","configuration","ignoreExisting","container","sx","modalBasic","formScrollable","formFieldStyles","formFieldRow","padding","AutocompleteWrapper","InputBox","target","DataTable","columns","elementKey","idField","records","onSelect","event","targetD","checked","elements","_toConsumableArray","push","filter","element","selectedItems","noBackground","customPaperHeight","modalStyleUtils","modalButtonBar","Button","type","variant","onClick","length"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/2661.88895459.chunk.js b/portal-ui/build/static/js/2661.88895459.chunk.js new file mode 100644 index 0000000000..1c7fc7363c --- /dev/null +++ b/portal-ui/build/static/js/2661.88895459.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2661],{82661:function(e,n,t){t.r(n),t.d(n,{default:function(){return F}});var l=t(1413),a=t(93433),i=t(29439),s=t(72791),o=t(29945),u=t(87995),r=t(44690),c=t(31776),d=t(66315),f=t(56028),x=t(61889),v=t(20817),p=t(30829),b=t(20068),h=t(68096),j=t(72455),m=t(56786),Z=t(11135),g=t(25787),C=t(23814),S=t(80184),k=(0,j.Z)((function(e){return(0,Z.Z)((0,l.Z)({},C.gM))}));function L(e){var n=k();return(0,S.jsx)(v.Z,(0,l.Z)({InputProps:{classes:n}},e))}var E=(0,g.Z)((function(e){return(0,Z.Z)((0,l.Z)((0,l.Z)({},C.YI),C.Hr))}))((function(e){var n=e.classes,t=e.id,a=e.name,u=e.onChange,r=e.options,c=e.label,d=e.tooltip,f=void 0===d?"":d,v=e.value,j=e.disabled,Z=void 0!==j&&j,g=(0,s.useState)(r[0]),C=(0,i.Z)(g,2),k=C[0],E=C[1];return(0,S.jsx)(s.Fragment,{children:(0,S.jsxs)(x.ZP,{item:!0,xs:12,className:n.fieldContainer,children:[""!==c&&(0,S.jsxs)(p.Z,{htmlFor:t,className:n.inputLabel,children:[(0,S.jsx)("span",{children:c}),""!==f&&(0,S.jsx)("div",{className:n.tooltipContainer,children:(0,S.jsx)(b.Z,{title:f,placement:"top-start",children:(0,S.jsx)("div",{className:n.tooltip,children:(0,S.jsx)(o.byK,{})})})})]}),(0,S.jsx)(h.Z,{fullWidth:!0,children:(0,S.jsx)(m.Z,{id:t,options:r,getOptionLabel:function(e){return e.label},isOptionEqualToValue:function(e){return e.value===v},disabled:Z,renderInput:function(e){return(0,S.jsx)(L,(0,l.Z)((0,l.Z)({},e),{},{name:a}))},value:k,onChange:function(e,n){n&&(u(n.value),E(n))},autoHighlight:!0})})]})})})),F=function(e){var n=e.open,t=e.selectedBucket,x=e.closeModalAndRefresh,v=(0,r.TL)(),p=(0,s.useState)(!1),b=(0,i.Z)(p,2),h=b[0],j=b[1],m=(0,s.useState)(""),Z=(0,i.Z)(m,2),g=Z[0],k=Z[1],L=(0,s.useState)(""),F=(0,i.Z)(L,2),O=F[0],I=F[1],R=(0,s.useState)(""),D=(0,i.Z)(R,2),y=D[0],P=D[1],w=(0,s.useState)([]),N=(0,i.Z)(w,2),T=N[0],z=N[1],B=(0,s.useState)([]),A=(0,i.Z)(B,2),M=A[0],W=A[1],H=(0,s.useCallback)((function(){j(!0),c.h.admin.arnList().then((function(e){null!==e.data.arns&&W(e.data.arns),j(!1)})).catch((function(e){j(!1),v((0,u.zb)(e))}))}),[v]);(0,s.useEffect)((function(){H()}),[H]);var G=[{label:"PUT - Object Uploaded",value:d.Ln.Put},{label:"GET - Object accessed",value:d.Ln.Get},{label:"DELETE - Object Deleted",value:d.Ln.Delete},{label:"REPLICA - Object Replicated",value:d.Ln.Replica},{label:"ILM - Object Transitioned",value:d.Ln.Ilm},{label:"SCANNER - Object has too many versions / Prefixes has too many sub-folders",value:d.Ln.Scanner}],K=null===M||void 0===M?void 0:M.map((function(e){return{label:e,value:e}}));return(0,S.jsx)(f.Z,{modalOpen:n,onClose:function(){x()},title:"Subscribe To Bucket Events",titleIcon:(0,S.jsx)(o.c3W,{}),children:(0,S.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),h||(j(!0),c.h.buckets.createBucketEvent(t,{configuration:{arn:y,events:T,prefix:g,suffix:O},ignoreExisting:!0}).then((function(){j(!1),x()})).catch((function(e){j(!1),v((0,u.zb)(e))})))},children:(0,S.jsxs)(o.rjZ,{container:!0,children:[(0,S.jsxs)(o.rjZ,{item:!0,xs:12,sx:C.oO.formScrollable,children:[(0,S.jsx)(o.rjZ,{item:!0,xs:12,sx:(0,l.Z)((0,l.Z)({},C.DF.formFieldRow),{},{"& div div .MuiOutlinedInput-root":{padding:0}}),children:(0,S.jsx)(E,{onChange:function(e){P(e)},id:"select-access-policy",name:"select-access-policy",label:"ARN",value:y,options:K||[]})}),(0,S.jsx)(o.rjZ,{item:!0,xs:12,sx:C.DF.formFieldRow,children:(0,S.jsx)(o.Wzg,{id:"prefix-input",name:"prefix-input",label:"Prefix",value:g,onChange:function(e){k(e.target.value)}})}),(0,S.jsx)(o.rjZ,{item:!0,xs:12,sx:C.DF.formFieldRow,children:(0,S.jsx)(o.Wzg,{id:"suffix-input",name:"suffix-input",label:"Suffix",value:O,onChange:function(e){I(e.target.value)}})}),(0,S.jsx)(o.rjZ,{item:!0,xs:12,sx:C.DF.formFieldRow,children:(0,S.jsx)(o.wQF,{columns:[{label:"Event",elementKey:"label"}],idField:"value",records:G,onSelect:function(e){var n=e.target,t=n.value,l=n.checked,i=(0,a.Z)(T);l?i.push(t):i=i.filter((function(e){return e!==t})),z(i)},selectedItems:T,noBackground:!0,customPaperHeight:"260px"})})]}),(0,S.jsxs)(o.rjZ,{item:!0,xs:12,sx:C.ID.modalButtonBar,children:[(0,S.jsx)(o.zxk,{id:"cancel-add-event",type:"button",variant:"regular",disabled:h,onClick:function(){x()},label:"Cancel"}),(0,S.jsx)(o.zxk,{id:"save-event",type:"submit",variant:"callAction",disabled:h||""===y||0===T.length,label:"Save"})]})]})})})}}}]); +//# sourceMappingURL=2661.88895459.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/2661.88895459.chunk.js.map b/portal-ui/build/static/js/2661.88895459.chunk.js.map new file mode 100644 index 0000000000..12052e4427 --- /dev/null +++ b/portal-ui/build/static/js/2661.88895459.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/2661.88895459.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/AutocompleteWrapper/AutocompleteWrapper.tsx","screens/Console/Buckets/BucketDetails/AddEvent.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 .\nimport React, { useState } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n FormControl,\n InputLabel,\n OutlinedInputProps,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\n\ninterface selectorTypes {\n label: string;\n value: string;\n}\n\ninterface SelectProps {\n options: selectorTypes[];\n value: string;\n label: string;\n id: string;\n name: string;\n tooltip?: string;\n onChange: (returnedValue: string) => void;\n disabled?: boolean;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n }),\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst AutocompleteWrapper = ({\n classes,\n id,\n name,\n onChange,\n options,\n label,\n tooltip = \"\",\n value,\n disabled = false,\n}: SelectProps) => {\n const [internalValue, setInternalValue] = useState(options[0]);\n\n const executeOnSelect = (_: any, selectedValue: any) => {\n if (selectedValue) {\n onChange(selectedValue.value);\n setInternalValue(selectedValue);\n }\n };\n\n return (\n \n \n {label !== \"\" && (\n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n
\n )}\n \n option.label}\n isOptionEqualToValue={(option) => option.value === value}\n disabled={disabled}\n renderInput={(params) => }\n value={internalValue}\n onChange={executeOnSelect}\n autoHighlight\n />\n \n
\n
\n );\n};\n\nexport default withStyles(styles)(AutocompleteWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { Button, DataTable, EventSubscriptionIcon, Grid, InputBox } from \"mds\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { api } from \"api\";\nimport { NotificationEventType } from \"api/consoleApi\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport AutocompleteWrapper from \"../../Common/FormComponents/AutocompleteWrapper/AutocompleteWrapper\";\nimport {\n formFieldStyles,\n modalBasic,\n modalStyleUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\n\ninterface IAddEventProps {\n open: boolean;\n selectedBucket: string;\n closeModalAndRefresh: () => void;\n}\n\nconst AddEvent = ({\n open,\n selectedBucket,\n closeModalAndRefresh,\n}: IAddEventProps) => {\n const dispatch = useAppDispatch();\n const [addLoading, setAddLoading] = useState(false);\n const [prefix, setPrefix] = useState(\"\");\n const [suffix, setSuffix] = useState(\"\");\n const [arn, setArn] = useState(\"\");\n const [selectedEvents, setSelectedEvents] = useState(\n [],\n );\n const [arnList, setArnList] = useState([]);\n\n const addRecord = (event: React.FormEvent) => {\n event.preventDefault();\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n api.buckets\n .createBucketEvent(selectedBucket, {\n configuration: {\n arn: arn,\n events: selectedEvents,\n prefix: prefix,\n suffix: suffix,\n },\n ignoreExisting: true,\n })\n .then(() => {\n setAddLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n };\n\n const fetchArnList = useCallback(() => {\n setAddLoading(true);\n api.admin\n .arnList()\n .then((res) => {\n if (res.data.arns !== null) {\n setArnList(res.data.arns);\n }\n setAddLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }, [dispatch]);\n\n useEffect(() => {\n fetchArnList();\n }, [fetchArnList]);\n\n const events = [\n { label: \"PUT - Object Uploaded\", value: NotificationEventType.Put },\n { label: \"GET - Object accessed\", value: NotificationEventType.Get },\n { label: \"DELETE - Object Deleted\", value: NotificationEventType.Delete },\n {\n label: \"REPLICA - Object Replicated\",\n value: NotificationEventType.Replica,\n },\n { label: \"ILM - Object Transitioned\", value: NotificationEventType.Ilm },\n {\n label:\n \"SCANNER - Object has too many versions / Prefixes has too many sub-folders\",\n value: NotificationEventType.Scanner,\n },\n ];\n\n const handleClick = (event: React.ChangeEvent) => {\n const targetD = event.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: NotificationEventType[] = [...selectedEvents];\n\n if (checked) {\n elements.push(value as NotificationEventType);\n } else {\n elements = elements.filter((element) => element !== value);\n }\n\n setSelectedEvents(elements);\n };\n\n const arnValues = arnList?.map((arnConstant) => ({\n label: arnConstant,\n value: arnConstant,\n }));\n\n return (\n {\n closeModalAndRefresh();\n }}\n title=\"Subscribe To Bucket Events\"\n titleIcon={}\n >\n ) => {\n addRecord(e);\n }}\n >\n \n \n \n {\n setArn(value);\n }}\n id=\"select-access-policy\"\n name=\"select-access-policy\"\n label={\"ARN\"}\n value={arn}\n options={arnValues || []}\n />\n \n \n ) => {\n setPrefix(e.target.value);\n }}\n />\n \n \n ) => {\n setSuffix(e.target.value);\n }}\n />\n \n \n \n \n \n \n {\n closeModalAndRefresh();\n }}\n label={\"Cancel\"}\n />\n \n \n \n \n \n );\n};\n\nexport default AddEvent;\n"],"names":["inputStyles","makeStyles","theme","createStyles","_objectSpread","inputFieldStyles","InputField","props","classes","_jsx","TextField","InputProps","withStyles","fieldBasic","tooltipHelper","_ref","id","name","onChange","options","label","_ref$tooltip","tooltip","value","_ref$disabled","disabled","_useState","useState","_useState2","_slicedToArray","internalValue","setInternalValue","React","children","_jsxs","Grid","item","xs","className","fieldContainer","InputLabel","htmlFor","inputLabel","tooltipContainer","Tooltip","title","placement","HelpIcon","FormControl","fullWidth","Autocomplete","getOptionLabel","option","isOptionEqualToValue","renderInput","params","_","selectedValue","autoHighlight","open","selectedBucket","closeModalAndRefresh","dispatch","useAppDispatch","addLoading","setAddLoading","_useState3","_useState4","prefix","setPrefix","_useState5","_useState6","suffix","setSuffix","_useState7","_useState8","arn","setArn","_useState9","_useState10","selectedEvents","setSelectedEvents","_useState11","_useState12","arnList","setArnList","fetchArnList","useCallback","api","admin","then","res","data","arns","catch","err","setModalErrorSnackMessage","useEffect","events","NotificationEventType","Put","Get","Delete","Replica","Ilm","Scanner","arnValues","map","arnConstant","ModalWrapper","modalOpen","onClose","titleIcon","EventSubscriptionIcon","noValidate","autoComplete","onSubmit","e","preventDefault","buckets","createBucketEvent","configuration","ignoreExisting","container","sx","modalBasic","formScrollable","formFieldStyles","formFieldRow","padding","AutocompleteWrapper","InputBox","target","DataTable","columns","elementKey","idField","records","onSelect","event","targetD","checked","elements","_toConsumableArray","push","filter","element","selectedItems","noBackground","customPaperHeight","modalStyleUtils","modalButtonBar","Button","type","variant","onClick","length"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/2763.8a8f4e01.chunk.js b/portal-ui/build/static/js/2763.ced3d1e6.chunk.js similarity index 89% rename from portal-ui/build/static/js/2763.8a8f4e01.chunk.js rename to portal-ui/build/static/js/2763.ced3d1e6.chunk.js index 146ec010a5..5dc70ac401 100644 --- a/portal-ui/build/static/js/2763.8a8f4e01.chunk.js +++ b/portal-ui/build/static/js/2763.ced3d1e6.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2763],{22763:function(e,t,n){n.r(t);var r=n(1413),a=n(29439),o=n(72791),u=n(9505),i=n(23508),s=n(29945),c=n(87995),l=n(81551),d=n(80184);t.default=function(e){var t=e.deleteOpen,n=e.currentTags,f=e.selectedTag,p=e.onCloseAndUpdate,h=e.bucketName,g=(0,l.TL)(),k=(0,a.Z)(f,2),m=k[0],T=k[1],b=(0,u.Z)((function(){return p(!0)}),(function(e){return g((0,c.Ih)(e))})),w=(0,a.Z)(b,2),x=w[0],C=w[1];if(!f)return null;return(0,d.jsx)(i.Z,{title:"Delete Tag",confirmText:"Delete",isOpen:t,titleIcon:(0,d.jsx)(s.NvT,{}),isLoading:x,onConfirm:function(){var e=(0,r.Z)({},n);delete e[m],C("PUT","/api/v1/buckets/".concat(h,"/tags"),{tags:e})},onClose:function(){return p(!1)},confirmationContent:(0,d.jsxs)(o.Fragment,{children:["Are you sure you want to delete the tag"," ",(0,d.jsxs)("b",{style:{maxWidth:200,whiteSpace:"normal",wordWrap:"break-word"},children:[m," : ",T]})," ","?"]})})}}}]); -//# sourceMappingURL=2763.8a8f4e01.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[2763],{22763:function(e,t,n){n.r(t);var r=n(1413),a=n(29439),o=n(72791),u=n(9505),i=n(23508),s=n(29945),c=n(87995),l=n(44690),d=n(80184);t.default=function(e){var t=e.deleteOpen,n=e.currentTags,f=e.selectedTag,p=e.onCloseAndUpdate,h=e.bucketName,g=(0,l.TL)(),k=(0,a.Z)(f,2),m=k[0],T=k[1],b=(0,u.Z)((function(){return p(!0)}),(function(e){return g((0,c.Ih)(e))})),w=(0,a.Z)(b,2),x=w[0],C=w[1];if(!f)return null;return(0,d.jsx)(i.Z,{title:"Delete Tag",confirmText:"Delete",isOpen:t,titleIcon:(0,d.jsx)(s.NvT,{}),isLoading:x,onConfirm:function(){var e=(0,r.Z)({},n);delete e[m],C("PUT","/api/v1/buckets/".concat(h,"/tags"),{tags:e})},onClose:function(){return p(!1)},confirmationContent:(0,d.jsxs)(o.Fragment,{children:["Are you sure you want to delete the tag"," ",(0,d.jsxs)("b",{style:{maxWidth:200,whiteSpace:"normal",wordWrap:"break-word"},children:[m," : ",T]})," ","?"]})})}}}]); +//# sourceMappingURL=2763.ced3d1e6.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/2763.8a8f4e01.chunk.js.map b/portal-ui/build/static/js/2763.ced3d1e6.chunk.js.map similarity index 98% rename from portal-ui/build/static/js/2763.8a8f4e01.chunk.js.map rename to portal-ui/build/static/js/2763.ced3d1e6.chunk.js.map index 373c5b562a..cf5b8d25ac 100644 --- a/portal-ui/build/static/js/2763.8a8f4e01.chunk.js.map +++ b/portal-ui/build/static/js/2763.ced3d1e6.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/2763.8a8f4e01.chunk.js","mappings":"yNA0FA,UA1D6B,SAAHA,GAMI,IAL5BC,EAAUD,EAAVC,WACAC,EAAWF,EAAXE,YACAC,EAAWH,EAAXG,YACAC,EAAgBJ,EAAhBI,iBACAC,EAAUL,EAAVK,WAEMC,GAAWC,EAAAA,EAAAA,MACjBC,GAAAC,EAAAA,EAAAA,GAA2BN,EAAW,GAA/BO,EAAMF,EAAA,GAAEG,EAAQH,EAAA,GAOvBI,GAAyCC,EAAAA,EAAAA,IALpB,WAAH,OAAST,GAAiB,EAAM,IAC/B,SAACU,GAAyB,OAC3CR,GAASS,EAAAA,EAAAA,IAAqBD,GAAM,IAGmCE,GAAAP,EAAAA,EAAAA,GAAAG,EAAA,GAAlEK,EAAaD,EAAA,GAAEE,EAAeF,EAAA,GAErC,IAAKb,EACH,OAAO,KAYT,OACEgB,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CACZC,MAAK,aACLC,YAAa,SACbC,OAAQtB,EACRuB,WAAWL,EAAAA,EAAAA,KAACM,EAAAA,IAAiB,IAC7BC,UAAWT,EACXU,UAhBoB,WACtB,IAAMC,GAAWC,EAAAA,EAAAA,GAAA,GAAQ3B,UAClB0B,EAAYlB,GAEnBQ,EAAgB,MAAM,mBAADY,OAAqBzB,EAAU,SAAS,CAC3D0B,KAAMH,GAEV,EAUII,QAzBY,WAAH,OAAS5B,GAAiB,EAAO,EA0B1C6B,qBACEC,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CAAC,0CACgC,KACxCF,EAAAA,EAAAA,MAAA,KACEG,MAAO,CACLC,SAAU,IACVC,WAAY,SACZC,SAAU,cACVJ,SAAA,CAED1B,EAAO,MAAIC,KACT,IAAI,QAMnB,C","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, { Fragment } from \"react\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\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}\n\nconst DeleteBucketTagModal = ({\n deleteOpen,\n currentTags,\n selectedTag,\n onCloseAndUpdate,\n bucketName,\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 DeleteBucketTagModal;\n"],"names":["_ref","deleteOpen","currentTags","selectedTag","onCloseAndUpdate","bucketName","dispatch","useAppDispatch","_selectedTag","_slicedToArray","tagKey","tagLabel","_useApi","useApi","err","setErrorSnackMessage","_useApi2","deleteLoading","invokeDeleteApi","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","cleanObject","_objectSpread","concat","tags","onClose","confirmationContent","_jsxs","Fragment","children","style","maxWidth","whiteSpace","wordWrap"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/2763.ced3d1e6.chunk.js","mappings":"yNA0FA,UA1D6B,SAAHA,GAMI,IAL5BC,EAAUD,EAAVC,WACAC,EAAWF,EAAXE,YACAC,EAAWH,EAAXG,YACAC,EAAgBJ,EAAhBI,iBACAC,EAAUL,EAAVK,WAEMC,GAAWC,EAAAA,EAAAA,MACjBC,GAAAC,EAAAA,EAAAA,GAA2BN,EAAW,GAA/BO,EAAMF,EAAA,GAAEG,EAAQH,EAAA,GAOvBI,GAAyCC,EAAAA,EAAAA,IALpB,WAAH,OAAST,GAAiB,EAAM,IAC/B,SAACU,GAAyB,OAC3CR,GAASS,EAAAA,EAAAA,IAAqBD,GAAM,IAGmCE,GAAAP,EAAAA,EAAAA,GAAAG,EAAA,GAAlEK,EAAaD,EAAA,GAAEE,EAAeF,EAAA,GAErC,IAAKb,EACH,OAAO,KAYT,OACEgB,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CACZC,MAAK,aACLC,YAAa,SACbC,OAAQtB,EACRuB,WAAWL,EAAAA,EAAAA,KAACM,EAAAA,IAAiB,IAC7BC,UAAWT,EACXU,UAhBoB,WACtB,IAAMC,GAAWC,EAAAA,EAAAA,GAAA,GAAQ3B,UAClB0B,EAAYlB,GAEnBQ,EAAgB,MAAM,mBAADY,OAAqBzB,EAAU,SAAS,CAC3D0B,KAAMH,GAEV,EAUII,QAzBY,WAAH,OAAS5B,GAAiB,EAAO,EA0B1C6B,qBACEC,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CAAC,0CACgC,KACxCF,EAAAA,EAAAA,MAAA,KACEG,MAAO,CACLC,SAAU,IACVC,WAAY,SACZC,SAAU,cACVJ,SAAA,CAED1B,EAAO,MAAIC,KACT,IAAI,QAMnB,C","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, { Fragment } from \"react\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\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}\n\nconst DeleteBucketTagModal = ({\n deleteOpen,\n currentTags,\n selectedTag,\n onCloseAndUpdate,\n bucketName,\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 DeleteBucketTagModal;\n"],"names":["_ref","deleteOpen","currentTags","selectedTag","onCloseAndUpdate","bucketName","dispatch","useAppDispatch","_selectedTag","_slicedToArray","tagKey","tagLabel","_useApi","useApi","err","setErrorSnackMessage","_useApi2","deleteLoading","invokeDeleteApi","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","cleanObject","_objectSpread","concat","tags","onClose","confirmationContent","_jsxs","Fragment","children","style","maxWidth","whiteSpace","wordWrap"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/3034.420387d3.chunk.js b/portal-ui/build/static/js/3034.e1fff37c.chunk.js similarity index 98% rename from portal-ui/build/static/js/3034.420387d3.chunk.js rename to portal-ui/build/static/js/3034.e1fff37c.chunk.js index 3bb9972e60..9adc1e433c 100644 --- a/portal-ui/build/static/js/3034.420387d3.chunk.js +++ b/portal-ui/build/static/js/3034.e1fff37c.chunk.js @@ -1,2 +1,2 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[3034],{21435:function(e,n,t){"use strict";var r=t(29439),o=t(1413),i=t(72791),a=t(20817),u=t(61889),c=t(30829),s=t(20068),l=t(13400),d=t(20165),f=t(3579),p=t(11135),x=t(72455),v=t(25787),m=t(23814),h=t(29945),Z=t(63733),j=t(80184),b=(0,x.Z)((function(e){return(0,p.Z)((0,o.Z)({},m.gM))}));function y(e){var n=b();return(0,j.jsx)(a.Z,(0,o.Z)({InputProps:{classes:n}},e))}n.Z=(0,v.Z)((function(e){return(0,p.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},m.YI),m.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}}}))}))((function(e){var n=e.label,t=e.onChange,a=e.value,p=e.id,x=e.name,v=e.type,m=void 0===v?"text":v,b=e.autoComplete,C=void 0===b?"off":b,g=e.disabled,k=void 0!==g&&g,M=e.multiline,F=void 0!==M&&M,I=e.tooltip,S=void 0===I?"":I,K=e.index,P=void 0===K?0:K,_=e.error,w=void 0===_?"":_,N=e.required,z=void 0!==N&&N,E=e.placeholder,R=void 0===E?"":E,A=e.min,L=e.max,O=e.overlayId,B=e.overlayIcon,T=void 0===B?null:B,W=e.overlayObject,Y=void 0===W?null:W,D=e.extraInputProps,V=void 0===D?{}:D,q=e.overlayAction,G=e.noLabelMinWidth,H=void 0!==G&&G,X=e.pattern,J=void 0===X?"":X,Q=e.autoFocus,U=void 0!==Q&&Q,$=e.classes,ee=e.className,ne=void 0===ee?"":ee,te=e.onKeyPress,re=e.onFocus,oe=e.onPaste,ie=(0,o.Z)({"data-index":P},V),ae=(0,i.useState)(!1),ue=(0,r.Z)(ae,2),ce=ue[0],se=ue[1];"number"===m&&A&&(ie.min=A),"number"===m&&L&&(ie.max=L),""!==J&&(ie.pattern=J);var le=T,de=m;return"password"===m&&null===T&&(le=ce?(0,j.jsx)(d.Z,{}):(0,j.jsx)(f.Z,{}),de=ce?"text":"password"),(0,j.jsx)(i.Fragment,{children:(0,j.jsxs)(u.ZP,{container:!0,className:(0,Z.Z)(""!==ne?ne:"",""!==w?$.errorInField:$.inputBoxContainer),children:[""!==n&&(0,j.jsxs)(c.Z,{htmlFor:p,className:H?$.noMinWidthLabel:$.inputLabel,children:[(0,j.jsxs)("span",{children:[n,z?"*":""]}),""!==S&&(0,j.jsx)("div",{className:$.tooltipContainer,children:(0,j.jsx)(s.Z,{title:S,placement:"top-start",children:(0,j.jsx)("div",{className:$.tooltip,children:(0,j.jsx)(h.byK,{})})})})]}),(0,j.jsxs)("div",{className:$.textBoxContainer,children:[(0,j.jsx)(y,{id:p,name:x,fullWidth:!0,value:a,autoFocus:U,disabled:k,onChange:t,type:de,multiline:F,autoComplete:C,inputProps:ie,error:""!==w,helperText:w,placeholder:R,className:$.inputRebase,onKeyPress:te,onFocus:re,onPaste:oe}),le&&(0,j.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==n?"withLabel":""),children:(0,j.jsx)(l.Z,{onClick:q?function(){q()}:function(){return se(!ce)},id:O,size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:le})}),Y&&(0,j.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==n?"withLabel":""),children:Y})]})]})})}))},33034:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return Z}});var r=t(72791),o=t(29945),i=t(57689),a=t(56087),u=t(87995),c=t(81551),s=t(29439),l=t(21435),d=t(9505),f=t(40214),p=t(23814),x=t(80184),v=function(e){var n=e.onSuccess,t=e.onError,i=(0,d.Z)(n,t),a=(0,s.Z)(i,2),u=a[0],c=a[1],v=(0,r.useState)(""),m=(0,s.Z)(v,2),h=m[0],Z=m[1],j=""!==h.trim()&&-1===h.indexOf(" ");return(0,x.jsx)(o.Xgh,{children:(0,x.jsx)(o.ltY,{title:"Create Key",icon:(0,x.jsx)(o.sR0,{}),helpBox:(0,x.jsx)(f.Z,{helpText:"Encryption Key",contents:["Create a new cryptographic key in the Key Management Service server connected to MINIO."]}),children:(0,x.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),c("POST","/api/v1/kms/keys/",{key:h})},children:(0,x.jsxs)(o.rjZ,{container:!0,children:[(0,x.jsx)(o.rjZ,{item:!0,xs:12,children:(0,x.jsx)(l.Z,{id:"key-name",name:"key-name",label:"Key Name",autoFocus:!0,value:h,error:function(e){return-1!==e.indexOf(" ")?"Key name cannot contain spaces":""}(h),onChange:function(e){Z(e.target.value)}})}),(0,x.jsxs)(o.rjZ,{item:!0,xs:12,sx:p.ID.modalButtonBar,children:[(0,x.jsx)(o.zxk,{id:"clear",type:"button",variant:"regular",onClick:function(){Z("")},label:"Clear"}),(0,x.jsx)(o.zxk,{id:"save-key",type:"submit",variant:"callAction",color:"primary",disabled:u||!j,label:"Save"})]})]})})})})},m=t(47974),h=t(99670),Z=function(){var e=(0,c.TL)(),n=(0,i.s0)();return(0,r.useEffect)((function(){e((0,u.Sc)("add_key"))}),[]),(0,x.jsx)(r.Fragment,{children:(0,x.jsxs)(o.rjZ,{item:!0,xs:12,children:[(0,x.jsx)(m.Z,{label:(0,x.jsx)(o.hbI,{label:"Keys",onClick:function(){return n(a.gA.KMS_KEYS)}}),actions:(0,x.jsx)(h.Z,{})}),(0,x.jsx)(v,{onError:function(n){return e((0,u.Ih)(n))},onSuccess:function(){return n("".concat(a.gA.KMS_KEYS))}})]})})}},40214:function(e,n,t){"use strict";var r=t(72791),o=t(29945),i=t(80184);n.Z=function(e){var n=e.helpText,t=e.contents;return(0,i.jsx)(o.KfX,{iconComponent:(0,i.jsx)(o.M9A,{}),title:n,help:(0,i.jsx)(r.Fragment,{children:t.map((function(e){return(0,i.jsx)(o.xuv,{sx:{paddingBottom:"20px"},children:e})}))})})}},3579:function(e,n,t){"use strict";var r=t(64836);n.Z=void 0;var o=r(t(45649)),i=t(80184),a=(0,o.default)((0,i.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"}),"RemoveRedEye");n.Z=a},20165:function(e,n,t){"use strict";var r=t(64836);n.Z=void 0;var o=r(t(45649)),i=t(80184),a=(0,o.default)((0,i.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}),"VisibilityOff");n.Z=a},45649:function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return r.createSvgIcon}});var r=t(28610)},31260:function(e,n,t){"use strict";var r=t(78949);n.Z=r.Z},28610:function(e,n,t){"use strict";t.r(n),t.d(n,{capitalize:function(){return o.Z},createChainedFunction:function(){return i.Z},createSvgIcon:function(){return a.Z},debounce:function(){return u.Z},deprecatedPropType:function(){return c},isMuiElement:function(){return s.Z},ownerDocument:function(){return l.Z},ownerWindow:function(){return d.Z},requirePropFactory:function(){return f},setRef:function(){return p},unstable_ClassNameGenerator:function(){return y},unstable_useEnhancedEffect:function(){return x.Z},unstable_useId:function(){return v.Z},unsupportedProp:function(){return m},useControlled:function(){return h.Z},useEventCallback:function(){return Z.Z},useForkRef:function(){return j.Z},useIsFocusVisible:function(){return b.Z}});var r=t(55902),o=t(14036),i=t(31260),a=t(76189),u=t(83199);var c=function(e,n){return function(){return null}},s=t(19103),l=t(98301),d=t(17602);t(87462);var f=function(e,n){return function(){return null}},p=t(62971).Z,x=t(40162),v=t(67384);var m=function(e,n,t,r,o){return null},h=t(98278),Z=t(89683),j=t(42071),b=t(23031),y={configure:function(e){r.Z.configure(e)}}},64836:function(e){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); -//# sourceMappingURL=3034.420387d3.chunk.js.map \ No newline at end of file +(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[3034],{21435:function(e,n,t){"use strict";var r=t(29439),o=t(1413),i=t(72791),a=t(20817),u=t(61889),c=t(30829),s=t(20068),l=t(13400),d=t(20165),f=t(3579),p=t(11135),x=t(72455),v=t(25787),m=t(23814),h=t(29945),Z=t(63733),j=t(80184),b=(0,x.Z)((function(e){return(0,p.Z)((0,o.Z)({},m.gM))}));function y(e){var n=b();return(0,j.jsx)(a.Z,(0,o.Z)({InputProps:{classes:n}},e))}n.Z=(0,v.Z)((function(e){return(0,p.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},m.YI),m.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}}}))}))((function(e){var n=e.label,t=e.onChange,a=e.value,p=e.id,x=e.name,v=e.type,m=void 0===v?"text":v,b=e.autoComplete,C=void 0===b?"off":b,g=e.disabled,k=void 0!==g&&g,M=e.multiline,F=void 0!==M&&M,I=e.tooltip,S=void 0===I?"":I,K=e.index,P=void 0===K?0:K,_=e.error,w=void 0===_?"":_,N=e.required,z=void 0!==N&&N,E=e.placeholder,R=void 0===E?"":E,A=e.min,L=e.max,O=e.overlayId,B=e.overlayIcon,T=void 0===B?null:B,W=e.overlayObject,Y=void 0===W?null:W,D=e.extraInputProps,V=void 0===D?{}:D,q=e.overlayAction,G=e.noLabelMinWidth,H=void 0!==G&&G,X=e.pattern,J=void 0===X?"":X,Q=e.autoFocus,U=void 0!==Q&&Q,$=e.classes,ee=e.className,ne=void 0===ee?"":ee,te=e.onKeyPress,re=e.onFocus,oe=e.onPaste,ie=(0,o.Z)({"data-index":P},V),ae=(0,i.useState)(!1),ue=(0,r.Z)(ae,2),ce=ue[0],se=ue[1];"number"===m&&A&&(ie.min=A),"number"===m&&L&&(ie.max=L),""!==J&&(ie.pattern=J);var le=T,de=m;return"password"===m&&null===T&&(le=ce?(0,j.jsx)(d.Z,{}):(0,j.jsx)(f.Z,{}),de=ce?"text":"password"),(0,j.jsx)(i.Fragment,{children:(0,j.jsxs)(u.ZP,{container:!0,className:(0,Z.Z)(""!==ne?ne:"",""!==w?$.errorInField:$.inputBoxContainer),children:[""!==n&&(0,j.jsxs)(c.Z,{htmlFor:p,className:H?$.noMinWidthLabel:$.inputLabel,children:[(0,j.jsxs)("span",{children:[n,z?"*":""]}),""!==S&&(0,j.jsx)("div",{className:$.tooltipContainer,children:(0,j.jsx)(s.Z,{title:S,placement:"top-start",children:(0,j.jsx)("div",{className:$.tooltip,children:(0,j.jsx)(h.byK,{})})})})]}),(0,j.jsxs)("div",{className:$.textBoxContainer,children:[(0,j.jsx)(y,{id:p,name:x,fullWidth:!0,value:a,autoFocus:U,disabled:k,onChange:t,type:de,multiline:F,autoComplete:C,inputProps:ie,error:""!==w,helperText:w,placeholder:R,className:$.inputRebase,onKeyPress:te,onFocus:re,onPaste:oe}),le&&(0,j.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==n?"withLabel":""),children:(0,j.jsx)(l.Z,{onClick:q?function(){q()}:function(){return se(!ce)},id:O,size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:le})}),Y&&(0,j.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==n?"withLabel":""),children:Y})]})]})})}))},33034:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return Z}});var r=t(72791),o=t(29945),i=t(57689),a=t(56087),u=t(87995),c=t(44690),s=t(29439),l=t(21435),d=t(9505),f=t(40214),p=t(23814),x=t(80184),v=function(e){var n=e.onSuccess,t=e.onError,i=(0,d.Z)(n,t),a=(0,s.Z)(i,2),u=a[0],c=a[1],v=(0,r.useState)(""),m=(0,s.Z)(v,2),h=m[0],Z=m[1],j=""!==h.trim()&&-1===h.indexOf(" ");return(0,x.jsx)(o.Xgh,{children:(0,x.jsx)(o.ltY,{title:"Create Key",icon:(0,x.jsx)(o.sR0,{}),helpBox:(0,x.jsx)(f.Z,{helpText:"Encryption Key",contents:["Create a new cryptographic key in the Key Management Service server connected to MINIO."]}),children:(0,x.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),c("POST","/api/v1/kms/keys/",{key:h})},children:(0,x.jsxs)(o.rjZ,{container:!0,children:[(0,x.jsx)(o.rjZ,{item:!0,xs:12,children:(0,x.jsx)(l.Z,{id:"key-name",name:"key-name",label:"Key Name",autoFocus:!0,value:h,error:function(e){return-1!==e.indexOf(" ")?"Key name cannot contain spaces":""}(h),onChange:function(e){Z(e.target.value)}})}),(0,x.jsxs)(o.rjZ,{item:!0,xs:12,sx:p.ID.modalButtonBar,children:[(0,x.jsx)(o.zxk,{id:"clear",type:"button",variant:"regular",onClick:function(){Z("")},label:"Clear"}),(0,x.jsx)(o.zxk,{id:"save-key",type:"submit",variant:"callAction",color:"primary",disabled:u||!j,label:"Save"})]})]})})})})},m=t(47974),h=t(99670),Z=function(){var e=(0,c.TL)(),n=(0,i.s0)();return(0,r.useEffect)((function(){e((0,u.Sc)("add_key"))}),[]),(0,x.jsx)(r.Fragment,{children:(0,x.jsxs)(o.rjZ,{item:!0,xs:12,children:[(0,x.jsx)(m.Z,{label:(0,x.jsx)(o.hbI,{label:"Keys",onClick:function(){return n(a.gA.KMS_KEYS)}}),actions:(0,x.jsx)(h.Z,{})}),(0,x.jsx)(v,{onError:function(n){return e((0,u.Ih)(n))},onSuccess:function(){return n("".concat(a.gA.KMS_KEYS))}})]})})}},40214:function(e,n,t){"use strict";var r=t(72791),o=t(29945),i=t(80184);n.Z=function(e){var n=e.helpText,t=e.contents;return(0,i.jsx)(o.KfX,{iconComponent:(0,i.jsx)(o.M9A,{}),title:n,help:(0,i.jsx)(r.Fragment,{children:t.map((function(e){return(0,i.jsx)(o.xuv,{sx:{paddingBottom:"20px"},children:e})}))})})}},3579:function(e,n,t){"use strict";var r=t(64836);n.Z=void 0;var o=r(t(45649)),i=t(80184),a=(0,o.default)((0,i.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"}),"RemoveRedEye");n.Z=a},20165:function(e,n,t){"use strict";var r=t(64836);n.Z=void 0;var o=r(t(45649)),i=t(80184),a=(0,o.default)((0,i.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}),"VisibilityOff");n.Z=a},45649:function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return r.createSvgIcon}});var r=t(28610)},31260:function(e,n,t){"use strict";var r=t(78949);n.Z=r.Z},28610:function(e,n,t){"use strict";t.r(n),t.d(n,{capitalize:function(){return o.Z},createChainedFunction:function(){return i.Z},createSvgIcon:function(){return a.Z},debounce:function(){return u.Z},deprecatedPropType:function(){return c},isMuiElement:function(){return s.Z},ownerDocument:function(){return l.Z},ownerWindow:function(){return d.Z},requirePropFactory:function(){return f},setRef:function(){return p},unstable_ClassNameGenerator:function(){return y},unstable_useEnhancedEffect:function(){return x.Z},unstable_useId:function(){return v.Z},unsupportedProp:function(){return m},useControlled:function(){return h.Z},useEventCallback:function(){return Z.Z},useForkRef:function(){return j.Z},useIsFocusVisible:function(){return b.Z}});var r=t(55902),o=t(14036),i=t(31260),a=t(76189),u=t(83199);var c=function(e,n){return function(){return null}},s=t(19103),l=t(98301),d=t(17602);t(87462);var f=function(e,n){return function(){return null}},p=t(62971).Z,x=t(40162),v=t(67384);var m=function(e,n,t,r,o){return null},h=t(98278),Z=t(89683),j=t(42071),b=t(23031),y={configure:function(e){r.Z.configure(e)}}},64836:function(e){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); +//# sourceMappingURL=3034.e1fff37c.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/3034.420387d3.chunk.js.map b/portal-ui/build/static/js/3034.e1fff37c.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/3034.420387d3.chunk.js.map rename to portal-ui/build/static/js/3034.e1fff37c.chunk.js.map index 7691d17fd1..3b27bc4181 100644 --- a/portal-ui/build/static/js/3034.420387d3.chunk.js.map +++ b/portal-ui/build/static/js/3034.e1fff37c.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/3034.420387d3.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/KMS/AddKeyForm.tsx","screens/Console/KMS/AddKey.tsx","screens/Console/KMS/KMSHelpbox.tsx","../node_modules/@mui/icons-material/RemoveRedEye.js","../node_modules/@mui/icons-material/VisibilityOff.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/esm/deprecatedPropType.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/esm/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/esm/unsupportedProp.js","../node_modules/@mui/material/utils/index.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { ClipboardEvent, useState } from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n onKeyPress?: (e: any) => void;\n onFocus?: () => void;\n onPaste?: (e: ClipboardEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayId?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n }),\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayId,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n onFocus,\n onPaste,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n const [toggleTextInput, setToggleTextInput] = useState(false);\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n let inputBoxWrapperIcon = overlayIcon;\n let inputBoxWrapperType = type;\n\n if (type === \"password\" && overlayIcon === null) {\n inputBoxWrapperIcon = toggleTextInput ? (\n \n ) : (\n \n );\n inputBoxWrapperType = toggleTextInput ? \"text\" : \"password\";\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n
\n \n {inputBoxWrapperIcon && (\n \n {\n overlayAction();\n }\n : () => setToggleTextInput(!toggleTextInput)\n }\n id={overlayId}\n size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {inputBoxWrapperIcon}\n \n
\n )}\n {overlayObject && (\n \n {overlayObject}\n \n )}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 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 { AddAccessRuleIcon, Button, FormLayout, PageLayout, Grid } from \"mds\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport KMSHelpBox from \"./KMSHelpbox\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\n\ninterface IAddKeyFormProps {\n onSuccess: () => void;\n onError: (err: ErrorResponseHandler) => void;\n}\n\nconst AddKeyForm = ({ onSuccess, onError }: IAddKeyFormProps) => {\n const [loading, invokeApi] = useApi(onSuccess, onError);\n const [keyName, setKeyName] = useState(\"\");\n\n const addRecord = (event: React.FormEvent) => {\n event.preventDefault();\n invokeApi(\"POST\", \"/api/v1/kms/keys/\", { key: keyName });\n };\n\n const resetForm = () => {\n setKeyName(\"\");\n };\n\n const validateKeyName = (keyName: string) => {\n if (keyName.indexOf(\" \") !== -1) {\n return \"Key name cannot contain spaces\";\n } else return \"\";\n };\n\n const validSave = keyName.trim() !== \"\" && keyName.indexOf(\" \") === -1;\n\n return (\n \n }\n helpBox={\n \n }\n >\n ) => {\n addRecord(e);\n }}\n >\n \n \n ) => {\n setKeyName(e.target.value);\n }}\n />\n \n \n \n\n \n \n \n \n \n \n );\n};\n\nexport default AddKeyForm;\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 } from \"react\";\nimport { BackLink, Grid } from \"mds\";\nimport { useNavigate } from \"react-router-dom\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport AddKeyForm from \"./AddKeyForm\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst AddKey = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const onSuccess = () => navigate(`${IAM_PAGES.KMS_KEYS}`);\n\n const onError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n\n useEffect(() => {\n dispatch(setHelpName(\"add_key\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n \n navigate(IAM_PAGES.KMS_KEYS)}\n />\n }\n actions={}\n />\n \n \n \n );\n};\n\nexport default AddKey;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { HelpBox, HelpIconFilled, Box } from \"mds\";\n\ninterface IKMSHelpBoxProps {\n helpText: string;\n contents: string[];\n}\n\nconst KMSHelpBox = ({ helpText, contents }: IKMSHelpBoxProps) => {\n return (\n }\n title={helpText}\n help={\n \n {contents.map((content) => (\n {content}\n ))}\n \n }\n />\n );\n};\n\nexport default KMSHelpBox;\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'RemoveRedEye');\nexports.default = _default;","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["inputStyles","makeStyles","theme","createStyles","_objectSpread","inputFieldStyles","InputField","props","classes","_jsx","TextField","InputProps","withStyles","fieldBasic","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","_ref","label","onChange","value","id","name","_ref$type","type","_ref$autoComplete","autoComplete","_ref$disabled","disabled","_ref$multiline","multiline","_ref$tooltip","tooltip","_ref$index","index","_ref$error","error","_ref$required","required","_ref$placeholder","placeholder","min","max","overlayId","_ref$overlayIcon","overlayIcon","_ref$overlayObject","overlayObject","_ref$extraInputProps","extraInputProps","_ref$noLabelMinWidth","noLabelMinWidth","_ref$pattern","pattern","_ref$autoFocus","autoFocus","_ref$className","className","onKeyPress","onFocus","onPaste","inputProps","_useState","useState","_useState2","_slicedToArray","toggleTextInput","setToggleTextInput","inputBoxWrapperIcon","inputBoxWrapperType","VisibilityOffIcon","RemoveRedEyeIcon","React","children","_jsxs","Grid","container","clsx","errorInField","inputBoxContainer","InputLabel","htmlFor","noMinWidthLabel","inputLabel","tooltipContainer","Tooltip","title","placement","HelpIcon","fullWidth","helperText","inputRebase","concat","IconButton","onClick","size","disableFocusRipple","disableRipple","disableTouchRipple","onSuccess","onError","_useApi","useApi","_useApi2","loading","invokeApi","keyName","setKeyName","validSave","trim","indexOf","PageLayout","FormLayout","icon","AddAccessRuleIcon","helpBox","KMSHelpBox","helpText","contents","noValidate","onSubmit","e","preventDefault","key","item","xs","InputBoxWrapper","validateKeyName","target","sx","modalStyleUtils","modalButtonBar","Button","variant","color","dispatch","useAppDispatch","navigate","useNavigate","useEffect","setHelpName","Fragment","PageHeaderWrapper","BackLink","IAM_PAGES","KMS_KEYS","actions","HelpMenu","AddKeyForm","err","setErrorSnackMessage","HelpBox","iconComponent","HelpIconFilled","help","map","content","Box","paddingBottom","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Object","defineProperty","enumerable","get","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/3034.e1fff37c.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/KMS/AddKeyForm.tsx","screens/Console/KMS/AddKey.tsx","screens/Console/KMS/KMSHelpbox.tsx","../node_modules/@mui/icons-material/RemoveRedEye.js","../node_modules/@mui/icons-material/VisibilityOff.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/esm/deprecatedPropType.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/esm/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/esm/unsupportedProp.js","../node_modules/@mui/material/utils/index.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { ClipboardEvent, useState } from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n onKeyPress?: (e: any) => void;\n onFocus?: () => void;\n onPaste?: (e: ClipboardEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayId?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n }),\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayId,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n onFocus,\n onPaste,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n const [toggleTextInput, setToggleTextInput] = useState(false);\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n let inputBoxWrapperIcon = overlayIcon;\n let inputBoxWrapperType = type;\n\n if (type === \"password\" && overlayIcon === null) {\n inputBoxWrapperIcon = toggleTextInput ? (\n \n ) : (\n \n );\n inputBoxWrapperType = toggleTextInput ? \"text\" : \"password\";\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n
\n \n {inputBoxWrapperIcon && (\n \n {\n overlayAction();\n }\n : () => setToggleTextInput(!toggleTextInput)\n }\n id={overlayId}\n size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {inputBoxWrapperIcon}\n \n
\n )}\n {overlayObject && (\n \n {overlayObject}\n \n )}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 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 { AddAccessRuleIcon, Button, FormLayout, PageLayout, Grid } from \"mds\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport KMSHelpBox from \"./KMSHelpbox\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\n\ninterface IAddKeyFormProps {\n onSuccess: () => void;\n onError: (err: ErrorResponseHandler) => void;\n}\n\nconst AddKeyForm = ({ onSuccess, onError }: IAddKeyFormProps) => {\n const [loading, invokeApi] = useApi(onSuccess, onError);\n const [keyName, setKeyName] = useState(\"\");\n\n const addRecord = (event: React.FormEvent) => {\n event.preventDefault();\n invokeApi(\"POST\", \"/api/v1/kms/keys/\", { key: keyName });\n };\n\n const resetForm = () => {\n setKeyName(\"\");\n };\n\n const validateKeyName = (keyName: string) => {\n if (keyName.indexOf(\" \") !== -1) {\n return \"Key name cannot contain spaces\";\n } else return \"\";\n };\n\n const validSave = keyName.trim() !== \"\" && keyName.indexOf(\" \") === -1;\n\n return (\n \n }\n helpBox={\n \n }\n >\n ) => {\n addRecord(e);\n }}\n >\n \n \n ) => {\n setKeyName(e.target.value);\n }}\n />\n \n \n \n\n \n \n \n \n \n \n );\n};\n\nexport default AddKeyForm;\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 } from \"react\";\nimport { BackLink, Grid } from \"mds\";\nimport { useNavigate } from \"react-router-dom\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport AddKeyForm from \"./AddKeyForm\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst AddKey = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const onSuccess = () => navigate(`${IAM_PAGES.KMS_KEYS}`);\n\n const onError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n\n useEffect(() => {\n dispatch(setHelpName(\"add_key\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n \n navigate(IAM_PAGES.KMS_KEYS)}\n />\n }\n actions={}\n />\n \n \n \n );\n};\n\nexport default AddKey;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { HelpBox, HelpIconFilled, Box } from \"mds\";\n\ninterface IKMSHelpBoxProps {\n helpText: string;\n contents: string[];\n}\n\nconst KMSHelpBox = ({ helpText, contents }: IKMSHelpBoxProps) => {\n return (\n }\n title={helpText}\n help={\n \n {contents.map((content) => (\n {content}\n ))}\n \n }\n />\n );\n};\n\nexport default KMSHelpBox;\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'RemoveRedEye');\nexports.default = _default;","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["inputStyles","makeStyles","theme","createStyles","_objectSpread","inputFieldStyles","InputField","props","classes","_jsx","TextField","InputProps","withStyles","fieldBasic","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","_ref","label","onChange","value","id","name","_ref$type","type","_ref$autoComplete","autoComplete","_ref$disabled","disabled","_ref$multiline","multiline","_ref$tooltip","tooltip","_ref$index","index","_ref$error","error","_ref$required","required","_ref$placeholder","placeholder","min","max","overlayId","_ref$overlayIcon","overlayIcon","_ref$overlayObject","overlayObject","_ref$extraInputProps","extraInputProps","_ref$noLabelMinWidth","noLabelMinWidth","_ref$pattern","pattern","_ref$autoFocus","autoFocus","_ref$className","className","onKeyPress","onFocus","onPaste","inputProps","_useState","useState","_useState2","_slicedToArray","toggleTextInput","setToggleTextInput","inputBoxWrapperIcon","inputBoxWrapperType","VisibilityOffIcon","RemoveRedEyeIcon","React","children","_jsxs","Grid","container","clsx","errorInField","inputBoxContainer","InputLabel","htmlFor","noMinWidthLabel","inputLabel","tooltipContainer","Tooltip","title","placement","HelpIcon","fullWidth","helperText","inputRebase","concat","IconButton","onClick","size","disableFocusRipple","disableRipple","disableTouchRipple","onSuccess","onError","_useApi","useApi","_useApi2","loading","invokeApi","keyName","setKeyName","validSave","trim","indexOf","PageLayout","FormLayout","icon","AddAccessRuleIcon","helpBox","KMSHelpBox","helpText","contents","noValidate","onSubmit","e","preventDefault","key","item","xs","InputBoxWrapper","validateKeyName","target","sx","modalStyleUtils","modalButtonBar","Button","variant","color","dispatch","useAppDispatch","navigate","useNavigate","useEffect","setHelpName","Fragment","PageHeaderWrapper","BackLink","IAM_PAGES","KMS_KEYS","actions","HelpMenu","AddKeyForm","err","setErrorSnackMessage","HelpBox","iconComponent","HelpIconFilled","help","map","content","Box","paddingBottom","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Object","defineProperty","enumerable","get","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/3067.e39a45cf.chunk.js b/portal-ui/build/static/js/3067.76cd4ffe.chunk.js similarity index 98% rename from portal-ui/build/static/js/3067.e39a45cf.chunk.js rename to portal-ui/build/static/js/3067.76cd4ffe.chunk.js index ce4571911f..5397a36c7a 100644 --- a/portal-ui/build/static/js/3067.e39a45cf.chunk.js +++ b/portal-ui/build/static/js/3067.76cd4ffe.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[3067],{75578:function(e,t,n){var i=n(1413),s=n(72791),l=n(80184);t.Z=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(n){return(0,l.jsx)(s.Suspense,{fallback:t,children:(0,l.jsx)(e,(0,i.Z)({},n))})}}},31460:function(e,t,n){var i=n(4942),s=n(72791),l=n(57689),a=n(29945),o=n(80184);t.Z=function(e){var t=e.compactMode,n=void 0!==t&&t,r=(0,l.s0)(),c=(0,o.jsx)(a.zxk,{id:"go-to-register",type:"submit",variant:"callAction",color:"primary",onClick:function(){return r("/support/register")},children:"Register your Cluster"}),x="Please use your MinIO Subscription Network login credentials to register this cluster and enable this feature.";return n?(0,o.jsxs)(s.Fragment,{children:[(0,o.jsx)(a.rjZ,{sx:{"& div.leftItems":{marginBottom:0}},children:(0,o.jsx)(a.KfX,{title:(0,o.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",flexGrow:1},children:[(0,o.jsx)("span",{children:x})," ",c]}),iconComponent:(0,o.jsx)(a.e6P,{}),help:null})}),(0,o.jsx)("br",{})]}):(0,o.jsx)(a.xuv,{sx:(0,i.Z)({padding:"25px",border:"1px solid #eaeaea",display:"flex",alignItems:"center",justifyContent:"center",flexFlow:"row",marginBottom:"15px"},"@media (max-width: ".concat(a.Egj.sm,"px)"),{flexFlow:"column"}),children:(0,o.jsxs)(a.rjZ,{container:!0,children:[(0,o.jsx)(a.rjZ,{item:!0,xs:12,children:(0,o.jsx)(a.xuv,{sx:{marginRight:"8px",fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center","& .min-icon":{width:"83px",height:"14px",marginLeft:"5px",marginRight:"5px"}},children:"Register your cluster"})}),(0,o.jsx)(a.rjZ,{item:!0,xs:12,children:(0,o.jsx)(a.xuv,{sx:(0,i.Z)({display:"flex",flexFlow:"row"},"@media (max-width: ".concat(a.Egj.sm,"px)"),{flexFlow:"column"}),children:(0,o.jsxs)(a.xuv,{sx:{display:"flex",flexFlow:"column",flex:"2"},children:[(0,o.jsx)(a.xuv,{sx:{fontSize:"16px",display:"flex",flexFlow:"column",marginTop:"15px",marginBottom:"15px"},children:x}),(0,o.jsx)(a.xuv,{sx:{flex:"1"},children:(0,o.jsx)(a.xuv,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end"},children:c})})]})})})]})})}},73067:function(e,t,n){n.r(t),n.d(t,{default:function(){return S}});var i=n(72791),s=n(57689),l=n(75578),a=n(98604),o=n(29439),r=n(29945),c=n(11087),x=n(81207),d=n(87995),u=n(81551),h=n(9478),p=n(56028),m=n(80184),f=function(e){var t=e.onClose,n=e.diagStatus,s=e.logsStatus,l=e.open,a=e.disable,c=void 0!==a&&a,h=(0,u.TL)(),f=(0,i.useState)(!1),g=(0,o.Z)(f,2),j=g[0],b=g[1],y=function(){b(!0),x.Z.invoke("PUT","/api/v1/support/callhome",{diagState:!c&&n,logsState:!c&&s}).then((function(e){h((0,d.y1)("Configuration saved successfully")),b(!1),t(!0)})).catch((function(e){b(!1),h((0,d.Ih)(e))}))};return(0,m.jsx)(p.Z,{modalOpen:l,title:c?"Disable Call Home":"Edit Call Home Configurations",onClose:function(){return t(!1)},titleIcon:(0,m.jsx)(r.o0P,{}),children:c?(0,m.jsxs)(i.Fragment,{children:["Please Acknowledge that after doing this action, we will no longer receive updated cluster information automatically, losing the potential benefits that Call Home provides to your MinIO cluster.",(0,m.jsx)(r.rjZ,{item:!0,xs:12,sx:{margin:"15px 0"},children:"Are you sure you want to disable SUBNET Call Home?"}),(0,m.jsx)("br",{}),j&&(0,m.jsx)(r.rjZ,{item:!0,xs:12,sx:{marginBottom:10},children:(0,m.jsx)(r.kod,{})}),(0,m.jsxs)(r.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end"},children:[(0,m.jsx)(r.zxk,{id:"reset",type:"button",variant:"regular",disabled:j,onClick:function(){return t(!1)},label:"Cancel",sx:{marginRight:10}}),(0,m.jsx)(r.zxk,{id:"save-lifecycle",type:"submit",variant:"secondary",color:"primary",disabled:j,label:"Yes, Disable Call Home",onClick:y})]})]}):(0,m.jsxs)(i.Fragment,{children:["Are you sure you want to change the following configurations for SUBNET Call Home:",(0,m.jsxs)(r.rjZ,{item:!0,sx:{margin:"20px 0",display:"flex",flexDirection:"column",gap:15},children:[(0,m.jsxs)(r.rjZ,{item:!0,sx:{display:"flex",alignItems:"center",gap:10},children:[(0,m.jsx)(r.J$M,{style:{fill:n?"#4CCB92":"#C83B51",width:20}}),(0,m.jsxs)("span",{children:[(0,m.jsx)("strong",{children:n?"Enable":"Disable"})," - Send Diagnostics Information to SUBNET"]})]}),(0,m.jsxs)(r.rjZ,{item:!0,sx:{display:"flex",alignItems:"center",gap:10},children:[(0,m.jsx)(r.J$M,{style:{fill:s?"#4CCB92":"#C83B51",width:20}}),(0,m.jsxs)("span",{children:[(0,m.jsx)("strong",{children:s?"Enable":"Disable"})," - Send Logs Information to SUBNET"]})]})]}),(0,m.jsx)(r.rjZ,{item:!0,xs:12,sx:{margin:"15px 0"},children:"Please Acknowledge that the information provided will only be available in your SUBNET Account and it will not be shared to other persons or entities besides MinIO team and you."}),j&&(0,m.jsx)(r.rjZ,{item:!0,xs:12,sx:{marginBottom:10},children:(0,m.jsx)(r.kod,{})}),(0,m.jsxs)(r.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end"},children:[(0,m.jsx)(r.zxk,{id:"reset",type:"button",variant:"regular",disabled:j,onClick:function(){return t(!1)},label:"Cancel",sx:{marginRight:10}}),(0,m.jsx)(r.zxk,{id:"save-lifecycle",type:"submit",variant:"callAction",color:"primary",disabled:j,label:"Yes, Save this Configuration",onClick:y})]})]})})},g=n(31460),j=n(47974),b=n(99670),y=function(){var e=(0,u.TL)(),t=(0,s.s0)(),n=(0,i.useState)(!0),l=(0,o.Z)(n,2),a=l[0],p=l[1],y=(0,i.useState)(!1),v=(0,o.Z)(y,2),C=v[0],Z=v[1],S=(0,i.useState)(!1),w=(0,o.Z)(S,2),k=w[0],I=w[1],E=(0,i.useState)(!1),B=(0,o.Z)(E,2),T=B[0],z=B[1],A=(0,i.useState)(!1),F=(0,o.Z)(A,2),L=F[0],D=F[1],H=(0,i.useState)(!1),M=(0,o.Z)(H,2),N=M[0],O=M[1],P=(0,i.useState)(!1),R=(0,o.Z)(P,2),U=R[0],W=R[1],Y=(0,h.Yc)();(0,i.useEffect)((function(){a&&x.Z.invoke("GET","/api/v1/support/callhome").then((function(e){p(!1),I(!!e.diagnosticsStatus),O(!!e.logsStatus),z(!!e.diagnosticsStatus),D(!!e.logsStatus)})).catch((function(t){p(!1),e((0,d.Ih)(t))}))}),[a,e]);var X="regular";return!Y||k===T&&N===L||(X="callAction"),(0,i.useEffect)((function(){e((0,d.Sc)("call_home"))}),[]),(0,m.jsxs)(i.Fragment,{children:[C&&(0,m.jsx)(f,{onClose:function(e){e&&p(!0),Z(!1)},open:C,logsStatus:N,diagStatus:k,disable:U}),(0,m.jsx)(j.Z,{label:"Call Home",actions:(0,m.jsx)(b.Z,{})}),(0,m.jsxs)(r.Xgh,{children:[!Y&&(0,m.jsx)(g.Z,{compactMode:!0}),(0,m.jsx)(r.ltY,{helpBox:(0,m.jsx)(r.KfX,{title:"Learn more about Call Home",iconComponent:(0,m.jsx)(r.o0P,{}),help:(0,m.jsx)(i.Fragment,{children:(0,m.jsx)(r.xuv,{sx:{display:"flex",flexFlow:"column",fontSize:"14px",flex:"2",marginTop:"10px"},children:(0,m.jsxs)(r.xuv,{children:["Enabling Call Home sends cluster health & status to your registered MinIO Subscription Network account every 24 hours.",(0,m.jsx)("br",{}),(0,m.jsx)("br",{}),"This helps the MinIO support team to provide quick incident responses along with suggestions for possible improvements that can be made to your MinIO instances.",(0,m.jsx)("br",{}),(0,m.jsx)("br",{}),"Your cluster must be"," ",(0,m.jsx)(c.rU,{to:"/support/register",children:"registered"})," in the MinIO Subscription Network (SUBNET) before enabling this feature."]})})})}),children:a?(0,m.jsx)("span",{style:{marginLeft:5},children:(0,m.jsx)(r.aNw,{style:{width:16,height:16}})}):(0,m.jsxs)(i.Fragment,{children:[(0,m.jsx)(r.rsf,{value:"enableDiag",id:"enableDiag",name:"enableDiag",checked:k,onChange:function(e){I(e.target.checked)},label:"Daily Health Report",disabled:!Y,description:"Daily Health Report enables you to proactively identify potential issues in your deployment before they escalate."}),(0,m.jsx)(r.rsf,{value:"enableLogs",id:"enableLogs",name:"enableLogs",checked:N,onChange:function(e){O(e.target.checked)},label:"Live Error Logs",disabled:!Y,description:"Live Error Logs will enable MinIO's support team and automatic diagnostics system to catch failures early."}),(0,m.jsxs)(r.xuv,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end",marginTop:"55px",gap:"0px 10px"},children:[(T||L)&&(0,m.jsx)(r.zxk,{id:"callhome-action",variant:"secondary","data-test-id":"call-home-toggle-button",onClick:function(){W(!0),Z(!0)},disabled:a||!Y,children:"Disable Call Home"}),(0,m.jsx)(r.zxk,{id:"callhome-action",type:"button",variant:X,"data-test-id":"call-home-toggle-button",onClick:function(){Y?(W(!1),Z(!0)):t("/support/register")},disabled:a||!Y,children:"Save Configuration"})]})]})})]})]})},v=(0,l.Z)(i.lazy((function(){return Promise.all([n.e(911),n.e(4549),n.e(817),n.e(8833)]).then(n.bind(n,58833))}))),C=(0,l.Z)(i.lazy((function(){return n.e(1516).then(n.bind(n,51516))}))),Z=(0,l.Z)(i.lazy((function(){return n.e(483).then(n.bind(n,70483))}))),S=function(){return(0,m.jsxs)(s.Z5,{children:[(0,m.jsx)(s.AW,{path:"register",element:(0,m.jsx)(C,{})}),(0,m.jsx)(s.AW,{path:"profile",element:(0,m.jsx)(Z,{})}),(0,m.jsx)(s.AW,{path:"call-home",element:(0,m.jsx)(y,{})}),(0,m.jsx)(s.AW,{path:"inspect",element:(0,m.jsx)(v,{})}),(0,m.jsx)(s.AW,{path:"*",element:(0,m.jsx)(a.Z,{})})]})}}}]); -//# sourceMappingURL=3067.e39a45cf.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[3067],{75578:function(e,t,n){var i=n(1413),s=n(72791),l=n(80184);t.Z=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(n){return(0,l.jsx)(s.Suspense,{fallback:t,children:(0,l.jsx)(e,(0,i.Z)({},n))})}}},31460:function(e,t,n){var i=n(4942),s=n(72791),l=n(57689),a=n(29945),o=n(80184);t.Z=function(e){var t=e.compactMode,n=void 0!==t&&t,r=(0,l.s0)(),c=(0,o.jsx)(a.zxk,{id:"go-to-register",type:"submit",variant:"callAction",color:"primary",onClick:function(){return r("/support/register")},children:"Register your Cluster"}),x="Please use your MinIO Subscription Network login credentials to register this cluster and enable this feature.";return n?(0,o.jsxs)(s.Fragment,{children:[(0,o.jsx)(a.rjZ,{sx:{"& div.leftItems":{marginBottom:0}},children:(0,o.jsx)(a.KfX,{title:(0,o.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",flexGrow:1},children:[(0,o.jsx)("span",{children:x})," ",c]}),iconComponent:(0,o.jsx)(a.e6P,{}),help:null})}),(0,o.jsx)("br",{})]}):(0,o.jsx)(a.xuv,{sx:(0,i.Z)({padding:"25px",border:"1px solid #eaeaea",display:"flex",alignItems:"center",justifyContent:"center",flexFlow:"row",marginBottom:"15px"},"@media (max-width: ".concat(a.Egj.sm,"px)"),{flexFlow:"column"}),children:(0,o.jsxs)(a.rjZ,{container:!0,children:[(0,o.jsx)(a.rjZ,{item:!0,xs:12,children:(0,o.jsx)(a.xuv,{sx:{marginRight:"8px",fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center","& .min-icon":{width:"83px",height:"14px",marginLeft:"5px",marginRight:"5px"}},children:"Register your cluster"})}),(0,o.jsx)(a.rjZ,{item:!0,xs:12,children:(0,o.jsx)(a.xuv,{sx:(0,i.Z)({display:"flex",flexFlow:"row"},"@media (max-width: ".concat(a.Egj.sm,"px)"),{flexFlow:"column"}),children:(0,o.jsxs)(a.xuv,{sx:{display:"flex",flexFlow:"column",flex:"2"},children:[(0,o.jsx)(a.xuv,{sx:{fontSize:"16px",display:"flex",flexFlow:"column",marginTop:"15px",marginBottom:"15px"},children:x}),(0,o.jsx)(a.xuv,{sx:{flex:"1"},children:(0,o.jsx)(a.xuv,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end"},children:c})})]})})})]})})}},73067:function(e,t,n){n.r(t),n.d(t,{default:function(){return S}});var i=n(72791),s=n(57689),l=n(75578),a=n(98604),o=n(29439),r=n(29945),c=n(11087),x=n(81207),d=n(87995),u=n(44690),h=n(9478),p=n(56028),m=n(80184),f=function(e){var t=e.onClose,n=e.diagStatus,s=e.logsStatus,l=e.open,a=e.disable,c=void 0!==a&&a,h=(0,u.TL)(),f=(0,i.useState)(!1),g=(0,o.Z)(f,2),j=g[0],b=g[1],y=function(){b(!0),x.Z.invoke("PUT","/api/v1/support/callhome",{diagState:!c&&n,logsState:!c&&s}).then((function(e){h((0,d.y1)("Configuration saved successfully")),b(!1),t(!0)})).catch((function(e){b(!1),h((0,d.Ih)(e))}))};return(0,m.jsx)(p.Z,{modalOpen:l,title:c?"Disable Call Home":"Edit Call Home Configurations",onClose:function(){return t(!1)},titleIcon:(0,m.jsx)(r.o0P,{}),children:c?(0,m.jsxs)(i.Fragment,{children:["Please Acknowledge that after doing this action, we will no longer receive updated cluster information automatically, losing the potential benefits that Call Home provides to your MinIO cluster.",(0,m.jsx)(r.rjZ,{item:!0,xs:12,sx:{margin:"15px 0"},children:"Are you sure you want to disable SUBNET Call Home?"}),(0,m.jsx)("br",{}),j&&(0,m.jsx)(r.rjZ,{item:!0,xs:12,sx:{marginBottom:10},children:(0,m.jsx)(r.kod,{})}),(0,m.jsxs)(r.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end"},children:[(0,m.jsx)(r.zxk,{id:"reset",type:"button",variant:"regular",disabled:j,onClick:function(){return t(!1)},label:"Cancel",sx:{marginRight:10}}),(0,m.jsx)(r.zxk,{id:"save-lifecycle",type:"submit",variant:"secondary",color:"primary",disabled:j,label:"Yes, Disable Call Home",onClick:y})]})]}):(0,m.jsxs)(i.Fragment,{children:["Are you sure you want to change the following configurations for SUBNET Call Home:",(0,m.jsxs)(r.rjZ,{item:!0,sx:{margin:"20px 0",display:"flex",flexDirection:"column",gap:15},children:[(0,m.jsxs)(r.rjZ,{item:!0,sx:{display:"flex",alignItems:"center",gap:10},children:[(0,m.jsx)(r.J$M,{style:{fill:n?"#4CCB92":"#C83B51",width:20}}),(0,m.jsxs)("span",{children:[(0,m.jsx)("strong",{children:n?"Enable":"Disable"})," - Send Diagnostics Information to SUBNET"]})]}),(0,m.jsxs)(r.rjZ,{item:!0,sx:{display:"flex",alignItems:"center",gap:10},children:[(0,m.jsx)(r.J$M,{style:{fill:s?"#4CCB92":"#C83B51",width:20}}),(0,m.jsxs)("span",{children:[(0,m.jsx)("strong",{children:s?"Enable":"Disable"})," - Send Logs Information to SUBNET"]})]})]}),(0,m.jsx)(r.rjZ,{item:!0,xs:12,sx:{margin:"15px 0"},children:"Please Acknowledge that the information provided will only be available in your SUBNET Account and it will not be shared to other persons or entities besides MinIO team and you."}),j&&(0,m.jsx)(r.rjZ,{item:!0,xs:12,sx:{marginBottom:10},children:(0,m.jsx)(r.kod,{})}),(0,m.jsxs)(r.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end"},children:[(0,m.jsx)(r.zxk,{id:"reset",type:"button",variant:"regular",disabled:j,onClick:function(){return t(!1)},label:"Cancel",sx:{marginRight:10}}),(0,m.jsx)(r.zxk,{id:"save-lifecycle",type:"submit",variant:"callAction",color:"primary",disabled:j,label:"Yes, Save this Configuration",onClick:y})]})]})})},g=n(31460),j=n(47974),b=n(99670),y=function(){var e=(0,u.TL)(),t=(0,s.s0)(),n=(0,i.useState)(!0),l=(0,o.Z)(n,2),a=l[0],p=l[1],y=(0,i.useState)(!1),v=(0,o.Z)(y,2),C=v[0],Z=v[1],S=(0,i.useState)(!1),w=(0,o.Z)(S,2),k=w[0],I=w[1],E=(0,i.useState)(!1),B=(0,o.Z)(E,2),T=B[0],z=B[1],A=(0,i.useState)(!1),F=(0,o.Z)(A,2),L=F[0],D=F[1],H=(0,i.useState)(!1),M=(0,o.Z)(H,2),N=M[0],O=M[1],P=(0,i.useState)(!1),R=(0,o.Z)(P,2),U=R[0],W=R[1],Y=(0,h.Yc)();(0,i.useEffect)((function(){a&&x.Z.invoke("GET","/api/v1/support/callhome").then((function(e){p(!1),I(!!e.diagnosticsStatus),O(!!e.logsStatus),z(!!e.diagnosticsStatus),D(!!e.logsStatus)})).catch((function(t){p(!1),e((0,d.Ih)(t))}))}),[a,e]);var X="regular";return!Y||k===T&&N===L||(X="callAction"),(0,i.useEffect)((function(){e((0,d.Sc)("call_home"))}),[]),(0,m.jsxs)(i.Fragment,{children:[C&&(0,m.jsx)(f,{onClose:function(e){e&&p(!0),Z(!1)},open:C,logsStatus:N,diagStatus:k,disable:U}),(0,m.jsx)(j.Z,{label:"Call Home",actions:(0,m.jsx)(b.Z,{})}),(0,m.jsxs)(r.Xgh,{children:[!Y&&(0,m.jsx)(g.Z,{compactMode:!0}),(0,m.jsx)(r.ltY,{helpBox:(0,m.jsx)(r.KfX,{title:"Learn more about Call Home",iconComponent:(0,m.jsx)(r.o0P,{}),help:(0,m.jsx)(i.Fragment,{children:(0,m.jsx)(r.xuv,{sx:{display:"flex",flexFlow:"column",fontSize:"14px",flex:"2",marginTop:"10px"},children:(0,m.jsxs)(r.xuv,{children:["Enabling Call Home sends cluster health & status to your registered MinIO Subscription Network account every 24 hours.",(0,m.jsx)("br",{}),(0,m.jsx)("br",{}),"This helps the MinIO support team to provide quick incident responses along with suggestions for possible improvements that can be made to your MinIO instances.",(0,m.jsx)("br",{}),(0,m.jsx)("br",{}),"Your cluster must be"," ",(0,m.jsx)(c.rU,{to:"/support/register",children:"registered"})," in the MinIO Subscription Network (SUBNET) before enabling this feature."]})})})}),children:a?(0,m.jsx)("span",{style:{marginLeft:5},children:(0,m.jsx)(r.aNw,{style:{width:16,height:16}})}):(0,m.jsxs)(i.Fragment,{children:[(0,m.jsx)(r.rsf,{value:"enableDiag",id:"enableDiag",name:"enableDiag",checked:k,onChange:function(e){I(e.target.checked)},label:"Daily Health Report",disabled:!Y,description:"Daily Health Report enables you to proactively identify potential issues in your deployment before they escalate."}),(0,m.jsx)(r.rsf,{value:"enableLogs",id:"enableLogs",name:"enableLogs",checked:N,onChange:function(e){O(e.target.checked)},label:"Live Error Logs",disabled:!Y,description:"Live Error Logs will enable MinIO's support team and automatic diagnostics system to catch failures early."}),(0,m.jsxs)(r.xuv,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end",marginTop:"55px",gap:"0px 10px"},children:[(T||L)&&(0,m.jsx)(r.zxk,{id:"callhome-action",variant:"secondary","data-test-id":"call-home-toggle-button",onClick:function(){W(!0),Z(!0)},disabled:a||!Y,children:"Disable Call Home"}),(0,m.jsx)(r.zxk,{id:"callhome-action",type:"button",variant:X,"data-test-id":"call-home-toggle-button",onClick:function(){Y?(W(!1),Z(!0)):t("/support/register")},disabled:a||!Y,children:"Save Configuration"})]})]})})]})]})},v=(0,l.Z)(i.lazy((function(){return Promise.all([n.e(911),n.e(4549),n.e(817),n.e(8833)]).then(n.bind(n,58833))}))),C=(0,l.Z)(i.lazy((function(){return n.e(1516).then(n.bind(n,51516))}))),Z=(0,l.Z)(i.lazy((function(){return n.e(483).then(n.bind(n,70483))}))),S=function(){return(0,m.jsxs)(s.Z5,{children:[(0,m.jsx)(s.AW,{path:"register",element:(0,m.jsx)(C,{})}),(0,m.jsx)(s.AW,{path:"profile",element:(0,m.jsx)(Z,{})}),(0,m.jsx)(s.AW,{path:"call-home",element:(0,m.jsx)(y,{})}),(0,m.jsx)(s.AW,{path:"inspect",element:(0,m.jsx)(v,{})}),(0,m.jsx)(s.AW,{path:"*",element:(0,m.jsx)(a.Z,{})})]})}}}]); +//# sourceMappingURL=3067.76cd4ffe.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/3067.e39a45cf.chunk.js.map b/portal-ui/build/static/js/3067.76cd4ffe.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/3067.e39a45cf.chunk.js.map rename to portal-ui/build/static/js/3067.76cd4ffe.chunk.js.map index 5af6d767ce..237ec5dc72 100644 --- a/portal-ui/build/static/js/3067.e39a45cf.chunk.js.map +++ b/portal-ui/build/static/js/3067.76cd4ffe.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/3067.e39a45cf.chunk.js","mappings":"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","sources":["screens/Console/Common/Components/withSuspense.tsx","screens/Console/Support/RegisterCluster.tsx","screens/Console/Support/CallHomeConfirmation.tsx","screens/Console/Support/CallHome.tsx","screens/Console/Tools/Tools.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

(\n WrappedComponent: ComponentType

,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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, breakPoints, Button, Grid, HelpBox, WarnIcon } from \"mds\";\n\ninterface IRegisterCluster {\n compactMode?: boolean;\n}\n\nconst RegisterCluster = ({ compactMode = false }: IRegisterCluster) => {\n const navigate = useNavigate();\n\n const redirectButton = (\n navigate(\"/support/register\")}\n >\n Register your Cluster\n \n );\n\n const registerMessage =\n \"Please use your MinIO Subscription Network login credentials to register this cluster and enable this feature.\";\n\n if (compactMode) {\n return (\n \n \n \n {registerMessage} {redirectButton}\n \n }\n iconComponent={}\n help={null}\n />\n \n
\n
\n );\n }\n\n return (\n \n \n \n \n Register your cluster\n \n \n \n \n \n \n {registerMessage}\n \n \n \n {redirectButton}\n \n \n \n \n \n \n \n );\n};\n\nexport default RegisterCluster;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { Button, CallHomeMenuIcon, CircleIcon, Grid, ProgressBar } from \"mds\";\n\nimport api from \"../../../common/api\";\nimport { ICallHomeResponse } from \"./types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { setErrorSnackMessage, setSnackBarMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\n\ninterface ICallHomeConfirmation {\n onClose: (refresh: boolean) => any;\n open: boolean;\n diagStatus: boolean;\n logsStatus: boolean;\n disable?: boolean;\n}\n\nconst CallHomeConfirmation = ({\n onClose,\n diagStatus,\n logsStatus,\n open,\n disable = false,\n}: ICallHomeConfirmation) => {\n const dispatch = useAppDispatch();\n\n const [loading, setLoading] = useState(false);\n\n const onConfirmAction = () => {\n setLoading(true);\n api\n .invoke(\"PUT\", `/api/v1/support/callhome`, {\n diagState: disable ? false : diagStatus,\n logsState: disable ? false : logsStatus,\n })\n .then((res: ICallHomeResponse) => {\n dispatch(setSnackBarMessage(\"Configuration saved successfully\"));\n setLoading(false);\n onClose(true);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setErrorSnackMessage(err));\n });\n };\n\n return (\n onClose(false)}\n titleIcon={}\n >\n {disable ? (\n \n Please Acknowledge that after doing this action, we will no longer\n receive updated cluster information automatically, losing the\n potential benefits that Call Home provides to your MinIO cluster.\n \n Are you sure you want to disable SUBNET Call Home?\n \n
\n {loading && (\n \n \n \n )}\n \n onClose(false)}\n label={\"Cancel\"}\n sx={{\n marginRight: 10,\n }}\n />\n \n \n
\n ) : (\n \n Are you sure you want to change the following configurations for\n SUBNET Call Home:\n \n \n \n \n {diagStatus ? \"Enable\" : \"Disable\"} - Send\n Diagnostics Information to SUBNET\n \n \n \n \n \n {logsStatus ? \"Enable\" : \"Disable\"} - Send Logs\n Information to SUBNET\n \n \n \n \n Please Acknowledge that the information provided will only be\n available in your SUBNET Account and it will not be shared to other\n persons or entities besides MinIO team and you.\n \n {loading && (\n \n \n \n )}\n \n onClose(false)}\n label={\"Cancel\"}\n sx={{\n marginRight: 10,\n }}\n />\n \n \n \n )}\n \n );\n};\n\nexport default CallHomeConfirmation;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport {\n Box,\n Button,\n CallHomeMenuIcon,\n FormLayout,\n HelpBox,\n Loader,\n PageLayout,\n Switch,\n} from \"mds\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport api from \"../../../common/api\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { ICallHomeResponse } from \"./types\";\nimport { registeredCluster } from \"../../../config\";\nimport CallHomeConfirmation from \"./CallHomeConfirmation\";\nimport RegisterCluster from \"./RegisterCluster\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst CallHome = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [loading, setLoading] = useState(true);\n const [showConfirmation, setShowConfirmation] = useState(false);\n const [diagEnabled, setDiagEnabled] = useState(false);\n const [oDiagEnabled, setODiagEnabled] = useState(false);\n const [oLogsEnabled, setOLogsEnabled] = useState(false);\n const [logsEnabled, setLogsEnabled] = useState(false);\n const [disableMode, setDisableMode] = useState(false);\n\n const clusterRegistered = registeredCluster();\n\n useEffect(() => {\n if (loading) {\n api\n .invoke(\"GET\", `/api/v1/support/callhome`)\n .then((res: ICallHomeResponse) => {\n setLoading(false);\n\n setDiagEnabled(!!res.diagnosticsStatus);\n setLogsEnabled(!!res.logsStatus);\n\n setODiagEnabled(!!res.diagnosticsStatus);\n setOLogsEnabled(!!res.logsStatus);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setErrorSnackMessage(err));\n });\n }\n }, [loading, dispatch]);\n\n const callHomeClose = (refresh: boolean) => {\n if (refresh) {\n setLoading(true);\n }\n setShowConfirmation(false);\n };\n\n const confirmCallHomeAction = () => {\n if (!clusterRegistered) {\n navigate(\"/support/register\");\n return;\n }\n setDisableMode(false);\n setShowConfirmation(true);\n };\n\n const disableCallHomeAction = () => {\n setDisableMode(true);\n setShowConfirmation(true);\n };\n\n let mainVariant: \"regular\" | \"callAction\" = \"regular\";\n\n if (\n clusterRegistered &&\n (diagEnabled !== oDiagEnabled || logsEnabled !== oLogsEnabled)\n ) {\n mainVariant = \"callAction\";\n }\n\n useEffect(() => {\n dispatch(setHelpName(\"call_home\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {showConfirmation && (\n \n )}\n } />\n \n {!clusterRegistered && }\n }\n help={\n \n \n \n Enabling Call Home sends cluster health & status to your\n registered MinIO Subscription Network account every 24\n hours.\n
\n
\n This helps the MinIO support team to provide quick\n incident responses along with suggestions for possible\n improvements that can be made to your MinIO instances.\n
\n
\n Your cluster must be{\" \"}\n registered in the\n MinIO Subscription Network (SUBNET) before enabling this\n feature.\n
\n \n
\n }\n />\n }\n >\n {loading ? (\n \n \n \n ) : (\n \n ) => {\n setDiagEnabled(event.target.checked);\n }}\n label={\"Daily Health Report\"}\n disabled={!clusterRegistered}\n description={\n \"Daily Health Report enables you to proactively identify potential issues in your deployment before they escalate.\"\n }\n />\n ) => {\n setLogsEnabled(event.target.checked);\n }}\n label={\"Live Error Logs\"}\n disabled={!clusterRegistered}\n description={\n \"Live Error Logs will enable MinIO's support team and automatic diagnostics system to catch failures early.\"\n }\n />\n \n {(oDiagEnabled || oLogsEnabled) && (\n \n Disable Call Home\n \n )}\n \n Save Configuration\n \n \n \n )}\n \n
\n
\n );\n};\n\nexport default CallHome;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Route, Routes } from \"react-router-dom\";\n\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport NotFoundPage from \"../../NotFoundPage\";\nimport CallHome from \"../Support/CallHome\";\n\nconst Inspect = withSuspense(React.lazy(() => import(\"./Inspect\")));\nconst Register = withSuspense(React.lazy(() => import(\"../Support/Register\")));\nconst Profile = withSuspense(React.lazy(() => import(\"../Support/Profile\")));\n\nconst Tools = () => {\n return (\n \n } />\n } />\n } />\n } />\n } />\n \n );\n};\n\nexport default Tools;\n"],"names":["WrappedComponent","fallback","arguments","length","undefined","props","_jsx","Suspense","children","_objectSpread","_ref","_ref$compactMode","compactMode","navigate","useNavigate","redirectButton","Button","id","type","variant","color","onClick","registerMessage","_jsxs","Fragment","Grid","sx","marginBottom","HelpBox","title","style","display","justifyContent","alignItems","flexGrow","iconComponent","WarnIcon","help","Box","_defineProperty","padding","border","flexFlow","concat","breakPoints","sm","container","item","xs","marginRight","fontSize","fontWeight","width","height","marginLeft","flex","marginTop","onClose","diagStatus","logsStatus","open","_ref$disable","disable","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","loading","setLoading","onConfirmAction","api","invoke","diagState","logsState","then","res","setSnackBarMessage","catch","err","setErrorSnackMessage","ModalWrapper","modalOpen","titleIcon","CallHomeMenuIcon","margin","ProgressBar","disabled","label","flexDirection","gap","CircleIcon","fill","_useState3","_useState4","showConfirmation","setShowConfirmation","_useState5","_useState6","diagEnabled","setDiagEnabled","_useState7","_useState8","oDiagEnabled","setODiagEnabled","_useState9","_useState10","oLogsEnabled","setOLogsEnabled","_useState11","_useState12","logsEnabled","setLogsEnabled","_useState13","_useState14","disableMode","setDisableMode","clusterRegistered","registeredCluster","useEffect","diagnosticsStatus","mainVariant","setHelpName","CallHomeConfirmation","refresh","PageHeaderWrapper","actions","HelpMenu","PageLayout","RegisterCluster","FormLayout","helpBox","Link","to","Loader","Switch","value","name","checked","onChange","event","target","description","Inspect","withSuspense","React","Register","Profile","Routes","Route","path","element","CallHome","NotFoundPage"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/3067.76cd4ffe.chunk.js","mappings":"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","sources":["screens/Console/Common/Components/withSuspense.tsx","screens/Console/Support/RegisterCluster.tsx","screens/Console/Support/CallHomeConfirmation.tsx","screens/Console/Support/CallHome.tsx","screens/Console/Tools/Tools.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

(\n WrappedComponent: ComponentType

,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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, breakPoints, Button, Grid, HelpBox, WarnIcon } from \"mds\";\n\ninterface IRegisterCluster {\n compactMode?: boolean;\n}\n\nconst RegisterCluster = ({ compactMode = false }: IRegisterCluster) => {\n const navigate = useNavigate();\n\n const redirectButton = (\n navigate(\"/support/register\")}\n >\n Register your Cluster\n \n );\n\n const registerMessage =\n \"Please use your MinIO Subscription Network login credentials to register this cluster and enable this feature.\";\n\n if (compactMode) {\n return (\n \n \n \n {registerMessage} {redirectButton}\n \n }\n iconComponent={}\n help={null}\n />\n \n
\n
\n );\n }\n\n return (\n \n \n \n \n Register your cluster\n \n \n \n \n \n \n {registerMessage}\n \n \n \n {redirectButton}\n \n \n \n \n \n \n \n );\n};\n\nexport default RegisterCluster;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { Button, CallHomeMenuIcon, CircleIcon, Grid, ProgressBar } from \"mds\";\n\nimport api from \"../../../common/api\";\nimport { ICallHomeResponse } from \"./types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { setErrorSnackMessage, setSnackBarMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\n\ninterface ICallHomeConfirmation {\n onClose: (refresh: boolean) => any;\n open: boolean;\n diagStatus: boolean;\n logsStatus: boolean;\n disable?: boolean;\n}\n\nconst CallHomeConfirmation = ({\n onClose,\n diagStatus,\n logsStatus,\n open,\n disable = false,\n}: ICallHomeConfirmation) => {\n const dispatch = useAppDispatch();\n\n const [loading, setLoading] = useState(false);\n\n const onConfirmAction = () => {\n setLoading(true);\n api\n .invoke(\"PUT\", `/api/v1/support/callhome`, {\n diagState: disable ? false : diagStatus,\n logsState: disable ? false : logsStatus,\n })\n .then((res: ICallHomeResponse) => {\n dispatch(setSnackBarMessage(\"Configuration saved successfully\"));\n setLoading(false);\n onClose(true);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setErrorSnackMessage(err));\n });\n };\n\n return (\n onClose(false)}\n titleIcon={}\n >\n {disable ? (\n \n Please Acknowledge that after doing this action, we will no longer\n receive updated cluster information automatically, losing the\n potential benefits that Call Home provides to your MinIO cluster.\n \n Are you sure you want to disable SUBNET Call Home?\n \n
\n {loading && (\n \n \n \n )}\n \n onClose(false)}\n label={\"Cancel\"}\n sx={{\n marginRight: 10,\n }}\n />\n \n \n
\n ) : (\n \n Are you sure you want to change the following configurations for\n SUBNET Call Home:\n \n \n \n \n {diagStatus ? \"Enable\" : \"Disable\"} - Send\n Diagnostics Information to SUBNET\n \n \n \n \n \n {logsStatus ? \"Enable\" : \"Disable\"} - Send Logs\n Information to SUBNET\n \n \n \n \n Please Acknowledge that the information provided will only be\n available in your SUBNET Account and it will not be shared to other\n persons or entities besides MinIO team and you.\n \n {loading && (\n \n \n \n )}\n \n onClose(false)}\n label={\"Cancel\"}\n sx={{\n marginRight: 10,\n }}\n />\n \n \n \n )}\n \n );\n};\n\nexport default CallHomeConfirmation;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport {\n Box,\n Button,\n CallHomeMenuIcon,\n FormLayout,\n HelpBox,\n Loader,\n PageLayout,\n Switch,\n} from \"mds\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport api from \"../../../common/api\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { ICallHomeResponse } from \"./types\";\nimport { registeredCluster } from \"../../../config\";\nimport CallHomeConfirmation from \"./CallHomeConfirmation\";\nimport RegisterCluster from \"./RegisterCluster\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst CallHome = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [loading, setLoading] = useState(true);\n const [showConfirmation, setShowConfirmation] = useState(false);\n const [diagEnabled, setDiagEnabled] = useState(false);\n const [oDiagEnabled, setODiagEnabled] = useState(false);\n const [oLogsEnabled, setOLogsEnabled] = useState(false);\n const [logsEnabled, setLogsEnabled] = useState(false);\n const [disableMode, setDisableMode] = useState(false);\n\n const clusterRegistered = registeredCluster();\n\n useEffect(() => {\n if (loading) {\n api\n .invoke(\"GET\", `/api/v1/support/callhome`)\n .then((res: ICallHomeResponse) => {\n setLoading(false);\n\n setDiagEnabled(!!res.diagnosticsStatus);\n setLogsEnabled(!!res.logsStatus);\n\n setODiagEnabled(!!res.diagnosticsStatus);\n setOLogsEnabled(!!res.logsStatus);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setErrorSnackMessage(err));\n });\n }\n }, [loading, dispatch]);\n\n const callHomeClose = (refresh: boolean) => {\n if (refresh) {\n setLoading(true);\n }\n setShowConfirmation(false);\n };\n\n const confirmCallHomeAction = () => {\n if (!clusterRegistered) {\n navigate(\"/support/register\");\n return;\n }\n setDisableMode(false);\n setShowConfirmation(true);\n };\n\n const disableCallHomeAction = () => {\n setDisableMode(true);\n setShowConfirmation(true);\n };\n\n let mainVariant: \"regular\" | \"callAction\" = \"regular\";\n\n if (\n clusterRegistered &&\n (diagEnabled !== oDiagEnabled || logsEnabled !== oLogsEnabled)\n ) {\n mainVariant = \"callAction\";\n }\n\n useEffect(() => {\n dispatch(setHelpName(\"call_home\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {showConfirmation && (\n \n )}\n } />\n \n {!clusterRegistered && }\n }\n help={\n \n \n \n Enabling Call Home sends cluster health & status to your\n registered MinIO Subscription Network account every 24\n hours.\n
\n
\n This helps the MinIO support team to provide quick\n incident responses along with suggestions for possible\n improvements that can be made to your MinIO instances.\n
\n
\n Your cluster must be{\" \"}\n registered in the\n MinIO Subscription Network (SUBNET) before enabling this\n feature.\n
\n \n
\n }\n />\n }\n >\n {loading ? (\n \n \n \n ) : (\n \n ) => {\n setDiagEnabled(event.target.checked);\n }}\n label={\"Daily Health Report\"}\n disabled={!clusterRegistered}\n description={\n \"Daily Health Report enables you to proactively identify potential issues in your deployment before they escalate.\"\n }\n />\n ) => {\n setLogsEnabled(event.target.checked);\n }}\n label={\"Live Error Logs\"}\n disabled={!clusterRegistered}\n description={\n \"Live Error Logs will enable MinIO's support team and automatic diagnostics system to catch failures early.\"\n }\n />\n \n {(oDiagEnabled || oLogsEnabled) && (\n \n Disable Call Home\n \n )}\n \n Save Configuration\n \n \n \n )}\n \n
\n
\n );\n};\n\nexport default CallHome;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Route, Routes } from \"react-router-dom\";\n\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport NotFoundPage from \"../../NotFoundPage\";\nimport CallHome from \"../Support/CallHome\";\n\nconst Inspect = withSuspense(React.lazy(() => import(\"./Inspect\")));\nconst Register = withSuspense(React.lazy(() => import(\"../Support/Register\")));\nconst Profile = withSuspense(React.lazy(() => import(\"../Support/Profile\")));\n\nconst Tools = () => {\n return (\n \n } />\n } />\n } />\n } />\n } />\n \n );\n};\n\nexport default Tools;\n"],"names":["WrappedComponent","fallback","arguments","length","undefined","props","_jsx","Suspense","children","_objectSpread","_ref","_ref$compactMode","compactMode","navigate","useNavigate","redirectButton","Button","id","type","variant","color","onClick","registerMessage","_jsxs","Fragment","Grid","sx","marginBottom","HelpBox","title","style","display","justifyContent","alignItems","flexGrow","iconComponent","WarnIcon","help","Box","_defineProperty","padding","border","flexFlow","concat","breakPoints","sm","container","item","xs","marginRight","fontSize","fontWeight","width","height","marginLeft","flex","marginTop","onClose","diagStatus","logsStatus","open","_ref$disable","disable","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","loading","setLoading","onConfirmAction","api","invoke","diagState","logsState","then","res","setSnackBarMessage","catch","err","setErrorSnackMessage","ModalWrapper","modalOpen","titleIcon","CallHomeMenuIcon","margin","ProgressBar","disabled","label","flexDirection","gap","CircleIcon","fill","_useState3","_useState4","showConfirmation","setShowConfirmation","_useState5","_useState6","diagEnabled","setDiagEnabled","_useState7","_useState8","oDiagEnabled","setODiagEnabled","_useState9","_useState10","oLogsEnabled","setOLogsEnabled","_useState11","_useState12","logsEnabled","setLogsEnabled","_useState13","_useState14","disableMode","setDisableMode","clusterRegistered","registeredCluster","useEffect","diagnosticsStatus","mainVariant","setHelpName","CallHomeConfirmation","refresh","PageHeaderWrapper","actions","HelpMenu","PageLayout","RegisterCluster","FormLayout","helpBox","Link","to","Loader","Switch","value","name","checked","onChange","event","target","description","Inspect","withSuspense","React","Register","Profile","Routes","Route","path","element","CallHome","NotFoundPage"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/3115.7ed72f95.chunk.js b/portal-ui/build/static/js/3115.0561791c.chunk.js similarity index 90% rename from portal-ui/build/static/js/3115.7ed72f95.chunk.js rename to portal-ui/build/static/js/3115.0561791c.chunk.js index 6ab2067bc4..4a6b573119 100644 --- a/portal-ui/build/static/js/3115.7ed72f95.chunk.js +++ b/portal-ui/build/static/js/3115.0561791c.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[3115],{75578:function(e,n,t){var l=t(1413),r=t(72791),s=t(80184);n.Z=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(t){return(0,s.jsx)(r.Suspense,{fallback:n,children:(0,s.jsx)(e,(0,l.Z)({},t))})}}},93115:function(e,n,t){t.r(n);var l=t(72791),r=t(57689),s=t(75578),u=t(98604),a=t(80184),i=(0,s.Z)(l.lazy((function(){return Promise.all([t.e(9518),t.e(5661)]).then(t.bind(t,35661))}))),o=(0,s.Z)(l.lazy((function(){return t.e(7134).then(t.bind(t,17134))}))),c=(0,s.Z)(l.lazy((function(){return Promise.all([t.e(911),t.e(4549),t.e(817),t.e(3034)]).then(t.bind(t,33034))}))),h=(0,s.Z)(l.lazy((function(){return Promise.all([t.e(911),t.e(4549),t.e(817),t.e(3138)]).then(t.bind(t,53138))})));n.default=function(){return(0,a.jsxs)(r.Z5,{children:[(0,a.jsx)(r.AW,{path:"status",element:(0,a.jsx)(i,{})}),(0,a.jsx)(r.AW,{path:"keys",element:(0,a.jsx)(o,{})}),(0,a.jsx)(r.AW,{path:"add-key",element:(0,a.jsx)(c,{})}),(0,a.jsx)(r.AW,{path:"import-key",element:(0,a.jsx)(h,{})}),(0,a.jsx)(r.AW,{path:"*",element:(0,a.jsx)(u.Z,{})})]})}}}]); -//# sourceMappingURL=3115.7ed72f95.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[3115],{75578:function(e,n,t){var l=t(1413),r=t(72791),s=t(80184);n.Z=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(t){return(0,s.jsx)(r.Suspense,{fallback:n,children:(0,s.jsx)(e,(0,l.Z)({},t))})}}},93115:function(e,n,t){t.r(n);var l=t(72791),r=t(57689),s=t(75578),u=t(98604),a=t(80184),i=(0,s.Z)(l.lazy((function(){return Promise.all([t.e(9518),t.e(9382)]).then(t.bind(t,59382))}))),o=(0,s.Z)(l.lazy((function(){return t.e(7134).then(t.bind(t,17134))}))),c=(0,s.Z)(l.lazy((function(){return Promise.all([t.e(911),t.e(4549),t.e(817),t.e(3034)]).then(t.bind(t,33034))}))),h=(0,s.Z)(l.lazy((function(){return Promise.all([t.e(911),t.e(4549),t.e(817),t.e(3138)]).then(t.bind(t,53138))})));n.default=function(){return(0,a.jsxs)(r.Z5,{children:[(0,a.jsx)(r.AW,{path:"status",element:(0,a.jsx)(i,{})}),(0,a.jsx)(r.AW,{path:"keys",element:(0,a.jsx)(o,{})}),(0,a.jsx)(r.AW,{path:"add-key",element:(0,a.jsx)(c,{})}),(0,a.jsx)(r.AW,{path:"import-key",element:(0,a.jsx)(h,{})}),(0,a.jsx)(r.AW,{path:"*",element:(0,a.jsx)(u.Z,{})})]})}}}]); +//# sourceMappingURL=3115.0561791c.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/3115.7ed72f95.chunk.js.map b/portal-ui/build/static/js/3115.0561791c.chunk.js.map similarity index 98% rename from portal-ui/build/static/js/3115.7ed72f95.chunk.js.map rename to portal-ui/build/static/js/3115.0561791c.chunk.js.map index 6cac492dd7..e16665d3b3 100644 --- a/portal-ui/build/static/js/3115.7ed72f95.chunk.js.map +++ b/portal-ui/build/static/js/3115.0561791c.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/3115.7ed72f95.chunk.js","mappings":"iJAiCA,IAfA,SACEA,GAEC,IADDC,EAAmCC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KAUtC,OARA,SAA+BG,GAC7B,OACEC,EAAAA,EAAAA,KAACC,EAAAA,SAAQ,CAACN,SAAUA,EAASO,UAC3BF,EAAAA,EAAAA,KAACN,GAAgBS,EAAAA,EAAAA,GAAA,GAAMJ,KAG7B,CAGF,C,0FCTMK,GAASC,EAAAA,EAAAA,GAAaC,EAAAA,MAAW,kBAAM,wDAAkB,KACzDC,GAAWF,EAAAA,EAAAA,GAAaC,EAAAA,MAAW,kBAAM,+BAAoB,KAC7DE,GAASH,EAAAA,EAAAA,GAAaC,EAAAA,MAAW,kBAAM,0EAAkB,KACzDG,GAAYJ,EAAAA,EAAAA,GAAaC,EAAAA,MAAW,kBAAM,0EAAqB,KAcrE,UAZkB,WAChB,OACEI,EAAAA,EAAAA,MAACC,EAAAA,GAAM,CAAAT,SAAA,EACLF,EAAAA,EAAAA,KAACY,EAAAA,GAAK,CAACC,KAAM,SAAUC,SAASd,EAAAA,EAAAA,KAACI,EAAM,OACvCJ,EAAAA,EAAAA,KAACY,EAAAA,GAAK,CAACC,KAAM,OAAQC,SAASd,EAAAA,EAAAA,KAACO,EAAQ,OACvCP,EAAAA,EAAAA,KAACY,EAAAA,GAAK,CAACC,KAAM,UAAWC,SAASd,EAAAA,EAAAA,KAACQ,EAAM,OACxCR,EAAAA,EAAAA,KAACY,EAAAA,GAAK,CAACC,KAAM,aAAcC,SAASd,EAAAA,EAAAA,KAACS,EAAS,OAC9CT,EAAAA,EAAAA,KAACY,EAAAA,GAAK,CAACC,KAAM,IAAKC,SAASd,EAAAA,EAAAA,KAACe,EAAAA,EAAY,QAG9C,C","sources":["screens/Console/Common/Components/withSuspense.tsx","screens/Console/KMS/KMSRoutes.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

(\n WrappedComponent: ComponentType

,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// 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 { Route, Routes } from \"react-router-dom\";\n\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport NotFoundPage from \"../../NotFoundPage\";\n\nconst Status = withSuspense(React.lazy(() => import(\"./Status\")));\nconst ListKeys = withSuspense(React.lazy(() => import(\"./ListKeys\")));\nconst AddKey = withSuspense(React.lazy(() => import(\"./AddKey\")));\nconst ImportKey = withSuspense(React.lazy(() => import(\"./ImportKey\")));\n\nconst KMSRoutes = () => {\n return (\n \n } />\n } />\n } />\n } />\n } />\n \n );\n};\n\nexport default KMSRoutes;\n"],"names":["WrappedComponent","fallback","arguments","length","undefined","props","_jsx","Suspense","children","_objectSpread","Status","withSuspense","React","ListKeys","AddKey","ImportKey","_jsxs","Routes","Route","path","element","NotFoundPage"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/3115.0561791c.chunk.js","mappings":"iJAiCA,IAfA,SACEA,GAEC,IADDC,EAAmCC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KAUtC,OARA,SAA+BG,GAC7B,OACEC,EAAAA,EAAAA,KAACC,EAAAA,SAAQ,CAACN,SAAUA,EAASO,UAC3BF,EAAAA,EAAAA,KAACN,GAAgBS,EAAAA,EAAAA,GAAA,GAAMJ,KAG7B,CAGF,C,0FCTMK,GAASC,EAAAA,EAAAA,GAAaC,EAAAA,MAAW,kBAAM,wDAAkB,KACzDC,GAAWF,EAAAA,EAAAA,GAAaC,EAAAA,MAAW,kBAAM,+BAAoB,KAC7DE,GAASH,EAAAA,EAAAA,GAAaC,EAAAA,MAAW,kBAAM,0EAAkB,KACzDG,GAAYJ,EAAAA,EAAAA,GAAaC,EAAAA,MAAW,kBAAM,0EAAqB,KAcrE,UAZkB,WAChB,OACEI,EAAAA,EAAAA,MAACC,EAAAA,GAAM,CAAAT,SAAA,EACLF,EAAAA,EAAAA,KAACY,EAAAA,GAAK,CAACC,KAAM,SAAUC,SAASd,EAAAA,EAAAA,KAACI,EAAM,OACvCJ,EAAAA,EAAAA,KAACY,EAAAA,GAAK,CAACC,KAAM,OAAQC,SAASd,EAAAA,EAAAA,KAACO,EAAQ,OACvCP,EAAAA,EAAAA,KAACY,EAAAA,GAAK,CAACC,KAAM,UAAWC,SAASd,EAAAA,EAAAA,KAACQ,EAAM,OACxCR,EAAAA,EAAAA,KAACY,EAAAA,GAAK,CAACC,KAAM,aAAcC,SAASd,EAAAA,EAAAA,KAACS,EAAS,OAC9CT,EAAAA,EAAAA,KAACY,EAAAA,GAAK,CAACC,KAAM,IAAKC,SAASd,EAAAA,EAAAA,KAACe,EAAAA,EAAY,QAG9C,C","sources":["screens/Console/Common/Components/withSuspense.tsx","screens/Console/KMS/KMSRoutes.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

(\n WrappedComponent: ComponentType

,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// 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 { Route, Routes } from \"react-router-dom\";\n\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport NotFoundPage from \"../../NotFoundPage\";\n\nconst Status = withSuspense(React.lazy(() => import(\"./Status\")));\nconst ListKeys = withSuspense(React.lazy(() => import(\"./ListKeys\")));\nconst AddKey = withSuspense(React.lazy(() => import(\"./AddKey\")));\nconst ImportKey = withSuspense(React.lazy(() => import(\"./ImportKey\")));\n\nconst KMSRoutes = () => {\n return (\n \n } />\n } />\n } />\n } />\n } />\n \n );\n};\n\nexport default KMSRoutes;\n"],"names":["WrappedComponent","fallback","arguments","length","undefined","props","_jsx","Suspense","children","_objectSpread","Status","withSuspense","React","ListKeys","AddKey","ImportKey","_jsxs","Routes","Route","path","element","NotFoundPage"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/312.04cab7e8.chunk.js b/portal-ui/build/static/js/312.a4a9011b.chunk.js similarity index 87% rename from portal-ui/build/static/js/312.04cab7e8.chunk.js rename to portal-ui/build/static/js/312.a4a9011b.chunk.js index 4a19b62db7..fb1efa02f7 100644 --- a/portal-ui/build/static/js/312.04cab7e8.chunk.js +++ b/portal-ui/build/static/js/312.a4a9011b.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[312],{312:function(e,n,t){t.r(n);var o=t(29439),i=t(72791),r=t(9505),l=t(23508),c=t(29945),u=t(45248),s=t(87995),a=t(81551),f=t(80184);n.default=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,p=e.selectedPolicy,d=(0,a.TL)(),h=(0,r.Z)((function(){return n(!0)}),(function(e){return d((0,s.Ih)(e))})),x=(0,o.Z)(h,2),y=x[0],j=x[1];if(!p)return null;return(0,f.jsx)(l.Z,{title:"Delete Policy",confirmText:"Delete",isOpen:t,titleIcon:(0,f.jsx)(c.NvT,{}),isLoading:y,onConfirm:function(){j("DELETE","/api/v1/policy/".concat((0,u.LL)(p)))},onClose:function(){return n(!1)},confirmationContent:(0,f.jsxs)(i.Fragment,{children:["Are you sure you want to delete policy ",(0,f.jsx)("br",{}),(0,f.jsx)("b",{children:p}),"?"]})})}}}]); -//# sourceMappingURL=312.04cab7e8.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[312],{312:function(e,n,t){t.r(n);var o=t(29439),i=t(72791),r=t(9505),l=t(23508),c=t(29945),u=t(45248),s=t(87995),a=t(44690),f=t(80184);n.default=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,p=e.selectedPolicy,d=(0,a.TL)(),h=(0,r.Z)((function(){return n(!0)}),(function(e){return d((0,s.Ih)(e))})),x=(0,o.Z)(h,2),y=x[0],j=x[1];if(!p)return null;return(0,f.jsx)(l.Z,{title:"Delete Policy",confirmText:"Delete",isOpen:t,titleIcon:(0,f.jsx)(c.NvT,{}),isLoading:y,onConfirm:function(){j("DELETE","/api/v1/policy/".concat((0,u.LL)(p)))},onClose:function(){return n(!1)},confirmationContent:(0,f.jsxs)(i.Fragment,{children:["Are you sure you want to delete policy ",(0,f.jsx)("br",{}),(0,f.jsx)("b",{children:p}),"?"]})})}}}]); +//# sourceMappingURL=312.a4a9011b.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/312.04cab7e8.chunk.js.map b/portal-ui/build/static/js/312.a4a9011b.chunk.js.map similarity index 98% rename from portal-ui/build/static/js/312.04cab7e8.chunk.js.map rename to portal-ui/build/static/js/312.a4a9011b.chunk.js.map index 4713dab831..85c0991719 100644 --- a/portal-ui/build/static/js/312.04cab7e8.chunk.js.map +++ b/portal-ui/build/static/js/312.a4a9011b.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/312.04cab7e8.chunk.js","mappings":"uNA0EA,UA3CqB,SAAHA,GAIS,IAHzBC,EAA0BD,EAA1BC,2BACAC,EAAUF,EAAVE,WACAC,EAAcH,EAAdG,eAEMC,GAAWC,EAAAA,EAAAA,MAMjBC,GAAyCC,EAAAA,EAAAA,IALpB,WAAH,OAASN,GAA2B,EAAM,IACzC,SAACO,GAAyB,OAC3CJ,GAASK,EAAAA,EAAAA,IAAqBD,GAAM,IAGmCE,GAAAC,EAAAA,EAAAA,GAAAL,EAAA,GAAlEM,EAAaF,EAAA,GAAEG,EAAeH,EAAA,GAErC,IAAKP,EACH,OAAO,KAUT,OACEW,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CACZC,MAAK,gBACLC,YAAa,SACbC,OAAQhB,EACRiB,WAAWL,EAAAA,EAAAA,KAACM,EAAAA,IAAiB,IAC7BC,UAAWT,EACXU,UAdoB,WACtBT,EACE,SAAS,kBAADU,QACUC,EAAAA,EAAAA,IAAgBrB,IAEtC,EAUIsB,QAvBY,WAAH,OAASxB,GAA2B,EAAO,EAwBpDyB,qBACEC,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CAAC,2CAC+Bf,EAAAA,EAAAA,KAAA,UACvCA,EAAAA,EAAAA,KAAA,KAAAe,SAAI1B,IAAmB,QAKjC,C","sources":["screens/Console/Policies/DeletePolicy.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\n\ninterface IDeletePolicyProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedPolicy: string;\n}\n\nconst DeletePolicy = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedPolicy,\n}: IDeletePolicyProps) => {\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\n if (!selectedPolicy) {\n return null;\n }\n\n const onConfirmDelete = () => {\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/policy/${encodeURLString(selectedPolicy)}`,\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 policy
\n {selectedPolicy}?\n
\n }\n />\n );\n};\n\nexport default DeletePolicy;\n"],"names":["_ref","closeDeleteModalAndRefresh","deleteOpen","selectedPolicy","dispatch","useAppDispatch","_useApi","useApi","err","setErrorSnackMessage","_useApi2","_slicedToArray","deleteLoading","invokeDeleteApi","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","concat","encodeURLString","onClose","confirmationContent","_jsxs","Fragment","children"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/312.a4a9011b.chunk.js","mappings":"uNA0EA,UA3CqB,SAAHA,GAIS,IAHzBC,EAA0BD,EAA1BC,2BACAC,EAAUF,EAAVE,WACAC,EAAcH,EAAdG,eAEMC,GAAWC,EAAAA,EAAAA,MAMjBC,GAAyCC,EAAAA,EAAAA,IALpB,WAAH,OAASN,GAA2B,EAAM,IACzC,SAACO,GAAyB,OAC3CJ,GAASK,EAAAA,EAAAA,IAAqBD,GAAM,IAGmCE,GAAAC,EAAAA,EAAAA,GAAAL,EAAA,GAAlEM,EAAaF,EAAA,GAAEG,EAAeH,EAAA,GAErC,IAAKP,EACH,OAAO,KAUT,OACEW,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CACZC,MAAK,gBACLC,YAAa,SACbC,OAAQhB,EACRiB,WAAWL,EAAAA,EAAAA,KAACM,EAAAA,IAAiB,IAC7BC,UAAWT,EACXU,UAdoB,WACtBT,EACE,SAAS,kBAADU,QACUC,EAAAA,EAAAA,IAAgBrB,IAEtC,EAUIsB,QAvBY,WAAH,OAASxB,GAA2B,EAAO,EAwBpDyB,qBACEC,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CAAC,2CAC+Bf,EAAAA,EAAAA,KAAA,UACvCA,EAAAA,EAAAA,KAAA,KAAAe,SAAI1B,IAAmB,QAKjC,C","sources":["screens/Console/Policies/DeletePolicy.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\n\ninterface IDeletePolicyProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedPolicy: string;\n}\n\nconst DeletePolicy = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedPolicy,\n}: IDeletePolicyProps) => {\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\n if (!selectedPolicy) {\n return null;\n }\n\n const onConfirmDelete = () => {\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/policy/${encodeURLString(selectedPolicy)}`,\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 policy
\n {selectedPolicy}?\n
\n }\n />\n );\n};\n\nexport default DeletePolicy;\n"],"names":["_ref","closeDeleteModalAndRefresh","deleteOpen","selectedPolicy","dispatch","useAppDispatch","_useApi","useApi","err","setErrorSnackMessage","_useApi2","_slicedToArray","deleteLoading","invokeDeleteApi","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","concat","encodeURLString","onClose","confirmationContent","_jsxs","Fragment","children"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/3138.aa66ab9b.chunk.js b/portal-ui/build/static/js/3138.47ee08f2.chunk.js similarity index 98% rename from portal-ui/build/static/js/3138.aa66ab9b.chunk.js rename to portal-ui/build/static/js/3138.47ee08f2.chunk.js index 7988fca15b..3776e15ef2 100644 --- a/portal-ui/build/static/js/3138.aa66ab9b.chunk.js +++ b/portal-ui/build/static/js/3138.47ee08f2.chunk.js @@ -1,2 +1,2 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[3138],{92217:function(e,t,n){"use strict";var o=n(72791),r=n(29945),i=n(78029),a=n.n(i),c=n(27454),u=n(80184);t.Z=function(e){var t=e.value,n=e.label,i=void 0===n?"":n,l=e.tooltip,s=void 0===l?"":l,p=e.mode,f=void 0===p?"json":p,d=e.onChange,y=e.editorHeight,v=void 0===y?250:y;return(0,u.jsx)(r.pq4,{value:t,onChange:function(e){return d(e)},mode:f,tooltip:s,editorHeight:v,label:i,helpTools:(0,u.jsx)(o.Fragment,{children:(0,u.jsx)(c.Z,{tooltip:"Copy to Clipboard",children:(0,u.jsx)(a(),{text:t,children:(0,u.jsx)(r.zxk,{type:"button",id:"copy-code-mirror",icon:(0,u.jsx)(r.TIy,{}),color:"primary",variant:"regular"})})})})})}},21435:function(e,t,n){"use strict";var o=n(29439),r=n(1413),i=n(72791),a=n(20817),c=n(61889),u=n(30829),l=n(20068),s=n(13400),p=n(20165),f=n(3579),d=n(11135),y=n(72455),v=n(25787),b=n(23814),m=n(29945),x=n(63733),h=n(80184),j=(0,y.Z)((function(e){return(0,d.Z)((0,r.Z)({},b.gM))}));function g(e){var t=j();return(0,h.jsx)(a.Z,(0,r.Z)({InputProps:{classes:t}},e))}t.Z=(0,v.Z)((function(e){return(0,d.Z)((0,r.Z)((0,r.Z)((0,r.Z)({},b.YI),b.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}}}))}))((function(e){var t=e.label,n=e.onChange,a=e.value,d=e.id,y=e.name,v=e.type,b=void 0===v?"text":v,j=e.autoComplete,C=void 0===j?"off":j,Z=e.disabled,w=void 0!==Z&&Z,O=e.multiline,P=void 0!==O&&O,k=e.tooltip,S=void 0===k?"":k,E=e.index,_=void 0===E?0:E,D=e.error,R=void 0===D?"":D,I=e.required,T=void 0!==I&&I,M=e.placeholder,A=void 0===M?"":M,F=e.min,N=e.max,K=e.overlayId,z=e.overlayIcon,B=void 0===z?null:z,L=e.overlayObject,H=void 0===L?null:L,U=e.extraInputProps,W=void 0===U?{}:U,Y=e.overlayAction,q=e.noLabelMinWidth,V=void 0!==q&&q,X=e.pattern,G=void 0===X?"":X,J=e.autoFocus,Q=void 0!==J&&J,$=e.classes,ee=e.className,te=void 0===ee?"":ee,ne=e.onKeyPress,oe=e.onFocus,re=e.onPaste,ie=(0,r.Z)({"data-index":_},W),ae=(0,i.useState)(!1),ce=(0,o.Z)(ae,2),ue=ce[0],le=ce[1];"number"===b&&F&&(ie.min=F),"number"===b&&N&&(ie.max=N),""!==G&&(ie.pattern=G);var se=B,pe=b;return"password"===b&&null===B&&(se=ue?(0,h.jsx)(p.Z,{}):(0,h.jsx)(f.Z,{}),pe=ue?"text":"password"),(0,h.jsx)(i.Fragment,{children:(0,h.jsxs)(c.ZP,{container:!0,className:(0,x.Z)(""!==te?te:"",""!==R?$.errorInField:$.inputBoxContainer),children:[""!==t&&(0,h.jsxs)(u.Z,{htmlFor:d,className:V?$.noMinWidthLabel:$.inputLabel,children:[(0,h.jsxs)("span",{children:[t,T?"*":""]}),""!==S&&(0,h.jsx)("div",{className:$.tooltipContainer,children:(0,h.jsx)(l.Z,{title:S,placement:"top-start",children:(0,h.jsx)("div",{className:$.tooltip,children:(0,h.jsx)(m.byK,{})})})})]}),(0,h.jsxs)("div",{className:$.textBoxContainer,children:[(0,h.jsx)(g,{id:d,name:y,fullWidth:!0,value:a,autoFocus:Q,disabled:w,onChange:n,type:pe,multiline:P,autoComplete:C,inputProps:ie,error:""!==R,helperText:R,placeholder:A,className:$.inputRebase,onKeyPress:ne,onFocus:oe,onPaste:re}),se&&(0,h.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==t?"withLabel":""),children:(0,h.jsx)(s.Z,{onClick:Y?function(){Y()}:function(){return le(!ue)},id:K,size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:se})}),H&&(0,h.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==t?"withLabel":""),children:H})]})]})})}))},53138:function(e,t,n){"use strict";n.r(t),n.d(t,{emptyContent:function(){return x}});var o=n(29439),r=n(72791),i=n(29945),a=n(21435),c=n(56087),u=n(87995),l=n(57689),s=n(81551),p=n(9505),f=n(40214),d=n(92217),y=n(47974),v=n(99670),b=n(23814),m=n(80184),x='{\n "bytes": ""\n}';t.default=function(){var e=(0,s.TL)(),t=(0,l.s0)(),n=(0,p.Z)((function(){return t("".concat(c.gA.KMS_KEYS))}),(function(t){return e((0,u.Ih)(t))})),h=(0,o.Z)(n,2),j=h[0],g=h[1],C=(0,r.useState)(""),Z=(0,o.Z)(C,2),w=Z[0],O=Z[1],P=(0,r.useState)(x),k=(0,o.Z)(P,2),S=k[0],E=k[1],_=""!==w.trim()&&-1===w.indexOf(" ");return(0,r.useEffect)((function(){e((0,u.Sc)("import_key"))}),[]),(0,m.jsx)(r.Fragment,{children:(0,m.jsxs)(i.rjZ,{item:!0,xs:12,children:[(0,m.jsx)(y.Z,{label:(0,m.jsx)(i.hbI,{onClick:function(){return t(c.gA.KMS_KEYS)},label:"Keys"}),actions:(0,m.jsx)(v.Z,{})}),(0,m.jsx)(i.Xgh,{children:(0,m.jsx)(i.ltY,{title:"Import Key",icon:(0,m.jsx)(i.sR0,{}),helpBox:(0,m.jsx)(f.Z,{helpText:"Encryption Key",contents:["Import a cryptographic key in the Key Management Service server connected to MINIO."]}),children:(0,m.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){e.preventDefault();var t=JSON.parse(S);g("POST","/api/v1/kms/keys/".concat(w,"/import"),t)}(e)},children:(0,m.jsxs)(i.rjZ,{container:!0,children:[(0,m.jsx)(i.rjZ,{item:!0,xs:12,children:(0,m.jsx)(a.Z,{id:"key-name",name:"key-name",label:"Key Name",autoFocus:!0,value:w,error:function(e){return-1!==e.indexOf(" ")?"Key name cannot contain spaces":""}(w),onChange:function(e){O(e.target.value)}})}),(0,m.jsx)(i.rjZ,{item:!0,xs:12,children:(0,m.jsx)(d.Z,{label:"Set key Content",value:S,onChange:function(e){E(e)},editorHeight:"350px"})}),(0,m.jsxs)(i.rjZ,{item:!0,xs:12,sx:b.ID.modalButtonBar,children:[(0,m.jsx)(i.zxk,{id:"clear",type:"button",variant:"regular",onClick:function(){O(""),E("")},label:"Clear"}),(0,m.jsx)(i.zxk,{id:"import-key",type:"submit",variant:"callAction",color:"primary",disabled:j||!_,label:"Import"})]})]})})})})]})})}},40214:function(e,t,n){"use strict";var o=n(72791),r=n(29945),i=n(80184);t.Z=function(e){var t=e.helpText,n=e.contents;return(0,i.jsx)(r.KfX,{iconComponent:(0,i.jsx)(r.M9A,{}),title:t,help:(0,i.jsx)(o.Fragment,{children:n.map((function(e){return(0,i.jsx)(r.xuv,{sx:{paddingBottom:"20px"},children:e})}))})})}},3579:function(e,t,n){"use strict";var o=n(64836);t.Z=void 0;var r=o(n(45649)),i=n(80184),a=(0,r.default)((0,i.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"}),"RemoveRedEye");t.Z=a},20165:function(e,t,n){"use strict";var o=n(64836);t.Z=void 0;var r=o(n(45649)),i=n(80184),a=(0,r.default)((0,i.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}),"VisibilityOff");t.Z=a},45649:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o.createSvgIcon}});var o=n(28610)},31260:function(e,t,n){"use strict";var o=n(78949);t.Z=o.Z},28610:function(e,t,n){"use strict";n.r(t),n.d(t,{capitalize:function(){return r.Z},createChainedFunction:function(){return i.Z},createSvgIcon:function(){return a.Z},debounce:function(){return c.Z},deprecatedPropType:function(){return u},isMuiElement:function(){return l.Z},ownerDocument:function(){return s.Z},ownerWindow:function(){return p.Z},requirePropFactory:function(){return f},setRef:function(){return d},unstable_ClassNameGenerator:function(){return g},unstable_useEnhancedEffect:function(){return y.Z},unstable_useId:function(){return v.Z},unsupportedProp:function(){return b},useControlled:function(){return m.Z},useEventCallback:function(){return x.Z},useForkRef:function(){return h.Z},useIsFocusVisible:function(){return j.Z}});var o=n(55902),r=n(14036),i=n(31260),a=n(76189),c=n(83199);var u=function(e,t){return function(){return null}},l=n(19103),s=n(98301),p=n(17602);n(87462);var f=function(e,t){return function(){return null}},d=n(62971).Z,y=n(40162),v=n(67384);var b=function(e,t,n,o,r){return null},m=n(98278),x=n(89683),h=n(42071),j=n(23031),g={configure:function(e){o.Z.configure(e)}}},76998:function(e,t,n){"use strict";var o=n(42458),r={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,i,a,c,u,l,s=!1;t||(t={}),n=t.debug||!1;try{if(a=o(),c=document.createRange(),u=document.getSelection(),(l=document.createElement("span")).textContent=e,l.ariaHidden="true",l.style.all="unset",l.style.position="fixed",l.style.top=0,l.style.clip="rect(0, 0, 0, 0)",l.style.whiteSpace="pre",l.style.webkitUserSelect="text",l.style.MozUserSelect="text",l.style.msUserSelect="text",l.style.userSelect="text",l.addEventListener("copy",(function(o){if(o.stopPropagation(),t.format)if(o.preventDefault(),"undefined"===typeof o.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var i=r[t.format]||r.default;window.clipboardData.setData(i,e)}else o.clipboardData.clearData(),o.clipboardData.setData(t.format,e);t.onCopy&&(o.preventDefault(),t.onCopy(o.clipboardData))})),document.body.appendChild(l),c.selectNodeContents(l),u.addRange(c),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");s=!0}catch(p){n&&console.error("unable to copy using execCommand: ",p),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),s=!0}catch(p){n&&console.error("unable to copy using clipboardData: ",p),n&&console.error("falling back to prompt"),i=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(i,e)}}finally{u&&("function"==typeof u.removeRange?u.removeRange(c):u.removeAllRanges()),l&&document.body.removeChild(l),a()}return s}},568:function(e,t,n){"use strict";function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var r=c(n(72791)),i=c(n(76998)),a=["text","onCopy","options","children"];function c(e){return e&&e.__esModule?e:{default:e}}function u(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function l(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function p(e,t){for(var n=0;n=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function p(e,t){for(var n=0;n.\n\nimport React, { Fragment } from \"react\";\nimport { Button, CodeEditor, CopyIcon } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n onChange: (value: string) => any;\n editorHeight?: string | number;\n}\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n onChange,\n editorHeight = 250,\n}: ICodeWrapper) => {\n return (\n onChange(value)}\n mode={mode}\n tooltip={tooltip}\n editorHeight={editorHeight}\n label={label}\n helpTools={\n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n }\n />\n );\n};\n\nexport default CodeMirrorWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { ClipboardEvent, useState } from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n onKeyPress?: (e: any) => void;\n onFocus?: () => void;\n onPaste?: (e: ClipboardEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayId?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n }),\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayId,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n onFocus,\n onPaste,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n const [toggleTextInput, setToggleTextInput] = useState(false);\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n let inputBoxWrapperIcon = overlayIcon;\n let inputBoxWrapperType = type;\n\n if (type === \"password\" && overlayIcon === null) {\n inputBoxWrapperIcon = toggleTextInput ? (\n \n ) : (\n \n );\n inputBoxWrapperType = toggleTextInput ? \"text\" : \"password\";\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n

\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n
\n \n {inputBoxWrapperIcon && (\n \n {\n overlayAction();\n }\n : () => setToggleTextInput(!toggleTextInput)\n }\n id={overlayId}\n size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {inputBoxWrapperIcon}\n \n
\n )}\n {overlayObject && (\n \n {overlayObject}\n \n )}\n \n \n \n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 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 {\n AddAccessRuleIcon,\n BackLink,\n Button,\n FormLayout,\n Grid,\n PageLayout,\n} from \"mds\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useAppDispatch } from \"../../../store\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport KMSHelpBox from \"./KMSHelpbox\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\n\nexport const emptyContent = '{\\n \"bytes\": \"\"\\n}';\n\nconst ImportKey = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const onSuccess = () => navigate(`${IAM_PAGES.KMS_KEYS}`);\n\n const onError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n\n const [loading, invokeApi] = useApi(onSuccess, onError);\n const [keyName, setKeyName] = useState(\"\");\n const [keyContent, setKeyContent] = useState(emptyContent);\n\n const importRecord = (event: React.FormEvent) => {\n event.preventDefault();\n let data = JSON.parse(keyContent);\n invokeApi(\"POST\", `/api/v1/kms/keys/${keyName}/import`, data);\n };\n\n const resetForm = () => {\n setKeyName(\"\");\n setKeyContent(\"\");\n };\n\n const validateKeyName = (keyName: string) => {\n if (keyName.indexOf(\" \") !== -1) {\n return \"Key name cannot contain spaces\";\n } else return \"\";\n };\n\n const validSave = keyName.trim() !== \"\" && keyName.indexOf(\" \") === -1;\n\n useEffect(() => {\n dispatch(setHelpName(\"import_key\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n \n navigate(IAM_PAGES.KMS_KEYS)}\n label={\"Keys\"}\n />\n }\n actions={}\n />\n \n }\n helpBox={\n \n }\n >\n ) => {\n importRecord(e);\n }}\n >\n \n \n ) => {\n setKeyName(e.target.value);\n }}\n />\n \n \n {\n setKeyContent(value);\n }}\n editorHeight={\"350px\"}\n />\n \n \n \n\n \n \n \n \n \n \n \n \n );\n};\n\nexport default ImportKey;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { HelpBox, HelpIconFilled, Box } from \"mds\";\n\ninterface IKMSHelpBoxProps {\n helpText: string;\n contents: string[];\n}\n\nconst KMSHelpBox = ({ helpText, contents }: IKMSHelpBoxProps) => {\n return (\n }\n title={helpText}\n help={\n \n {contents.map((content) => (\n {content}\n ))}\n \n }\n />\n );\n};\n\nexport default KMSHelpBox;\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'RemoveRedEye');\nexports.default = _default;","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["_ref","value","_ref$label","label","_ref$tooltip","tooltip","_ref$mode","mode","onChange","_ref$editorHeight","editorHeight","_jsx","CodeEditor","helpTools","Fragment","children","TooltipWrapper","CopyToClipboard","text","Button","type","id","icon","CopyIcon","color","variant","inputStyles","makeStyles","theme","createStyles","_objectSpread","inputFieldStyles","InputField","props","classes","TextField","InputProps","withStyles","fieldBasic","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","name","_ref$type","_ref$autoComplete","autoComplete","_ref$disabled","disabled","_ref$multiline","multiline","_ref$index","index","_ref$error","error","_ref$required","required","_ref$placeholder","placeholder","min","max","overlayId","_ref$overlayIcon","overlayIcon","_ref$overlayObject","overlayObject","_ref$extraInputProps","extraInputProps","_ref$noLabelMinWidth","noLabelMinWidth","_ref$pattern","pattern","_ref$autoFocus","autoFocus","_ref$className","className","onKeyPress","onFocus","onPaste","inputProps","_useState","useState","_useState2","_slicedToArray","toggleTextInput","setToggleTextInput","inputBoxWrapperIcon","inputBoxWrapperType","VisibilityOffIcon","RemoveRedEyeIcon","React","_jsxs","Grid","container","clsx","errorInField","inputBoxContainer","InputLabel","htmlFor","noMinWidthLabel","inputLabel","tooltipContainer","Tooltip","title","placement","HelpIcon","fullWidth","helperText","inputRebase","concat","IconButton","onClick","size","disableFocusRipple","disableRipple","disableTouchRipple","emptyContent","dispatch","useAppDispatch","navigate","useNavigate","_useApi","useApi","IAM_PAGES","KMS_KEYS","err","setErrorSnackMessage","_useApi2","loading","invokeApi","keyName","setKeyName","_useState3","_useState4","keyContent","setKeyContent","validSave","trim","indexOf","useEffect","setHelpName","item","xs","PageHeaderWrapper","BackLink","actions","HelpMenu","PageLayout","FormLayout","AddAccessRuleIcon","helpBox","KMSHelpBox","helpText","contents","noValidate","onSubmit","e","event","preventDefault","data","JSON","parse","importRecord","InputBoxWrapper","validateKeyName","target","CodeMirrorWrapper","sx","modalStyleUtils","modalButtonBar","HelpBox","iconComponent","HelpIconFilled","help","map","content","Box","paddingBottom","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Object","defineProperty","enumerable","get","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","deselectCurrent","clipboardToIE11Formatting","module","options","debug","message","reselectPrevious","range","selection","mark","success","document","createRange","getSelection","createElement","textContent","ariaHidden","style","all","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","format","clipboardData","console","warn","window","clearData","setData","onCopy","body","appendChild","selectNodeContents","addRange","execCommand","Error","copyKey","test","navigator","userAgent","replace","prompt","removeRange","removeAllRanges","removeChild","_typeof","obj","Symbol","iterator","constructor","prototype","_react","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","apply","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","call","_defineProperties","descriptor","configurable","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","result","Super","_getPrototypeOf","NewTarget","this","self","TypeError","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","getPrototypeOf","_React$PureComponent","subClass","superClass","create","_inherits","Constructor","protoProps","staticProps","_super","_this","instance","_classCallCheck","_len","args","Array","_key","_this$props","elem","Children","only","_this$props2","cloneElement","PureComponent","undefined","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/3138.47ee08f2.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper.tsx","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/KMS/ImportKey.tsx","screens/Console/KMS/KMSHelpbox.tsx","../node_modules/@mui/icons-material/RemoveRedEye.js","../node_modules/@mui/icons-material/VisibilityOff.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/esm/deprecatedPropType.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/esm/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/esm/unsupportedProp.js","../node_modules/@mui/material/utils/index.js","../node_modules/copy-to-clipboard/index.js","../node_modules/react-copy-to-clipboard/lib/Component.js","../node_modules/react-copy-to-clipboard/lib/index.js","../node_modules/toggle-selection/index.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.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 } from \"react\";\nimport { Button, CodeEditor, CopyIcon } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n onChange: (value: string) => any;\n editorHeight?: string | number;\n}\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n onChange,\n editorHeight = 250,\n}: ICodeWrapper) => {\n return (\n onChange(value)}\n mode={mode}\n tooltip={tooltip}\n editorHeight={editorHeight}\n label={label}\n helpTools={\n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n }\n />\n );\n};\n\nexport default CodeMirrorWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { ClipboardEvent, useState } from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n onKeyPress?: (e: any) => void;\n onFocus?: () => void;\n onPaste?: (e: ClipboardEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayId?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n }),\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayId,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n onFocus,\n onPaste,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n const [toggleTextInput, setToggleTextInput] = useState(false);\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n let inputBoxWrapperIcon = overlayIcon;\n let inputBoxWrapperType = type;\n\n if (type === \"password\" && overlayIcon === null) {\n inputBoxWrapperIcon = toggleTextInput ? (\n \n ) : (\n \n );\n inputBoxWrapperType = toggleTextInput ? \"text\" : \"password\";\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n
\n \n {inputBoxWrapperIcon && (\n \n {\n overlayAction();\n }\n : () => setToggleTextInput(!toggleTextInput)\n }\n id={overlayId}\n size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {inputBoxWrapperIcon}\n \n
\n )}\n {overlayObject && (\n \n {overlayObject}\n \n )}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 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 {\n AddAccessRuleIcon,\n BackLink,\n Button,\n FormLayout,\n Grid,\n PageLayout,\n} from \"mds\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useAppDispatch } from \"../../../store\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport KMSHelpBox from \"./KMSHelpbox\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\n\nexport const emptyContent = '{\\n \"bytes\": \"\"\\n}';\n\nconst ImportKey = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const onSuccess = () => navigate(`${IAM_PAGES.KMS_KEYS}`);\n\n const onError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n\n const [loading, invokeApi] = useApi(onSuccess, onError);\n const [keyName, setKeyName] = useState(\"\");\n const [keyContent, setKeyContent] = useState(emptyContent);\n\n const importRecord = (event: React.FormEvent) => {\n event.preventDefault();\n let data = JSON.parse(keyContent);\n invokeApi(\"POST\", `/api/v1/kms/keys/${keyName}/import`, data);\n };\n\n const resetForm = () => {\n setKeyName(\"\");\n setKeyContent(\"\");\n };\n\n const validateKeyName = (keyName: string) => {\n if (keyName.indexOf(\" \") !== -1) {\n return \"Key name cannot contain spaces\";\n } else return \"\";\n };\n\n const validSave = keyName.trim() !== \"\" && keyName.indexOf(\" \") === -1;\n\n useEffect(() => {\n dispatch(setHelpName(\"import_key\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n \n navigate(IAM_PAGES.KMS_KEYS)}\n label={\"Keys\"}\n />\n }\n actions={}\n />\n \n }\n helpBox={\n \n }\n >\n ) => {\n importRecord(e);\n }}\n >\n \n \n ) => {\n setKeyName(e.target.value);\n }}\n />\n \n \n {\n setKeyContent(value);\n }}\n editorHeight={\"350px\"}\n />\n \n \n \n\n \n \n \n \n \n \n \n \n );\n};\n\nexport default ImportKey;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { HelpBox, HelpIconFilled, Box } from \"mds\";\n\ninterface IKMSHelpBoxProps {\n helpText: string;\n contents: string[];\n}\n\nconst KMSHelpBox = ({ helpText, contents }: IKMSHelpBoxProps) => {\n return (\n }\n title={helpText}\n help={\n \n {contents.map((content) => (\n {content}\n ))}\n \n }\n />\n );\n};\n\nexport default KMSHelpBox;\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'RemoveRedEye');\nexports.default = _default;","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["_ref","value","_ref$label","label","_ref$tooltip","tooltip","_ref$mode","mode","onChange","_ref$editorHeight","editorHeight","_jsx","CodeEditor","helpTools","Fragment","children","TooltipWrapper","CopyToClipboard","text","Button","type","id","icon","CopyIcon","color","variant","inputStyles","makeStyles","theme","createStyles","_objectSpread","inputFieldStyles","InputField","props","classes","TextField","InputProps","withStyles","fieldBasic","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","name","_ref$type","_ref$autoComplete","autoComplete","_ref$disabled","disabled","_ref$multiline","multiline","_ref$index","index","_ref$error","error","_ref$required","required","_ref$placeholder","placeholder","min","max","overlayId","_ref$overlayIcon","overlayIcon","_ref$overlayObject","overlayObject","_ref$extraInputProps","extraInputProps","_ref$noLabelMinWidth","noLabelMinWidth","_ref$pattern","pattern","_ref$autoFocus","autoFocus","_ref$className","className","onKeyPress","onFocus","onPaste","inputProps","_useState","useState","_useState2","_slicedToArray","toggleTextInput","setToggleTextInput","inputBoxWrapperIcon","inputBoxWrapperType","VisibilityOffIcon","RemoveRedEyeIcon","React","_jsxs","Grid","container","clsx","errorInField","inputBoxContainer","InputLabel","htmlFor","noMinWidthLabel","inputLabel","tooltipContainer","Tooltip","title","placement","HelpIcon","fullWidth","helperText","inputRebase","concat","IconButton","onClick","size","disableFocusRipple","disableRipple","disableTouchRipple","emptyContent","dispatch","useAppDispatch","navigate","useNavigate","_useApi","useApi","IAM_PAGES","KMS_KEYS","err","setErrorSnackMessage","_useApi2","loading","invokeApi","keyName","setKeyName","_useState3","_useState4","keyContent","setKeyContent","validSave","trim","indexOf","useEffect","setHelpName","item","xs","PageHeaderWrapper","BackLink","actions","HelpMenu","PageLayout","FormLayout","AddAccessRuleIcon","helpBox","KMSHelpBox","helpText","contents","noValidate","onSubmit","e","event","preventDefault","data","JSON","parse","importRecord","InputBoxWrapper","validateKeyName","target","CodeMirrorWrapper","sx","modalStyleUtils","modalButtonBar","HelpBox","iconComponent","HelpIconFilled","help","map","content","Box","paddingBottom","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Object","defineProperty","enumerable","get","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","deselectCurrent","clipboardToIE11Formatting","module","options","debug","message","reselectPrevious","range","selection","mark","success","document","createRange","getSelection","createElement","textContent","ariaHidden","style","all","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","format","clipboardData","console","warn","window","clearData","setData","onCopy","body","appendChild","selectNodeContents","addRange","execCommand","Error","copyKey","test","navigator","userAgent","replace","prompt","removeRange","removeAllRanges","removeChild","_typeof","obj","Symbol","iterator","constructor","prototype","_react","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","apply","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","call","_defineProperties","descriptor","configurable","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","result","Super","_getPrototypeOf","NewTarget","this","self","TypeError","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","getPrototypeOf","_React$PureComponent","subClass","superClass","create","_inherits","Constructor","protoProps","staticProps","_super","_this","instance","_classCallCheck","_len","args","Array","_key","_this$props","elem","Children","only","_this$props2","cloneElement","PureComponent","undefined","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/3171.45d97dbc.chunk.js b/portal-ui/build/static/js/3171.a4ead4ca.chunk.js similarity index 97% rename from portal-ui/build/static/js/3171.45d97dbc.chunk.js rename to portal-ui/build/static/js/3171.a4ead4ca.chunk.js index ed1f4b3c77..fe16ce1d6a 100644 --- a/portal-ui/build/static/js/3171.45d97dbc.chunk.js +++ b/portal-ui/build/static/js/3171.a4ead4ca.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[3171],{43171:function(e,s,t){t.r(s),t.d(s,{default:function(){return v}});var n=t(29439),i=t(72791),o=t(57689),r=t(23814),a=t(29945),c=t(31776),u=t(82342),l=t(56087),d=t(87995),p=t(81551),x=t(64554),f=t(80184),g=function(e){var s=e.icon,t=e.description;return(0,f.jsxs)(x.Z,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[s," ",(0,f.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:t})]})},h=function(){return(0,f.jsxs)(x.Z,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px",marginTop:{xs:"0px"}},children:[(0,f.jsxs)(x.Z,{sx:{fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center",marginBottom:"16px","& .min-icon":{height:"21px",width:"21px",marginRight:"15px"}},children:[(0,f.jsx)(a.M9A,{}),(0,f.jsx)("div",{children:"Learn more about Groups"})]}),(0,f.jsxs)(x.Z,{sx:{fontSize:"14px",marginBottom:"15px"},children:["Adding groups lets you assign IAM policies to multiple users at once.",(0,f.jsx)(x.Z,{sx:{paddingTop:"20px",paddingBottom:"10px"},children:"Users inherit access permissions to data and resources through the groups they belong to."}),(0,f.jsx)(x.Z,{sx:{paddingTop:"10px",paddingBottom:"10px"},children:"A user can be a member of multiple groups."}),(0,f.jsx)(x.Z,{sx:{paddingTop:"10px",paddingBottom:"10px"},children:"Groups provide a simplified method for managing shared permissions among users with common access patterns and workloads. Client\u2019s cannot authenticate to a MinIO deployment using a group as an identity."})]}),(0,f.jsxs)(x.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,f.jsx)(g,{icon:(0,f.jsx)(a.wws,{}),description:"Add Users to Group"}),(0,f.jsx)(x.Z,{sx:{paddingTop:"10px",paddingBottom:"10px"},children:"Select from the list of displayed users to assign users to the new group at creation. These users inherit the policies assigned to the group."}),(0,f.jsx)(g,{icon:(0,f.jsx)(a.v42,{}),description:"Assign Custom IAM Policies for Group"}),(0,f.jsx)(x.Z,{sx:{paddingTop:"10px",paddingBottom:"10px"},children:"You can add policies to the group by selecting it from the Groups view after creation. The Policy view lets you manage the assigned policies for the group."})]})]})},m=t(40228),j=t(47974),y=t(99670),v=function(){var e=(0,p.TL)(),s=(0,o.s0)(),t=(0,i.useState)(""),x=(0,n.Z)(t,2),g=x[0],v=x[1],Z=(0,i.useState)(!1),b=(0,n.Z)(Z,2),S=b[0],w=b[1],k=(0,i.useState)([]),A=(0,n.Z)(k,2),U=A[0],C=A[1],K=(0,i.useState)(!1),B=(0,n.Z)(K,2),G=B[0],E=B[1];(0,i.useEffect)((function(){E(""!==g.trim())}),[g,U]),(0,i.useEffect)((function(){if(S){c.h.groups.addGroup({group:g,members:U}).then((function(e){w(!1),s("".concat(l.gA.GROUPS))})).catch((function(s){w(!1),e((0,d.Ih)((0,u.g)(s.error)))}))}}),[S,g,U,e,s]);return(0,i.useEffect)((function(){e((0,d.Sc)("add_group"))}),[]),(0,f.jsxs)(i.Fragment,{children:[(0,f.jsx)(j.Z,{label:(0,f.jsx)(a.hbI,{label:"Groups",onClick:function(){return s(l.gA.GROUPS)}}),actions:(0,f.jsx)(y.Z,{})}),(0,f.jsx)(a.Xgh,{children:(0,f.jsx)(a.ltY,{title:"Create Group",icon:(0,f.jsx)(a.yeO,{}),helpBox:(0,f.jsx)(h,{}),children:(0,f.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),w(!0)},children:[(0,f.jsx)(a.Wzg,{id:"group-name",name:"group-name",label:"Group Name",autoFocus:!0,value:g,onChange:function(e){v(e.target.value)}}),(0,f.jsx)(m.Z,{selectedUsers:U,setSelectedUsers:C,editMode:!0}),(0,f.jsxs)(a.rjZ,{item:!0,xs:12,sx:r.ID.modalButtonBar,children:[(0,f.jsx)(a.zxk,{id:"clear-group",type:"button",variant:"regular",onClick:function(){v(""),C([])},label:"Clear"}),(0,f.jsx)(a.zxk,{id:"save-group",type:"submit",variant:"callAction",disabled:S||!G,label:"Save"})]}),S&&(0,f.jsx)(a.rjZ,{item:!0,xs:12,children:(0,f.jsx)(a.kod,{})})]})})})]})}},40228:function(e,s,t){var n=t(93433),i=t(29439),o=t(72791),r=t(26181),a=t.n(r),c=t(31776),u=t(82342),l=t(29945),d=t(21639),p=t(87995),x=t(81551),f=t(59114),g=t(80184);s.Z=function(e){var s=e.selectedUsers,t=e.setSelectedUsers,r=e.editMode,h=void 0!==r&&r,m=(0,x.TL)(),j=(0,o.useState)([]),y=(0,i.Z)(j,2),v=y[0],Z=y[1],b=(0,o.useState)(!1),S=(0,i.Z)(b,2),w=S[0],k=S[1],A=(0,o.useState)(""),U=(0,i.Z)(A,2),C=U[0],K=U[1],B=(0,o.useCallback)((function(){c.h.users.listUsers().then((function(e){var s=a()(e.data,"users",[]);s||(s=[]),Z(s.sort(d.LQ)),k(!1)})).catch((function(e){m((0,p.zb)((0,u.g)(e.error))),k(!1)}))}),[m]);(0,o.useEffect)((function(){k(!0)}),[]),(0,o.useEffect)((function(){w&&B()}),[w,B]);var G=s||[],E=v.filter((function(e){return e.accessKey.includes(C)}));return(0,g.jsx)(l.rjZ,{item:!0,xs:12,className:"inputItem",children:(0,g.jsxs)(l.xuv,{children:[w&&(0,g.jsx)(l.kod,{}),(null===v||void 0===v?void 0:v.length)>0?(0,g.jsxs)(o.Fragment,{children:[(0,g.jsx)(l.rjZ,{item:!0,xs:12,className:"inputItem",children:(0,g.jsx)(f.Z,{label:h?"Edit Members":"Assign Users",placeholder:"Filter Users",onChange:K,value:C})}),(0,g.jsx)(l.wQF,{columns:[{label:"Access Key",elementKey:"accessKey"}],onSelect:function(e){var s=e.target,i=s.value,o=s.checked,r=(0,n.Z)(G);return o?r.push(i):r=r.filter((function(e){return e!==i})),t(r),r},selectedItems:G,isLoading:w,records:E,entityName:"Users",idField:"accessKey",customPaperHeight:"200px"})]}):(0,g.jsx)(l.xuv,{sx:{textAlign:"center",padding:"10px 0"},children:"No Users to display"})]})})}},21639:function(e,s,t){t.d(s,{KE:function(){return r},LQ:function(){return n},V2:function(){return o},g4:function(){return i}});var n=function(e,s){if(e.accessKey&&s.accessKey){if(e.accessKey>s.accessKey)return 1;if(e.accessKeys.name?1:e.names?1:es.policy?1:e.policy0?(0,g.jsxs)(o.Fragment,{children:[(0,g.jsx)(l.rjZ,{item:!0,xs:12,className:"inputItem",children:(0,g.jsx)(f.Z,{label:h?"Edit Members":"Assign Users",placeholder:"Filter Users",onChange:K,value:C})}),(0,g.jsx)(l.wQF,{columns:[{label:"Access Key",elementKey:"accessKey"}],onSelect:function(e){var s=e.target,i=s.value,o=s.checked,r=(0,n.Z)(G);return o?r.push(i):r=r.filter((function(e){return e!==i})),t(r),r},selectedItems:G,isLoading:w,records:E,entityName:"Users",idField:"accessKey",customPaperHeight:"200px"})]}):(0,g.jsx)(l.xuv,{sx:{textAlign:"center",padding:"10px 0"},children:"No Users to display"})]})})}},21639:function(e,s,t){t.d(s,{KE:function(){return r},LQ:function(){return n},V2:function(){return o},g4:function(){return i}});var n=function(e,s){if(e.accessKey&&s.accessKey){if(e.accessKey>s.accessKey)return 1;if(e.accessKeys.name?1:e.names?1:es.policy?1:e.policy.\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport { GroupsIcon, HelpIconFilled, IAMPoliciesIcon } from \"mds\";\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 AddGroupHelpBox = () => {\n return (\n \n \n \n
Learn more about Groups
\n \n \n Adding groups lets you assign IAM policies to multiple users at once.\n \n Users inherit access permissions to data and resources through the\n groups they belong to.\n \n \n A user can be a member of multiple groups.\n \n \n Groups provide a simplified method for managing shared permissions\n among users with common access patterns and workloads. Client’s cannot\n authenticate to a MinIO deployment using a group as an identity.\n \n \n\n \n } description={`Add Users to Group`} />\n \n Select from the list of displayed users to assign users to the new\n group at creation. These users inherit the policies assigned to the\n group.\n \n }\n description={`Assign Custom IAM Policies for Group`}\n />\n \n You can add policies to the group by selecting it from the Groups view\n after creation. The Policy view lets you manage the assigned policies\n for the group.\n \n \n \n );\n};\n\nexport default AddGroupHelpBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\n\nimport {\n BackLink,\n Button,\n CreateGroupIcon,\n FormLayout,\n Grid,\n InputBox,\n PageLayout,\n ProgressBar,\n} from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport AddGroupHelpBox from \"./AddGroupHelpBox\";\nimport UsersSelectors from \"./UsersSelectors\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst AddGroupScreen = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const [groupName, setGroupName] = useState(\"\");\n const [saving, isSaving] = useState(false);\n const [selectedUsers, setSelectedUsers] = useState([]);\n const [validGroup, setValidGroup] = useState(false);\n\n useEffect(() => {\n setValidGroup(groupName.trim() !== \"\");\n }, [groupName, selectedUsers]);\n\n useEffect(() => {\n if (saving) {\n const saveRecord = () => {\n api.groups\n .addGroup({\n group: groupName,\n members: selectedUsers,\n })\n .then((res) => {\n isSaving(false);\n navigate(`${IAM_PAGES.GROUPS}`);\n })\n .catch((err) => {\n isSaving(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n saveRecord();\n }\n }, [saving, groupName, selectedUsers, dispatch, navigate]);\n\n //Fetch Actions\n const setSaving = (event: React.FormEvent) => {\n event.preventDefault();\n\n isSaving(true);\n };\n\n const resetForm = () => {\n setGroupName(\"\");\n setSelectedUsers([]);\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"add_group\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n navigate(IAM_PAGES.GROUPS)}\n />\n }\n actions={}\n />\n \n }\n helpBox={}\n >\n
\n ) => {\n setGroupName(e.target.value);\n }}\n />\n \n \n \n\n \n \n {saving && (\n \n \n \n )}\n \n \n
\n
\n );\n};\n\nexport default AddGroupScreen;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useCallback, useEffect, useState, Fragment } from \"react\";\nimport get from \"lodash/get\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { Box, DataTable, Grid, ProgressBar } from \"mds\";\n\nimport { usersSort } from \"../../../utils/sortFunctions\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport SearchBox from \"../Common/SearchBox\";\n\ninterface IGroupsProps {\n selectedUsers: string[];\n setSelectedUsers: any;\n editMode?: boolean;\n}\n\nconst UsersSelectors = ({\n selectedUsers,\n setSelectedUsers,\n editMode = false,\n}: IGroupsProps) => {\n const dispatch = useAppDispatch();\n //Local States\n const [records, setRecords] = useState([]);\n const [loading, isLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n\n const fetchUsers = useCallback(() => {\n api.users\n .listUsers()\n .then((res) => {\n let users = get(res.data, \"users\", []);\n\n if (!users) {\n users = [];\n }\n\n setRecords(users.sort(usersSort));\n isLoading(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n isLoading(false);\n });\n }, [dispatch]);\n\n //Effects\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n if (loading) {\n fetchUsers();\n }\n }, [loading, fetchUsers]);\n\n const selUsers = !selectedUsers ? [] : selectedUsers;\n\n //Fetch Actions\n const selectionChanged = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selUsers]; // We clone the selectedGroups array\n\n if (checked) {\n // If the user has checked this field we need to push this to selectedGroupsList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedUsers(elements);\n\n return elements;\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.accessKey.includes(filter),\n );\n\n return (\n \n \n {loading && }\n {records?.length > 0 ? (\n \n \n \n \n \n \n ) : (\n \n No Users to display\n \n )}\n \n \n );\n};\n\nexport default UsersSelectors;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Policy, User } from \"api/consoleApi\";\n\ninterface policyDetailsInterface {\n policy: string;\n}\n\nexport const usersSort = (a: User, b: User) => {\n if (a.accessKey && b.accessKey) {\n if (a.accessKey > b.accessKey) {\n return 1;\n }\n if (a.accessKey < b.accessKey) {\n return -1;\n }\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policySort = (a: Policy, b: Policy) => {\n if (a.name! > b.name!) {\n return 1;\n }\n if (a.name! < b.name!) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const stringSort = (a: string, b: string) => {\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policyDetailsSort = (\n a: policyDetailsInterface,\n b: policyDetailsInterface,\n) => {\n if (a.policy > b.policy) {\n return 1;\n }\n if (a.policy < b.policy) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n"],"names":["FeatureItem","_ref","icon","description","_jsxs","Box","sx","display","marginRight","height","width","marginBottom","children","_jsx","style","fontSize","fontStyle","color","flex","border","borderRadius","flexFlow","padding","marginTop","xs","fontWeight","alignItems","HelpIconFilled","paddingTop","paddingBottom","GroupsIcon","IAMPoliciesIcon","dispatch","useAppDispatch","navigate","useNavigate","_useState","useState","_useState2","_slicedToArray","groupName","setGroupName","_useState3","_useState4","saving","isSaving","_useState5","_useState6","selectedUsers","setSelectedUsers","_useState7","_useState8","validGroup","setValidGroup","useEffect","trim","api","groups","addGroup","group","members","then","res","concat","IAM_PAGES","GROUPS","catch","err","setErrorSnackMessage","errorToHandler","error","setHelpName","Fragment","PageHeaderWrapper","label","BackLink","onClick","actions","HelpMenu","PageLayout","FormLayout","title","CreateGroupIcon","helpBox","AddGroupHelpBox","noValidate","autoComplete","onSubmit","event","preventDefault","InputBox","id","name","autoFocus","value","onChange","e","target","UsersSelectors","editMode","Grid","item","modalStyleUtils","modalButtonBar","Button","type","variant","disabled","ProgressBar","_ref$editMode","records","setRecords","loading","isLoading","filter","setFilter","fetchUsers","useCallback","users","listUsers","get","data","sort","usersSort","setModalErrorSnackMessage","selUsers","filteredRecords","elementItem","accessKey","includes","className","length","SearchBox","placeholder","DataTable","columns","elementKey","onSelect","targetD","checked","elements","_toConsumableArray","push","element","selectedItems","entityName","idField","customPaperHeight","textAlign","a","b","policySort","stringSort","policyDetailsSort","policy"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/3171.a4ead4ca.chunk.js","mappings":"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","sources":["screens/Console/Groups/AddGroupHelpBox.tsx","screens/Console/Groups/AddGroupScreen.tsx","screens/Console/Groups/UsersSelectors.tsx","utils/sortFunctions.ts"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport { GroupsIcon, HelpIconFilled, IAMPoliciesIcon } from \"mds\";\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 AddGroupHelpBox = () => {\n return (\n \n \n \n
Learn more about Groups
\n \n \n Adding groups lets you assign IAM policies to multiple users at once.\n \n Users inherit access permissions to data and resources through the\n groups they belong to.\n \n \n A user can be a member of multiple groups.\n \n \n Groups provide a simplified method for managing shared permissions\n among users with common access patterns and workloads. Client’s cannot\n authenticate to a MinIO deployment using a group as an identity.\n \n \n\n \n } description={`Add Users to Group`} />\n \n Select from the list of displayed users to assign users to the new\n group at creation. These users inherit the policies assigned to the\n group.\n \n }\n description={`Assign Custom IAM Policies for Group`}\n />\n \n You can add policies to the group by selecting it from the Groups view\n after creation. The Policy view lets you manage the assigned policies\n for the group.\n \n \n \n );\n};\n\nexport default AddGroupHelpBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\n\nimport {\n BackLink,\n Button,\n CreateGroupIcon,\n FormLayout,\n Grid,\n InputBox,\n PageLayout,\n ProgressBar,\n} from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport AddGroupHelpBox from \"./AddGroupHelpBox\";\nimport UsersSelectors from \"./UsersSelectors\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst AddGroupScreen = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const [groupName, setGroupName] = useState(\"\");\n const [saving, isSaving] = useState(false);\n const [selectedUsers, setSelectedUsers] = useState([]);\n const [validGroup, setValidGroup] = useState(false);\n\n useEffect(() => {\n setValidGroup(groupName.trim() !== \"\");\n }, [groupName, selectedUsers]);\n\n useEffect(() => {\n if (saving) {\n const saveRecord = () => {\n api.groups\n .addGroup({\n group: groupName,\n members: selectedUsers,\n })\n .then((res) => {\n isSaving(false);\n navigate(`${IAM_PAGES.GROUPS}`);\n })\n .catch((err) => {\n isSaving(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n saveRecord();\n }\n }, [saving, groupName, selectedUsers, dispatch, navigate]);\n\n //Fetch Actions\n const setSaving = (event: React.FormEvent) => {\n event.preventDefault();\n\n isSaving(true);\n };\n\n const resetForm = () => {\n setGroupName(\"\");\n setSelectedUsers([]);\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"add_group\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n navigate(IAM_PAGES.GROUPS)}\n />\n }\n actions={}\n />\n \n }\n helpBox={}\n >\n
\n ) => {\n setGroupName(e.target.value);\n }}\n />\n \n \n \n\n \n \n {saving && (\n \n \n \n )}\n \n \n
\n
\n );\n};\n\nexport default AddGroupScreen;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useCallback, useEffect, useState, Fragment } from \"react\";\nimport get from \"lodash/get\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { Box, DataTable, Grid, ProgressBar } from \"mds\";\n\nimport { usersSort } from \"../../../utils/sortFunctions\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport SearchBox from \"../Common/SearchBox\";\n\ninterface IGroupsProps {\n selectedUsers: string[];\n setSelectedUsers: any;\n editMode?: boolean;\n}\n\nconst UsersSelectors = ({\n selectedUsers,\n setSelectedUsers,\n editMode = false,\n}: IGroupsProps) => {\n const dispatch = useAppDispatch();\n //Local States\n const [records, setRecords] = useState([]);\n const [loading, isLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n\n const fetchUsers = useCallback(() => {\n api.users\n .listUsers()\n .then((res) => {\n let users = get(res.data, \"users\", []);\n\n if (!users) {\n users = [];\n }\n\n setRecords(users.sort(usersSort));\n isLoading(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n isLoading(false);\n });\n }, [dispatch]);\n\n //Effects\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n if (loading) {\n fetchUsers();\n }\n }, [loading, fetchUsers]);\n\n const selUsers = !selectedUsers ? [] : selectedUsers;\n\n //Fetch Actions\n const selectionChanged = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selUsers]; // We clone the selectedGroups array\n\n if (checked) {\n // If the user has checked this field we need to push this to selectedGroupsList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedUsers(elements);\n\n return elements;\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.accessKey.includes(filter),\n );\n\n return (\n \n \n {loading && }\n {records?.length > 0 ? (\n \n \n \n \n \n \n ) : (\n \n No Users to display\n \n )}\n \n \n );\n};\n\nexport default UsersSelectors;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Policy, User } from \"api/consoleApi\";\n\ninterface policyDetailsInterface {\n policy: string;\n}\n\nexport const usersSort = (a: User, b: User) => {\n if (a.accessKey && b.accessKey) {\n if (a.accessKey > b.accessKey) {\n return 1;\n }\n if (a.accessKey < b.accessKey) {\n return -1;\n }\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policySort = (a: Policy, b: Policy) => {\n if (a.name! > b.name!) {\n return 1;\n }\n if (a.name! < b.name!) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const stringSort = (a: string, b: string) => {\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policyDetailsSort = (\n a: policyDetailsInterface,\n b: policyDetailsInterface,\n) => {\n if (a.policy > b.policy) {\n return 1;\n }\n if (a.policy < b.policy) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n"],"names":["FeatureItem","_ref","icon","description","_jsxs","Box","sx","display","marginRight","height","width","marginBottom","children","_jsx","style","fontSize","fontStyle","color","flex","border","borderRadius","flexFlow","padding","marginTop","xs","fontWeight","alignItems","HelpIconFilled","paddingTop","paddingBottom","GroupsIcon","IAMPoliciesIcon","dispatch","useAppDispatch","navigate","useNavigate","_useState","useState","_useState2","_slicedToArray","groupName","setGroupName","_useState3","_useState4","saving","isSaving","_useState5","_useState6","selectedUsers","setSelectedUsers","_useState7","_useState8","validGroup","setValidGroup","useEffect","trim","api","groups","addGroup","group","members","then","res","concat","IAM_PAGES","GROUPS","catch","err","setErrorSnackMessage","errorToHandler","error","setHelpName","Fragment","PageHeaderWrapper","label","BackLink","onClick","actions","HelpMenu","PageLayout","FormLayout","title","CreateGroupIcon","helpBox","AddGroupHelpBox","noValidate","autoComplete","onSubmit","event","preventDefault","InputBox","id","name","autoFocus","value","onChange","e","target","UsersSelectors","editMode","Grid","item","modalStyleUtils","modalButtonBar","Button","type","variant","disabled","ProgressBar","_ref$editMode","records","setRecords","loading","isLoading","filter","setFilter","fetchUsers","useCallback","users","listUsers","get","data","sort","usersSort","setModalErrorSnackMessage","selUsers","filteredRecords","elementItem","accessKey","includes","className","length","SearchBox","placeholder","DataTable","columns","elementKey","onSelect","targetD","checked","elements","_toConsumableArray","push","element","selectedItems","entityName","idField","customPaperHeight","textAlign","a","b","policySort","stringSort","policyDetailsSort","policy"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/3379.6be9ca7b.chunk.js b/portal-ui/build/static/js/3379.6be9ca7b.chunk.js new file mode 100644 index 0000000000..816b6d0c1b --- /dev/null +++ b/portal-ui/build/static/js/3379.6be9ca7b.chunk.js @@ -0,0 +1,2 @@ +(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[3379,4770],{59447:function(e,n,t){"use strict";var i=t(93433),o=t(29439),r=t(72791),a=t(26181),l=t.n(a),s=t(29945),c=t(80184);n.Z=function(e){var n=e.elements,t=e.name,a=e.label,u=e.tooltip,d=void 0===u?"":u,f=e.commonPlaceholder,p=void 0===f?"":f,h=e.onChange,m=e.withBorder,v=void 0!==m&&m,x=(0,r.useState)([""]),g=(0,o.Z)(x,2),b=g[0],j=g[1],y=(0,r.createRef)();(0,r.useEffect)((function(){if(1===b.length&&""===b[0]&&n&&""!==n){var e=n.split(",");e.push(""),j(e)}}),[n,b]),(0,r.useEffect)((function(){if(b.length>1){var e=y.current;e&&e.scrollIntoView(!1)}}),[b,y]);var Z=(0,r.useCallback)((function(e){h(e)}),[h]),k=(0,r.useRef)(!0);(0,r.useEffect)((function(){if(k.current)k.current=!1;else{var e=b.filter((function(e){return""!==e.trim()})).join(",");Z(e)}}),[b]);var C=function(e){e.persist();var n=(0,i.Z)(b),t=l()(e.target,"dataset.index","0");n[parseInt(t)]=e.target.value,j(n)},_=b.map((function(e,n){return(0,c.jsx)(s.Wzg,{id:"".concat(t,"-").concat(n.toString()),label:"",name:"".concat(t,"-").concat(n.toString()),value:b[n],onChange:C,index:n,placeholder:p,overlayIcon:n===b.length-1?(0,c.jsx)(s.dtP,{}):null,overlayAction:function(){!function(e){if(""!==e[e.length-1].trim()){var n=(0,i.Z)(e);n.push(""),j(n)}}(b)}},"csv-multi-".concat(t,"-").concat(n.toString()))}));return(0,c.jsx)(r.Fragment,{children:(0,c.jsxs)(s.xuv,{sx:{display:"flex"},className:"inputItem",children:[(0,c.jsxs)(s.AZs,{sx:{alignItems:"flex-start"},children:[(0,c.jsx)("span",{children:a}),""!==d&&(0,c.jsx)(s.xuv,{sx:{marginLeft:5,display:"flex",alignItems:"center","& .min-icon":{width:13}},children:(0,c.jsx)(s.ua7,{tooltip:d,placement:"top",children:(0,c.jsx)(s.xuv,{className:d,children:(0,c.jsx)(s.byK,{})})})})]}),(0,c.jsxs)(s.xuv,{withBorders:v,sx:{width:"100%",overflowY:"auto",height:150,position:"relative"},children:[_,(0,c.jsx)("div",{ref:y})]})]})})}},81159:function(e,n,t){"use strict";var i=t(4942),o=t(1413),r=t(72791),a=t(11135),l=t(25787),s=t(9955),c=t(30829),u=t(20068),d=t(20890),f=t(61889),p=t(23814),h=t(29945),m=t(63733),v=t(80184),x=(0,l.Z)((function(e){return{root:{width:50,height:24,padding:0,margin:0},switchBase:{padding:1,"&$checked":{transform:"translateX(24px)",color:e.palette.common.white,"& + $track":{backgroundColor:"#4CCB92",boxShadow:"inset 0px 1px 4px rgba(0,0,0,0.1)",opacity:1,border:"none"}},"&$focusVisible $thumb":{color:"#4CCB92",border:"6px solid #fff"}},thumb:{width:22,height:22,backgroundColor:"#FAFAFA",border:"2px solid #FFFFFF",marginLeft:1},track:{borderRadius:12,backgroundColor:"#E2E2E2",boxShadow:"inset 0px 1px 4px rgba(0,0,0,0.1)",opacity:1,transition:e.transitions.create(["background-color","border"])},checked:{},focusVisible:{},switchContainer:{display:"flex",alignItems:"center",justifyContent:"flex-end"}}}))(s.Z);n.Z=(0,l.Z)((function(e){return(0,a.Z)((0,o.Z)((0,o.Z)({indicatorLabelOn:{fontWeight:"bold",color:"#081C42 !important"},indicatorLabel:{fontSize:12,color:"#E2E2E2",margin:"0 8px 0 10px"},fieldDescription:{marginTop:4,color:"#999999"},tooltip:{fontSize:16}},p.OR),p.YI))}))((function(e){var n=e.label,t=void 0===n?"":n,a=e.onChange,l=e.value,s=e.id,p=e.name,g=e.checked,b=void 0!==g&&g,j=e.disabled,y=void 0!==j&&j,Z=e.switchOnly,k=void 0!==Z&&Z,C=e.tooltip,_=void 0===C?"":C,w=e.description,S=void 0===w?"":w,E=e.classes,A=e.indicatorLabels,I=e.extraInputProps,L=void 0===I?{}:I,F=(0,v.jsxs)(r.Fragment,{children:[!k&&(0,v.jsx)("span",{className:(0,m.Z)(E.indicatorLabel,(0,i.Z)({},E.indicatorLabelOn,!b)),children:A&&A.length>1?A[1]:"OFF"}),(0,v.jsx)(x,{checked:b,onChange:a,color:"primary",name:p,inputProps:(0,o.Z)({"aria-label":"primary checkbox"},L),disabled:y,disableRipple:!0,disableFocusRipple:!0,disableTouchRipple:!0,value:l,id:s}),!k&&(0,v.jsx)("span",{className:(0,m.Z)(E.indicatorLabel,(0,i.Z)({},E.indicatorLabelOn,b)),children:A?A[0]:"ON"})]});return k?F:(0,v.jsx)("div",{children:(0,v.jsxs)(f.ZP,{container:!0,alignItems:"center",children:[(0,v.jsx)(f.ZP,{item:!0,xs:12,sm:8,md:8,children:""!==t&&(0,v.jsxs)(c.Z,{htmlFor:s,className:E.inputLabel,children:[(0,v.jsx)("span",{children:t}),""!==_&&(0,v.jsx)("div",{className:E.tooltipContainer,children:(0,v.jsx)(u.Z,{title:_,placement:"top-start",children:(0,v.jsx)("div",{className:E.tooltip,children:(0,v.jsx)(h.byK,{})})})})]})}),(0,v.jsx)(f.ZP,{item:!0,xs:12,sm:""!==t?4:12,md:""!==t?4:12,textAlign:"right",justifyContent:"end",className:E.switchContainer,children:F}),""!==S&&(0,v.jsx)(f.ZP,{item:!0,xs:12,textAlign:"left",children:(0,v.jsx)(d.Z,{component:"p",className:E.fieldDescription,children:S})})]})})}))},21435:function(e,n,t){"use strict";var i=t(29439),o=t(1413),r=t(72791),a=t(20817),l=t(61889),s=t(30829),c=t(20068),u=t(13400),d=t(20165),f=t(3579),p=t(11135),h=t(72455),m=t(25787),v=t(23814),x=t(29945),g=t(63733),b=t(80184),j=(0,h.Z)((function(e){return(0,p.Z)((0,o.Z)({},v.gM))}));function y(e){var n=j();return(0,b.jsx)(a.Z,(0,o.Z)({InputProps:{classes:n}},e))}n.Z=(0,m.Z)((function(e){return(0,p.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},v.YI),v.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}}}))}))((function(e){var n=e.label,t=e.onChange,a=e.value,p=e.id,h=e.name,m=e.type,v=void 0===m?"text":m,j=e.autoComplete,Z=void 0===j?"off":j,k=e.disabled,C=void 0!==k&&k,_=e.multiline,w=void 0!==_&&_,S=e.tooltip,E=void 0===S?"":S,A=e.index,I=void 0===A?0:A,L=e.error,F=void 0===L?"":L,z=e.required,T=void 0!==z&&z,N=e.placeholder,M=void 0===N?"":N,R=e.min,P=e.max,q=e.overlayId,D=e.overlayIcon,W=void 0===D?null:D,O=e.overlayObject,B=void 0===O?null:O,H=e.extraInputProps,V=void 0===H?{}:H,K=e.overlayAction,Y=e.noLabelMinWidth,$=void 0!==Y&&Y,U=e.pattern,G=void 0===U?"":U,X=e.autoFocus,Q=void 0!==X&&X,J=e.classes,ee=e.className,ne=void 0===ee?"":ee,te=e.onKeyPress,ie=e.onFocus,oe=e.onPaste,re=(0,o.Z)({"data-index":I},V),ae=(0,r.useState)(!1),le=(0,i.Z)(ae,2),se=le[0],ce=le[1];"number"===v&&R&&(re.min=R),"number"===v&&P&&(re.max=P),""!==G&&(re.pattern=G);var ue=W,de=v;return"password"===v&&null===W&&(ue=se?(0,b.jsx)(d.Z,{}):(0,b.jsx)(f.Z,{}),de=se?"text":"password"),(0,b.jsx)(r.Fragment,{children:(0,b.jsxs)(l.ZP,{container:!0,className:(0,g.Z)(""!==ne?ne:"",""!==F?J.errorInField:J.inputBoxContainer),children:[""!==n&&(0,b.jsxs)(s.Z,{htmlFor:p,className:$?J.noMinWidthLabel:J.inputLabel,children:[(0,b.jsxs)("span",{children:[n,T?"*":""]}),""!==E&&(0,b.jsx)("div",{className:J.tooltipContainer,children:(0,b.jsx)(c.Z,{title:E,placement:"top-start",children:(0,b.jsx)("div",{className:J.tooltip,children:(0,b.jsx)(x.byK,{})})})})]}),(0,b.jsxs)("div",{className:J.textBoxContainer,children:[(0,b.jsx)(y,{id:p,name:h,fullWidth:!0,value:a,autoFocus:Q,disabled:C,onChange:t,type:de,multiline:w,autoComplete:Z,inputProps:re,error:""!==F,helperText:F,placeholder:M,className:J.inputRebase,onKeyPress:te,onFocus:ie,onPaste:oe}),ue&&(0,b.jsx)("div",{className:"".concat(J.overlayAction," ").concat(""!==n?"withLabel":""),children:(0,b.jsx)(u.Z,{onClick:K?function(){K()}:function(){return ce(!se)},id:q,size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:ue})}),B&&(0,b.jsx)("div",{className:"".concat(J.overlayAction," ").concat(""!==n?"withLabel":""),children:B})]})]})})}))},64163:function(e,n,t){"use strict";var i=t(1413),o=t(72791),r=t(61889),a=t(11135),l=t(25787),s=t(23814),c=t(80184);n.Z=(0,l.Z)((function(e){return(0,a.Z)((0,i.Z)({},s.xx))}))((function(e){var n=e.classes,t=e.label,i=void 0===t?"":t,a=e.content,l=e.multiLine,s=void 0!==l&&l,u=e.actionButton;return(0,c.jsx)(o.Fragment,{children:(0,c.jsxs)(r.ZP,{className:n.prefinedContainer,children:[""!==i&&(0,c.jsx)(r.ZP,{item:!0,xs:12,className:n.predefinedTitle,children:i}),(0,c.jsxs)(r.ZP,{item:!0,xs:12,className:"".concat(n.predefinedList," ").concat(u?n.includesActionButton:""),children:[(0,c.jsx)(r.ZP,{item:!0,xs:12,className:s?n.innerContentMultiline:n.innerContent,children:a}),u&&(0,c.jsx)("div",{className:n.overlayShareOption,children:u})]})]})})}))},53379:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return U}});var i=t(74165),o=t(15861),r=t(29439),a=t(72791),l=t(29945),s=t(58493),c=t(57689),u=t(26181),d=t.n(u),f=t(78687),p=t(31776),h=t(82342),m=t(87995),v=t(44690),x=t(93433),g=t(56028),b=t(76189),j=t(80184),y=(0,b.Z)((0,j.jsx)("path",{d:"M10 15h5.88c.27-.31.67-.5 1.12-.5.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5c-.44 0-.84-.19-1.12-.5H11.9c-.46 2.28-2.48 4-4.9 4-2.76 0-5-2.24-5-5 0-2.42 1.72-4.44 4-4.9v2.07c-1.16.41-2 1.53-2 2.83 0 1.65 1.35 3 3 3s3-1.35 3-3v-1zm2.5-11c1.65 0 3 1.35 3 3h2c0-2.76-2.24-5-5-5s-5 2.24-5 5c0 1.43.6 2.71 1.55 3.62l-2.35 3.9c-.68.14-1.2.75-1.2 1.48 0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5c0-.16-.02-.31-.07-.45l3.38-5.63C10.49 9.61 9.5 8.42 9.5 7c0-1.65 1.35-3 3-3zm4.5 9c-.64 0-1.23.2-1.72.54l-3.05-5.07C11.53 8.35 11 7.74 11 7c0-.83.67-1.5 1.5-1.5S14 6.17 14 7c0 .15-.02.29-.06.43l2.19 3.65c.28-.05.57-.08.87-.08 2.76 0 5 2.24 5 5s-2.24 5-5 5c-1.85 0-3.47-1.01-4.33-2.5h2.67c.48.32 1.05.5 1.66.5 1.65 0 3-1.35 3-3s-1.35-3-3-3z"}),"Webhook"),Z=t(13901),k=t(36909),C=t(23814),_=function(e){var n=e.open,t=e.type,i=e.onCloseEndpoint,o=(0,a.useState)(""),s=(0,r.Z)(o,2),c=s[0],u=s[1],d=(0,a.useState)(""),f=(0,r.Z)(d,2),b=f[0],_=f[1],w=(0,a.useState)(""),S=(0,r.Z)(w,2),E=S[0],A=S[1],I=(0,a.useState)(!1),L=(0,r.Z)(I,2),F=L[0],z=L[1],T=(0,a.useState)(["name","endpoint"]),N=(0,r.Z)(T,2),M=N[0],R=N[1],P=(0,a.useState)(["name","endpoint","auth-token"]),q=(0,r.Z)(P,2),D=q[0],W=q[1],O=(0,v.TL)(),B=function(e){W(D.filter((function(n){return n!==e})))},H=function(e,n){M.includes(e)&&n?R(M.filter((function(n){return n!==e}))):n||M.includes(e)||R([].concat((0,x.Z)(M),[e]))},V="Add new Webhook",K=(0,j.jsx)(y,{});switch(t){case"logger_webhook":V="New Logger Webhook",K=(0,j.jsx)(Z.Z,{});break;case"audit_webhook":V="New Audit Webhook",K=(0,j.jsx)(k.Z,{})}return(0,j.jsx)(a.Fragment,{children:(0,j.jsxs)(g.Z,{modalOpen:n,title:V,onClose:i,titleIcon:K,children:[(0,j.jsxs)(l.ltY,{containerPadding:!1,withBorders:!1,children:[(0,j.jsx)(l.Wzg,{id:"name",name:"name",onChange:function(e){B("name"),u(e.target.value),H("name",e.target.validity.valid)},error:M.includes("name")&&!D.includes("name")?"Invalid Name":"",label:"Name",value:c,pattern:"^(?=.*[a-zA-Z0-9]).{1,}$",required:!0}),(0,j.jsx)(l.Wzg,{id:"endpoint",name:"endpoint",onChange:function(e){B("endpoint"),_(e.target.value),H("endpoint",e.target.validity.valid)},error:M.includes("endpoint")&&!D.includes("endpoint")?"Invalid Endpoint set":"",label:"Endpoint",value:b,pattern:"^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?(\\/[a-zA-Z0-9\\-.\\/]*)?$",required:!0}),(0,j.jsx)(l.Wzg,{id:"auth-token",name:"auth-token",onChange:function(e){B("auth-token"),A(e.target.value)},label:"Auth Token",value:E})]}),F&&(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:{marginBottom:10},children:(0,j.jsx)(l.kod,{})}),(0,j.jsxs)(l.rjZ,{item:!0,xs:12,sx:C.ID.modalButtonBar,children:[(0,j.jsx)(l.zxk,{id:"reset",type:"button",variant:"regular",disabled:F,onClick:i,label:"Cancel",sx:{marginRight:10}}),(0,j.jsx)(l.zxk,{id:"save-lifecycle",type:"submit",variant:"callAction",color:"primary",disabled:F||0!==M.length,label:"Save",onClick:function(){if(!F&&0===M.length)if(""!==c.trim())if(""!==b.trim()){z(!0);var e={key_values:[{key:"endpoint",value:b},{key:"auth_token",value:E}],arn_resource_id:c};p.h.configs.setConfig(t,e).then((function(e){z(!1),O((0,m.cN)(e.data.restart||!1)),e.data.restart||O((0,m.y1)("Configuration saved successfully")),i(),O((0,m.Ie)(!0))})).catch((function(e){z(!1),O((0,m.Ih)((0,h.g)(e.error)))}))}else R([].concat((0,x.Z)(M),["endpoint"]));else R([].concat((0,x.Z)(M),["name"]))}})]})]})})},w=t(23508),S=function(e){var n=e.modalOpen,t=e.onClose,i=e.selectedARN,o=(0,a.useState)(!1),s=(0,r.Z)(o,2),c=s[0],u=s[1],d=(0,v.TL)();(0,a.useEffect)((function(){c&&p.h.configs.resetConfig(i).then((function(){u(!1),d((0,m.cN)(!0)),d((0,m.Ie)(!0)),t()})).catch((function(e){u(!1),d((0,m.Ih)((0,h.g)(e.error)))}))}),[c,d,t,i]);var f=!i.includes(":"),x="Are you sure you want to delete the Configured Endpoint";return f&&(x="Are you sure you want to reset the Default"),(0,j.jsx)(w.Z,{title:f?"Reset Default Webhook":"Delete Webhook",confirmText:f?"Reset":"Delete",isOpen:n,isLoading:c,onConfirm:function(){u(!0)},titleIcon:(0,j.jsx)(l.NvT,{}),onClose:t,confirmationContent:(0,j.jsxs)(a.Fragment,{children:["".concat(x," "),(0,j.jsx)("strong",{children:i}),"?"]})})},E=t(1413),A=t(21435),I=t(81159),L=t(64163),F=function(e){var n,t,i,o,c,u,d=e.open,f=e.type,b=e.endpointInfo,_=e.onCloseEndpoint,w=(0,a.useState)(""),S=(0,r.Z)(w,2),F=S[0],z=S[1],T=(0,a.useState)(""),N=(0,r.Z)(T,2),M=N[0],R=N[1],P=(0,a.useState)(""),q=(0,r.Z)(P,2),D=q[0],W=q[1],O=(0,a.useState)("on"),B=(0,r.Z)(O,2),H=B[0],V=B[1],K=(0,a.useState)(!1),Y=(0,r.Z)(K,2),$=Y[0],U=Y[1],G=(0,a.useState)([]),X=(0,r.Z)(G,2),Q=X[0],J=X[1],ee=(0,v.TL)();(0,a.useEffect)((function(){if(b){var e=b.key_values.find((function(e){return"endpoint"===e.key})),n=b.key_values.find((function(e){return"auth_token"===e.key})),t=b.key_values.find((function(e){return"enable"===e.key})),i=[];if(e){var o=e.value;""===o?i.push("endpoint"):R(o)}if(n){var r=n.value;""===r?i.push("auth-token"):W(r)}t&&"off"===t.value&&V(t.value),z(b.name||""),J(i)}}),[b]);var ne=!F.includes(":"),te=b.key_values.filter((function(e){return!!e.env_override})),ie=(0,s.F_)(te),oe="Edit Webhook",re=(0,j.jsx)(y,{});switch(f){case"logger_webhook":oe="Edit ".concat(ne?" the Default ":"","Logger Webhook"),re=(0,j.jsx)(Z.Z,{});break;case"audit_webhook":oe="Edit ".concat(ne?" the Default ":"","Audit Webhook"),re=(0,j.jsx)(k.Z,{})}return te.length>0&&(oe="View env variable Webhook"),(0,j.jsx)(a.Fragment,{children:(0,j.jsx)(g.Z,{modalOpen:d,title:"".concat(oe).concat(ne?"":" - ".concat(F)),onClose:_,titleIcon:re,children:te.length>0?(0,j.jsxs)(a.Fragment,{children:[(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:(0,E.Z)({},C.DF.formFieldRow),children:(0,j.jsx)(L.Z,{label:"Enabled",content:(null===(n=ie.enable)||void 0===n?void 0:n.value)||"-",actionButton:(0,j.jsx)(l.rjZ,{item:!0,sx:{display:"flex",justifyContent:"flex-end",paddingRight:"10px"},children:(0,j.jsx)(l.ua7,{tooltip:ie.enable?"This value is set from the ".concat((null===(t=ie.enable)||void 0===t?void 0:t.overrideEnv)||"N/A"," environment variable"):"",placement:"left",children:(0,j.jsx)(l.zD0,{style:{width:20}})})})})}),(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:(0,E.Z)({},C.DF.formFieldRow),children:(0,j.jsx)(L.Z,{label:"Endpoint",content:(null===(i=ie.endpoint)||void 0===i?void 0:i.value)||"-",actionButton:(0,j.jsx)(l.rjZ,{item:!0,sx:{display:"flex",justifyContent:"flex-end",paddingRight:"10px"},children:(0,j.jsx)(l.ua7,{tooltip:ie.enable?"This value is set from the ".concat((null===(o=ie.endpoint)||void 0===o?void 0:o.overrideEnv)||"N/A"," environment variable"):"",placement:"left",children:(0,j.jsx)(l.zD0,{style:{width:20}})})})})}),(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:(0,E.Z)({},C.DF.formFieldRow),children:(0,j.jsx)(L.Z,{label:"Auth Token",content:(null===(c=ie.auth_token)||void 0===c?void 0:c.value)||"-",actionButton:(0,j.jsx)(l.rjZ,{item:!0,sx:{display:"flex",justifyContent:"flex-end",paddingRight:"10px"},children:(0,j.jsx)(l.ua7,{tooltip:ie.enable?"This value is set from the ".concat((null===(u=ie.auth_token)||void 0===u?void 0:u.overrideEnv)||"N/A"," environment variable"):"",placement:"left",children:(0,j.jsx)(l.zD0,{style:{width:20}})})})})})]}):(0,j.jsxs)(a.Fragment,{children:[(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:(0,E.Z)({},C.DF.formFieldRow),children:(0,j.jsx)(I.Z,{onChange:function(e){var n=e.target.checked?"on":"off";V(n)},id:"endpoint_enabled",name:"endpoint_enabled",label:"Enabled",value:"switch_on",checked:"on"===H})}),(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:(0,E.Z)({},C.DF.formFieldRow),children:(0,j.jsx)(A.Z,{id:"endpoint",name:"endpoint",onChange:function(e){R(e.target.value),function(e,n){Q.includes(e)&&n?J(Q.filter((function(n){return n!==e}))):n||Q.includes(e)||J([].concat((0,x.Z)(Q),[e]))}("endpoint",e.target.validity.valid)},error:Q.includes("endpoint")?"Invalid Endpoint set":"",label:"Endpoint",value:M,pattern:"^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?(\\/[a-zA-Z0-9\\-.\\/]*)?$",required:!0})}),(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:(0,E.Z)({},C.DF.formFieldRow),children:(0,j.jsx)(A.Z,{id:"auth-token",name:"auth-token",onChange:function(e){W(e.target.value)},label:"Auth Token",value:D})}),$&&(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:{marginBottom:10},children:(0,j.jsx)(l.kod,{})}),(0,j.jsxs)(l.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end"},children:[(0,j.jsx)(l.zxk,{id:"reset",type:"button",variant:"regular",disabled:$,onClick:_,label:"Cancel",sx:{marginRight:10}}),(0,j.jsx)(l.zxk,{id:"save-lifecycle",type:"submit",variant:"callAction",color:"primary",disabled:$||0!==Q.length,label:"Update",onClick:function(){if(!$&&0===Q.length)if(M&&""!==M.trim()){U(!0);var e={key_values:[{key:"endpoint",value:M},{key:"auth_token",value:D},{key:"enable",value:H}]};p.h.configs.setConfig(F,e).then((function(e){U(!1),ee((0,m.cN)(e.data.restart||!1)),e.data.restart||ee((0,m.y1)("Configuration saved successfully")),_(),ee((0,m.Ie)(!0))})).catch((function(e){U(!1),ee((0,m.Ih)((0,h.g)(e.error)))}))}else J([].concat((0,x.Z)(Q),["endpoint"]))}})]})]})})})},z=function(e){e.setResetConfigurationOpen;var n=e.WebhookSettingslist,t=e.type,i=(0,a.useState)(!1),o=(0,r.Z)(i,2),s=o[0],c=o[1],u=(0,a.useState)(!1),d=(0,r.Z)(u,2),f=d[0],p=d[1],h=(0,a.useState)(!1),m=(0,r.Z)(h,2),v=m[0],x=m[1],g=(0,a.useState)(""),b=(0,r.Z)(g,2),y=b[0],Z=b[1],k=(0,a.useState)(null),C=(0,r.Z)(k,2),w=C[0],E=C[1],A=[{type:"view",onClick:function(e){e.name&&(x(!0),E(e))}},{type:"delete",onClick:function(e){e.name&&(p(!0),Z(e.name))},disableButtonFunction:function(e){var t=n.find((function(n){return n.name===e}));if(t){var i,o=null===(i=t.key_values)||void 0===i?void 0:i.filter((function(e){return!!e.env_override}));return!!(o&&o.length>0)}return!1}}];return(0,j.jsxs)(l.rjZ,{container:!0,children:[s&&(0,j.jsx)(_,{open:s,type:t,onCloseEndpoint:function(){c(!1)}}),f&&(0,j.jsx)(S,{modalOpen:f,onClose:function(){p(!1),Z("")},selectedARN:y,type:t}),v&&w&&(0,j.jsx)(F,{open:v,type:t,endpointInfo:w,onCloseEndpoint:function(){x(!1),E(null)}}),(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end"},children:(0,j.jsx)(l.zxk,{id:"newWebhook",variant:"callAction",onClick:function(){c(!0)},children:"New Endpoint"})}),(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:{padding:"0 10px 10px"},children:(0,j.jsxs)(a.Fragment,{children:[(0,j.jsx)("h3",{children:"Currently Configured Endpoints"}),(0,j.jsx)(l.wQF,{columns:[{label:"Status",elementKey:"key_values",renderFunction:function(e){var n=e.find((function(e){return"enable"===e.key}));if(null!==n&&void 0!==n&&n.env_override){var t=null!==n&&void 0!==n&&n.env_override.value&&"on"!==(null===n||void 0===n?void 0:n.env_override.value)&&null!==n&&void 0!==n&&n.env_override.value?"Disabled":"Enabled";return(0,j.jsxs)(l.rjZ,{container:!0,sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyItems:"start",fontSize:"8px"},children:[(0,j.jsx)(l.zD0,{style:{fill:"#052F51",width:"14px"}}),t?"Enabled":"Disabled"]})}return n&&"on"!==n.value&&n.value?(0,j.jsxs)(l.rjZ,{container:!0,sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyItems:"start",fontSize:"8px"},children:[(0,j.jsx)(l.qwj,{style:{fill:"#C83B51",width:14,height:14}}),"Disabled"]}):(0,j.jsxs)(l.rjZ,{container:!0,sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyItems:"start",fontSize:"8px"},children:[(0,j.jsx)(l.Yp9,{style:{fill:"#4CCB92",width:14,height:14}}),"Enabled"]})},width:50},{label:"Name",elementKey:"name"},{label:"Endpoint",elementKey:"key_values",renderFunction:function(e){var n=e.find((function(e){return"endpoint"===e.key}));return n?n.env_override?n.env_override.value:n.value:""}}],itemActions:A,idField:"name",isLoading:!1,records:n,entityName:"endpoints",customPaperHeight:"calc(100vh - 750px)"})]})})]})},T=t(94770),N=t(90767),M=function(e){var n=e.selectedConfiguration,t=e.className,i=void 0===t?"":t,o=(0,v.TL)(),u=(0,c.s0)(),x=(0,c.TH)().pathname,g=void 0===x?"":x,b=g.substring(g.lastIndexOf("/")+1);b="settings"===b?"region":b;var y=(0,a.useState)([]),Z=(0,r.Z)(y,2),k=Z[0],C=Z[1],_=(0,a.useState)(!1),w=(0,r.Z)(_,2),S=w[0],E=w[1],A=(0,a.useState)([]),I=(0,r.Z)(A,2),L=I[0],F=I[1],M=(0,a.useState)([]),R=(0,r.Z)(M,2),P=R[0],q=R[1],D=(0,a.useState)(!1),W=(0,r.Z)(D,2),O=W[0],B=W[1],H=(0,a.useState)({}),V=(0,r.Z)(H,2),K=V[0],Y=V[1],$=(0,f.v9)((function(e){return e.system.loadingConfigurations}));(0,a.useEffect)((function(){o((0,m.Ie)(!0))}),[b,o]),(0,a.useEffect)((function(){if($){var e=d()(n,"configuration_id",!1);if(e)return void p.h.configs.configInfo(e).then((function(n){q(n.data);var t=d()(n.data[0],"key_values",[]),i=s.DP[e].map((function(e){var n=t.find((function(n){return n.key===e.name})),i=(null===n||void 0===n?void 0:n.value)||"";return{key:e.name,value:e.customValueProcess?e.customValueProcess(i):i}}));F(i),Y((0,s.F_)(i)),o((0,m.Ie)(!1))})).catch((function(e){o((0,m.Ie)(!1)),o((0,m.Ih)((0,h.g)(e.error)))}));o((0,m.Ie)(!1))}}),[$,n,o]),(0,a.useEffect)((function(){if(S){var e={key_values:(0,s.DD)(k)};p.h.configs.setConfig(n.configuration_id,e).then((function(e){E(!1),o((0,m.cN)(e.data.restart||!1)),o((0,m.Ie)(!0)),e.data.restart||o((0,m.y1)("Configuration saved successfully"))})).catch((function(e){E(!1),o((0,m.Ih)((0,h.g)(e.error)))}))}}),[S,o,n,k,u]);var U=(0,a.useCallback)((function(e){C(e)}),[C]),G=function(){B(!0)};return(0,j.jsx)(a.Fragment,{children:(0,j.jsxs)("div",{onMouseMove:function(){o((0,m.Sc)("settings_".concat(n.configuration_label)))},children:[O&&(0,j.jsx)(N.Z,{configurationName:n.configuration_id,closeResetModalAndRefresh:function(e){B(!1),o((0,m.cN)(e)),e&&o((0,m.Ie)(!0))},resetOpen:O}),$?(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:{textAlign:"center",paddingTop:"15px"},children:(0,j.jsx)(l.aNw,{})}):(0,j.jsx)(l.xuv,{sx:{padding:"15px",height:"100%"},children:"logger_webhook"===n.configuration_id||"audit_webhook"===n.configuration_id?(0,j.jsx)(z,{WebhookSettingslist:P,setResetConfigurationOpen:G,type:n.configuration_id}):(0,j.jsx)(a.Fragment,{children:(0,j.jsxs)("form",{noValidate:!0,onSubmit:function(e){e.preventDefault(),E(!0)},className:i,style:{height:"100%",display:"flex",flexFlow:"column"},children:[(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:{display:"grid",gridTemplateColumns:"1fr",gap:"10px"},children:(0,j.jsx)(T.default,{fields:s.DP[n.configuration_id],onChange:U,defaultVals:L,overrideEnv:K})}),(0,j.jsxs)(l.rjZ,{item:!0,xs:12,sx:{paddingTop:"15px ",textAlign:"right",maxHeight:"60px",display:"flex",alignItems:"center",justifyContent:"flex-end"},children:[(0,j.jsx)(l.zxk,{type:"button",id:"restore-defaults",variant:"secondary",onClick:G,label:"Restore Defaults"}),"\xa0 \xa0",(0,j.jsx)(l.zxk,{id:"save",type:"submit",variant:"callAction",disabled:S,label:"Save"})]})]})})})]})})},R=function(){var e=(0,c.TH)().pathname,n=void 0===e?"":e,t=n.substring(n.lastIndexOf("/")+1),i=s.bx.find((function(e){return e.configuration_id===t})),o="".concat(t);return(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:{height:"100%","& .identity_ldap, .api":{"& label":{minWidth:220,marginRight:0}}},children:i&&(0,j.jsx)(M,{className:"".concat(o),selectedConfiguration:i})})},P=t(56087),q=t(47974),D=t(9505),W=t(45248),O=t(99779),B=t(27454),H=function(){var e=(0,f.I0)(),n=(0,D.Z)((function(e){(0,W.zZ)(new Blob([window.atob(e.value)]),"minio-server-config-".concat(O.ou.now().toFormat("LL-dd-yyyy-HH-mm-ss"),".conf"))}),(function(n){e((0,m.Ih)(n))})),t=(0,r.Z)(n,2),i=t[0],o=t[1];return(0,j.jsx)(B.Z,{tooltip:"Warning! The resulting file will contain server configuration information in plain text",children:(0,j.jsx)(l.zxk,{id:"export-config",onClick:function(){o("GET","api/v1/configs/export")},icon:(0,j.jsx)(l.rG2,{}),label:"Export",variant:"regular",disabled:i})})},V=function(){var e=(0,c.s0)(),n=(0,f.I0)(),t=(0,f.v9)((function(e){return e.system.serverNeedsRestart})),i=(0,a.useState)(void 0),o=(0,r.Z)(i,2),s=o[0],u=o[1],d=(0,a.useRef)(null),p=(0,D.Z)((function(e){n((0,m.cN)(!0)),u(!0)}),(function(e){n((0,m.Ih)(e))})),h=(0,r.Z)(p,2),v=h[0],x=h[1];(0,a.useEffect)((function(){!t&&s&&e(0)}),[t,s,e]);return(0,j.jsxs)(a.Fragment,{children:[(0,j.jsx)("input",{type:"file",onChange:function(e){if(null!==e&&void 0!==e&&null!==e.target.files&&void 0!==e.target.files){e.preventDefault();var n=(0,r.Z)(e.target.files,1)[0],t=new FormData,i=new Blob([n],{type:n.type});t.append("file",i,n.name),x("POST","api/v1/configs/import",t),e.target.value=""}},style:{display:"none"},ref:d}),(0,j.jsx)(B.Z,{tooltip:"The file must be valid and should have valid config values",children:(0,j.jsx)(l.zxk,{id:"import-config",onClick:function(){d&&d.current&&d.current.click()},icon:(0,j.jsx)(l._8t,{}),label:"Import",variant:"regular",disabled:v})})]})},K=t(99670),Y=["region"],$=["cache"],U=function(){var e=(0,c.TH)().pathname,n=void 0===e?"":e,t=(0,v.TL)(),u=(0,c.s0)(),d=(0,a.useState)([]),f=(0,r.Z)(d,2),x=f[0],g=f[1],b=(0,a.useCallback)((0,o.Z)((0,i.Z)().mark((function e(){return(0,i.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:p.h.configs.listConfig().then((function(e){var n;if(e&&null!==e&&void 0!==e&&e.data&&null!==e&&void 0!==e&&null!==(n=e.data)&&void 0!==n&&n.configurations){var t,i=((null===e||void 0===e||null===(t=e.data)||void 0===t?void 0:t.configurations)||[]).reduce((function(e,n){var t=n.key,i=void 0===t?"":t;return $.includes(i)||e.push(i),e}),[]);g(i)}})).catch((function(e){t((0,m.Ih)((0,h.g)(e)))}));case 1:case"end":return e.stop()}}),e)}))),[t]);(0,a.useEffect)((function(){b(),t((0,m.Sc)("settings_Region"))}),[]);var y=s.bx.filter((function(e){var n=e.configuration_id;return Y.includes(n)||x.includes(n)||!x.length}));return(0,j.jsxs)(a.Fragment,{children:[(0,j.jsx)(q.Z,{label:"Settings",actions:(0,j.jsx)(K.Z,{})}),(0,j.jsxs)(l.Xgh,{children:[(0,j.jsxs)(l.rjZ,{item:!0,xs:12,id:"settings-container",children:[(0,j.jsx)(l.UHn,{icon:(0,j.jsx)(l.ewm,{}),title:"MinIO Configuration:",actions:(0,j.jsxs)(l.xuv,{sx:{display:"flex",gap:10},children:[(0,j.jsx)(V,{}),(0,j.jsx)(H,{})]}),sx:{marginBottom:15}}),(0,j.jsx)(l.mQc,{currentTabOrPath:n,onTabClick:function(e){u(e)},useRouteTabs:!0,options:y.map((function(e){var n,t=e.configuration_id,i=e.configuration_label,o=e.icon;return{tabConfig:{id:"settings-tab-".concat(i),label:i,value:t,icon:o,to:(n=t,"".concat(P.gA.SETTINGS,"/").concat(n))}}})),routes:(0,j.jsxs)(c.Z5,{children:[y.map((function(e){return(0,j.jsx)(c.AW,{path:"".concat(e.configuration_id),element:(0,j.jsx)(R,{})},"configItem-".concat(e.configuration_label))})),(0,j.jsx)(c.AW,{path:"/",element:(0,j.jsx)(c.Fg,{to:"".concat(P.gA.SETTINGS,"/region")})})]})})]}),(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:{paddingTop:"15px"},children:(0,j.jsx)(l.KfX,{title:"Learn more about Configurations",iconComponent:(0,j.jsx)(l.ewm,{}),help:(0,j.jsxs)(a.Fragment,{children:["MinIO supports a variety of configurations ranging from encryption, compression, region, notifications, etc.",(0,j.jsx)("br",{}),(0,j.jsx)("br",{}),"You can learn more at our"," ",(0,j.jsx)("a",{href:"https://min.io/docs/minio/linux/reference/minio-mc-admin/mc-admin-config.html?ref=con#id4",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})})]})]})}},58493:function(e,n,t){"use strict";t.d(n,{DD:function(){return g},DP:function(){return x},F_:function(){return j},_0:function(){return b},bx:function(){return v}});var i=t(4942),o=t(1413),r=t(93433),a=(t(72791),t(87569)),l=t(61809),s=t(31292),c=t(98095),u=t(67055),d=t(21141),f=t(36909),p=t(13901),h=t(29945),m=t(80184),v=[{icon:(0,m.jsx)(a.Z,{}),configuration_id:"region",configuration_label:"Region"},{icon:(0,m.jsx)(l.Z,{}),configuration_id:"compression",configuration_label:"Compression"},{icon:(0,m.jsx)(s.Z,{}),configuration_id:"api",configuration_label:"API"},{icon:(0,m.jsx)(c.Z,{}),configuration_id:"heal",configuration_label:"Heal"},{icon:(0,m.jsx)(u.Z,{}),configuration_id:"scanner",configuration_label:"Scanner"},{icon:(0,m.jsx)(d.Z,{}),configuration_id:"etcd",configuration_label:"Etcd"},{icon:(0,m.jsx)(p.Z,{}),configuration_id:"logger_webhook",configuration_label:"Logger Webhook"},{icon:(0,m.jsx)(f.Z,{}),configuration_id:"audit_webhook",configuration_label:"Audit Webhook"},{icon:(0,m.jsx)(h.I$E,{className:"MuiSvgIcon-root MuiSvgIcon-fontSizeMedium MuiTab-iconWrapper css-i4bv87-MuiSvgIcon-root",style:{width:24,height:24}}),configuration_id:"audit_kafka",configuration_label:"Audit Kafka"}],x={region:[{name:"name",required:!0,label:"Server Location",tooltip:'Name of the location of the server e.g. "us-west-rack2"',type:"string",placeholder:"e.g. us-west-rack-2"},{name:"comment",required:!1,label:"Comment",tooltip:"You can add a comment to this setting",type:"comment",placeholder:"Enter custom notes if any"}],compression:[{name:"extensions",required:!1,label:"Extensions",tooltip:'Extensions to compress e.g. ".txt", ".log" or ".csv" - you can write one per field',type:"csv",placeholder:"Enter an Extension",withBorder:!0},{name:"mime_types",required:!1,label:"Mime Types",tooltip:'Mime types e.g. "text/*", "application/json" or "application/xml" - you can write one per field',type:"csv",placeholder:"Enter a Mime Type",withBorder:!0}],api:[{name:"requests_max",required:!1,label:"Requests Max",tooltip:"Maximum number of concurrent requests, e.g. '1600'",type:"number",placeholder:"Enter Requests Max"},{name:"cors_allow_origin",required:!1,label:"Cors Allow Origin",tooltip:"List of origins allowed for CORS requests",type:"csv",placeholder:"Enter allowed origin e.g. https://example.com"},{name:"replication_workers",required:!1,label:"Replication Workers",tooltip:"Number of replication workers, defaults to 100",type:"number",placeholder:"Enter Replication Workers"},{name:"replication_failed_workers",required:!1,label:"Replication Failed Workers",tooltip:"Number of replication workers for recently failed replicas, defaults to 4",type:"number",placeholder:"Enter Replication Failed Workers"}],heal:[{name:"bitrotscan",required:!1,label:"Bitrot Scan",tooltip:"Perform bitrot scan on disks when checking objects during scanner",type:"on|off"},{name:"max_sleep",required:!1,label:"Max Sleep",tooltip:"Maximum sleep duration between objects to slow down heal operation, e.g. 2s",type:"duration",placeholder:"Enter Max Sleep Duration"},{name:"max_io",required:!1,label:"Max IO",tooltip:"Maximum IO requests allowed between objects to slow down heal operation, e.g. 3",type:"number",placeholder:"Enter Max IO"}],scanner:[{name:"delay",required:!1,label:"Delay Multiplier",tooltip:"Scanner delay multiplier, defaults to '10.0'",type:"number",placeholder:"Enter Delay"},{name:"max_wait",required:!1,label:"Max Wait",tooltip:"Maximum wait time between operations, defaults to '15s'",type:"duration",placeholder:"Enter Max Wait"},{name:"cycle",required:!1,label:"Cycle",tooltip:"Time duration between scanner cycles, defaults to '1m'",type:"duration",placeholder:"Enter Cycle"}],etcd:[{name:"endpoints",required:!0,label:"Endpoints",tooltip:'List of etcd endpoints e.g. "http://localhost:2379" - you can write one per field',type:"csv",placeholder:"Enter Endpoint"},{name:"path_prefix",required:!1,label:"Path Prefix",tooltip:'Namespace prefix to isolate tenants e.g. "customer1/"',type:"string",placeholder:"Enter Path Prefix"},{name:"coredns_path",required:!1,label:"Coredns Path",tooltip:'Shared bucket DNS records, default is "/skydns"',type:"string",placeholder:"Enter Coredns Path"},{name:"client_cert",required:!1,label:"Client Cert",tooltip:"Client cert for mTLS authentication",type:"string",placeholder:"Enter Client Cert"},{name:"client_cert_key",required:!1,label:"Client Cert Key",tooltip:"Client cert key for mTLS authentication",type:"string",placeholder:"Enter Client Cert Key"},{name:"comment",required:!1,label:"Comment",tooltip:"You can add a comment to this setting",type:"comment",multiline:!0,placeholder:"Enter custom notes if any"}],logger_webhook:[{name:"endpoint",required:!0,label:"Endpoint",type:"string",placeholder:"Enter Endpoint"},{name:"auth_token",required:!0,label:"Auth Token",type:"string",placeholder:"Enter Auth Token"}],audit_webhook:[{name:"endpoint",required:!0,label:"Endpoint",type:"string",placeholder:"Enter Endpoint"},{name:"auth_token",required:!0,label:"Auth Token",type:"string",placeholder:"Enter Auth Token"}],audit_kafka:[{name:"enable",required:!1,label:"Enable",tooltip:"Enable audit_kafka target",type:"on|off",customValueProcess:function(e){return""===e||"on"===e?"on":"off"}},{name:"brokers",required:!0,label:"Brokers",type:"csv",placeholder:"Enter Kafka Broker"},{name:"topic",required:!1,label:"Topic",type:"string",placeholder:"Enter Kafka Topic",tooltip:"Kafka topic used for bucket notifications"},{name:"sasl",required:!1,label:"Use SASL",tooltip:"Enable SASL (Simple Authentication and Security Layer) authentication",type:"on|off"},{name:"sasl_username",required:!1,label:"SASL Username",type:"string",placeholder:"Enter SASL Username",tooltip:"Username for SASL/PLAIN or SASL/SCRAM authentication"},{name:"sasl_password",required:!1,label:"SASL Password",type:"password",placeholder:"Enter SASL Password",tooltip:"Password for SASL/PLAIN or SASL/SCRAM authentication"},{name:"sasl_mechanism",required:!1,label:"SASL Mechanism",type:"string",placeholder:"Enter SASL Mechanism",tooltip:"SASL authentication mechanism"},{name:"tls",required:!1,label:"Use TLS",tooltip:"Enable TLS (Transport Layer Security)",type:"on|off"},{name:"tls_skip_verify",required:!1,label:"Skip TLS Verification",tooltip:"Trust server TLS without verification",type:"on|off"},{name:"client_tls_cert",required:!1,label:"Client Cert",tooltip:"Client cert for mTLS authentication",type:"string",placeholder:"Enter Client Cert"},{name:"client_tls_key",required:!1,label:"Client Cert Key",tooltip:"Client cert key for mTLS authentication",type:"string",placeholder:"Enter Client Cert Key"},{name:"tls_client_auth",required:!1,label:"TLS Client Auth",tooltip:"ClientAuth determines the Kafka server's policy for TLS client authorization",type:"string"},{name:"version",required:!1,label:"Version",tooltip:"Specify the version of the Kafka cluster",type:"string"}]},g=function(e){return e.filter((function(e){return""!==e.value}))},b=function(e,n,t){var i=e.target,o=i.value,a=i.checked,l=(0,r.Z)(t);return a?l.push(o):l=l.filter((function(e){return e!==o})),n(l),l},j=function(e){var n={};return e.forEach((function(e){if(e.env_override){var t={value:e.env_override.value,overrideEnv:e.env_override.name};n=(0,o.Z)((0,o.Z)({},n),{},(0,i.Z)({},e.key,t))}})),n}},94770:function(e,n,t){"use strict";t.r(n),t.d(n,{valueDef:function(){return c}});var i=t(93433),o=t(29439),r=t(72791),a=t(29945),l=t(59447),s=t(80184),c=function(e,n,t){var i="on|off"===n?"off":"";if(t.length>0){var o=t.find((function(n){return n.key===e}));o&&(i=o.value||"")}return i};n.default=function(e){var n=e.onChange,t=e.fields,u=e.defaultVals,d=e.overrideEnv,f=(0,r.useState)([]),p=(0,o.Z)(f,2),h=p[0],m=p[1],v=t||[],x=u||[];(0,r.useEffect)((function(){var e=t.map((function(e){return{key:e.name,value:c(e.name,e.type,x)}}));m(e)}),[t,u]),(0,r.useEffect)((function(){n(h)}),[h]);var g=function(e,n,t){var o=(0,i.Z)(h);n=n.trim(),o[t]={key:e,value:n},m(o)},b=function(e,n){var t=h[n];if(t){var i=null===d||void 0===d?void 0:d["".concat(t.key)];if(i)return(0,s.jsx)(a.bSr,{label:e.label,actionButton:(0,s.jsx)(a.rjZ,{item:!0,sx:{display:"flex",justifyContent:"flex-end",paddingRight:"10px"},children:(0,s.jsx)(a.ua7,{tooltip:"This value is set from the ".concat(i.overrideEnv," environment variable"),placement:"left",children:(0,s.jsx)(a.zD0,{style:{width:20}})})}),sx:{width:"100%"},children:i.value})}switch(e.type){case"on|off":var o=t?t.value:"off";return(0,s.jsx)(a.rsf,{onChange:function(t){var i=t.target.checked?"on":"off";g(e.name,i,n)},id:e.name,name:e.name,label:e.label,value:"switch_on",tooltip:e.tooltip,checked:"on"===o});case"csv":return(0,s.jsx)(l.Z,{elements:t?t.value:"",label:e.label,name:e.name,onChange:function(t){var i="";i=Array.isArray(t)?t.join(","):t,g(e.name,i,n)},tooltip:e.tooltip,commonPlaceholder:e.placeholder,withBorder:!0});case"comment":return(0,s.jsx)(a.q5m,{id:e.name,name:e.name,label:e.label,tooltip:e.tooltip,value:t?t.value:"",onChange:function(t){return g(e.name,t.target.value,n)},placeholder:e.placeholder});default:return(0,s.jsx)(a.Wzg,{id:e.name,name:e.name,label:e.label,tooltip:e.tooltip,value:t?t.value:"",onChange:function(t){return g(e.name,t.target.value,n)},placeholder:e.placeholder})}};return(0,s.jsx)(a.ltY,{withBorders:!1,containerPadding:!1,children:v.map((function(e,n){return(0,s.jsx)(r.Fragment,{children:b(e,n)},e.name)}))})}},90767:function(e,n,t){"use strict";var i=t(29439),o=t(72791),r=t(31776),a=t(82342),l=t(23508),s=t(29945),c=t(87995),u=t(44690),d=t(80184);n.Z=function(e){var n=e.configurationName,t=e.closeResetModalAndRefresh,f=e.resetOpen,p=(0,u.TL)(),h=(0,o.useState)(!1),m=(0,i.Z)(h,2),v=m[0],x=m[1];(0,o.useEffect)((function(){v&&r.h.configs.resetConfig(n).then((function(){x(!1),t(!0)})).catch((function(e){x(!1),p((0,c.Ih)((0,a.g)(e.error)))}))}),[t,n,v,p]);return(0,d.jsx)(l.Z,{title:"Restore Defaults",confirmText:"Yes, Reset Configuration",isOpen:f,titleIcon:(0,d.jsx)(s.NvT,{}),isLoading:v,onConfirm:function(){x(!0)},onClose:function(){t(!1)},confirmationContent:(0,d.jsxs)(o.Fragment,{children:[v&&(0,d.jsx)(s.kod,{}),(0,d.jsxs)(o.Fragment,{children:["Are you sure you want to restore these configurations to default values?",(0,d.jsx)("br",{}),(0,d.jsx)("b",{style:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"},children:"Please note that this may cause your system to not be accessible"})]})]})})}},13901:function(e,n,t){"use strict";var i=t(64836);n.Z=void 0;var o=i(t(45649)),r=t(80184),a=(0,o.default)((0,r.jsx)("path",{d:"M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3v-3h18v3z"}),"CallToAction");n.Z=a},31292:function(e,n,t){"use strict";var i=t(64836);n.Z=void 0;var o=i(t(45649)),r=t(80184),a=(0,o.default)((0,r.jsx)("path",{d:"M9.4 16.6 4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0 4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z"}),"Code");n.Z=a},61809:function(e,n,t){"use strict";var i=t(64836);n.Z=void 0;var o=i(t(45649)),r=t(80184),a=(0,o.default)((0,r.jsx)("path",{d:"M8 19h3v3h2v-3h3l-4-4-4 4zm8-15h-3V1h-2v3H8l4 4 4-4zM4 9v2h16V9H4zm0 3h16v2H4z"}),"Compress");n.Z=a},67055:function(e,n,t){"use strict";var i=t(64836);n.Z=void 0;var o=i(t(45649)),r=t(80184),a=(0,o.default)((0,r.jsx)("path",{d:"M11 6c1.38 0 2.63.56 3.54 1.46L12 10h6V4l-2.05 2.05C14.68 4.78 12.93 4 11 4c-3.53 0-6.43 2.61-6.92 6H6.1c.46-2.28 2.48-4 4.9-4zm5.64 9.14c.66-.9 1.12-1.97 1.28-3.14H15.9c-.46 2.28-2.48 4-4.9 4-1.38 0-2.63-.56-3.54-1.46L10 12H4v6l2.05-2.05C7.32 17.22 9.07 18 11 18c1.55 0 2.98-.51 4.14-1.36L20 21.49 21.49 20l-4.85-4.86z"}),"FindReplace");n.Z=a},98095:function(e,n,t){"use strict";var i=t(64836);n.Z=void 0;var o=i(t(45649)),r=t(80184),a=(0,o.default)((0,r.jsx)("path",{d:"M19 3H5c-1.1 0-1.99.9-1.99 2L3 19c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 11h-4v4h-4v-4H6v-4h4V6h4v4h4v4z"}),"LocalHospital");n.Z=a},36909:function(e,n,t){"use strict";var i=t(64836);n.Z=void 0;var o=i(t(45649)),r=t(80184),a=(0,o.default)((0,r.jsx)("path",{d:"M17 12c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm1.65 7.35L16.5 17.2V14h1v2.79l1.85 1.85-.7.71zM18 3h-3.18C14.4 1.84 13.3 1 12 1s-2.4.84-2.82 2H6c-1.1 0-2 .9-2 2v15c0 1.1.9 2 2 2h6.11c-.59-.57-1.07-1.25-1.42-2H6V5h2v3h8V5h2v5.08c.71.1 1.38.31 2 .6V5c0-1.1-.9-2-2-2zm-6 2c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"}),"PendingActions");n.Z=a},87569:function(e,n,t){"use strict";var i=t(64836);n.Z=void 0;var o=i(t(45649)),r=t(80184),a=(0,o.default)((0,r.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"}),"Public");n.Z=a},3579:function(e,n,t){"use strict";var i=t(64836);n.Z=void 0;var o=i(t(45649)),r=t(80184),a=(0,o.default)((0,r.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"}),"RemoveRedEye");n.Z=a},20165:function(e,n,t){"use strict";var i=t(64836);n.Z=void 0;var o=i(t(45649)),r=t(80184),a=(0,o.default)((0,r.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}),"VisibilityOff");n.Z=a},21141:function(e,n,t){"use strict";var i=t(64836);n.Z=void 0;var o=i(t(45649)),r=t(80184),a=(0,o.default)((0,r.jsx)("path",{d:"M12.65 10C11.83 7.67 9.61 6 7 6c-3.31 0-6 2.69-6 6s2.69 6 6 6c2.61 0 4.83-1.67 5.65-4H17v4h4v-4h2v-4H12.65zM7 14c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z"}),"VpnKey");n.Z=a},45649:function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return i.createSvgIcon}});var i=t(28610)},31260:function(e,n,t){"use strict";var i=t(78949);n.Z=i.Z},28610:function(e,n,t){"use strict";t.r(n),t.d(n,{capitalize:function(){return o.Z},createChainedFunction:function(){return r.Z},createSvgIcon:function(){return a.Z},debounce:function(){return l.Z},deprecatedPropType:function(){return s},isMuiElement:function(){return c.Z},ownerDocument:function(){return u.Z},ownerWindow:function(){return d.Z},requirePropFactory:function(){return f},setRef:function(){return p},unstable_ClassNameGenerator:function(){return y},unstable_useEnhancedEffect:function(){return h.Z},unstable_useId:function(){return m.Z},unsupportedProp:function(){return v},useControlled:function(){return x.Z},useEventCallback:function(){return g.Z},useForkRef:function(){return b.Z},useIsFocusVisible:function(){return j.Z}});var i=t(55902),o=t(14036),r=t(31260),a=t(76189),l=t(83199);var s=function(e,n){return function(){return null}},c=t(19103),u=t(98301),d=t(17602);t(87462);var f=function(e,n){return function(){return null}},p=t(62971).Z,h=t(40162),m=t(67384);var v=function(e,n,t,i,o){return null},x=t(98278),g=t(89683),b=t(42071),j=t(23031),y={configure:function(e){i.Z.configure(e)}}},64836:function(e){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); +//# sourceMappingURL=3379.6be9ca7b.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/3379.6be9ca7b.chunk.js.map b/portal-ui/build/static/js/3379.6be9ca7b.chunk.js.map new file mode 100644 index 0000000000..f015ada54c --- /dev/null +++ b/portal-ui/build/static/js/3379.6be9ca7b.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/3379.6be9ca7b.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/CSVMultiSelector/CSVMultiSelector.tsx","screens/Console/Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper.tsx","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/FormComponents/PredefinedList/PredefinedList.tsx","../node_modules/@mui/icons-material/esm/Webhook.js","screens/Console/EventDestinations/WebhookSettings/AddEndpointModal.tsx","screens/Console/EventDestinations/WebhookSettings/DeleteWebhookEndpoint.tsx","screens/Console/EventDestinations/WebhookSettings/EditWebhookEndpoint.tsx","screens/Console/EventDestinations/WebhookSettings/WebhookSettings.tsx","screens/Console/EventDestinations/CustomForms/EditConfiguration.tsx","screens/Console/Configurations/ConfigurationPanels/ConfigurationForm.tsx","screens/Console/Configurations/ConfigurationPanels/ExportConfigButton.tsx","screens/Console/Configurations/ConfigurationPanels/ImportConfigButton.tsx","screens/Console/Configurations/ConfigurationPanels/ConfigurationOptions.tsx","screens/Console/Configurations/utils.tsx","screens/Console/EventDestinations/ConfTargetGeneric.tsx","screens/Console/EventDestinations/CustomForms/ResetConfigurationModal.tsx","../node_modules/@mui/icons-material/CallToAction.js","../node_modules/@mui/icons-material/Code.js","../node_modules/@mui/icons-material/Compress.js","../node_modules/@mui/icons-material/FindReplace.js","../node_modules/@mui/icons-material/LocalHospital.js","../node_modules/@mui/icons-material/PendingActions.js","../node_modules/@mui/icons-material/Public.js","../node_modules/@mui/icons-material/RemoveRedEye.js","../node_modules/@mui/icons-material/VisibilityOff.js","../node_modules/@mui/icons-material/VpnKey.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/esm/deprecatedPropType.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/esm/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/esm/unsupportedProp.js","../node_modules/@mui/material/utils/index.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more 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, {\n ChangeEvent,\n createRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n Fragment,\n} from \"react\";\nimport get from \"lodash/get\";\nimport { AddIcon, Box, HelpIcon, InputBox, InputLabel, Tooltip } from \"mds\";\n\ninterface ICSVMultiSelector {\n elements: string;\n name: string;\n label: string;\n tooltip?: string;\n commonPlaceholder?: string;\n withBorder?: boolean;\n onChange: (elements: string) => void;\n}\n\nconst CSVMultiSelector = ({\n elements,\n name,\n label,\n tooltip = \"\",\n commonPlaceholder = \"\",\n onChange,\n withBorder = false,\n}: ICSVMultiSelector) => {\n const [currentElements, setCurrentElements] = useState([\"\"]);\n const bottomList = createRef();\n\n // Use effect to get the initial values from props\n useEffect(() => {\n if (\n currentElements.length === 1 &&\n currentElements[0] === \"\" &&\n elements &&\n elements !== \"\"\n ) {\n const elementsSplit = elements.split(\",\");\n elementsSplit.push(\"\");\n\n setCurrentElements(elementsSplit);\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [elements, currentElements]);\n\n // Use effect to send new values to onChange\n useEffect(() => {\n if (currentElements.length > 1) {\n const refScroll = bottomList.current;\n if (refScroll) {\n refScroll.scrollIntoView(false);\n }\n }\n }, [currentElements, bottomList]);\n\n const onChangeCallback = useCallback(\n (newString: string) => {\n onChange(newString);\n },\n [onChange],\n );\n\n // We avoid multiple re-renders / hang issue typing too fast\n const firstUpdate = useRef(true);\n useEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = false;\n return;\n }\n const elementsString = currentElements\n .filter((element) => element.trim() !== \"\")\n .join(\",\");\n\n onChangeCallback(elementsString);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentElements]);\n\n // If the last input is not empty, we add a new one\n const addEmptyLine = (elementsUp: string[]) => {\n if (elementsUp[elementsUp.length - 1].trim() !== \"\") {\n const cpList = [...elementsUp];\n cpList.push(\"\");\n setCurrentElements(cpList);\n }\n };\n\n // Onchange function for input box, we get the dataset-index & only update that value in the array\n const onChangeElement = (e: ChangeEvent) => {\n e.persist();\n\n let updatedElement = [...currentElements];\n const index = get(e.target, \"dataset.index\", \"0\");\n const indexNum = parseInt(index);\n updatedElement[indexNum] = e.target.value;\n\n setCurrentElements(updatedElement);\n };\n\n const inputs = currentElements.map((element, index) => {\n return (\n : null}\n overlayAction={() => {\n addEmptyLine(currentElements);\n }}\n />\n );\n });\n\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n \n \n \n \n \n \n \n )}\n \n \n {inputs}\n
\n \n \n \n );\n};\nexport default CSVMultiSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { InputLabel, Switch, Tooltip, Typography } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport { actionsTray, fieldBasic } from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input/Input\";\n\ninterface IFormSwitch {\n label?: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n description?: string;\n index?: number;\n checked: boolean;\n switchOnly?: boolean;\n indicatorLabels?: string[];\n extraInputProps?: StandardInputProps[\"inputProps\"];\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n indicatorLabelOn: {\n fontWeight: \"bold\",\n color: \"#081C42 !important\",\n },\n indicatorLabel: {\n fontSize: 12,\n color: \"#E2E2E2\",\n margin: \"0 8px 0 10px\",\n },\n fieldDescription: {\n marginTop: 4,\n color: \"#999999\",\n },\n tooltip: {\n fontSize: 16,\n },\n ...actionsTray,\n ...fieldBasic,\n });\n\nconst StyledSwitch = withStyles((theme) => ({\n root: {\n width: 50,\n height: 24,\n padding: 0,\n margin: 0,\n },\n switchBase: {\n padding: 1,\n \"&$checked\": {\n transform: \"translateX(24px)\",\n color: theme.palette.common.white,\n \"& + $track\": {\n backgroundColor: \"#4CCB92\",\n boxShadow: \"inset 0px 1px 4px rgba(0,0,0,0.1)\",\n opacity: 1,\n border: \"none\",\n },\n },\n \"&$focusVisible $thumb\": {\n color: \"#4CCB92\",\n border: \"6px solid #fff\",\n },\n },\n thumb: {\n width: 22,\n height: 22,\n backgroundColor: \"#FAFAFA\",\n border: \"2px solid #FFFFFF\",\n marginLeft: 1,\n },\n track: {\n borderRadius: 24 / 2,\n backgroundColor: \"#E2E2E2\",\n boxShadow: \"inset 0px 1px 4px rgba(0,0,0,0.1)\",\n opacity: 1,\n transition: theme.transitions.create([\"background-color\", \"border\"]),\n },\n checked: {},\n focusVisible: {},\n switchContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n },\n}))(Switch);\n\nconst FormSwitchWrapper = ({\n label = \"\",\n onChange,\n value,\n id,\n name,\n checked = false,\n disabled = false,\n switchOnly = false,\n tooltip = \"\",\n description = \"\",\n classes,\n indicatorLabels,\n extraInputProps = {},\n}: IFormSwitch) => {\n const switchComponent = (\n \n {!switchOnly && (\n \n {indicatorLabels && indicatorLabels.length > 1\n ? indicatorLabels[1]\n : \"OFF\"}\n \n )}\n \n {!switchOnly && (\n \n {indicatorLabels ? indicatorLabels[0] : \"ON\"}\n \n )}\n \n );\n\n if (switchOnly) {\n return switchComponent;\n }\n\n return (\n
\n \n \n {label !== \"\" && (\n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n
\n )}\n
\n \n {switchComponent}\n
\n {description !== \"\" && (\n \n \n {description}\n \n \n )}\n \n
\n );\n};\n\nexport default withStyles(styles)(FormSwitchWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { ClipboardEvent, useState } from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n onKeyPress?: (e: any) => void;\n onFocus?: () => void;\n onPaste?: (e: ClipboardEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayId?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n }),\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayId,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n onFocus,\n onPaste,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n const [toggleTextInput, setToggleTextInput] = useState(false);\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n let inputBoxWrapperIcon = overlayIcon;\n let inputBoxWrapperType = type;\n\n if (type === \"password\" && overlayIcon === null) {\n inputBoxWrapperIcon = toggleTextInput ? (\n \n ) : (\n \n );\n inputBoxWrapperType = toggleTextInput ? \"text\" : \"password\";\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n
\n \n {inputBoxWrapperIcon && (\n \n {\n overlayAction();\n }\n : () => setToggleTextInput(!toggleTextInput)\n }\n id={overlayId}\n size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {inputBoxWrapperIcon}\n \n
\n )}\n {overlayObject && (\n \n {overlayObject}\n
\n )}\n \n \n \n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","import React, { Fragment } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { predefinedList } from \"../common/styleLibrary\";\n\ninterface IPredefinedList {\n classes: any;\n label?: string;\n content: any;\n multiLine?: boolean;\n actionButton?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...predefinedList,\n });\n\nconst PredefinedList = ({\n classes,\n label = \"\",\n content,\n multiLine = false,\n actionButton,\n}: IPredefinedList) => {\n return (\n \n \n {label !== \"\" && (\n \n {label}\n \n )}\n \n \n {content}\n \n {actionButton && (\n
{actionButton}
\n )}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(PredefinedList);\n","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M10 15h5.88c.27-.31.67-.5 1.12-.5.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5c-.44 0-.84-.19-1.12-.5H11.9c-.46 2.28-2.48 4-4.9 4-2.76 0-5-2.24-5-5 0-2.42 1.72-4.44 4-4.9v2.07c-1.16.41-2 1.53-2 2.83 0 1.65 1.35 3 3 3s3-1.35 3-3v-1zm2.5-11c1.65 0 3 1.35 3 3h2c0-2.76-2.24-5-5-5s-5 2.24-5 5c0 1.43.6 2.71 1.55 3.62l-2.35 3.9c-.68.14-1.2.75-1.2 1.48 0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5c0-.16-.02-.31-.07-.45l3.38-5.63C10.49 9.61 9.5 8.42 9.5 7c0-1.65 1.35-3 3-3zm4.5 9c-.64 0-1.23.2-1.72.54l-3.05-5.07C11.53 8.35 11 7.74 11 7c0-.83.67-1.5 1.5-1.5S14 6.17 14 7c0 .15-.02.29-.06.43l2.19 3.65c.28-.05.57-.08.87-.08 2.76 0 5 2.24 5 5s-2.24 5-5 5c-1.85 0-3.47-1.01-4.33-2.5h2.67c.48.32 1.05.5 1.66.5 1.65 0 3-1.35 3-3s-1.35-3-3-3z\"\n}), 'Webhook');","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { Button, FormLayout, Grid, InputBox, ProgressBar } from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { Webhook } from \"@mui/icons-material\";\nimport CallToActionIcon from \"@mui/icons-material/CallToAction\";\nimport PendingActionsIcon from \"@mui/icons-material/PendingActions\";\nimport {\n configurationIsLoading,\n setErrorSnackMessage,\n setServerNeedsRestart,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\n\ninterface IEndpointModal {\n open: boolean;\n type: string;\n onCloseEndpoint: () => void;\n}\n\nconst AddEndpointModal = ({ open, type, onCloseEndpoint }: IEndpointModal) => {\n const [name, setName] = useState(\"\");\n const [endpoint, setEndpoint] = useState(\"\");\n const [authToken, setAuthToken] = useState(\"\");\n const [saving, setSaving] = useState(false);\n const [invalidInputs, setInvalidInput] = useState([\n \"name\",\n \"endpoint\",\n ]);\n const [initialInputs, setInitialInputs] = useState([\n \"name\",\n \"endpoint\",\n \"auth-token\",\n ]);\n\n const dispatch = useAppDispatch();\n\n const saveWebhook = () => {\n if (saving) {\n return;\n }\n\n if (invalidInputs.length !== 0) {\n return;\n }\n\n if (name.trim() === \"\") {\n setInvalidInput([...invalidInputs, \"name\"]);\n\n return;\n }\n\n if (endpoint.trim() === \"\") {\n setInvalidInput([...invalidInputs, \"endpoint\"]);\n\n return;\n }\n\n setSaving(true);\n\n const payload = {\n key_values: [\n {\n key: \"endpoint\",\n value: endpoint,\n },\n {\n key: \"auth_token\",\n value: authToken,\n },\n ],\n arn_resource_id: name,\n };\n\n api.configs\n .setConfig(type, payload)\n .then((res) => {\n setSaving(false);\n dispatch(setServerNeedsRestart(res.data.restart || false));\n if (!res.data.restart) {\n dispatch(setSnackBarMessage(\"Configuration saved successfully\"));\n }\n\n onCloseEndpoint();\n dispatch(configurationIsLoading(true));\n })\n .catch((err) => {\n setSaving(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n const initializeInput = (name: string) => {\n setInitialInputs(initialInputs.filter((item) => item !== name));\n };\n\n const validateInput = (name: string, valid: boolean) => {\n if (invalidInputs.includes(name) && valid) {\n setInvalidInput(invalidInputs.filter((item) => item !== name));\n return;\n }\n\n if (!valid && !invalidInputs.includes(name)) {\n setInvalidInput([...invalidInputs, name]);\n }\n };\n\n let title = \"Add new Webhook\";\n let icon = ;\n\n switch (type) {\n case \"logger_webhook\":\n title = \"New Logger Webhook\";\n icon = ;\n break;\n case \"audit_webhook\":\n title = \"New Audit Webhook\";\n icon = ;\n break;\n }\n\n return (\n \n \n \n ) => {\n initializeInput(\"name\");\n setName(event.target.value);\n validateInput(\"name\", event.target.validity.valid);\n }}\n error={\n invalidInputs.includes(\"name\") && !initialInputs.includes(\"name\")\n ? \"Invalid Name\"\n : \"\"\n }\n label=\"Name\"\n value={name}\n pattern={\"^(?=.*[a-zA-Z0-9]).{1,}$\"}\n required\n />\n ) => {\n initializeInput(\"endpoint\");\n setEndpoint(event.target.value);\n validateInput(\"endpoint\", event.target.validity.valid);\n }}\n error={\n invalidInputs.includes(\"endpoint\") &&\n !initialInputs.includes(\"endpoint\")\n ? \"Invalid Endpoint set\"\n : \"\"\n }\n label=\"Endpoint\"\n value={endpoint}\n pattern={\n \"^(https?):\\\\/\\\\/([a-zA-Z0-9\\\\-.]+)(:[0-9]+)?(\\\\/[a-zA-Z0-9\\\\-.\\\\/]*)?$\"\n }\n required\n />\n ) => {\n initializeInput(\"auth-token\");\n setAuthToken(event.target.value);\n }}\n label=\"Auth Token\"\n value={authToken}\n />\n \n {saving && (\n \n \n \n )}\n \n \n \n \n \n \n );\n};\n\nexport default AddEndpointModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState, Fragment } from \"react\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport {\n configurationIsLoading,\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IDeleteWebhookEndpoint {\n modalOpen: boolean;\n onClose: () => void;\n selectedARN: string;\n type: string;\n}\n\nconst DeleteWebhookEndpoint = ({\n modalOpen,\n onClose,\n selectedARN,\n}: IDeleteWebhookEndpoint) => {\n const [deleteLoading, setDeleteLoading] = useState(false);\n\n const dispatch = useAppDispatch();\n\n useEffect(() => {\n if (deleteLoading) {\n api.configs\n .resetConfig(selectedARN)\n .then(() => {\n setDeleteLoading(false);\n dispatch(setServerNeedsRestart(true));\n dispatch(configurationIsLoading(true));\n onClose();\n })\n .catch((err) => {\n setDeleteLoading(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n }, [deleteLoading, dispatch, onClose, selectedARN]);\n\n const onConfirmDelete = () => {\n setDeleteLoading(true);\n };\n\n const defaultWH = !selectedARN.includes(\":\");\n\n let message = \"Are you sure you want to delete the Configured Endpoint\";\n\n // Main webhook, we just reset\n if (defaultWH) {\n message = \"Are you sure you want to reset the Default\";\n }\n\n return (\n }\n onClose={onClose}\n confirmationContent={\n \n {`${message} `}\n {selectedARN}?\n \n }\n />\n );\n};\n\nexport default DeleteWebhookEndpoint;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { Button, ConsoleIcon, Grid, ProgressBar, Tooltip } from \"mds\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { Webhook } from \"@mui/icons-material\";\nimport { formFieldStyles } from \"../../Common/FormComponents/common/styleLibrary\";\nimport CallToActionIcon from \"@mui/icons-material/CallToAction\";\nimport PendingActionsIcon from \"@mui/icons-material/PendingActions\";\nimport {\n configurationIsLoading,\n setErrorSnackMessage,\n setServerNeedsRestart,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\nimport { IConfigurationSys } from \"../../Configurations/types\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport PredefinedList from \"../../Common/FormComponents/PredefinedList/PredefinedList\";\nimport { overrideFields } from \"../../Configurations/utils\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IEndpointModal {\n open: boolean;\n type: string;\n endpointInfo: IConfigurationSys;\n onCloseEndpoint: () => void;\n}\n\nconst EditEndpointModal = ({\n open,\n type,\n endpointInfo,\n onCloseEndpoint,\n}: IEndpointModal) => {\n const [name, setName] = useState(\"\");\n const [endpoint, setEndpoint] = useState(\"\");\n const [authToken, setAuthToken] = useState(\"\");\n const [endpointState, setEndpointState] = useState(\"on\");\n const [saving, setSaving] = useState(false);\n const [invalidInputs, setInvalidInput] = useState([]);\n\n const dispatch = useAppDispatch();\n\n useEffect(() => {\n if (endpointInfo) {\n const endpointLocate = endpointInfo.key_values.find(\n (key) => key.key === \"endpoint\",\n );\n const tokenLocate = endpointInfo.key_values.find(\n (key) => key.key === \"auth_token\",\n );\n const enable = endpointInfo.key_values.find(\n (key) => key.key === \"enable\",\n );\n\n let invalidInputs: string[] = [];\n\n if (endpointLocate) {\n const endpointValue = endpointLocate.value;\n\n if (endpointValue === \"\") {\n invalidInputs.push(\"endpoint\");\n } else {\n setEndpoint(endpointValue);\n }\n }\n\n if (tokenLocate) {\n const tokenValue = tokenLocate.value;\n\n if (tokenValue === \"\") {\n invalidInputs.push(\"auth-token\");\n } else {\n setAuthToken(tokenValue);\n }\n }\n\n if (enable) {\n if (enable.value === \"off\") {\n setEndpointState(enable.value);\n }\n }\n\n setName(endpointInfo.name || \"\");\n setInvalidInput(invalidInputs);\n }\n }, [endpointInfo]);\n\n const updateWebhook = () => {\n if (saving) {\n return;\n }\n\n if (invalidInputs.length !== 0) {\n return;\n }\n\n if (!endpoint || endpoint.trim() === \"\") {\n setInvalidInput([...invalidInputs, \"endpoint\"]);\n\n return;\n }\n\n setSaving(true);\n\n const payload = {\n key_values: [\n {\n key: \"endpoint\",\n value: endpoint,\n },\n {\n key: \"auth_token\",\n value: authToken,\n },\n {\n key: \"enable\",\n value: endpointState,\n },\n ],\n };\n\n api.configs\n .setConfig(name, payload)\n .then((res) => {\n setSaving(false);\n dispatch(setServerNeedsRestart(res.data.restart || false));\n if (!res.data.restart) {\n dispatch(setSnackBarMessage(\"Configuration saved successfully\"));\n }\n\n onCloseEndpoint();\n dispatch(configurationIsLoading(true));\n })\n .catch((err) => {\n setSaving(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n const validateInput = (name: string, valid: boolean) => {\n if (invalidInputs.includes(name) && valid) {\n setInvalidInput(invalidInputs.filter((item) => item !== name));\n return;\n }\n\n if (!valid && !invalidInputs.includes(name)) {\n setInvalidInput([...invalidInputs, name]);\n }\n };\n\n const defaultWH = !name.includes(\":\");\n const hasOverride = endpointInfo.key_values.filter(\n (itm) => !!itm.env_override,\n );\n\n const overrideValues = overrideFields(hasOverride);\n\n let title = \"Edit Webhook\";\n let icon = ;\n\n switch (type) {\n case \"logger_webhook\":\n title = `Edit ${defaultWH ? \" the Default \" : \"\"}Logger Webhook`;\n icon = ;\n break;\n case \"audit_webhook\":\n title = `Edit ${defaultWH ? \" the Default \" : \"\"}Audit Webhook`;\n icon = ;\n break;\n }\n\n if (hasOverride.length > 0) {\n title = \"View env variable Webhook\";\n }\n\n return (\n \n \n {hasOverride.length > 0 ? (\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 ) => {\n const value = e.target.checked ? \"on\" : \"off\";\n setEndpointState(value);\n }}\n id={\"endpoint_enabled\"}\n name={\"endpoint_enabled\"}\n label={\"Enabled\"}\n value={\"switch_on\"}\n checked={endpointState === \"on\"}\n />\n \n \n ) => {\n setEndpoint(event.target.value);\n validateInput(\"endpoint\", event.target.validity.valid);\n }}\n error={\n invalidInputs.includes(\"endpoint\")\n ? \"Invalid Endpoint set\"\n : \"\"\n }\n label=\"Endpoint\"\n value={endpoint}\n pattern={\n \"^(https?):\\\\/\\\\/([a-zA-Z0-9\\\\-.]+)(:[0-9]+)?(\\\\/[a-zA-Z0-9\\\\-.\\\\/]*)?$\"\n }\n required\n />\n \n \n ) => {\n setAuthToken(event.target.value);\n }}\n label=\"Auth Token\"\n value={authToken}\n />\n \n {saving && (\n \n \n \n )}\n \n \n \n \n \n )}\n \n \n );\n};\n\nexport default EditEndpointModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { IConfigurationSys, IElementValue } from \"../../Configurations/types\";\nimport {\n Button,\n ConsoleIcon,\n DataTable,\n Grid,\n TierOfflineIcon,\n TierOnlineIcon,\n} from \"mds\";\nimport AddEndpointModal from \"./AddEndpointModal\";\nimport DeleteWebhookEndpoint from \"./DeleteWebhookEndpoint\";\nimport EditWebhookEndpoint from \"./EditWebhookEndpoint\";\nimport { Configuration } from \"api/consoleApi\";\n\ninterface WebhookSettingsProps {\n WebhookSettingslist: Configuration[];\n setResetConfigurationOpen: () => void;\n type: string;\n}\n\nconst WebhookSettings = ({\n setResetConfigurationOpen,\n WebhookSettingslist,\n type,\n}: WebhookSettingsProps) => {\n const [newEndpointOpen, setNewEndpointOpen] = useState(false);\n const [deleteWebhookOpen, setDeleteWebhookOpen] = useState(false);\n const [editWebhookOpen, setEditWebhookOpen] = useState(false);\n const [selectedARN, setSelectedARN] = useState(\"\");\n const [selectedEndpoint, setSelectedEndpoint] =\n useState(null);\n\n const renderEndpoint = (item: IElementValue[]) => {\n const endpointFilter = item.find((itm) => itm.key === \"endpoint\");\n\n if (endpointFilter) {\n if (endpointFilter.env_override) {\n return endpointFilter.env_override.value;\n }\n\n return endpointFilter.value;\n }\n\n return \"\";\n };\n\n const renderWebhookStatus = (item: IElementValue[]) => {\n const EnableFilter = item.find((itm) => itm.key === \"enable\");\n\n if (EnableFilter?.env_override) {\n const overrideEnabled =\n !EnableFilter?.env_override.value ||\n EnableFilter?.env_override.value === \"on\" ||\n !EnableFilter?.env_override.value\n ? \"Enabled\"\n : \"Disabled\";\n return (\n \n \n {overrideEnabled ? \"Enabled\" : \"Disabled\"}\n \n );\n }\n\n // If enable is not set, then enabled by default\n if (!EnableFilter || EnableFilter.value === \"on\" || !EnableFilter.value) {\n return (\n \n \n Enabled\n \n );\n }\n\n return (\n \n \n Disabled\n \n );\n };\n\n const onCloseDelete = () => {\n setDeleteWebhookOpen(false);\n setSelectedARN(\"\");\n };\n\n const onCloseEditWebhook = () => {\n setEditWebhookOpen(false);\n setSelectedEndpoint(null);\n };\n\n const actions = [\n {\n type: \"view\",\n onClick: (item: IConfigurationSys) => {\n if (item.name) {\n setEditWebhookOpen(true);\n setSelectedEndpoint(item);\n }\n },\n },\n {\n type: \"delete\",\n onClick: (item: IConfigurationSys) => {\n if (item.name) {\n setDeleteWebhookOpen(true);\n setSelectedARN(item.name);\n }\n },\n disableButtonFunction: (item: string) => {\n const wHook = WebhookSettingslist.find(\n (element) => element.name === item,\n );\n\n if (wHook) {\n const hasOverride = wHook.key_values?.filter(\n (itm) => !!itm.env_override,\n );\n\n // Has override values, we cannot delete.\n if (hasOverride && hasOverride.length > 0) {\n return true;\n }\n\n return false;\n }\n return false;\n },\n },\n ];\n return (\n \n {newEndpointOpen && (\n {\n setNewEndpointOpen(false);\n }}\n />\n )}\n {deleteWebhookOpen && (\n \n )}\n {editWebhookOpen && selectedEndpoint && (\n \n )}\n \n {\n setNewEndpointOpen(true);\n }}\n >\n New Endpoint\n \n \n \n \n

Currently Configured Endpoints

\n \n
\n
\n
\n );\n};\nexport default WebhookSettings;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 get from \"lodash/get\";\nimport { Box, Button, Grid, Loader } from \"mds\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"api\";\nimport { Configuration, ConfigurationKV } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport {\n fieldsConfigurations,\n overrideFields,\n removeEmptyFields,\n} from \"../../Configurations/utils\";\nimport {\n IConfigurationElement,\n IElementValue,\n IOverrideEnv,\n KVField,\n} from \"../../Configurations/types\";\nimport {\n configurationIsLoading,\n setErrorSnackMessage,\n setHelpName,\n setServerNeedsRestart,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport WebhookSettings from \"../WebhookSettings/WebhookSettings\";\nimport ConfTargetGeneric from \"../ConfTargetGeneric\";\nimport ResetConfigurationModal from \"./ResetConfigurationModal\";\n\ninterface IAddNotificationEndpointProps {\n selectedConfiguration: IConfigurationElement;\n className?: string;\n}\n\nconst EditConfiguration = ({\n selectedConfiguration,\n className = \"\",\n}: IAddNotificationEndpointProps) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const { pathname = \"\" } = useLocation();\n\n let selConfigTab = pathname.substring(pathname.lastIndexOf(\"/\") + 1);\n selConfigTab = selConfigTab === \"settings\" ? \"region\" : selConfigTab;\n\n //Local States\n const [valuesObj, setValueObj] = useState([]);\n const [saving, setSaving] = useState(false);\n const [configValues, setConfigValues] = useState([]);\n const [configSubsysList, setConfigSubsysList] = useState([]);\n const [resetConfigurationOpen, setResetConfigurationOpen] =\n useState(false);\n const [overrideEnvs, setOverrideEnvs] = useState({});\n\n const loadingConfig = useSelector(\n (state: AppState) => state.system.loadingConfigurations,\n );\n\n useEffect(() => {\n dispatch(configurationIsLoading(true));\n }, [selConfigTab, dispatch]);\n\n useEffect(() => {\n if (loadingConfig) {\n const configId = get(selectedConfiguration, \"configuration_id\", false);\n\n if (configId) {\n api.configs\n .configInfo(configId)\n .then((res) => {\n setConfigSubsysList(res.data);\n let values: ConfigurationKV[] = get(res.data[0], \"key_values\", []);\n\n const fieldsConfig: KVField[] = fieldsConfigurations[configId];\n\n const keyVals = fieldsConfig.map((field) => {\n const includedValue = values.find(\n (element: ConfigurationKV) => element.key === field.name,\n );\n const customValue = includedValue?.value || \"\";\n\n return {\n key: field.name,\n value: field.customValueProcess\n ? field.customValueProcess(customValue)\n : customValue,\n };\n });\n\n setConfigValues(keyVals);\n setOverrideEnvs(overrideFields(keyVals));\n dispatch(configurationIsLoading(false));\n })\n .catch((err) => {\n dispatch(configurationIsLoading(false));\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n\n return;\n }\n dispatch(configurationIsLoading(false));\n }\n }, [loadingConfig, selectedConfiguration, dispatch]);\n\n useEffect(() => {\n if (saving) {\n const payload = {\n key_values: removeEmptyFields(valuesObj),\n };\n api.configs\n .setConfig(selectedConfiguration.configuration_id, payload)\n .then((res) => {\n setSaving(false);\n dispatch(setServerNeedsRestart(res.data.restart || false));\n dispatch(configurationIsLoading(true));\n if (!res.data.restart) {\n dispatch(setSnackBarMessage(\"Configuration saved successfully\"));\n }\n })\n .catch((err) => {\n setSaving(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n }, [saving, dispatch, selectedConfiguration, valuesObj, navigate]);\n\n //Fetch Actions\n const submitForm = (event: React.FormEvent) => {\n event.preventDefault();\n setSaving(true);\n };\n\n const onValueChange = useCallback(\n (newValue: IElementValue[]) => {\n setValueObj(newValue);\n },\n [setValueObj],\n );\n\n const continueReset = (restart: boolean) => {\n setResetConfigurationOpen(false);\n dispatch(setServerNeedsRestart(restart));\n if (restart) {\n dispatch(configurationIsLoading(true));\n }\n };\n\n const resetConfigurationMOpen = () => {\n setResetConfigurationOpen(true);\n };\n\n return (\n \n {\n dispatch(\n setHelpName(\n `settings_${selectedConfiguration.configuration_label}`,\n ),\n );\n }}\n >\n {resetConfigurationOpen && (\n \n )}\n {loadingConfig ? (\n \n \n \n ) : (\n \n {selectedConfiguration.configuration_id === \"logger_webhook\" ||\n selectedConfiguration.configuration_id === \"audit_webhook\" ? (\n \n ) : (\n \n \n \n \n \n \n \n    \n \n \n \n \n )}\n \n )}\n \n \n );\n};\n\nexport default EditConfiguration;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { useLocation } from \"react-router-dom\";\nimport { Grid } from \"mds\";\nimport { configurationElements } from \"../utils\";\nimport EditConfiguration from \"../../EventDestinations/CustomForms/EditConfiguration\";\n\nconst ConfigurationsList = () => {\n const { pathname = \"\" } = useLocation();\n\n const configName = pathname.substring(pathname.lastIndexOf(\"/\") + 1);\n\n const validActiveConfig = configurationElements.find(\n (element) => element.configuration_id === configName,\n );\n const containerClassName = `${configName}`;\n return (\n \n {validActiveConfig && (\n \n )}\n \n );\n};\n\nexport default ConfigurationsList;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Button, UploadIcon } from \"mds\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport { performDownload } from \"../../../../common/utils\";\nimport { DateTime } from \"luxon\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useDispatch } from \"react-redux\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst ExportConfigButton = () => {\n const dispatch = useDispatch();\n const [isReqLoading, invokeApi] = useApi(\n (res: any) => {\n //base64 encoded information so decode before downloading.\n performDownload(\n new Blob([window.atob(res.value)]),\n `minio-server-config-${DateTime.now().toFormat(\n \"LL-dd-yyyy-HH-mm-ss\",\n )}.conf`,\n );\n },\n (err) => {\n dispatch(setErrorSnackMessage(err));\n },\n );\n\n return (\n \n {\n invokeApi(\"GET\", `api/v1/configs/export`);\n }}\n icon={}\n label={\"Export\"}\n variant={\"regular\"}\n disabled={isReqLoading}\n />\n \n );\n};\n\nexport default ExportConfigButton;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useRef, useState } from \"react\";\nimport { Button, DownloadIcon } from \"mds\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport {\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../../systemSlice\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useNavigate } from \"react-router-dom\";\nimport { AppState } from \"../../../../store\";\n\nconst ImportConfigButton = () => {\n const navigate = useNavigate();\n const dispatch = useDispatch();\n\n const needsRestart = useSelector(\n (state: AppState) => state.system.serverNeedsRestart,\n );\n\n const [refreshPage, setRefreshPage] = useState(\n undefined,\n );\n const fileUpload = useRef(null);\n\n const [isReqLoading, invokeApi] = useApi(\n (res: any) => {\n //base64 encoded information so decode before downloading.\n dispatch(setServerNeedsRestart(true)); //import should refreshPage as per mc.\n setRefreshPage(true);\n },\n (err) => {\n dispatch(setErrorSnackMessage(err));\n },\n );\n\n useEffect(() => {\n if (!needsRestart && refreshPage) {\n navigate(0); // refresh the page.\n }\n }, [needsRestart, refreshPage, navigate]);\n\n const handleUploadButton = (e: any) => {\n if (\n e === null ||\n e === undefined ||\n e.target.files === null ||\n e.target.files === undefined\n ) {\n return;\n }\n e.preventDefault();\n const [fileToUpload] = e.target.files;\n\n const formData = new FormData();\n const blobFile = new Blob([fileToUpload], { type: fileToUpload.type });\n\n formData.append(\"file\", blobFile, fileToUpload.name);\n // @ts-ignore\n invokeApi(\"POST\", `api/v1/configs/import`, formData);\n\n e.target.value = \"\";\n };\n\n return (\n \n \n \n {\n if (fileUpload && fileUpload.current) {\n fileUpload.current.click();\n }\n }}\n icon={}\n label={\"Import\"}\n variant={\"regular\"}\n disabled={isReqLoading}\n />\n \n \n );\n};\n\nexport default ImportConfigButton;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 {\n Box,\n Grid,\n HelpBox,\n PageLayout,\n ScreenTitle,\n SettingsIcon,\n Tabs,\n} from \"mds\";\n\nimport { configurationElements } from \"../utils\";\nimport {\n Navigate,\n Route,\n Routes,\n useLocation,\n useNavigate,\n} from \"react-router-dom\";\n\nimport ConfigurationForm from \"./ConfigurationForm\";\nimport { IAM_PAGES } from \"../../../../common/SecureComponent/permissions\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport ExportConfigButton from \"./ExportConfigButton\";\nimport ImportConfigButton from \"./ImportConfigButton\";\n\nimport HelpMenu from \"../../HelpMenu\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { api } from \"../../../../api\";\nimport { IElement } from \"../types\";\nimport { errorToHandler } from \"../../../../api/errors\";\n\nconst getRoutePath = (path: string) => {\n return `${IAM_PAGES.SETTINGS}/${path}`;\n};\n\n// region is not part of config subsystem list.\nconst NON_SUB_SYS_CONFIG_ITEMS = [\"region\"];\nconst IGNORED_CONFIG_SUB_SYS = [\"cache\"]; // cache config is not supported.\n\nconst ConfigurationOptions = () => {\n const { pathname = \"\" } = useLocation();\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [configSubSysList, setConfigSubSysList] = useState([]);\n const fetchConfigSubSysList = useCallback(async () => {\n api.configs\n .listConfig() // get a list of available config subsystems.\n .then((res) => {\n if (res && res?.data && res?.data?.configurations) {\n const confSubSysList = (res?.data?.configurations || []).reduce(\n (acc: string[], { key = \"\" }) => {\n if (!IGNORED_CONFIG_SUB_SYS.includes(key)) {\n acc.push(key);\n }\n return acc;\n },\n [],\n );\n\n setConfigSubSysList(confSubSysList);\n }\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n });\n }, [dispatch]);\n\n useEffect(() => {\n fetchConfigSubSysList();\n dispatch(setHelpName(\"settings_Region\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const availableConfigSubSys = configurationElements.filter(\n ({ configuration_id }: IElement) => {\n return (\n NON_SUB_SYS_CONFIG_ITEMS.includes(configuration_id) ||\n configSubSysList.includes(configuration_id) ||\n !configSubSysList.length\n );\n },\n );\n\n return (\n \n } />\n \n \n }\n title={\"MinIO Configuration:\"}\n actions={\n \n \n \n \n }\n sx={{ marginBottom: 15 }}\n />\n {\n navigate(path);\n }}\n useRouteTabs\n options={availableConfigSubSys.map((element) => {\n const { configuration_id, configuration_label, icon } = element;\n return {\n tabConfig: {\n id: `settings-tab-${configuration_label}`,\n label: configuration_label,\n value: configuration_id,\n icon: icon,\n to: getRoutePath(configuration_id),\n },\n };\n })}\n routes={\n \n {availableConfigSubSys.map((element) => (\n }\n />\n ))}\n }\n />\n \n }\n />\n \n \n }\n help={\n \n MinIO supports a variety of configurations ranging from\n encryption, compression, region, notifications, etc.\n
\n
\n You can learn more at our{\" \"}\n \n documentation\n \n .\n
\n }\n />\n
\n
\n
\n );\n};\n\nexport default ConfigurationOptions;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport PublicIcon from \"@mui/icons-material/Public\";\nimport CompressIcon from \"@mui/icons-material/Compress\";\nimport CodeIcon from \"@mui/icons-material/Code\";\nimport LocalHospitalIcon from \"@mui/icons-material/LocalHospital\";\nimport FindReplaceIcon from \"@mui/icons-material/FindReplace\";\nimport VpnKeyIcon from \"@mui/icons-material/VpnKey\";\nimport PendingActionsIcon from \"@mui/icons-material/PendingActions\";\nimport CallToActionIcon from \"@mui/icons-material/CallToAction\";\nimport { IElement, IElementValue, IOverrideEnv, OverrideValue } from \"./types\";\nimport { LogsIcon } from \"mds\";\n\nexport const configurationElements: IElement[] = [\n {\n icon: ,\n configuration_id: \"region\",\n configuration_label: \"Region\",\n },\n {\n icon: ,\n configuration_id: \"compression\",\n configuration_label: \"Compression\",\n },\n {\n icon: ,\n configuration_id: \"api\",\n configuration_label: \"API\",\n },\n {\n icon: ,\n configuration_id: \"heal\",\n configuration_label: \"Heal\",\n },\n {\n icon: ,\n configuration_id: \"scanner\",\n configuration_label: \"Scanner\",\n },\n {\n icon: ,\n configuration_id: \"etcd\",\n configuration_label: \"Etcd\",\n },\n {\n icon: ,\n configuration_id: \"logger_webhook\",\n configuration_label: \"Logger Webhook\",\n },\n {\n icon: ,\n configuration_id: \"audit_webhook\",\n configuration_label: \"Audit Webhook\",\n },\n {\n icon: (\n \n ),\n configuration_id: \"audit_kafka\",\n configuration_label: \"Audit Kafka\",\n },\n];\n\nexport const fieldsConfigurations: any = {\n region: [\n {\n name: \"name\",\n required: true,\n label: \"Server Location\",\n tooltip: 'Name of the location of the server e.g. \"us-west-rack2\"',\n type: \"string\",\n placeholder: \"e.g. us-west-rack-2\",\n },\n {\n name: \"comment\",\n required: false,\n label: \"Comment\",\n tooltip: \"You can add a comment to this setting\",\n type: \"comment\",\n placeholder: \"Enter custom notes if any\",\n },\n ],\n compression: [\n {\n name: \"extensions\",\n required: false,\n label: \"Extensions\",\n tooltip:\n 'Extensions to compress e.g. \".txt\", \".log\" or \".csv\" - you can write one per field',\n type: \"csv\",\n placeholder: \"Enter an Extension\",\n withBorder: true,\n },\n {\n name: \"mime_types\",\n required: false,\n label: \"Mime Types\",\n tooltip:\n 'Mime types e.g. \"text/*\", \"application/json\" or \"application/xml\" - you can write one per field',\n type: \"csv\",\n placeholder: \"Enter a Mime Type\",\n withBorder: true,\n },\n ],\n api: [\n {\n name: \"requests_max\",\n required: false,\n label: \"Requests Max\",\n tooltip: \"Maximum number of concurrent requests, e.g. '1600'\",\n type: \"number\",\n placeholder: \"Enter Requests Max\",\n },\n {\n name: \"cors_allow_origin\",\n required: false,\n label: \"Cors Allow Origin\",\n tooltip: \"List of origins allowed for CORS requests\",\n type: \"csv\",\n placeholder: \"Enter allowed origin e.g. https://example.com\",\n },\n {\n name: \"replication_workers\",\n required: false,\n label: \"Replication Workers\",\n tooltip: \"Number of replication workers, defaults to 100\",\n type: \"number\",\n placeholder: \"Enter Replication Workers\",\n },\n {\n name: \"replication_failed_workers\",\n required: false,\n label: \"Replication Failed Workers\",\n tooltip:\n \"Number of replication workers for recently failed replicas, defaults to 4\",\n type: \"number\",\n placeholder: \"Enter Replication Failed Workers\",\n },\n ],\n heal: [\n {\n name: \"bitrotscan\",\n required: false,\n label: \"Bitrot Scan\",\n tooltip:\n \"Perform bitrot scan on disks when checking objects during scanner\",\n type: \"on|off\",\n },\n {\n name: \"max_sleep\",\n required: false,\n label: \"Max Sleep\",\n tooltip:\n \"Maximum sleep duration between objects to slow down heal operation, e.g. 2s\",\n type: \"duration\",\n placeholder: \"Enter Max Sleep Duration\",\n },\n {\n name: \"max_io\",\n required: false,\n label: \"Max IO\",\n tooltip:\n \"Maximum IO requests allowed between objects to slow down heal operation, e.g. 3\",\n type: \"number\",\n placeholder: \"Enter Max IO\",\n },\n ],\n scanner: [\n {\n name: \"delay\",\n required: false,\n label: \"Delay Multiplier\",\n tooltip: \"Scanner delay multiplier, defaults to '10.0'\",\n type: \"number\",\n placeholder: \"Enter Delay\",\n },\n {\n name: \"max_wait\",\n required: false,\n label: \"Max Wait\",\n tooltip: \"Maximum wait time between operations, defaults to '15s'\",\n type: \"duration\",\n placeholder: \"Enter Max Wait\",\n },\n {\n name: \"cycle\",\n required: false,\n label: \"Cycle\",\n tooltip: \"Time duration between scanner cycles, defaults to '1m'\",\n type: \"duration\",\n placeholder: \"Enter Cycle\",\n },\n ],\n etcd: [\n {\n name: \"endpoints\",\n required: true,\n label: \"Endpoints\",\n tooltip:\n 'List of etcd endpoints e.g. \"http://localhost:2379\" - you can write one per field',\n type: \"csv\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"path_prefix\",\n required: false,\n label: \"Path Prefix\",\n tooltip: 'Namespace prefix to isolate tenants e.g. \"customer1/\"',\n type: \"string\",\n placeholder: \"Enter Path Prefix\",\n },\n {\n name: \"coredns_path\",\n required: false,\n label: \"Coredns Path\",\n tooltip: 'Shared bucket DNS records, default is \"/skydns\"',\n type: \"string\",\n placeholder: \"Enter Coredns Path\",\n },\n {\n name: \"client_cert\",\n required: false,\n label: \"Client Cert\",\n tooltip: \"Client cert for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_cert_key\",\n required: false,\n label: \"Client Cert Key\",\n tooltip: \"Client cert key for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert Key\",\n },\n {\n name: \"comment\",\n required: false,\n label: \"Comment\",\n tooltip: \"You can add a comment to this setting\",\n type: \"comment\",\n multiline: true,\n placeholder: \"Enter custom notes if any\",\n },\n ],\n logger_webhook: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n type: \"string\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n required: true,\n label: \"Auth Token\",\n type: \"string\",\n placeholder: \"Enter Auth Token\",\n },\n ],\n audit_webhook: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n type: \"string\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n required: true,\n label: \"Auth Token\",\n type: \"string\",\n placeholder: \"Enter Auth Token\",\n },\n ],\n audit_kafka: [\n {\n name: \"enable\",\n required: false,\n label: \"Enable\",\n tooltip: \"Enable audit_kafka target\",\n type: \"on|off\",\n customValueProcess: (origValue: string) => {\n return origValue === \"\" || origValue === \"on\" ? \"on\" : \"off\";\n },\n },\n {\n name: \"brokers\",\n required: true,\n label: \"Brokers\",\n type: \"csv\",\n placeholder: \"Enter Kafka Broker\",\n },\n {\n name: \"topic\",\n required: false,\n label: \"Topic\",\n type: \"string\",\n placeholder: \"Enter Kafka Topic\",\n tooltip: \"Kafka topic used for bucket notifications\",\n },\n {\n name: \"sasl\",\n required: false,\n label: \"Use SASL\",\n tooltip:\n \"Enable SASL (Simple Authentication and Security Layer) authentication\",\n type: \"on|off\",\n },\n {\n name: \"sasl_username\",\n required: false,\n label: \"SASL Username\",\n type: \"string\",\n placeholder: \"Enter SASL Username\",\n tooltip: \"Username for SASL/PLAIN or SASL/SCRAM authentication\",\n },\n {\n name: \"sasl_password\",\n required: false,\n label: \"SASL Password\",\n type: \"password\",\n placeholder: \"Enter SASL Password\",\n tooltip: \"Password for SASL/PLAIN or SASL/SCRAM authentication\",\n },\n {\n name: \"sasl_mechanism\",\n required: false,\n label: \"SASL Mechanism\",\n type: \"string\",\n placeholder: \"Enter SASL Mechanism\",\n tooltip: \"SASL authentication mechanism\",\n },\n {\n name: \"tls\",\n required: false,\n label: \"Use TLS\",\n tooltip: \"Enable TLS (Transport Layer Security)\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n required: false,\n label: \"Skip TLS Verification\",\n tooltip: \"Trust server TLS without verification\",\n type: \"on|off\",\n },\n {\n name: \"client_tls_cert\",\n required: false,\n label: \"Client Cert\",\n tooltip: \"Client cert for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_tls_key\",\n required: false,\n label: \"Client Cert Key\",\n tooltip: \"Client cert key for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert Key\",\n },\n {\n name: \"tls_client_auth\",\n required: false,\n label: \"TLS Client Auth\",\n tooltip:\n \"ClientAuth determines the Kafka server's policy for TLS client authorization\",\n type: \"string\",\n },\n {\n name: \"version\",\n required: false,\n label: \"Version\",\n tooltip: \"Specify the version of the Kafka cluster\",\n type: \"string\",\n },\n ],\n};\n\nexport const removeEmptyFields = (formFields: IElementValue[]) => {\n const nonEmptyFields = formFields.filter((field) => field.value !== \"\");\n\n return nonEmptyFields;\n};\n\nexport const selectSAs = (\n e: React.ChangeEvent,\n setSelectedSAs: Function,\n selectedSAs: string[],\n) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selectedSAs]; // We clone the selectedSAs array\n if (checked) {\n // If the user has checked this field we need to push this to selectedSAs\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedSAs(elements);\n return elements;\n};\n\nexport const overrideFields = (formFields: IElementValue[]): IOverrideEnv => {\n let overrideReturn: IOverrideEnv = {};\n\n formFields.forEach((envItem) => {\n // it has override values, we construct the value\n if (envItem.env_override) {\n const value: OverrideValue = {\n value: envItem.env_override.value,\n overrideEnv: envItem.env_override.name,\n };\n\n overrideReturn = { ...overrideReturn, [envItem.key]: value };\n }\n });\n\n return overrideReturn;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport {\n CommentBox,\n ConsoleIcon,\n FormLayout,\n Grid,\n InputBox,\n ReadBox,\n Switch,\n Tooltip,\n} from \"mds\";\nimport { IElementValue, IOverrideEnv, KVField } from \"../Configurations/types\";\nimport CSVMultiSelector from \"../Common/FormComponents/CSVMultiSelector/CSVMultiSelector\";\n\ninterface IConfGenericProps {\n onChange: (newValue: IElementValue[]) => void;\n fields: KVField[];\n defaultVals?: IElementValue[];\n overrideEnv?: IOverrideEnv;\n}\n\n// Function to get defined values,\n//we make this because the backed sometimes don't return all the keys when there is an initial configuration\nexport const valueDef = (\n key: string,\n type: string,\n defaults: IElementValue[],\n) => {\n let defValue = type === \"on|off\" ? \"off\" : \"\";\n\n if (defaults.length > 0) {\n const storedConfig = defaults.find((element) => element.key === key);\n\n if (storedConfig) {\n defValue = storedConfig.value || \"\";\n }\n }\n\n return defValue;\n};\n\nconst ConfTargetGeneric = ({\n onChange,\n fields,\n defaultVals,\n overrideEnv,\n}: IConfGenericProps) => {\n const [valueHolder, setValueHolder] = useState([]);\n const fieldsElements = !fields ? [] : fields;\n const defValList = !defaultVals ? [] : defaultVals;\n\n // Effect to create all the values to hold\n useEffect(() => {\n const values: IElementValue[] = fields.map((field) => {\n const stateInsert: IElementValue = {\n key: field.name,\n value: valueDef(field.name, field.type, defValList),\n };\n return stateInsert;\n });\n\n setValueHolder(values);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [fields, defaultVals]);\n\n useEffect(() => {\n onChange(valueHolder);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [valueHolder]);\n\n const setValueElement = (key: string, value: string, index: number) => {\n const valuesDup = [...valueHolder];\n value = value.trim();\n valuesDup[index] = { key, value };\n\n setValueHolder(valuesDup);\n };\n\n const fieldDefinition = (field: KVField, item: number) => {\n const holderItem = valueHolder[item];\n\n if (holderItem) {\n // Override Value with env var, we display generic string component\n const override = overrideEnv?.[`${holderItem.key}`];\n\n if (override) {\n return (\n \n \n \n \n \n }\n sx={{ width: \"100%\" }}\n >\n {override.value}\n \n );\n }\n }\n\n switch (field.type) {\n case \"on|off\":\n const value = holderItem ? holderItem.value : \"off\";\n\n return (\n ) => {\n const value = e.target.checked ? \"on\" : \"off\";\n setValueElement(field.name, value, item);\n }}\n id={field.name}\n name={field.name}\n label={field.label}\n value={\"switch_on\"}\n tooltip={field.tooltip}\n checked={value === \"on\"}\n />\n );\n case \"csv\":\n return (\n {\n let valCh = \"\";\n\n if (Array.isArray(value)) {\n valCh = value.join(\",\");\n } else {\n valCh = value;\n }\n\n setValueElement(field.name, valCh, item);\n }}\n tooltip={field.tooltip}\n commonPlaceholder={field.placeholder}\n withBorder={true}\n />\n );\n case \"comment\":\n return (\n setValueElement(field.name, e.target.value, item)}\n placeholder={field.placeholder}\n />\n );\n default:\n return (\n ) =>\n setValueElement(field.name, e.target.value, item)\n }\n placeholder={field.placeholder}\n />\n );\n }\n };\n\n return (\n \n {fieldsElements.map((field, item) => (\n {fieldDefinition(field, item)}\n ))}\n \n );\n};\n\nexport default ConfTargetGeneric;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\n\nimport { ConfirmDeleteIcon, ProgressBar } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IResetConfiguration {\n configurationName: string;\n closeResetModalAndRefresh: (reloadConfiguration: boolean) => void;\n resetOpen: boolean;\n}\n\nconst ResetConfigurationModal = ({\n configurationName,\n closeResetModalAndRefresh,\n resetOpen,\n}: IResetConfiguration) => {\n const dispatch = useAppDispatch();\n const [resetLoading, setResetLoading] = useState(false);\n\n useEffect(() => {\n if (resetLoading) {\n api.configs\n .resetConfig(configurationName)\n .then(() => {\n setResetLoading(false);\n closeResetModalAndRefresh(true);\n })\n .catch((err) => {\n setResetLoading(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n }, [closeResetModalAndRefresh, configurationName, resetLoading, dispatch]);\n\n const resetConfiguration = () => {\n setResetLoading(true);\n };\n\n return (\n }\n isLoading={resetLoading}\n onConfirm={resetConfiguration}\n onClose={() => {\n closeResetModalAndRefresh(false);\n }}\n confirmationContent={\n \n {resetLoading && }\n \n Are you sure you want to restore these configurations to default\n values?\n
\n \n Please note that this may cause your system to not be accessible\n \n
\n
\n }\n />\n );\n};\n\nexport default ResetConfigurationModal;\n","\"use strict\";\n\"use client\";\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: \"M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3v-3h18v3z\"\n}), 'CallToAction');\nexports.default = _default;","\"use strict\";\n\"use client\";\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: \"M9.4 16.6 4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0 4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z\"\n}), 'Code');\nexports.default = _default;","\"use strict\";\n\"use client\";\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: \"M8 19h3v3h2v-3h3l-4-4-4 4zm8-15h-3V1h-2v3H8l4 4 4-4zM4 9v2h16V9H4zm0 3h16v2H4z\"\n}), 'Compress');\nexports.default = _default;","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11 6c1.38 0 2.63.56 3.54 1.46L12 10h6V4l-2.05 2.05C14.68 4.78 12.93 4 11 4c-3.53 0-6.43 2.61-6.92 6H6.1c.46-2.28 2.48-4 4.9-4zm5.64 9.14c.66-.9 1.12-1.97 1.28-3.14H15.9c-.46 2.28-2.48 4-4.9 4-1.38 0-2.63-.56-3.54-1.46L10 12H4v6l2.05-2.05C7.32 17.22 9.07 18 11 18c1.55 0 2.98-.51 4.14-1.36L20 21.49 21.49 20l-4.85-4.86z\"\n}), 'FindReplace');\nexports.default = _default;","\"use strict\";\n\"use client\";\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-1.99.9-1.99 2L3 19c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 11h-4v4h-4v-4H6v-4h4V6h4v4h4v4z\"\n}), 'LocalHospital');\nexports.default = _default;","\"use strict\";\n\"use client\";\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: \"M17 12c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm1.65 7.35L16.5 17.2V14h1v2.79l1.85 1.85-.7.71zM18 3h-3.18C14.4 1.84 13.3 1 12 1s-2.4.84-2.82 2H6c-1.1 0-2 .9-2 2v15c0 1.1.9 2 2 2h6.11c-.59-.57-1.07-1.25-1.42-2H6V5h2v3h8V5h2v5.08c.71.1 1.38.31 2 .6V5c0-1.1-.9-2-2-2zm-6 2c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z\"\n}), 'PendingActions');\nexports.default = _default;","\"use strict\";\n\"use client\";\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.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z\"\n}), 'Public');\nexports.default = _default;","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'RemoveRedEye');\nexports.default = _default;","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\nexports.default = _default;","\"use strict\";\n\"use client\";\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.65 10C11.83 7.67 9.61 6 7 6c-3.31 0-6 2.69-6 6s2.69 6 6 6c2.61 0 4.83-1.67 5.65-4H17v4h4v-4h2v-4H12.65zM7 14c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z\"\n}), 'VpnKey');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["_ref","elements","name","label","_ref$tooltip","tooltip","_ref$commonPlaceholde","commonPlaceholder","onChange","_ref$withBorder","withBorder","_useState","useState","_useState2","_slicedToArray","currentElements","setCurrentElements","bottomList","createRef","useEffect","length","elementsSplit","split","push","refScroll","current","scrollIntoView","onChangeCallback","useCallback","newString","firstUpdate","useRef","elementsString","filter","element","trim","join","onChangeElement","e","persist","updatedElement","_toConsumableArray","index","get","target","parseInt","value","inputs","map","_jsx","InputBox","id","concat","toString","placeholder","overlayIcon","AddIcon","overlayAction","elementsUp","cpList","addEmptyLine","Fragment","children","_jsxs","Box","sx","display","className","InputLabel","alignItems","marginLeft","width","Tooltip","placement","HelpIcon","withBorders","overflowY","height","position","ref","StyledSwitch","withStyles","theme","root","padding","margin","switchBase","transform","color","palette","common","white","backgroundColor","boxShadow","opacity","border","thumb","track","borderRadius","transition","transitions","create","checked","focusVisible","switchContainer","justifyContent","Switch","createStyles","_objectSpread","indicatorLabelOn","fontWeight","indicatorLabel","fontSize","fieldDescription","marginTop","actionsTray","fieldBasic","_ref$label","_ref$checked","_ref$disabled","disabled","_ref$switchOnly","switchOnly","_ref$description","description","classes","indicatorLabels","_ref$extraInputProps","extraInputProps","switchComponent","React","clsx","_defineProperty","inputProps","disableRipple","disableFocusRipple","disableTouchRipple","Grid","container","item","xs","sm","md","htmlFor","inputLabel","tooltipContainer","title","textAlign","Typography","component","inputStyles","makeStyles","inputFieldStyles","InputField","props","TextField","InputProps","tooltipHelper","textBoxContainer","flexGrow","right","top","maxWidth","maxHeight","_ref$type","type","_ref$autoComplete","autoComplete","_ref$multiline","multiline","_ref$index","_ref$error","error","_ref$required","required","_ref$placeholder","min","max","overlayId","_ref$overlayIcon","_ref$overlayObject","overlayObject","_ref$noLabelMinWidth","noLabelMinWidth","_ref$pattern","pattern","_ref$autoFocus","autoFocus","_ref$className","onKeyPress","onFocus","onPaste","toggleTextInput","setToggleTextInput","inputBoxWrapperIcon","inputBoxWrapperType","VisibilityOffIcon","RemoveRedEyeIcon","errorInField","inputBoxContainer","noMinWidthLabel","fullWidth","helperText","inputRebase","IconButton","onClick","size","predefinedList","content","_ref$multiLine","multiLine","actionButton","prefinedContainer","predefinedTitle","includesActionButton","innerContentMultiline","innerContent","overlayShareOption","createSvgIcon","d","open","onCloseEndpoint","setName","_useState3","_useState4","endpoint","setEndpoint","_useState5","_useState6","authToken","setAuthToken","_useState7","_useState8","saving","setSaving","_useState9","_useState10","invalidInputs","setInvalidInput","_useState11","_useState12","initialInputs","setInitialInputs","dispatch","useAppDispatch","initializeInput","validateInput","valid","includes","icon","Webhook","CallToActionIcon","PendingActionsIcon","ModalWrapper","modalOpen","onClose","titleIcon","FormLayout","containerPadding","event","validity","marginBottom","ProgressBar","modalStyleUtils","modalButtonBar","Button","variant","marginRight","payload","key_values","key","arn_resource_id","api","configs","setConfig","then","res","setServerNeedsRestart","data","restart","setSnackBarMessage","configurationIsLoading","catch","err","setErrorSnackMessage","errorToHandler","selectedARN","deleteLoading","setDeleteLoading","resetConfig","defaultWH","message","ConfirmDialog","confirmText","isOpen","isLoading","onConfirm","ConfirmDeleteIcon","confirmationContent","_overrideValues$enabl","_overrideValues$enabl2","_overrideValues$endpo","_overrideValues$endpo2","_overrideValues$auth_","_overrideValues$auth_2","endpointInfo","endpointState","setEndpointState","endpointLocate","find","tokenLocate","enable","endpointValue","tokenValue","hasOverride","itm","env_override","overrideValues","overrideFields","formFieldStyles","formFieldRow","PredefinedList","paddingRight","overrideEnv","ConsoleIcon","style","auth_token","FormSwitchWrapper","InputBoxWrapper","setResetConfigurationOpen","WebhookSettingslist","newEndpointOpen","setNewEndpointOpen","deleteWebhookOpen","setDeleteWebhookOpen","editWebhookOpen","setEditWebhookOpen","setSelectedARN","selectedEndpoint","setSelectedEndpoint","actions","disableButtonFunction","wHook","_wHook$key_values","AddEndpointModal","DeleteWebhookEndpoint","EditWebhookEndpoint","DataTable","columns","elementKey","renderFunction","EnableFilter","overrideEnabled","flexDirection","justifyItems","fill","TierOfflineIcon","TierOnlineIcon","endpointFilter","itemActions","idField","records","entityName","customPaperHeight","selectedConfiguration","navigate","useNavigate","_useLocation$pathname","useLocation","pathname","selConfigTab","substring","lastIndexOf","valuesObj","setValueObj","configValues","setConfigValues","configSubsysList","setConfigSubsysList","resetConfigurationOpen","overrideEnvs","setOverrideEnvs","loadingConfig","useSelector","state","system","loadingConfigurations","configId","configInfo","values","keyVals","fieldsConfigurations","field","includedValue","customValue","customValueProcess","removeEmptyFields","configuration_id","onValueChange","newValue","resetConfigurationMOpen","onMouseMove","setHelpName","configuration_label","ResetConfigurationModal","configurationName","closeResetModalAndRefresh","resetOpen","paddingTop","Loader","WebhookSettings","noValidate","onSubmit","preventDefault","flexFlow","gridTemplateColumns","gap","ConfTargetGeneric","fields","defaultVals","configName","validActiveConfig","configurationElements","containerClassName","minWidth","EditConfiguration","useDispatch","_useApi","useApi","performDownload","Blob","window","atob","DateTime","now","toFormat","_useApi2","isReqLoading","invokeApi","TooltipWrapper","UploadIcon","needsRestart","serverNeedsRestart","undefined","refreshPage","setRefreshPage","fileUpload","files","fileToUpload","formData","FormData","blobFile","append","click","DownloadIcon","NON_SUB_SYS_CONFIG_ITEMS","IGNORED_CONFIG_SUB_SYS","configSubSysList","setConfigSubSysList","fetchConfigSubSysList","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","listConfig","_res$data","configurations","_res$data2","confSubSysList","reduce","acc","_ref2","_ref2$key","stop","availableConfigSubSys","_ref3","PageHeaderWrapper","HelpMenu","PageLayout","ScreenTitle","SettingsIcon","ImportConfigButton","ExportConfigButton","Tabs","currentTabOrPath","onTabClick","path","useRouteTabs","options","tabConfig","to","IAM_PAGES","SETTINGS","routes","Routes","Route","ConfigurationForm","Navigate","HelpBox","iconComponent","help","href","rel","PublicIcon","CompressIcon","CodeIcon","LocalHospitalIcon","FindReplaceIcon","VpnKeyIcon","LogsIcon","region","compression","heal","scanner","etcd","logger_webhook","audit_webhook","audit_kafka","origValue","formFields","selectSAs","setSelectedSAs","selectedSAs","targetD","overrideReturn","forEach","envItem","valueDef","defaults","defValue","storedConfig","valueHolder","setValueHolder","fieldsElements","defValList","setValueElement","valuesDup","fieldDefinition","holderItem","override","ReadBox","CSVMultiSelector","valCh","Array","isArray","CommentBox","resetLoading","setResetLoading","whiteSpace","wordWrap","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","Object","defineProperty","enumerable","_utils","createChainedFunction","validator","reason","componentNameInError","Component","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/3379.aa9dc5d4.chunk.js b/portal-ui/build/static/js/3379.aa9dc5d4.chunk.js deleted file mode 100644 index 2f5ec9c651..0000000000 --- a/portal-ui/build/static/js/3379.aa9dc5d4.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[3379,4770],{59447:function(e,n,t){"use strict";var i=t(93433),o=t(29439),r=t(72791),a=t(26181),l=t.n(a),s=t(29945),c=t(80184);n.Z=function(e){var n=e.elements,t=e.name,a=e.label,u=e.tooltip,d=void 0===u?"":u,f=e.commonPlaceholder,p=void 0===f?"":f,h=e.onChange,m=e.withBorder,v=void 0!==m&&m,x=(0,r.useState)([""]),g=(0,o.Z)(x,2),b=g[0],j=g[1],y=(0,r.createRef)();(0,r.useEffect)((function(){if(1===b.length&&""===b[0]&&n&&""!==n){var e=n.split(",");e.push(""),j(e)}}),[n,b]),(0,r.useEffect)((function(){if(b.length>1){var e=y.current;e&&e.scrollIntoView(!1)}}),[b,y]);var Z=(0,r.useCallback)((function(e){h(e)}),[h]),k=(0,r.useRef)(!0);(0,r.useEffect)((function(){if(k.current)k.current=!1;else{var e=b.filter((function(e){return""!==e.trim()})).join(",");Z(e)}}),[b]);var C=function(e){e.persist();var n=(0,i.Z)(b),t=l()(e.target,"dataset.index","0");n[parseInt(t)]=e.target.value,j(n)},_=b.map((function(e,n){return(0,c.jsx)(s.Wzg,{id:"".concat(t,"-").concat(n.toString()),label:"",name:"".concat(t,"-").concat(n.toString()),value:b[n],onChange:C,index:n,placeholder:p,overlayIcon:n===b.length-1?(0,c.jsx)(s.dtP,{}):null,overlayAction:function(){!function(e){if(""!==e[e.length-1].trim()){var n=(0,i.Z)(e);n.push(""),j(n)}}(b)}},"csv-multi-".concat(t,"-").concat(n.toString()))}));return(0,c.jsx)(r.Fragment,{children:(0,c.jsxs)(s.xuv,{sx:{display:"flex"},className:"inputItem",children:[(0,c.jsxs)(s.AZs,{sx:{alignItems:"flex-start"},children:[(0,c.jsx)("span",{children:a}),""!==d&&(0,c.jsx)(s.xuv,{sx:{marginLeft:5,display:"flex",alignItems:"center","& .min-icon":{width:13}},children:(0,c.jsx)(s.ua7,{tooltip:d,placement:"top",children:(0,c.jsx)(s.xuv,{className:d,children:(0,c.jsx)(s.byK,{})})})})]}),(0,c.jsxs)(s.xuv,{withBorders:v,sx:{width:"100%",overflowY:"auto",height:150,position:"relative"},children:[_,(0,c.jsx)("div",{ref:y})]})]})})}},81159:function(e,n,t){"use strict";var i=t(4942),o=t(1413),r=t(72791),a=t(11135),l=t(25787),s=t(9955),c=t(30829),u=t(20068),d=t(20890),f=t(61889),p=t(23814),h=t(29945),m=t(63733),v=t(80184),x=(0,l.Z)((function(e){return{root:{width:50,height:24,padding:0,margin:0},switchBase:{padding:1,"&$checked":{transform:"translateX(24px)",color:e.palette.common.white,"& + $track":{backgroundColor:"#4CCB92",boxShadow:"inset 0px 1px 4px rgba(0,0,0,0.1)",opacity:1,border:"none"}},"&$focusVisible $thumb":{color:"#4CCB92",border:"6px solid #fff"}},thumb:{width:22,height:22,backgroundColor:"#FAFAFA",border:"2px solid #FFFFFF",marginLeft:1},track:{borderRadius:12,backgroundColor:"#E2E2E2",boxShadow:"inset 0px 1px 4px rgba(0,0,0,0.1)",opacity:1,transition:e.transitions.create(["background-color","border"])},checked:{},focusVisible:{},switchContainer:{display:"flex",alignItems:"center",justifyContent:"flex-end"}}}))(s.Z);n.Z=(0,l.Z)((function(e){return(0,a.Z)((0,o.Z)((0,o.Z)({indicatorLabelOn:{fontWeight:"bold",color:"#081C42 !important"},indicatorLabel:{fontSize:12,color:"#E2E2E2",margin:"0 8px 0 10px"},fieldDescription:{marginTop:4,color:"#999999"},tooltip:{fontSize:16}},p.OR),p.YI))}))((function(e){var n=e.label,t=void 0===n?"":n,a=e.onChange,l=e.value,s=e.id,p=e.name,g=e.checked,b=void 0!==g&&g,j=e.disabled,y=void 0!==j&&j,Z=e.switchOnly,k=void 0!==Z&&Z,C=e.tooltip,_=void 0===C?"":C,w=e.description,S=void 0===w?"":w,E=e.classes,I=e.indicatorLabels,A=e.extraInputProps,L=void 0===A?{}:A,F=(0,v.jsxs)(r.Fragment,{children:[!k&&(0,v.jsx)("span",{className:(0,m.Z)(E.indicatorLabel,(0,i.Z)({},E.indicatorLabelOn,!b)),children:I&&I.length>1?I[1]:"OFF"}),(0,v.jsx)(x,{checked:b,onChange:a,color:"primary",name:p,inputProps:(0,o.Z)({"aria-label":"primary checkbox"},L),disabled:y,disableRipple:!0,disableFocusRipple:!0,disableTouchRipple:!0,value:l,id:s}),!k&&(0,v.jsx)("span",{className:(0,m.Z)(E.indicatorLabel,(0,i.Z)({},E.indicatorLabelOn,b)),children:I?I[0]:"ON"})]});return k?F:(0,v.jsx)("div",{children:(0,v.jsxs)(f.ZP,{container:!0,alignItems:"center",children:[(0,v.jsx)(f.ZP,{item:!0,xs:12,sm:8,md:8,children:""!==t&&(0,v.jsxs)(c.Z,{htmlFor:s,className:E.inputLabel,children:[(0,v.jsx)("span",{children:t}),""!==_&&(0,v.jsx)("div",{className:E.tooltipContainer,children:(0,v.jsx)(u.Z,{title:_,placement:"top-start",children:(0,v.jsx)("div",{className:E.tooltip,children:(0,v.jsx)(h.byK,{})})})})]})}),(0,v.jsx)(f.ZP,{item:!0,xs:12,sm:""!==t?4:12,md:""!==t?4:12,textAlign:"right",justifyContent:"end",className:E.switchContainer,children:F}),""!==S&&(0,v.jsx)(f.ZP,{item:!0,xs:12,textAlign:"left",children:(0,v.jsx)(d.Z,{component:"p",className:E.fieldDescription,children:S})})]})})}))},21435:function(e,n,t){"use strict";var i=t(29439),o=t(1413),r=t(72791),a=t(20817),l=t(61889),s=t(30829),c=t(20068),u=t(13400),d=t(20165),f=t(3579),p=t(11135),h=t(72455),m=t(25787),v=t(23814),x=t(29945),g=t(63733),b=t(80184),j=(0,h.Z)((function(e){return(0,p.Z)((0,o.Z)({},v.gM))}));function y(e){var n=j();return(0,b.jsx)(a.Z,(0,o.Z)({InputProps:{classes:n}},e))}n.Z=(0,m.Z)((function(e){return(0,p.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},v.YI),v.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}}}))}))((function(e){var n=e.label,t=e.onChange,a=e.value,p=e.id,h=e.name,m=e.type,v=void 0===m?"text":m,j=e.autoComplete,Z=void 0===j?"off":j,k=e.disabled,C=void 0!==k&&k,_=e.multiline,w=void 0!==_&&_,S=e.tooltip,E=void 0===S?"":S,I=e.index,A=void 0===I?0:I,L=e.error,F=void 0===L?"":L,z=e.required,T=void 0!==z&&z,N=e.placeholder,M=void 0===N?"":N,R=e.min,P=e.max,q=e.overlayId,D=e.overlayIcon,W=void 0===D?null:D,O=e.overlayObject,B=void 0===O?null:O,H=e.extraInputProps,V=void 0===H?{}:H,K=e.overlayAction,Y=e.noLabelMinWidth,$=void 0!==Y&&Y,U=e.pattern,G=void 0===U?"":U,X=e.autoFocus,Q=void 0!==X&&X,J=e.classes,ee=e.className,ne=void 0===ee?"":ee,te=e.onKeyPress,ie=e.onFocus,oe=e.onPaste,re=(0,o.Z)({"data-index":A},V),ae=(0,r.useState)(!1),le=(0,i.Z)(ae,2),se=le[0],ce=le[1];"number"===v&&R&&(re.min=R),"number"===v&&P&&(re.max=P),""!==G&&(re.pattern=G);var ue=W,de=v;return"password"===v&&null===W&&(ue=se?(0,b.jsx)(d.Z,{}):(0,b.jsx)(f.Z,{}),de=se?"text":"password"),(0,b.jsx)(r.Fragment,{children:(0,b.jsxs)(l.ZP,{container:!0,className:(0,g.Z)(""!==ne?ne:"",""!==F?J.errorInField:J.inputBoxContainer),children:[""!==n&&(0,b.jsxs)(s.Z,{htmlFor:p,className:$?J.noMinWidthLabel:J.inputLabel,children:[(0,b.jsxs)("span",{children:[n,T?"*":""]}),""!==E&&(0,b.jsx)("div",{className:J.tooltipContainer,children:(0,b.jsx)(c.Z,{title:E,placement:"top-start",children:(0,b.jsx)("div",{className:J.tooltip,children:(0,b.jsx)(x.byK,{})})})})]}),(0,b.jsxs)("div",{className:J.textBoxContainer,children:[(0,b.jsx)(y,{id:p,name:h,fullWidth:!0,value:a,autoFocus:Q,disabled:C,onChange:t,type:de,multiline:w,autoComplete:Z,inputProps:re,error:""!==F,helperText:F,placeholder:M,className:J.inputRebase,onKeyPress:te,onFocus:ie,onPaste:oe}),ue&&(0,b.jsx)("div",{className:"".concat(J.overlayAction," ").concat(""!==n?"withLabel":""),children:(0,b.jsx)(u.Z,{onClick:K?function(){K()}:function(){return ce(!se)},id:q,size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:ue})}),B&&(0,b.jsx)("div",{className:"".concat(J.overlayAction," ").concat(""!==n?"withLabel":""),children:B})]})]})})}))},64163:function(e,n,t){"use strict";var i=t(1413),o=t(72791),r=t(61889),a=t(11135),l=t(25787),s=t(23814),c=t(80184);n.Z=(0,l.Z)((function(e){return(0,a.Z)((0,i.Z)({},s.xx))}))((function(e){var n=e.classes,t=e.label,i=void 0===t?"":t,a=e.content,l=e.multiLine,s=void 0!==l&&l,u=e.actionButton;return(0,c.jsx)(o.Fragment,{children:(0,c.jsxs)(r.ZP,{className:n.prefinedContainer,children:[""!==i&&(0,c.jsx)(r.ZP,{item:!0,xs:12,className:n.predefinedTitle,children:i}),(0,c.jsxs)(r.ZP,{item:!0,xs:12,className:"".concat(n.predefinedList," ").concat(u?n.includesActionButton:""),children:[(0,c.jsx)(r.ZP,{item:!0,xs:12,className:s?n.innerContentMultiline:n.innerContent,children:a}),u&&(0,c.jsx)("div",{className:n.overlayShareOption,children:u})]})]})})}))},53379:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return U}});var i=t(74165),o=t(15861),r=t(29439),a=t(72791),l=t(29945),s=t(58493),c=t(57689),u=t(26181),d=t.n(u),f=t(78687),p=t(31776),h=t(82342),m=t(87995),v=t(81551),x=t(93433),g=t(56028),b=t(76189),j=t(80184),y=(0,b.Z)((0,j.jsx)("path",{d:"M10 15h5.88c.27-.31.67-.5 1.12-.5.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5c-.44 0-.84-.19-1.12-.5H11.9c-.46 2.28-2.48 4-4.9 4-2.76 0-5-2.24-5-5 0-2.42 1.72-4.44 4-4.9v2.07c-1.16.41-2 1.53-2 2.83 0 1.65 1.35 3 3 3s3-1.35 3-3v-1zm2.5-11c1.65 0 3 1.35 3 3h2c0-2.76-2.24-5-5-5s-5 2.24-5 5c0 1.43.6 2.71 1.55 3.62l-2.35 3.9c-.68.14-1.2.75-1.2 1.48 0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5c0-.16-.02-.31-.07-.45l3.38-5.63C10.49 9.61 9.5 8.42 9.5 7c0-1.65 1.35-3 3-3zm4.5 9c-.64 0-1.23.2-1.72.54l-3.05-5.07C11.53 8.35 11 7.74 11 7c0-.83.67-1.5 1.5-1.5S14 6.17 14 7c0 .15-.02.29-.06.43l2.19 3.65c.28-.05.57-.08.87-.08 2.76 0 5 2.24 5 5s-2.24 5-5 5c-1.85 0-3.47-1.01-4.33-2.5h2.67c.48.32 1.05.5 1.66.5 1.65 0 3-1.35 3-3s-1.35-3-3-3z"}),"Webhook"),Z=t(13901),k=t(36909),C=t(23814),_=function(e){var n=e.open,t=e.type,i=e.onCloseEndpoint,o=(0,a.useState)(""),s=(0,r.Z)(o,2),c=s[0],u=s[1],d=(0,a.useState)(""),f=(0,r.Z)(d,2),b=f[0],_=f[1],w=(0,a.useState)(""),S=(0,r.Z)(w,2),E=S[0],I=S[1],A=(0,a.useState)(!1),L=(0,r.Z)(A,2),F=L[0],z=L[1],T=(0,a.useState)(["name","endpoint"]),N=(0,r.Z)(T,2),M=N[0],R=N[1],P=(0,a.useState)(["name","endpoint","auth-token"]),q=(0,r.Z)(P,2),D=q[0],W=q[1],O=(0,v.TL)(),B=function(e){W(D.filter((function(n){return n!==e})))},H=function(e,n){M.includes(e)&&n?R(M.filter((function(n){return n!==e}))):n||M.includes(e)||R([].concat((0,x.Z)(M),[e]))},V="Add new Webhook",K=(0,j.jsx)(y,{});switch(t){case"logger_webhook":V="New Logger Webhook",K=(0,j.jsx)(Z.Z,{});break;case"audit_webhook":V="New Audit Webhook",K=(0,j.jsx)(k.Z,{})}return(0,j.jsx)(a.Fragment,{children:(0,j.jsxs)(g.Z,{modalOpen:n,title:V,onClose:i,titleIcon:K,children:[(0,j.jsxs)(l.ltY,{containerPadding:!1,withBorders:!1,children:[(0,j.jsx)(l.Wzg,{id:"name",name:"name",onChange:function(e){B("name"),u(e.target.value),H("name",e.target.validity.valid)},error:M.includes("name")&&!D.includes("name")?"Invalid Name":"",label:"Name",value:c,pattern:"^(?=.*[a-zA-Z0-9]).{1,}$",required:!0}),(0,j.jsx)(l.Wzg,{id:"endpoint",name:"endpoint",onChange:function(e){B("endpoint"),_(e.target.value),H("endpoint",e.target.validity.valid)},error:M.includes("endpoint")&&!D.includes("endpoint")?"Invalid Endpoint set":"",label:"Endpoint",value:b,pattern:"^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?(\\/[a-zA-Z0-9\\-.\\/]*)?$",required:!0}),(0,j.jsx)(l.Wzg,{id:"auth-token",name:"auth-token",onChange:function(e){B("auth-token"),I(e.target.value)},label:"Auth Token",value:E})]}),F&&(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:{marginBottom:10},children:(0,j.jsx)(l.kod,{})}),(0,j.jsxs)(l.rjZ,{item:!0,xs:12,sx:C.ID.modalButtonBar,children:[(0,j.jsx)(l.zxk,{id:"reset",type:"button",variant:"regular",disabled:F,onClick:i,label:"Cancel",sx:{marginRight:10}}),(0,j.jsx)(l.zxk,{id:"save-lifecycle",type:"submit",variant:"callAction",color:"primary",disabled:F||0!==M.length,label:"Save",onClick:function(){if(!F&&0===M.length)if(""!==c.trim())if(""!==b.trim()){z(!0);var e={key_values:[{key:"endpoint",value:b},{key:"auth_token",value:E}],arn_resource_id:c};p.h.configs.setConfig(t,e).then((function(e){z(!1),O((0,m.cN)(e.data.restart||!1)),e.data.restart||O((0,m.y1)("Configuration saved successfully")),i(),O((0,m.Ie)(!0))})).catch((function(e){z(!1),O((0,m.Ih)((0,h.g)(e.error)))}))}else R([].concat((0,x.Z)(M),["endpoint"]));else R([].concat((0,x.Z)(M),["name"]))}})]})]})})},w=t(23508),S=function(e){var n=e.modalOpen,t=e.onClose,i=e.selectedARN,o=(0,a.useState)(!1),s=(0,r.Z)(o,2),c=s[0],u=s[1],d=(0,v.TL)();(0,a.useEffect)((function(){c&&p.h.configs.resetConfig(i).then((function(){u(!1),d((0,m.cN)(!0)),d((0,m.Ie)(!0)),t()})).catch((function(e){u(!1),d((0,m.Ih)((0,h.g)(e.error)))}))}),[c,d,t,i]);var f=!i.includes(":"),x="Are you sure you want to delete the Configured Endpoint";return f&&(x="Are you sure you want to reset the Default"),(0,j.jsx)(w.Z,{title:f?"Reset Default Webhook":"Delete Webhook",confirmText:f?"Reset":"Delete",isOpen:n,isLoading:c,onConfirm:function(){u(!0)},titleIcon:(0,j.jsx)(l.NvT,{}),onClose:t,confirmationContent:(0,j.jsxs)(a.Fragment,{children:["".concat(x," "),(0,j.jsx)("strong",{children:i}),"?"]})})},E=t(1413),I=t(21435),A=t(81159),L=t(64163),F=function(e){var n,t,i,o=e.open,c=e.type,u=e.endpointInfo,d=e.onCloseEndpoint,f=(0,a.useState)(""),b=(0,r.Z)(f,2),_=b[0],w=b[1],S=(0,a.useState)(""),F=(0,r.Z)(S,2),z=F[0],T=F[1],N=(0,a.useState)(""),M=(0,r.Z)(N,2),R=M[0],P=M[1],q=(0,a.useState)("on"),D=(0,r.Z)(q,2),W=D[0],O=D[1],B=(0,a.useState)(!1),H=(0,r.Z)(B,2),V=H[0],K=H[1],Y=(0,a.useState)([]),$=(0,r.Z)(Y,2),U=$[0],G=$[1],X=(0,v.TL)();(0,a.useEffect)((function(){if(u){var e=u.key_values.find((function(e){return"endpoint"===e.key})),n=u.key_values.find((function(e){return"auth_token"===e.key})),t=u.key_values.find((function(e){return"enable"===e.key})),i=[];if(e){var o=e.value;""===o?i.push("endpoint"):T(o)}if(n){var r=n.value;""===r?i.push("auth-token"):P(r)}t&&"off"===t.value&&O(t.value),w(u.name||""),G(i)}}),[u]);var Q=!_.includes(":"),J=u.key_values.filter((function(e){return!!e.env_override})),ee=(0,s.F_)(J),ne="Edit Webhook",te=(0,j.jsx)(y,{});switch(c){case"logger_webhook":ne="Edit ".concat(Q?" the Default ":"","Logger Webhook"),te=(0,j.jsx)(Z.Z,{});break;case"audit_webhook":ne="Edit ".concat(Q?" the Default ":"","Audit Webhook"),te=(0,j.jsx)(k.Z,{})}return J.length>0&&(ne="View env variable Webhook"),(0,j.jsx)(a.Fragment,{children:(0,j.jsx)(g.Z,{modalOpen:o,title:"".concat(ne).concat(Q?"":" - ".concat(_)),onClose:d,titleIcon:te,children:J.length>0?(0,j.jsxs)(a.Fragment,{children:[(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:(0,E.Z)({},C.DF.formFieldRow),children:(0,j.jsx)(L.Z,{label:"Enabled",content:(null===(n=ee.enable)||void 0===n?void 0:n.value)||"-",actionButton:(0,j.jsx)(l.rjZ,{item:!0,sx:{display:"flex",justifyContent:"flex-end",paddingRight:"10px"},children:(0,j.jsx)(l.ua7,{tooltip:ee.enable?"This value is set from the ".concat(ee.enable.overrideEnv," environment variable"):"",placement:"left",children:(0,j.jsx)(l.zD0,{style:{width:20}})})})})}),(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:(0,E.Z)({},C.DF.formFieldRow),children:(0,j.jsx)(L.Z,{label:"Endpoint",content:(null===(t=ee.endpoint)||void 0===t?void 0:t.value)||"-",actionButton:(0,j.jsx)(l.rjZ,{item:!0,sx:{display:"flex",justifyContent:"flex-end",paddingRight:"10px"},children:(0,j.jsx)(l.ua7,{tooltip:ee.enable?"This value is set from the ".concat(ee.endpoint.overrideEnv," environment variable"):"",placement:"left",children:(0,j.jsx)(l.zD0,{style:{width:20}})})})})}),(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:(0,E.Z)({},C.DF.formFieldRow),children:(0,j.jsx)(L.Z,{label:"Auth Token",content:(null===(i=ee.auth_token)||void 0===i?void 0:i.value)||"-",actionButton:(0,j.jsx)(l.rjZ,{item:!0,sx:{display:"flex",justifyContent:"flex-end",paddingRight:"10px"},children:(0,j.jsx)(l.ua7,{tooltip:ee.enable?"This value is set from the ".concat(ee.auth_token.overrideEnv," environment variable"):"",placement:"left",children:(0,j.jsx)(l.zD0,{style:{width:20}})})})})})]}):(0,j.jsxs)(a.Fragment,{children:[(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:(0,E.Z)({},C.DF.formFieldRow),children:(0,j.jsx)(A.Z,{onChange:function(e){var n=e.target.checked?"on":"off";O(n)},id:"endpoint_enabled",name:"endpoint_enabled",label:"Enabled",value:"switch_on",checked:"on"===W})}),(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:(0,E.Z)({},C.DF.formFieldRow),children:(0,j.jsx)(I.Z,{id:"endpoint",name:"endpoint",onChange:function(e){T(e.target.value),function(e,n){U.includes(e)&&n?G(U.filter((function(n){return n!==e}))):n||U.includes(e)||G([].concat((0,x.Z)(U),[e]))}("endpoint",e.target.validity.valid)},error:U.includes("endpoint")?"Invalid Endpoint set":"",label:"Endpoint",value:z,pattern:"^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?(\\/[a-zA-Z0-9\\-.\\/]*)?$",required:!0})}),(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:(0,E.Z)({},C.DF.formFieldRow),children:(0,j.jsx)(I.Z,{id:"auth-token",name:"auth-token",onChange:function(e){P(e.target.value)},label:"Auth Token",value:R})}),V&&(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:{marginBottom:10},children:(0,j.jsx)(l.kod,{})}),(0,j.jsxs)(l.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end"},children:[(0,j.jsx)(l.zxk,{id:"reset",type:"button",variant:"regular",disabled:V,onClick:d,label:"Cancel",sx:{marginRight:10}}),(0,j.jsx)(l.zxk,{id:"save-lifecycle",type:"submit",variant:"callAction",color:"primary",disabled:V||0!==U.length,label:"Update",onClick:function(){if(!V&&0===U.length)if(z&&""!==z.trim()){K(!0);var e={key_values:[{key:"endpoint",value:z},{key:"auth_token",value:R},{key:"enable",value:W}]};p.h.configs.setConfig(_,e).then((function(e){K(!1),X((0,m.cN)(e.data.restart||!1)),e.data.restart||X((0,m.y1)("Configuration saved successfully")),d(),X((0,m.Ie)(!0))})).catch((function(e){K(!1),X((0,m.Ih)((0,h.g)(e.error)))}))}else G([].concat((0,x.Z)(U),["endpoint"]))}})]})]})})})},z=function(e){e.setResetConfigurationOpen;var n=e.WebhookSettingslist,t=e.type,i=(0,a.useState)(!1),o=(0,r.Z)(i,2),s=o[0],c=o[1],u=(0,a.useState)(!1),d=(0,r.Z)(u,2),f=d[0],p=d[1],h=(0,a.useState)(!1),m=(0,r.Z)(h,2),v=m[0],x=m[1],g=(0,a.useState)(""),b=(0,r.Z)(g,2),y=b[0],Z=b[1],k=(0,a.useState)(null),C=(0,r.Z)(k,2),w=C[0],E=C[1],I=[{type:"view",onClick:function(e){e.name&&(x(!0),E(e))}},{type:"delete",onClick:function(e){e.name&&(p(!0),Z(e.name))},disableButtonFunction:function(e){var t=n.find((function(n){return n.name===e}));if(t){var i,o=null===(i=t.key_values)||void 0===i?void 0:i.filter((function(e){return!!e.env_override}));return!!(o&&o.length>0)}return!1}}];return(0,j.jsxs)(l.rjZ,{container:!0,children:[s&&(0,j.jsx)(_,{open:s,type:t,onCloseEndpoint:function(){c(!1)}}),f&&(0,j.jsx)(S,{modalOpen:f,onClose:function(){p(!1),Z("")},selectedARN:y,type:t}),v&&w&&(0,j.jsx)(F,{open:v,type:t,endpointInfo:w,onCloseEndpoint:function(){x(!1),E(null)}}),(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end"},children:(0,j.jsx)(l.zxk,{id:"newWebhook",variant:"callAction",onClick:function(){c(!0)},children:"New Endpoint"})}),(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:{padding:"0 10px 10px"},children:(0,j.jsxs)(a.Fragment,{children:[(0,j.jsx)("h3",{children:"Currently Configured Endpoints"}),(0,j.jsx)(l.wQF,{columns:[{label:"Status",elementKey:"key_values",renderFunction:function(e){var n=e.find((function(e){return"enable"===e.key}));if(null!==n&&void 0!==n&&n.env_override){var t=null!==n&&void 0!==n&&n.env_override.value&&"on"!==(null===n||void 0===n?void 0:n.env_override.value)&&null!==n&&void 0!==n&&n.env_override.value?"Disabled":"Enabled";return(0,j.jsxs)(l.rjZ,{container:!0,sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyItems:"start",fontSize:"8px"},children:[(0,j.jsx)(l.zD0,{style:{fill:"#052F51",width:"14px"}}),t?"Enabled":"Disabled"]})}return n&&"on"!==n.value&&n.value?(0,j.jsxs)(l.rjZ,{container:!0,sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyItems:"start",fontSize:"8px"},children:[(0,j.jsx)(l.qwj,{style:{fill:"#C83B51",width:14,height:14}}),"Disabled"]}):(0,j.jsxs)(l.rjZ,{container:!0,sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyItems:"start",fontSize:"8px"},children:[(0,j.jsx)(l.Yp9,{style:{fill:"#4CCB92",width:14,height:14}}),"Enabled"]})},width:50},{label:"Name",elementKey:"name"},{label:"Endpoint",elementKey:"key_values",renderFunction:function(e){var n=e.find((function(e){return"endpoint"===e.key}));return n?n.env_override?n.env_override.value:n.value:""}}],itemActions:I,idField:"name",isLoading:!1,records:n,entityName:"endpoints",customPaperHeight:"calc(100vh - 750px)"})]})})]})},T=t(94770),N=t(90767),M=function(e){var n=e.selectedConfiguration,t=e.className,i=void 0===t?"":t,o=(0,v.TL)(),u=(0,c.s0)(),x=(0,c.TH)().pathname,g=void 0===x?"":x,b=g.substring(g.lastIndexOf("/")+1);b="settings"===b?"region":b;var y=(0,a.useState)([]),Z=(0,r.Z)(y,2),k=Z[0],C=Z[1],_=(0,a.useState)(!1),w=(0,r.Z)(_,2),S=w[0],E=w[1],I=(0,a.useState)([]),A=(0,r.Z)(I,2),L=A[0],F=A[1],M=(0,a.useState)([]),R=(0,r.Z)(M,2),P=R[0],q=R[1],D=(0,a.useState)(!1),W=(0,r.Z)(D,2),O=W[0],B=W[1],H=(0,a.useState)({}),V=(0,r.Z)(H,2),K=V[0],Y=V[1],$=(0,f.v9)((function(e){return e.system.loadingConfigurations}));(0,a.useEffect)((function(){o((0,m.Ie)(!0))}),[b,o]),(0,a.useEffect)((function(){if($){var e=d()(n,"configuration_id",!1);if(e)return void p.h.configs.configInfo(e).then((function(n){q(n.data);var t=d()(n.data[0],"key_values",[]),i=s.DP[e].map((function(e){var n=t.find((function(n){return n.key===e.name})),i=(null===n||void 0===n?void 0:n.value)||"";return{key:e.name,value:e.customValueProcess?e.customValueProcess(i):i}}));F(i),Y((0,s.F_)(i)),o((0,m.Ie)(!1))})).catch((function(e){o((0,m.Ie)(!1)),o((0,m.Ih)((0,h.g)(e.error)))}));o((0,m.Ie)(!1))}}),[$,n,o]),(0,a.useEffect)((function(){if(S){var e={key_values:(0,s.DD)(k)};p.h.configs.setConfig(n.configuration_id,e).then((function(e){E(!1),o((0,m.cN)(e.data.restart||!1)),o((0,m.Ie)(!0)),e.data.restart||o((0,m.y1)("Configuration saved successfully"))})).catch((function(e){E(!1),o((0,m.Ih)((0,h.g)(e.error)))}))}}),[S,o,n,k,u]);var U=(0,a.useCallback)((function(e){C(e)}),[C]),G=function(){B(!0)};return(0,j.jsx)(a.Fragment,{children:(0,j.jsxs)("div",{onMouseMove:function(){o((0,m.Sc)("settings_".concat(n.configuration_label)))},children:[O&&(0,j.jsx)(N.Z,{configurationName:n.configuration_id,closeResetModalAndRefresh:function(e){B(!1),o((0,m.cN)(e)),e&&o((0,m.Ie)(!0))},resetOpen:O}),$?(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:{textAlign:"center",paddingTop:"15px"},children:(0,j.jsx)(l.aNw,{})}):(0,j.jsx)(l.xuv,{sx:{padding:"15px",height:"100%"},children:"logger_webhook"===n.configuration_id||"audit_webhook"===n.configuration_id?(0,j.jsx)(z,{WebhookSettingslist:P,setResetConfigurationOpen:G,type:n.configuration_id}):(0,j.jsx)(a.Fragment,{children:(0,j.jsxs)("form",{noValidate:!0,onSubmit:function(e){e.preventDefault(),E(!0)},className:i,style:{height:"100%",display:"flex",flexFlow:"column"},children:[(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:{display:"grid",gridTemplateColumns:"1fr",gap:"10px"},children:(0,j.jsx)(T.default,{fields:s.DP[n.configuration_id],onChange:U,defaultVals:L,overrideEnv:K})}),(0,j.jsxs)(l.rjZ,{item:!0,xs:12,sx:{paddingTop:"15px ",textAlign:"right",maxHeight:"60px",display:"flex",alignItems:"center",justifyContent:"flex-end"},children:[(0,j.jsx)(l.zxk,{type:"button",id:"restore-defaults",variant:"secondary",onClick:G,label:"Restore Defaults"}),"\xa0 \xa0",(0,j.jsx)(l.zxk,{id:"save",type:"submit",variant:"callAction",disabled:S,label:"Save"})]})]})})})]})})},R=function(){var e=(0,c.TH)().pathname,n=void 0===e?"":e,t=n.substring(n.lastIndexOf("/")+1),i=s.bx.find((function(e){return e.configuration_id===t})),o="".concat(t);return(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:{height:"100%","& .identity_ldap, .api":{"& label":{minWidth:220,marginRight:0}}},children:i&&(0,j.jsx)(M,{className:"".concat(o),selectedConfiguration:i})})},P=t(56087),q=t(47974),D=t(9505),W=t(45248),O=t(99779),B=t(27454),H=function(){var e=(0,f.I0)(),n=(0,D.Z)((function(e){(0,W.zZ)(new Blob([window.atob(e.value)]),"minio-server-config-".concat(O.ou.now().toFormat("LL-dd-yyyy-HH-mm-ss"),".conf"))}),(function(n){e((0,m.Ih)(n))})),t=(0,r.Z)(n,2),i=t[0],o=t[1];return(0,j.jsx)(B.Z,{tooltip:"Warning! The resulting file will contain server configuration information in plain text",children:(0,j.jsx)(l.zxk,{id:"export-config",onClick:function(){o("GET","api/v1/configs/export")},icon:(0,j.jsx)(l.rG2,{}),label:"Export",variant:"regular",disabled:i})})},V=function(){var e=(0,c.s0)(),n=(0,f.I0)(),t=(0,f.v9)((function(e){return e.system.serverNeedsRestart})),i=(0,a.useState)(void 0),o=(0,r.Z)(i,2),s=o[0],u=o[1],d=(0,a.useRef)(null),p=(0,D.Z)((function(e){n((0,m.cN)(!0)),u(!0)}),(function(e){n((0,m.Ih)(e))})),h=(0,r.Z)(p,2),v=h[0],x=h[1];(0,a.useEffect)((function(){!t&&s&&e(0)}),[t,s,e]);return(0,j.jsxs)(a.Fragment,{children:[(0,j.jsx)("input",{type:"file",onChange:function(e){if(null!==e&&void 0!==e&&null!==e.target.files&&void 0!==e.target.files){e.preventDefault();var n=(0,r.Z)(e.target.files,1)[0],t=new FormData,i=new Blob([n],{type:n.type});t.append("file",i,n.name),x("POST","api/v1/configs/import",t),e.target.value=""}},style:{display:"none"},ref:d}),(0,j.jsx)(B.Z,{tooltip:"The file must be valid and should have valid config values",children:(0,j.jsx)(l.zxk,{id:"import-config",onClick:function(){d&&d.current&&d.current.click()},icon:(0,j.jsx)(l._8t,{}),label:"Import",variant:"regular",disabled:v})})]})},K=t(99670),Y=["region"],$=["cache"],U=function(){var e=(0,c.TH)().pathname,n=void 0===e?"":e,t=(0,v.TL)(),u=(0,c.s0)(),d=(0,a.useState)([]),f=(0,r.Z)(d,2),x=f[0],g=f[1],b=(0,a.useCallback)((0,o.Z)((0,i.Z)().mark((function e(){return(0,i.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:p.h.configs.listConfig().then((function(e){var n;if(e&&null!==e&&void 0!==e&&e.data&&null!==e&&void 0!==e&&null!==(n=e.data)&&void 0!==n&&n.configurations){var t,i=((null===e||void 0===e||null===(t=e.data)||void 0===t?void 0:t.configurations)||[]).reduce((function(e,n){var t=n.key,i=void 0===t?"":t;return $.includes(i)||e.push(i),e}),[]);g(i)}})).catch((function(e){t((0,m.Ih)((0,h.g)(e)))}));case 1:case"end":return e.stop()}}),e)}))),[t]);(0,a.useEffect)((function(){b(),t((0,m.Sc)("settings_Region"))}),[]);var y=s.bx.filter((function(e){var n=e.configuration_id;return Y.includes(n)||x.includes(n)||!x.length}));return(0,j.jsxs)(a.Fragment,{children:[(0,j.jsx)(q.Z,{label:"Settings",actions:(0,j.jsx)(K.Z,{})}),(0,j.jsxs)(l.Xgh,{children:[(0,j.jsxs)(l.rjZ,{item:!0,xs:12,id:"settings-container",children:[(0,j.jsx)(l.UHn,{icon:(0,j.jsx)(l.ewm,{}),title:"MinIO Configuration:",actions:(0,j.jsxs)(l.xuv,{sx:{display:"flex",gap:10},children:[(0,j.jsx)(V,{}),(0,j.jsx)(H,{})]}),sx:{marginBottom:15}}),(0,j.jsx)(l.mQc,{currentTabOrPath:n,onTabClick:function(e){u(e)},useRouteTabs:!0,options:y.map((function(e){var n,t=e.configuration_id,i=e.configuration_label,o=e.icon;return{tabConfig:{id:"settings-tab-".concat(i),label:i,value:t,icon:o,to:(n=t,"".concat(P.gA.SETTINGS,"/").concat(n))}}})),routes:(0,j.jsxs)(c.Z5,{children:[y.map((function(e){return(0,j.jsx)(c.AW,{path:"".concat(e.configuration_id),element:(0,j.jsx)(R,{})},"configItem-".concat(e.configuration_label))})),(0,j.jsx)(c.AW,{path:"/",element:(0,j.jsx)(c.Fg,{to:"".concat(P.gA.SETTINGS,"/region")})})]})})]}),(0,j.jsx)(l.rjZ,{item:!0,xs:12,sx:{paddingTop:"15px"},children:(0,j.jsx)(l.KfX,{title:"Learn more about Configurations",iconComponent:(0,j.jsx)(l.ewm,{}),help:(0,j.jsxs)(a.Fragment,{children:["MinIO supports a variety of configurations ranging from encryption, compression, region, notifications, etc.",(0,j.jsx)("br",{}),(0,j.jsx)("br",{}),"You can learn more at our"," ",(0,j.jsx)("a",{href:"https://min.io/docs/minio/linux/reference/minio-mc-admin/mc-admin-config.html?ref=con#id4",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})})]})]})}},58493:function(e,n,t){"use strict";t.d(n,{DD:function(){return g},DP:function(){return x},F_:function(){return j},_0:function(){return b},bx:function(){return v}});var i=t(4942),o=t(1413),r=t(93433),a=(t(72791),t(87569)),l=t(61809),s=t(31292),c=t(98095),u=t(67055),d=t(21141),f=t(36909),p=t(13901),h=t(29945),m=t(80184),v=[{icon:(0,m.jsx)(a.Z,{}),configuration_id:"region",configuration_label:"Region"},{icon:(0,m.jsx)(l.Z,{}),configuration_id:"compression",configuration_label:"Compression"},{icon:(0,m.jsx)(s.Z,{}),configuration_id:"api",configuration_label:"API"},{icon:(0,m.jsx)(c.Z,{}),configuration_id:"heal",configuration_label:"Heal"},{icon:(0,m.jsx)(u.Z,{}),configuration_id:"scanner",configuration_label:"Scanner"},{icon:(0,m.jsx)(d.Z,{}),configuration_id:"etcd",configuration_label:"Etcd"},{icon:(0,m.jsx)(p.Z,{}),configuration_id:"logger_webhook",configuration_label:"Logger Webhook"},{icon:(0,m.jsx)(f.Z,{}),configuration_id:"audit_webhook",configuration_label:"Audit Webhook"},{icon:(0,m.jsx)(h.I$E,{className:"MuiSvgIcon-root MuiSvgIcon-fontSizeMedium MuiTab-iconWrapper css-i4bv87-MuiSvgIcon-root",style:{width:24,height:24}}),configuration_id:"audit_kafka",configuration_label:"Audit Kafka"}],x={region:[{name:"name",required:!0,label:"Server Location",tooltip:'Name of the location of the server e.g. "us-west-rack2"',type:"string",placeholder:"e.g. us-west-rack-2"},{name:"comment",required:!1,label:"Comment",tooltip:"You can add a comment to this setting",type:"comment",placeholder:"Enter custom notes if any"}],compression:[{name:"extensions",required:!1,label:"Extensions",tooltip:'Extensions to compress e.g. ".txt", ".log" or ".csv" - you can write one per field',type:"csv",placeholder:"Enter an Extension",withBorder:!0},{name:"mime_types",required:!1,label:"Mime Types",tooltip:'Mime types e.g. "text/*", "application/json" or "application/xml" - you can write one per field',type:"csv",placeholder:"Enter a Mime Type",withBorder:!0}],api:[{name:"requests_max",required:!1,label:"Requests Max",tooltip:"Maximum number of concurrent requests, e.g. '1600'",type:"number",placeholder:"Enter Requests Max"},{name:"cors_allow_origin",required:!1,label:"Cors Allow Origin",tooltip:"List of origins allowed for CORS requests",type:"csv",placeholder:"Enter allowed origin e.g. https://example.com"},{name:"replication_workers",required:!1,label:"Replication Workers",tooltip:"Number of replication workers, defaults to 100",type:"number",placeholder:"Enter Replication Workers"},{name:"replication_failed_workers",required:!1,label:"Replication Failed Workers",tooltip:"Number of replication workers for recently failed replicas, defaults to 4",type:"number",placeholder:"Enter Replication Failed Workers"}],heal:[{name:"bitrotscan",required:!1,label:"Bitrot Scan",tooltip:"Perform bitrot scan on disks when checking objects during scanner",type:"on|off"},{name:"max_sleep",required:!1,label:"Max Sleep",tooltip:"Maximum sleep duration between objects to slow down heal operation, e.g. 2s",type:"duration",placeholder:"Enter Max Sleep Duration"},{name:"max_io",required:!1,label:"Max IO",tooltip:"Maximum IO requests allowed between objects to slow down heal operation, e.g. 3",type:"number",placeholder:"Enter Max IO"}],scanner:[{name:"delay",required:!1,label:"Delay Multiplier",tooltip:"Scanner delay multiplier, defaults to '10.0'",type:"number",placeholder:"Enter Delay"},{name:"max_wait",required:!1,label:"Max Wait",tooltip:"Maximum wait time between operations, defaults to '15s'",type:"duration",placeholder:"Enter Max Wait"},{name:"cycle",required:!1,label:"Cycle",tooltip:"Time duration between scanner cycles, defaults to '1m'",type:"duration",placeholder:"Enter Cycle"}],etcd:[{name:"endpoints",required:!0,label:"Endpoints",tooltip:'List of etcd endpoints e.g. "http://localhost:2379" - you can write one per field',type:"csv",placeholder:"Enter Endpoint"},{name:"path_prefix",required:!1,label:"Path Prefix",tooltip:'Namespace prefix to isolate tenants e.g. "customer1/"',type:"string",placeholder:"Enter Path Prefix"},{name:"coredns_path",required:!1,label:"Coredns Path",tooltip:'Shared bucket DNS records, default is "/skydns"',type:"string",placeholder:"Enter Coredns Path"},{name:"client_cert",required:!1,label:"Client Cert",tooltip:"Client cert for mTLS authentication",type:"string",placeholder:"Enter Client Cert"},{name:"client_cert_key",required:!1,label:"Client Cert Key",tooltip:"Client cert key for mTLS authentication",type:"string",placeholder:"Enter Client Cert Key"},{name:"comment",required:!1,label:"Comment",tooltip:"You can add a comment to this setting",type:"comment",multiline:!0,placeholder:"Enter custom notes if any"}],logger_webhook:[{name:"endpoint",required:!0,label:"Endpoint",type:"string",placeholder:"Enter Endpoint"},{name:"auth_token",required:!0,label:"Auth Token",type:"string",placeholder:"Enter Auth Token"}],audit_webhook:[{name:"endpoint",required:!0,label:"Endpoint",type:"string",placeholder:"Enter Endpoint"},{name:"auth_token",required:!0,label:"Auth Token",type:"string",placeholder:"Enter Auth Token"}],audit_kafka:[{name:"enable",required:!1,label:"Enable",tooltip:"Enable audit_kafka target",type:"on|off",customValueProcess:function(e){return""===e||"on"===e?"on":"off"}},{name:"brokers",required:!0,label:"Brokers",type:"csv",placeholder:"Enter Kafka Broker"},{name:"topic",required:!1,label:"Topic",type:"string",placeholder:"Enter Kafka Topic",tooltip:"Kafka topic used for bucket notifications"},{name:"sasl",required:!1,label:"Use SASL",tooltip:"Enable SASL (Simple Authentication and Security Layer) authentication",type:"on|off"},{name:"sasl_username",required:!1,label:"SASL Username",type:"string",placeholder:"Enter SASL Username",tooltip:"Username for SASL/PLAIN or SASL/SCRAM authentication"},{name:"sasl_password",required:!1,label:"SASL Password",type:"password",placeholder:"Enter SASL Password",tooltip:"Password for SASL/PLAIN or SASL/SCRAM authentication"},{name:"sasl_mechanism",required:!1,label:"SASL Mechanism",type:"string",placeholder:"Enter SASL Mechanism",tooltip:"SASL authentication mechanism"},{name:"tls",required:!1,label:"Use TLS",tooltip:"Enable TLS (Transport Layer Security)",type:"on|off"},{name:"tls_skip_verify",required:!1,label:"Skip TLS Verification",tooltip:"Trust server TLS without verification",type:"on|off"},{name:"client_tls_cert",required:!1,label:"Client Cert",tooltip:"Client cert for mTLS authentication",type:"string",placeholder:"Enter Client Cert"},{name:"client_tls_key",required:!1,label:"Client Cert Key",tooltip:"Client cert key for mTLS authentication",type:"string",placeholder:"Enter Client Cert Key"},{name:"tls_client_auth",required:!1,label:"TLS Client Auth",tooltip:"ClientAuth determines the Kafka server's policy for TLS client authorization",type:"string"},{name:"version",required:!1,label:"Version",tooltip:"Specify the version of the Kafka cluster",type:"string"}]},g=function(e){return e.filter((function(e){return""!==e.value}))},b=function(e,n,t){var i=e.target,o=i.value,a=i.checked,l=(0,r.Z)(t);return a?l.push(o):l=l.filter((function(e){return e!==o})),n(l),l},j=function(e){var n={};return e.forEach((function(e){if(e.env_override){var t={value:e.env_override.value,overrideEnv:e.env_override.name};n=(0,o.Z)((0,o.Z)({},n),{},(0,i.Z)({},e.key,t))}})),n}},94770:function(e,n,t){"use strict";t.r(n),t.d(n,{valueDef:function(){return c}});var i=t(93433),o=t(29439),r=t(72791),a=t(29945),l=t(59447),s=t(80184),c=function(e,n,t){var i="on|off"===n?"off":"";if(t.length>0){var o=t.find((function(n){return n.key===e}));o&&(i=o.value||"")}return i};n.default=function(e){var n=e.onChange,t=e.fields,u=e.defaultVals,d=e.overrideEnv,f=(0,r.useState)([]),p=(0,o.Z)(f,2),h=p[0],m=p[1],v=t||[],x=u||[];(0,r.useEffect)((function(){var e=t.map((function(e){return{key:e.name,value:c(e.name,e.type,x)}}));m(e)}),[t,u]),(0,r.useEffect)((function(){n(h)}),[h]);var g=function(e,n,t){var o=(0,i.Z)(h);n=n.trim(),o[t]={key:e,value:n},m(o)},b=function(e,n){var t=h[n];if(t){var i=null===d||void 0===d?void 0:d["".concat(t.key)];if(i)return(0,s.jsx)(a.bSr,{label:e.label,actionButton:(0,s.jsx)(a.rjZ,{item:!0,sx:{display:"flex",justifyContent:"flex-end",paddingRight:"10px"},children:(0,s.jsx)(a.ua7,{tooltip:"This value is set from the ".concat(i.overrideEnv," environment variable"),placement:"left",children:(0,s.jsx)(a.zD0,{style:{width:20}})})}),sx:{width:"100%"},children:i.value})}switch(e.type){case"on|off":var o=t?t.value:"off";return(0,s.jsx)(a.rsf,{onChange:function(t){var i=t.target.checked?"on":"off";g(e.name,i,n)},id:e.name,name:e.name,label:e.label,value:"switch_on",tooltip:e.tooltip,checked:"on"===o});case"csv":return(0,s.jsx)(l.Z,{elements:t?t.value:"",label:e.label,name:e.name,onChange:function(t){var i="";i=Array.isArray(t)?t.join(","):t,g(e.name,i,n)},tooltip:e.tooltip,commonPlaceholder:e.placeholder,withBorder:!0});case"comment":return(0,s.jsx)(a.q5m,{id:e.name,name:e.name,label:e.label,tooltip:e.tooltip,value:t?t.value:"",onChange:function(t){return g(e.name,t.target.value,n)},placeholder:e.placeholder});default:return(0,s.jsx)(a.Wzg,{id:e.name,name:e.name,label:e.label,tooltip:e.tooltip,value:t?t.value:"",onChange:function(t){return g(e.name,t.target.value,n)},placeholder:e.placeholder})}};return(0,s.jsx)(a.ltY,{withBorders:!1,containerPadding:!1,children:v.map((function(e,n){return(0,s.jsx)(r.Fragment,{children:b(e,n)},e.name)}))})}},90767:function(e,n,t){"use strict";var i=t(29439),o=t(72791),r=t(31776),a=t(82342),l=t(23508),s=t(29945),c=t(87995),u=t(81551),d=t(80184);n.Z=function(e){var n=e.configurationName,t=e.closeResetModalAndRefresh,f=e.resetOpen,p=(0,u.TL)(),h=(0,o.useState)(!1),m=(0,i.Z)(h,2),v=m[0],x=m[1];(0,o.useEffect)((function(){v&&r.h.configs.resetConfig(n).then((function(){x(!1),t(!0)})).catch((function(e){x(!1),p((0,c.Ih)((0,a.g)(e.error)))}))}),[t,n,v,p]);return(0,d.jsx)(l.Z,{title:"Restore Defaults",confirmText:"Yes, Reset Configuration",isOpen:f,titleIcon:(0,d.jsx)(s.NvT,{}),isLoading:v,onConfirm:function(){x(!0)},onClose:function(){t(!1)},confirmationContent:(0,d.jsxs)(o.Fragment,{children:[v&&(0,d.jsx)(s.kod,{}),(0,d.jsxs)(o.Fragment,{children:["Are you sure you want to restore these configurations to default values?",(0,d.jsx)("br",{}),(0,d.jsx)("b",{style:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"},children:"Please note that this may cause your system to not be accessible"})]})]})})}},13901:function(e,n,t){"use strict";var i=t(64836);n.Z=void 0;var o=i(t(45649)),r=t(80184),a=(0,o.default)((0,r.jsx)("path",{d:"M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3v-3h18v3z"}),"CallToAction");n.Z=a},31292:function(e,n,t){"use strict";var i=t(64836);n.Z=void 0;var o=i(t(45649)),r=t(80184),a=(0,o.default)((0,r.jsx)("path",{d:"M9.4 16.6 4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0 4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z"}),"Code");n.Z=a},61809:function(e,n,t){"use strict";var i=t(64836);n.Z=void 0;var o=i(t(45649)),r=t(80184),a=(0,o.default)((0,r.jsx)("path",{d:"M8 19h3v3h2v-3h3l-4-4-4 4zm8-15h-3V1h-2v3H8l4 4 4-4zM4 9v2h16V9H4zm0 3h16v2H4z"}),"Compress");n.Z=a},67055:function(e,n,t){"use strict";var i=t(64836);n.Z=void 0;var o=i(t(45649)),r=t(80184),a=(0,o.default)((0,r.jsx)("path",{d:"M11 6c1.38 0 2.63.56 3.54 1.46L12 10h6V4l-2.05 2.05C14.68 4.78 12.93 4 11 4c-3.53 0-6.43 2.61-6.92 6H6.1c.46-2.28 2.48-4 4.9-4zm5.64 9.14c.66-.9 1.12-1.97 1.28-3.14H15.9c-.46 2.28-2.48 4-4.9 4-1.38 0-2.63-.56-3.54-1.46L10 12H4v6l2.05-2.05C7.32 17.22 9.07 18 11 18c1.55 0 2.98-.51 4.14-1.36L20 21.49 21.49 20l-4.85-4.86z"}),"FindReplace");n.Z=a},98095:function(e,n,t){"use strict";var i=t(64836);n.Z=void 0;var o=i(t(45649)),r=t(80184),a=(0,o.default)((0,r.jsx)("path",{d:"M19 3H5c-1.1 0-1.99.9-1.99 2L3 19c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 11h-4v4h-4v-4H6v-4h4V6h4v4h4v4z"}),"LocalHospital");n.Z=a},36909:function(e,n,t){"use strict";var i=t(64836);n.Z=void 0;var o=i(t(45649)),r=t(80184),a=(0,o.default)((0,r.jsx)("path",{d:"M17 12c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm1.65 7.35L16.5 17.2V14h1v2.79l1.85 1.85-.7.71zM18 3h-3.18C14.4 1.84 13.3 1 12 1s-2.4.84-2.82 2H6c-1.1 0-2 .9-2 2v15c0 1.1.9 2 2 2h6.11c-.59-.57-1.07-1.25-1.42-2H6V5h2v3h8V5h2v5.08c.71.1 1.38.31 2 .6V5c0-1.1-.9-2-2-2zm-6 2c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"}),"PendingActions");n.Z=a},87569:function(e,n,t){"use strict";var i=t(64836);n.Z=void 0;var o=i(t(45649)),r=t(80184),a=(0,o.default)((0,r.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"}),"Public");n.Z=a},3579:function(e,n,t){"use strict";var i=t(64836);n.Z=void 0;var o=i(t(45649)),r=t(80184),a=(0,o.default)((0,r.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"}),"RemoveRedEye");n.Z=a},20165:function(e,n,t){"use strict";var i=t(64836);n.Z=void 0;var o=i(t(45649)),r=t(80184),a=(0,o.default)((0,r.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}),"VisibilityOff");n.Z=a},21141:function(e,n,t){"use strict";var i=t(64836);n.Z=void 0;var o=i(t(45649)),r=t(80184),a=(0,o.default)((0,r.jsx)("path",{d:"M12.65 10C11.83 7.67 9.61 6 7 6c-3.31 0-6 2.69-6 6s2.69 6 6 6c2.61 0 4.83-1.67 5.65-4H17v4h4v-4h2v-4H12.65zM7 14c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z"}),"VpnKey");n.Z=a},45649:function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return i.createSvgIcon}});var i=t(28610)},31260:function(e,n,t){"use strict";var i=t(78949);n.Z=i.Z},28610:function(e,n,t){"use strict";t.r(n),t.d(n,{capitalize:function(){return o.Z},createChainedFunction:function(){return r.Z},createSvgIcon:function(){return a.Z},debounce:function(){return l.Z},deprecatedPropType:function(){return s},isMuiElement:function(){return c.Z},ownerDocument:function(){return u.Z},ownerWindow:function(){return d.Z},requirePropFactory:function(){return f},setRef:function(){return p},unstable_ClassNameGenerator:function(){return y},unstable_useEnhancedEffect:function(){return h.Z},unstable_useId:function(){return m.Z},unsupportedProp:function(){return v},useControlled:function(){return x.Z},useEventCallback:function(){return g.Z},useForkRef:function(){return b.Z},useIsFocusVisible:function(){return j.Z}});var i=t(55902),o=t(14036),r=t(31260),a=t(76189),l=t(83199);var s=function(e,n){return function(){return null}},c=t(19103),u=t(98301),d=t(17602);t(87462);var f=function(e,n){return function(){return null}},p=t(62971).Z,h=t(40162),m=t(67384);var v=function(e,n,t,i,o){return null},x=t(98278),g=t(89683),b=t(42071),j=t(23031),y={configure:function(e){i.Z.configure(e)}}},64836:function(e){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); -//# sourceMappingURL=3379.aa9dc5d4.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/3379.aa9dc5d4.chunk.js.map b/portal-ui/build/static/js/3379.aa9dc5d4.chunk.js.map deleted file mode 100644 index e47be53ed5..0000000000 --- a/portal-ui/build/static/js/3379.aa9dc5d4.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/3379.aa9dc5d4.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/CSVMultiSelector/CSVMultiSelector.tsx","screens/Console/Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper.tsx","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/FormComponents/PredefinedList/PredefinedList.tsx","../node_modules/@mui/icons-material/esm/Webhook.js","screens/Console/EventDestinations/WebhookSettings/AddEndpointModal.tsx","screens/Console/EventDestinations/WebhookSettings/DeleteWebhookEndpoint.tsx","screens/Console/EventDestinations/WebhookSettings/EditWebhookEndpoint.tsx","screens/Console/EventDestinations/WebhookSettings/WebhookSettings.tsx","screens/Console/EventDestinations/CustomForms/EditConfiguration.tsx","screens/Console/Configurations/ConfigurationPanels/ConfigurationForm.tsx","screens/Console/Configurations/ConfigurationPanels/ExportConfigButton.tsx","screens/Console/Configurations/ConfigurationPanels/ImportConfigButton.tsx","screens/Console/Configurations/ConfigurationPanels/ConfigurationOptions.tsx","screens/Console/Configurations/utils.tsx","screens/Console/EventDestinations/ConfTargetGeneric.tsx","screens/Console/EventDestinations/CustomForms/ResetConfigurationModal.tsx","../node_modules/@mui/icons-material/CallToAction.js","../node_modules/@mui/icons-material/Code.js","../node_modules/@mui/icons-material/Compress.js","../node_modules/@mui/icons-material/FindReplace.js","../node_modules/@mui/icons-material/LocalHospital.js","../node_modules/@mui/icons-material/PendingActions.js","../node_modules/@mui/icons-material/Public.js","../node_modules/@mui/icons-material/RemoveRedEye.js","../node_modules/@mui/icons-material/VisibilityOff.js","../node_modules/@mui/icons-material/VpnKey.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/esm/deprecatedPropType.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/esm/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/esm/unsupportedProp.js","../node_modules/@mui/material/utils/index.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more 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, {\n ChangeEvent,\n createRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n Fragment,\n} from \"react\";\nimport get from \"lodash/get\";\nimport { AddIcon, Box, HelpIcon, InputBox, InputLabel, Tooltip } from \"mds\";\n\ninterface ICSVMultiSelector {\n elements: string;\n name: string;\n label: string;\n tooltip?: string;\n commonPlaceholder?: string;\n withBorder?: boolean;\n onChange: (elements: string) => void;\n}\n\nconst CSVMultiSelector = ({\n elements,\n name,\n label,\n tooltip = \"\",\n commonPlaceholder = \"\",\n onChange,\n withBorder = false,\n}: ICSVMultiSelector) => {\n const [currentElements, setCurrentElements] = useState([\"\"]);\n const bottomList = createRef();\n\n // Use effect to get the initial values from props\n useEffect(() => {\n if (\n currentElements.length === 1 &&\n currentElements[0] === \"\" &&\n elements &&\n elements !== \"\"\n ) {\n const elementsSplit = elements.split(\",\");\n elementsSplit.push(\"\");\n\n setCurrentElements(elementsSplit);\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [elements, currentElements]);\n\n // Use effect to send new values to onChange\n useEffect(() => {\n if (currentElements.length > 1) {\n const refScroll = bottomList.current;\n if (refScroll) {\n refScroll.scrollIntoView(false);\n }\n }\n }, [currentElements, bottomList]);\n\n const onChangeCallback = useCallback(\n (newString: string) => {\n onChange(newString);\n },\n [onChange],\n );\n\n // We avoid multiple re-renders / hang issue typing too fast\n const firstUpdate = useRef(true);\n useEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = false;\n return;\n }\n const elementsString = currentElements\n .filter((element) => element.trim() !== \"\")\n .join(\",\");\n\n onChangeCallback(elementsString);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentElements]);\n\n // If the last input is not empty, we add a new one\n const addEmptyLine = (elementsUp: string[]) => {\n if (elementsUp[elementsUp.length - 1].trim() !== \"\") {\n const cpList = [...elementsUp];\n cpList.push(\"\");\n setCurrentElements(cpList);\n }\n };\n\n // Onchange function for input box, we get the dataset-index & only update that value in the array\n const onChangeElement = (e: ChangeEvent) => {\n e.persist();\n\n let updatedElement = [...currentElements];\n const index = get(e.target, \"dataset.index\", \"0\");\n const indexNum = parseInt(index);\n updatedElement[indexNum] = e.target.value;\n\n setCurrentElements(updatedElement);\n };\n\n const inputs = currentElements.map((element, index) => {\n return (\n : null}\n overlayAction={() => {\n addEmptyLine(currentElements);\n }}\n />\n );\n });\n\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n \n \n \n \n \n \n \n )}\n \n \n {inputs}\n
\n \n \n \n );\n};\nexport default CSVMultiSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { InputLabel, Switch, Tooltip, Typography } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport { actionsTray, fieldBasic } from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input/Input\";\n\ninterface IFormSwitch {\n label?: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n description?: string;\n index?: number;\n checked: boolean;\n switchOnly?: boolean;\n indicatorLabels?: string[];\n extraInputProps?: StandardInputProps[\"inputProps\"];\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n indicatorLabelOn: {\n fontWeight: \"bold\",\n color: \"#081C42 !important\",\n },\n indicatorLabel: {\n fontSize: 12,\n color: \"#E2E2E2\",\n margin: \"0 8px 0 10px\",\n },\n fieldDescription: {\n marginTop: 4,\n color: \"#999999\",\n },\n tooltip: {\n fontSize: 16,\n },\n ...actionsTray,\n ...fieldBasic,\n });\n\nconst StyledSwitch = withStyles((theme) => ({\n root: {\n width: 50,\n height: 24,\n padding: 0,\n margin: 0,\n },\n switchBase: {\n padding: 1,\n \"&$checked\": {\n transform: \"translateX(24px)\",\n color: theme.palette.common.white,\n \"& + $track\": {\n backgroundColor: \"#4CCB92\",\n boxShadow: \"inset 0px 1px 4px rgba(0,0,0,0.1)\",\n opacity: 1,\n border: \"none\",\n },\n },\n \"&$focusVisible $thumb\": {\n color: \"#4CCB92\",\n border: \"6px solid #fff\",\n },\n },\n thumb: {\n width: 22,\n height: 22,\n backgroundColor: \"#FAFAFA\",\n border: \"2px solid #FFFFFF\",\n marginLeft: 1,\n },\n track: {\n borderRadius: 24 / 2,\n backgroundColor: \"#E2E2E2\",\n boxShadow: \"inset 0px 1px 4px rgba(0,0,0,0.1)\",\n opacity: 1,\n transition: theme.transitions.create([\"background-color\", \"border\"]),\n },\n checked: {},\n focusVisible: {},\n switchContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n },\n}))(Switch);\n\nconst FormSwitchWrapper = ({\n label = \"\",\n onChange,\n value,\n id,\n name,\n checked = false,\n disabled = false,\n switchOnly = false,\n tooltip = \"\",\n description = \"\",\n classes,\n indicatorLabels,\n extraInputProps = {},\n}: IFormSwitch) => {\n const switchComponent = (\n \n {!switchOnly && (\n \n {indicatorLabels && indicatorLabels.length > 1\n ? indicatorLabels[1]\n : \"OFF\"}\n \n )}\n \n {!switchOnly && (\n \n {indicatorLabels ? indicatorLabels[0] : \"ON\"}\n \n )}\n \n );\n\n if (switchOnly) {\n return switchComponent;\n }\n\n return (\n
\n \n \n {label !== \"\" && (\n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n
\n )}\n
\n \n {switchComponent}\n
\n {description !== \"\" && (\n \n \n {description}\n \n \n )}\n \n
\n );\n};\n\nexport default withStyles(styles)(FormSwitchWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { ClipboardEvent, useState } from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n onKeyPress?: (e: any) => void;\n onFocus?: () => void;\n onPaste?: (e: ClipboardEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayId?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n }),\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayId,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n onFocus,\n onPaste,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n const [toggleTextInput, setToggleTextInput] = useState(false);\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n let inputBoxWrapperIcon = overlayIcon;\n let inputBoxWrapperType = type;\n\n if (type === \"password\" && overlayIcon === null) {\n inputBoxWrapperIcon = toggleTextInput ? (\n \n ) : (\n \n );\n inputBoxWrapperType = toggleTextInput ? \"text\" : \"password\";\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n
\n \n {inputBoxWrapperIcon && (\n \n {\n overlayAction();\n }\n : () => setToggleTextInput(!toggleTextInput)\n }\n id={overlayId}\n size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {inputBoxWrapperIcon}\n \n
\n )}\n {overlayObject && (\n \n {overlayObject}\n
\n )}\n \n \n \n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","import React, { Fragment } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { predefinedList } from \"../common/styleLibrary\";\n\ninterface IPredefinedList {\n classes: any;\n label?: string;\n content: any;\n multiLine?: boolean;\n actionButton?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...predefinedList,\n });\n\nconst PredefinedList = ({\n classes,\n label = \"\",\n content,\n multiLine = false,\n actionButton,\n}: IPredefinedList) => {\n return (\n \n \n {label !== \"\" && (\n \n {label}\n \n )}\n \n \n {content}\n \n {actionButton && (\n
{actionButton}
\n )}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(PredefinedList);\n","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M10 15h5.88c.27-.31.67-.5 1.12-.5.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5c-.44 0-.84-.19-1.12-.5H11.9c-.46 2.28-2.48 4-4.9 4-2.76 0-5-2.24-5-5 0-2.42 1.72-4.44 4-4.9v2.07c-1.16.41-2 1.53-2 2.83 0 1.65 1.35 3 3 3s3-1.35 3-3v-1zm2.5-11c1.65 0 3 1.35 3 3h2c0-2.76-2.24-5-5-5s-5 2.24-5 5c0 1.43.6 2.71 1.55 3.62l-2.35 3.9c-.68.14-1.2.75-1.2 1.48 0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5c0-.16-.02-.31-.07-.45l3.38-5.63C10.49 9.61 9.5 8.42 9.5 7c0-1.65 1.35-3 3-3zm4.5 9c-.64 0-1.23.2-1.72.54l-3.05-5.07C11.53 8.35 11 7.74 11 7c0-.83.67-1.5 1.5-1.5S14 6.17 14 7c0 .15-.02.29-.06.43l2.19 3.65c.28-.05.57-.08.87-.08 2.76 0 5 2.24 5 5s-2.24 5-5 5c-1.85 0-3.47-1.01-4.33-2.5h2.67c.48.32 1.05.5 1.66.5 1.65 0 3-1.35 3-3s-1.35-3-3-3z\"\n}), 'Webhook');","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { Button, FormLayout, Grid, InputBox, ProgressBar } from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { Webhook } from \"@mui/icons-material\";\nimport CallToActionIcon from \"@mui/icons-material/CallToAction\";\nimport PendingActionsIcon from \"@mui/icons-material/PendingActions\";\nimport {\n configurationIsLoading,\n setErrorSnackMessage,\n setServerNeedsRestart,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\n\ninterface IEndpointModal {\n open: boolean;\n type: string;\n onCloseEndpoint: () => void;\n}\n\nconst AddEndpointModal = ({ open, type, onCloseEndpoint }: IEndpointModal) => {\n const [name, setName] = useState(\"\");\n const [endpoint, setEndpoint] = useState(\"\");\n const [authToken, setAuthToken] = useState(\"\");\n const [saving, setSaving] = useState(false);\n const [invalidInputs, setInvalidInput] = useState([\n \"name\",\n \"endpoint\",\n ]);\n const [initialInputs, setInitialInputs] = useState([\n \"name\",\n \"endpoint\",\n \"auth-token\",\n ]);\n\n const dispatch = useAppDispatch();\n\n const saveWebhook = () => {\n if (saving) {\n return;\n }\n\n if (invalidInputs.length !== 0) {\n return;\n }\n\n if (name.trim() === \"\") {\n setInvalidInput([...invalidInputs, \"name\"]);\n\n return;\n }\n\n if (endpoint.trim() === \"\") {\n setInvalidInput([...invalidInputs, \"endpoint\"]);\n\n return;\n }\n\n setSaving(true);\n\n const payload = {\n key_values: [\n {\n key: \"endpoint\",\n value: endpoint,\n },\n {\n key: \"auth_token\",\n value: authToken,\n },\n ],\n arn_resource_id: name,\n };\n\n api.configs\n .setConfig(type, payload)\n .then((res) => {\n setSaving(false);\n dispatch(setServerNeedsRestart(res.data.restart || false));\n if (!res.data.restart) {\n dispatch(setSnackBarMessage(\"Configuration saved successfully\"));\n }\n\n onCloseEndpoint();\n dispatch(configurationIsLoading(true));\n })\n .catch((err) => {\n setSaving(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n const initializeInput = (name: string) => {\n setInitialInputs(initialInputs.filter((item) => item !== name));\n };\n\n const validateInput = (name: string, valid: boolean) => {\n if (invalidInputs.includes(name) && valid) {\n setInvalidInput(invalidInputs.filter((item) => item !== name));\n return;\n }\n\n if (!valid && !invalidInputs.includes(name)) {\n setInvalidInput([...invalidInputs, name]);\n }\n };\n\n let title = \"Add new Webhook\";\n let icon = ;\n\n switch (type) {\n case \"logger_webhook\":\n title = \"New Logger Webhook\";\n icon = ;\n break;\n case \"audit_webhook\":\n title = \"New Audit Webhook\";\n icon = ;\n break;\n }\n\n return (\n \n \n \n ) => {\n initializeInput(\"name\");\n setName(event.target.value);\n validateInput(\"name\", event.target.validity.valid);\n }}\n error={\n invalidInputs.includes(\"name\") && !initialInputs.includes(\"name\")\n ? \"Invalid Name\"\n : \"\"\n }\n label=\"Name\"\n value={name}\n pattern={\"^(?=.*[a-zA-Z0-9]).{1,}$\"}\n required\n />\n ) => {\n initializeInput(\"endpoint\");\n setEndpoint(event.target.value);\n validateInput(\"endpoint\", event.target.validity.valid);\n }}\n error={\n invalidInputs.includes(\"endpoint\") &&\n !initialInputs.includes(\"endpoint\")\n ? \"Invalid Endpoint set\"\n : \"\"\n }\n label=\"Endpoint\"\n value={endpoint}\n pattern={\n \"^(https?):\\\\/\\\\/([a-zA-Z0-9\\\\-.]+)(:[0-9]+)?(\\\\/[a-zA-Z0-9\\\\-.\\\\/]*)?$\"\n }\n required\n />\n ) => {\n initializeInput(\"auth-token\");\n setAuthToken(event.target.value);\n }}\n label=\"Auth Token\"\n value={authToken}\n />\n \n {saving && (\n \n \n \n )}\n \n \n \n \n \n \n );\n};\n\nexport default AddEndpointModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState, Fragment } from \"react\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport {\n configurationIsLoading,\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IDeleteWebhookEndpoint {\n modalOpen: boolean;\n onClose: () => void;\n selectedARN: string;\n type: string;\n}\n\nconst DeleteWebhookEndpoint = ({\n modalOpen,\n onClose,\n selectedARN,\n}: IDeleteWebhookEndpoint) => {\n const [deleteLoading, setDeleteLoading] = useState(false);\n\n const dispatch = useAppDispatch();\n\n useEffect(() => {\n if (deleteLoading) {\n api.configs\n .resetConfig(selectedARN)\n .then(() => {\n setDeleteLoading(false);\n dispatch(setServerNeedsRestart(true));\n dispatch(configurationIsLoading(true));\n onClose();\n })\n .catch((err) => {\n setDeleteLoading(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n }, [deleteLoading, dispatch, onClose, selectedARN]);\n\n const onConfirmDelete = () => {\n setDeleteLoading(true);\n };\n\n const defaultWH = !selectedARN.includes(\":\");\n\n let message = \"Are you sure you want to delete the Configured Endpoint\";\n\n // Main webhook, we just reset\n if (defaultWH) {\n message = \"Are you sure you want to reset the Default\";\n }\n\n return (\n }\n onClose={onClose}\n confirmationContent={\n \n {`${message} `}\n {selectedARN}?\n \n }\n />\n );\n};\n\nexport default DeleteWebhookEndpoint;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { Button, ConsoleIcon, Grid, ProgressBar, Tooltip } from \"mds\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { Webhook } from \"@mui/icons-material\";\nimport { formFieldStyles } from \"../../Common/FormComponents/common/styleLibrary\";\nimport CallToActionIcon from \"@mui/icons-material/CallToAction\";\nimport PendingActionsIcon from \"@mui/icons-material/PendingActions\";\nimport {\n configurationIsLoading,\n setErrorSnackMessage,\n setServerNeedsRestart,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\nimport { IConfigurationSys } from \"../../Configurations/types\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport PredefinedList from \"../../Common/FormComponents/PredefinedList/PredefinedList\";\nimport { overrideFields } from \"../../Configurations/utils\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IEndpointModal {\n open: boolean;\n type: string;\n endpointInfo: IConfigurationSys;\n onCloseEndpoint: () => void;\n}\n\nconst EditEndpointModal = ({\n open,\n type,\n endpointInfo,\n onCloseEndpoint,\n}: IEndpointModal) => {\n const [name, setName] = useState(\"\");\n const [endpoint, setEndpoint] = useState(\"\");\n const [authToken, setAuthToken] = useState(\"\");\n const [endpointState, setEndpointState] = useState(\"on\");\n const [saving, setSaving] = useState(false);\n const [invalidInputs, setInvalidInput] = useState([]);\n\n const dispatch = useAppDispatch();\n\n useEffect(() => {\n if (endpointInfo) {\n const endpointLocate = endpointInfo.key_values.find(\n (key) => key.key === \"endpoint\",\n );\n const tokenLocate = endpointInfo.key_values.find(\n (key) => key.key === \"auth_token\",\n );\n const enable = endpointInfo.key_values.find(\n (key) => key.key === \"enable\",\n );\n\n let invalidInputs: string[] = [];\n\n if (endpointLocate) {\n const endpointValue = endpointLocate.value;\n\n if (endpointValue === \"\") {\n invalidInputs.push(\"endpoint\");\n } else {\n setEndpoint(endpointValue);\n }\n }\n\n if (tokenLocate) {\n const tokenValue = tokenLocate.value;\n\n if (tokenValue === \"\") {\n invalidInputs.push(\"auth-token\");\n } else {\n setAuthToken(tokenValue);\n }\n }\n\n if (enable) {\n if (enable.value === \"off\") {\n setEndpointState(enable.value);\n }\n }\n\n setName(endpointInfo.name || \"\");\n setInvalidInput(invalidInputs);\n }\n }, [endpointInfo]);\n\n const updateWebhook = () => {\n if (saving) {\n return;\n }\n\n if (invalidInputs.length !== 0) {\n return;\n }\n\n if (!endpoint || endpoint.trim() === \"\") {\n setInvalidInput([...invalidInputs, \"endpoint\"]);\n\n return;\n }\n\n setSaving(true);\n\n const payload = {\n key_values: [\n {\n key: \"endpoint\",\n value: endpoint,\n },\n {\n key: \"auth_token\",\n value: authToken,\n },\n {\n key: \"enable\",\n value: endpointState,\n },\n ],\n };\n\n api.configs\n .setConfig(name, payload)\n .then((res) => {\n setSaving(false);\n dispatch(setServerNeedsRestart(res.data.restart || false));\n if (!res.data.restart) {\n dispatch(setSnackBarMessage(\"Configuration saved successfully\"));\n }\n\n onCloseEndpoint();\n dispatch(configurationIsLoading(true));\n })\n .catch((err) => {\n setSaving(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n const validateInput = (name: string, valid: boolean) => {\n if (invalidInputs.includes(name) && valid) {\n setInvalidInput(invalidInputs.filter((item) => item !== name));\n return;\n }\n\n if (!valid && !invalidInputs.includes(name)) {\n setInvalidInput([...invalidInputs, name]);\n }\n };\n\n const defaultWH = !name.includes(\":\");\n const hasOverride = endpointInfo.key_values.filter(\n (itm) => !!itm.env_override,\n );\n\n const overrideValues = overrideFields(hasOverride);\n\n let title = \"Edit Webhook\";\n let icon = ;\n\n switch (type) {\n case \"logger_webhook\":\n title = `Edit ${defaultWH ? \" the Default \" : \"\"}Logger Webhook`;\n icon = ;\n break;\n case \"audit_webhook\":\n title = `Edit ${defaultWH ? \" the Default \" : \"\"}Audit Webhook`;\n icon = ;\n break;\n }\n\n if (hasOverride.length > 0) {\n title = \"View env variable Webhook\";\n }\n\n return (\n \n \n {hasOverride.length > 0 ? (\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 ) => {\n const value = e.target.checked ? \"on\" : \"off\";\n setEndpointState(value);\n }}\n id={\"endpoint_enabled\"}\n name={\"endpoint_enabled\"}\n label={\"Enabled\"}\n value={\"switch_on\"}\n checked={endpointState === \"on\"}\n />\n \n \n ) => {\n setEndpoint(event.target.value);\n validateInput(\"endpoint\", event.target.validity.valid);\n }}\n error={\n invalidInputs.includes(\"endpoint\")\n ? \"Invalid Endpoint set\"\n : \"\"\n }\n label=\"Endpoint\"\n value={endpoint}\n pattern={\n \"^(https?):\\\\/\\\\/([a-zA-Z0-9\\\\-.]+)(:[0-9]+)?(\\\\/[a-zA-Z0-9\\\\-.\\\\/]*)?$\"\n }\n required\n />\n \n \n ) => {\n setAuthToken(event.target.value);\n }}\n label=\"Auth Token\"\n value={authToken}\n />\n \n {saving && (\n \n \n \n )}\n \n \n \n \n \n )}\n \n \n );\n};\n\nexport default EditEndpointModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { IConfigurationSys, IElementValue } from \"../../Configurations/types\";\nimport {\n Button,\n ConsoleIcon,\n DataTable,\n Grid,\n TierOfflineIcon,\n TierOnlineIcon,\n} from \"mds\";\nimport AddEndpointModal from \"./AddEndpointModal\";\nimport DeleteWebhookEndpoint from \"./DeleteWebhookEndpoint\";\nimport EditWebhookEndpoint from \"./EditWebhookEndpoint\";\nimport { Configuration } from \"api/consoleApi\";\n\ninterface WebhookSettingsProps {\n WebhookSettingslist: Configuration[];\n setResetConfigurationOpen: () => void;\n type: string;\n}\n\nconst WebhookSettings = ({\n setResetConfigurationOpen,\n WebhookSettingslist,\n type,\n}: WebhookSettingsProps) => {\n const [newEndpointOpen, setNewEndpointOpen] = useState(false);\n const [deleteWebhookOpen, setDeleteWebhookOpen] = useState(false);\n const [editWebhookOpen, setEditWebhookOpen] = useState(false);\n const [selectedARN, setSelectedARN] = useState(\"\");\n const [selectedEndpoint, setSelectedEndpoint] =\n useState(null);\n\n const renderEndpoint = (item: IElementValue[]) => {\n const endpointFilter = item.find((itm) => itm.key === \"endpoint\");\n\n if (endpointFilter) {\n if (endpointFilter.env_override) {\n return endpointFilter.env_override.value;\n }\n\n return endpointFilter.value;\n }\n\n return \"\";\n };\n\n const renderWebhookStatus = (item: IElementValue[]) => {\n const EnableFilter = item.find((itm) => itm.key === \"enable\");\n\n if (EnableFilter?.env_override) {\n const overrideEnabled =\n !EnableFilter?.env_override.value ||\n EnableFilter?.env_override.value === \"on\" ||\n !EnableFilter?.env_override.value\n ? \"Enabled\"\n : \"Disabled\";\n return (\n \n \n {overrideEnabled ? \"Enabled\" : \"Disabled\"}\n \n );\n }\n\n // If enable is not set, then enabled by default\n if (!EnableFilter || EnableFilter.value === \"on\" || !EnableFilter.value) {\n return (\n \n \n Enabled\n \n );\n }\n\n return (\n \n \n Disabled\n \n );\n };\n\n const onCloseDelete = () => {\n setDeleteWebhookOpen(false);\n setSelectedARN(\"\");\n };\n\n const onCloseEditWebhook = () => {\n setEditWebhookOpen(false);\n setSelectedEndpoint(null);\n };\n\n const actions = [\n {\n type: \"view\",\n onClick: (item: IConfigurationSys) => {\n if (item.name) {\n setEditWebhookOpen(true);\n setSelectedEndpoint(item);\n }\n },\n },\n {\n type: \"delete\",\n onClick: (item: IConfigurationSys) => {\n if (item.name) {\n setDeleteWebhookOpen(true);\n setSelectedARN(item.name);\n }\n },\n disableButtonFunction: (item: string) => {\n const wHook = WebhookSettingslist.find(\n (element) => element.name === item,\n );\n\n if (wHook) {\n const hasOverride = wHook.key_values?.filter(\n (itm) => !!itm.env_override,\n );\n\n // Has override values, we cannot delete.\n if (hasOverride && hasOverride.length > 0) {\n return true;\n }\n\n return false;\n }\n return false;\n },\n },\n ];\n return (\n \n {newEndpointOpen && (\n {\n setNewEndpointOpen(false);\n }}\n />\n )}\n {deleteWebhookOpen && (\n \n )}\n {editWebhookOpen && selectedEndpoint && (\n \n )}\n \n {\n setNewEndpointOpen(true);\n }}\n >\n New Endpoint\n \n \n \n \n

Currently Configured Endpoints

\n \n
\n
\n
\n );\n};\nexport default WebhookSettings;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 get from \"lodash/get\";\nimport { Box, Button, Grid, Loader } from \"mds\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"api\";\nimport { Configuration, ConfigurationKV } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport {\n fieldsConfigurations,\n overrideFields,\n removeEmptyFields,\n} from \"../../Configurations/utils\";\nimport {\n IConfigurationElement,\n IElementValue,\n IOverrideEnv,\n KVField,\n} from \"../../Configurations/types\";\nimport {\n configurationIsLoading,\n setErrorSnackMessage,\n setHelpName,\n setServerNeedsRestart,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport WebhookSettings from \"../WebhookSettings/WebhookSettings\";\nimport ConfTargetGeneric from \"../ConfTargetGeneric\";\nimport ResetConfigurationModal from \"./ResetConfigurationModal\";\n\ninterface IAddNotificationEndpointProps {\n selectedConfiguration: IConfigurationElement;\n className?: string;\n}\n\nconst EditConfiguration = ({\n selectedConfiguration,\n className = \"\",\n}: IAddNotificationEndpointProps) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const { pathname = \"\" } = useLocation();\n\n let selConfigTab = pathname.substring(pathname.lastIndexOf(\"/\") + 1);\n selConfigTab = selConfigTab === \"settings\" ? \"region\" : selConfigTab;\n\n //Local States\n const [valuesObj, setValueObj] = useState([]);\n const [saving, setSaving] = useState(false);\n const [configValues, setConfigValues] = useState([]);\n const [configSubsysList, setConfigSubsysList] = useState([]);\n const [resetConfigurationOpen, setResetConfigurationOpen] =\n useState(false);\n const [overrideEnvs, setOverrideEnvs] = useState({});\n\n const loadingConfig = useSelector(\n (state: AppState) => state.system.loadingConfigurations,\n );\n\n useEffect(() => {\n dispatch(configurationIsLoading(true));\n }, [selConfigTab, dispatch]);\n\n useEffect(() => {\n if (loadingConfig) {\n const configId = get(selectedConfiguration, \"configuration_id\", false);\n\n if (configId) {\n api.configs\n .configInfo(configId)\n .then((res) => {\n setConfigSubsysList(res.data);\n let values: ConfigurationKV[] = get(res.data[0], \"key_values\", []);\n\n const fieldsConfig: KVField[] = fieldsConfigurations[configId];\n\n const keyVals = fieldsConfig.map((field) => {\n const includedValue = values.find(\n (element: ConfigurationKV) => element.key === field.name,\n );\n const customValue = includedValue?.value || \"\";\n\n return {\n key: field.name,\n value: field.customValueProcess\n ? field.customValueProcess(customValue)\n : customValue,\n };\n });\n\n setConfigValues(keyVals);\n setOverrideEnvs(overrideFields(keyVals));\n dispatch(configurationIsLoading(false));\n })\n .catch((err) => {\n dispatch(configurationIsLoading(false));\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n\n return;\n }\n dispatch(configurationIsLoading(false));\n }\n }, [loadingConfig, selectedConfiguration, dispatch]);\n\n useEffect(() => {\n if (saving) {\n const payload = {\n key_values: removeEmptyFields(valuesObj),\n };\n api.configs\n .setConfig(selectedConfiguration.configuration_id, payload)\n .then((res) => {\n setSaving(false);\n dispatch(setServerNeedsRestart(res.data.restart || false));\n dispatch(configurationIsLoading(true));\n if (!res.data.restart) {\n dispatch(setSnackBarMessage(\"Configuration saved successfully\"));\n }\n })\n .catch((err) => {\n setSaving(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n }, [saving, dispatch, selectedConfiguration, valuesObj, navigate]);\n\n //Fetch Actions\n const submitForm = (event: React.FormEvent) => {\n event.preventDefault();\n setSaving(true);\n };\n\n const onValueChange = useCallback(\n (newValue: IElementValue[]) => {\n setValueObj(newValue);\n },\n [setValueObj],\n );\n\n const continueReset = (restart: boolean) => {\n setResetConfigurationOpen(false);\n dispatch(setServerNeedsRestart(restart));\n if (restart) {\n dispatch(configurationIsLoading(true));\n }\n };\n\n const resetConfigurationMOpen = () => {\n setResetConfigurationOpen(true);\n };\n\n return (\n \n {\n dispatch(\n setHelpName(\n `settings_${selectedConfiguration.configuration_label}`,\n ),\n );\n }}\n >\n {resetConfigurationOpen && (\n \n )}\n {loadingConfig ? (\n \n \n \n ) : (\n \n {selectedConfiguration.configuration_id === \"logger_webhook\" ||\n selectedConfiguration.configuration_id === \"audit_webhook\" ? (\n \n ) : (\n \n \n \n \n \n \n \n    \n \n \n \n \n )}\n \n )}\n \n \n );\n};\n\nexport default EditConfiguration;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { useLocation } from \"react-router-dom\";\nimport { Grid } from \"mds\";\nimport { configurationElements } from \"../utils\";\nimport EditConfiguration from \"../../EventDestinations/CustomForms/EditConfiguration\";\n\nconst ConfigurationsList = () => {\n const { pathname = \"\" } = useLocation();\n\n const configName = pathname.substring(pathname.lastIndexOf(\"/\") + 1);\n\n const validActiveConfig = configurationElements.find(\n (element) => element.configuration_id === configName,\n );\n const containerClassName = `${configName}`;\n return (\n \n {validActiveConfig && (\n \n )}\n \n );\n};\n\nexport default ConfigurationsList;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Button, UploadIcon } from \"mds\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport { performDownload } from \"../../../../common/utils\";\nimport { DateTime } from \"luxon\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useDispatch } from \"react-redux\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst ExportConfigButton = () => {\n const dispatch = useDispatch();\n const [isReqLoading, invokeApi] = useApi(\n (res: any) => {\n //base64 encoded information so decode before downloading.\n performDownload(\n new Blob([window.atob(res.value)]),\n `minio-server-config-${DateTime.now().toFormat(\n \"LL-dd-yyyy-HH-mm-ss\",\n )}.conf`,\n );\n },\n (err) => {\n dispatch(setErrorSnackMessage(err));\n },\n );\n\n return (\n \n {\n invokeApi(\"GET\", `api/v1/configs/export`);\n }}\n icon={}\n label={\"Export\"}\n variant={\"regular\"}\n disabled={isReqLoading}\n />\n \n );\n};\n\nexport default ExportConfigButton;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useRef, useState } from \"react\";\nimport { Button, DownloadIcon } from \"mds\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport {\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../../systemSlice\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useNavigate } from \"react-router-dom\";\nimport { AppState } from \"../../../../store\";\n\nconst ImportConfigButton = () => {\n const navigate = useNavigate();\n const dispatch = useDispatch();\n\n const needsRestart = useSelector(\n (state: AppState) => state.system.serverNeedsRestart,\n );\n\n const [refreshPage, setRefreshPage] = useState(\n undefined,\n );\n const fileUpload = useRef(null);\n\n const [isReqLoading, invokeApi] = useApi(\n (res: any) => {\n //base64 encoded information so decode before downloading.\n dispatch(setServerNeedsRestart(true)); //import should refreshPage as per mc.\n setRefreshPage(true);\n },\n (err) => {\n dispatch(setErrorSnackMessage(err));\n },\n );\n\n useEffect(() => {\n if (!needsRestart && refreshPage) {\n navigate(0); // refresh the page.\n }\n }, [needsRestart, refreshPage, navigate]);\n\n const handleUploadButton = (e: any) => {\n if (\n e === null ||\n e === undefined ||\n e.target.files === null ||\n e.target.files === undefined\n ) {\n return;\n }\n e.preventDefault();\n const [fileToUpload] = e.target.files;\n\n const formData = new FormData();\n const blobFile = new Blob([fileToUpload], { type: fileToUpload.type });\n\n formData.append(\"file\", blobFile, fileToUpload.name);\n // @ts-ignore\n invokeApi(\"POST\", `api/v1/configs/import`, formData);\n\n e.target.value = \"\";\n };\n\n return (\n \n \n \n {\n if (fileUpload && fileUpload.current) {\n fileUpload.current.click();\n }\n }}\n icon={}\n label={\"Import\"}\n variant={\"regular\"}\n disabled={isReqLoading}\n />\n \n \n );\n};\n\nexport default ImportConfigButton;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 {\n Box,\n Grid,\n HelpBox,\n PageLayout,\n ScreenTitle,\n SettingsIcon,\n Tabs,\n} from \"mds\";\n\nimport { configurationElements } from \"../utils\";\nimport {\n Navigate,\n Route,\n Routes,\n useLocation,\n useNavigate,\n} from \"react-router-dom\";\n\nimport ConfigurationForm from \"./ConfigurationForm\";\nimport { IAM_PAGES } from \"../../../../common/SecureComponent/permissions\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport ExportConfigButton from \"./ExportConfigButton\";\nimport ImportConfigButton from \"./ImportConfigButton\";\n\nimport HelpMenu from \"../../HelpMenu\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { api } from \"../../../../api\";\nimport { IElement } from \"../types\";\nimport { errorToHandler } from \"../../../../api/errors\";\n\nconst getRoutePath = (path: string) => {\n return `${IAM_PAGES.SETTINGS}/${path}`;\n};\n\n// region is not part of config subsystem list.\nconst NON_SUB_SYS_CONFIG_ITEMS = [\"region\"];\nconst IGNORED_CONFIG_SUB_SYS = [\"cache\"]; // cache config is not supported.\n\nconst ConfigurationOptions = () => {\n const { pathname = \"\" } = useLocation();\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [configSubSysList, setConfigSubSysList] = useState([]);\n const fetchConfigSubSysList = useCallback(async () => {\n api.configs\n .listConfig() // get a list of available config subsystems.\n .then((res) => {\n if (res && res?.data && res?.data?.configurations) {\n const confSubSysList = (res?.data?.configurations || []).reduce(\n (acc: string[], { key = \"\" }) => {\n if (!IGNORED_CONFIG_SUB_SYS.includes(key)) {\n acc.push(key);\n }\n return acc;\n },\n [],\n );\n\n setConfigSubSysList(confSubSysList);\n }\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n });\n }, [dispatch]);\n\n useEffect(() => {\n fetchConfigSubSysList();\n dispatch(setHelpName(\"settings_Region\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const availableConfigSubSys = configurationElements.filter(\n ({ configuration_id }: IElement) => {\n return (\n NON_SUB_SYS_CONFIG_ITEMS.includes(configuration_id) ||\n configSubSysList.includes(configuration_id) ||\n !configSubSysList.length\n );\n },\n );\n\n return (\n \n } />\n \n \n }\n title={\"MinIO Configuration:\"}\n actions={\n \n \n \n \n }\n sx={{ marginBottom: 15 }}\n />\n {\n navigate(path);\n }}\n useRouteTabs\n options={availableConfigSubSys.map((element) => {\n const { configuration_id, configuration_label, icon } = element;\n return {\n tabConfig: {\n id: `settings-tab-${configuration_label}`,\n label: configuration_label,\n value: configuration_id,\n icon: icon,\n to: getRoutePath(configuration_id),\n },\n };\n })}\n routes={\n \n {availableConfigSubSys.map((element) => (\n }\n />\n ))}\n }\n />\n \n }\n />\n \n \n }\n help={\n \n MinIO supports a variety of configurations ranging from\n encryption, compression, region, notifications, etc.\n
\n
\n You can learn more at our{\" \"}\n \n documentation\n \n .\n
\n }\n />\n
\n
\n
\n );\n};\n\nexport default ConfigurationOptions;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport PublicIcon from \"@mui/icons-material/Public\";\nimport CompressIcon from \"@mui/icons-material/Compress\";\nimport CodeIcon from \"@mui/icons-material/Code\";\nimport LocalHospitalIcon from \"@mui/icons-material/LocalHospital\";\nimport FindReplaceIcon from \"@mui/icons-material/FindReplace\";\nimport VpnKeyIcon from \"@mui/icons-material/VpnKey\";\nimport PendingActionsIcon from \"@mui/icons-material/PendingActions\";\nimport CallToActionIcon from \"@mui/icons-material/CallToAction\";\nimport { IElement, IElementValue, IOverrideEnv, OverrideValue } from \"./types\";\nimport { LogsIcon } from \"mds\";\n\nexport const configurationElements: IElement[] = [\n {\n icon: ,\n configuration_id: \"region\",\n configuration_label: \"Region\",\n },\n {\n icon: ,\n configuration_id: \"compression\",\n configuration_label: \"Compression\",\n },\n {\n icon: ,\n configuration_id: \"api\",\n configuration_label: \"API\",\n },\n {\n icon: ,\n configuration_id: \"heal\",\n configuration_label: \"Heal\",\n },\n {\n icon: ,\n configuration_id: \"scanner\",\n configuration_label: \"Scanner\",\n },\n {\n icon: ,\n configuration_id: \"etcd\",\n configuration_label: \"Etcd\",\n },\n {\n icon: ,\n configuration_id: \"logger_webhook\",\n configuration_label: \"Logger Webhook\",\n },\n {\n icon: ,\n configuration_id: \"audit_webhook\",\n configuration_label: \"Audit Webhook\",\n },\n {\n icon: (\n \n ),\n configuration_id: \"audit_kafka\",\n configuration_label: \"Audit Kafka\",\n },\n];\n\nexport const fieldsConfigurations: any = {\n region: [\n {\n name: \"name\",\n required: true,\n label: \"Server Location\",\n tooltip: 'Name of the location of the server e.g. \"us-west-rack2\"',\n type: \"string\",\n placeholder: \"e.g. us-west-rack-2\",\n },\n {\n name: \"comment\",\n required: false,\n label: \"Comment\",\n tooltip: \"You can add a comment to this setting\",\n type: \"comment\",\n placeholder: \"Enter custom notes if any\",\n },\n ],\n compression: [\n {\n name: \"extensions\",\n required: false,\n label: \"Extensions\",\n tooltip:\n 'Extensions to compress e.g. \".txt\", \".log\" or \".csv\" - you can write one per field',\n type: \"csv\",\n placeholder: \"Enter an Extension\",\n withBorder: true,\n },\n {\n name: \"mime_types\",\n required: false,\n label: \"Mime Types\",\n tooltip:\n 'Mime types e.g. \"text/*\", \"application/json\" or \"application/xml\" - you can write one per field',\n type: \"csv\",\n placeholder: \"Enter a Mime Type\",\n withBorder: true,\n },\n ],\n api: [\n {\n name: \"requests_max\",\n required: false,\n label: \"Requests Max\",\n tooltip: \"Maximum number of concurrent requests, e.g. '1600'\",\n type: \"number\",\n placeholder: \"Enter Requests Max\",\n },\n {\n name: \"cors_allow_origin\",\n required: false,\n label: \"Cors Allow Origin\",\n tooltip: \"List of origins allowed for CORS requests\",\n type: \"csv\",\n placeholder: \"Enter allowed origin e.g. https://example.com\",\n },\n {\n name: \"replication_workers\",\n required: false,\n label: \"Replication Workers\",\n tooltip: \"Number of replication workers, defaults to 100\",\n type: \"number\",\n placeholder: \"Enter Replication Workers\",\n },\n {\n name: \"replication_failed_workers\",\n required: false,\n label: \"Replication Failed Workers\",\n tooltip:\n \"Number of replication workers for recently failed replicas, defaults to 4\",\n type: \"number\",\n placeholder: \"Enter Replication Failed Workers\",\n },\n ],\n heal: [\n {\n name: \"bitrotscan\",\n required: false,\n label: \"Bitrot Scan\",\n tooltip:\n \"Perform bitrot scan on disks when checking objects during scanner\",\n type: \"on|off\",\n },\n {\n name: \"max_sleep\",\n required: false,\n label: \"Max Sleep\",\n tooltip:\n \"Maximum sleep duration between objects to slow down heal operation, e.g. 2s\",\n type: \"duration\",\n placeholder: \"Enter Max Sleep Duration\",\n },\n {\n name: \"max_io\",\n required: false,\n label: \"Max IO\",\n tooltip:\n \"Maximum IO requests allowed between objects to slow down heal operation, e.g. 3\",\n type: \"number\",\n placeholder: \"Enter Max IO\",\n },\n ],\n scanner: [\n {\n name: \"delay\",\n required: false,\n label: \"Delay Multiplier\",\n tooltip: \"Scanner delay multiplier, defaults to '10.0'\",\n type: \"number\",\n placeholder: \"Enter Delay\",\n },\n {\n name: \"max_wait\",\n required: false,\n label: \"Max Wait\",\n tooltip: \"Maximum wait time between operations, defaults to '15s'\",\n type: \"duration\",\n placeholder: \"Enter Max Wait\",\n },\n {\n name: \"cycle\",\n required: false,\n label: \"Cycle\",\n tooltip: \"Time duration between scanner cycles, defaults to '1m'\",\n type: \"duration\",\n placeholder: \"Enter Cycle\",\n },\n ],\n etcd: [\n {\n name: \"endpoints\",\n required: true,\n label: \"Endpoints\",\n tooltip:\n 'List of etcd endpoints e.g. \"http://localhost:2379\" - you can write one per field',\n type: \"csv\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"path_prefix\",\n required: false,\n label: \"Path Prefix\",\n tooltip: 'Namespace prefix to isolate tenants e.g. \"customer1/\"',\n type: \"string\",\n placeholder: \"Enter Path Prefix\",\n },\n {\n name: \"coredns_path\",\n required: false,\n label: \"Coredns Path\",\n tooltip: 'Shared bucket DNS records, default is \"/skydns\"',\n type: \"string\",\n placeholder: \"Enter Coredns Path\",\n },\n {\n name: \"client_cert\",\n required: false,\n label: \"Client Cert\",\n tooltip: \"Client cert for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_cert_key\",\n required: false,\n label: \"Client Cert Key\",\n tooltip: \"Client cert key for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert Key\",\n },\n {\n name: \"comment\",\n required: false,\n label: \"Comment\",\n tooltip: \"You can add a comment to this setting\",\n type: \"comment\",\n multiline: true,\n placeholder: \"Enter custom notes if any\",\n },\n ],\n logger_webhook: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n type: \"string\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n required: true,\n label: \"Auth Token\",\n type: \"string\",\n placeholder: \"Enter Auth Token\",\n },\n ],\n audit_webhook: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n type: \"string\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n required: true,\n label: \"Auth Token\",\n type: \"string\",\n placeholder: \"Enter Auth Token\",\n },\n ],\n audit_kafka: [\n {\n name: \"enable\",\n required: false,\n label: \"Enable\",\n tooltip: \"Enable audit_kafka target\",\n type: \"on|off\",\n customValueProcess: (origValue: string) => {\n return origValue === \"\" || origValue === \"on\" ? \"on\" : \"off\";\n },\n },\n {\n name: \"brokers\",\n required: true,\n label: \"Brokers\",\n type: \"csv\",\n placeholder: \"Enter Kafka Broker\",\n },\n {\n name: \"topic\",\n required: false,\n label: \"Topic\",\n type: \"string\",\n placeholder: \"Enter Kafka Topic\",\n tooltip: \"Kafka topic used for bucket notifications\",\n },\n {\n name: \"sasl\",\n required: false,\n label: \"Use SASL\",\n tooltip:\n \"Enable SASL (Simple Authentication and Security Layer) authentication\",\n type: \"on|off\",\n },\n {\n name: \"sasl_username\",\n required: false,\n label: \"SASL Username\",\n type: \"string\",\n placeholder: \"Enter SASL Username\",\n tooltip: \"Username for SASL/PLAIN or SASL/SCRAM authentication\",\n },\n {\n name: \"sasl_password\",\n required: false,\n label: \"SASL Password\",\n type: \"password\",\n placeholder: \"Enter SASL Password\",\n tooltip: \"Password for SASL/PLAIN or SASL/SCRAM authentication\",\n },\n {\n name: \"sasl_mechanism\",\n required: false,\n label: \"SASL Mechanism\",\n type: \"string\",\n placeholder: \"Enter SASL Mechanism\",\n tooltip: \"SASL authentication mechanism\",\n },\n {\n name: \"tls\",\n required: false,\n label: \"Use TLS\",\n tooltip: \"Enable TLS (Transport Layer Security)\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n required: false,\n label: \"Skip TLS Verification\",\n tooltip: \"Trust server TLS without verification\",\n type: \"on|off\",\n },\n {\n name: \"client_tls_cert\",\n required: false,\n label: \"Client Cert\",\n tooltip: \"Client cert for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_tls_key\",\n required: false,\n label: \"Client Cert Key\",\n tooltip: \"Client cert key for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert Key\",\n },\n {\n name: \"tls_client_auth\",\n required: false,\n label: \"TLS Client Auth\",\n tooltip:\n \"ClientAuth determines the Kafka server's policy for TLS client authorization\",\n type: \"string\",\n },\n {\n name: \"version\",\n required: false,\n label: \"Version\",\n tooltip: \"Specify the version of the Kafka cluster\",\n type: \"string\",\n },\n ],\n};\n\nexport const removeEmptyFields = (formFields: IElementValue[]) => {\n const nonEmptyFields = formFields.filter((field) => field.value !== \"\");\n\n return nonEmptyFields;\n};\n\nexport const selectSAs = (\n e: React.ChangeEvent,\n setSelectedSAs: Function,\n selectedSAs: string[],\n) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selectedSAs]; // We clone the selectedSAs array\n if (checked) {\n // If the user has checked this field we need to push this to selectedSAs\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedSAs(elements);\n return elements;\n};\n\nexport const overrideFields = (formFields: IElementValue[]): IOverrideEnv => {\n let overrideReturn: IOverrideEnv = {};\n\n formFields.forEach((envItem) => {\n // it has override values, we construct the value\n if (envItem.env_override) {\n const value: OverrideValue = {\n value: envItem.env_override.value,\n overrideEnv: envItem.env_override.name,\n };\n\n overrideReturn = { ...overrideReturn, [envItem.key]: value };\n }\n });\n\n return overrideReturn;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport {\n CommentBox,\n ConsoleIcon,\n FormLayout,\n Grid,\n InputBox,\n ReadBox,\n Switch,\n Tooltip,\n} from \"mds\";\nimport { IElementValue, IOverrideEnv, KVField } from \"../Configurations/types\";\nimport CSVMultiSelector from \"../Common/FormComponents/CSVMultiSelector/CSVMultiSelector\";\n\ninterface IConfGenericProps {\n onChange: (newValue: IElementValue[]) => void;\n fields: KVField[];\n defaultVals?: IElementValue[];\n overrideEnv?: IOverrideEnv;\n}\n\n// Function to get defined values,\n//we make this because the backed sometimes don't return all the keys when there is an initial configuration\nexport const valueDef = (\n key: string,\n type: string,\n defaults: IElementValue[],\n) => {\n let defValue = type === \"on|off\" ? \"off\" : \"\";\n\n if (defaults.length > 0) {\n const storedConfig = defaults.find((element) => element.key === key);\n\n if (storedConfig) {\n defValue = storedConfig.value || \"\";\n }\n }\n\n return defValue;\n};\n\nconst ConfTargetGeneric = ({\n onChange,\n fields,\n defaultVals,\n overrideEnv,\n}: IConfGenericProps) => {\n const [valueHolder, setValueHolder] = useState([]);\n const fieldsElements = !fields ? [] : fields;\n const defValList = !defaultVals ? [] : defaultVals;\n\n // Effect to create all the values to hold\n useEffect(() => {\n const values: IElementValue[] = fields.map((field) => {\n const stateInsert: IElementValue = {\n key: field.name,\n value: valueDef(field.name, field.type, defValList),\n };\n return stateInsert;\n });\n\n setValueHolder(values);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [fields, defaultVals]);\n\n useEffect(() => {\n onChange(valueHolder);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [valueHolder]);\n\n const setValueElement = (key: string, value: string, index: number) => {\n const valuesDup = [...valueHolder];\n value = value.trim();\n valuesDup[index] = { key, value };\n\n setValueHolder(valuesDup);\n };\n\n const fieldDefinition = (field: KVField, item: number) => {\n const holderItem = valueHolder[item];\n\n if (holderItem) {\n // Override Value with env var, we display generic string component\n const override = overrideEnv?.[`${holderItem.key}`];\n\n if (override) {\n return (\n \n \n \n \n \n }\n sx={{ width: \"100%\" }}\n >\n {override.value}\n \n );\n }\n }\n\n switch (field.type) {\n case \"on|off\":\n const value = holderItem ? holderItem.value : \"off\";\n\n return (\n ) => {\n const value = e.target.checked ? \"on\" : \"off\";\n setValueElement(field.name, value, item);\n }}\n id={field.name}\n name={field.name}\n label={field.label}\n value={\"switch_on\"}\n tooltip={field.tooltip}\n checked={value === \"on\"}\n />\n );\n case \"csv\":\n return (\n {\n let valCh = \"\";\n\n if (Array.isArray(value)) {\n valCh = value.join(\",\");\n } else {\n valCh = value;\n }\n\n setValueElement(field.name, valCh, item);\n }}\n tooltip={field.tooltip}\n commonPlaceholder={field.placeholder}\n withBorder={true}\n />\n );\n case \"comment\":\n return (\n setValueElement(field.name, e.target.value, item)}\n placeholder={field.placeholder}\n />\n );\n default:\n return (\n ) =>\n setValueElement(field.name, e.target.value, item)\n }\n placeholder={field.placeholder}\n />\n );\n }\n };\n\n return (\n \n {fieldsElements.map((field, item) => (\n {fieldDefinition(field, item)}\n ))}\n \n );\n};\n\nexport default ConfTargetGeneric;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\n\nimport { ConfirmDeleteIcon, ProgressBar } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IResetConfiguration {\n configurationName: string;\n closeResetModalAndRefresh: (reloadConfiguration: boolean) => void;\n resetOpen: boolean;\n}\n\nconst ResetConfigurationModal = ({\n configurationName,\n closeResetModalAndRefresh,\n resetOpen,\n}: IResetConfiguration) => {\n const dispatch = useAppDispatch();\n const [resetLoading, setResetLoading] = useState(false);\n\n useEffect(() => {\n if (resetLoading) {\n api.configs\n .resetConfig(configurationName)\n .then(() => {\n setResetLoading(false);\n closeResetModalAndRefresh(true);\n })\n .catch((err) => {\n setResetLoading(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n }, [closeResetModalAndRefresh, configurationName, resetLoading, dispatch]);\n\n const resetConfiguration = () => {\n setResetLoading(true);\n };\n\n return (\n }\n isLoading={resetLoading}\n onConfirm={resetConfiguration}\n onClose={() => {\n closeResetModalAndRefresh(false);\n }}\n confirmationContent={\n \n {resetLoading && }\n \n Are you sure you want to restore these configurations to default\n values?\n
\n \n Please note that this may cause your system to not be accessible\n \n
\n
\n }\n />\n );\n};\n\nexport default ResetConfigurationModal;\n","\"use strict\";\n\"use client\";\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: \"M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3v-3h18v3z\"\n}), 'CallToAction');\nexports.default = _default;","\"use strict\";\n\"use client\";\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: \"M9.4 16.6 4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0 4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z\"\n}), 'Code');\nexports.default = _default;","\"use strict\";\n\"use client\";\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: \"M8 19h3v3h2v-3h3l-4-4-4 4zm8-15h-3V1h-2v3H8l4 4 4-4zM4 9v2h16V9H4zm0 3h16v2H4z\"\n}), 'Compress');\nexports.default = _default;","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11 6c1.38 0 2.63.56 3.54 1.46L12 10h6V4l-2.05 2.05C14.68 4.78 12.93 4 11 4c-3.53 0-6.43 2.61-6.92 6H6.1c.46-2.28 2.48-4 4.9-4zm5.64 9.14c.66-.9 1.12-1.97 1.28-3.14H15.9c-.46 2.28-2.48 4-4.9 4-1.38 0-2.63-.56-3.54-1.46L10 12H4v6l2.05-2.05C7.32 17.22 9.07 18 11 18c1.55 0 2.98-.51 4.14-1.36L20 21.49 21.49 20l-4.85-4.86z\"\n}), 'FindReplace');\nexports.default = _default;","\"use strict\";\n\"use client\";\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-1.99.9-1.99 2L3 19c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 11h-4v4h-4v-4H6v-4h4V6h4v4h4v4z\"\n}), 'LocalHospital');\nexports.default = _default;","\"use strict\";\n\"use client\";\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: \"M17 12c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm1.65 7.35L16.5 17.2V14h1v2.79l1.85 1.85-.7.71zM18 3h-3.18C14.4 1.84 13.3 1 12 1s-2.4.84-2.82 2H6c-1.1 0-2 .9-2 2v15c0 1.1.9 2 2 2h6.11c-.59-.57-1.07-1.25-1.42-2H6V5h2v3h8V5h2v5.08c.71.1 1.38.31 2 .6V5c0-1.1-.9-2-2-2zm-6 2c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z\"\n}), 'PendingActions');\nexports.default = _default;","\"use strict\";\n\"use client\";\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.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z\"\n}), 'Public');\nexports.default = _default;","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'RemoveRedEye');\nexports.default = _default;","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\nexports.default = _default;","\"use strict\";\n\"use client\";\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.65 10C11.83 7.67 9.61 6 7 6c-3.31 0-6 2.69-6 6s2.69 6 6 6c2.61 0 4.83-1.67 5.65-4H17v4h4v-4h2v-4H12.65zM7 14c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z\"\n}), 'VpnKey');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["_ref","elements","name","label","_ref$tooltip","tooltip","_ref$commonPlaceholde","commonPlaceholder","onChange","_ref$withBorder","withBorder","_useState","useState","_useState2","_slicedToArray","currentElements","setCurrentElements","bottomList","createRef","useEffect","length","elementsSplit","split","push","refScroll","current","scrollIntoView","onChangeCallback","useCallback","newString","firstUpdate","useRef","elementsString","filter","element","trim","join","onChangeElement","e","persist","updatedElement","_toConsumableArray","index","get","target","parseInt","value","inputs","map","_jsx","InputBox","id","concat","toString","placeholder","overlayIcon","AddIcon","overlayAction","elementsUp","cpList","addEmptyLine","Fragment","children","_jsxs","Box","sx","display","className","InputLabel","alignItems","marginLeft","width","Tooltip","placement","HelpIcon","withBorders","overflowY","height","position","ref","StyledSwitch","withStyles","theme","root","padding","margin","switchBase","transform","color","palette","common","white","backgroundColor","boxShadow","opacity","border","thumb","track","borderRadius","transition","transitions","create","checked","focusVisible","switchContainer","justifyContent","Switch","createStyles","_objectSpread","indicatorLabelOn","fontWeight","indicatorLabel","fontSize","fieldDescription","marginTop","actionsTray","fieldBasic","_ref$label","_ref$checked","_ref$disabled","disabled","_ref$switchOnly","switchOnly","_ref$description","description","classes","indicatorLabels","_ref$extraInputProps","extraInputProps","switchComponent","React","clsx","_defineProperty","inputProps","disableRipple","disableFocusRipple","disableTouchRipple","Grid","container","item","xs","sm","md","htmlFor","inputLabel","tooltipContainer","title","textAlign","Typography","component","inputStyles","makeStyles","inputFieldStyles","InputField","props","TextField","InputProps","tooltipHelper","textBoxContainer","flexGrow","right","top","maxWidth","maxHeight","_ref$type","type","_ref$autoComplete","autoComplete","_ref$multiline","multiline","_ref$index","_ref$error","error","_ref$required","required","_ref$placeholder","min","max","overlayId","_ref$overlayIcon","_ref$overlayObject","overlayObject","_ref$noLabelMinWidth","noLabelMinWidth","_ref$pattern","pattern","_ref$autoFocus","autoFocus","_ref$className","onKeyPress","onFocus","onPaste","toggleTextInput","setToggleTextInput","inputBoxWrapperIcon","inputBoxWrapperType","VisibilityOffIcon","RemoveRedEyeIcon","errorInField","inputBoxContainer","noMinWidthLabel","fullWidth","helperText","inputRebase","IconButton","onClick","size","predefinedList","content","_ref$multiLine","multiLine","actionButton","prefinedContainer","predefinedTitle","includesActionButton","innerContentMultiline","innerContent","overlayShareOption","createSvgIcon","d","open","onCloseEndpoint","setName","_useState3","_useState4","endpoint","setEndpoint","_useState5","_useState6","authToken","setAuthToken","_useState7","_useState8","saving","setSaving","_useState9","_useState10","invalidInputs","setInvalidInput","_useState11","_useState12","initialInputs","setInitialInputs","dispatch","useAppDispatch","initializeInput","validateInput","valid","includes","icon","Webhook","CallToActionIcon","PendingActionsIcon","ModalWrapper","modalOpen","onClose","titleIcon","FormLayout","containerPadding","event","validity","marginBottom","ProgressBar","modalStyleUtils","modalButtonBar","Button","variant","marginRight","payload","key_values","key","arn_resource_id","api","configs","setConfig","then","res","setServerNeedsRestart","data","restart","setSnackBarMessage","configurationIsLoading","catch","err","setErrorSnackMessage","errorToHandler","selectedARN","deleteLoading","setDeleteLoading","resetConfig","defaultWH","message","ConfirmDialog","confirmText","isOpen","isLoading","onConfirm","ConfirmDeleteIcon","confirmationContent","_overrideValues$enabl","_overrideValues$endpo","_overrideValues$auth_","endpointInfo","endpointState","setEndpointState","endpointLocate","find","tokenLocate","enable","endpointValue","tokenValue","hasOverride","itm","env_override","overrideValues","overrideFields","formFieldStyles","formFieldRow","PredefinedList","paddingRight","overrideEnv","ConsoleIcon","style","auth_token","FormSwitchWrapper","InputBoxWrapper","setResetConfigurationOpen","WebhookSettingslist","newEndpointOpen","setNewEndpointOpen","deleteWebhookOpen","setDeleteWebhookOpen","editWebhookOpen","setEditWebhookOpen","setSelectedARN","selectedEndpoint","setSelectedEndpoint","actions","disableButtonFunction","wHook","_wHook$key_values","AddEndpointModal","DeleteWebhookEndpoint","EditWebhookEndpoint","DataTable","columns","elementKey","renderFunction","EnableFilter","overrideEnabled","flexDirection","justifyItems","fill","TierOfflineIcon","TierOnlineIcon","endpointFilter","itemActions","idField","records","entityName","customPaperHeight","selectedConfiguration","navigate","useNavigate","_useLocation$pathname","useLocation","pathname","selConfigTab","substring","lastIndexOf","valuesObj","setValueObj","configValues","setConfigValues","configSubsysList","setConfigSubsysList","resetConfigurationOpen","overrideEnvs","setOverrideEnvs","loadingConfig","useSelector","state","system","loadingConfigurations","configId","configInfo","values","keyVals","fieldsConfigurations","field","includedValue","customValue","customValueProcess","removeEmptyFields","configuration_id","onValueChange","newValue","resetConfigurationMOpen","onMouseMove","setHelpName","configuration_label","ResetConfigurationModal","configurationName","closeResetModalAndRefresh","resetOpen","paddingTop","Loader","WebhookSettings","noValidate","onSubmit","preventDefault","flexFlow","gridTemplateColumns","gap","ConfTargetGeneric","fields","defaultVals","configName","validActiveConfig","configurationElements","containerClassName","minWidth","EditConfiguration","useDispatch","_useApi","useApi","performDownload","Blob","window","atob","DateTime","now","toFormat","_useApi2","isReqLoading","invokeApi","TooltipWrapper","UploadIcon","needsRestart","serverNeedsRestart","undefined","refreshPage","setRefreshPage","fileUpload","files","fileToUpload","formData","FormData","blobFile","append","click","DownloadIcon","NON_SUB_SYS_CONFIG_ITEMS","IGNORED_CONFIG_SUB_SYS","configSubSysList","setConfigSubSysList","fetchConfigSubSysList","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","listConfig","_res$data","configurations","_res$data2","confSubSysList","reduce","acc","_ref2","_ref2$key","stop","availableConfigSubSys","_ref3","PageHeaderWrapper","HelpMenu","PageLayout","ScreenTitle","SettingsIcon","ImportConfigButton","ExportConfigButton","Tabs","currentTabOrPath","onTabClick","path","useRouteTabs","options","tabConfig","to","IAM_PAGES","SETTINGS","routes","Routes","Route","ConfigurationForm","Navigate","HelpBox","iconComponent","help","href","rel","PublicIcon","CompressIcon","CodeIcon","LocalHospitalIcon","FindReplaceIcon","VpnKeyIcon","LogsIcon","region","compression","heal","scanner","etcd","logger_webhook","audit_webhook","audit_kafka","origValue","formFields","selectSAs","setSelectedSAs","selectedSAs","targetD","overrideReturn","forEach","envItem","valueDef","defaults","defValue","storedConfig","valueHolder","setValueHolder","fieldsElements","defValList","setValueElement","valuesDup","fieldDefinition","holderItem","override","ReadBox","CSVMultiSelector","valCh","Array","isArray","CommentBox","resetLoading","setResetLoading","whiteSpace","wordWrap","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","Object","defineProperty","enumerable","_utils","createChainedFunction","validator","reason","componentNameInError","Component","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/3509.f3bae3cd.chunk.js b/portal-ui/build/static/js/3509.3accc3d1.chunk.js similarity index 98% rename from portal-ui/build/static/js/3509.f3bae3cd.chunk.js rename to portal-ui/build/static/js/3509.3accc3d1.chunk.js index 30d2ba0bbf..e8846e3ee1 100644 --- a/portal-ui/build/static/js/3509.f3bae3cd.chunk.js +++ b/portal-ui/build/static/js/3509.3accc3d1.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[3509],{83509:function(e,t,a){a.r(t);var n=a(29439),i=a(1413),r=a(72791),l=a(29945),c=a(11135),s=a(25787),o=a(56028),d=a(17420),u=a(23814),h=a(87995),p=a(81551),f=a(31776),g=a(82342),x=a(80184);t.default=(0,s.Z)((function(e){return(0,c.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},u.bK),u.QV),u.DF),u.ID),{},{modalFormScrollable:(0,i.Z)((0,i.Z)({},u.ID.modalFormScrollable),{},{paddingRight:10})}))}))((function(e){var t=e.closeModalAndRefresh,a=e.open,i=(e.classes,e.bucketName),c=e.ruleID,s=(0,p.TL)(),v=(0,r.useState)(!0),m=(0,n.Z)(v,2),j=m[0],b=m[1],S=(0,r.useState)(!1),Z=(0,n.Z)(S,2),k=Z[0],y=Z[1],C=(0,r.useState)("1"),D=(0,n.Z)(C,2),I=D[0],R=D[1],E=(0,r.useState)(""),w=(0,n.Z)(E,2),B=w[0],z=w[1],M=(0,r.useState)(""),A=(0,n.Z)(M,2),N=A[0],P=A[1],_=(0,r.useState)(!1),O=(0,n.Z)(_,2),T=O[0],W=O[1],F=(0,r.useState)(!1),V=(0,n.Z)(F,2),q=V[0],K=V[1],L=(0,r.useState)(""),Y=(0,n.Z)(L,2),U=Y[0],Q=Y[1],G=(0,r.useState)(""),H=(0,n.Z)(G,2),J=H[0],X=H[1],$=(0,r.useState)(""),ee=(0,n.Z)($,2),te=ee[0],ae=ee[1],ne=(0,r.useState)(!1),ie=(0,n.Z)(ne,2),re=ie[0],le=ie[1],ce=(0,r.useState)(!1),se=(0,n.Z)(ce,2),oe=se[0],de=se[1],ue=(0,r.useState)(!1),he=(0,n.Z)(ue,2),pe=he[0],fe=he[1];return(0,r.useEffect)((function(){j&&f.h.buckets.getBucketReplicationRule(i,c).then((function(e){var t;R(e.data.priority?e.data.priority.toString():"");var a=e.data.prefix||"",n=e.data.tags||"";P(a),Q(n),X(n),z((null===(t=e.data.destination)||void 0===t?void 0:t.bucket)||""),W(e.data.delete_marker_replication||!1),ae(e.data.storageClass||""),le(!!e.data.existingObjects),de(!!e.data.deletes_replication),fe("Enabled"===e.data.status),K(!!e.data.metadata_replication),b(!1)})).catch((function(e){s((0,h.zb)((0,g.g)(e.error))),b(!1)}))}),[j,s,i,c]),(0,r.useEffect)((function(){if(k){var e={arn:B,ruleState:pe,prefix:N,tags:J,replicateDeleteMarkers:T,replicateDeletes:oe,replicateExistingObjects:re,replicateMetadata:q,priority:parseInt(I),storageClass:te};f.h.buckets.updateMultiBucketReplication(i,c,e).then((function(){y(!1),t(!0)})).catch((function(e){s((0,h.zb)((0,g.g)(e.error))),y(!1)}))}}),[k,i,c,B,N,J,T,I,oe,re,pe,q,te,t,s]),(0,x.jsx)(o.Z,{modalOpen:a,onClose:function(){t(!1)},title:"Edit Bucket Replication",titleIcon:(0,x.jsx)(l.xRg,{}),children:(0,x.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),y(!0)},children:(0,x.jsxs)(l.ltY,{containerPadding:!1,withBorders:!1,children:[(0,x.jsx)(l.rsf,{checked:pe,id:"ruleState",name:"ruleState",label:"Rule State",onChange:function(e){fe(e.target.checked)}}),(0,x.jsx)(l.bSr,{label:"Destination",sx:{width:"100%"},children:B}),(0,x.jsx)(l.Wzg,{id:"priority",name:"priority",onChange:function(e){e.target.validity.valid&&R(e.target.value)},label:"Priority",value:I,pattern:"[0-9]*"}),(0,x.jsx)(l.Wzg,{id:"storageClass",name:"storageClass",onChange:function(e){ae(e.target.value)},placeholder:"STANDARD_IA,REDUCED_REDUNDANCY etc",label:"Storage Class",value:te}),(0,x.jsxs)("fieldset",{className:"inputItem",children:[(0,x.jsx)("legend",{children:"Object Filters"}),(0,x.jsx)(l.Wzg,{id:"prefix",name:"prefix",onChange:function(e){P(e.target.value)},placeholder:"prefix",label:"Prefix",value:N}),(0,x.jsx)(d.Z,{name:"tags",label:"Tags",elements:U,onChange:function(e){X(e)},keyPlaceholder:"Tag Key",valuePlaceholder:"Tag Value",withBorder:!0})]}),(0,x.jsxs)("fieldset",{className:"inputItem",children:[(0,x.jsx)("legend",{children:"Replication Options"}),(0,x.jsx)(l.rsf,{checked:re,id:"repExisting",name:"repExisting",label:"Existing Objects",onChange:function(e){le(e.target.checked)},description:"Replicate existing objects"}),(0,x.jsx)(l.rsf,{checked:q,id:"metadatataSync",name:"metadatataSync",label:"Metadata Sync",onChange:function(e){K(e.target.checked)},description:"Metadata Sync"}),(0,x.jsx)(l.rsf,{checked:T,id:"deleteMarker",name:"deleteMarker",label:"Delete Marker",onChange:function(e){W(e.target.checked)},description:"Replicate soft deletes"}),(0,x.jsx)(l.rsf,{checked:oe,id:"repDelete",name:"repDelete",label:"Deletes",onChange:function(e){de(e.target.checked)},description:"Replicate versioned deletes"})]}),(0,x.jsxs)(l.rjZ,{item:!0,xs:12,sx:u.ID.modalButtonBar,children:[(0,x.jsx)(l.zxk,{id:"cancel-edit-replication",type:"button",variant:"regular",disabled:j||k,onClick:function(){t(!1)},label:"Cancel"}),(0,x.jsx)(l.zxk,{id:"save-replication",type:"submit",variant:"callAction",disabled:j||k,label:"Save"})]})]})})})}))},17420:function(e,t,a){var n=a(93433),i=a(29439),r=a(72791),l=a(26181),c=a.n(l),s=a(48573),o=a.n(s),d=a(29945),u=a(80184);t.Z=function(e){var t=e.elements,a=e.name,l=e.label,s=e.tooltip,h=void 0===s?"":s,p=e.keyPlaceholder,f=void 0===p?"":p,g=e.valuePlaceholder,x=void 0===g?"":g,v=e.onChange,m=e.withBorder,j=void 0!==m&&m,b=(0,r.useState)([""]),S=(0,i.Z)(b,2),Z=S[0],k=S[1],y=(0,r.useState)([""]),C=(0,i.Z)(y,2),D=C[0],I=C[1],R=(0,r.createRef)();(0,r.useEffect)((function(){if(1===Z.length&&""===Z[0]&&1===D.length&&""===D[0]&&t&&""!==t){var e=t.split("&"),a=[],n=[];e.forEach((function(e){var t=e.split("=");2===t.length&&(a.push(t[0]),n.push(t[1]))})),a.push(""),n.push(""),k(a),I(n)}}),[Z,D,t]),(0,r.useEffect)((function(){var e=R.current;e&&Z.length>1&&e.scrollIntoView(!1)}),[Z]);var E=(0,r.useRef)(!0);(0,r.useLayoutEffect)((function(){E.current?E.current=!1:z()}),[Z,D]);var w=function(e){e.persist();var t=(0,n.Z)(Z),a=c()(e.target,"dataset.index","0");t[parseInt(a)]=e.target.value,k(t)},B=function(e){e.persist();var t=(0,n.Z)(D),a=c()(e.target,"dataset.index","0");t[parseInt(a)]=e.target.value,I(t)},z=o()((function(){var e="";Z.forEach((function(t,a){if(Z[a]&&D[a]){var n="".concat(t,"=").concat(D[a]);0!==a&&(n="&".concat(n)),e="".concat(e).concat(n)}})),v(e)}),500),M=D.map((function(e,t){return(0,u.jsxs)(d.rjZ,{item:!0,xs:12,className:"lineInputBoxes inputItem",children:[(0,u.jsx)(d.Wzg,{id:"".concat(a,"-key-").concat(t.toString()),label:"",name:"".concat(a,"-").concat(t.toString()),value:Z[t],onChange:w,index:t,placeholder:f}),(0,u.jsx)("span",{className:"queryDiv",children:":"}),(0,u.jsx)(d.Wzg,{id:"".concat(a,"-value-").concat(t.toString()),label:"",name:"".concat(a,"-").concat(t.toString()),value:D[t],onChange:B,index:t,placeholder:x,overlayIcon:t===D.length-1?(0,u.jsx)(d.dtP,{}):null,overlayAction:function(){!function(){if(""!==Z[Z.length-1].trim()&&""!==D[D.length-1].trim()){var e=(0,n.Z)(Z),t=(0,n.Z)(D);e.push(""),t.push(""),k(e),I(t)}}()}})]},"query-pair-".concat(a,"-").concat(t.toString()))}));return(0,u.jsx)(r.Fragment,{children:(0,u.jsxs)(d.rjZ,{item:!0,xs:12,sx:{"& .lineInputBoxes":{display:"flex"},"& .queryDiv":{alignSelf:"center",margin:"-15px 4px 0",fontWeight:600}},children:[(0,u.jsxs)(d.AZs,{children:[l,""!==h&&(0,u.jsx)(d.xuv,{sx:{marginLeft:5,display:"flex",alignItems:"center","& .min-icon":{width:13}},children:(0,u.jsx)(d.ua7,{tooltip:h,placement:"top",children:(0,u.jsx)(d.byK,{style:{width:13,height:13}})})})]}),(0,u.jsxs)(d.xuv,{withBorders:j,sx:{padding:15,height:150,overflowY:"auto",position:"relative",marginTop:15},children:[M,(0,u.jsx)("div",{ref:R})]})]})})}}}]); -//# sourceMappingURL=3509.f3bae3cd.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[3509],{83509:function(e,t,a){a.r(t);var n=a(29439),i=a(1413),r=a(72791),l=a(29945),c=a(11135),s=a(25787),o=a(56028),d=a(17420),u=a(23814),h=a(87995),p=a(44690),f=a(31776),g=a(82342),x=a(80184);t.default=(0,s.Z)((function(e){return(0,c.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},u.bK),u.QV),u.DF),u.ID),{},{modalFormScrollable:(0,i.Z)((0,i.Z)({},u.ID.modalFormScrollable),{},{paddingRight:10})}))}))((function(e){var t=e.closeModalAndRefresh,a=e.open,i=(e.classes,e.bucketName),c=e.ruleID,s=(0,p.TL)(),v=(0,r.useState)(!0),m=(0,n.Z)(v,2),j=m[0],b=m[1],S=(0,r.useState)(!1),Z=(0,n.Z)(S,2),k=Z[0],y=Z[1],C=(0,r.useState)("1"),D=(0,n.Z)(C,2),I=D[0],R=D[1],E=(0,r.useState)(""),w=(0,n.Z)(E,2),B=w[0],z=w[1],M=(0,r.useState)(""),A=(0,n.Z)(M,2),N=A[0],P=A[1],_=(0,r.useState)(!1),O=(0,n.Z)(_,2),T=O[0],W=O[1],F=(0,r.useState)(!1),V=(0,n.Z)(F,2),q=V[0],K=V[1],L=(0,r.useState)(""),Y=(0,n.Z)(L,2),U=Y[0],Q=Y[1],G=(0,r.useState)(""),H=(0,n.Z)(G,2),J=H[0],X=H[1],$=(0,r.useState)(""),ee=(0,n.Z)($,2),te=ee[0],ae=ee[1],ne=(0,r.useState)(!1),ie=(0,n.Z)(ne,2),re=ie[0],le=ie[1],ce=(0,r.useState)(!1),se=(0,n.Z)(ce,2),oe=se[0],de=se[1],ue=(0,r.useState)(!1),he=(0,n.Z)(ue,2),pe=he[0],fe=he[1];return(0,r.useEffect)((function(){j&&f.h.buckets.getBucketReplicationRule(i,c).then((function(e){var t;R(e.data.priority?e.data.priority.toString():"");var a=e.data.prefix||"",n=e.data.tags||"";P(a),Q(n),X(n),z((null===(t=e.data.destination)||void 0===t?void 0:t.bucket)||""),W(e.data.delete_marker_replication||!1),ae(e.data.storageClass||""),le(!!e.data.existingObjects),de(!!e.data.deletes_replication),fe("Enabled"===e.data.status),K(!!e.data.metadata_replication),b(!1)})).catch((function(e){s((0,h.zb)((0,g.g)(e.error))),b(!1)}))}),[j,s,i,c]),(0,r.useEffect)((function(){if(k){var e={arn:B,ruleState:pe,prefix:N,tags:J,replicateDeleteMarkers:T,replicateDeletes:oe,replicateExistingObjects:re,replicateMetadata:q,priority:parseInt(I),storageClass:te};f.h.buckets.updateMultiBucketReplication(i,c,e).then((function(){y(!1),t(!0)})).catch((function(e){s((0,h.zb)((0,g.g)(e.error))),y(!1)}))}}),[k,i,c,B,N,J,T,I,oe,re,pe,q,te,t,s]),(0,x.jsx)(o.Z,{modalOpen:a,onClose:function(){t(!1)},title:"Edit Bucket Replication",titleIcon:(0,x.jsx)(l.xRg,{}),children:(0,x.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),y(!0)},children:(0,x.jsxs)(l.ltY,{containerPadding:!1,withBorders:!1,children:[(0,x.jsx)(l.rsf,{checked:pe,id:"ruleState",name:"ruleState",label:"Rule State",onChange:function(e){fe(e.target.checked)}}),(0,x.jsx)(l.bSr,{label:"Destination",sx:{width:"100%"},children:B}),(0,x.jsx)(l.Wzg,{id:"priority",name:"priority",onChange:function(e){e.target.validity.valid&&R(e.target.value)},label:"Priority",value:I,pattern:"[0-9]*"}),(0,x.jsx)(l.Wzg,{id:"storageClass",name:"storageClass",onChange:function(e){ae(e.target.value)},placeholder:"STANDARD_IA,REDUCED_REDUNDANCY etc",label:"Storage Class",value:te}),(0,x.jsxs)("fieldset",{className:"inputItem",children:[(0,x.jsx)("legend",{children:"Object Filters"}),(0,x.jsx)(l.Wzg,{id:"prefix",name:"prefix",onChange:function(e){P(e.target.value)},placeholder:"prefix",label:"Prefix",value:N}),(0,x.jsx)(d.Z,{name:"tags",label:"Tags",elements:U,onChange:function(e){X(e)},keyPlaceholder:"Tag Key",valuePlaceholder:"Tag Value",withBorder:!0})]}),(0,x.jsxs)("fieldset",{className:"inputItem",children:[(0,x.jsx)("legend",{children:"Replication Options"}),(0,x.jsx)(l.rsf,{checked:re,id:"repExisting",name:"repExisting",label:"Existing Objects",onChange:function(e){le(e.target.checked)},description:"Replicate existing objects"}),(0,x.jsx)(l.rsf,{checked:q,id:"metadatataSync",name:"metadatataSync",label:"Metadata Sync",onChange:function(e){K(e.target.checked)},description:"Metadata Sync"}),(0,x.jsx)(l.rsf,{checked:T,id:"deleteMarker",name:"deleteMarker",label:"Delete Marker",onChange:function(e){W(e.target.checked)},description:"Replicate soft deletes"}),(0,x.jsx)(l.rsf,{checked:oe,id:"repDelete",name:"repDelete",label:"Deletes",onChange:function(e){de(e.target.checked)},description:"Replicate versioned deletes"})]}),(0,x.jsxs)(l.rjZ,{item:!0,xs:12,sx:u.ID.modalButtonBar,children:[(0,x.jsx)(l.zxk,{id:"cancel-edit-replication",type:"button",variant:"regular",disabled:j||k,onClick:function(){t(!1)},label:"Cancel"}),(0,x.jsx)(l.zxk,{id:"save-replication",type:"submit",variant:"callAction",disabled:j||k,label:"Save"})]})]})})})}))},17420:function(e,t,a){var n=a(93433),i=a(29439),r=a(72791),l=a(26181),c=a.n(l),s=a(48573),o=a.n(s),d=a(29945),u=a(80184);t.Z=function(e){var t=e.elements,a=e.name,l=e.label,s=e.tooltip,h=void 0===s?"":s,p=e.keyPlaceholder,f=void 0===p?"":p,g=e.valuePlaceholder,x=void 0===g?"":g,v=e.onChange,m=e.withBorder,j=void 0!==m&&m,b=(0,r.useState)([""]),S=(0,i.Z)(b,2),Z=S[0],k=S[1],y=(0,r.useState)([""]),C=(0,i.Z)(y,2),D=C[0],I=C[1],R=(0,r.createRef)();(0,r.useEffect)((function(){if(1===Z.length&&""===Z[0]&&1===D.length&&""===D[0]&&t&&""!==t){var e=t.split("&"),a=[],n=[];e.forEach((function(e){var t=e.split("=");2===t.length&&(a.push(t[0]),n.push(t[1]))})),a.push(""),n.push(""),k(a),I(n)}}),[Z,D,t]),(0,r.useEffect)((function(){var e=R.current;e&&Z.length>1&&e.scrollIntoView(!1)}),[Z]);var E=(0,r.useRef)(!0);(0,r.useLayoutEffect)((function(){E.current?E.current=!1:z()}),[Z,D]);var w=function(e){e.persist();var t=(0,n.Z)(Z),a=c()(e.target,"dataset.index","0");t[parseInt(a)]=e.target.value,k(t)},B=function(e){e.persist();var t=(0,n.Z)(D),a=c()(e.target,"dataset.index","0");t[parseInt(a)]=e.target.value,I(t)},z=o()((function(){var e="";Z.forEach((function(t,a){if(Z[a]&&D[a]){var n="".concat(t,"=").concat(D[a]);0!==a&&(n="&".concat(n)),e="".concat(e).concat(n)}})),v(e)}),500),M=D.map((function(e,t){return(0,u.jsxs)(d.rjZ,{item:!0,xs:12,className:"lineInputBoxes inputItem",children:[(0,u.jsx)(d.Wzg,{id:"".concat(a,"-key-").concat(t.toString()),label:"",name:"".concat(a,"-").concat(t.toString()),value:Z[t],onChange:w,index:t,placeholder:f}),(0,u.jsx)("span",{className:"queryDiv",children:":"}),(0,u.jsx)(d.Wzg,{id:"".concat(a,"-value-").concat(t.toString()),label:"",name:"".concat(a,"-").concat(t.toString()),value:D[t],onChange:B,index:t,placeholder:x,overlayIcon:t===D.length-1?(0,u.jsx)(d.dtP,{}):null,overlayAction:function(){!function(){if(""!==Z[Z.length-1].trim()&&""!==D[D.length-1].trim()){var e=(0,n.Z)(Z),t=(0,n.Z)(D);e.push(""),t.push(""),k(e),I(t)}}()}})]},"query-pair-".concat(a,"-").concat(t.toString()))}));return(0,u.jsx)(r.Fragment,{children:(0,u.jsxs)(d.rjZ,{item:!0,xs:12,sx:{"& .lineInputBoxes":{display:"flex"},"& .queryDiv":{alignSelf:"center",margin:"-15px 4px 0",fontWeight:600}},children:[(0,u.jsxs)(d.AZs,{children:[l,""!==h&&(0,u.jsx)(d.xuv,{sx:{marginLeft:5,display:"flex",alignItems:"center","& .min-icon":{width:13}},children:(0,u.jsx)(d.ua7,{tooltip:h,placement:"top",children:(0,u.jsx)(d.byK,{style:{width:13,height:13}})})})]}),(0,u.jsxs)(d.xuv,{withBorders:j,sx:{padding:15,height:150,overflowY:"auto",position:"relative",marginTop:15},children:[M,(0,u.jsx)("div",{ref:R})]})]})})}}}]); +//# sourceMappingURL=3509.3accc3d1.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/3509.f3bae3cd.chunk.js.map b/portal-ui/build/static/js/3509.3accc3d1.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/3509.f3bae3cd.chunk.js.map rename to portal-ui/build/static/js/3509.3accc3d1.chunk.js.map index 2851449993..ef0dbb13d5 100644 --- a/portal-ui/build/static/js/3509.f3bae3cd.chunk.js.map +++ b/portal-ui/build/static/js/3509.3accc3d1.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/3509.f3bae3cd.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/EditReplicationModal.tsx","screens/Console/Common/FormComponents/QueryMultiSelector/QueryMultiSelector.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 { Theme } from \"@mui/material/styles\";\nimport {\n BucketReplicationIcon,\n Button,\n FormLayout,\n InputBox,\n ReadBox,\n Switch,\n Grid,\n} from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport QueryMultiSelector from \"../../Common/FormComponents/QueryMultiSelector/QueryMultiSelector\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IEditReplicationModal {\n closeModalAndRefresh: (refresh: boolean) => void;\n open: boolean;\n classes: any;\n bucketName: string;\n ruleID: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...spacingUtils,\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalStyleUtils,\n modalFormScrollable: {\n ...modalStyleUtils.modalFormScrollable,\n paddingRight: 10,\n },\n });\n\nconst EditReplicationModal = ({\n closeModalAndRefresh,\n open,\n classes,\n bucketName,\n ruleID,\n}: IEditReplicationModal) => {\n const dispatch = useAppDispatch();\n const [editLoading, setEditLoading] = useState(true);\n const [saveEdit, setSaveEdit] = useState(false);\n const [priority, setPriority] = useState(\"1\");\n const [destination, setDestination] = useState(\"\");\n const [prefix, setPrefix] = useState(\"\");\n const [repDeleteMarker, setRepDeleteMarker] = useState(false);\n const [metadataSync, setMetadataSync] = useState(false);\n const [initialTags, setInitialTags] = useState(\"\");\n const [tags, setTags] = useState(\"\");\n const [targetStorageClass, setTargetStorageClass] = useState(\"\");\n const [repExisting, setRepExisting] = useState(false);\n const [repDelete, setRepDelete] = useState(false);\n const [ruleState, setRuleState] = useState(false);\n\n useEffect(() => {\n if (editLoading) {\n api.buckets\n .getBucketReplicationRule(bucketName, ruleID)\n .then((res) => {\n setPriority(res.data.priority ? res.data.priority.toString() : \"\");\n const pref = res.data.prefix || \"\";\n const tag = res.data.tags || \"\";\n setPrefix(pref);\n setInitialTags(tag);\n setTags(tag);\n setDestination(res.data.destination?.bucket || \"\");\n setRepDeleteMarker(res.data.delete_marker_replication || false);\n setTargetStorageClass(res.data.storageClass || \"\");\n setRepExisting(!!res.data.existingObjects);\n setRepDelete(!!res.data.deletes_replication);\n setRuleState(res.data.status === \"Enabled\");\n setMetadataSync(!!res.data.metadata_replication);\n\n setEditLoading(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setEditLoading(false);\n });\n }\n }, [editLoading, dispatch, bucketName, ruleID]);\n\n useEffect(() => {\n if (saveEdit) {\n const remoteBucketsInfo = {\n arn: destination,\n ruleState: ruleState,\n prefix: prefix,\n tags: tags,\n replicateDeleteMarkers: repDeleteMarker,\n replicateDeletes: repDelete,\n replicateExistingObjects: repExisting,\n replicateMetadata: metadataSync,\n priority: parseInt(priority),\n storageClass: targetStorageClass,\n };\n\n api.buckets\n .updateMultiBucketReplication(bucketName, ruleID, remoteBucketsInfo)\n .then(() => {\n setSaveEdit(false);\n closeModalAndRefresh(true);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setSaveEdit(false);\n });\n }\n }, [\n saveEdit,\n bucketName,\n ruleID,\n destination,\n prefix,\n tags,\n repDeleteMarker,\n priority,\n repDelete,\n repExisting,\n ruleState,\n metadataSync,\n targetStorageClass,\n closeModalAndRefresh,\n dispatch,\n ]);\n\n return (\n {\n closeModalAndRefresh(false);\n }}\n title=\"Edit Bucket Replication\"\n titleIcon={}\n >\n ) => {\n e.preventDefault();\n setSaveEdit(true);\n }}\n >\n \n {\n setRuleState(e.target.checked);\n }}\n />\n \n {destination}\n \n\n ) => {\n if (e.target.validity.valid) {\n setPriority(e.target.value);\n }\n }}\n label=\"Priority\"\n value={priority}\n pattern={\"[0-9]*\"}\n />\n ) => {\n setTargetStorageClass(e.target.value);\n }}\n placeholder=\"STANDARD_IA,REDUCED_REDUNDANCY etc\"\n label=\"Storage Class\"\n value={targetStorageClass}\n />\n
\n Object Filters\n ) => {\n setPrefix(e.target.value);\n }}\n placeholder=\"prefix\"\n label=\"Prefix\"\n value={prefix}\n />\n {\n setTags(vl);\n }}\n keyPlaceholder=\"Tag Key\"\n valuePlaceholder=\"Tag Value\"\n withBorder\n />\n
\n
\n Replication Options\n\n {\n setRepExisting(e.target.checked);\n }}\n description={\"Replicate existing objects\"}\n />\n\n {\n setMetadataSync(e.target.checked);\n }}\n description={\"Metadata Sync\"}\n />\n\n {\n setRepDeleteMarker(e.target.checked);\n }}\n description={\"Replicate soft deletes\"}\n />\n {\n setRepDelete(e.target.checked);\n }}\n description={\"Replicate versioned deletes\"}\n />\n
\n \n {\n closeModalAndRefresh(false);\n }}\n label={\"Cancel\"}\n />\n \n \n
\n \n \n );\n};\n\nexport default withStyles(styles)(EditReplicationModal);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more 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, {\n ChangeEvent,\n createRef,\n Fragment,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport get from \"lodash/get\";\nimport debounce from \"lodash/debounce\";\nimport {\n AddIcon,\n Box,\n Grid,\n HelpIcon,\n InputBox,\n InputLabel,\n Tooltip,\n} from \"mds\";\n\ninterface IQueryMultiSelector {\n elements: string;\n name: string;\n label: string;\n tooltip?: string;\n keyPlaceholder?: string;\n valuePlaceholder?: string;\n withBorder?: boolean;\n onChange: (elements: string) => void;\n}\n\nconst QueryMultiSelector = ({\n elements,\n name,\n label,\n tooltip = \"\",\n keyPlaceholder = \"\",\n valuePlaceholder = \"\",\n onChange,\n withBorder = false,\n}: IQueryMultiSelector) => {\n const [currentKeys, setCurrentKeys] = useState([\"\"]);\n const [currentValues, setCurrentValues] = useState([\"\"]);\n const bottomList = createRef();\n\n // Use effect to get the initial values from props\n useEffect(() => {\n if (\n currentKeys.length === 1 &&\n currentKeys[0] === \"\" &&\n currentValues.length === 1 &&\n currentValues[0] === \"\" &&\n elements &&\n elements !== \"\"\n ) {\n const elementsSplit = elements.split(\"&\");\n let keys = [];\n let values = [];\n\n elementsSplit.forEach((element: string) => {\n const splittedVals = element.split(\"=\");\n if (splittedVals.length === 2) {\n keys.push(splittedVals[0]);\n values.push(splittedVals[1]);\n }\n });\n\n keys.push(\"\");\n values.push(\"\");\n\n setCurrentKeys(keys);\n setCurrentValues(values);\n }\n }, [currentKeys, currentValues, elements]);\n\n // Use effect to send new values to onChange\n useEffect(() => {\n const refScroll = bottomList.current;\n if (refScroll && currentKeys.length > 1) {\n refScroll.scrollIntoView(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentKeys]);\n\n // We avoid multiple re-renders / hang issue typing too fast\n const firstUpdate = useRef(true);\n useLayoutEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = false;\n return;\n }\n debouncedOnChange();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentKeys, currentValues]);\n\n // If the last input is not empty, we add a new one\n const addEmptyLine = () => {\n if (\n currentKeys[currentKeys.length - 1].trim() !== \"\" &&\n currentValues[currentValues.length - 1].trim() !== \"\"\n ) {\n const keysList = [...currentKeys];\n const valuesList = [...currentValues];\n\n keysList.push(\"\");\n valuesList.push(\"\");\n\n setCurrentKeys(keysList);\n setCurrentValues(valuesList);\n }\n };\n\n // Onchange function for input box, we get the dataset-index & only update that value in the array\n const onChangeKey = (e: ChangeEvent) => {\n e.persist();\n\n let updatedElement = [...currentKeys];\n const index = get(e.target, \"dataset.index\", \"0\");\n const indexNum = parseInt(index);\n updatedElement[indexNum] = e.target.value;\n\n setCurrentKeys(updatedElement);\n };\n\n const onChangeValue = (e: ChangeEvent) => {\n e.persist();\n\n let updatedElement = [...currentValues];\n const index = get(e.target, \"dataset.index\", \"0\");\n const indexNum = parseInt(index);\n updatedElement[indexNum] = e.target.value;\n\n setCurrentValues(updatedElement);\n };\n\n // Debounce for On Change\n const debouncedOnChange = debounce(() => {\n let queryString = \"\";\n\n currentKeys.forEach((keyVal, index) => {\n if (currentKeys[index] && currentValues[index]) {\n let insertString = `${keyVal}=${currentValues[index]}`;\n if (index !== 0) {\n insertString = `&${insertString}`;\n }\n queryString = `${queryString}${insertString}`;\n }\n });\n\n onChange(queryString);\n }, 500);\n\n const inputs = currentValues.map((element, index) => {\n return (\n \n \n :\n : null}\n overlayAction={() => {\n addEmptyLine();\n }}\n />\n \n );\n });\n\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n \n \n \n \n \n )}\n \n \n {inputs}\n
\n \n \n \n );\n};\nexport default QueryMultiSelector;\n"],"names":["withStyles","theme","createStyles","_objectSpread","spacingUtils","createTenantCommon","formFieldStyles","modalStyleUtils","modalFormScrollable","paddingRight","_ref","closeModalAndRefresh","open","bucketName","classes","ruleID","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","editLoading","setEditLoading","_useState3","_useState4","saveEdit","setSaveEdit","_useState5","_useState6","priority","setPriority","_useState7","_useState8","destination","setDestination","_useState9","_useState10","prefix","setPrefix","_useState11","_useState12","repDeleteMarker","setRepDeleteMarker","_useState13","_useState14","metadataSync","setMetadataSync","_useState15","_useState16","initialTags","setInitialTags","_useState17","_useState18","tags","setTags","_useState19","_useState20","targetStorageClass","setTargetStorageClass","_useState21","_useState22","repExisting","setRepExisting","_useState23","_useState24","repDelete","setRepDelete","_useState25","_useState26","ruleState","setRuleState","useEffect","api","buckets","getBucketReplicationRule","then","res","_res$data$destination","data","toString","pref","tag","bucket","delete_marker_replication","storageClass","existingObjects","deletes_replication","status","metadata_replication","catch","err","setModalErrorSnackMessage","errorToHandler","error","remoteBucketsInfo","arn","replicateDeleteMarkers","replicateDeletes","replicateExistingObjects","replicateMetadata","parseInt","updateMultiBucketReplication","_jsx","ModalWrapper","modalOpen","onClose","title","titleIcon","BucketReplicationIcon","children","noValidate","autoComplete","onSubmit","e","preventDefault","_jsxs","FormLayout","containerPadding","withBorders","Switch","checked","id","name","label","onChange","target","ReadBox","sx","width","InputBox","validity","valid","value","pattern","placeholder","className","QueryMultiSelector","elements","vl","keyPlaceholder","valuePlaceholder","withBorder","description","Grid","item","xs","modalButtonBar","Button","type","variant","disabled","onClick","_ref$tooltip","tooltip","_ref$keyPlaceholder","_ref$valuePlaceholder","_ref$withBorder","currentKeys","setCurrentKeys","currentValues","setCurrentValues","bottomList","createRef","length","elementsSplit","split","keys","values","forEach","element","splittedVals","push","refScroll","current","scrollIntoView","firstUpdate","useRef","useLayoutEffect","debouncedOnChange","onChangeKey","persist","updatedElement","_toConsumableArray","index","get","onChangeValue","debounce","queryString","keyVal","insertString","concat","inputs","map","overlayIcon","AddIcon","overlayAction","trim","keysList","valuesList","addEmptyLine","Fragment","display","alignSelf","margin","fontWeight","InputLabel","Box","marginLeft","alignItems","Tooltip","placement","HelpIcon","style","height","padding","overflowY","position","marginTop","ref"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/3509.3accc3d1.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/EditReplicationModal.tsx","screens/Console/Common/FormComponents/QueryMultiSelector/QueryMultiSelector.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 { Theme } from \"@mui/material/styles\";\nimport {\n BucketReplicationIcon,\n Button,\n FormLayout,\n InputBox,\n ReadBox,\n Switch,\n Grid,\n} from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport QueryMultiSelector from \"../../Common/FormComponents/QueryMultiSelector/QueryMultiSelector\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IEditReplicationModal {\n closeModalAndRefresh: (refresh: boolean) => void;\n open: boolean;\n classes: any;\n bucketName: string;\n ruleID: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...spacingUtils,\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalStyleUtils,\n modalFormScrollable: {\n ...modalStyleUtils.modalFormScrollable,\n paddingRight: 10,\n },\n });\n\nconst EditReplicationModal = ({\n closeModalAndRefresh,\n open,\n classes,\n bucketName,\n ruleID,\n}: IEditReplicationModal) => {\n const dispatch = useAppDispatch();\n const [editLoading, setEditLoading] = useState(true);\n const [saveEdit, setSaveEdit] = useState(false);\n const [priority, setPriority] = useState(\"1\");\n const [destination, setDestination] = useState(\"\");\n const [prefix, setPrefix] = useState(\"\");\n const [repDeleteMarker, setRepDeleteMarker] = useState(false);\n const [metadataSync, setMetadataSync] = useState(false);\n const [initialTags, setInitialTags] = useState(\"\");\n const [tags, setTags] = useState(\"\");\n const [targetStorageClass, setTargetStorageClass] = useState(\"\");\n const [repExisting, setRepExisting] = useState(false);\n const [repDelete, setRepDelete] = useState(false);\n const [ruleState, setRuleState] = useState(false);\n\n useEffect(() => {\n if (editLoading) {\n api.buckets\n .getBucketReplicationRule(bucketName, ruleID)\n .then((res) => {\n setPriority(res.data.priority ? res.data.priority.toString() : \"\");\n const pref = res.data.prefix || \"\";\n const tag = res.data.tags || \"\";\n setPrefix(pref);\n setInitialTags(tag);\n setTags(tag);\n setDestination(res.data.destination?.bucket || \"\");\n setRepDeleteMarker(res.data.delete_marker_replication || false);\n setTargetStorageClass(res.data.storageClass || \"\");\n setRepExisting(!!res.data.existingObjects);\n setRepDelete(!!res.data.deletes_replication);\n setRuleState(res.data.status === \"Enabled\");\n setMetadataSync(!!res.data.metadata_replication);\n\n setEditLoading(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setEditLoading(false);\n });\n }\n }, [editLoading, dispatch, bucketName, ruleID]);\n\n useEffect(() => {\n if (saveEdit) {\n const remoteBucketsInfo = {\n arn: destination,\n ruleState: ruleState,\n prefix: prefix,\n tags: tags,\n replicateDeleteMarkers: repDeleteMarker,\n replicateDeletes: repDelete,\n replicateExistingObjects: repExisting,\n replicateMetadata: metadataSync,\n priority: parseInt(priority),\n storageClass: targetStorageClass,\n };\n\n api.buckets\n .updateMultiBucketReplication(bucketName, ruleID, remoteBucketsInfo)\n .then(() => {\n setSaveEdit(false);\n closeModalAndRefresh(true);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setSaveEdit(false);\n });\n }\n }, [\n saveEdit,\n bucketName,\n ruleID,\n destination,\n prefix,\n tags,\n repDeleteMarker,\n priority,\n repDelete,\n repExisting,\n ruleState,\n metadataSync,\n targetStorageClass,\n closeModalAndRefresh,\n dispatch,\n ]);\n\n return (\n {\n closeModalAndRefresh(false);\n }}\n title=\"Edit Bucket Replication\"\n titleIcon={}\n >\n ) => {\n e.preventDefault();\n setSaveEdit(true);\n }}\n >\n \n {\n setRuleState(e.target.checked);\n }}\n />\n \n {destination}\n \n\n ) => {\n if (e.target.validity.valid) {\n setPriority(e.target.value);\n }\n }}\n label=\"Priority\"\n value={priority}\n pattern={\"[0-9]*\"}\n />\n ) => {\n setTargetStorageClass(e.target.value);\n }}\n placeholder=\"STANDARD_IA,REDUCED_REDUNDANCY etc\"\n label=\"Storage Class\"\n value={targetStorageClass}\n />\n
\n Object Filters\n ) => {\n setPrefix(e.target.value);\n }}\n placeholder=\"prefix\"\n label=\"Prefix\"\n value={prefix}\n />\n {\n setTags(vl);\n }}\n keyPlaceholder=\"Tag Key\"\n valuePlaceholder=\"Tag Value\"\n withBorder\n />\n
\n
\n Replication Options\n\n {\n setRepExisting(e.target.checked);\n }}\n description={\"Replicate existing objects\"}\n />\n\n {\n setMetadataSync(e.target.checked);\n }}\n description={\"Metadata Sync\"}\n />\n\n {\n setRepDeleteMarker(e.target.checked);\n }}\n description={\"Replicate soft deletes\"}\n />\n {\n setRepDelete(e.target.checked);\n }}\n description={\"Replicate versioned deletes\"}\n />\n
\n \n {\n closeModalAndRefresh(false);\n }}\n label={\"Cancel\"}\n />\n \n \n
\n \n \n );\n};\n\nexport default withStyles(styles)(EditReplicationModal);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more 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, {\n ChangeEvent,\n createRef,\n Fragment,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport get from \"lodash/get\";\nimport debounce from \"lodash/debounce\";\nimport {\n AddIcon,\n Box,\n Grid,\n HelpIcon,\n InputBox,\n InputLabel,\n Tooltip,\n} from \"mds\";\n\ninterface IQueryMultiSelector {\n elements: string;\n name: string;\n label: string;\n tooltip?: string;\n keyPlaceholder?: string;\n valuePlaceholder?: string;\n withBorder?: boolean;\n onChange: (elements: string) => void;\n}\n\nconst QueryMultiSelector = ({\n elements,\n name,\n label,\n tooltip = \"\",\n keyPlaceholder = \"\",\n valuePlaceholder = \"\",\n onChange,\n withBorder = false,\n}: IQueryMultiSelector) => {\n const [currentKeys, setCurrentKeys] = useState([\"\"]);\n const [currentValues, setCurrentValues] = useState([\"\"]);\n const bottomList = createRef();\n\n // Use effect to get the initial values from props\n useEffect(() => {\n if (\n currentKeys.length === 1 &&\n currentKeys[0] === \"\" &&\n currentValues.length === 1 &&\n currentValues[0] === \"\" &&\n elements &&\n elements !== \"\"\n ) {\n const elementsSplit = elements.split(\"&\");\n let keys = [];\n let values = [];\n\n elementsSplit.forEach((element: string) => {\n const splittedVals = element.split(\"=\");\n if (splittedVals.length === 2) {\n keys.push(splittedVals[0]);\n values.push(splittedVals[1]);\n }\n });\n\n keys.push(\"\");\n values.push(\"\");\n\n setCurrentKeys(keys);\n setCurrentValues(values);\n }\n }, [currentKeys, currentValues, elements]);\n\n // Use effect to send new values to onChange\n useEffect(() => {\n const refScroll = bottomList.current;\n if (refScroll && currentKeys.length > 1) {\n refScroll.scrollIntoView(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentKeys]);\n\n // We avoid multiple re-renders / hang issue typing too fast\n const firstUpdate = useRef(true);\n useLayoutEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = false;\n return;\n }\n debouncedOnChange();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentKeys, currentValues]);\n\n // If the last input is not empty, we add a new one\n const addEmptyLine = () => {\n if (\n currentKeys[currentKeys.length - 1].trim() !== \"\" &&\n currentValues[currentValues.length - 1].trim() !== \"\"\n ) {\n const keysList = [...currentKeys];\n const valuesList = [...currentValues];\n\n keysList.push(\"\");\n valuesList.push(\"\");\n\n setCurrentKeys(keysList);\n setCurrentValues(valuesList);\n }\n };\n\n // Onchange function for input box, we get the dataset-index & only update that value in the array\n const onChangeKey = (e: ChangeEvent) => {\n e.persist();\n\n let updatedElement = [...currentKeys];\n const index = get(e.target, \"dataset.index\", \"0\");\n const indexNum = parseInt(index);\n updatedElement[indexNum] = e.target.value;\n\n setCurrentKeys(updatedElement);\n };\n\n const onChangeValue = (e: ChangeEvent) => {\n e.persist();\n\n let updatedElement = [...currentValues];\n const index = get(e.target, \"dataset.index\", \"0\");\n const indexNum = parseInt(index);\n updatedElement[indexNum] = e.target.value;\n\n setCurrentValues(updatedElement);\n };\n\n // Debounce for On Change\n const debouncedOnChange = debounce(() => {\n let queryString = \"\";\n\n currentKeys.forEach((keyVal, index) => {\n if (currentKeys[index] && currentValues[index]) {\n let insertString = `${keyVal}=${currentValues[index]}`;\n if (index !== 0) {\n insertString = `&${insertString}`;\n }\n queryString = `${queryString}${insertString}`;\n }\n });\n\n onChange(queryString);\n }, 500);\n\n const inputs = currentValues.map((element, index) => {\n return (\n \n \n :\n : null}\n overlayAction={() => {\n addEmptyLine();\n }}\n />\n \n );\n });\n\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n \n \n \n \n \n )}\n \n \n {inputs}\n
\n \n \n \n );\n};\nexport default QueryMultiSelector;\n"],"names":["withStyles","theme","createStyles","_objectSpread","spacingUtils","createTenantCommon","formFieldStyles","modalStyleUtils","modalFormScrollable","paddingRight","_ref","closeModalAndRefresh","open","bucketName","classes","ruleID","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","editLoading","setEditLoading","_useState3","_useState4","saveEdit","setSaveEdit","_useState5","_useState6","priority","setPriority","_useState7","_useState8","destination","setDestination","_useState9","_useState10","prefix","setPrefix","_useState11","_useState12","repDeleteMarker","setRepDeleteMarker","_useState13","_useState14","metadataSync","setMetadataSync","_useState15","_useState16","initialTags","setInitialTags","_useState17","_useState18","tags","setTags","_useState19","_useState20","targetStorageClass","setTargetStorageClass","_useState21","_useState22","repExisting","setRepExisting","_useState23","_useState24","repDelete","setRepDelete","_useState25","_useState26","ruleState","setRuleState","useEffect","api","buckets","getBucketReplicationRule","then","res","_res$data$destination","data","toString","pref","tag","bucket","delete_marker_replication","storageClass","existingObjects","deletes_replication","status","metadata_replication","catch","err","setModalErrorSnackMessage","errorToHandler","error","remoteBucketsInfo","arn","replicateDeleteMarkers","replicateDeletes","replicateExistingObjects","replicateMetadata","parseInt","updateMultiBucketReplication","_jsx","ModalWrapper","modalOpen","onClose","title","titleIcon","BucketReplicationIcon","children","noValidate","autoComplete","onSubmit","e","preventDefault","_jsxs","FormLayout","containerPadding","withBorders","Switch","checked","id","name","label","onChange","target","ReadBox","sx","width","InputBox","validity","valid","value","pattern","placeholder","className","QueryMultiSelector","elements","vl","keyPlaceholder","valuePlaceholder","withBorder","description","Grid","item","xs","modalButtonBar","Button","type","variant","disabled","onClick","_ref$tooltip","tooltip","_ref$keyPlaceholder","_ref$valuePlaceholder","_ref$withBorder","currentKeys","setCurrentKeys","currentValues","setCurrentValues","bottomList","createRef","length","elementsSplit","split","keys","values","forEach","element","splittedVals","push","refScroll","current","scrollIntoView","firstUpdate","useRef","useLayoutEffect","debouncedOnChange","onChangeKey","persist","updatedElement","_toConsumableArray","index","get","onChangeValue","debounce","queryString","keyVal","insertString","concat","inputs","map","overlayIcon","AddIcon","overlayAction","trim","keysList","valuesList","addEmptyLine","Fragment","display","alignSelf","margin","fontWeight","InputLabel","Box","marginLeft","alignItems","Tooltip","placement","HelpIcon","style","height","padding","overflowY","position","marginTop","ref"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/3543.047b5c8a.chunk.js.map b/portal-ui/build/static/js/3543.047b5c8a.chunk.js.map deleted file mode 100644 index 36077533da..0000000000 --- a/portal-ui/build/static/js/3543.047b5c8a.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/3543.047b5c8a.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/DateRangeSelector/DateRangeSelector.tsx","screens/Console/Common/FormComponents/DateTimePickerWrapper/DateTimePickerWrapper.tsx","screens/Console/Logs/LogSearch/utils.ts","screens/Console/Common/FormComponents/FilterInputWrapper/FilterInputWrapper.tsx","screens/Console/Logs/LogSearch/LogSearchFullModal.tsx","screens/Console/Common/MissingIntegration/MissingIntegration.tsx","screens/Console/Logs/LogSearch/LogsSearchMain.tsx","../node_modules/@mui/icons-material/WatchLater.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/esm/deprecatedPropType.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/esm/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/esm/unsupportedProp.js","../node_modules/@mui/material/utils/index.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Button, OpenListIcon, SyncIcon, Grid } from \"mds\";\nimport { DateTime } from \"luxon\";\nimport { Box } from \"@mui/material\";\nimport ScheduleIcon from \"@mui/icons-material/Schedule\";\nimport WatchLaterIcon from \"@mui/icons-material/WatchLater\";\nimport DateTimePickerWrapper from \"../DateTimePickerWrapper/DateTimePickerWrapper\";\n\ninterface IDateRangeSelector {\n timeStart: DateTime | null;\n setTimeStart: (value: DateTime | null) => void;\n timeEnd: DateTime | null;\n setTimeEnd: (value: DateTime | null) => void;\n triggerSync?: () => void;\n label?: string;\n startLabel?: string;\n endLabel?: string;\n}\n\nconst DateFilterAdornIcon = () => {\n return (\n \n \n \n );\n};\n\nconst DateRangeSelector = ({\n timeStart,\n setTimeStart,\n timeEnd,\n setTimeEnd,\n triggerSync,\n label = \"Filter:\",\n startLabel = \"Start Time:\",\n endLabel = \"End Time:\",\n}: IDateRangeSelector) => {\n return (\n \n \n \n {label}\n \n \n \n \n \n \n \n {startLabel}\n \n \n \n \n \n\n \n \n \n \n \n {endLabel}\n \n \n \n \n \n \n\n {triggerSync && (\n \n }\n label={\"Sync\"}\n />\n \n )}\n \n \n );\n};\n\nexport default DateRangeSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { DateTime } from \"luxon\";\nimport { HelpIcon, OpenListIcon, Grid, InputLabel, Tooltip, Box } from \"mds\";\nimport { TextField } from \"@mui/material\";\nimport { DateTimePicker, LocalizationProvider } from \"@mui/x-date-pickers\";\nimport { AdapterLuxon } from \"@mui/x-date-pickers/AdapterLuxon\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport ScheduleIcon from \"@mui/icons-material/Schedule\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\n\ninterface IDateTimePicker {\n value: DateTime | null;\n onChange: (value: DateTime | null) => void;\n classes: any;\n forSearchBlock?: boolean;\n forFilterContained?: boolean;\n label?: string;\n required?: boolean;\n tooltip?: string;\n id: string;\n disabled?: boolean;\n noInputIcon?: boolean;\n classNamePrefix?: string;\n openPickerIcon?: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n dateSelectorOverride: {\n height: 40,\n border: \"#EAEDEE 1px solid\",\n marginLeft: 15,\n backgroundColor: \"#fff\",\n padding: \"0 16px\",\n borderRadius: 5,\n \"&.MuiInput-underline:hover:not(.Mui-disabled):before\": {\n borderBottom: 0,\n },\n \"&:hover\": {\n borderColor: \"#000\",\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n },\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n \"& input\": {\n fontSize: 12,\n fontWeight: 600,\n color: \"#393939\",\n },\n },\n dateSelectorFilterOverride: {\n width: 180,\n height: 42,\n marginLeft: 20,\n padding: 0,\n borderRadius: 5,\n \"&.MuiInput-underline:hover:not(.Mui-disabled):before\": {\n borderBottom: 0,\n },\n \"&:hover\": {\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n },\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n \"& input\": {\n fontSize: 12,\n fontWeight: \"bold\",\n color: \"#081C42\",\n },\n \"@media (max-width: 900px)\": {\n width: 103,\n },\n },\n dateSelectorFormOverride: {\n width: \"100%\",\n maxWidth: 840,\n },\n parentDateOverride: {\n flexGrow: 1,\n },\n textBoxContainer: {\n width: \"calc(100% - 190px)\",\n },\n openListIcon: {\n color: \"#9D9E9D\",\n width: 8,\n marginTop: 2,\n },\n paperOverride: {\n \"& .MuiCalendarPicker-root\": {\n padding: \"0 22px\",\n \"& > div\": {\n padding: 0,\n \"& > div > div.PrivatePickersFadeTransitionGroup-root:first-of-type\":\n {\n color: \"#0A224C\",\n fontWeight: \"bold\",\n },\n \"& > div > div.PrivatePickersFadeTransitionGroup-root:last-of-type\": {\n color: \"#9D9E9D\",\n \"& + button.MuiButtonBase-root\": {\n color: \"#9D9E9D\",\n },\n },\n \"& > div:nth-child(2)\": {\n \"& > div\": {\n width: 0,\n },\n \"& > button.MuiButtonBase-root\": {\n color: \"#0A224C\",\n },\n },\n },\n },\n \"& .MuiTypography-root.MuiTypography-caption\": {\n width: 26,\n height: 26,\n margin: 5,\n color: \"#BCBCBC\",\n fontSize: 10,\n },\n \"& button.MuiPickersDay-root\": {\n fontWeight: \"bold\",\n width: 26,\n height: 26,\n margin: 5,\n textAlign: \"center\",\n \"&.Mui-selected\": {\n backgroundColor: theme.palette.primary.main,\n color: \"#fff\",\n },\n },\n \"& div.MuiPickersDay-hiddenDaySpacingFiller\": {\n width: 26,\n height: 26,\n margin: 5,\n },\n \"& div.PrivatePickersSlideTransition-root\": {\n minHeight: 240,\n },\n \"& div.MuiCalendarPicker-viewTransitionContainer\": {\n borderTop: \"#F0F3F5 1px solid\",\n },\n \"& .MuiClockPicker-arrowSwitcher\": {\n marginRight: 10,\n marginTop: -1,\n \"& > div\": {\n width: 0,\n },\n \"& > button.MuiButtonBase-root\": {\n color: \"#0A224C\",\n },\n \"& + div > div\": {\n width: 255,\n height: 255,\n backgroundColor: \"#fff\",\n marginTop: 30,\n marginBottom: 14,\n border: \"#F0F3F5 3px solid\",\n \"& > div:nth-child(2)\": {\n backgroundColor: \"#B4B5B4\",\n width: 12,\n height: 12,\n \"&::before\": {\n content: \"' '\",\n width: 35,\n height: 35,\n display: \"block\",\n position: \"absolute\",\n border: \"#F0F3F5 3px solid\",\n top: -12,\n left: -12,\n borderRadius: \"100%\",\n },\n },\n \"& > div:nth-child(3)\": {\n backgroundColor: \"#B4B5B4\",\n width: 4,\n },\n \"& > div:last-of-type\": {\n marginTop: 15,\n \"& > span\": {\n color: \"#0A224C\",\n \"&.Mui-selected\": {\n color: \"#fff\",\n },\n \"&[aria-label='1 hours'], &[aria-label='2 hours'], &[aria-label='3 hours'], &[aria-label='4 hours'], &[aria-label='5 hours'], &[aria-label='6 hours'], &[aria-label='7 hours'], &[aria-label='8 hours'], &[aria-label='9 hours'], &[aria-label='10 hours'], &[aria-label='11 hours'], &[aria-label='12 hours']\":\n {\n fontWeight: \"bold\",\n fontSize: 20,\n marginTop: -1,\n },\n },\n },\n },\n },\n },\n ...fieldBasic,\n ...tooltipHelper,\n });\n\nconst DateTimePickerWrapper = ({\n value,\n onChange,\n classes,\n forSearchBlock = false,\n forFilterContained = false,\n label,\n tooltip = \"\",\n required,\n id,\n disabled = false,\n noInputIcon = false,\n classNamePrefix = \"\",\n openPickerIcon,\n}: IDateTimePicker) => {\n let adornment = {};\n\n if (!noInputIcon) {\n adornment = {\n startAdornment: (\n \n \n \n ),\n };\n }\n\n if (forFilterContained) {\n adornment = {\n endAdornment: (\n \n \n \n ),\n };\n }\n\n const classOverridden = `${classNamePrefix}date-time-input ${\n forSearchBlock ? classes.dateSelectorOverride : \"\"\n } ${\n forFilterContained && !forSearchBlock\n ? classes.dateSelectorFilterOverride\n : \"\"\n }`;\n\n const clsName = forSearchBlock\n ? classes.parentDateOverride\n : classes.dateSelectorFormOverride;\n\n const inputItem = (\n \n (\n \n )}\n ampm={false}\n PopperProps={{\n className: classes.paperOverride,\n }}\n inputFormat={\"LL/dd/yyyy HH:mm\"}\n />\n \n );\n\n if (forSearchBlock) {\n return inputItem;\n }\n\n const containerCls = !forFilterContained ? classes.fieldContainer : \"\";\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n
\n )}\n\n \n {inputItem}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(DateTimePickerWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const LogSearchColumnLabels = {\n time: \"Timestamp\",\n api_name: \"API Name\",\n access_key: \"Access Key\",\n bucket: \"Bucket\",\n object: \"Object\",\n remote_host: \"Remote Host\",\n request_id: \"Request ID\",\n user_agent: \"User Agent\",\n response_status: \"Response Status\",\n response_status_code: \"Response Status Code\",\n request_content_length: \"Request Content Length\",\n response_content_length: \"Response Content Length\",\n time_to_response_ns: \"Time to Response NS\",\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { InputBox, InputLabel, Box } from \"mds\";\n\ninterface IFilterInputWrapper {\n value: string;\n onChange: (txtVar: string) => any;\n label: string;\n placeholder?: string;\n id: string;\n name: string;\n}\n\nconst FilterInputWrapper = ({\n label,\n onChange,\n value,\n placeholder = \"\",\n id,\n name,\n}: IFilterInputWrapper) => {\n return (\n \n \n {label}\n {\n onChange(val.target.value);\n }}\n sx={{\n \"& input\": {\n height: 30,\n },\n }}\n value={value}\n />\n \n \n );\n};\n\nexport default FilterInputWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Button, Grid } from \"mds\";\nimport get from \"lodash/get\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { IReqInfoSearchResults } from \"./types\";\nimport { LogSearchColumnLabels } from \"./utils\";\n\ninterface ILogSearchFullModal {\n modalOpen: boolean;\n logSearchElement: IReqInfoSearchResults;\n onClose: () => void;\n}\n\nconst LogSearchFullModal = ({\n modalOpen,\n logSearchElement,\n onClose,\n}: ILogSearchFullModal) => {\n const jsonItems = Object.keys(logSearchElement);\n\n return (\n \n {\n onClose();\n }}\n >\n \n \n \n \n {jsonItems.map((objectKey: string, index: number) => (\n \n \n {get(LogSearchColumnLabels, objectKey, `${objectKey}`)}\n \n \n \n ))}\n \n
{get(logSearchElement, objectKey, \"\")}
\n
\n \n \n
\n \n \n
\n );\n};\n\nexport default LogSearchFullModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Grid } from \"@mui/material\";\nimport { HelpBox } from \"mds\";\n\ninterface IMissingIntegration {\n iconComponent: any;\n entity: string;\n documentationLink: string;\n}\n\nconst MissingIntegration = ({\n iconComponent,\n entity,\n documentationLink,\n}: IMissingIntegration) => {\n return (\n \n \n \n This feature is not available.\n
\n Please configure{\" \"}\n \n {entity}\n {\" \"}\n first to use this feature.\n \n }\n />\n
\n \n );\n};\n\nexport default MissingIntegration;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { CSSObject } from \"styled-components\";\nimport {\n Box,\n breakPoints,\n Button,\n DataTable,\n ExpandOptionsButton,\n Grid,\n PageLayout,\n SearchIcon,\n} from \"mds\";\nimport { DateTime } from \"luxon\";\nimport { IReqInfoSearchResults, ISearchResponse } from \"./types\";\nimport { niceBytes, nsToSeconds } from \"../../../../common/utils\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport { LogSearchColumnLabels } from \"./utils\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_SCOPES,\n} from \"../../../../common/SecureComponent/permissions\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../../systemSlice\";\nimport { selFeatures } from \"../../consoleSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { SecureComponent } from \"../../../../common/SecureComponent\";\nimport api from \"../../../../common/api\";\nimport FilterInputWrapper from \"../../Common/FormComponents/FilterInputWrapper/FilterInputWrapper\";\nimport LogSearchFullModal from \"./LogSearchFullModal\";\nimport DateRangeSelector from \"../../Common/FormComponents/DateRangeSelector/DateRangeSelector\";\nimport MissingIntegration from \"../../Common/MissingIntegration/MissingIntegration\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../../HelpMenu\";\n\nconst filtersContainer: CSSObject = {\n display: \"flex\",\n justifyContent: \"space-between\",\n marginBottom: 12,\n};\n\nconst LogsSearchMain = () => {\n const dispatch = useAppDispatch();\n const features = useSelector(selFeatures);\n\n const [loading, setLoading] = useState(true);\n const [timeStart, setTimeStart] = useState(null);\n const [timeEnd, setTimeEnd] = useState(null);\n const [filterOpen, setFilterOpen] = useState(false);\n const [records, setRecords] = useState([]);\n const [bucket, setBucket] = useState(\"\");\n const [apiName, setApiName] = useState(\"\");\n const [accessKey, setAccessKey] = useState(\"\");\n const [userAgent, setUserAgent] = useState(\"\");\n const [object, setObject] = useState(\"\");\n const [requestID, setRequestID] = useState(\"\");\n const [responseStatus, setResponseStatus] = useState(\"\");\n const [sortOrder, setSortOrder] = useState<\"ASC\" | \"DESC\" | undefined>(\n \"DESC\",\n );\n const [columnsShown, setColumnsShown] = useState([\n \"time\",\n \"api_name\",\n \"access_key\",\n \"bucket\",\n \"object\",\n \"remote_host\",\n \"request_id\",\n \"user_agent\",\n \"response_status\",\n ]);\n const [nextPage, setNextPage] = useState(0);\n const [alreadyFetching, setAlreadyFetching] = useState(false);\n const [logSearchExtrasOpen, setLogSearchExtrasOpen] =\n useState(false);\n const [selectedItem, setSelectedItem] =\n useState(null);\n\n let recordsResp: any = null;\n const logSearchEnabled = features && features.includes(\"log-search\");\n\n const fetchRecords = useCallback(() => {\n if (!alreadyFetching && logSearchEnabled) {\n setAlreadyFetching(true);\n let queryParams = `${bucket !== \"\" ? `&fp=bucket:${bucket}` : \"\"}${\n object !== \"\" ? `&fp=object:${object}` : \"\"\n }${apiName !== \"\" ? `&fp=api_name:${apiName}` : \"\"}${\n accessKey !== \"\" ? `&fp=access_key:${accessKey}` : \"\"\n }${requestID !== \"\" ? `&fp=request_id:${requestID}` : \"\"}${\n userAgent !== \"\" ? `&fp=user_agent:${userAgent}` : \"\"\n }${responseStatus !== \"\" ? `&fp=response_status:${responseStatus}` : \"\"}`;\n\n queryParams = queryParams.trim();\n\n if (queryParams.endsWith(\",\")) {\n queryParams = queryParams.slice(0, -1);\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/logs/search?q=reqinfo${\n queryParams !== \"\" ? `${queryParams}` : \"\"\n }&pageSize=100&pageNo=${nextPage}&order=${\n sortOrder === \"DESC\" ? \"timeDesc\" : \"timeAsc\"\n }${timeStart !== null ? `&timeStart=${timeStart.toISO()}` : \"\"}${\n timeEnd !== null ? `&timeEnd=${timeEnd.toISO()}` : \"\"\n }`,\n )\n .then((res: ISearchResponse) => {\n const fetchedResults = res.results || [];\n\n setLoading(false);\n setAlreadyFetching(false);\n setRecords(fetchedResults);\n setNextPage(nextPage + 1);\n\n if (recordsResp !== null) {\n recordsResp();\n }\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n setAlreadyFetching(false);\n dispatch(setErrorSnackMessage(err));\n });\n } else {\n setLoading(false);\n setAlreadyFetching(false);\n }\n }, [\n alreadyFetching,\n logSearchEnabled,\n bucket,\n object,\n apiName,\n accessKey,\n requestID,\n userAgent,\n responseStatus,\n nextPage,\n sortOrder,\n timeStart,\n timeEnd,\n recordsResp,\n dispatch,\n ]);\n\n useEffect(() => {\n if (loading) {\n setRecords([]);\n fetchRecords();\n }\n }, [loading, sortOrder, fetchRecords]);\n\n const triggerLoad = () => {\n setNextPage(0);\n setLoading(true);\n };\n\n const selectColumn = (colID: string) => {\n let newArray: string[];\n\n const columnShown = columnsShown.findIndex((item) => item === colID);\n\n // Column Exist, We remove from Array\n if (columnShown >= 0) {\n newArray = columnsShown.filter((element) => element !== colID);\n } else {\n // Column not visible, we include it in the array\n newArray = [...columnsShown, colID];\n }\n\n setColumnsShown(newArray);\n };\n\n const sortChange = (sortData: any) => {\n const newSortDirection = get(sortData, \"sortDirection\", \"DESC\");\n setSortOrder(newSortDirection);\n setNextPage(0);\n setLoading(true);\n };\n\n const loadMoreRecords = (_: { startIndex: number; stopIndex: number }) => {\n fetchRecords();\n return new Promise((resolve) => {\n recordsResp = resolve;\n });\n };\n\n const openExtraInformation = (item: IReqInfoSearchResults) => {\n setSelectedItem(item);\n setLogSearchExtrasOpen(true);\n };\n\n const closeViewExtraInformation = () => {\n setSelectedItem(null);\n setLogSearchExtrasOpen(false);\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"audit_logs\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {logSearchExtrasOpen && selectedItem !== null && (\n \n )}\n\n } />\n\n \n {!logSearchEnabled ? (\n }\n documentationLink=\"https://min.io/docs/minio/windows/operations/monitoring/minio-logging.html?ref=con\"\n />\n ) : (\n \n {\" \"}\n \n \n \n setTimeEnd(time)}\n setTimeStart={(time) => setTimeStart(time)}\n timeEnd={timeEnd}\n timeStart={timeStart}\n />\n \n \n {\n setFilterOpen(!filterOpen);\n }}\n />\n \n \n \n \n Enable your preferred options to get filtered records.\n
\n You can use '*' to match any character, '.' to signify a\n single character or '\\' to scape an special character (E.g.\n mybucket-*)\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n (\n \n \n {element.response_status_code} (\n {element.response_status})\n \n \n ),\n renderFullObject: true,\n },\n {\n label: LogSearchColumnLabels.request_content_length,\n elementKey: \"request_content_length\",\n renderFunction: niceBytes,\n },\n {\n label: LogSearchColumnLabels.response_content_length,\n elementKey: \"response_content_length\",\n renderFunction: niceBytes,\n },\n {\n label: LogSearchColumnLabels.time_to_response_ns,\n elementKey: \"time_to_response_ns\",\n renderFunction: nsToSeconds,\n contentTextAlign: \"right\",\n },\n ]}\n isLoading={loading}\n records={records}\n entityName=\"Logs\"\n customEmptyMessage={\n \"There is no information with this criteria\"\n }\n idField=\"request_id\"\n columnsSelector\n columnsShown={columnsShown}\n onColumnChange={selectColumn}\n customPaperHeight={\n filterOpen ? \"calc(100vh - 520px)\" : \"calc(100vh - 320px)\"\n }\n sortConfig={{\n currentSort: \"time\",\n currentDirection: sortOrder,\n triggerSort: sortChange,\n }}\n infiniteScrollConfig={{\n recordsCount: 1000000,\n loadMoreRecords: loadMoreRecords,\n }}\n itemActions={[\n {\n type: \"view\",\n onClick: openExtraInformation,\n },\n ]}\n textSelectable\n />\n \n \n
\n )}\n
\n
\n );\n};\n\nexport default LogsSearchMain;\n","\"use strict\";\n\"use client\";\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.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2zm4.2 14.2L11 13V7h1.5v5.2l4.5 2.7-.8 1.3z\"\n}), 'WatchLater');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["DateFilterAdornIcon","_jsx","Box","sx","display","alignItems","width","height","children","OpenListIcon","_ref","timeStart","setTimeStart","timeEnd","setTimeEnd","triggerSync","_ref$label","label","_ref$startLabel","startLabel","_ref$endLabel","endLabel","Grid","item","xs","border","paddingLeft","paddingRight","borderRadius","marginRight","color","WebkitTextFillColor","_jsxs","md","gridTemplateColumns","sm","padding","gap","fontSize","fontWeight","fill","ScheduleIcon","className","marginLeft","DateTimePickerWrapper","value","onChange","id","classNamePrefix","forFilterContained","noInputIcon","openPickerIcon","WatchLaterIcon","justifyContent","Button","type","variant","onClick","icon","SyncIcon","withStyles","theme","createStyles","_objectSpread","dateSelectorOverride","backgroundColor","borderBottom","borderColor","dateSelectorFilterOverride","dateSelectorFormOverride","maxWidth","parentDateOverride","flexGrow","textBoxContainer","openListIcon","marginTop","paperOverride","margin","textAlign","palette","primary","main","minHeight","borderTop","marginBottom","content","position","top","left","fieldBasic","tooltipHelper","classes","_ref$forSearchBlock","forSearchBlock","_ref$forFilterContain","_ref$tooltip","tooltip","required","_ref$disabled","disabled","_ref$noInputIcon","_ref$classNamePrefix","adornment","startAdornment","InputAdornment","endAdornment","classOverridden","concat","clsName","inputItem","LocalizationProvider","dateAdapter","AdapterLuxon","DateTimePicker","InputProps","components","OpenPickerIcon","renderInput","props","TextField","ampm","PopperProps","inputFormat","containerCls","fieldContainer","Fragment","gridAutoColumns","InputLabel","htmlFor","tooltipContainer","Tooltip","placement","HelpIcon","LogSearchColumnLabels","time","api_name","access_key","bucket","object","remote_host","request_id","user_agent","response_status","response_status_code","request_content_length","response_content_length","time_to_response_ns","_ref$placeholder","placeholder","name","InputBox","val","target","modalOpen","logSearchElement","onClose","jsonItems","Object","keys","ModalWrapper","title","container","map","objectKey","index","style","get","toString","iconComponent","entity","documentationLink","alignContent","HelpBox","help","href","rel","filtersContainer","dispatch","useAppDispatch","features","useSelector","selFeatures","_useState","useState","_useState2","_slicedToArray","loading","setLoading","_useState3","_useState4","_useState5","_useState6","_useState7","_useState8","filterOpen","setFilterOpen","_useState9","_useState10","records","setRecords","_useState11","_useState12","setBucket","_useState13","_useState14","apiName","setApiName","_useState15","_useState16","accessKey","setAccessKey","_useState17","_useState18","userAgent","setUserAgent","_useState19","_useState20","setObject","_useState21","_useState22","requestID","setRequestID","_useState23","_useState24","responseStatus","setResponseStatus","_useState25","_useState26","sortOrder","setSortOrder","_useState27","_useState28","columnsShown","setColumnsShown","_useState29","_useState30","nextPage","setNextPage","_useState31","_useState32","alreadyFetching","setAlreadyFetching","_useState33","_useState34","logSearchExtrasOpen","setLogSearchExtrasOpen","_useState35","_useState36","selectedItem","setSelectedItem","recordsResp","logSearchEnabled","includes","fetchRecords","useCallback","queryParams","trim","endsWith","slice","api","invoke","toISO","then","res","fetchedResults","results","catch","err","setErrorSnackMessage","useEffect","setHelpName","LogSearchFullModal","PageHeaderWrapper","actions","HelpMenu","PageLayout","withBorders","_defineProperty","breakPoints","lg","flexFlow","DateRangeSelector","ExpandOptionsButton","open","overflowY","FilterInputWrapper","SecureComponent","scopes","IAM_SCOPES","ADMIN_HEALTH_INFO","resource","CONSOLE_UI_RESOURCE","errorProps","DataTable","columns","elementKey","enableSort","renderFunction","element","renderFullObject","niceBytes","nsToSeconds","contentTextAlign","isLoading","entityName","customEmptyMessage","idField","columnsSelector","onColumnChange","colID","newArray","findIndex","filter","_toConsumableArray","customPaperHeight","sortConfig","currentSort","currentDirection","triggerSort","sortData","newSortDirection","infiniteScrollConfig","recordsCount","loadMoreRecords","_","Promise","resolve","itemActions","textSelectable","MissingIntegration","SearchIcon","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","defineProperty","enumerable","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/3543.047b5c8a.chunk.js b/portal-ui/build/static/js/3543.d91de02c.chunk.js similarity index 63% rename from portal-ui/build/static/js/3543.047b5c8a.chunk.js rename to portal-ui/build/static/js/3543.d91de02c.chunk.js index 210d03aa12..ae18946e24 100644 --- a/portal-ui/build/static/js/3543.047b5c8a.chunk.js +++ b/portal-ui/build/static/js/3543.d91de02c.chunk.js @@ -1,2 +1,2 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[3543],{63856:function(e,t,n){"use strict";n(72791);var r=n(29945),i=n(64554),o=n(27197),a=n(32686),s=n(80705),l=n(80184),c=function(){return(0,l.jsx)(i.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{width:"10px",height:"10px"}},children:(0,l.jsx)(r.Q2V,{})})};t.Z=function(e){var t=e.timeStart,n=e.setTimeStart,d=e.timeEnd,u=e.setTimeEnd,p=e.triggerSync,h=e.label,x=void 0===h?"Filter:":h,m=e.startLabel,f=void 0===m?"Start Time:":m,g=e.endLabel,b=void 0===g?"End Time:":g;return(0,l.jsx)(r.rjZ,{item:!0,xs:12,sx:{"& .filter-date-input-label, .end-time-input-label":{display:"none"},"& .MuiInputBase-adornedEnd.filter-date-date-time-input":{width:"100%",border:"1px solid #eaeaea",paddingLeft:"8px",paddingRight:"8px",borderRadius:"1px"},"& .MuiInputAdornment-root button":{height:"20px",width:"20px",marginRight:"5px"},"& .filter-date-input-wrapper":{height:"30px",width:"100%","& .MuiTextField-root":{height:"30px",width:"90%","& input.Mui-disabled":{color:"#000000",WebkitTextFillColor:"#101010"}}}},children:(0,l.jsxs)(i.Z,{sx:{display:"grid",height:{md:"40px",xs:"auto"},alignItems:"center",gridTemplateColumns:{md:"auto 2fr auto",sm:"1fr"},padding:{md:"0",xs:" 5px"},gap:"5px"},children:[(0,l.jsx)(i.Z,{sx:{fontSize:"14px",fontWeight:500,marginRight:"5px"},children:x}),(0,l.jsxs)(i.Z,{sx:{display:"grid",height:{md:"40px",xs:"auto"},border:{md:"1px solid #eaeaea"},alignItems:"center",gridTemplateColumns:{md:"1fr 1fr",sm:"1fr"},gap:"8px",paddingLeft:"8px",paddingRight:"8px"},children:[(0,l.jsxs)(i.Z,{sx:{display:"grid",height:"30px",alignItems:"center",gridTemplateColumns:{xs:"12px auto 1fr"},gap:"5px"},children:[(0,l.jsx)(i.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{width:"10px",height:"10px",fill:"#B4B5B4"}},children:(0,l.jsx)(o.Z,{className:"min-icon"})}),(0,l.jsx)(i.Z,{sx:{fontSize:"12px",marginLeft:"8px"},children:f}),(0,l.jsx)(i.Z,{children:(0,l.jsx)(s.Z,{value:t,onChange:n,id:"stTime",classNamePrefix:"filter-date-",forFilterContained:!0,noInputIcon:!0,openPickerIcon:c})})]}),(0,l.jsxs)(i.Z,{sx:{display:"grid",height:"30px",alignItems:"center",gridTemplateColumns:{xs:"12px auto 1fr"},gap:"5px"},children:[(0,l.jsx)(i.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{width:"10px",height:"10px",fill:"#B4B5B4"}},children:(0,l.jsx)(a.Z,{className:"min-icon"})}),(0,l.jsx)(i.Z,{sx:{fontSize:"12px",marginLeft:"8px"},children:b}),(0,l.jsx)(i.Z,{children:(0,l.jsx)(s.Z,{value:d,onChange:u,id:"endTime",classNamePrefix:"filter-date-",forFilterContained:!0,noInputIcon:!0,openPickerIcon:c})})]})]}),p&&(0,l.jsx)(i.Z,{sx:{alignItems:"flex-end",display:"flex",justifyContent:"flex-end"},children:(0,l.jsx)(r.zxk,{id:"sync",type:"button",variant:"callAction",onClick:p,icon:(0,l.jsx)(r.bnu,{}),label:"Sync"})})]})})}},80705:function(e,t,n){"use strict";var r=n(1413),i=n(72791),o=n(29945),a=n(20817),s=n(36571),l=n(80916),c=n(36612),d=n(63466),u=n(27197),p=n(11135),h=n(25787),x=n(23814),m=n(80184);t.Z=(0,h.Z)((function(e){return(0,p.Z)((0,r.Z)((0,r.Z)({dateSelectorOverride:{height:40,border:"#EAEDEE 1px solid",marginLeft:15,backgroundColor:"#fff",padding:"0 16px",borderRadius:5,"&.MuiInput-underline:hover:not(.Mui-disabled):before":{borderBottom:0},"&:hover":{borderColor:"#000","&:before, &:after":{borderColor:"transparent",borderBottom:0}},"&:before, &:after":{borderColor:"transparent",borderBottom:0},"& input":{fontSize:12,fontWeight:600,color:"#393939"}},dateSelectorFilterOverride:{width:180,height:42,marginLeft:20,padding:0,borderRadius:5,"&.MuiInput-underline:hover:not(.Mui-disabled):before":{borderBottom:0},"&:hover":{"&:before, &:after":{borderColor:"transparent",borderBottom:0}},"&:before, &:after":{borderColor:"transparent",borderBottom:0},"& input":{fontSize:12,fontWeight:"bold",color:"#081C42"},"@media (max-width: 900px)":{width:103}},dateSelectorFormOverride:{width:"100%",maxWidth:840},parentDateOverride:{flexGrow:1},textBoxContainer:{width:"calc(100% - 190px)"},openListIcon:{color:"#9D9E9D",width:8,marginTop:2},paperOverride:{"& .MuiCalendarPicker-root":{padding:"0 22px","& > div":{padding:0,"& > div > div.PrivatePickersFadeTransitionGroup-root:first-of-type":{color:"#0A224C",fontWeight:"bold"},"& > div > div.PrivatePickersFadeTransitionGroup-root:last-of-type":{color:"#9D9E9D","& + button.MuiButtonBase-root":{color:"#9D9E9D"}},"& > div:nth-child(2)":{"& > div":{width:0},"& > button.MuiButtonBase-root":{color:"#0A224C"}}}},"& .MuiTypography-root.MuiTypography-caption":{width:26,height:26,margin:5,color:"#BCBCBC",fontSize:10},"& button.MuiPickersDay-root":{fontWeight:"bold",width:26,height:26,margin:5,textAlign:"center","&.Mui-selected":{backgroundColor:e.palette.primary.main,color:"#fff"}},"& div.MuiPickersDay-hiddenDaySpacingFiller":{width:26,height:26,margin:5},"& div.PrivatePickersSlideTransition-root":{minHeight:240},"& div.MuiCalendarPicker-viewTransitionContainer":{borderTop:"#F0F3F5 1px solid"},"& .MuiClockPicker-arrowSwitcher":{marginRight:10,marginTop:-1,"& > div":{width:0},"& > button.MuiButtonBase-root":{color:"#0A224C"},"& + div > div":{width:255,height:255,backgroundColor:"#fff",marginTop:30,marginBottom:14,border:"#F0F3F5 3px solid","& > div:nth-child(2)":{backgroundColor:"#B4B5B4",width:12,height:12,"&::before":{content:"' '",width:35,height:35,display:"block",position:"absolute",border:"#F0F3F5 3px solid",top:-12,left:-12,borderRadius:"100%"}},"& > div:nth-child(3)":{backgroundColor:"#B4B5B4",width:4},"& > div:last-of-type":{marginTop:15,"& > span":{color:"#0A224C","&.Mui-selected":{color:"#fff"},"&[aria-label='1 hours'], &[aria-label='2 hours'], &[aria-label='3 hours'], &[aria-label='4 hours'], &[aria-label='5 hours'], &[aria-label='6 hours'], &[aria-label='7 hours'], &[aria-label='8 hours'], &[aria-label='9 hours'], &[aria-label='10 hours'], &[aria-label='11 hours'], &[aria-label='12 hours']":{fontWeight:"bold",fontSize:20,marginTop:-1}}}}}}},x.YI),x.Hr))}))((function(e){var t=e.value,n=e.onChange,p=e.classes,h=e.forSearchBlock,x=void 0!==h&&h,f=e.forFilterContained,g=void 0!==f&&f,b=e.label,j=e.tooltip,v=void 0===j?"":j,C=e.required,Z=e.id,_=e.disabled,y=void 0!==_&&_,S=e.noInputIcon,k=void 0!==S&&S,w=e.classNamePrefix,F=void 0===w?"":w,I=e.openPickerIcon,B={};k||(B={startAdornment:(0,m.jsx)(d.Z,{position:"start",children:(0,m.jsx)(u.Z,{})})}),g&&(B={endAdornment:(0,m.jsx)(d.Z,{position:"end",children:(0,m.jsx)(o.Q2V,{className:p.openListIcon})})});var T="".concat(F,"date-time-input ").concat(x?p.dateSelectorOverride:""," ").concat(g&&!x?p.dateSelectorFilterOverride:""),P=x?p.parentDateOverride:p.dateSelectorFormOverride,E=(0,m.jsx)(s._,{dateAdapter:c.Z,children:(0,m.jsx)(l.x,{value:t,onChange:n,InputProps:(0,r.Z)((0,r.Z)({},B),{},{className:T}),components:{OpenPickerIcon:I},label:"",className:P,disabled:y,renderInput:function(e){return(0,m.jsx)(a.Z,(0,r.Z)((0,r.Z)({id:Z,variant:"standard"},e),{},{disabled:!0}))},ampm:!1,PopperProps:{className:p.paperOverride},inputFormat:"LL/dd/yyyy HH:mm"})});if(x)return E;var A=g?"":p.fieldContainer;return(0,m.jsx)(i.Fragment,{children:(0,m.jsxs)(o.rjZ,{item:!0,xs:12,className:"".concat(A," ").concat(F,"input-field-container"),sx:{display:"grid",gridAutoColumns:"max-content"},children:[""!==b&&(0,m.jsxs)(o.AZs,{htmlFor:Z,children:[(0,m.jsxs)("span",{children:[b,C?"*":""]}),""!==v&&(0,m.jsx)("div",{className:p.tooltipContainer,children:(0,m.jsx)(o.ua7,{tooltip:v,placement:"top",children:(0,m.jsx)("div",{className:p.tooltip,children:(0,m.jsx)(o.byK,{})})})})]}),(0,m.jsx)(o.xuv,{className:"".concat(p.textBoxContainer," ").concat(F,"input-wrapper"),children:E})]})})}))},33543:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return I}});var r=n(4942),i=n(93433),o=n(29439),a=n(72791),s=n(26181),l=n.n(s),c=n(78687),d=n(29945),u=n(45248),p={time:"Timestamp",api_name:"API Name",access_key:"Access Key",bucket:"Bucket",object:"Object",remote_host:"Remote Host",request_id:"Request ID",user_agent:"User Agent",response_status:"Response Status",response_status_code:"Response Status Code",request_content_length:"Request Content Length",response_content_length:"Response Content Length",time_to_response_ns:"Time to Response NS"},h=n(56087),x=n(87995),m=n(46078),f=n(81551),g=n(38442),b=n(81207),j=n(80184),v=function(e){var t=e.label,n=e.onChange,r=e.value,i=e.placeholder,o=void 0===i?"":i,s=e.id,l=e.name;return(0,j.jsx)(a.Fragment,{children:(0,j.jsxs)(d.xuv,{sx:{flexGrow:1,margin:"0 15px"},children:[(0,j.jsx)(d.AZs,{children:t}),(0,j.jsx)(d.Wzg,{placeholder:o,id:s,name:l,label:"",onChange:function(e){n(e.target.value)},sx:{"& input":{height:30}},value:r})]})})},C=n(56028),Z=function(e){var t=e.modalOpen,n=e.logSearchElement,r=e.onClose,i=Object.keys(n);return(0,j.jsx)(a.Fragment,{children:(0,j.jsx)(C.Z,{modalOpen:t,title:"Full Log Information",onClose:function(){r()},children:(0,j.jsxs)(d.rjZ,{container:!0,children:[(0,j.jsx)(d.rjZ,{item:!0,xs:12,children:(0,j.jsx)("table",{children:(0,j.jsx)("tbody",{children:i.map((function(e,t){return(0,j.jsxs)("tr",{children:[(0,j.jsx)("th",{style:{fontWeight:700,paddingRight:"10px",textAlign:"left"},children:l()(p,e,"".concat(e))}),(0,j.jsx)("td",{children:l()(n,e,"")})]},"logSearch-".concat(t.toString()))}))})})}),(0,j.jsx)(d.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end"},children:(0,j.jsx)(d.zxk,{id:"close-log-search",variant:"callAction",color:"primary",onClick:r,label:"Close"})})]})})})},_=n(63856),y=n(61889),S=function(e){var t=e.iconComponent,n=e.entity,r=e.documentationLink;return(0,j.jsx)(y.ZP,{container:!0,justifyContent:"center",alignContent:"center",alignItems:"center",children:(0,j.jsx)(y.ZP,{item:!0,xs:8,children:(0,j.jsx)(d.KfX,{title:"".concat(n," not available"),iconComponent:t,help:(0,j.jsxs)(a.Fragment,{children:["This feature is not available.",(0,j.jsx)("br",{}),"Please configure"," ",(0,j.jsx)("a",{href:r,target:"_blank",rel:"noopener",children:n})," ","first to use this feature."]})})})})},k=n(47974),w=n(99670),F={display:"flex",justifyContent:"space-between",marginBottom:12},I=function(){var e=(0,f.TL)(),t=(0,c.v9)(m.$4),n=(0,a.useState)(!0),s=(0,o.Z)(n,2),C=s[0],y=s[1],I=(0,a.useState)(null),B=(0,o.Z)(I,2),T=B[0],P=B[1],E=(0,a.useState)(null),A=(0,o.Z)(E,2),M=A[0],L=A[1],O=(0,a.useState)(!1),D=(0,o.Z)(O,2),R=D[0],N=D[1],q=(0,a.useState)([]),z=(0,o.Z)(q,2),K=z[0],W=z[1],H=(0,a.useState)(""),G=(0,o.Z)(H,2),V=G[0],Y=G[1],Q=(0,a.useState)(""),U=(0,o.Z)(Q,2),X=U[0],$=U[1],J=(0,a.useState)(""),ee=(0,o.Z)(J,2),te=ee[0],ne=ee[1],re=(0,a.useState)(""),ie=(0,o.Z)(re,2),oe=ie[0],ae=ie[1],se=(0,a.useState)(""),le=(0,o.Z)(se,2),ce=le[0],de=le[1],ue=(0,a.useState)(""),pe=(0,o.Z)(ue,2),he=pe[0],xe=pe[1],me=(0,a.useState)(""),fe=(0,o.Z)(me,2),ge=fe[0],be=fe[1],je=(0,a.useState)("DESC"),ve=(0,o.Z)(je,2),Ce=ve[0],Ze=ve[1],_e=(0,a.useState)(["time","api_name","access_key","bucket","object","remote_host","request_id","user_agent","response_status"]),ye=(0,o.Z)(_e,2),Se=ye[0],ke=ye[1],we=(0,a.useState)(0),Fe=(0,o.Z)(we,2),Ie=Fe[0],Be=Fe[1],Te=(0,a.useState)(!1),Pe=(0,o.Z)(Te,2),Ee=Pe[0],Ae=Pe[1],Me=(0,a.useState)(!1),Le=(0,o.Z)(Me,2),Oe=Le[0],De=Le[1],Re=(0,a.useState)(null),Ne=(0,o.Z)(Re,2),qe=Ne[0],ze=Ne[1],Ke=null,We=t&&t.includes("log-search"),He=(0,a.useCallback)((function(){if(!Ee&&We){Ae(!0);var t="".concat(""!==V?"&fp=bucket:".concat(V):"").concat(""!==ce?"&fp=object:".concat(ce):"").concat(""!==X?"&fp=api_name:".concat(X):"").concat(""!==te?"&fp=access_key:".concat(te):"").concat(""!==he?"&fp=request_id:".concat(he):"").concat(""!==oe?"&fp=user_agent:".concat(oe):"").concat(""!==ge?"&fp=response_status:".concat(ge):"");(t=t.trim()).endsWith(",")&&(t=t.slice(0,-1)),b.Z.invoke("GET","/api/v1/logs/search?q=reqinfo".concat(""!==t?"".concat(t):"","&pageSize=100&pageNo=").concat(Ie,"&order=").concat("DESC"===Ce?"timeDesc":"timeAsc").concat(null!==T?"&timeStart=".concat(T.toISO()):"").concat(null!==M?"&timeEnd=".concat(M.toISO()):"")).then((function(e){var t=e.results||[];y(!1),Ae(!1),W(t),Be(Ie+1),null!==Ke&&Ke()})).catch((function(t){y(!1),Ae(!1),e((0,x.Ih)(t))}))}else y(!1),Ae(!1)}),[Ee,We,V,ce,X,te,he,oe,ge,Ie,Ce,T,M,Ke,e]);(0,a.useEffect)((function(){C&&(W([]),He())}),[C,Ce,He]);return(0,a.useEffect)((function(){e((0,x.Sc)("audit_logs"))}),[]),(0,j.jsxs)(a.Fragment,{children:[Oe&&null!==qe&&(0,j.jsx)(Z,{logSearchElement:qe,modalOpen:Oe,onClose:function(){ze(null),De(!1)}}),(0,j.jsx)(k.Z,{label:"Audit Logs",actions:(0,j.jsx)(w.Z,{})}),(0,j.jsx)(d.Xgh,{children:We?(0,j.jsxs)(a.Fragment,{children:[" ",(0,j.jsxs)(d.xuv,{withBorders:!0,sx:{marginBottom:15},children:[(0,j.jsxs)(d.rjZ,{item:!0,xs:12,sx:(0,r.Z)({display:"flex",padding:15},"@media (max-width: ".concat(d.Egj.lg,"px)"),{flexFlow:"column"}),children:[(0,j.jsx)(d.xuv,{children:(0,j.jsx)(_.Z,{setTimeEnd:function(e){return L(e)},setTimeStart:function(e){return P(e)},timeEnd:M,timeStart:T})}),(0,j.jsx)(d.xuv,{sx:{display:"flex",alignItems:"center"},children:(0,j.jsx)(d.cvr,{label:"".concat(R?"Hide":"Show"," advanced Filters"),open:R,onClick:function(){N(!R)}})})]}),(0,j.jsxs)(d.rjZ,{item:!0,xs:12,sx:{display:R?"block":"none",overflowY:"hidden",marginBottom:R?12:0},children:[(0,j.jsxs)(d.xuv,{sx:{marginLeft:15,marginBottom:15,fontSize:12,color:"#9C9C9C"},children:["Enable your preferred options to get filtered records.",(0,j.jsx)("br",{}),"You can use '*' to match any character, '.' to signify a single character or '\\' to scape an special character (E.g. mybucket-*)"]}),(0,j.jsxs)(d.xuv,{sx:F,children:[(0,j.jsx)(v,{onChange:Y,value:V,label:"Bucket",id:"bucket",name:"bucket"}),(0,j.jsx)(v,{onChange:$,value:X,label:"API Name",id:"api_name",name:"api_name"}),(0,j.jsx)(v,{onChange:ne,value:te,label:"Access Key",id:"access_key",name:"access_key"}),(0,j.jsx)(v,{onChange:ae,value:oe,label:"User Agent",id:"user_agent",name:"user_agent"})]}),(0,j.jsxs)(d.xuv,{sx:F,children:[(0,j.jsx)(v,{onChange:de,value:ce,label:"Object",id:"object",name:"object"}),(0,j.jsx)(v,{onChange:xe,value:he,label:"Request ID",id:"request_id",name:"request_id"}),(0,j.jsx)(v,{onChange:be,value:ge,label:"Response Status",id:"response_status",name:"response_status"})]})]}),(0,j.jsx)(d.rjZ,{item:!0,xs:12,sx:{marginBottom:15,padding:"0 15px 0 15px",display:"flex",alignItems:"center",justifyContent:"flex-end"},children:(0,j.jsx)(d.zxk,{id:"get-information",type:"button",variant:"callAction",onClick:function(){Be(0),y(!0)},label:"Get Information"})})]}),(0,j.jsx)(d.rjZ,{item:!0,xs:12,children:(0,j.jsx)(g.s,{scopes:[h.Ft.ADMIN_HEALTH_INFO],resource:h.C3,errorProps:{disabled:!0},children:(0,j.jsx)(d.wQF,{columns:[{label:p.time,elementKey:"time",enableSort:!0},{label:p.api_name,elementKey:"api_name"},{label:p.access_key,elementKey:"access_key"},{label:p.bucket,elementKey:"bucket"},{label:p.object,elementKey:"object"},{label:p.remote_host,elementKey:"remote_host"},{label:p.request_id,elementKey:"request_id"},{label:p.user_agent,elementKey:"user_agent"},{label:p.response_status,elementKey:"response_status",renderFunction:function(e){return(0,j.jsx)(a.Fragment,{children:(0,j.jsxs)("span",{children:[e.response_status_code," (",e.response_status,")"]})})},renderFullObject:!0},{label:p.request_content_length,elementKey:"request_content_length",renderFunction:u.ae},{label:p.response_content_length,elementKey:"response_content_length",renderFunction:u.ae},{label:p.time_to_response_ns,elementKey:"time_to_response_ns",renderFunction:u.Yj,contentTextAlign:"right"}],isLoading:C,records:K,entityName:"Logs",customEmptyMessage:"There is no information with this criteria",idField:"request_id",columnsSelector:!0,columnsShown:Se,onColumnChange:function(e){var t;t=Se.findIndex((function(t){return t===e}))>=0?Se.filter((function(t){return t!==e})):[].concat((0,i.Z)(Se),[e]),ke(t)},customPaperHeight:R?"calc(100vh - 520px)":"calc(100vh - 320px)",sortConfig:{currentSort:"time",currentDirection:Ce,triggerSort:function(e){var t=l()(e,"sortDirection","DESC");Ze(t),Be(0),y(!0)}},infiniteScrollConfig:{recordsCount:1e6,loadMoreRecords:function(e){return He(),new Promise((function(e){Ke=e}))}},itemActions:[{type:"view",onClick:function(e){ze(e),De(!0)}}],textSelectable:!0})})})]}):(0,j.jsx)(S,{entity:"Audit Logs",iconComponent:(0,j.jsx)(d.W1M,{}),documentationLink:"https://min.io/docs/minio/windows/operations/monitoring/minio-logging.html?ref=con"})})]})}},32686:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var i=r(n(45649)),o=n(80184),a=(0,i.default)((0,o.jsx)("path",{d:"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2zm4.2 14.2L11 13V7h1.5v5.2l4.5 2.7-.8 1.3z"}),"WatchLater");t.Z=a},45649:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r.createSvgIcon}});var r=n(28610)},31260:function(e,t,n){"use strict";var r=n(78949);t.Z=r.Z},28610:function(e,t,n){"use strict";n.r(t),n.d(t,{capitalize:function(){return i.Z},createChainedFunction:function(){return o.Z},createSvgIcon:function(){return a.Z},debounce:function(){return s.Z},deprecatedPropType:function(){return l},isMuiElement:function(){return c.Z},ownerDocument:function(){return d.Z},ownerWindow:function(){return u.Z},requirePropFactory:function(){return p},setRef:function(){return h},unstable_ClassNameGenerator:function(){return C},unstable_useEnhancedEffect:function(){return x.Z},unstable_useId:function(){return m.Z},unsupportedProp:function(){return f},useControlled:function(){return g.Z},useEventCallback:function(){return b.Z},useForkRef:function(){return j.Z},useIsFocusVisible:function(){return v.Z}});var r=n(55902),i=n(14036),o=n(31260),a=n(76189),s=n(83199);var l=function(e,t){return function(){return null}},c=n(19103),d=n(98301),u=n(17602);n(87462);var p=function(e,t){return function(){return null}},h=n(62971).Z,x=n(40162),m=n(67384);var f=function(e,t,n,r,i){return null},g=n(98278),b=n(89683),j=n(42071),v=n(23031),C={configure:function(e){r.Z.configure(e)}}},64836:function(e){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); -//# sourceMappingURL=3543.047b5c8a.chunk.js.map \ No newline at end of file +(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[3543],{63856:function(e,t,n){"use strict";n(72791);var r=n(29945),i=n(64554),o=n(27197),a=n(32686),s=n(80705),l=n(80184),c=function(){return(0,l.jsx)(i.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{width:"10px",height:"10px"}},children:(0,l.jsx)(r.Q2V,{})})};t.Z=function(e){var t=e.timeStart,n=e.setTimeStart,d=e.timeEnd,u=e.setTimeEnd,p=e.triggerSync,h=e.label,x=void 0===h?"Filter:":h,m=e.startLabel,f=void 0===m?"Start Time:":m,g=e.endLabel,b=void 0===g?"End Time:":g;return(0,l.jsx)(r.rjZ,{item:!0,xs:12,sx:{"& .filter-date-input-label, .end-time-input-label":{display:"none"},"& .MuiInputBase-adornedEnd.filter-date-date-time-input":{width:"100%",border:"1px solid #eaeaea",paddingLeft:"8px",paddingRight:"8px",borderRadius:"1px"},"& .MuiInputAdornment-root button":{height:"20px",width:"20px",marginRight:"5px"},"& .filter-date-input-wrapper":{height:"30px",width:"100%","& .MuiTextField-root":{height:"30px",width:"90%","& input.Mui-disabled":{color:"#000000",WebkitTextFillColor:"#101010"}}}},children:(0,l.jsxs)(i.Z,{sx:{display:"grid",height:{md:"40px",xs:"auto"},alignItems:"center",gridTemplateColumns:{md:"auto 2fr auto",sm:"1fr"},padding:{md:"0",xs:" 5px"},gap:"5px"},children:[(0,l.jsx)(i.Z,{sx:{fontSize:"14px",fontWeight:500,marginRight:"5px"},children:x}),(0,l.jsxs)(i.Z,{sx:{display:"grid",height:{md:"40px",xs:"auto"},border:{md:"1px solid #eaeaea"},alignItems:"center",gridTemplateColumns:{md:"1fr 1fr",sm:"1fr"},gap:"8px",paddingLeft:"8px",paddingRight:"8px"},children:[(0,l.jsxs)(i.Z,{sx:{display:"grid",height:"30px",alignItems:"center",gridTemplateColumns:{xs:"12px auto 1fr"},gap:"5px"},children:[(0,l.jsx)(i.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{width:"10px",height:"10px",fill:"#B4B5B4"}},children:(0,l.jsx)(o.Z,{className:"min-icon"})}),(0,l.jsx)(i.Z,{sx:{fontSize:"12px",marginLeft:"8px"},children:f}),(0,l.jsx)(i.Z,{children:(0,l.jsx)(s.Z,{value:t,onChange:n,id:"stTime",classNamePrefix:"filter-date-",forFilterContained:!0,noInputIcon:!0,openPickerIcon:c})})]}),(0,l.jsxs)(i.Z,{sx:{display:"grid",height:"30px",alignItems:"center",gridTemplateColumns:{xs:"12px auto 1fr"},gap:"5px"},children:[(0,l.jsx)(i.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{width:"10px",height:"10px",fill:"#B4B5B4"}},children:(0,l.jsx)(a.Z,{className:"min-icon"})}),(0,l.jsx)(i.Z,{sx:{fontSize:"12px",marginLeft:"8px"},children:b}),(0,l.jsx)(i.Z,{children:(0,l.jsx)(s.Z,{value:d,onChange:u,id:"endTime",classNamePrefix:"filter-date-",forFilterContained:!0,noInputIcon:!0,openPickerIcon:c})})]})]}),p&&(0,l.jsx)(i.Z,{sx:{alignItems:"flex-end",display:"flex",justifyContent:"flex-end"},children:(0,l.jsx)(r.zxk,{id:"sync",type:"button",variant:"callAction",onClick:p,icon:(0,l.jsx)(r.bnu,{}),label:"Sync"})})]})})}},80705:function(e,t,n){"use strict";var r=n(1413),i=n(72791),o=n(29945),a=n(20817),s=n(36571),l=n(80916),c=n(36612),d=n(63466),u=n(27197),p=n(11135),h=n(25787),x=n(23814),m=n(80184);t.Z=(0,h.Z)((function(e){return(0,p.Z)((0,r.Z)((0,r.Z)({dateSelectorOverride:{height:40,border:"#EAEDEE 1px solid",marginLeft:15,backgroundColor:"#fff",padding:"0 16px",borderRadius:5,"&.MuiInput-underline:hover:not(.Mui-disabled):before":{borderBottom:0},"&:hover":{borderColor:"#000","&:before, &:after":{borderColor:"transparent",borderBottom:0}},"&:before, &:after":{borderColor:"transparent",borderBottom:0},"& input":{fontSize:12,fontWeight:600,color:"#393939"}},dateSelectorFilterOverride:{width:180,height:42,marginLeft:20,padding:0,borderRadius:5,"&.MuiInput-underline:hover:not(.Mui-disabled):before":{borderBottom:0},"&:hover":{"&:before, &:after":{borderColor:"transparent",borderBottom:0}},"&:before, &:after":{borderColor:"transparent",borderBottom:0},"& input":{fontSize:12,fontWeight:"bold",color:"#081C42"},"@media (max-width: 900px)":{width:103}},dateSelectorFormOverride:{width:"100%",maxWidth:840},parentDateOverride:{flexGrow:1},textBoxContainer:{width:"calc(100% - 190px)"},openListIcon:{color:"#9D9E9D",width:8,marginTop:2},paperOverride:{"& .MuiCalendarPicker-root":{padding:"0 22px","& > div":{padding:0,"& > div > div.PrivatePickersFadeTransitionGroup-root:first-of-type":{color:"#0A224C",fontWeight:"bold"},"& > div > div.PrivatePickersFadeTransitionGroup-root:last-of-type":{color:"#9D9E9D","& + button.MuiButtonBase-root":{color:"#9D9E9D"}},"& > div:nth-child(2)":{"& > div":{width:0},"& > button.MuiButtonBase-root":{color:"#0A224C"}}}},"& .MuiTypography-root.MuiTypography-caption":{width:26,height:26,margin:5,color:"#BCBCBC",fontSize:10},"& button.MuiPickersDay-root":{fontWeight:"bold",width:26,height:26,margin:5,textAlign:"center","&.Mui-selected":{backgroundColor:e.palette.primary.main,color:"#fff"}},"& div.MuiPickersDay-hiddenDaySpacingFiller":{width:26,height:26,margin:5},"& div.PrivatePickersSlideTransition-root":{minHeight:240},"& div.MuiCalendarPicker-viewTransitionContainer":{borderTop:"#F0F3F5 1px solid"},"& .MuiClockPicker-arrowSwitcher":{marginRight:10,marginTop:-1,"& > div":{width:0},"& > button.MuiButtonBase-root":{color:"#0A224C"},"& + div > div":{width:255,height:255,backgroundColor:"#fff",marginTop:30,marginBottom:14,border:"#F0F3F5 3px solid","& > div:nth-child(2)":{backgroundColor:"#B4B5B4",width:12,height:12,"&::before":{content:"' '",width:35,height:35,display:"block",position:"absolute",border:"#F0F3F5 3px solid",top:-12,left:-12,borderRadius:"100%"}},"& > div:nth-child(3)":{backgroundColor:"#B4B5B4",width:4},"& > div:last-of-type":{marginTop:15,"& > span":{color:"#0A224C","&.Mui-selected":{color:"#fff"},"&[aria-label='1 hours'], &[aria-label='2 hours'], &[aria-label='3 hours'], &[aria-label='4 hours'], &[aria-label='5 hours'], &[aria-label='6 hours'], &[aria-label='7 hours'], &[aria-label='8 hours'], &[aria-label='9 hours'], &[aria-label='10 hours'], &[aria-label='11 hours'], &[aria-label='12 hours']":{fontWeight:"bold",fontSize:20,marginTop:-1}}}}}}},x.YI),x.Hr))}))((function(e){var t=e.value,n=e.onChange,p=e.classes,h=e.forSearchBlock,x=void 0!==h&&h,f=e.forFilterContained,g=void 0!==f&&f,b=e.label,j=e.tooltip,v=void 0===j?"":j,C=e.required,Z=e.id,_=e.disabled,y=void 0!==_&&_,S=e.noInputIcon,k=void 0!==S&&S,w=e.classNamePrefix,F=void 0===w?"":w,I=e.openPickerIcon,B={};k||(B={startAdornment:(0,m.jsx)(d.Z,{position:"start",children:(0,m.jsx)(u.Z,{})})}),g&&(B={endAdornment:(0,m.jsx)(d.Z,{position:"end",children:(0,m.jsx)(o.Q2V,{className:p.openListIcon})})});var T="".concat(F,"date-time-input ").concat(x?p.dateSelectorOverride:""," ").concat(g&&!x?p.dateSelectorFilterOverride:""),P=x?p.parentDateOverride:p.dateSelectorFormOverride,E=(0,m.jsx)(s._,{dateAdapter:c.Z,children:(0,m.jsx)(l.x,{value:t,onChange:n,InputProps:(0,r.Z)((0,r.Z)({},B),{},{className:T}),components:{OpenPickerIcon:I},label:"",className:P,disabled:y,renderInput:function(e){return(0,m.jsx)(a.Z,(0,r.Z)((0,r.Z)({id:Z,variant:"standard"},e),{},{disabled:!0}))},ampm:!1,PopperProps:{className:p.paperOverride},inputFormat:"LL/dd/yyyy HH:mm"})});if(x)return E;var A=g?"":p.fieldContainer;return(0,m.jsx)(i.Fragment,{children:(0,m.jsxs)(o.rjZ,{item:!0,xs:12,className:"".concat(A," ").concat(F,"input-field-container"),sx:{display:"grid",gridAutoColumns:"max-content"},children:[""!==b&&(0,m.jsxs)(o.AZs,{htmlFor:Z,children:[(0,m.jsxs)("span",{children:[b,C?"*":""]}),""!==v&&(0,m.jsx)("div",{className:p.tooltipContainer,children:(0,m.jsx)(o.ua7,{tooltip:v,placement:"top",children:(0,m.jsx)("div",{className:p.tooltip,children:(0,m.jsx)(o.byK,{})})})})]}),(0,m.jsx)(o.xuv,{className:"".concat(p.textBoxContainer," ").concat(F,"input-wrapper"),children:E})]})})}))},33543:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return I}});var r=n(4942),i=n(93433),o=n(29439),a=n(72791),s=n(26181),l=n.n(s),c=n(78687),d=n(29945),u=n(45248),p={time:"Timestamp",api_name:"API Name",access_key:"Access Key",bucket:"Bucket",object:"Object",remote_host:"Remote Host",request_id:"Request ID",user_agent:"User Agent",response_status:"Response Status",response_status_code:"Response Status Code",request_content_length:"Request Content Length",response_content_length:"Response Content Length",time_to_response_ns:"Time to Response NS"},h=n(56087),x=n(87995),m=n(46078),f=n(44690),g=n(38442),b=n(81207),j=n(80184),v=function(e){var t=e.label,n=e.onChange,r=e.value,i=e.placeholder,o=void 0===i?"":i,s=e.id,l=e.name;return(0,j.jsx)(a.Fragment,{children:(0,j.jsxs)(d.xuv,{sx:{flexGrow:1,margin:"0 15px"},children:[(0,j.jsx)(d.AZs,{children:t}),(0,j.jsx)(d.Wzg,{placeholder:o,id:s,name:l,label:"",onChange:function(e){n(e.target.value)},sx:{"& input":{height:30}},value:r})]})})},C=n(56028),Z=function(e){var t=e.modalOpen,n=e.logSearchElement,r=e.onClose,i=Object.keys(n);return(0,j.jsx)(a.Fragment,{children:(0,j.jsx)(C.Z,{modalOpen:t,title:"Full Log Information",onClose:function(){r()},children:(0,j.jsxs)(d.rjZ,{container:!0,children:[(0,j.jsx)(d.rjZ,{item:!0,xs:12,children:(0,j.jsx)("table",{children:(0,j.jsx)("tbody",{children:i.map((function(e,t){return(0,j.jsxs)("tr",{children:[(0,j.jsx)("th",{style:{fontWeight:700,paddingRight:"10px",textAlign:"left"},children:l()(p,e,"".concat(e))}),(0,j.jsx)("td",{children:l()(n,e,"")})]},"logSearch-".concat(t.toString()))}))})})}),(0,j.jsx)(d.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end"},children:(0,j.jsx)(d.zxk,{id:"close-log-search",variant:"callAction",color:"primary",onClick:r,label:"Close"})})]})})})},_=n(63856),y=n(61889),S=function(e){var t=e.iconComponent,n=e.entity,r=e.documentationLink;return(0,j.jsx)(y.ZP,{container:!0,justifyContent:"center",alignContent:"center",alignItems:"center",children:(0,j.jsx)(y.ZP,{item:!0,xs:8,children:(0,j.jsx)(d.KfX,{title:"".concat(n," not available"),iconComponent:t,help:(0,j.jsxs)(a.Fragment,{children:["This feature is not available.",(0,j.jsx)("br",{}),"Please configure"," ",(0,j.jsx)("a",{href:r,target:"_blank",rel:"noopener",children:n})," ","first to use this feature."]})})})})},k=n(47974),w=n(99670),F={display:"flex",justifyContent:"space-between",marginBottom:12},I=function(){var e=(0,f.TL)(),t=(0,c.v9)(m.$4),n=(0,a.useState)(!0),s=(0,o.Z)(n,2),C=s[0],y=s[1],I=(0,a.useState)(null),B=(0,o.Z)(I,2),T=B[0],P=B[1],E=(0,a.useState)(null),A=(0,o.Z)(E,2),M=A[0],L=A[1],O=(0,a.useState)(!1),D=(0,o.Z)(O,2),R=D[0],N=D[1],q=(0,a.useState)([]),z=(0,o.Z)(q,2),K=z[0],W=z[1],H=(0,a.useState)(""),G=(0,o.Z)(H,2),U=G[0],V=G[1],Y=(0,a.useState)(""),Q=(0,o.Z)(Y,2),X=Q[0],$=Q[1],J=(0,a.useState)(""),ee=(0,o.Z)(J,2),te=ee[0],ne=ee[1],re=(0,a.useState)(""),ie=(0,o.Z)(re,2),oe=ie[0],ae=ie[1],se=(0,a.useState)(""),le=(0,o.Z)(se,2),ce=le[0],de=le[1],ue=(0,a.useState)(""),pe=(0,o.Z)(ue,2),he=pe[0],xe=pe[1],me=(0,a.useState)(""),fe=(0,o.Z)(me,2),ge=fe[0],be=fe[1],je=(0,a.useState)("DESC"),ve=(0,o.Z)(je,2),Ce=ve[0],Ze=ve[1],_e=(0,a.useState)(["time","api_name","access_key","bucket","object","remote_host","request_id","user_agent","response_status"]),ye=(0,o.Z)(_e,2),Se=ye[0],ke=ye[1],we=(0,a.useState)(0),Fe=(0,o.Z)(we,2),Ie=Fe[0],Be=Fe[1],Te=(0,a.useState)(!1),Pe=(0,o.Z)(Te,2),Ee=Pe[0],Ae=Pe[1],Me=(0,a.useState)(!1),Le=(0,o.Z)(Me,2),Oe=Le[0],De=Le[1],Re=(0,a.useState)(null),Ne=(0,o.Z)(Re,2),qe=Ne[0],ze=Ne[1],Ke=null,We=t&&t.includes("log-search"),He=(0,a.useCallback)((function(){if(!Ee&&We){Ae(!0);var t="".concat(""!==U?"&fp=bucket:".concat(U):"").concat(""!==ce?"&fp=object:".concat(ce):"").concat(""!==X?"&fp=api_name:".concat(X):"").concat(""!==te?"&fp=access_key:".concat(te):"").concat(""!==he?"&fp=request_id:".concat(he):"").concat(""!==oe?"&fp=user_agent:".concat(oe):"").concat(""!==ge?"&fp=response_status:".concat(ge):"");(t=t.trim()).endsWith(",")&&(t=t.slice(0,-1)),b.Z.invoke("GET","/api/v1/logs/search?q=reqinfo".concat(""!==t?"".concat(t):"","&pageSize=100&pageNo=").concat(Ie,"&order=").concat("DESC"===Ce?"timeDesc":"timeAsc").concat(null!==T?"&timeStart=".concat(T.toUTC().toISO()):"").concat(null!==M?"&timeEnd=".concat(M.toUTC().toISO()):"")).then((function(e){var t=e.results||[];y(!1),Ae(!1),W(t),Be(Ie+1),null!==Ke&&Ke()})).catch((function(t){y(!1),Ae(!1),e((0,x.Ih)(t))}))}else y(!1),Ae(!1)}),[Ee,We,U,ce,X,te,he,oe,ge,Ie,Ce,T,M,Ke,e]);(0,a.useEffect)((function(){C&&(W([]),He())}),[C,Ce,He]);return(0,a.useEffect)((function(){e((0,x.Sc)("audit_logs"))}),[]),(0,j.jsxs)(a.Fragment,{children:[Oe&&null!==qe&&(0,j.jsx)(Z,{logSearchElement:qe,modalOpen:Oe,onClose:function(){ze(null),De(!1)}}),(0,j.jsx)(k.Z,{label:"Audit Logs",actions:(0,j.jsx)(w.Z,{})}),(0,j.jsx)(d.Xgh,{children:We?(0,j.jsxs)(a.Fragment,{children:[" ",(0,j.jsxs)(d.xuv,{withBorders:!0,sx:{marginBottom:15},children:[(0,j.jsxs)(d.rjZ,{item:!0,xs:12,sx:(0,r.Z)({display:"flex",padding:15},"@media (max-width: ".concat(d.Egj.lg,"px)"),{flexFlow:"column"}),children:[(0,j.jsx)(d.xuv,{children:(0,j.jsx)(_.Z,{setTimeEnd:function(e){return L(e)},setTimeStart:function(e){return P(e)},timeEnd:M,timeStart:T})}),(0,j.jsx)(d.xuv,{sx:{display:"flex",alignItems:"center"},children:(0,j.jsx)(d.cvr,{label:"".concat(R?"Hide":"Show"," advanced Filters"),open:R,onClick:function(){N(!R)}})})]}),(0,j.jsxs)(d.rjZ,{item:!0,xs:12,sx:{display:R?"block":"none",overflowY:"hidden",marginBottom:R?12:0},children:[(0,j.jsxs)(d.xuv,{sx:{marginLeft:15,marginBottom:15,fontSize:12,color:"#9C9C9C"},children:["Enable your preferred options to get filtered records.",(0,j.jsx)("br",{}),"You can use '*' to match any character, '.' to signify a single character or '\\' to scape an special character (E.g. mybucket-*)"]}),(0,j.jsxs)(d.xuv,{sx:F,children:[(0,j.jsx)(v,{onChange:V,value:U,label:"Bucket",id:"bucket",name:"bucket"}),(0,j.jsx)(v,{onChange:$,value:X,label:"API Name",id:"api_name",name:"api_name"}),(0,j.jsx)(v,{onChange:ne,value:te,label:"Access Key",id:"access_key",name:"access_key"}),(0,j.jsx)(v,{onChange:ae,value:oe,label:"User Agent",id:"user_agent",name:"user_agent"})]}),(0,j.jsxs)(d.xuv,{sx:F,children:[(0,j.jsx)(v,{onChange:de,value:ce,label:"Object",id:"object",name:"object"}),(0,j.jsx)(v,{onChange:xe,value:he,label:"Request ID",id:"request_id",name:"request_id"}),(0,j.jsx)(v,{onChange:be,value:ge,label:"Response Status",id:"response_status",name:"response_status"})]})]}),(0,j.jsx)(d.rjZ,{item:!0,xs:12,sx:{marginBottom:15,padding:"0 15px 0 15px",display:"flex",alignItems:"center",justifyContent:"flex-end"},children:(0,j.jsx)(d.zxk,{id:"get-information",type:"button",variant:"callAction",onClick:function(){Be(0),y(!0)},label:"Get Information"})})]}),(0,j.jsx)(d.rjZ,{item:!0,xs:12,children:(0,j.jsx)(g.s,{scopes:[h.Ft.ADMIN_HEALTH_INFO],resource:h.C3,errorProps:{disabled:!0},children:(0,j.jsx)(d.wQF,{columns:[{label:p.time,elementKey:"time",enableSort:!0},{label:p.api_name,elementKey:"api_name"},{label:p.access_key,elementKey:"access_key"},{label:p.bucket,elementKey:"bucket"},{label:p.object,elementKey:"object"},{label:p.remote_host,elementKey:"remote_host"},{label:p.request_id,elementKey:"request_id"},{label:p.user_agent,elementKey:"user_agent"},{label:p.response_status,elementKey:"response_status",renderFunction:function(e){return(0,j.jsx)(a.Fragment,{children:(0,j.jsxs)("span",{children:[e.response_status_code," (",e.response_status,")"]})})},renderFullObject:!0},{label:p.request_content_length,elementKey:"request_content_length",renderFunction:u.ae},{label:p.response_content_length,elementKey:"response_content_length",renderFunction:u.ae},{label:p.time_to_response_ns,elementKey:"time_to_response_ns",renderFunction:u.Yj,contentTextAlign:"right"}],isLoading:C,records:K,entityName:"Logs",customEmptyMessage:"There is no information with this criteria",idField:"request_id",columnsSelector:!0,columnsShown:Se,onColumnChange:function(e){var t;t=Se.findIndex((function(t){return t===e}))>=0?Se.filter((function(t){return t!==e})):[].concat((0,i.Z)(Se),[e]),ke(t)},customPaperHeight:R?"calc(100vh - 520px)":"calc(100vh - 320px)",sortConfig:{currentSort:"time",currentDirection:Ce,triggerSort:function(e){var t=l()(e,"sortDirection","DESC");Ze(t),Be(0),y(!0)}},infiniteScrollConfig:{recordsCount:1e6,loadMoreRecords:function(e){return He(),new Promise((function(e){Ke=e}))}},itemActions:[{type:"view",onClick:function(e){ze(e),De(!0)}}],textSelectable:!0})})})]}):(0,j.jsx)(S,{entity:"Audit Logs",iconComponent:(0,j.jsx)(d.W1M,{}),documentationLink:"https://min.io/docs/minio/windows/operations/monitoring/minio-logging.html?ref=con"})})]})}},32686:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var i=r(n(45649)),o=n(80184),a=(0,i.default)((0,o.jsx)("path",{d:"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2zm4.2 14.2L11 13V7h1.5v5.2l4.5 2.7-.8 1.3z"}),"WatchLater");t.Z=a},45649:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r.createSvgIcon}});var r=n(28610)},31260:function(e,t,n){"use strict";var r=n(78949);t.Z=r.Z},28610:function(e,t,n){"use strict";n.r(t),n.d(t,{capitalize:function(){return i.Z},createChainedFunction:function(){return o.Z},createSvgIcon:function(){return a.Z},debounce:function(){return s.Z},deprecatedPropType:function(){return l},isMuiElement:function(){return c.Z},ownerDocument:function(){return d.Z},ownerWindow:function(){return u.Z},requirePropFactory:function(){return p},setRef:function(){return h},unstable_ClassNameGenerator:function(){return C},unstable_useEnhancedEffect:function(){return x.Z},unstable_useId:function(){return m.Z},unsupportedProp:function(){return f},useControlled:function(){return g.Z},useEventCallback:function(){return b.Z},useForkRef:function(){return j.Z},useIsFocusVisible:function(){return v.Z}});var r=n(55902),i=n(14036),o=n(31260),a=n(76189),s=n(83199);var l=function(e,t){return function(){return null}},c=n(19103),d=n(98301),u=n(17602);n(87462);var p=function(e,t){return function(){return null}},h=n(62971).Z,x=n(40162),m=n(67384);var f=function(e,t,n,r,i){return null},g=n(98278),b=n(89683),j=n(42071),v=n(23031),C={configure:function(e){r.Z.configure(e)}}},64836:function(e){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); +//# sourceMappingURL=3543.d91de02c.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/3543.d91de02c.chunk.js.map b/portal-ui/build/static/js/3543.d91de02c.chunk.js.map new file mode 100644 index 0000000000..12580d9d36 --- /dev/null +++ b/portal-ui/build/static/js/3543.d91de02c.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/3543.d91de02c.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/DateRangeSelector/DateRangeSelector.tsx","screens/Console/Common/FormComponents/DateTimePickerWrapper/DateTimePickerWrapper.tsx","screens/Console/Logs/LogSearch/utils.ts","screens/Console/Common/FormComponents/FilterInputWrapper/FilterInputWrapper.tsx","screens/Console/Logs/LogSearch/LogSearchFullModal.tsx","screens/Console/Common/MissingIntegration/MissingIntegration.tsx","screens/Console/Logs/LogSearch/LogsSearchMain.tsx","../node_modules/@mui/icons-material/WatchLater.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/esm/deprecatedPropType.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/esm/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/esm/unsupportedProp.js","../node_modules/@mui/material/utils/index.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Button, OpenListIcon, SyncIcon, Grid } from \"mds\";\nimport { DateTime } from \"luxon\";\nimport { Box } from \"@mui/material\";\nimport ScheduleIcon from \"@mui/icons-material/Schedule\";\nimport WatchLaterIcon from \"@mui/icons-material/WatchLater\";\nimport DateTimePickerWrapper from \"../DateTimePickerWrapper/DateTimePickerWrapper\";\n\ninterface IDateRangeSelector {\n timeStart: DateTime | null;\n setTimeStart: (value: DateTime | null) => void;\n timeEnd: DateTime | null;\n setTimeEnd: (value: DateTime | null) => void;\n triggerSync?: () => void;\n label?: string;\n startLabel?: string;\n endLabel?: string;\n}\n\nconst DateFilterAdornIcon = () => {\n return (\n \n \n \n );\n};\n\nconst DateRangeSelector = ({\n timeStart,\n setTimeStart,\n timeEnd,\n setTimeEnd,\n triggerSync,\n label = \"Filter:\",\n startLabel = \"Start Time:\",\n endLabel = \"End Time:\",\n}: IDateRangeSelector) => {\n return (\n \n \n \n {label}\n \n \n \n \n \n \n \n {startLabel}\n \n \n \n \n \n\n \n \n \n \n \n {endLabel}\n \n \n \n \n \n \n\n {triggerSync && (\n \n }\n label={\"Sync\"}\n />\n \n )}\n \n \n );\n};\n\nexport default DateRangeSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { DateTime } from \"luxon\";\nimport { HelpIcon, OpenListIcon, Grid, InputLabel, Tooltip, Box } from \"mds\";\nimport { TextField } from \"@mui/material\";\nimport { DateTimePicker, LocalizationProvider } from \"@mui/x-date-pickers\";\nimport { AdapterLuxon } from \"@mui/x-date-pickers/AdapterLuxon\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport ScheduleIcon from \"@mui/icons-material/Schedule\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\n\ninterface IDateTimePicker {\n value: DateTime | null;\n onChange: (value: DateTime | null) => void;\n classes: any;\n forSearchBlock?: boolean;\n forFilterContained?: boolean;\n label?: string;\n required?: boolean;\n tooltip?: string;\n id: string;\n disabled?: boolean;\n noInputIcon?: boolean;\n classNamePrefix?: string;\n openPickerIcon?: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n dateSelectorOverride: {\n height: 40,\n border: \"#EAEDEE 1px solid\",\n marginLeft: 15,\n backgroundColor: \"#fff\",\n padding: \"0 16px\",\n borderRadius: 5,\n \"&.MuiInput-underline:hover:not(.Mui-disabled):before\": {\n borderBottom: 0,\n },\n \"&:hover\": {\n borderColor: \"#000\",\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n },\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n \"& input\": {\n fontSize: 12,\n fontWeight: 600,\n color: \"#393939\",\n },\n },\n dateSelectorFilterOverride: {\n width: 180,\n height: 42,\n marginLeft: 20,\n padding: 0,\n borderRadius: 5,\n \"&.MuiInput-underline:hover:not(.Mui-disabled):before\": {\n borderBottom: 0,\n },\n \"&:hover\": {\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n },\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n \"& input\": {\n fontSize: 12,\n fontWeight: \"bold\",\n color: \"#081C42\",\n },\n \"@media (max-width: 900px)\": {\n width: 103,\n },\n },\n dateSelectorFormOverride: {\n width: \"100%\",\n maxWidth: 840,\n },\n parentDateOverride: {\n flexGrow: 1,\n },\n textBoxContainer: {\n width: \"calc(100% - 190px)\",\n },\n openListIcon: {\n color: \"#9D9E9D\",\n width: 8,\n marginTop: 2,\n },\n paperOverride: {\n \"& .MuiCalendarPicker-root\": {\n padding: \"0 22px\",\n \"& > div\": {\n padding: 0,\n \"& > div > div.PrivatePickersFadeTransitionGroup-root:first-of-type\":\n {\n color: \"#0A224C\",\n fontWeight: \"bold\",\n },\n \"& > div > div.PrivatePickersFadeTransitionGroup-root:last-of-type\": {\n color: \"#9D9E9D\",\n \"& + button.MuiButtonBase-root\": {\n color: \"#9D9E9D\",\n },\n },\n \"& > div:nth-child(2)\": {\n \"& > div\": {\n width: 0,\n },\n \"& > button.MuiButtonBase-root\": {\n color: \"#0A224C\",\n },\n },\n },\n },\n \"& .MuiTypography-root.MuiTypography-caption\": {\n width: 26,\n height: 26,\n margin: 5,\n color: \"#BCBCBC\",\n fontSize: 10,\n },\n \"& button.MuiPickersDay-root\": {\n fontWeight: \"bold\",\n width: 26,\n height: 26,\n margin: 5,\n textAlign: \"center\",\n \"&.Mui-selected\": {\n backgroundColor: theme.palette.primary.main,\n color: \"#fff\",\n },\n },\n \"& div.MuiPickersDay-hiddenDaySpacingFiller\": {\n width: 26,\n height: 26,\n margin: 5,\n },\n \"& div.PrivatePickersSlideTransition-root\": {\n minHeight: 240,\n },\n \"& div.MuiCalendarPicker-viewTransitionContainer\": {\n borderTop: \"#F0F3F5 1px solid\",\n },\n \"& .MuiClockPicker-arrowSwitcher\": {\n marginRight: 10,\n marginTop: -1,\n \"& > div\": {\n width: 0,\n },\n \"& > button.MuiButtonBase-root\": {\n color: \"#0A224C\",\n },\n \"& + div > div\": {\n width: 255,\n height: 255,\n backgroundColor: \"#fff\",\n marginTop: 30,\n marginBottom: 14,\n border: \"#F0F3F5 3px solid\",\n \"& > div:nth-child(2)\": {\n backgroundColor: \"#B4B5B4\",\n width: 12,\n height: 12,\n \"&::before\": {\n content: \"' '\",\n width: 35,\n height: 35,\n display: \"block\",\n position: \"absolute\",\n border: \"#F0F3F5 3px solid\",\n top: -12,\n left: -12,\n borderRadius: \"100%\",\n },\n },\n \"& > div:nth-child(3)\": {\n backgroundColor: \"#B4B5B4\",\n width: 4,\n },\n \"& > div:last-of-type\": {\n marginTop: 15,\n \"& > span\": {\n color: \"#0A224C\",\n \"&.Mui-selected\": {\n color: \"#fff\",\n },\n \"&[aria-label='1 hours'], &[aria-label='2 hours'], &[aria-label='3 hours'], &[aria-label='4 hours'], &[aria-label='5 hours'], &[aria-label='6 hours'], &[aria-label='7 hours'], &[aria-label='8 hours'], &[aria-label='9 hours'], &[aria-label='10 hours'], &[aria-label='11 hours'], &[aria-label='12 hours']\":\n {\n fontWeight: \"bold\",\n fontSize: 20,\n marginTop: -1,\n },\n },\n },\n },\n },\n },\n ...fieldBasic,\n ...tooltipHelper,\n });\n\nconst DateTimePickerWrapper = ({\n value,\n onChange,\n classes,\n forSearchBlock = false,\n forFilterContained = false,\n label,\n tooltip = \"\",\n required,\n id,\n disabled = false,\n noInputIcon = false,\n classNamePrefix = \"\",\n openPickerIcon,\n}: IDateTimePicker) => {\n let adornment = {};\n\n if (!noInputIcon) {\n adornment = {\n startAdornment: (\n \n \n \n ),\n };\n }\n\n if (forFilterContained) {\n adornment = {\n endAdornment: (\n \n \n \n ),\n };\n }\n\n const classOverridden = `${classNamePrefix}date-time-input ${\n forSearchBlock ? classes.dateSelectorOverride : \"\"\n } ${\n forFilterContained && !forSearchBlock\n ? classes.dateSelectorFilterOverride\n : \"\"\n }`;\n\n const clsName = forSearchBlock\n ? classes.parentDateOverride\n : classes.dateSelectorFormOverride;\n\n const inputItem = (\n \n (\n \n )}\n ampm={false}\n PopperProps={{\n className: classes.paperOverride,\n }}\n inputFormat={\"LL/dd/yyyy HH:mm\"}\n />\n \n );\n\n if (forSearchBlock) {\n return inputItem;\n }\n\n const containerCls = !forFilterContained ? classes.fieldContainer : \"\";\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n
\n )}\n\n \n {inputItem}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(DateTimePickerWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const LogSearchColumnLabels = {\n time: \"Timestamp\",\n api_name: \"API Name\",\n access_key: \"Access Key\",\n bucket: \"Bucket\",\n object: \"Object\",\n remote_host: \"Remote Host\",\n request_id: \"Request ID\",\n user_agent: \"User Agent\",\n response_status: \"Response Status\",\n response_status_code: \"Response Status Code\",\n request_content_length: \"Request Content Length\",\n response_content_length: \"Response Content Length\",\n time_to_response_ns: \"Time to Response NS\",\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { InputBox, InputLabel, Box } from \"mds\";\n\ninterface IFilterInputWrapper {\n value: string;\n onChange: (txtVar: string) => any;\n label: string;\n placeholder?: string;\n id: string;\n name: string;\n}\n\nconst FilterInputWrapper = ({\n label,\n onChange,\n value,\n placeholder = \"\",\n id,\n name,\n}: IFilterInputWrapper) => {\n return (\n \n \n {label}\n {\n onChange(val.target.value);\n }}\n sx={{\n \"& input\": {\n height: 30,\n },\n }}\n value={value}\n />\n \n \n );\n};\n\nexport default FilterInputWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Button, Grid } from \"mds\";\nimport get from \"lodash/get\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { IReqInfoSearchResults } from \"./types\";\nimport { LogSearchColumnLabels } from \"./utils\";\n\ninterface ILogSearchFullModal {\n modalOpen: boolean;\n logSearchElement: IReqInfoSearchResults;\n onClose: () => void;\n}\n\nconst LogSearchFullModal = ({\n modalOpen,\n logSearchElement,\n onClose,\n}: ILogSearchFullModal) => {\n const jsonItems = Object.keys(logSearchElement);\n\n return (\n \n {\n onClose();\n }}\n >\n \n \n \n \n {jsonItems.map((objectKey: string, index: number) => (\n \n \n {get(LogSearchColumnLabels, objectKey, `${objectKey}`)}\n \n \n \n ))}\n \n
{get(logSearchElement, objectKey, \"\")}
\n
\n \n \n
\n \n \n
\n );\n};\n\nexport default LogSearchFullModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Grid } from \"@mui/material\";\nimport { HelpBox } from \"mds\";\n\ninterface IMissingIntegration {\n iconComponent: any;\n entity: string;\n documentationLink: string;\n}\n\nconst MissingIntegration = ({\n iconComponent,\n entity,\n documentationLink,\n}: IMissingIntegration) => {\n return (\n \n \n \n This feature is not available.\n
\n Please configure{\" \"}\n \n {entity}\n {\" \"}\n first to use this feature.\n \n }\n />\n
\n \n );\n};\n\nexport default MissingIntegration;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { CSSObject } from \"styled-components\";\nimport {\n Box,\n breakPoints,\n Button,\n DataTable,\n ExpandOptionsButton,\n Grid,\n PageLayout,\n SearchIcon,\n} from \"mds\";\nimport { DateTime } from \"luxon\";\nimport { IReqInfoSearchResults, ISearchResponse } from \"./types\";\nimport { niceBytes, nsToSeconds } from \"../../../../common/utils\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport { LogSearchColumnLabels } from \"./utils\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_SCOPES,\n} from \"../../../../common/SecureComponent/permissions\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../../systemSlice\";\nimport { selFeatures } from \"../../consoleSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { SecureComponent } from \"../../../../common/SecureComponent\";\nimport api from \"../../../../common/api\";\nimport FilterInputWrapper from \"../../Common/FormComponents/FilterInputWrapper/FilterInputWrapper\";\nimport LogSearchFullModal from \"./LogSearchFullModal\";\nimport DateRangeSelector from \"../../Common/FormComponents/DateRangeSelector/DateRangeSelector\";\nimport MissingIntegration from \"../../Common/MissingIntegration/MissingIntegration\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../../HelpMenu\";\n\nconst filtersContainer: CSSObject = {\n display: \"flex\",\n justifyContent: \"space-between\",\n marginBottom: 12,\n};\n\nconst LogsSearchMain = () => {\n const dispatch = useAppDispatch();\n const features = useSelector(selFeatures);\n\n const [loading, setLoading] = useState(true);\n const [timeStart, setTimeStart] = useState(null);\n const [timeEnd, setTimeEnd] = useState(null);\n const [filterOpen, setFilterOpen] = useState(false);\n const [records, setRecords] = useState([]);\n const [bucket, setBucket] = useState(\"\");\n const [apiName, setApiName] = useState(\"\");\n const [accessKey, setAccessKey] = useState(\"\");\n const [userAgent, setUserAgent] = useState(\"\");\n const [object, setObject] = useState(\"\");\n const [requestID, setRequestID] = useState(\"\");\n const [responseStatus, setResponseStatus] = useState(\"\");\n const [sortOrder, setSortOrder] = useState<\"ASC\" | \"DESC\" | undefined>(\n \"DESC\",\n );\n const [columnsShown, setColumnsShown] = useState([\n \"time\",\n \"api_name\",\n \"access_key\",\n \"bucket\",\n \"object\",\n \"remote_host\",\n \"request_id\",\n \"user_agent\",\n \"response_status\",\n ]);\n const [nextPage, setNextPage] = useState(0);\n const [alreadyFetching, setAlreadyFetching] = useState(false);\n const [logSearchExtrasOpen, setLogSearchExtrasOpen] =\n useState(false);\n const [selectedItem, setSelectedItem] =\n useState(null);\n\n let recordsResp: any = null;\n const logSearchEnabled = features && features.includes(\"log-search\");\n\n const fetchRecords = useCallback(() => {\n if (!alreadyFetching && logSearchEnabled) {\n setAlreadyFetching(true);\n let queryParams = `${bucket !== \"\" ? `&fp=bucket:${bucket}` : \"\"}${\n object !== \"\" ? `&fp=object:${object}` : \"\"\n }${apiName !== \"\" ? `&fp=api_name:${apiName}` : \"\"}${\n accessKey !== \"\" ? `&fp=access_key:${accessKey}` : \"\"\n }${requestID !== \"\" ? `&fp=request_id:${requestID}` : \"\"}${\n userAgent !== \"\" ? `&fp=user_agent:${userAgent}` : \"\"\n }${responseStatus !== \"\" ? `&fp=response_status:${responseStatus}` : \"\"}`;\n\n queryParams = queryParams.trim();\n\n if (queryParams.endsWith(\",\")) {\n queryParams = queryParams.slice(0, -1);\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/logs/search?q=reqinfo${\n queryParams !== \"\" ? `${queryParams}` : \"\"\n }&pageSize=100&pageNo=${nextPage}&order=${\n sortOrder === \"DESC\" ? \"timeDesc\" : \"timeAsc\"\n }${\n timeStart !== null ? `&timeStart=${timeStart.toUTC().toISO()}` : \"\"\n }${timeEnd !== null ? `&timeEnd=${timeEnd.toUTC().toISO()}` : \"\"}`,\n )\n .then((res: ISearchResponse) => {\n const fetchedResults = res.results || [];\n\n setLoading(false);\n setAlreadyFetching(false);\n setRecords(fetchedResults);\n setNextPage(nextPage + 1);\n\n if (recordsResp !== null) {\n recordsResp();\n }\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n setAlreadyFetching(false);\n dispatch(setErrorSnackMessage(err));\n });\n } else {\n setLoading(false);\n setAlreadyFetching(false);\n }\n }, [\n alreadyFetching,\n logSearchEnabled,\n bucket,\n object,\n apiName,\n accessKey,\n requestID,\n userAgent,\n responseStatus,\n nextPage,\n sortOrder,\n timeStart,\n timeEnd,\n recordsResp,\n dispatch,\n ]);\n\n useEffect(() => {\n if (loading) {\n setRecords([]);\n fetchRecords();\n }\n }, [loading, sortOrder, fetchRecords]);\n\n const triggerLoad = () => {\n setNextPage(0);\n setLoading(true);\n };\n\n const selectColumn = (colID: string) => {\n let newArray: string[];\n\n const columnShown = columnsShown.findIndex((item) => item === colID);\n\n // Column Exist, We remove from Array\n if (columnShown >= 0) {\n newArray = columnsShown.filter((element) => element !== colID);\n } else {\n // Column not visible, we include it in the array\n newArray = [...columnsShown, colID];\n }\n\n setColumnsShown(newArray);\n };\n\n const sortChange = (sortData: any) => {\n const newSortDirection = get(sortData, \"sortDirection\", \"DESC\");\n setSortOrder(newSortDirection);\n setNextPage(0);\n setLoading(true);\n };\n\n const loadMoreRecords = (_: { startIndex: number; stopIndex: number }) => {\n fetchRecords();\n return new Promise((resolve) => {\n recordsResp = resolve;\n });\n };\n\n const openExtraInformation = (item: IReqInfoSearchResults) => {\n setSelectedItem(item);\n setLogSearchExtrasOpen(true);\n };\n\n const closeViewExtraInformation = () => {\n setSelectedItem(null);\n setLogSearchExtrasOpen(false);\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"audit_logs\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {logSearchExtrasOpen && selectedItem !== null && (\n \n )}\n\n } />\n\n \n {!logSearchEnabled ? (\n }\n documentationLink=\"https://min.io/docs/minio/windows/operations/monitoring/minio-logging.html?ref=con\"\n />\n ) : (\n \n {\" \"}\n \n \n \n setTimeEnd(time)}\n setTimeStart={(time) => setTimeStart(time)}\n timeEnd={timeEnd}\n timeStart={timeStart}\n />\n \n \n {\n setFilterOpen(!filterOpen);\n }}\n />\n \n \n \n \n Enable your preferred options to get filtered records.\n
\n You can use '*' to match any character, '.' to signify a\n single character or '\\' to scape an special character (E.g.\n mybucket-*)\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n (\n \n \n {element.response_status_code} (\n {element.response_status})\n \n \n ),\n renderFullObject: true,\n },\n {\n label: LogSearchColumnLabels.request_content_length,\n elementKey: \"request_content_length\",\n renderFunction: niceBytes,\n },\n {\n label: LogSearchColumnLabels.response_content_length,\n elementKey: \"response_content_length\",\n renderFunction: niceBytes,\n },\n {\n label: LogSearchColumnLabels.time_to_response_ns,\n elementKey: \"time_to_response_ns\",\n renderFunction: nsToSeconds,\n contentTextAlign: \"right\",\n },\n ]}\n isLoading={loading}\n records={records}\n entityName=\"Logs\"\n customEmptyMessage={\n \"There is no information with this criteria\"\n }\n idField=\"request_id\"\n columnsSelector\n columnsShown={columnsShown}\n onColumnChange={selectColumn}\n customPaperHeight={\n filterOpen ? \"calc(100vh - 520px)\" : \"calc(100vh - 320px)\"\n }\n sortConfig={{\n currentSort: \"time\",\n currentDirection: sortOrder,\n triggerSort: sortChange,\n }}\n infiniteScrollConfig={{\n recordsCount: 1000000,\n loadMoreRecords: loadMoreRecords,\n }}\n itemActions={[\n {\n type: \"view\",\n onClick: openExtraInformation,\n },\n ]}\n textSelectable\n />\n \n \n
\n )}\n
\n
\n );\n};\n\nexport default LogsSearchMain;\n","\"use strict\";\n\"use client\";\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.5 2 2 6.5 2 12s4.5 10 10 10 10-4.5 10-10S17.5 2 12 2zm4.2 14.2L11 13V7h1.5v5.2l4.5 2.7-.8 1.3z\"\n}), 'WatchLater');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["DateFilterAdornIcon","_jsx","Box","sx","display","alignItems","width","height","children","OpenListIcon","_ref","timeStart","setTimeStart","timeEnd","setTimeEnd","triggerSync","_ref$label","label","_ref$startLabel","startLabel","_ref$endLabel","endLabel","Grid","item","xs","border","paddingLeft","paddingRight","borderRadius","marginRight","color","WebkitTextFillColor","_jsxs","md","gridTemplateColumns","sm","padding","gap","fontSize","fontWeight","fill","ScheduleIcon","className","marginLeft","DateTimePickerWrapper","value","onChange","id","classNamePrefix","forFilterContained","noInputIcon","openPickerIcon","WatchLaterIcon","justifyContent","Button","type","variant","onClick","icon","SyncIcon","withStyles","theme","createStyles","_objectSpread","dateSelectorOverride","backgroundColor","borderBottom","borderColor","dateSelectorFilterOverride","dateSelectorFormOverride","maxWidth","parentDateOverride","flexGrow","textBoxContainer","openListIcon","marginTop","paperOverride","margin","textAlign","palette","primary","main","minHeight","borderTop","marginBottom","content","position","top","left","fieldBasic","tooltipHelper","classes","_ref$forSearchBlock","forSearchBlock","_ref$forFilterContain","_ref$tooltip","tooltip","required","_ref$disabled","disabled","_ref$noInputIcon","_ref$classNamePrefix","adornment","startAdornment","InputAdornment","endAdornment","classOverridden","concat","clsName","inputItem","LocalizationProvider","dateAdapter","AdapterLuxon","DateTimePicker","InputProps","components","OpenPickerIcon","renderInput","props","TextField","ampm","PopperProps","inputFormat","containerCls","fieldContainer","Fragment","gridAutoColumns","InputLabel","htmlFor","tooltipContainer","Tooltip","placement","HelpIcon","LogSearchColumnLabels","time","api_name","access_key","bucket","object","remote_host","request_id","user_agent","response_status","response_status_code","request_content_length","response_content_length","time_to_response_ns","_ref$placeholder","placeholder","name","InputBox","val","target","modalOpen","logSearchElement","onClose","jsonItems","Object","keys","ModalWrapper","title","container","map","objectKey","index","style","get","toString","iconComponent","entity","documentationLink","alignContent","HelpBox","help","href","rel","filtersContainer","dispatch","useAppDispatch","features","useSelector","selFeatures","_useState","useState","_useState2","_slicedToArray","loading","setLoading","_useState3","_useState4","_useState5","_useState6","_useState7","_useState8","filterOpen","setFilterOpen","_useState9","_useState10","records","setRecords","_useState11","_useState12","setBucket","_useState13","_useState14","apiName","setApiName","_useState15","_useState16","accessKey","setAccessKey","_useState17","_useState18","userAgent","setUserAgent","_useState19","_useState20","setObject","_useState21","_useState22","requestID","setRequestID","_useState23","_useState24","responseStatus","setResponseStatus","_useState25","_useState26","sortOrder","setSortOrder","_useState27","_useState28","columnsShown","setColumnsShown","_useState29","_useState30","nextPage","setNextPage","_useState31","_useState32","alreadyFetching","setAlreadyFetching","_useState33","_useState34","logSearchExtrasOpen","setLogSearchExtrasOpen","_useState35","_useState36","selectedItem","setSelectedItem","recordsResp","logSearchEnabled","includes","fetchRecords","useCallback","queryParams","trim","endsWith","slice","api","invoke","toUTC","toISO","then","res","fetchedResults","results","catch","err","setErrorSnackMessage","useEffect","setHelpName","LogSearchFullModal","PageHeaderWrapper","actions","HelpMenu","PageLayout","withBorders","_defineProperty","breakPoints","lg","flexFlow","DateRangeSelector","ExpandOptionsButton","open","overflowY","FilterInputWrapper","SecureComponent","scopes","IAM_SCOPES","ADMIN_HEALTH_INFO","resource","CONSOLE_UI_RESOURCE","errorProps","DataTable","columns","elementKey","enableSort","renderFunction","element","renderFullObject","niceBytes","nsToSeconds","contentTextAlign","isLoading","entityName","customEmptyMessage","idField","columnsSelector","onColumnChange","colID","newArray","findIndex","filter","_toConsumableArray","customPaperHeight","sortConfig","currentSort","currentDirection","triggerSort","sortData","newSortDirection","infiniteScrollConfig","recordsCount","loadMoreRecords","_","Promise","resolve","itemActions","textSelectable","MissingIntegration","SearchIcon","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","defineProperty","enumerable","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/3690.b6d7d3b6.chunk.js b/portal-ui/build/static/js/3690.6957ca61.chunk.js similarity index 98% rename from portal-ui/build/static/js/3690.b6d7d3b6.chunk.js rename to portal-ui/build/static/js/3690.6957ca61.chunk.js index c5f804dffd..dd24a9dbb0 100644 --- a/portal-ui/build/static/js/3690.b6d7d3b6.chunk.js +++ b/portal-ui/build/static/js/3690.6957ca61.chunk.js @@ -1,2 +1,2 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[3690],{33690:function(e,t,n){"use strict";n.r(t);var o=n(29439),r=n(72791),i=n(31776),a=n(66315),c=n(82342),l=n(29945),u=n(23814),s=n(87995),f=n(81551),p=n(19859),d=n(56028),y=n(92217),b=n(80184);t.default=function(e){var t=e.open,n=e.bucketName,m=e.actualPolicy,v=e.actualDefinition,h=e.closeModalAndRefresh,g=(0,f.TL)(),C=(0,r.useState)(!1),x=(0,o.Z)(C,2),j=x[0],w=x[1],O=(0,r.useState)(""),P=(0,o.Z)(O,2),S=P[0],k=P[1],D=(0,r.useState)(p.L),E=(0,o.Z)(D,2),T=E[0],R=E[1];return(0,r.useEffect)((function(){k(m),R(v?JSON.stringify(JSON.parse(v),null,4):p.L)}),[k,m,R,v]),(0,b.jsx)(d.Z,{title:"Change Access Policy",modalOpen:t,onClose:function(){h()},titleIcon:(0,b.jsx)(l.QXQ,{}),children:(0,b.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),!j&&S&&(w(!0),i.h.buckets.bucketSetPolicy(n,{access:S,definition:T}).then((function(){w(!1),h()})).catch((function(e){w(!1),g((0,s.zb)((0,c.g)(e.error)))})))},children:[(0,b.jsxs)(l.ltY,{withBorders:!1,containerPadding:!1,children:[(0,b.jsx)(l.PhF,{value:S,label:"Access Policy",id:"select-access-policy",name:"select-access-policy",onChange:function(e){k(e)},options:[{value:a.cv.PRIVATE,label:"Private"},{value:a.cv.PUBLIC,label:"Public"},{value:a.cv.CUSTOM,label:"Custom"}]}),"PUBLIC"===S&&(0,b.jsx)(l.xuv,{className:"muted",style:{marginTop:"25px",fontSize:"14px",fontStyle:"italic"},children:"* Warning: With Public access anyone will be able to upload, download and delete files from this Bucket *"}),"CUSTOM"===S&&(0,b.jsx)(l.rjZ,{item:!0,xs:12,children:(0,b.jsx)(y.Z,{label:"Write Policy",value:T,onChange:function(e){R(e)},editorHeight:"300px"})})]}),(0,b.jsxs)(l.xuv,{sx:u.ID.modalButtonBar,children:[(0,b.jsx)(l.zxk,{id:"cancel",type:"button",variant:"regular",onClick:function(){h()},disabled:j,label:"Cancel"}),(0,b.jsx)(l.zxk,{id:"set",type:"submit",variant:"callAction",disabled:j||"CUSTOM"===S&&!T,label:"Set"})]})]})})}},92217:function(e,t,n){"use strict";var o=n(72791),r=n(29945),i=n(78029),a=n.n(i),c=n(27454),l=n(80184);t.Z=function(e){var t=e.value,n=e.label,i=void 0===n?"":n,u=e.tooltip,s=void 0===u?"":u,f=e.mode,p=void 0===f?"json":f,d=e.onChange,y=e.editorHeight,b=void 0===y?250:y;return(0,l.jsx)(r.pq4,{value:t,onChange:function(e){return d(e)},mode:p,tooltip:s,editorHeight:b,label:i,helpTools:(0,l.jsx)(o.Fragment,{children:(0,l.jsx)(c.Z,{tooltip:"Copy to Clipboard",children:(0,l.jsx)(a(),{text:t,children:(0,l.jsx)(r.zxk,{type:"button",id:"copy-code-mirror",icon:(0,l.jsx)(r.TIy,{}),color:"primary",variant:"regular"})})})})})}},19859:function(e,t,n){"use strict";n.d(t,{L:function(){return o}});var o='{\n "Version": "2012-10-17",\n "Statement": [\n \n ]\n}'},76998:function(e,t,n){"use strict";var o=n(42458),r={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,i,a,c,l,u,s=!1;t||(t={}),n=t.debug||!1;try{if(a=o(),c=document.createRange(),l=document.getSelection(),(u=document.createElement("span")).textContent=e,u.ariaHidden="true",u.style.all="unset",u.style.position="fixed",u.style.top=0,u.style.clip="rect(0, 0, 0, 0)",u.style.whiteSpace="pre",u.style.webkitUserSelect="text",u.style.MozUserSelect="text",u.style.msUserSelect="text",u.style.userSelect="text",u.addEventListener("copy",(function(o){if(o.stopPropagation(),t.format)if(o.preventDefault(),"undefined"===typeof o.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var i=r[t.format]||r.default;window.clipboardData.setData(i,e)}else o.clipboardData.clearData(),o.clipboardData.setData(t.format,e);t.onCopy&&(o.preventDefault(),t.onCopy(o.clipboardData))})),document.body.appendChild(u),c.selectNodeContents(u),l.addRange(c),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");s=!0}catch(f){n&&console.error("unable to copy using execCommand: ",f),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),s=!0}catch(f){n&&console.error("unable to copy using clipboardData: ",f),n&&console.error("falling back to prompt"),i=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(i,e)}}finally{l&&("function"==typeof l.removeRange?l.removeRange(c):l.removeAllRanges()),u&&document.body.removeChild(u),a()}return s}},568:function(e,t,n){"use strict";function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var r=c(n(72791)),i=c(n(76998)),a=["text","onCopy","options","children"];function c(e){return e&&e.__esModule?e:{default:e}}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function u(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function f(e,t){for(var n=0;n=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function f(e,t){for(var n=0;n.\n\nimport React, { useEffect, useState } from \"react\";\nimport { api } from \"api\";\nimport { BucketAccess } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport {\n Box,\n Button,\n ChangeAccessPolicyIcon,\n FormLayout,\n Grid,\n Select,\n} from \"mds\";\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { emptyPolicy } from \"../../Policies/utils\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport CodeMirrorWrapper from \"../../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\n\ninterface ISetAccessPolicyProps {\n open: boolean;\n bucketName: string;\n actualPolicy: BucketAccess | string;\n actualDefinition: string;\n closeModalAndRefresh: () => void;\n}\n\nconst SetAccessPolicy = ({\n open,\n bucketName,\n actualPolicy,\n actualDefinition,\n closeModalAndRefresh,\n}: ISetAccessPolicyProps) => {\n const dispatch = useAppDispatch();\n const [addLoading, setAddLoading] = useState(false);\n const [accessPolicy, setAccessPolicy] = useState(\"\");\n const [policyDefinition, setPolicyDefinition] = useState(emptyPolicy);\n const addRecord = (event: React.FormEvent) => {\n event.preventDefault();\n if (addLoading || !accessPolicy) {\n return;\n }\n setAddLoading(true);\n api.buckets\n .bucketSetPolicy(bucketName, {\n access: accessPolicy as BucketAccess,\n definition: policyDefinition,\n })\n .then(() => {\n setAddLoading(false);\n closeModalAndRefresh();\n })\n .catch((err) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n useEffect(() => {\n setAccessPolicy(actualPolicy);\n setPolicyDefinition(\n actualDefinition\n ? JSON.stringify(JSON.parse(actualDefinition), null, 4)\n : emptyPolicy,\n );\n }, [setAccessPolicy, actualPolicy, setPolicyDefinition, actualDefinition]);\n\n return (\n {\n closeModalAndRefresh();\n }}\n titleIcon={}\n >\n ) => {\n addRecord(e);\n }}\n >\n \n {\n setAccessPolicy(value as BucketAccess);\n }}\n options={[\n { value: BucketAccess.PRIVATE, label: \"Private\" },\n { value: BucketAccess.PUBLIC, label: \"Public\" },\n { value: BucketAccess.CUSTOM, label: \"Custom\" },\n ]}\n />\n {accessPolicy === \"PUBLIC\" && (\n \n * Warning: With Public access anyone will be able to upload,\n download and delete files from this Bucket *\n \n )}\n {accessPolicy === \"CUSTOM\" && (\n \n {\n setPolicyDefinition(value);\n }}\n editorHeight={\"300px\"}\n />\n \n )}\n \n \n {\n closeModalAndRefresh();\n }}\n disabled={addLoading}\n label={\"Cancel\"}\n />\n \n \n \n \n );\n};\n\nexport default SetAccessPolicy;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Button, CodeEditor, CopyIcon } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n onChange: (value: string) => any;\n editorHeight?: string | number;\n}\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n onChange,\n editorHeight = 250,\n}: ICodeWrapper) => {\n return (\n onChange(value)}\n mode={mode}\n tooltip={tooltip}\n editorHeight={editorHeight}\n label={label}\n helpTools={\n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n }\n />\n );\n};\n\nexport default CodeMirrorWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const emptyPolicy =\n \"{\\n\" +\n ' \"Version\": \"2012-10-17\",\\n' +\n ' \"Statement\": [\\n' +\n \" \\n\" +\n \" ]\\n\" +\n \"}\";\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n"],"names":["_ref","open","bucketName","actualPolicy","actualDefinition","closeModalAndRefresh","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","addLoading","setAddLoading","_useState3","_useState4","accessPolicy","setAccessPolicy","_useState5","emptyPolicy","_useState6","policyDefinition","setPolicyDefinition","useEffect","JSON","stringify","parse","_jsx","ModalWrapper","title","modalOpen","onClose","titleIcon","ChangeAccessPolicyIcon","children","_jsxs","noValidate","autoComplete","onSubmit","e","preventDefault","api","buckets","bucketSetPolicy","access","definition","then","catch","err","setModalErrorSnackMessage","errorToHandler","error","FormLayout","withBorders","containerPadding","Select","value","label","id","name","onChange","options","BucketAccess","PRIVATE","PUBLIC","CUSTOM","Box","className","style","marginTop","fontSize","fontStyle","Grid","item","xs","CodeMirrorWrapper","editorHeight","sx","modalStyleUtils","modalButtonBar","Button","type","variant","onClick","disabled","_ref$label","_ref$tooltip","tooltip","_ref$mode","mode","_ref$editorHeight","CodeEditor","helpTools","Fragment","TooltipWrapper","CopyToClipboard","text","icon","CopyIcon","color","deselectCurrent","require","clipboardToIE11Formatting","module","exports","debug","message","reselectPrevious","range","selection","mark","success","document","createRange","getSelection","createElement","textContent","ariaHidden","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","format","clipboardData","console","warn","window","clearData","setData","onCopy","body","appendChild","selectNodeContents","addRange","execCommand","Error","copyKey","test","navigator","userAgent","replace","prompt","removeRange","removeAllRanges","removeChild","_typeof","obj","Symbol","iterator","constructor","prototype","Object","defineProperty","_react","_interopRequireDefault","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","call","_defineProperties","props","descriptor","configurable","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","result","Super","_getPrototypeOf","NewTarget","this","self","TypeError","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","getPrototypeOf","_React$PureComponent","subClass","superClass","create","_inherits","Constructor","protoProps","staticProps","_super","_this","instance","_classCallCheck","_len","args","Array","_key","concat","event","_this$props","elem","Children","only","_this$props2","cloneElement","PureComponent","undefined","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/3690.6957ca61.chunk.js","mappings":"uQAuKA,UA5HwB,SAAHA,GAMS,IAL5BC,EAAID,EAAJC,KACAC,EAAUF,EAAVE,WACAC,EAAYH,EAAZG,aACAC,EAAgBJ,EAAhBI,iBACAC,EAAoBL,EAApBK,qBAEMC,GAAWC,EAAAA,EAAAA,MACjBC,GAAoCC,EAAAA,EAAAA,WAAkB,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAArDI,EAAUF,EAAA,GAAEG,EAAaH,EAAA,GAChCI,GAAwCL,EAAAA,EAAAA,UAAgC,IAAGM,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAApEE,EAAYD,EAAA,GAAEE,EAAeF,EAAA,GACpCG,GAAgDT,EAAAA,EAAAA,UAAiBU,EAAAA,GAAYC,GAAAT,EAAAA,EAAAA,GAAAO,EAAA,GAAtEG,EAAgBD,EAAA,GAAEE,EAAmBF,EAAA,GA+B5C,OATAG,EAAAA,EAAAA,YAAU,WACRN,EAAgBd,GAChBmB,EACElB,EACIoB,KAAKC,UAAUD,KAAKE,MAAMtB,GAAmB,KAAM,GACnDe,EAAAA,EAER,GAAG,CAACF,EAAiBd,EAAcmB,EAAqBlB,KAGtDuB,EAAAA,EAAAA,KAACC,EAAAA,EAAY,CACXC,MAAM,uBACNC,UAAW7B,EACX8B,QAAS,WACP1B,GACF,EACA2B,WAAWL,EAAAA,EAAAA,KAACM,EAAAA,IAAsB,IAAIC,UAEtCC,EAAAA,EAAAA,MAAA,QACEC,YAAU,EACVC,aAAa,MACbC,SAAU,SAACC,GACCA,EA1CVC,kBACF5B,GAAeI,IAGnBH,GAAc,GACd4B,EAAAA,EAAIC,QACDC,gBAAgBzC,EAAY,CAC3B0C,OAAQ5B,EACR6B,WAAYxB,IAEbyB,MAAK,WACJjC,GAAc,GACdR,GACF,IACC0C,OAAM,SAACC,GACNnC,GAAc,GACdP,GAAS2C,EAAAA,EAAAA,KAA0BC,EAAAA,EAAAA,GAAeF,EAAIG,QACxD,IA0BE,EAAEjB,SAAA,EAEFC,EAAAA,EAAAA,MAACiB,EAAAA,IAAU,CAACC,aAAa,EAAOC,kBAAkB,EAAMpB,SAAA,EACtDP,EAAAA,EAAAA,KAAC4B,EAAAA,IAAM,CACLC,MAAOxC,EACPyC,MAAM,gBACNC,GAAG,uBACHC,KAAK,uBACLC,SAAU,SAACJ,GACTvC,EAAgBuC,EAClB,EACAK,QAAS,CACP,CAAEL,MAAOM,EAAAA,GAAaC,QAASN,MAAO,WACtC,CAAED,MAAOM,EAAAA,GAAaE,OAAQP,MAAO,UACrC,CAAED,MAAOM,EAAAA,GAAaG,OAAQR,MAAO,aAGvB,WAAjBzC,IACCW,EAAAA,EAAAA,KAACuC,EAAAA,IAAG,CACFC,UAAW,QACXC,MAAO,CACLC,UAAW,OACXC,SAAU,OACVC,UAAW,UACXrC,SACH,8GAKe,WAAjBlB,IACCW,EAAAA,EAAAA,KAAC6C,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAGxC,UAChBP,EAAAA,EAAAA,KAACgD,EAAAA,EAAiB,CAChBlB,MAAK,eACLD,MAAOnC,EACPuC,SAAU,SAACJ,GACTlC,EAAoBkC,EACtB,EACAoB,aAAc,gBAKtBzC,EAAAA,EAAAA,MAAC+B,EAAAA,IAAG,CAACW,GAAIC,EAAAA,GAAgBC,eAAe7C,SAAA,EACtCP,EAAAA,EAAAA,KAACqD,EAAAA,IAAM,CACLtB,GAAI,SACJuB,KAAK,SACLC,QAAQ,UACRC,QAAS,WACP9E,GACF,EACA+E,SAAUxE,EACV6C,MAAO,YAET9B,EAAAA,EAAAA,KAACqD,EAAAA,IAAM,CACLtB,GAAI,MACJuB,KAAK,SACLC,QAAQ,aACRE,SACExE,GAAgC,WAAjBI,IAA8BK,EAE/CoC,MAAO,eAMnB,C,yGCpGA,IAnC0B,SAAHzD,GAOF,IANnBwD,EAAKxD,EAALwD,MAAK6B,EAAArF,EACLyD,MAAAA,OAAK,IAAA4B,EAAG,GAAEA,EAAAC,EAAAtF,EACVuF,QAAAA,OAAO,IAAAD,EAAG,GAAEA,EAAAE,EAAAxF,EACZyF,KAAAA,OAAI,IAAAD,EAAG,OAAMA,EACb5B,EAAQ5D,EAAR4D,SAAQ8B,EAAA1F,EACR4E,aAAAA,OAAY,IAAAc,EAAG,IAAGA,EAElB,OACE/D,EAAAA,EAAAA,KAACgE,EAAAA,IAAU,CACTnC,MAAOA,EACPI,SAAU,SAACJ,GAAK,OAAKI,EAASJ,EAAM,EACpCiC,KAAMA,EACNF,QAASA,EACTX,aAAcA,EACdnB,MAAOA,EACPmC,WACEjE,EAAAA,EAAAA,KAACkE,EAAAA,SAAQ,CAAA3D,UACPP,EAAAA,EAAAA,KAACmE,EAAAA,EAAc,CAACP,QAAS,oBAAoBrD,UAC3CP,EAAAA,EAAAA,KAACoE,IAAe,CAACC,KAAMxC,EAAMtB,UAC3BP,EAAAA,EAAAA,KAACqD,EAAAA,IAAM,CACLC,KAAM,SACNvB,GAAI,mBACJuC,MAAMtE,EAAAA,EAAAA,KAACuE,EAAAA,IAAQ,IACfC,MAAO,UACPjB,QAAS,mBAQzB,C,qEC/CO,IAAM/D,EACX,yE,qCCfF,IAAIiF,EAAkBC,EAAQ,OAE1BC,EAA4B,CAC9B,aAAc,OACd,YAAa,MACb,QAAW,QA2GbC,EAAOC,QAjGP,SAAcR,EAAMnC,GAClB,IAAI4C,EACFC,EACAC,EACAC,EACAC,EACAC,EACAC,GAAU,EACPlD,IACHA,EAAU,CAAC,GAEb4C,EAAQ5C,EAAQ4C,QAAS,EACzB,IAkDE,GAjDAE,EAAmBP,IAEnBQ,EAAQI,SAASC,cACjBJ,EAAYG,SAASE,gBAErBJ,EAAOE,SAASG,cAAc,SACzBC,YAAcpB,EAEnBc,EAAKO,WAAa,OAElBP,EAAK1C,MAAMkD,IAAM,QAEjBR,EAAK1C,MAAMmD,SAAW,QACtBT,EAAK1C,MAAMoD,IAAM,EACjBV,EAAK1C,MAAMqD,KAAO,mBAElBX,EAAK1C,MAAMsD,WAAa,MAExBZ,EAAK1C,MAAMuD,iBAAmB,OAC9Bb,EAAK1C,MAAMwD,cAAgB,OAC3Bd,EAAK1C,MAAMyD,aAAe,OAC1Bf,EAAK1C,MAAM0D,WAAa,OACxBhB,EAAKiB,iBAAiB,QAAQ,SAASxF,GAErC,GADAA,EAAEyF,kBACEnE,EAAQoE,OAEV,GADA1F,EAAEC,iBAC6B,qBAApBD,EAAE2F,cAA+B,CAC1CzB,GAAS0B,QAAQC,KAAK,iCACtB3B,GAAS0B,QAAQC,KAAK,4BACtBC,OAAOH,cAAcI,YACrB,IAAIL,EAAS3B,EAA0BzC,EAAQoE,SAAW3B,EAAmC,QAC7F+B,OAAOH,cAAcK,QAAQN,EAAQjC,EACvC,MACEzD,EAAE2F,cAAcI,YAChB/F,EAAE2F,cAAcK,QAAQ1E,EAAQoE,OAAQjC,GAGxCnC,EAAQ2E,SACVjG,EAAEC,iBACFqB,EAAQ2E,OAAOjG,EAAE2F,eAErB,IAEAlB,SAASyB,KAAKC,YAAY5B,GAE1BF,EAAM+B,mBAAmB7B,GACzBD,EAAU+B,SAAShC,IAEFI,SAAS6B,YAAY,QAEpC,MAAM,IAAIC,MAAM,iCAElB/B,GAAU,CACZ,CAAE,MAAO/D,GACPyD,GAAS0B,QAAQhF,MAAM,qCAAsCH,GAC7DyD,GAAS0B,QAAQC,KAAK,4BACtB,IACEC,OAAOH,cAAcK,QAAQ1E,EAAQoE,QAAU,OAAQjC,GACvDnC,EAAQ2E,QAAU3E,EAAQ2E,OAAOH,OAAOH,eACxCnB,GAAU,CACZ,CAAE,MAAO/D,GACPyD,GAAS0B,QAAQhF,MAAM,uCAAwCH,GAC/DyD,GAAS0B,QAAQhF,MAAM,0BACvBuD,EAjFN,SAAgBA,GACd,IAAIqC,GAAW,YAAYC,KAAKC,UAAUC,WAAa,SAAM,QAAU,KACvE,OAAOxC,EAAQyC,QAAQ,gBAAiBJ,EAC1C,CA8EgBd,CAAO,YAAapE,EAAUA,EAAQ6C,QAnFjC,oCAoFf2B,OAAOe,OAAO1C,EAASV,EACzB,CACF,CAAE,QACIa,IACkC,mBAAzBA,EAAUwC,YACnBxC,EAAUwC,YAAYzC,GAEtBC,EAAUyC,mBAIVxC,GACFE,SAASyB,KAAKc,YAAYzC,GAE5BH,GACF,CAEA,OAAOI,CACT,C,mCC9GA,SAASyC,EAAQC,GAAkC,OAAOD,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,CAAK,EAAGD,EAAQC,EAAM,CAE/UK,OAAOC,eAAevD,EAAS,aAAc,CAC3ChD,OAAO,IAETgD,EAAQT,qBAAkB,EAE1B,IAAIiE,EAASC,EAAuB5D,EAAQ,QAExC6D,EAAmBD,EAAuB5D,EAAQ,QAElD8D,EAAY,CAAC,OAAQ,SAAU,UAAW,YAE9C,SAASF,EAAuBR,GAAO,OAAOA,GAAOA,EAAIW,WAAaX,EAAM,CAAE,QAAWA,EAAO,CAEhG,SAASY,EAAQC,EAAQC,GAAkB,IAAIC,EAAOV,OAAOU,KAAKF,GAAS,GAAIR,OAAOW,sBAAuB,CAAE,IAAIC,EAAUZ,OAAOW,sBAAsBH,GAASC,IAAmBG,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOd,OAAOe,yBAAyBP,EAAQM,GAAKE,UAAY,KAAKN,EAAKO,KAAKC,MAAMR,EAAME,EAAU,CAAE,OAAOF,CAAM,CAEpV,SAASS,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAS,MAAQF,UAAUD,GAAKC,UAAUD,GAAK,CAAC,EAAGA,EAAI,EAAId,EAAQP,OAAOwB,IAAS,GAAIC,SAAQ,SAAUC,GAAOC,EAAgBP,EAAQM,EAAKF,EAAOE,GAAO,IAAK1B,OAAO4B,0BAA4B5B,OAAO6B,iBAAiBT,EAAQpB,OAAO4B,0BAA0BJ,IAAWjB,EAAQP,OAAOwB,IAASC,SAAQ,SAAUC,GAAO1B,OAAOC,eAAemB,EAAQM,EAAK1B,OAAOe,yBAAyBS,EAAQE,GAAO,GAAI,CAAE,OAAON,CAAQ,CAEzf,SAASU,EAAyBN,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,CAAC,EAAG,IAAkEE,EAAKL,EAAnED,EAEzF,SAAuCI,EAAQO,GAAY,GAAc,MAAVP,EAAgB,MAAO,CAAC,EAAG,IAA2DE,EAAKL,EAA5DD,EAAS,CAAC,EAAOY,EAAahC,OAAOU,KAAKc,GAAqB,IAAKH,EAAI,EAAGA,EAAIW,EAAWT,OAAQF,IAAOK,EAAMM,EAAWX,GAAQU,EAASE,QAAQP,IAAQ,IAAaN,EAAOM,GAAOF,EAAOE,IAAQ,OAAON,CAAQ,CAFhNc,CAA8BV,EAAQO,GAAuB,GAAI/B,OAAOW,sBAAuB,CAAE,IAAIwB,EAAmBnC,OAAOW,sBAAsBa,GAAS,IAAKH,EAAI,EAAGA,EAAIc,EAAiBZ,OAAQF,IAAOK,EAAMS,EAAiBd,GAAQU,EAASE,QAAQP,IAAQ,GAAkB1B,OAAOD,UAAUqC,qBAAqBC,KAAKb,EAAQE,KAAgBN,EAAOM,GAAOF,EAAOE,GAAQ,CAAE,OAAON,CAAQ,CAM3e,SAASkB,EAAkBlB,EAAQmB,GAAS,IAAK,IAAIlB,EAAI,EAAGA,EAAIkB,EAAMhB,OAAQF,IAAK,CAAE,IAAImB,EAAaD,EAAMlB,GAAImB,EAAWxB,WAAawB,EAAWxB,aAAc,EAAOwB,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAM1C,OAAOC,eAAemB,EAAQoB,EAAWd,IAAKc,EAAa,CAAE,CAM5T,SAASG,EAAgBC,EAAGC,GAA+G,OAA1GF,EAAkB3C,OAAO8C,gBAAkB,SAAyBF,EAAGC,GAAsB,OAAjBD,EAAEG,UAAYF,EAAUD,CAAG,EAAUD,EAAgBC,EAAGC,EAAI,CAEzK,SAASG,EAAaC,GAAW,IAAIC,EAMrC,WAAuC,GAAuB,qBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,oBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFC,QAAQxD,UAAUyD,QAAQnB,KAAKc,QAAQC,UAAUG,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO9K,GAAK,OAAO,CAAO,CAAE,CANvQgL,GAA6B,OAAO,WAAkC,IAAsCC,EAAlCC,EAAQC,EAAgBX,GAAkB,GAAIC,EAA2B,CAAE,IAAIW,EAAYD,EAAgBE,MAAMhE,YAAa4D,EAASP,QAAQC,UAAUO,EAAOrC,UAAWuC,EAAY,MAASH,EAASC,EAAMzC,MAAM4C,KAAMxC,WAAc,OAEpX,SAAoCyC,EAAM1B,GAAQ,GAAIA,IAA2B,WAAlB3C,EAAQ2C,IAAsC,oBAATA,GAAwB,OAAOA,EAAa,QAAa,IAATA,EAAmB,MAAM,IAAI2B,UAAU,4DAA+D,OAAOC,EAAuBF,EAAO,CAF4FG,CAA2BJ,KAAMJ,EAAS,CAAG,CAIxa,SAASO,EAAuBF,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAII,eAAe,6DAAgE,OAAOJ,CAAM,CAIrK,SAASH,EAAgBhB,GAAwJ,OAAnJgB,EAAkB5D,OAAO8C,eAAiB9C,OAAOoE,eAAiB,SAAyBxB,GAAK,OAAOA,EAAEG,WAAa/C,OAAOoE,eAAexB,EAAI,EAAUgB,EAAgBhB,EAAI,CAE5M,SAASjB,EAAgBhC,EAAK+B,EAAKhI,GAAiK,OAApJgI,KAAO/B,EAAOK,OAAOC,eAAeN,EAAK+B,EAAK,CAAEhI,MAAOA,EAAOsH,YAAY,EAAMyB,cAAc,EAAMC,UAAU,IAAkB/C,EAAI+B,GAAOhI,EAAgBiG,CAAK,CAEhN,IAAI1D,EAA+B,SAAUoI,IAhB7C,SAAmBC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIP,UAAU,sDAAyDM,EAASvE,UAAYC,OAAOwE,OAAOD,GAAcA,EAAWxE,UAAW,CAAED,YAAa,CAAEpG,MAAO4K,EAAU5B,UAAU,EAAMD,cAAc,KAAWzC,OAAOC,eAAeqE,EAAU,YAAa,CAAE5B,UAAU,IAAc6B,GAAY5B,EAAgB2B,EAAUC,EAAa,CAiBjcE,CAAUxI,EAAiBoI,GAE3B,IArBoBK,EAAaC,EAAYC,EAqBzCC,EAAS7B,EAAa/G,GAE1B,SAASA,IACP,IAAI6I,GA5BR,SAAyBC,EAAUL,GAAe,KAAMK,aAAoBL,GAAgB,MAAM,IAAIV,UAAU,oCAAwC,CA8BpJgB,CAAgBlB,KAAM7H,GAEtB,IAAK,IAAIgJ,EAAO3D,UAAUC,OAAQ2D,EAAO,IAAIC,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC/EF,EAAKE,GAAQ9D,UAAU8D,GA0BzB,OArBAzD,EAAgBsC,EAFhBa,EAAQD,EAAOxC,KAAKnB,MAAM2D,EAAQ,CAACf,MAAMuB,OAAOH,KAED,WAAW,SAAUI,GAClE,IAAIC,EAAcT,EAAMvC,MACpBrG,EAAOqJ,EAAYrJ,KACnBwC,EAAS6G,EAAY7G,OACrBtG,EAAWmN,EAAYnN,SACvB2B,EAAUwL,EAAYxL,QAEtByL,EAAOtF,EAAgB,QAAEuF,SAASC,KAAKtN,GAEvCsL,GAAS,EAAItD,EAA0B,SAAGlE,EAAMnC,GAEhD2E,GACFA,EAAOxC,EAAMwH,GAIX8B,GAAQA,EAAKjD,OAAuC,oBAAvBiD,EAAKjD,MAAMlH,SAC1CmK,EAAKjD,MAAMlH,QAAQiK,EAEvB,IAEOR,CACT,CAoBA,OA5EoBJ,EA0DPzI,GA1DoB0I,EA0DH,CAAC,CAC7BjD,IAAK,SACLhI,MAAO,WACL,IAAIiM,EAAe7B,KAAKvB,MAIpBnK,GAHQuN,EAAazJ,KACXyJ,EAAajH,OACZiH,EAAa5L,QACb4L,EAAavN,UACxBmK,EAAQT,EAAyB6D,EAActF,GAE/CmF,EAAOtF,EAAgB,QAAEuF,SAASC,KAAKtN,GAE3C,OAAoB8H,EAAgB,QAAE0F,aAAaJ,EAAMrE,EAAcA,EAAc,CAAC,EAAGoB,GAAQ,CAAC,EAAG,CACnGlH,QAASyI,KAAKzI,UAElB,MAzE0EiH,EAAkBoC,EAAY3E,UAAW4E,GAAiBC,GAAatC,EAAkBoC,EAAaE,GAAc5E,OAAOC,eAAeyE,EAAa,YAAa,CAAEhC,UAAU,IA4ErPzG,CACT,CA3DmC,CA2DjCiE,EAAgB,QAAE2F,eAEpBnJ,EAAQT,gBAAkBA,EAE1B0F,EAAgB1F,EAAiB,eAAgB,CAC/CyC,YAAQoH,EACR/L,aAAS+L,G,qCC9GX,IACI7J,EADWM,EAAQ,KACQN,gBAE/BA,EAAgBA,gBAAkBA,EAClCQ,EAAOC,QAAUT,C,oBCLjBQ,EAAOC,QAAU,WACf,IAAIK,EAAYG,SAASE,eACzB,IAAKL,EAAUgJ,WACb,OAAO,WAAa,EAKtB,IAHA,IAAIC,EAAS9I,SAAS+I,cAElBC,EAAS,GACJ7E,EAAI,EAAGA,EAAItE,EAAUgJ,WAAY1E,IACxC6E,EAAOjF,KAAKlE,EAAUoJ,WAAW9E,IAGnC,OAAQ2E,EAAOI,QAAQC,eACrB,IAAK,QACL,IAAK,WACHL,EAAOM,OACP,MAEF,QACEN,EAAS,KAKb,OADAjJ,EAAUyC,kBACH,WACc,UAAnBzC,EAAU5B,MACV4B,EAAUyC,kBAELzC,EAAUgJ,YACbG,EAAOzE,SAAQ,SAAS3E,GACtBC,EAAU+B,SAAShC,EACrB,IAGFkJ,GACAA,EAAOO,OACT,CACF,C","sources":["screens/Console/Buckets/BucketDetails/SetAccessPolicy.tsx","screens/Console/Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper.tsx","screens/Console/Policies/utils.ts","../node_modules/copy-to-clipboard/index.js","../node_modules/react-copy-to-clipboard/lib/Component.js","../node_modules/react-copy-to-clipboard/lib/index.js","../node_modules/toggle-selection/index.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, { useEffect, useState } from \"react\";\nimport { api } from \"api\";\nimport { BucketAccess } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport {\n Box,\n Button,\n ChangeAccessPolicyIcon,\n FormLayout,\n Grid,\n Select,\n} from \"mds\";\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { emptyPolicy } from \"../../Policies/utils\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport CodeMirrorWrapper from \"../../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\n\ninterface ISetAccessPolicyProps {\n open: boolean;\n bucketName: string;\n actualPolicy: BucketAccess | string;\n actualDefinition: string;\n closeModalAndRefresh: () => void;\n}\n\nconst SetAccessPolicy = ({\n open,\n bucketName,\n actualPolicy,\n actualDefinition,\n closeModalAndRefresh,\n}: ISetAccessPolicyProps) => {\n const dispatch = useAppDispatch();\n const [addLoading, setAddLoading] = useState(false);\n const [accessPolicy, setAccessPolicy] = useState(\"\");\n const [policyDefinition, setPolicyDefinition] = useState(emptyPolicy);\n const addRecord = (event: React.FormEvent) => {\n event.preventDefault();\n if (addLoading || !accessPolicy) {\n return;\n }\n setAddLoading(true);\n api.buckets\n .bucketSetPolicy(bucketName, {\n access: accessPolicy as BucketAccess,\n definition: policyDefinition,\n })\n .then(() => {\n setAddLoading(false);\n closeModalAndRefresh();\n })\n .catch((err) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n useEffect(() => {\n setAccessPolicy(actualPolicy);\n setPolicyDefinition(\n actualDefinition\n ? JSON.stringify(JSON.parse(actualDefinition), null, 4)\n : emptyPolicy,\n );\n }, [setAccessPolicy, actualPolicy, setPolicyDefinition, actualDefinition]);\n\n return (\n {\n closeModalAndRefresh();\n }}\n titleIcon={}\n >\n ) => {\n addRecord(e);\n }}\n >\n \n {\n setAccessPolicy(value as BucketAccess);\n }}\n options={[\n { value: BucketAccess.PRIVATE, label: \"Private\" },\n { value: BucketAccess.PUBLIC, label: \"Public\" },\n { value: BucketAccess.CUSTOM, label: \"Custom\" },\n ]}\n />\n {accessPolicy === \"PUBLIC\" && (\n \n * Warning: With Public access anyone will be able to upload,\n download and delete files from this Bucket *\n \n )}\n {accessPolicy === \"CUSTOM\" && (\n \n {\n setPolicyDefinition(value);\n }}\n editorHeight={\"300px\"}\n />\n \n )}\n \n \n {\n closeModalAndRefresh();\n }}\n disabled={addLoading}\n label={\"Cancel\"}\n />\n \n \n \n \n );\n};\n\nexport default SetAccessPolicy;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Button, CodeEditor, CopyIcon } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n onChange: (value: string) => any;\n editorHeight?: string | number;\n}\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n onChange,\n editorHeight = 250,\n}: ICodeWrapper) => {\n return (\n onChange(value)}\n mode={mode}\n tooltip={tooltip}\n editorHeight={editorHeight}\n label={label}\n helpTools={\n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n }\n />\n );\n};\n\nexport default CodeMirrorWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const emptyPolicy =\n \"{\\n\" +\n ' \"Version\": \"2012-10-17\",\\n' +\n ' \"Statement\": [\\n' +\n \" \\n\" +\n \" ]\\n\" +\n \"}\";\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n"],"names":["_ref","open","bucketName","actualPolicy","actualDefinition","closeModalAndRefresh","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","addLoading","setAddLoading","_useState3","_useState4","accessPolicy","setAccessPolicy","_useState5","emptyPolicy","_useState6","policyDefinition","setPolicyDefinition","useEffect","JSON","stringify","parse","_jsx","ModalWrapper","title","modalOpen","onClose","titleIcon","ChangeAccessPolicyIcon","children","_jsxs","noValidate","autoComplete","onSubmit","e","preventDefault","api","buckets","bucketSetPolicy","access","definition","then","catch","err","setModalErrorSnackMessage","errorToHandler","error","FormLayout","withBorders","containerPadding","Select","value","label","id","name","onChange","options","BucketAccess","PRIVATE","PUBLIC","CUSTOM","Box","className","style","marginTop","fontSize","fontStyle","Grid","item","xs","CodeMirrorWrapper","editorHeight","sx","modalStyleUtils","modalButtonBar","Button","type","variant","onClick","disabled","_ref$label","_ref$tooltip","tooltip","_ref$mode","mode","_ref$editorHeight","CodeEditor","helpTools","Fragment","TooltipWrapper","CopyToClipboard","text","icon","CopyIcon","color","deselectCurrent","require","clipboardToIE11Formatting","module","exports","debug","message","reselectPrevious","range","selection","mark","success","document","createRange","getSelection","createElement","textContent","ariaHidden","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","format","clipboardData","console","warn","window","clearData","setData","onCopy","body","appendChild","selectNodeContents","addRange","execCommand","Error","copyKey","test","navigator","userAgent","replace","prompt","removeRange","removeAllRanges","removeChild","_typeof","obj","Symbol","iterator","constructor","prototype","Object","defineProperty","_react","_interopRequireDefault","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","call","_defineProperties","props","descriptor","configurable","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","result","Super","_getPrototypeOf","NewTarget","this","self","TypeError","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","getPrototypeOf","_React$PureComponent","subClass","superClass","create","_inherits","Constructor","protoProps","staticProps","_super","_this","instance","_classCallCheck","_len","args","Array","_key","concat","event","_this$props","elem","Children","only","_this$props2","cloneElement","PureComponent","undefined","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/3875.7fa4f881.chunk.js b/portal-ui/build/static/js/3875.1266ad37.chunk.js similarity index 98% rename from portal-ui/build/static/js/3875.7fa4f881.chunk.js rename to portal-ui/build/static/js/3875.1266ad37.chunk.js index 0f066d29ea..d6dc260e88 100644 --- a/portal-ui/build/static/js/3875.7fa4f881.chunk.js +++ b/portal-ui/build/static/js/3875.1266ad37.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[3875],{93875:function(e,n,i){i.r(n),i.d(n,{default:function(){return k}});var t=i(93433),r=i(4942),s=i(1413),c=i(29439),a=i(72791),o=i(57689),d=i(29945),l=i(9505),u=i(56087),x=i(87995),p=i(81551),f=i(78687),h=i(46078),g=i(27454),j=i(80184),v=function(e){var n=e.rowData,i=e.rowId,t=e.onFieldChange,r=e.onAddClick,s=e.onRemoveClick,c=e.canAdd,o=void 0===c||c,l=e.canRemove,u=void 0===l||l,x=e.showRowActions,p=void 0===x||x,f=e.disabledFields,h=void 0===f?[]:f,v=e.fieldErrors,m=void 0===v?{}:v,y=n.endpoint,K=void 0===y?"":y,C=n.accessKey,w=void 0===C?"":C,b=n.secretKey,k=void 0===b?"":b,Z=n.name,S=void 0===Z?"":Z;return(0,j.jsxs)(a.Fragment,{children:[(0,j.jsx)(d.xuv,{children:(0,j.jsx)(d.Wzg,{id:"add-rep-peer-site-".concat(i),name:"add-rep-peer-site-".concat(i),placeholder:"site-name",label:"",readOnly:h.includes("name"),value:S,onChange:function(e){t(e,"name",i)},"data-test-id":"add-site-rep-peer-site-".concat(i)})}),(0,j.jsx)(d.xuv,{children:(0,j.jsx)(d.Wzg,{id:"add-rep-peer-site-ep-".concat(i),name:"add-rep-peer-site-ep-".concat(i),placeholder:"https://dr.minio-storage:900".concat(i),label:"",readOnly:h.includes("endpoint"),error:m.endpoint,value:K,onChange:function(e){t(e,"endpoint",i)},"data-test-id":"add-site-rep-peer-ep-".concat(i)})}),(0,j.jsx)(d.xuv,{children:(0,j.jsx)(d.Wzg,{id:"add-rep-peer-site-ac-".concat(i),name:"add-rep-peer-site-ac-".concat(i),label:"",required:!0,disabled:h.includes("accessKey"),value:w,error:m.accessKey,onChange:function(e){t(e,"accessKey",i)},"data-test-id":"add-rep-peer-site-ac-".concat(i)})}),(0,j.jsx)(d.xuv,{children:(0,j.jsx)(d.Wzg,{id:"add-rep-peer-site-sk-".concat(i),name:"add-rep-peer-site-sk-".concat(i),label:"",required:!0,type:"password",value:k,error:m.secretKey,disabled:h.includes("secretKey"),onChange:function(e){t(e,"secretKey",i)},"data-test-id":"add-rep-peer-site-sk-".concat(i)})}),(0,j.jsx)(d.rjZ,{item:!0,xs:12,sx:{alignItems:"center",display:"flex"},children:(0,j.jsx)(d.xuv,{sx:{display:"flex",alignItems:"center",justifyContent:"center",alignSelf:"baseline",marginTop:"4px","& button":{borderColor:"#696969",color:"#696969",borderRadius:"50%"}},children:p?(0,j.jsxs)(a.Fragment,{children:[(0,j.jsx)(g.Z,{tooltip:"Add a Row",children:(0,j.jsx)(d.zxk,{id:"add-row-".concat(i),variant:"regular",disabled:!o,icon:(0,j.jsx)(d.dtP,{}),onClick:function(e){e.preventDefault(),null===r||void 0===r||r(i)},style:{width:25,height:25,padding:0}})}),(0,j.jsx)(g.Z,{tooltip:"Remove Row",children:(0,j.jsx)(d.zxk,{id:"remove-row-".concat(i),variant:"regular",disabled:!u,icon:(0,j.jsx)(d.HFL,{}),onClick:function(e){e.preventDefault(),null===s||void 0===s||s(i)},style:{width:25,height:25,padding:0,marginLeft:8}})})]}):null})})]},"".concat(i))},m=i(47974),y=i(99670),K=function(e){var n=!1;try{new URL(e),n=!0}catch(i){n=!1}return n?"":"Invalid Endpoint"},C=function(e){return""===(null===e||void 0===e?void 0:e.trim())},w=function(){return(0,j.jsxs)(a.Fragment,{children:[(0,j.jsx)(d.xuv,{children:(0,j.jsx)(d.AZs,{children:"Site Name"})}),(0,j.jsx)(d.xuv,{children:(0,j.jsxs)(d.AZs,{children:["Endpoint ","*"]})}),(0,j.jsx)(d.xuv,{children:(0,j.jsxs)(d.AZs,{children:["Access Key ","*"]})}),(0,j.jsx)(d.xuv,{children:(0,j.jsxs)(d.AZs,{children:["Secret Key ","*"]})}),(0,j.jsx)(d.xuv,{children:" "})]})},b=function(e){var n=e.title;return(0,j.jsx)(d.rjZ,{item:!0,xs:12,children:(0,j.jsx)(d.xuv,{sx:{marginBottom:"15px",fontSize:"14px",fontWeight:600},children:n})})},k=function(){var e=(0,p.TL)(),n=(0,o.s0)(),i=(0,f.v9)(h.gK).serverEndPoint,g=void 0===i?"":i,k=(0,a.useState)([{endpoint:g,name:"",accessKey:"",secretKey:""}]),Z=(0,c.Z)(k,2),S=Z[0],T=Z[1],A=(0,a.useState)([]),I=(0,c.Z)(A,2),R=I[0],E=I[1],B=function(){E([{endpoint:"",name:"",accessKey:"",secretKey:""}])},z=(0,l.Z)((function(e){var n=e.sites,i=e.name,t=n.findIndex((function(e){return e.name===i}));if(-1!==t){var r=n[t];r=(0,s.Z)((0,s.Z)({},r),{},{isCurrent:!0,isSaved:!0}),T([r]),n.splice(t,1)}n.sort((function(e,n){return e.name===i?-1:n.name===i?1:0}));var c=n.map((function(e){return(0,s.Z)((0,s.Z)({},e),{},{accessKey:"",secretKey:"",isSaved:!0})}));c.length?E(c):B()}),(function(e){B()})),F=(0,c.Z)(z,2),L=F[0],W=F[1],q=function(){W("GET","api/v1/admin/site-replication")};(0,a.useEffect)((function(){q()}),[]),(0,a.useEffect)((function(){e((0,x.Sc)("add-replication-sites"))}),[]);var O=R.reduce((function(e,n,i){var t=R[i].endpoint,r=K(t);return""===r&&""!==t&&e.push(r),e}),[]),P=R.map((function(e){return!C(e.accessKey)&&!C(e.secretKey)})).filter(Boolean),D=S[0],N=D.accessKey,_=D.secretKey,H=!C(N)&&!C(_),M=O.length===R.length,X=P.length===R.length,Y=H&&M&&X,G=(0,l.Z)((function(i){i.success?(e((0,x.y1)(i.status)),Q(),q(),n(u.gA.SITE_REPLICATION)):e((0,x.Ih)({errorMessage:"Error",detailedError:i.status}))}),(function(n){e((0,x.Ih)(n))})),U=(0,c.Z)(G,2),V=U[0],J=U[1],Q=function(){B(),T((function(e){return e.map((function(e,n){return(0,s.Z)((0,s.Z)({},e),{},{accessKey:"",secretKey:"",name:""})}))}))};return(0,j.jsxs)(a.Fragment,{children:[(0,j.jsx)(m.Z,{label:(0,j.jsx)(d.hbI,{label:"Add Replication Site",onClick:function(){return n(u.gA.SITE_REPLICATION)}}),actions:(0,j.jsx)(y.Z,{})}),(0,j.jsx)(d.Xgh,{children:(0,j.jsxs)(d.xuv,{sx:{display:"grid",padding:"25px",gap:"25px",gridTemplateColumns:"1fr",border:"1px solid #eaeaea"},children:[(0,j.jsxs)(d.xuv,{children:[(0,j.jsx)(d.NZf,{separator:!0,icon:(0,j.jsx)(d.aWt,{}),children:"Add Sites for Replication"}),L||V?(0,j.jsx)(d.kod,{}):null,(0,j.jsx)(d.xuv,{sx:{fontSize:"14px",fontStyle:"italic",marginTop:"10px",marginBottom:"10px"},children:"Note: AccessKey and SecretKey values for every site is required while adding or editing peer sites"}),(0,j.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){return e.preventDefault(),function(){var e=null===S||void 0===S?void 0:S.map((function(e,n){return{accessKey:e.accessKey,secretKey:e.secretKey,name:e.name,endpoint:e.endpoint.trim()}})),n=R.reduce((function(e,n,i){return n.endpoint&&e.push({accessKey:n.accessKey,secretKey:n.secretKey,name:n.name||"dr-site-".concat(i),endpoint:n.endpoint.trim()}),e}),[]),i=e.concat(n);J("POST","api/v1/admin/site-replication",i)}()},children:[(0,j.jsxs)(d.xuv,{sx:{marginTop:"15px"},children:[(0,j.jsx)(b,{title:"This Site"}),(0,j.jsxs)(d.xuv,{withBorders:!0,sx:{display:"grid",gridTemplateColumns:".8fr 1.2fr .8fr .8fr .2fr",padding:"15px",gap:"10px",maxHeight:"430px",overflowY:"auto"},children:[(0,j.jsx)(w,{}),S.map((function(e,n){var i=C(e.accessKey)?"AccessKey is required":"",t=C(e.secretKey)?"SecretKey is required":"";return(0,j.jsx)(v,{rowData:e,rowId:n,fieldErrors:{accessKey:i,secretKey:t},onFieldChange:function(e,n,i){var t=e.target.value;""!==n&&T((function(e){return e.map((function(e,c){return c===i?(0,s.Z)((0,s.Z)({},e),{},(0,r.Z)({},n,t)):e}))}))},showRowActions:!1},"current-".concat(n))}))]})]}),(0,j.jsxs)(d.xuv,{sx:{marginTop:"25px"},children:[(0,j.jsx)(b,{title:"Peer Sites"}),(0,j.jsxs)(d.xuv,{withBorders:!0,sx:{display:"grid",gridTemplateColumns:".8fr 1.2fr .8fr .8fr .2fr",padding:"15px",gap:"10px",maxHeight:"430px",overflowY:"auto"},children:[(0,j.jsx)(w,{}),R.map((function(e,n){var i=K(e.endpoint),c=C(e.accessKey)?"AccessKey is required":"",a=C(e.secretKey)?"SecretKey is required":"";return(0,j.jsx)(v,{rowData:e,rowId:n,fieldErrors:{endpoint:i,accessKey:c,secretKey:a},onFieldChange:function(e,n,i){var t=e.target.value;E((function(e){return e.map((function(e,c){return c===i?(0,s.Z)((0,s.Z)({},e),{},(0,r.Z)({},n,t)):e}))}))},canAdd:!0,canRemove:n>0&&!e.isSaved,onAddClick:function(){var e=(0,t.Z)(R);e.splice(n+1,0,{name:"",endpoint:"",accessKey:"",secretKey:""}),E(e)},onRemoveClick:function(e){E(R.filter((function(n,i){return i!==e})))}},"exiting-".concat(n))}))]})]}),(0,j.jsx)(d.rjZ,{item:!0,xs:12,children:(0,j.jsxs)(d.xuv,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end",marginTop:"20px",gap:"15px"},children:[(0,j.jsx)(d.zxk,{id:"clear",type:"button",variant:"regular",disabled:V,onClick:Q,label:"Clear"}),(0,j.jsx)(d.zxk,{id:"save",type:"submit",variant:"callAction",disabled:V||!Y,label:"Save"})]})})]})]}),(0,j.jsx)(d.KfX,{title:"",iconComponent:null,help:(0,j.jsxs)(a.Fragment,{children:[(0,j.jsxs)(d.xuv,{sx:{marginTop:"-25px",fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center",justifyContent:"flex-start",padding:"2px"},children:[(0,j.jsx)(d.xuv,{sx:{backgroundColor:"#07193E",height:"15px",width:"15px",display:"flex",alignItems:"center",justifyContent:"center",borderRadius:"50%",marginRight:"18px",padding:"3px",paddingLeft:"2px","& .min-icon":{height:"11px",width:"11px",fill:"#ffffff"}},children:(0,j.jsx)(d.aWt,{})}),"About Site Replication"]}),(0,j.jsxs)(d.xuv,{sx:{display:"flex",flexFlow:"column",fontSize:"14px",flex:"2","& li":{fontSize:"14px",display:"flex",marginTop:"15px",marginBottom:"15px",width:"100%","&.step-text":{fontWeight:400}}},children:[(0,j.jsx)(d.xuv,{children:"The following changes are replicated to all other sites"}),(0,j.jsxs)("ul",{children:[(0,j.jsx)("li",{children:"Creation and deletion of buckets and objects"}),(0,j.jsx)("li",{children:"Creation and deletion of all IAM users, groups, policies and their mappings to users or groups"}),(0,j.jsx)("li",{children:"Creation of STS credentials"}),(0,j.jsx)("li",{children:"Creation and deletion of service accounts (except those owned by the root user)"}),(0,j.jsx)("li",{children:(0,j.jsxs)(d.xuv,{style:{display:"flex",flexFlow:"column",justifyContent:"flex-start"},children:[(0,j.jsx)("div",{style:{paddingTop:"1px"},children:"Changes to Bucket features such as"}),(0,j.jsxs)("ul",{children:[(0,j.jsx)("li",{children:"Bucket Policies"}),(0,j.jsx)("li",{children:"Bucket Tags"}),(0,j.jsx)("li",{children:"Bucket Object-Lock configurations"}),(0,j.jsx)("li",{children:"Bucket Encryption configuration"})]})]})}),(0,j.jsx)("li",{children:(0,j.jsxs)(d.xuv,{style:{display:"flex",flexFlow:"column",justifyContent:"flex-start"},children:[(0,j.jsx)("div",{style:{paddingTop:"1px"},children:"The following Bucket features will NOT be replicated"}),(0,j.jsxs)("ul",{children:[(0,j.jsx)("li",{children:"Bucket notification configuration"}),(0,j.jsx)("li",{children:"Bucket lifecycle (ILM) configuration"})]})]})})]})]})]})})]})})]})}}}]); -//# sourceMappingURL=3875.7fa4f881.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[3875],{93875:function(e,n,i){i.r(n),i.d(n,{default:function(){return k}});var t=i(93433),r=i(4942),s=i(1413),c=i(29439),a=i(72791),o=i(57689),d=i(29945),l=i(9505),u=i(56087),x=i(87995),p=i(44690),f=i(78687),h=i(46078),g=i(27454),j=i(80184),v=function(e){var n=e.rowData,i=e.rowId,t=e.onFieldChange,r=e.onAddClick,s=e.onRemoveClick,c=e.canAdd,o=void 0===c||c,l=e.canRemove,u=void 0===l||l,x=e.showRowActions,p=void 0===x||x,f=e.disabledFields,h=void 0===f?[]:f,v=e.fieldErrors,m=void 0===v?{}:v,y=n.endpoint,K=void 0===y?"":y,C=n.accessKey,w=void 0===C?"":C,b=n.secretKey,k=void 0===b?"":b,Z=n.name,S=void 0===Z?"":Z;return(0,j.jsxs)(a.Fragment,{children:[(0,j.jsx)(d.xuv,{children:(0,j.jsx)(d.Wzg,{id:"add-rep-peer-site-".concat(i),name:"add-rep-peer-site-".concat(i),placeholder:"site-name",label:"",readOnly:h.includes("name"),value:S,onChange:function(e){t(e,"name",i)},"data-test-id":"add-site-rep-peer-site-".concat(i)})}),(0,j.jsx)(d.xuv,{children:(0,j.jsx)(d.Wzg,{id:"add-rep-peer-site-ep-".concat(i),name:"add-rep-peer-site-ep-".concat(i),placeholder:"https://dr.minio-storage:900".concat(i),label:"",readOnly:h.includes("endpoint"),error:m.endpoint,value:K,onChange:function(e){t(e,"endpoint",i)},"data-test-id":"add-site-rep-peer-ep-".concat(i)})}),(0,j.jsx)(d.xuv,{children:(0,j.jsx)(d.Wzg,{id:"add-rep-peer-site-ac-".concat(i),name:"add-rep-peer-site-ac-".concat(i),label:"",required:!0,disabled:h.includes("accessKey"),value:w,error:m.accessKey,onChange:function(e){t(e,"accessKey",i)},"data-test-id":"add-rep-peer-site-ac-".concat(i)})}),(0,j.jsx)(d.xuv,{children:(0,j.jsx)(d.Wzg,{id:"add-rep-peer-site-sk-".concat(i),name:"add-rep-peer-site-sk-".concat(i),label:"",required:!0,type:"password",value:k,error:m.secretKey,disabled:h.includes("secretKey"),onChange:function(e){t(e,"secretKey",i)},"data-test-id":"add-rep-peer-site-sk-".concat(i)})}),(0,j.jsx)(d.rjZ,{item:!0,xs:12,sx:{alignItems:"center",display:"flex"},children:(0,j.jsx)(d.xuv,{sx:{display:"flex",alignItems:"center",justifyContent:"center",alignSelf:"baseline",marginTop:"4px","& button":{borderColor:"#696969",color:"#696969",borderRadius:"50%"}},children:p?(0,j.jsxs)(a.Fragment,{children:[(0,j.jsx)(g.Z,{tooltip:"Add a Row",children:(0,j.jsx)(d.zxk,{id:"add-row-".concat(i),variant:"regular",disabled:!o,icon:(0,j.jsx)(d.dtP,{}),onClick:function(e){e.preventDefault(),null===r||void 0===r||r(i)},style:{width:25,height:25,padding:0}})}),(0,j.jsx)(g.Z,{tooltip:"Remove Row",children:(0,j.jsx)(d.zxk,{id:"remove-row-".concat(i),variant:"regular",disabled:!u,icon:(0,j.jsx)(d.HFL,{}),onClick:function(e){e.preventDefault(),null===s||void 0===s||s(i)},style:{width:25,height:25,padding:0,marginLeft:8}})})]}):null})})]},"".concat(i))},m=i(47974),y=i(99670),K=function(e){var n=!1;try{new URL(e),n=!0}catch(i){n=!1}return n?"":"Invalid Endpoint"},C=function(e){return""===(null===e||void 0===e?void 0:e.trim())},w=function(){return(0,j.jsxs)(a.Fragment,{children:[(0,j.jsx)(d.xuv,{children:(0,j.jsx)(d.AZs,{children:"Site Name"})}),(0,j.jsx)(d.xuv,{children:(0,j.jsxs)(d.AZs,{children:["Endpoint ","*"]})}),(0,j.jsx)(d.xuv,{children:(0,j.jsxs)(d.AZs,{children:["Access Key ","*"]})}),(0,j.jsx)(d.xuv,{children:(0,j.jsxs)(d.AZs,{children:["Secret Key ","*"]})}),(0,j.jsx)(d.xuv,{children:" "})]})},b=function(e){var n=e.title;return(0,j.jsx)(d.rjZ,{item:!0,xs:12,children:(0,j.jsx)(d.xuv,{sx:{marginBottom:"15px",fontSize:"14px",fontWeight:600},children:n})})},k=function(){var e=(0,p.TL)(),n=(0,o.s0)(),i=(0,f.v9)(h.gK).serverEndPoint,g=void 0===i?"":i,k=(0,a.useState)([{endpoint:g,name:"",accessKey:"",secretKey:""}]),Z=(0,c.Z)(k,2),S=Z[0],T=Z[1],A=(0,a.useState)([]),I=(0,c.Z)(A,2),R=I[0],E=I[1],B=function(){E([{endpoint:"",name:"",accessKey:"",secretKey:""}])},z=(0,l.Z)((function(e){var n=e.sites,i=e.name,t=n.findIndex((function(e){return e.name===i}));if(-1!==t){var r=n[t];r=(0,s.Z)((0,s.Z)({},r),{},{isCurrent:!0,isSaved:!0}),T([r]),n.splice(t,1)}n.sort((function(e,n){return e.name===i?-1:n.name===i?1:0}));var c=n.map((function(e){return(0,s.Z)((0,s.Z)({},e),{},{accessKey:"",secretKey:"",isSaved:!0})}));c.length?E(c):B()}),(function(e){B()})),F=(0,c.Z)(z,2),L=F[0],W=F[1],q=function(){W("GET","api/v1/admin/site-replication")};(0,a.useEffect)((function(){q()}),[]),(0,a.useEffect)((function(){e((0,x.Sc)("add-replication-sites"))}),[]);var O=R.reduce((function(e,n,i){var t=R[i].endpoint,r=K(t);return""===r&&""!==t&&e.push(r),e}),[]),P=R.map((function(e){return!C(e.accessKey)&&!C(e.secretKey)})).filter(Boolean),D=S[0],N=D.accessKey,_=D.secretKey,H=!C(N)&&!C(_),M=O.length===R.length,X=P.length===R.length,Y=H&&M&&X,G=(0,l.Z)((function(i){i.success?(e((0,x.y1)(i.status)),Q(),q(),n(u.gA.SITE_REPLICATION)):e((0,x.Ih)({errorMessage:"Error",detailedError:i.status}))}),(function(n){e((0,x.Ih)(n))})),U=(0,c.Z)(G,2),V=U[0],J=U[1],Q=function(){B(),T((function(e){return e.map((function(e,n){return(0,s.Z)((0,s.Z)({},e),{},{accessKey:"",secretKey:"",name:""})}))}))};return(0,j.jsxs)(a.Fragment,{children:[(0,j.jsx)(m.Z,{label:(0,j.jsx)(d.hbI,{label:"Add Replication Site",onClick:function(){return n(u.gA.SITE_REPLICATION)}}),actions:(0,j.jsx)(y.Z,{})}),(0,j.jsx)(d.Xgh,{children:(0,j.jsxs)(d.xuv,{sx:{display:"grid",padding:"25px",gap:"25px",gridTemplateColumns:"1fr",border:"1px solid #eaeaea"},children:[(0,j.jsxs)(d.xuv,{children:[(0,j.jsx)(d.NZf,{separator:!0,icon:(0,j.jsx)(d.aWt,{}),children:"Add Sites for Replication"}),L||V?(0,j.jsx)(d.kod,{}):null,(0,j.jsx)(d.xuv,{sx:{fontSize:"14px",fontStyle:"italic",marginTop:"10px",marginBottom:"10px"},children:"Note: AccessKey and SecretKey values for every site is required while adding or editing peer sites"}),(0,j.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){return e.preventDefault(),function(){var e=null===S||void 0===S?void 0:S.map((function(e,n){return{accessKey:e.accessKey,secretKey:e.secretKey,name:e.name,endpoint:e.endpoint.trim()}})),n=R.reduce((function(e,n,i){return n.endpoint&&e.push({accessKey:n.accessKey,secretKey:n.secretKey,name:n.name||"dr-site-".concat(i),endpoint:n.endpoint.trim()}),e}),[]),i=e.concat(n);J("POST","api/v1/admin/site-replication",i)}()},children:[(0,j.jsxs)(d.xuv,{sx:{marginTop:"15px"},children:[(0,j.jsx)(b,{title:"This Site"}),(0,j.jsxs)(d.xuv,{withBorders:!0,sx:{display:"grid",gridTemplateColumns:".8fr 1.2fr .8fr .8fr .2fr",padding:"15px",gap:"10px",maxHeight:"430px",overflowY:"auto"},children:[(0,j.jsx)(w,{}),S.map((function(e,n){var i=C(e.accessKey)?"AccessKey is required":"",t=C(e.secretKey)?"SecretKey is required":"";return(0,j.jsx)(v,{rowData:e,rowId:n,fieldErrors:{accessKey:i,secretKey:t},onFieldChange:function(e,n,i){var t=e.target.value;""!==n&&T((function(e){return e.map((function(e,c){return c===i?(0,s.Z)((0,s.Z)({},e),{},(0,r.Z)({},n,t)):e}))}))},showRowActions:!1},"current-".concat(n))}))]})]}),(0,j.jsxs)(d.xuv,{sx:{marginTop:"25px"},children:[(0,j.jsx)(b,{title:"Peer Sites"}),(0,j.jsxs)(d.xuv,{withBorders:!0,sx:{display:"grid",gridTemplateColumns:".8fr 1.2fr .8fr .8fr .2fr",padding:"15px",gap:"10px",maxHeight:"430px",overflowY:"auto"},children:[(0,j.jsx)(w,{}),R.map((function(e,n){var i=K(e.endpoint),c=C(e.accessKey)?"AccessKey is required":"",a=C(e.secretKey)?"SecretKey is required":"";return(0,j.jsx)(v,{rowData:e,rowId:n,fieldErrors:{endpoint:i,accessKey:c,secretKey:a},onFieldChange:function(e,n,i){var t=e.target.value;E((function(e){return e.map((function(e,c){return c===i?(0,s.Z)((0,s.Z)({},e),{},(0,r.Z)({},n,t)):e}))}))},canAdd:!0,canRemove:n>0&&!e.isSaved,onAddClick:function(){var e=(0,t.Z)(R);e.splice(n+1,0,{name:"",endpoint:"",accessKey:"",secretKey:""}),E(e)},onRemoveClick:function(e){E(R.filter((function(n,i){return i!==e})))}},"exiting-".concat(n))}))]})]}),(0,j.jsx)(d.rjZ,{item:!0,xs:12,children:(0,j.jsxs)(d.xuv,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end",marginTop:"20px",gap:"15px"},children:[(0,j.jsx)(d.zxk,{id:"clear",type:"button",variant:"regular",disabled:V,onClick:Q,label:"Clear"}),(0,j.jsx)(d.zxk,{id:"save",type:"submit",variant:"callAction",disabled:V||!Y,label:"Save"})]})})]})]}),(0,j.jsx)(d.KfX,{title:"",iconComponent:null,help:(0,j.jsxs)(a.Fragment,{children:[(0,j.jsxs)(d.xuv,{sx:{marginTop:"-25px",fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center",justifyContent:"flex-start",padding:"2px"},children:[(0,j.jsx)(d.xuv,{sx:{backgroundColor:"#07193E",height:"15px",width:"15px",display:"flex",alignItems:"center",justifyContent:"center",borderRadius:"50%",marginRight:"18px",padding:"3px",paddingLeft:"2px","& .min-icon":{height:"11px",width:"11px",fill:"#ffffff"}},children:(0,j.jsx)(d.aWt,{})}),"About Site Replication"]}),(0,j.jsxs)(d.xuv,{sx:{display:"flex",flexFlow:"column",fontSize:"14px",flex:"2","& li":{fontSize:"14px",display:"flex",marginTop:"15px",marginBottom:"15px",width:"100%","&.step-text":{fontWeight:400}}},children:[(0,j.jsx)(d.xuv,{children:"The following changes are replicated to all other sites"}),(0,j.jsxs)("ul",{children:[(0,j.jsx)("li",{children:"Creation and deletion of buckets and objects"}),(0,j.jsx)("li",{children:"Creation and deletion of all IAM users, groups, policies and their mappings to users or groups"}),(0,j.jsx)("li",{children:"Creation of STS credentials"}),(0,j.jsx)("li",{children:"Creation and deletion of service accounts (except those owned by the root user)"}),(0,j.jsx)("li",{children:(0,j.jsxs)(d.xuv,{style:{display:"flex",flexFlow:"column",justifyContent:"flex-start"},children:[(0,j.jsx)("div",{style:{paddingTop:"1px"},children:"Changes to Bucket features such as"}),(0,j.jsxs)("ul",{children:[(0,j.jsx)("li",{children:"Bucket Policies"}),(0,j.jsx)("li",{children:"Bucket Tags"}),(0,j.jsx)("li",{children:"Bucket Object-Lock configurations"}),(0,j.jsx)("li",{children:"Bucket Encryption configuration"})]})]})}),(0,j.jsx)("li",{children:(0,j.jsxs)(d.xuv,{style:{display:"flex",flexFlow:"column",justifyContent:"flex-start"},children:[(0,j.jsx)("div",{style:{paddingTop:"1px"},children:"The following Bucket features will NOT be replicated"}),(0,j.jsxs)("ul",{children:[(0,j.jsx)("li",{children:"Bucket notification configuration"}),(0,j.jsx)("li",{children:"Bucket lifecycle (ILM) configuration"})]})]})})]})]})]})})]})})]})}}}]); +//# sourceMappingURL=3875.1266ad37.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/3875.7fa4f881.chunk.js.map b/portal-ui/build/static/js/3875.1266ad37.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/3875.7fa4f881.chunk.js.map rename to portal-ui/build/static/js/3875.1266ad37.chunk.js.map index c96219df1f..0bb84c1e18 100644 --- a/portal-ui/build/static/js/3875.7fa4f881.chunk.js.map +++ b/portal-ui/build/static/js/3875.1266ad37.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/3875.7fa4f881.chunk.js","mappings":"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","sources":["screens/Console/Configurations/SiteReplication/SRSiteInputRow.tsx","screens/Console/Configurations/SiteReplication/AddReplicationSites.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport { AddIcon, Box, Button, Grid, InputBox, RemoveIcon } from \"mds\";\nimport { SiteInputRow } from \"./Types\";\n\ninterface ISRSiteInputRowProps {\n rowData: SiteInputRow;\n rowId: number;\n onFieldChange: (e: any, fieldName: string, index: number) => void;\n onAddClick?: (index: number) => void;\n onRemoveClick?: (index: number) => void;\n canAdd?: boolean;\n canRemove?: boolean;\n showRowActions?: boolean;\n disabledFields?: string[];\n fieldErrors?: Record;\n}\n\nconst SRSiteInputRow = ({\n rowData,\n rowId: index,\n onFieldChange,\n onAddClick,\n onRemoveClick,\n canAdd = true,\n canRemove = true,\n showRowActions = true,\n disabledFields = [],\n fieldErrors = {},\n}: ISRSiteInputRowProps) => {\n const { endpoint = \"\", accessKey = \"\", secretKey = \"\", name = \"\" } = rowData;\n return (\n \n \n {\n onFieldChange(e, \"name\", index);\n }}\n data-test-id={`add-site-rep-peer-site-${index}`}\n />\n \n \n {\n onFieldChange(e, \"endpoint\", index);\n }}\n data-test-id={`add-site-rep-peer-ep-${index}`}\n />\n \n\n \n {\n onFieldChange(e, \"accessKey\", index);\n }}\n data-test-id={`add-rep-peer-site-ac-${index}`}\n />\n \n \n {\n onFieldChange(e, \"secretKey\", index);\n }}\n data-test-id={`add-rep-peer-site-sk-${index}`}\n />\n \n \n \n {showRowActions ? (\n \n \n }\n onClick={(e) => {\n e.preventDefault();\n onAddClick?.(index);\n }}\n style={{\n width: 25,\n height: 25,\n padding: 0,\n }}\n />\n \n \n }\n onClick={(e) => {\n e.preventDefault();\n onRemoveClick?.(index);\n }}\n style={{\n width: 25,\n height: 25,\n padding: 0,\n marginLeft: 8,\n }}\n />\n \n \n ) : null}\n \n \n \n );\n};\n\nexport default SRSiteInputRow;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n BackLink,\n Button,\n ClustersIcon,\n HelpBox,\n PageLayout,\n Box,\n Grid,\n ProgressBar,\n InputLabel,\n SectionTitle,\n} from \"mds\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport { IAM_PAGES } from \"../../../../common/SecureComponent/permissions\";\nimport {\n setErrorSnackMessage,\n setHelpName,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { useSelector } from \"react-redux\";\nimport { selSession } from \"../../consoleSlice\";\nimport SRSiteInputRow from \"./SRSiteInputRow\";\nimport { SiteInputRow } from \"./Types\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../../HelpMenu\";\n\nconst isValidEndPoint = (ep: string) => {\n let isValidEndPointUrl = false;\n\n try {\n new URL(ep);\n isValidEndPointUrl = true;\n } catch (err) {\n isValidEndPointUrl = false;\n }\n if (isValidEndPointUrl) {\n return \"\";\n } else {\n return \"Invalid Endpoint\";\n }\n};\n\nconst isEmptyValue = (value: string): boolean => {\n return value?.trim() === \"\";\n};\n\nconst TableHeader = () => {\n return (\n \n \n Site Name\n \n \n Endpoint {\"*\"}\n \n \n Access Key {\"*\"}\n \n \n Secret Key {\"*\"}\n \n \n \n );\n};\n\nconst SiteTypeHeader = ({ title }: { title: string }) => {\n return (\n \n \n {title}\n \n \n );\n};\n\nconst AddReplicationSites = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const { serverEndPoint = \"\" } = useSelector(selSession);\n\n const [currentSite, setCurrentSite] = useState([\n {\n endpoint: serverEndPoint,\n name: \"\",\n accessKey: \"\",\n secretKey: \"\",\n },\n ]);\n\n const [existingSites, setExistingSites] = useState([]);\n\n const setDefaultNewRows = () => {\n const defaultNewSites = [\n { endpoint: \"\", name: \"\", accessKey: \"\", secretKey: \"\" },\n ];\n setExistingSites(defaultNewSites);\n };\n\n const [isSiteInfoLoading, invokeSiteInfoApi] = useApi(\n (res: any) => {\n const { sites: siteList, name: curSiteName } = res;\n // current site name to be the fist one.\n const foundIdx = siteList.findIndex((el: any) => el.name === curSiteName);\n if (foundIdx !== -1) {\n let curSite = siteList[foundIdx];\n curSite = {\n ...curSite,\n isCurrent: true,\n isSaved: true,\n };\n\n setCurrentSite([curSite]);\n siteList.splice(foundIdx, 1);\n }\n\n siteList.sort((x: any, y: any) => {\n return x.name === curSiteName ? -1 : y.name === curSiteName ? 1 : 0;\n });\n\n let existingSiteList = siteList.map((si: any) => {\n return {\n ...si,\n accessKey: \"\",\n secretKey: \"\",\n isSaved: true,\n };\n });\n\n if (existingSiteList.length) {\n setExistingSites(existingSiteList);\n } else {\n setDefaultNewRows();\n }\n },\n (err: any) => {\n setDefaultNewRows();\n },\n );\n\n const getSites = () => {\n invokeSiteInfoApi(\"GET\", `api/v1/admin/site-replication`);\n };\n\n useEffect(() => {\n getSites();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n dispatch(setHelpName(\"add-replication-sites\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const existingEndPointsValidity = existingSites.reduce(\n (acc: string[], cv, i) => {\n const epValue = existingSites[i].endpoint;\n const isEpValid = isValidEndPoint(epValue);\n\n if (isEpValid === \"\" && epValue !== \"\") {\n acc.push(isEpValid);\n }\n return acc;\n },\n [],\n );\n\n const isExistingCredsValidity = existingSites\n .map((site) => {\n return !isEmptyValue(site.accessKey) && !isEmptyValue(site.secretKey);\n })\n .filter(Boolean);\n\n const { accessKey: cAccessKey, secretKey: cSecretKey } = currentSite[0];\n\n const isCurCredsValid =\n !isEmptyValue(cAccessKey) && !isEmptyValue(cSecretKey);\n const peerEndpointsValid =\n existingEndPointsValidity.length === existingSites.length;\n const peerCredsValid =\n isExistingCredsValidity.length === existingSites.length;\n\n let isAllFieldsValid =\n isCurCredsValid && peerEndpointsValid && peerCredsValid;\n\n const [isAdding, invokeSiteAddApi] = useApi(\n (res: any) => {\n if (res.success) {\n dispatch(setSnackBarMessage(res.status));\n resetForm();\n getSites();\n navigate(IAM_PAGES.SITE_REPLICATION);\n } else {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Error\",\n detailedError: res.status,\n }),\n );\n }\n },\n (err: any) => {\n dispatch(setErrorSnackMessage(err));\n },\n );\n\n const resetForm = () => {\n setDefaultNewRows();\n setCurrentSite((prevItems) => {\n return prevItems.map((item, ix) => ({\n ...item,\n accessKey: \"\",\n secretKey: \"\",\n name: \"\",\n }));\n });\n };\n\n const addSiteReplication = () => {\n const curSite: any[] = currentSite?.map((es, idx) => {\n return {\n accessKey: es.accessKey,\n secretKey: es.secretKey,\n name: es.name,\n endpoint: es.endpoint.trim(),\n };\n });\n\n const newOrExistingSitesToAdd = existingSites.reduce(\n (acc: any, ns, idx) => {\n if (ns.endpoint) {\n acc.push({\n accessKey: ns.accessKey,\n secretKey: ns.secretKey,\n name: ns.name || `dr-site-${idx}`,\n endpoint: ns.endpoint.trim(),\n });\n }\n return acc;\n },\n [],\n );\n\n const sitesToAdd = curSite.concat(newOrExistingSitesToAdd);\n\n invokeSiteAddApi(\"POST\", `api/v1/admin/site-replication`, sitesToAdd);\n };\n\n const renderCurrentSite = () => {\n return (\n \n \n \n \n\n {currentSite.map((cs, index) => {\n const accessKeyError = isEmptyValue(cs.accessKey)\n ? \"AccessKey is required\"\n : \"\";\n const secretKeyError = isEmptyValue(cs.secretKey)\n ? \"SecretKey is required\"\n : \"\";\n return (\n {\n const filedValue = e.target.value;\n if (fieldName !== \"\") {\n setCurrentSite((prevItems) => {\n return prevItems.map((item, ix) =>\n ix === index\n ? { ...item, [fieldName]: filedValue }\n : item,\n );\n });\n }\n }}\n showRowActions={false}\n />\n );\n })}\n \n \n );\n };\n\n const renderPeerSites = () => {\n return (\n \n \n \n \n\n {existingSites.map((ps, index) => {\n const endPointError = isValidEndPoint(ps.endpoint);\n\n const accessKeyError = isEmptyValue(ps.accessKey)\n ? \"AccessKey is required\"\n : \"\";\n const secretKeyError = isEmptyValue(ps.secretKey)\n ? \"SecretKey is required\"\n : \"\";\n\n return (\n {\n const filedValue = e.target.value;\n setExistingSites((prevItems) => {\n return prevItems.map((item, ix) =>\n ix === index\n ? { ...item, [fieldName]: filedValue }\n : item,\n );\n });\n }}\n canAdd={true}\n canRemove={index > 0 && !ps.isSaved}\n onAddClick={() => {\n const newRows = [...existingSites];\n //add at the next index\n newRows.splice(index + 1, 0, {\n name: \"\",\n endpoint: \"\",\n accessKey: \"\",\n secretKey: \"\",\n });\n\n setExistingSites(newRows);\n }}\n onRemoveClick={(index) => {\n setExistingSites(\n existingSites.filter((_, idx) => idx !== index),\n );\n }}\n />\n );\n })}\n \n \n );\n };\n\n return (\n \n navigate(IAM_PAGES.SITE_REPLICATION)}\n />\n }\n actions={}\n />\n \n \n \n }>\n Add Sites for Replication\n \n\n {isSiteInfoLoading || isAdding ? : null}\n\n \n Note: AccessKey and SecretKey values for every site is required\n while adding or editing peer sites\n \n ) => {\n e.preventDefault();\n return addSiteReplication();\n }}\n >\n {renderCurrentSite()}\n\n {renderPeerSites()}\n\n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n About Site Replication\n \n \n \n The following changes are replicated to all other sites\n \n
    \n
  • Creation and deletion of buckets and objects
  • \n
  • \n Creation and deletion of all IAM users, groups, policies\n and their mappings to users or groups\n
  • \n
  • Creation of STS credentials
  • \n
  • \n Creation and deletion of service accounts (except those\n owned by the root user)\n
  • \n
  • \n \n \n Changes to Bucket features such as\n
\n
    \n
  • Bucket Policies
  • \n
  • Bucket Tags
  • \n
  • Bucket Object-Lock configurations
  • \n
  • Bucket Encryption configuration
  • \n
\n \n \n\n
  • \n \n \n The following Bucket features will NOT be replicated\n
  • \n\n
      \n
    • Bucket notification configuration
    • \n
    • Bucket lifecycle (ILM) configuration
    • \n
    \n \n \n \n \n
    \n }\n />\n \n \n
    \n );\n};\n\nexport default AddReplicationSites;\n"],"names":["_ref","rowData","index","rowId","onFieldChange","onAddClick","onRemoveClick","_ref$canAdd","canAdd","_ref$canRemove","canRemove","_ref$showRowActions","showRowActions","_ref$disabledFields","disabledFields","_ref$fieldErrors","fieldErrors","_rowData$endpoint","endpoint","_rowData$accessKey","accessKey","_rowData$secretKey","secretKey","_rowData$name","name","_jsxs","Fragment","children","_jsx","Box","InputBox","id","concat","placeholder","label","readOnly","includes","value","onChange","e","error","required","disabled","type","Grid","item","xs","sx","alignItems","display","justifyContent","alignSelf","marginTop","borderColor","color","borderRadius","React","TooltipWrapper","tooltip","Button","variant","icon","AddIcon","onClick","preventDefault","style","width","height","padding","RemoveIcon","marginLeft","isValidEndPoint","ep","isValidEndPointUrl","URL","err","isEmptyValue","trim","TableHeader","InputLabel","SiteTypeHeader","title","marginBottom","fontSize","fontWeight","dispatch","useAppDispatch","navigate","useNavigate","_useSelector$serverEn","useSelector","selSession","serverEndPoint","_useState","useState","_useState2","_slicedToArray","currentSite","setCurrentSite","_useState3","_useState4","existingSites","setExistingSites","setDefaultNewRows","_useApi","useApi","res","siteList","sites","curSiteName","foundIdx","findIndex","el","curSite","_objectSpread","isCurrent","isSaved","splice","sort","x","y","existingSiteList","map","si","length","_useApi2","isSiteInfoLoading","invokeSiteInfoApi","getSites","useEffect","setHelpName","existingEndPointsValidity","reduce","acc","cv","i","epValue","isEpValid","push","isExistingCredsValidity","site","filter","Boolean","_currentSite$","cAccessKey","cSecretKey","isCurCredsValid","peerEndpointsValid","peerCredsValid","isAllFieldsValid","_useApi3","success","setSnackBarMessage","status","resetForm","IAM_PAGES","SITE_REPLICATION","setErrorSnackMessage","errorMessage","detailedError","_useApi4","isAdding","invokeSiteAddApi","prevItems","ix","PageHeaderWrapper","BackLink","actions","HelpMenu","PageLayout","gap","gridTemplateColumns","border","SectionTitle","separator","ClustersIcon","ProgressBar","fontStyle","noValidate","autoComplete","onSubmit","es","idx","newOrExistingSitesToAdd","ns","sitesToAdd","addSiteReplication","withBorders","maxHeight","overflowY","cs","accessKeyError","secretKeyError","SRSiteInputRow","fieldName","filedValue","target","_defineProperty","ps","endPointError","newRows","_toConsumableArray","_","HelpBox","iconComponent","help","backgroundColor","marginRight","paddingLeft","fill","flexFlow","flex","paddingTop"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/3875.1266ad37.chunk.js","mappings":"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","sources":["screens/Console/Configurations/SiteReplication/SRSiteInputRow.tsx","screens/Console/Configurations/SiteReplication/AddReplicationSites.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport { AddIcon, Box, Button, Grid, InputBox, RemoveIcon } from \"mds\";\nimport { SiteInputRow } from \"./Types\";\n\ninterface ISRSiteInputRowProps {\n rowData: SiteInputRow;\n rowId: number;\n onFieldChange: (e: any, fieldName: string, index: number) => void;\n onAddClick?: (index: number) => void;\n onRemoveClick?: (index: number) => void;\n canAdd?: boolean;\n canRemove?: boolean;\n showRowActions?: boolean;\n disabledFields?: string[];\n fieldErrors?: Record;\n}\n\nconst SRSiteInputRow = ({\n rowData,\n rowId: index,\n onFieldChange,\n onAddClick,\n onRemoveClick,\n canAdd = true,\n canRemove = true,\n showRowActions = true,\n disabledFields = [],\n fieldErrors = {},\n}: ISRSiteInputRowProps) => {\n const { endpoint = \"\", accessKey = \"\", secretKey = \"\", name = \"\" } = rowData;\n return (\n \n \n {\n onFieldChange(e, \"name\", index);\n }}\n data-test-id={`add-site-rep-peer-site-${index}`}\n />\n \n \n {\n onFieldChange(e, \"endpoint\", index);\n }}\n data-test-id={`add-site-rep-peer-ep-${index}`}\n />\n \n\n \n {\n onFieldChange(e, \"accessKey\", index);\n }}\n data-test-id={`add-rep-peer-site-ac-${index}`}\n />\n \n \n {\n onFieldChange(e, \"secretKey\", index);\n }}\n data-test-id={`add-rep-peer-site-sk-${index}`}\n />\n \n \n \n {showRowActions ? (\n \n \n }\n onClick={(e) => {\n e.preventDefault();\n onAddClick?.(index);\n }}\n style={{\n width: 25,\n height: 25,\n padding: 0,\n }}\n />\n \n \n }\n onClick={(e) => {\n e.preventDefault();\n onRemoveClick?.(index);\n }}\n style={{\n width: 25,\n height: 25,\n padding: 0,\n marginLeft: 8,\n }}\n />\n \n \n ) : null}\n \n \n \n );\n};\n\nexport default SRSiteInputRow;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n BackLink,\n Button,\n ClustersIcon,\n HelpBox,\n PageLayout,\n Box,\n Grid,\n ProgressBar,\n InputLabel,\n SectionTitle,\n} from \"mds\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport { IAM_PAGES } from \"../../../../common/SecureComponent/permissions\";\nimport {\n setErrorSnackMessage,\n setHelpName,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { useSelector } from \"react-redux\";\nimport { selSession } from \"../../consoleSlice\";\nimport SRSiteInputRow from \"./SRSiteInputRow\";\nimport { SiteInputRow } from \"./Types\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../../HelpMenu\";\n\nconst isValidEndPoint = (ep: string) => {\n let isValidEndPointUrl = false;\n\n try {\n new URL(ep);\n isValidEndPointUrl = true;\n } catch (err) {\n isValidEndPointUrl = false;\n }\n if (isValidEndPointUrl) {\n return \"\";\n } else {\n return \"Invalid Endpoint\";\n }\n};\n\nconst isEmptyValue = (value: string): boolean => {\n return value?.trim() === \"\";\n};\n\nconst TableHeader = () => {\n return (\n \n \n Site Name\n \n \n Endpoint {\"*\"}\n \n \n Access Key {\"*\"}\n \n \n Secret Key {\"*\"}\n \n \n \n );\n};\n\nconst SiteTypeHeader = ({ title }: { title: string }) => {\n return (\n \n \n {title}\n \n \n );\n};\n\nconst AddReplicationSites = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const { serverEndPoint = \"\" } = useSelector(selSession);\n\n const [currentSite, setCurrentSite] = useState([\n {\n endpoint: serverEndPoint,\n name: \"\",\n accessKey: \"\",\n secretKey: \"\",\n },\n ]);\n\n const [existingSites, setExistingSites] = useState([]);\n\n const setDefaultNewRows = () => {\n const defaultNewSites = [\n { endpoint: \"\", name: \"\", accessKey: \"\", secretKey: \"\" },\n ];\n setExistingSites(defaultNewSites);\n };\n\n const [isSiteInfoLoading, invokeSiteInfoApi] = useApi(\n (res: any) => {\n const { sites: siteList, name: curSiteName } = res;\n // current site name to be the fist one.\n const foundIdx = siteList.findIndex((el: any) => el.name === curSiteName);\n if (foundIdx !== -1) {\n let curSite = siteList[foundIdx];\n curSite = {\n ...curSite,\n isCurrent: true,\n isSaved: true,\n };\n\n setCurrentSite([curSite]);\n siteList.splice(foundIdx, 1);\n }\n\n siteList.sort((x: any, y: any) => {\n return x.name === curSiteName ? -1 : y.name === curSiteName ? 1 : 0;\n });\n\n let existingSiteList = siteList.map((si: any) => {\n return {\n ...si,\n accessKey: \"\",\n secretKey: \"\",\n isSaved: true,\n };\n });\n\n if (existingSiteList.length) {\n setExistingSites(existingSiteList);\n } else {\n setDefaultNewRows();\n }\n },\n (err: any) => {\n setDefaultNewRows();\n },\n );\n\n const getSites = () => {\n invokeSiteInfoApi(\"GET\", `api/v1/admin/site-replication`);\n };\n\n useEffect(() => {\n getSites();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n dispatch(setHelpName(\"add-replication-sites\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const existingEndPointsValidity = existingSites.reduce(\n (acc: string[], cv, i) => {\n const epValue = existingSites[i].endpoint;\n const isEpValid = isValidEndPoint(epValue);\n\n if (isEpValid === \"\" && epValue !== \"\") {\n acc.push(isEpValid);\n }\n return acc;\n },\n [],\n );\n\n const isExistingCredsValidity = existingSites\n .map((site) => {\n return !isEmptyValue(site.accessKey) && !isEmptyValue(site.secretKey);\n })\n .filter(Boolean);\n\n const { accessKey: cAccessKey, secretKey: cSecretKey } = currentSite[0];\n\n const isCurCredsValid =\n !isEmptyValue(cAccessKey) && !isEmptyValue(cSecretKey);\n const peerEndpointsValid =\n existingEndPointsValidity.length === existingSites.length;\n const peerCredsValid =\n isExistingCredsValidity.length === existingSites.length;\n\n let isAllFieldsValid =\n isCurCredsValid && peerEndpointsValid && peerCredsValid;\n\n const [isAdding, invokeSiteAddApi] = useApi(\n (res: any) => {\n if (res.success) {\n dispatch(setSnackBarMessage(res.status));\n resetForm();\n getSites();\n navigate(IAM_PAGES.SITE_REPLICATION);\n } else {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Error\",\n detailedError: res.status,\n }),\n );\n }\n },\n (err: any) => {\n dispatch(setErrorSnackMessage(err));\n },\n );\n\n const resetForm = () => {\n setDefaultNewRows();\n setCurrentSite((prevItems) => {\n return prevItems.map((item, ix) => ({\n ...item,\n accessKey: \"\",\n secretKey: \"\",\n name: \"\",\n }));\n });\n };\n\n const addSiteReplication = () => {\n const curSite: any[] = currentSite?.map((es, idx) => {\n return {\n accessKey: es.accessKey,\n secretKey: es.secretKey,\n name: es.name,\n endpoint: es.endpoint.trim(),\n };\n });\n\n const newOrExistingSitesToAdd = existingSites.reduce(\n (acc: any, ns, idx) => {\n if (ns.endpoint) {\n acc.push({\n accessKey: ns.accessKey,\n secretKey: ns.secretKey,\n name: ns.name || `dr-site-${idx}`,\n endpoint: ns.endpoint.trim(),\n });\n }\n return acc;\n },\n [],\n );\n\n const sitesToAdd = curSite.concat(newOrExistingSitesToAdd);\n\n invokeSiteAddApi(\"POST\", `api/v1/admin/site-replication`, sitesToAdd);\n };\n\n const renderCurrentSite = () => {\n return (\n \n \n \n \n\n {currentSite.map((cs, index) => {\n const accessKeyError = isEmptyValue(cs.accessKey)\n ? \"AccessKey is required\"\n : \"\";\n const secretKeyError = isEmptyValue(cs.secretKey)\n ? \"SecretKey is required\"\n : \"\";\n return (\n {\n const filedValue = e.target.value;\n if (fieldName !== \"\") {\n setCurrentSite((prevItems) => {\n return prevItems.map((item, ix) =>\n ix === index\n ? { ...item, [fieldName]: filedValue }\n : item,\n );\n });\n }\n }}\n showRowActions={false}\n />\n );\n })}\n \n \n );\n };\n\n const renderPeerSites = () => {\n return (\n \n \n \n \n\n {existingSites.map((ps, index) => {\n const endPointError = isValidEndPoint(ps.endpoint);\n\n const accessKeyError = isEmptyValue(ps.accessKey)\n ? \"AccessKey is required\"\n : \"\";\n const secretKeyError = isEmptyValue(ps.secretKey)\n ? \"SecretKey is required\"\n : \"\";\n\n return (\n {\n const filedValue = e.target.value;\n setExistingSites((prevItems) => {\n return prevItems.map((item, ix) =>\n ix === index\n ? { ...item, [fieldName]: filedValue }\n : item,\n );\n });\n }}\n canAdd={true}\n canRemove={index > 0 && !ps.isSaved}\n onAddClick={() => {\n const newRows = [...existingSites];\n //add at the next index\n newRows.splice(index + 1, 0, {\n name: \"\",\n endpoint: \"\",\n accessKey: \"\",\n secretKey: \"\",\n });\n\n setExistingSites(newRows);\n }}\n onRemoveClick={(index) => {\n setExistingSites(\n existingSites.filter((_, idx) => idx !== index),\n );\n }}\n />\n );\n })}\n \n \n );\n };\n\n return (\n \n navigate(IAM_PAGES.SITE_REPLICATION)}\n />\n }\n actions={}\n />\n \n \n \n }>\n Add Sites for Replication\n \n\n {isSiteInfoLoading || isAdding ? : null}\n\n \n Note: AccessKey and SecretKey values for every site is required\n while adding or editing peer sites\n \n ) => {\n e.preventDefault();\n return addSiteReplication();\n }}\n >\n {renderCurrentSite()}\n\n {renderPeerSites()}\n\n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n About Site Replication\n \n \n \n The following changes are replicated to all other sites\n \n
      \n
    • Creation and deletion of buckets and objects
    • \n
    • \n Creation and deletion of all IAM users, groups, policies\n and their mappings to users or groups\n
    • \n
    • Creation of STS credentials
    • \n
    • \n Creation and deletion of service accounts (except those\n owned by the root user)\n
    • \n
    • \n \n \n Changes to Bucket features such as\n \n
        \n
      • Bucket Policies
      • \n
      • Bucket Tags
      • \n
      • Bucket Object-Lock configurations
      • \n
      • Bucket Encryption configuration
      • \n
      \n \n
    • \n\n
    • \n \n \n The following Bucket features will NOT be replicated\n \n\n
        \n
      • Bucket notification configuration
      • \n
      • Bucket lifecycle (ILM) configuration
      • \n
      \n \n
    • \n
    \n \n
    \n }\n />\n \n \n
    \n );\n};\n\nexport default AddReplicationSites;\n"],"names":["_ref","rowData","index","rowId","onFieldChange","onAddClick","onRemoveClick","_ref$canAdd","canAdd","_ref$canRemove","canRemove","_ref$showRowActions","showRowActions","_ref$disabledFields","disabledFields","_ref$fieldErrors","fieldErrors","_rowData$endpoint","endpoint","_rowData$accessKey","accessKey","_rowData$secretKey","secretKey","_rowData$name","name","_jsxs","Fragment","children","_jsx","Box","InputBox","id","concat","placeholder","label","readOnly","includes","value","onChange","e","error","required","disabled","type","Grid","item","xs","sx","alignItems","display","justifyContent","alignSelf","marginTop","borderColor","color","borderRadius","React","TooltipWrapper","tooltip","Button","variant","icon","AddIcon","onClick","preventDefault","style","width","height","padding","RemoveIcon","marginLeft","isValidEndPoint","ep","isValidEndPointUrl","URL","err","isEmptyValue","trim","TableHeader","InputLabel","SiteTypeHeader","title","marginBottom","fontSize","fontWeight","dispatch","useAppDispatch","navigate","useNavigate","_useSelector$serverEn","useSelector","selSession","serverEndPoint","_useState","useState","_useState2","_slicedToArray","currentSite","setCurrentSite","_useState3","_useState4","existingSites","setExistingSites","setDefaultNewRows","_useApi","useApi","res","siteList","sites","curSiteName","foundIdx","findIndex","el","curSite","_objectSpread","isCurrent","isSaved","splice","sort","x","y","existingSiteList","map","si","length","_useApi2","isSiteInfoLoading","invokeSiteInfoApi","getSites","useEffect","setHelpName","existingEndPointsValidity","reduce","acc","cv","i","epValue","isEpValid","push","isExistingCredsValidity","site","filter","Boolean","_currentSite$","cAccessKey","cSecretKey","isCurCredsValid","peerEndpointsValid","peerCredsValid","isAllFieldsValid","_useApi3","success","setSnackBarMessage","status","resetForm","IAM_PAGES","SITE_REPLICATION","setErrorSnackMessage","errorMessage","detailedError","_useApi4","isAdding","invokeSiteAddApi","prevItems","ix","PageHeaderWrapper","BackLink","actions","HelpMenu","PageLayout","gap","gridTemplateColumns","border","SectionTitle","separator","ClustersIcon","ProgressBar","fontStyle","noValidate","autoComplete","onSubmit","es","idx","newOrExistingSitesToAdd","ns","sitesToAdd","addSiteReplication","withBorders","maxHeight","overflowY","cs","accessKeyError","secretKeyError","SRSiteInputRow","fieldName","filedValue","target","_defineProperty","ps","endPointError","newRows","_toConsumableArray","_","HelpBox","iconComponent","help","backgroundColor","marginRight","paddingLeft","fill","flexFlow","flex","paddingTop"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/3956.27299d66.chunk.js b/portal-ui/build/static/js/3956.3d92ba64.chunk.js similarity index 88% rename from portal-ui/build/static/js/3956.27299d66.chunk.js rename to portal-ui/build/static/js/3956.3d92ba64.chunk.js index fc3d877051..df75604029 100644 --- a/portal-ui/build/static/js/3956.27299d66.chunk.js +++ b/portal-ui/build/static/js/3956.3d92ba64.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[3956],{23956:function(e,n,t){t.r(n);var r=t(29439),c=t(72791),o=t(9505),i=t(23508),s=t(29945),u=t(45248),l=t(87995),a=t(81551),f=t(80184);n.default=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,d=e.selectedServiceAccount,p=(0,a.TL)(),h=(0,o.Z)((function(){return n(!0)}),(function(e){return p((0,l.Ih)(e))})),x=(0,r.Z)(h,2),m=x[0],v=x[1];if(!d)return null;return(0,f.jsx)(i.Z,{title:"Delete Access Key",confirmText:"Delete",isOpen:t,titleIcon:(0,f.jsx)(s.NvT,{}),isLoading:m,onConfirm:function(){v("DELETE","/api/v1/service-accounts/".concat((0,u.LL)(d)))},onClose:function(){return n(!1)},confirmationContent:(0,f.jsxs)(c.Fragment,{children:["Are you sure you want to delete Access Key"," ",(0,f.jsx)("b",{style:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"},children:d}),"?"]})})}}}]); -//# sourceMappingURL=3956.27299d66.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[3956],{23956:function(e,n,t){t.r(n);var r=t(29439),c=t(72791),o=t(9505),i=t(23508),s=t(29945),u=t(45248),l=t(87995),a=t(44690),f=t(80184);n.default=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,d=e.selectedServiceAccount,p=(0,a.TL)(),h=(0,o.Z)((function(){return n(!0)}),(function(e){return p((0,l.Ih)(e))})),x=(0,r.Z)(h,2),m=x[0],v=x[1];if(!d)return null;return(0,f.jsx)(i.Z,{title:"Delete Access Key",confirmText:"Delete",isOpen:t,titleIcon:(0,f.jsx)(s.NvT,{}),isLoading:m,onConfirm:function(){v("DELETE","/api/v1/service-accounts/".concat((0,u.LL)(d)))},onClose:function(){return n(!1)},confirmationContent:(0,f.jsxs)(c.Fragment,{children:["Are you sure you want to delete Access Key"," ",(0,f.jsx)("b",{style:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"},children:d}),"?"]})})}}}]); +//# sourceMappingURL=3956.3d92ba64.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/3956.27299d66.chunk.js.map b/portal-ui/build/static/js/3956.3d92ba64.chunk.js.map similarity index 98% rename from portal-ui/build/static/js/3956.27299d66.chunk.js.map rename to portal-ui/build/static/js/3956.3d92ba64.chunk.js.map index edc51f857d..7bcb402cac 100644 --- a/portal-ui/build/static/js/3956.27299d66.chunk.js.map +++ b/portal-ui/build/static/js/3956.3d92ba64.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/3956.27299d66.chunk.js","mappings":"0NAmFA,UApD6B,SAAHA,GAIS,IAHjCC,EAA0BD,EAA1BC,2BACAC,EAAUF,EAAVE,WACAC,EAAsBH,EAAtBG,uBAEMC,GAAWC,EAAAA,EAAAA,MAMjBC,GAAyCC,EAAAA,EAAAA,IALpB,WAAH,OAASN,GAA2B,EAAM,IACzC,SAACO,GAAyB,OAC3CJ,GAASK,EAAAA,EAAAA,IAAqBD,GAAM,IAGmCE,GAAAC,EAAAA,EAAAA,GAAAL,EAAA,GAAlEM,EAAaF,EAAA,GAAEG,EAAeH,EAAA,GAErC,IAAKP,EACH,OAAO,KAUT,OACEW,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CACZC,MAAK,oBACLC,YAAa,SACbC,OAAQhB,EACRiB,WAAWL,EAAAA,EAAAA,KAACM,EAAAA,IAAiB,IAC7BC,UAAWT,EACXU,UAdoB,WACtBT,EACE,SAAS,4BAADU,QACoBC,EAAAA,EAAAA,IAAgBrB,IAEhD,EAUIsB,QAvBY,WAAH,OAASxB,GAA2B,EAAO,EAwBpDyB,qBACEC,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CAAC,6CACmC,KAC3Cf,EAAAA,EAAAA,KAAA,KACEgB,MAAO,CACLC,SAAU,QACVC,WAAY,SACZC,SAAU,cACVJ,SAED1B,IACC,QAMd,C","sources":["screens/Console/Account/DeleteServiceAccount.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\n\ninterface IDeleteServiceAccountProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedServiceAccount: string | null;\n}\n\nconst DeleteServiceAccount = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedServiceAccount,\n}: IDeleteServiceAccountProps) => {\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\n if (!selectedServiceAccount) {\n return null;\n }\n\n const onConfirmDelete = () => {\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/service-accounts/${encodeURLString(selectedServiceAccount)}`,\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 Access Key{\" \"}\n \n {selectedServiceAccount}\n \n ?\n \n }\n />\n );\n};\n\nexport default DeleteServiceAccount;\n"],"names":["_ref","closeDeleteModalAndRefresh","deleteOpen","selectedServiceAccount","dispatch","useAppDispatch","_useApi","useApi","err","setErrorSnackMessage","_useApi2","_slicedToArray","deleteLoading","invokeDeleteApi","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","concat","encodeURLString","onClose","confirmationContent","_jsxs","Fragment","children","style","maxWidth","whiteSpace","wordWrap"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/3956.3d92ba64.chunk.js","mappings":"0NAmFA,UApD6B,SAAHA,GAIS,IAHjCC,EAA0BD,EAA1BC,2BACAC,EAAUF,EAAVE,WACAC,EAAsBH,EAAtBG,uBAEMC,GAAWC,EAAAA,EAAAA,MAMjBC,GAAyCC,EAAAA,EAAAA,IALpB,WAAH,OAASN,GAA2B,EAAM,IACzC,SAACO,GAAyB,OAC3CJ,GAASK,EAAAA,EAAAA,IAAqBD,GAAM,IAGmCE,GAAAC,EAAAA,EAAAA,GAAAL,EAAA,GAAlEM,EAAaF,EAAA,GAAEG,EAAeH,EAAA,GAErC,IAAKP,EACH,OAAO,KAUT,OACEW,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CACZC,MAAK,oBACLC,YAAa,SACbC,OAAQhB,EACRiB,WAAWL,EAAAA,EAAAA,KAACM,EAAAA,IAAiB,IAC7BC,UAAWT,EACXU,UAdoB,WACtBT,EACE,SAAS,4BAADU,QACoBC,EAAAA,EAAAA,IAAgBrB,IAEhD,EAUIsB,QAvBY,WAAH,OAASxB,GAA2B,EAAO,EAwBpDyB,qBACEC,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CAAC,6CACmC,KAC3Cf,EAAAA,EAAAA,KAAA,KACEgB,MAAO,CACLC,SAAU,QACVC,WAAY,SACZC,SAAU,cACVJ,SAED1B,IACC,QAMd,C","sources":["screens/Console/Account/DeleteServiceAccount.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\n\ninterface IDeleteServiceAccountProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedServiceAccount: string | null;\n}\n\nconst DeleteServiceAccount = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedServiceAccount,\n}: IDeleteServiceAccountProps) => {\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\n if (!selectedServiceAccount) {\n return null;\n }\n\n const onConfirmDelete = () => {\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/service-accounts/${encodeURLString(selectedServiceAccount)}`,\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 Access Key{\" \"}\n \n {selectedServiceAccount}\n \n ?\n \n }\n />\n );\n};\n\nexport default DeleteServiceAccount;\n"],"names":["_ref","closeDeleteModalAndRefresh","deleteOpen","selectedServiceAccount","dispatch","useAppDispatch","_useApi","useApi","err","setErrorSnackMessage","_useApi2","_slicedToArray","deleteLoading","invokeDeleteApi","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","concat","encodeURLString","onClose","confirmationContent","_jsxs","Fragment","children","style","maxWidth","whiteSpace","wordWrap"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/3989.2a6d7b8e.chunk.js b/portal-ui/build/static/js/3989.7bc0050a.chunk.js similarity index 99% rename from portal-ui/build/static/js/3989.2a6d7b8e.chunk.js rename to portal-ui/build/static/js/3989.7bc0050a.chunk.js index 3a769e5443..831b5d5426 100644 --- a/portal-ui/build/static/js/3989.2a6d7b8e.chunk.js +++ b/portal-ui/build/static/js/3989.7bc0050a.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[3989],{93989:function(e,t,n){n.r(t),n.d(t,{default:function(){return R}});var s=n(29439),i=n(72791),l=n(26181),a=n.n(l),c=n(78687),r=n(57689),o=n(31776),u=n(82342),d=n(29945),x=n(23814),f=n(56087),h=n(38442),j=n(87995),p=n(9859),m=n(81551),v=n(84861),S=n(80184),_=function(e){var t,n,s=e.versioningState,i=void 0===s?{}:s;return(0,S.jsxs)(d.xuv,{sx:{display:"flex",flexDirection:"column",gap:2},children:[(0,S.jsx)(d.xuv,{sx:{fontWeight:"medium",display:"flex",gap:2},children:i.excludeFolders?(0,S.jsx)(v.Z,{icon:i.excludeFolders?(0,S.jsx)(d.E31,{style:{color:"green"}}):(0,S.jsx)(d.dRf,{}),label:(0,S.jsx)("label",{style:{textDecoration:"normal"},children:"Exclude Folders"})}):null}),null!==(t=i.excludedPrefixes)&&void 0!==t&&t.length?(0,S.jsxs)(d.xuv,{sx:{fontWeight:"medium",display:"flex",justifyItems:"end",placeItems:"flex-start",flexDirection:"column",gap:1},children:[(0,S.jsx)(d.xuv,{children:"Excluded Prefixes :"}),(0,S.jsx)("div",{style:{maxHeight:"200px",overflowY:"auto",placeItems:"flex-start",justifyItems:"end",flexDirection:"column",display:"flex"},children:null===(n=i.excludedPrefixes)||void 0===n?void 0:n.map((function(e){return(0,S.jsx)("div",{children:(0,S.jsx)("strong",{children:e.prefix})})}))})]}):null]})},T=n(75578),g=n(1413),E=n(45987),b=["disabled","onClick"],C=function(e){var t=e.disabled,n=e.onClick,s=(0,E.Z)(e,b);return(0,S.jsx)(d.hU,(0,g.Z)((0,g.Z)({size:"small",disabled:t,onClick:n},s),{},{children:(0,S.jsx)(d.dY8,{})}))},I=function(e){var t=e.resourceName,n=e.iamScopes,s=e.secureCmpProps,i=void 0===s?{}:s,l=e.children;return(0,S.jsx)(h.s,(0,g.Z)((0,g.Z)({scopes:n,resource:t,errorProps:{disabled:!0}},i),{},{children:l}))},N=function(e){var t=e.isLoading,n=void 0===t||t,s=e.resourceName,i=void 0===s?"":s,l=e.iamScopes,a=e.secureCmpProps,c=void 0===a?{}:a,r=e.property,o=void 0===r?null:r,u=e.value,x=void 0===u?null:u,f=e.onEdit,h=e.disabled,j=void 0!==h&&h;return(0,S.jsxs)(d.xuv,{sx:{display:"flex",alignItems:"baseline",justifyContent:"flex-start",gap:10},children:[(0,S.jsx)(d.kKA,{label:o,value:(0,S.jsx)(I,{resourceName:i,iamScopes:l,secureCmpProps:c,children:(0,S.jsx)(d.vmT,{isLoading:n,onClick:f,label:x,sx:{fontWeight:"bold"},disabled:j})})}),(0,S.jsx)(I,{resourceName:i,iamScopes:l,secureCmpProps:c,children:(0,S.jsx)(C,{onClick:f,sx:{background:"#f8f8f8",marginLeft:"3px",top:3,"& .min-icon":{width:"16px",height:"16px"}},disabled:j})})]})},y=n(45248),O=function(e){var t=e.bucketSize;return(0,S.jsxs)(d.xuv,{sx:{display:"flex",alignItems:"center","& .min-icon":{height:37,width:37}},children:[(0,S.jsx)(d.Mhr,{}),(0,S.jsxs)(d.xuv,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"center",flexFlow:"column",marginLeft:"20px",fontSize:"19px"},children:[(0,S.jsx)("label",{style:{fontWeight:600},children:"Reported Usage:"}),(0,S.jsx)("label",{children:(0,y.ae)(t)})]})]})},k=function(e){var t=e.quota;return(0,S.jsxs)(d.xuv,{sx:{display:"flex",alignItems:"center","& .min-icon":{height:37,width:37}},children:[(0,S.jsx)(d.sjJ,{}),(0,S.jsxs)(d.xuv,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"center",flexFlow:"column",marginLeft:"20px",fontSize:"19px"},children:[(0,S.jsxs)("label",{style:{fontWeight:600,textTransform:"capitalize"},children:[null===t||void 0===t?void 0:t.type," Quota"]}),(0,S.jsxs)("label",{children:[" ",(0,y.ae)("".concat(null===t||void 0===t?void 0:t.quota),!0)]})]})]})},Z=(0,T.Z)(i.lazy((function(){return n.e(3690).then(n.bind(n,33690))}))),F=(0,T.Z)(i.lazy((function(){return n.e(1604).then(n.bind(n,1604))}))),A=(0,T.Z)(i.lazy((function(){return n.e(9952).then(n.bind(n,99952))}))),U=(0,T.Z)(i.lazy((function(){return n.e(402).then(n.bind(n,70402))}))),B=(0,T.Z)(i.lazy((function(){return n.e(1705).then(n.bind(n,71705))}))),G=(0,T.Z)(i.lazy((function(){return Promise.all([n.e(911),n.e(1581)]).then(n.bind(n,1581))}))),R=function(){var e,t=(0,m.TL)(),n=(0,r.UO)(),l=(0,c.v9)(p.HQ),T=(0,c.v9)(p.G6),g=(0,c.v9)(j.N5),E=(0,i.useState)(null),b=(0,s.Z)(E,2),C=b[0],I=b[1],y=(0,i.useState)("0"),R=(0,s.Z)(y,2),P=R[0],K=R[1],L=(0,i.useState)(!1),D=(0,s.Z)(L,2),z=D[0],w=D[1],M=(0,i.useState)(!1),Y=(0,s.Z)(M,2),Q=Y[0],V=Y[1],W=(0,i.useState)(!1),q=(0,s.Z)(W,2),J=q[0],H=q[1],X=(0,i.useState)(!0),$=(0,s.Z)(X,2),ee=$[0],te=$[1],ne=(0,i.useState)(!0),se=(0,s.Z)(ne,2),ie=se[0],le=se[1],ae=(0,i.useState)(!0),ce=(0,s.Z)(ae,2),re=ce[0],oe=ce[1],ue=(0,i.useState)(!0),de=(0,s.Z)(ue,2),xe=de[0],fe=de[1],he=(0,i.useState)(!0),je=(0,s.Z)(he,2),pe=je[0],me=je[1],ve=(0,i.useState)(!0),Se=(0,s.Z)(ve,2),_e=Se[0],Te=Se[1],ge=(0,i.useState)(!0),Ee=(0,s.Z)(ge,2),be=Ee[0],Ce=Ee[1],Ie=(0,i.useState)(!0),Ne=(0,s.Z)(Ie,2),ye=Ne[0],Oe=Ne[1],ke=(0,i.useState)(),Ze=(0,s.Z)(ke,2),Fe=Ze[0],Ae=Ze[1],Ue=(0,i.useState)(!1),Be=(0,s.Z)(Ue,2),Ge=Be[0],Re=Be[1],Pe=(0,i.useState)(null),Ke=(0,s.Z)(Pe,2),Le=Ke[0],De=Ke[1],ze=(0,i.useState)(!1),we=(0,s.Z)(ze,2),Me=we[0],Ye=we[1],Qe=(0,i.useState)(!1),Ve=(0,s.Z)(Qe,2),We=Ve[0],qe=Ve[1],Je=(0,i.useState)(null),He=(0,s.Z)(Je,2),Xe=He[0],$e=He[1],et=(0,i.useState)(!1),tt=(0,s.Z)(et,2),nt=tt[0],st=tt[1],it=(0,i.useState)(!1),lt=(0,s.Z)(it,2),at=lt[0],ct=lt[1],rt=(0,i.useState)(!1),ot=(0,s.Z)(rt,2),ut=ot[0],dt=ot[1],xt=(0,i.useState)(!1),ft=(0,s.Z)(xt,2),ht=ft[0],jt=ft[1];(0,i.useEffect)((function(){t((0,j.Sc)("bucket_detail_summary"))}),[]);var pt=n.bucketName||"",mt="n/a",vt="";null!==T&&T.access&&T.definition&&(mt=T.access,vt=T.definition);var St=(0,h.F)(pt,[f.Ft.S3_GET_BUCKET_OBJECT_LOCK_CONFIGURATION,f.Ft.S3_GET_ACTIONS]),_t=(0,h.F)(pt,[f.Ft.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,f.Ft.S3_GET_ACTIONS]),Tt=(0,h.F)(pt,[f.Ft.ADMIN_GET_BUCKET_QUOTA]);(0,i.useEffect)((function(){oe(!!l)}),[l,oe]),(0,i.useEffect)((function(){xe&&(_t?o.h.buckets.getBucketEncryptionInfo(pt).then((function(e){e.data.algorithm&&(Ye(!0),I(e.data)),fe(!1)})).catch((function(e){"The server side encryption configuration was not found"===(e=(0,u.g)(e.error)).errorMessage&&(Ye(!1),I(null)),fe(!1)})):(Ye(!1),I(null),fe(!1)))}),[xe,pt,_t]),(0,i.useEffect)((function(){pe&&g&&o.h.buckets.getBucketVersioning(pt).then((function(e){Ae(e.data),me(!1)})).catch((function(e){t((0,j.Ih)((0,u.g)(e.error))),me(!1)}))}),[pe,t,pt,g]),(0,i.useEffect)((function(){_e&&g&&(Tt?o.h.buckets.getBucketQuota(pt).then((function(e){De(e.data),e.data.quota?Re(!0):Re(!1),Te(!1)})).catch((function(e){t((0,j.Ih)((0,u.g)(e.error))),Re(!1),Te(!1)})):(Re(!1),Te(!1)))}),[_e,me,t,pt,g,Tt]),(0,i.useEffect)((function(){pe&&g&&(St?o.h.buckets.getBucketObjectLockingStatus(pt).then((function(e){w(e.data.object_locking_enabled),te(!1)})).catch((function(e){t((0,j.Ih)((0,u.g)(e.error))),te(!1)})):te(!1))}),[ee,t,pt,pe,g,St]),(0,i.useEffect)((function(){ie&&o.h.buckets.listBuckets().then((function(e){var t=a()(e.data,"buckets",[]).find((function(e){return e.name===pt})),n=a()(t,"size","0");le(!1),K(n)})).catch((function(e){le(!1),t((0,j.Ih)((0,u.g)(e.error)))}))}),[ie,t,pt]),(0,i.useEffect)((function(){be&&g&&o.h.buckets.getBucketReplication(pt).then((function(e){var t=e.data.rules?e.data.rules:[];H(t.length>0),Ce(!1)})).catch((function(e){t((0,j.Ih)((0,u.g)(e.error))),Ce(!1)}))}),[be,t,pt,g]),(0,i.useEffect)((function(){ye&&z&&o.h.buckets.getBucketRetentionConfig(pt).then((function(e){Oe(!1),qe(!0),$e(e.data)})).catch((function(e){qe(!1),Oe(!1),$e(null)}))}),[ye,z,pt]);var gt=function(){t((0,p.d5)(!0)),oe(!0),le(!0),me(!0),fe(!0),Oe(!0)},Et=null===Fe||void 0===Fe?void 0:Fe.status,bt="Unversioned (Default)";return"Enabled"===Et?bt="Versioned":"Suspended"===Et&&(bt="Suspended"),(0,S.jsxs)(i.Fragment,{children:[at&&(0,S.jsx)(A,{open:at,selectedBucket:pt,encryptionEnabled:Me,encryptionCfg:C,closeModalAndRefresh:function(){ct(!1),fe(!0)}}),ut&&(0,S.jsx)(G,{open:ut,selectedBucket:pt,enabled:Ge,cfg:Le,closeModalAndRefresh:function(){dt(!1),Te(!0)}}),Q&&(0,S.jsx)(Z,{bucketName:pt,open:Q,actualPolicy:mt,actualDefinition:vt,closeModalAndRefresh:function(){V(!1),gt()}}),nt&&(0,S.jsx)(F,{bucketName:pt,open:nt,closeModalAndRefresh:function(){st(!1),gt()}}),ht&&(0,S.jsx)(U,{closeVersioningModalAndRefresh:function(e){jt(!1),e&>()},modalOpen:ht,selectedBucket:pt,versioningInfo:Fe,objectLockingEnabled:!!z}),(0,S.jsx)(d.NZf,{separator:!0,sx:{marginBottom:15},children:"Summary"}),(0,S.jsxs)(d.rjZ,{container:!0,children:[(0,S.jsx)(h.s,{scopes:[f.Ft.S3_GET_BUCKET_POLICY,f.Ft.S3_GET_ACTIONS],resource:pt,children:(0,S.jsx)(d.rjZ,{item:!0,xs:12,children:(0,S.jsxs)(d.xuv,{sx:x.nl,children:[(0,S.jsxs)(d.xuv,{sx:x.nl,children:[(0,S.jsx)(h.s,{scopes:[f.Ft.S3_GET_BUCKET_POLICY,f.Ft.S3_GET_ACTIONS],resource:pt,children:(0,S.jsx)(N,{iamScopes:[f.Ft.S3_PUT_BUCKET_POLICY,f.Ft.S3_PUT_ACTIONS],resourceName:pt,property:"Access Policy:",value:mt.toLowerCase(),onEdit:function(){V(!0)},isLoading:re})}),(0,S.jsx)(h.s,{scopes:[f.Ft.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,f.Ft.S3_GET_ACTIONS],resource:pt,children:(0,S.jsx)(N,{iamScopes:[f.Ft.S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION,f.Ft.S3_PUT_ACTIONS],resourceName:pt,property:"Encryption:",value:Me?"Enabled":"Disabled",onEdit:function(){ct(!0)},isLoading:xe})}),(0,S.jsx)(h.s,{scopes:[f.Ft.S3_GET_REPLICATION_CONFIGURATION,f.Ft.S3_GET_ACTIONS],resource:pt,children:(0,S.jsx)(d.kKA,{label:"Replication:",value:(0,S.jsx)(v.Z,{icon:J?(0,S.jsx)(d.E31,{}):(0,S.jsx)(d.dRf,{}),label:(0,S.jsx)("label",{className:"muted",children:J?"Enabled":"Disabled"})})})}),(0,S.jsx)(h.s,{scopes:[f.Ft.S3_GET_BUCKET_OBJECT_LOCK_CONFIGURATION,f.Ft.S3_GET_ACTIONS],resource:pt,children:(0,S.jsx)(d.kKA,{label:"Object Locking:",value:(0,S.jsx)(v.Z,{icon:z?(0,S.jsx)(d.E31,{}):(0,S.jsx)(d.dRf,{}),label:(0,S.jsx)("label",{className:"muted",children:z?"Enabled":"Disabled"})})})}),(0,S.jsx)(d.xuv,{children:(0,S.jsx)(d.kKA,{label:"Tags:",value:(0,S.jsx)(B,{bucketName:pt})})}),(0,S.jsx)(N,{iamScopes:[f.Ft.ADMIN_SET_BUCKET_QUOTA],resourceName:pt,property:"Quota:",value:Ge?"Enabled":"Disabled",onEdit:function(){dt(!0)},isLoading:_e})]}),(0,S.jsxs)(d.xuv,{sx:{display:"grid",gridTemplateColumns:"1fr",alignItems:"flex-start"},children:[(0,S.jsx)(O,{bucketSize:"".concat(P)}),Ge&&Le?(0,S.jsx)(k,{quota:Le}):null]})]})})}),g&&(0,S.jsx)(h.s,{scopes:[f.Ft.S3_GET_BUCKET_VERSIONING,f.Ft.S3_GET_ACTIONS],resource:pt,children:(0,S.jsxs)(d.rjZ,{item:!0,xs:12,sx:{marginTop:5},children:[(0,S.jsx)(d.NZf,{separator:!0,sx:{marginBottom:15},children:"Versioning"}),(0,S.jsx)(d.xuv,{sx:x.nl,children:(0,S.jsxs)(d.xuv,{sx:x.nl,children:[(0,S.jsx)(N,{iamScopes:[f.Ft.S3_PUT_BUCKET_VERSIONING,f.Ft.S3_PUT_ACTIONS],resourceName:pt,property:"Current Status:",value:(0,S.jsx)(d.xuv,{sx:{display:"flex",flexDirection:"column",textDecorationStyle:"initial",placeItems:"flex-start",justifyItems:"flex-start",gap:3},children:(0,S.jsxs)("div",{children:[" ",bt]})}),onEdit:function(){jt(!0)},isLoading:pe,disabled:z}),"Enabled"===(null===Fe||void 0===Fe?void 0:Fe.status)?(0,S.jsx)(_,{versioningState:Fe}):null]})})]})}),z&&(0,S.jsx)(h.s,{scopes:[f.Ft.S3_GET_OBJECT_RETENTION,f.Ft.S3_GET_ACTIONS],resource:pt,children:(0,S.jsxs)(d.rjZ,{item:!0,xs:12,sx:{marginTop:5},children:[(0,S.jsx)(d.NZf,{separator:!0,sx:{marginBottom:15},children:"Retention"}),(0,S.jsx)(d.xuv,{sx:x.nl,children:(0,S.jsxs)(d.xuv,{sx:x.nl,children:[(0,S.jsx)(N,{iamScopes:[f.Ft.ADMIN_SET_BUCKET_QUOTA],resourceName:pt,property:"Retention:",value:We?"Enabled":"Disabled",onEdit:function(){st(!0)},isLoading:ye}),(0,S.jsx)(d.kKA,{label:"Mode:",value:(0,S.jsx)("label",{className:"muted",style:{textTransform:"capitalize"},children:Xe&&Xe.mode?Xe.mode:"-"})}),(0,S.jsx)(d.kKA,{label:"Validity:",value:(0,S.jsxs)("label",{className:"muted",style:{textTransform:"capitalize"},children:[Xe&&Xe.validity," ",Xe&&(1===Xe.validity?null===(e=Xe.unit)||void 0===e?void 0:e.slice(0,-1):Xe.unit)]})})]})})]})})]})]})}},84861:function(e,t,n){n(72791);var s=n(29945),i=n(80184);t.Z=function(e){var t=e.icon,n=void 0===t?null:t,l=e.label,a=void 0===l?null:l;return(0,i.jsxs)(s.xuv,{sx:{display:"flex",alignItems:"center",gap:5,marginTop:3},children:[(0,i.jsx)(s.xuv,{sx:{height:16,width:16,display:"flex",alignItems:"center"},children:n}),(0,i.jsx)(s.xuv,{children:a})]})}}}]); -//# sourceMappingURL=3989.2a6d7b8e.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[3989],{93989:function(e,t,n){n.r(t),n.d(t,{default:function(){return R}});var s=n(29439),i=n(72791),l=n(26181),a=n.n(l),c=n(78687),r=n(57689),o=n(31776),u=n(82342),d=n(29945),x=n(23814),f=n(56087),h=n(38442),j=n(87995),p=n(9859),m=n(44690),v=n(84861),S=n(80184),_=function(e){var t,n,s=e.versioningState,i=void 0===s?{}:s;return(0,S.jsxs)(d.xuv,{sx:{display:"flex",flexDirection:"column",gap:2},children:[(0,S.jsx)(d.xuv,{sx:{fontWeight:"medium",display:"flex",gap:2},children:i.excludeFolders?(0,S.jsx)(v.Z,{icon:i.excludeFolders?(0,S.jsx)(d.E31,{style:{color:"green"}}):(0,S.jsx)(d.dRf,{}),label:(0,S.jsx)("label",{style:{textDecoration:"normal"},children:"Exclude Folders"})}):null}),null!==(t=i.excludedPrefixes)&&void 0!==t&&t.length?(0,S.jsxs)(d.xuv,{sx:{fontWeight:"medium",display:"flex",justifyItems:"end",placeItems:"flex-start",flexDirection:"column",gap:1},children:[(0,S.jsx)(d.xuv,{children:"Excluded Prefixes :"}),(0,S.jsx)("div",{style:{maxHeight:"200px",overflowY:"auto",placeItems:"flex-start",justifyItems:"end",flexDirection:"column",display:"flex"},children:null===(n=i.excludedPrefixes)||void 0===n?void 0:n.map((function(e){return(0,S.jsx)("div",{children:(0,S.jsx)("strong",{children:e.prefix})})}))})]}):null]})},T=n(75578),g=n(1413),E=n(45987),b=["disabled","onClick"],C=function(e){var t=e.disabled,n=e.onClick,s=(0,E.Z)(e,b);return(0,S.jsx)(d.hU,(0,g.Z)((0,g.Z)({size:"small",disabled:t,onClick:n},s),{},{children:(0,S.jsx)(d.dY8,{})}))},I=function(e){var t=e.resourceName,n=e.iamScopes,s=e.secureCmpProps,i=void 0===s?{}:s,l=e.children;return(0,S.jsx)(h.s,(0,g.Z)((0,g.Z)({scopes:n,resource:t,errorProps:{disabled:!0}},i),{},{children:l}))},N=function(e){var t=e.isLoading,n=void 0===t||t,s=e.resourceName,i=void 0===s?"":s,l=e.iamScopes,a=e.secureCmpProps,c=void 0===a?{}:a,r=e.property,o=void 0===r?null:r,u=e.value,x=void 0===u?null:u,f=e.onEdit,h=e.disabled,j=void 0!==h&&h;return(0,S.jsxs)(d.xuv,{sx:{display:"flex",alignItems:"baseline",justifyContent:"flex-start",gap:10},children:[(0,S.jsx)(d.kKA,{label:o,value:(0,S.jsx)(I,{resourceName:i,iamScopes:l,secureCmpProps:c,children:(0,S.jsx)(d.vmT,{isLoading:n,onClick:f,label:x,sx:{fontWeight:"bold"},disabled:j})})}),(0,S.jsx)(I,{resourceName:i,iamScopes:l,secureCmpProps:c,children:(0,S.jsx)(C,{onClick:f,sx:{background:"#f8f8f8",marginLeft:"3px",top:3,"& .min-icon":{width:"16px",height:"16px"}},disabled:j})})]})},y=n(45248),O=function(e){var t=e.bucketSize;return(0,S.jsxs)(d.xuv,{sx:{display:"flex",alignItems:"center","& .min-icon":{height:37,width:37}},children:[(0,S.jsx)(d.Mhr,{}),(0,S.jsxs)(d.xuv,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"center",flexFlow:"column",marginLeft:"20px",fontSize:"19px"},children:[(0,S.jsx)("label",{style:{fontWeight:600},children:"Reported Usage:"}),(0,S.jsx)("label",{children:(0,y.ae)(t)})]})]})},k=function(e){var t=e.quota;return(0,S.jsxs)(d.xuv,{sx:{display:"flex",alignItems:"center","& .min-icon":{height:37,width:37}},children:[(0,S.jsx)(d.sjJ,{}),(0,S.jsxs)(d.xuv,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"center",flexFlow:"column",marginLeft:"20px",fontSize:"19px"},children:[(0,S.jsxs)("label",{style:{fontWeight:600,textTransform:"capitalize"},children:[null===t||void 0===t?void 0:t.type," Quota"]}),(0,S.jsxs)("label",{children:[" ",(0,y.ae)("".concat(null===t||void 0===t?void 0:t.quota),!0)]})]})]})},Z=(0,T.Z)(i.lazy((function(){return n.e(3690).then(n.bind(n,33690))}))),F=(0,T.Z)(i.lazy((function(){return n.e(1604).then(n.bind(n,1604))}))),A=(0,T.Z)(i.lazy((function(){return n.e(9952).then(n.bind(n,99952))}))),U=(0,T.Z)(i.lazy((function(){return n.e(402).then(n.bind(n,70402))}))),B=(0,T.Z)(i.lazy((function(){return n.e(1705).then(n.bind(n,71705))}))),G=(0,T.Z)(i.lazy((function(){return Promise.all([n.e(911),n.e(1581)]).then(n.bind(n,1581))}))),R=function(){var e,t=(0,m.TL)(),n=(0,r.UO)(),l=(0,c.v9)(p.HQ),T=(0,c.v9)(p.G6),g=(0,c.v9)(j.N5),E=(0,i.useState)(null),b=(0,s.Z)(E,2),C=b[0],I=b[1],y=(0,i.useState)("0"),R=(0,s.Z)(y,2),P=R[0],K=R[1],L=(0,i.useState)(!1),D=(0,s.Z)(L,2),z=D[0],w=D[1],M=(0,i.useState)(!1),Y=(0,s.Z)(M,2),Q=Y[0],V=Y[1],W=(0,i.useState)(!1),q=(0,s.Z)(W,2),J=q[0],H=q[1],X=(0,i.useState)(!0),$=(0,s.Z)(X,2),ee=$[0],te=$[1],ne=(0,i.useState)(!0),se=(0,s.Z)(ne,2),ie=se[0],le=se[1],ae=(0,i.useState)(!0),ce=(0,s.Z)(ae,2),re=ce[0],oe=ce[1],ue=(0,i.useState)(!0),de=(0,s.Z)(ue,2),xe=de[0],fe=de[1],he=(0,i.useState)(!0),je=(0,s.Z)(he,2),pe=je[0],me=je[1],ve=(0,i.useState)(!0),Se=(0,s.Z)(ve,2),_e=Se[0],Te=Se[1],ge=(0,i.useState)(!0),Ee=(0,s.Z)(ge,2),be=Ee[0],Ce=Ee[1],Ie=(0,i.useState)(!0),Ne=(0,s.Z)(Ie,2),ye=Ne[0],Oe=Ne[1],ke=(0,i.useState)(),Ze=(0,s.Z)(ke,2),Fe=Ze[0],Ae=Ze[1],Ue=(0,i.useState)(!1),Be=(0,s.Z)(Ue,2),Ge=Be[0],Re=Be[1],Pe=(0,i.useState)(null),Ke=(0,s.Z)(Pe,2),Le=Ke[0],De=Ke[1],ze=(0,i.useState)(!1),we=(0,s.Z)(ze,2),Me=we[0],Ye=we[1],Qe=(0,i.useState)(!1),Ve=(0,s.Z)(Qe,2),We=Ve[0],qe=Ve[1],Je=(0,i.useState)(null),He=(0,s.Z)(Je,2),Xe=He[0],$e=He[1],et=(0,i.useState)(!1),tt=(0,s.Z)(et,2),nt=tt[0],st=tt[1],it=(0,i.useState)(!1),lt=(0,s.Z)(it,2),at=lt[0],ct=lt[1],rt=(0,i.useState)(!1),ot=(0,s.Z)(rt,2),ut=ot[0],dt=ot[1],xt=(0,i.useState)(!1),ft=(0,s.Z)(xt,2),ht=ft[0],jt=ft[1];(0,i.useEffect)((function(){t((0,j.Sc)("bucket_detail_summary"))}),[]);var pt=n.bucketName||"",mt="n/a",vt="";null!==T&&T.access&&T.definition&&(mt=T.access,vt=T.definition);var St=(0,h.F)(pt,[f.Ft.S3_GET_BUCKET_OBJECT_LOCK_CONFIGURATION,f.Ft.S3_GET_ACTIONS]),_t=(0,h.F)(pt,[f.Ft.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,f.Ft.S3_GET_ACTIONS]),Tt=(0,h.F)(pt,[f.Ft.ADMIN_GET_BUCKET_QUOTA]);(0,i.useEffect)((function(){oe(!!l)}),[l,oe]),(0,i.useEffect)((function(){xe&&(_t?o.h.buckets.getBucketEncryptionInfo(pt).then((function(e){e.data.algorithm&&(Ye(!0),I(e.data)),fe(!1)})).catch((function(e){"The server side encryption configuration was not found"===(e=(0,u.g)(e.error)).errorMessage&&(Ye(!1),I(null)),fe(!1)})):(Ye(!1),I(null),fe(!1)))}),[xe,pt,_t]),(0,i.useEffect)((function(){pe&&g&&o.h.buckets.getBucketVersioning(pt).then((function(e){Ae(e.data),me(!1)})).catch((function(e){t((0,j.Ih)((0,u.g)(e.error))),me(!1)}))}),[pe,t,pt,g]),(0,i.useEffect)((function(){_e&&g&&(Tt?o.h.buckets.getBucketQuota(pt).then((function(e){De(e.data),e.data.quota?Re(!0):Re(!1),Te(!1)})).catch((function(e){t((0,j.Ih)((0,u.g)(e.error))),Re(!1),Te(!1)})):(Re(!1),Te(!1)))}),[_e,me,t,pt,g,Tt]),(0,i.useEffect)((function(){pe&&g&&(St?o.h.buckets.getBucketObjectLockingStatus(pt).then((function(e){w(e.data.object_locking_enabled),te(!1)})).catch((function(e){t((0,j.Ih)((0,u.g)(e.error))),te(!1)})):te(!1))}),[ee,t,pt,pe,g,St]),(0,i.useEffect)((function(){ie&&o.h.buckets.listBuckets().then((function(e){var t=a()(e.data,"buckets",[]).find((function(e){return e.name===pt})),n=a()(t,"size","0");le(!1),K(n)})).catch((function(e){le(!1),t((0,j.Ih)((0,u.g)(e.error)))}))}),[ie,t,pt]),(0,i.useEffect)((function(){be&&g&&o.h.buckets.getBucketReplication(pt).then((function(e){var t=e.data.rules?e.data.rules:[];H(t.length>0),Ce(!1)})).catch((function(e){t((0,j.Ih)((0,u.g)(e.error))),Ce(!1)}))}),[be,t,pt,g]),(0,i.useEffect)((function(){ye&&z&&o.h.buckets.getBucketRetentionConfig(pt).then((function(e){Oe(!1),qe(!0),$e(e.data)})).catch((function(e){qe(!1),Oe(!1),$e(null)}))}),[ye,z,pt]);var gt=function(){t((0,p.d5)(!0)),oe(!0),le(!0),me(!0),fe(!0),Oe(!0)},Et=null===Fe||void 0===Fe?void 0:Fe.status,bt="Unversioned (Default)";return"Enabled"===Et?bt="Versioned":"Suspended"===Et&&(bt="Suspended"),(0,S.jsxs)(i.Fragment,{children:[at&&(0,S.jsx)(A,{open:at,selectedBucket:pt,encryptionEnabled:Me,encryptionCfg:C,closeModalAndRefresh:function(){ct(!1),fe(!0)}}),ut&&(0,S.jsx)(G,{open:ut,selectedBucket:pt,enabled:Ge,cfg:Le,closeModalAndRefresh:function(){dt(!1),Te(!0)}}),Q&&(0,S.jsx)(Z,{bucketName:pt,open:Q,actualPolicy:mt,actualDefinition:vt,closeModalAndRefresh:function(){V(!1),gt()}}),nt&&(0,S.jsx)(F,{bucketName:pt,open:nt,closeModalAndRefresh:function(){st(!1),gt()}}),ht&&(0,S.jsx)(U,{closeVersioningModalAndRefresh:function(e){jt(!1),e&>()},modalOpen:ht,selectedBucket:pt,versioningInfo:Fe,objectLockingEnabled:!!z}),(0,S.jsx)(d.NZf,{separator:!0,sx:{marginBottom:15},children:"Summary"}),(0,S.jsxs)(d.rjZ,{container:!0,children:[(0,S.jsx)(h.s,{scopes:[f.Ft.S3_GET_BUCKET_POLICY,f.Ft.S3_GET_ACTIONS],resource:pt,children:(0,S.jsx)(d.rjZ,{item:!0,xs:12,children:(0,S.jsxs)(d.xuv,{sx:x.nl,children:[(0,S.jsxs)(d.xuv,{sx:x.nl,children:[(0,S.jsx)(h.s,{scopes:[f.Ft.S3_GET_BUCKET_POLICY,f.Ft.S3_GET_ACTIONS],resource:pt,children:(0,S.jsx)(N,{iamScopes:[f.Ft.S3_PUT_BUCKET_POLICY,f.Ft.S3_PUT_ACTIONS],resourceName:pt,property:"Access Policy:",value:mt.toLowerCase(),onEdit:function(){V(!0)},isLoading:re})}),(0,S.jsx)(h.s,{scopes:[f.Ft.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,f.Ft.S3_GET_ACTIONS],resource:pt,children:(0,S.jsx)(N,{iamScopes:[f.Ft.S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION,f.Ft.S3_PUT_ACTIONS],resourceName:pt,property:"Encryption:",value:Me?"Enabled":"Disabled",onEdit:function(){ct(!0)},isLoading:xe})}),(0,S.jsx)(h.s,{scopes:[f.Ft.S3_GET_REPLICATION_CONFIGURATION,f.Ft.S3_GET_ACTIONS],resource:pt,children:(0,S.jsx)(d.kKA,{label:"Replication:",value:(0,S.jsx)(v.Z,{icon:J?(0,S.jsx)(d.E31,{}):(0,S.jsx)(d.dRf,{}),label:(0,S.jsx)("label",{className:"muted",children:J?"Enabled":"Disabled"})})})}),(0,S.jsx)(h.s,{scopes:[f.Ft.S3_GET_BUCKET_OBJECT_LOCK_CONFIGURATION,f.Ft.S3_GET_ACTIONS],resource:pt,children:(0,S.jsx)(d.kKA,{label:"Object Locking:",value:(0,S.jsx)(v.Z,{icon:z?(0,S.jsx)(d.E31,{}):(0,S.jsx)(d.dRf,{}),label:(0,S.jsx)("label",{className:"muted",children:z?"Enabled":"Disabled"})})})}),(0,S.jsx)(d.xuv,{children:(0,S.jsx)(d.kKA,{label:"Tags:",value:(0,S.jsx)(B,{bucketName:pt})})}),(0,S.jsx)(N,{iamScopes:[f.Ft.ADMIN_SET_BUCKET_QUOTA],resourceName:pt,property:"Quota:",value:Ge?"Enabled":"Disabled",onEdit:function(){dt(!0)},isLoading:_e})]}),(0,S.jsxs)(d.xuv,{sx:{display:"grid",gridTemplateColumns:"1fr",alignItems:"flex-start"},children:[(0,S.jsx)(O,{bucketSize:"".concat(P)}),Ge&&Le?(0,S.jsx)(k,{quota:Le}):null]})]})})}),g&&(0,S.jsx)(h.s,{scopes:[f.Ft.S3_GET_BUCKET_VERSIONING,f.Ft.S3_GET_ACTIONS],resource:pt,children:(0,S.jsxs)(d.rjZ,{item:!0,xs:12,sx:{marginTop:5},children:[(0,S.jsx)(d.NZf,{separator:!0,sx:{marginBottom:15},children:"Versioning"}),(0,S.jsx)(d.xuv,{sx:x.nl,children:(0,S.jsxs)(d.xuv,{sx:x.nl,children:[(0,S.jsx)(N,{iamScopes:[f.Ft.S3_PUT_BUCKET_VERSIONING,f.Ft.S3_PUT_ACTIONS],resourceName:pt,property:"Current Status:",value:(0,S.jsx)(d.xuv,{sx:{display:"flex",flexDirection:"column",textDecorationStyle:"initial",placeItems:"flex-start",justifyItems:"flex-start",gap:3},children:(0,S.jsxs)("div",{children:[" ",bt]})}),onEdit:function(){jt(!0)},isLoading:pe,disabled:z}),"Enabled"===(null===Fe||void 0===Fe?void 0:Fe.status)?(0,S.jsx)(_,{versioningState:Fe}):null]})})]})}),z&&(0,S.jsx)(h.s,{scopes:[f.Ft.S3_GET_OBJECT_RETENTION,f.Ft.S3_GET_ACTIONS],resource:pt,children:(0,S.jsxs)(d.rjZ,{item:!0,xs:12,sx:{marginTop:5},children:[(0,S.jsx)(d.NZf,{separator:!0,sx:{marginBottom:15},children:"Retention"}),(0,S.jsx)(d.xuv,{sx:x.nl,children:(0,S.jsxs)(d.xuv,{sx:x.nl,children:[(0,S.jsx)(N,{iamScopes:[f.Ft.ADMIN_SET_BUCKET_QUOTA],resourceName:pt,property:"Retention:",value:We?"Enabled":"Disabled",onEdit:function(){st(!0)},isLoading:ye}),(0,S.jsx)(d.kKA,{label:"Mode:",value:(0,S.jsx)("label",{className:"muted",style:{textTransform:"capitalize"},children:Xe&&Xe.mode?Xe.mode:"-"})}),(0,S.jsx)(d.kKA,{label:"Validity:",value:(0,S.jsxs)("label",{className:"muted",style:{textTransform:"capitalize"},children:[Xe&&Xe.validity," ",Xe&&(1===Xe.validity?null===(e=Xe.unit)||void 0===e?void 0:e.slice(0,-1):Xe.unit)]})})]})})]})})]})]})}},84861:function(e,t,n){n(72791);var s=n(29945),i=n(80184);t.Z=function(e){var t=e.icon,n=void 0===t?null:t,l=e.label,a=void 0===l?null:l;return(0,i.jsxs)(s.xuv,{sx:{display:"flex",alignItems:"center",gap:5,marginTop:3},children:[(0,i.jsx)(s.xuv,{sx:{height:16,width:16,display:"flex",alignItems:"center"},children:n}),(0,i.jsx)(s.xuv,{children:a})]})}}}]); +//# sourceMappingURL=3989.7bc0050a.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/3989.2a6d7b8e.chunk.js.map b/portal-ui/build/static/js/3989.7bc0050a.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/3989.2a6d7b8e.chunk.js.map rename to portal-ui/build/static/js/3989.7bc0050a.chunk.js.map index 44f36dcee1..379ee6a31d 100644 --- a/portal-ui/build/static/js/3989.2a6d7b8e.chunk.js.map +++ b/portal-ui/build/static/js/3989.7bc0050a.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/3989.2a6d7b8e.chunk.js","mappings":"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","sources":["screens/Console/Buckets/VersioningInfo.tsx","screens/Console/Buckets/BucketDetails/SummaryItems/EditActionButton.tsx","screens/Console/Buckets/BucketDetails/SummaryItems/EditablePropertyItem.tsx","screens/Console/Buckets/BucketDetails/SummaryItems/ReportedUsage.tsx","screens/Console/Buckets/BucketDetails/SummaryItems/BucketQuotaSize.tsx","screens/Console/Buckets/BucketDetails/BucketSummaryPanel.tsx","screens/Console/Buckets/BucketDetails/SummaryItems/LabelWithIcon.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { DisabledIcon, EnabledIcon, Box } from \"mds\";\nimport { BucketVersioningResponse } from \"api/consoleApi\";\nimport LabelWithIcon from \"./BucketDetails/SummaryItems/LabelWithIcon\";\n\nconst VersioningInfo = ({\n versioningState = {},\n}: {\n versioningState?: BucketVersioningResponse;\n}) => {\n return (\n \n \n {versioningState.excludeFolders ? (\n \n ) : (\n \n )\n }\n label={\n \n }\n />\n ) : null}\n \n {versioningState.excludedPrefixes?.length ? (\n \n Excluded Prefixes :\n \n {versioningState.excludedPrefixes?.map((it) => (\n
    \n {it.prefix}\n
    \n ))}\n \n \n ) : null}\n \n );\n};\n\nexport default VersioningInfo;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { EditIcon, IconButton } from \"mds\";\n\ntype EditActionButtonProps = {\n disabled?: boolean;\n onClick: () => void | any;\n [x: string]: any;\n};\n\nconst EditActionButton = ({\n disabled,\n onClick,\n ...restProps\n}: EditActionButtonProps) => {\n return (\n \n \n \n );\n};\n\nexport default EditActionButton;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { ActionLink, Box, ValuePair } from \"mds\";\nimport { SecureComponent } from \"../../../../../common/SecureComponent\";\n\nimport EditActionButton from \"./EditActionButton\";\n\ntype EditablePropertyItemProps = {\n isLoading: boolean;\n resourceName: string;\n iamScopes: string[];\n property: any;\n value: any;\n onEdit: () => void;\n secureCmpProps?: Record;\n disabled?: boolean;\n};\n\nconst SecureAction = ({\n resourceName,\n iamScopes,\n secureCmpProps = {},\n children,\n}: {\n resourceName: string;\n iamScopes: string[];\n children: any;\n secureCmpProps?: Record;\n}) => {\n return (\n \n {children}\n \n );\n};\n\nconst EditablePropertyItem = ({\n isLoading = true,\n resourceName = \"\",\n iamScopes,\n secureCmpProps = {},\n property = null,\n value = null,\n onEdit,\n disabled = false,\n}: EditablePropertyItemProps) => {\n return (\n \n \n \n \n }\n />\n \n \n \n \n );\n};\n\nexport default EditablePropertyItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { ReportedUsageFullIcon, Box } from \"mds\";\nimport { niceBytes } from \"../../../../../common/utils\";\n\nconst ReportedUsage = ({ bucketSize }: { bucketSize: string }) => {\n return (\n \n \n\n \n \n Reported Usage:\n \n \n \n \n );\n};\n\nexport default ReportedUsage;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { HardBucketQuotaIcon, Box } from \"mds\";\nimport { niceBytes } from \"../../../../../common/utils\";\n\nconst BucketQuotaSize = ({ quota }: { quota: any }) => {\n return (\n \n \n \n \n {quota?.type} Quota\n \n \n \n \n );\n};\n\nexport default BucketQuotaSize;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router-dom\";\nimport { api } from \"api\";\nimport {\n BucketEncryptionInfo,\n BucketQuota,\n BucketVersioningResponse,\n GetBucketRetentionConfig,\n} from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport {\n Box,\n DisabledIcon,\n EnabledIcon,\n Grid,\n SectionTitle,\n ValuePair,\n} from \"mds\";\nimport { twoColCssGridLayoutConfig } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { IAM_SCOPES } from \"../../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../common/SecureComponent\";\nimport {\n selDistSet,\n setErrorSnackMessage,\n setHelpName,\n} from \"../../../../systemSlice\";\nimport {\n selBucketDetailsInfo,\n selBucketDetailsLoading,\n setBucketDetailsLoad,\n} from \"./bucketDetailsSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport VersioningInfo from \"../VersioningInfo\";\nimport withSuspense from \"../../Common/Components/withSuspense\";\nimport LabelWithIcon from \"./SummaryItems/LabelWithIcon\";\nimport EditablePropertyItem from \"./SummaryItems/EditablePropertyItem\";\nimport ReportedUsage from \"./SummaryItems/ReportedUsage\";\nimport BucketQuotaSize from \"./SummaryItems/BucketQuotaSize\";\n\nconst SetAccessPolicy = withSuspense(\n React.lazy(() => import(\"./SetAccessPolicy\")),\n);\nconst SetRetentionConfig = withSuspense(\n React.lazy(() => import(\"./SetRetentionConfig\")),\n);\nconst EnableBucketEncryption = withSuspense(\n React.lazy(() => import(\"./EnableBucketEncryption\")),\n);\nconst EnableVersioningModal = withSuspense(\n React.lazy(() => import(\"./EnableVersioningModal\")),\n);\nconst BucketTags = withSuspense(\n React.lazy(() => import(\"./SummaryItems/BucketTags\")),\n);\nconst EnableQuota = withSuspense(React.lazy(() => import(\"./EnableQuota\")));\n\nconst BucketSummary = () => {\n const dispatch = useAppDispatch();\n const params = useParams();\n\n const loadingBucket = useSelector(selBucketDetailsLoading);\n const bucketInfo = useSelector(selBucketDetailsInfo);\n const distributedSetup = useSelector(selDistSet);\n\n const [encryptionCfg, setEncryptionCfg] =\n useState(null);\n const [bucketSize, setBucketSize] = useState(\"0\");\n const [hasObjectLocking, setHasObjectLocking] = useState(\n false,\n );\n const [accessPolicyScreenOpen, setAccessPolicyScreenOpen] =\n useState(false);\n const [replicationRules, setReplicationRules] = useState(false);\n const [loadingObjectLocking, setLoadingLocking] = useState(true);\n const [loadingSize, setLoadingSize] = useState(true);\n const [bucketLoading, setBucketLoading] = useState(true);\n const [loadingEncryption, setLoadingEncryption] = useState(true);\n const [loadingVersioning, setLoadingVersioning] = useState(true);\n const [loadingQuota, setLoadingQuota] = useState(true);\n const [loadingReplication, setLoadingReplication] = useState(true);\n const [loadingRetention, setLoadingRetention] = useState(true);\n const [versioningInfo, setVersioningInfo] =\n useState();\n const [quotaEnabled, setQuotaEnabled] = useState(false);\n const [quota, setQuota] = useState(null);\n const [encryptionEnabled, setEncryptionEnabled] = useState(false);\n const [retentionEnabled, setRetentionEnabled] = useState(false);\n const [retentionConfig, setRetentionConfig] =\n useState(null);\n const [retentionConfigOpen, setRetentionConfigOpen] =\n useState(false);\n const [enableEncryptionScreenOpen, setEnableEncryptionScreenOpen] =\n useState(false);\n const [enableQuotaScreenOpen, setEnableQuotaScreenOpen] =\n useState(false);\n const [enableVersioningOpen, setEnableVersioningOpen] =\n useState(false);\n\n useEffect(() => {\n dispatch(setHelpName(\"bucket_detail_summary\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const bucketName = params.bucketName || \"\";\n\n let accessPolicy = \"n/a\";\n let policyDefinition = \"\";\n\n if (bucketInfo !== null && bucketInfo.access && bucketInfo.definition) {\n accessPolicy = bucketInfo.access;\n policyDefinition = bucketInfo.definition;\n }\n\n const displayGetBucketObjectLockConfiguration = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_OBJECT_LOCK_CONFIGURATION,\n IAM_SCOPES.S3_GET_ACTIONS,\n ]);\n\n const displayGetBucketEncryptionConfiguration = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,\n IAM_SCOPES.S3_GET_ACTIONS,\n ]);\n\n const displayGetBucketQuota = hasPermission(bucketName, [\n IAM_SCOPES.ADMIN_GET_BUCKET_QUOTA,\n ]);\n\n useEffect(() => {\n if (loadingBucket) {\n setBucketLoading(true);\n } else {\n setBucketLoading(false);\n }\n }, [loadingBucket, setBucketLoading]);\n\n useEffect(() => {\n if (loadingEncryption) {\n if (displayGetBucketEncryptionConfiguration) {\n api.buckets\n .getBucketEncryptionInfo(bucketName)\n .then((res) => {\n if (res.data.algorithm) {\n setEncryptionEnabled(true);\n setEncryptionCfg(res.data);\n }\n setLoadingEncryption(false);\n })\n .catch((err) => {\n err = errorToHandler(err.error);\n if (\n err.errorMessage ===\n \"The server side encryption configuration was not found\"\n ) {\n setEncryptionEnabled(false);\n setEncryptionCfg(null);\n }\n setLoadingEncryption(false);\n });\n } else {\n setEncryptionEnabled(false);\n setEncryptionCfg(null);\n setLoadingEncryption(false);\n }\n }\n }, [loadingEncryption, bucketName, displayGetBucketEncryptionConfiguration]);\n\n useEffect(() => {\n if (loadingVersioning && distributedSetup) {\n api.buckets\n .getBucketVersioning(bucketName)\n .then((res) => {\n setVersioningInfo(res.data);\n setLoadingVersioning(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setLoadingVersioning(false);\n });\n }\n }, [loadingVersioning, dispatch, bucketName, distributedSetup]);\n\n useEffect(() => {\n if (loadingQuota && distributedSetup) {\n if (displayGetBucketQuota) {\n api.buckets\n .getBucketQuota(bucketName)\n .then((res) => {\n setQuota(res.data);\n if (res.data.quota) {\n setQuotaEnabled(true);\n } else {\n setQuotaEnabled(false);\n }\n setLoadingQuota(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setQuotaEnabled(false);\n setLoadingQuota(false);\n });\n } else {\n setQuotaEnabled(false);\n setLoadingQuota(false);\n }\n }\n }, [\n loadingQuota,\n setLoadingVersioning,\n dispatch,\n bucketName,\n distributedSetup,\n displayGetBucketQuota,\n ]);\n\n useEffect(() => {\n if (loadingVersioning && distributedSetup) {\n if (displayGetBucketObjectLockConfiguration) {\n api.buckets\n .getBucketObjectLockingStatus(bucketName)\n .then((res) => {\n setHasObjectLocking(res.data.object_locking_enabled);\n setLoadingLocking(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setLoadingLocking(false);\n });\n } else {\n setLoadingLocking(false);\n }\n }\n }, [\n loadingObjectLocking,\n dispatch,\n bucketName,\n loadingVersioning,\n distributedSetup,\n displayGetBucketObjectLockConfiguration,\n ]);\n\n useEffect(() => {\n if (loadingSize) {\n api.buckets\n .listBuckets()\n .then((res) => {\n const resBuckets = get(res.data, \"buckets\", []);\n\n const bucketInfo = resBuckets.find(\n (bucket) => bucket.name === bucketName,\n );\n\n const size = get(bucketInfo, \"size\", \"0\");\n\n setLoadingSize(false);\n setBucketSize(size);\n })\n .catch((err) => {\n setLoadingSize(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n }, [loadingSize, dispatch, bucketName]);\n\n useEffect(() => {\n if (loadingReplication && distributedSetup) {\n api.buckets\n .getBucketReplication(bucketName)\n .then((res) => {\n const r = res.data.rules ? res.data.rules : [];\n setReplicationRules(r.length > 0);\n setLoadingReplication(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setLoadingReplication(false);\n });\n }\n }, [loadingReplication, dispatch, bucketName, distributedSetup]);\n\n useEffect(() => {\n if (loadingRetention && hasObjectLocking) {\n api.buckets\n .getBucketRetentionConfig(bucketName)\n .then((res) => {\n setLoadingRetention(false);\n setRetentionEnabled(true);\n setRetentionConfig(res.data);\n })\n .catch((err) => {\n setRetentionEnabled(false);\n setLoadingRetention(false);\n setRetentionConfig(null);\n });\n }\n }, [loadingRetention, hasObjectLocking, bucketName]);\n\n const loadAllBucketData = () => {\n dispatch(setBucketDetailsLoad(true));\n setBucketLoading(true);\n setLoadingSize(true);\n setLoadingVersioning(true);\n setLoadingEncryption(true);\n setLoadingRetention(true);\n };\n\n const setBucketVersioning = () => {\n setEnableVersioningOpen(true);\n };\n const setBucketQuota = () => {\n setEnableQuotaScreenOpen(true);\n };\n\n const closeEnableBucketEncryption = () => {\n setEnableEncryptionScreenOpen(false);\n setLoadingEncryption(true);\n };\n const closeEnableBucketQuota = () => {\n setEnableQuotaScreenOpen(false);\n setLoadingQuota(true);\n };\n\n const closeSetAccessPolicy = () => {\n setAccessPolicyScreenOpen(false);\n loadAllBucketData();\n };\n\n const closeRetentionConfig = () => {\n setRetentionConfigOpen(false);\n loadAllBucketData();\n };\n\n const closeEnableVersioning = (refresh: boolean) => {\n setEnableVersioningOpen(false);\n if (refresh) {\n loadAllBucketData();\n }\n };\n\n let versioningStatus = versioningInfo?.status;\n let versioningText = \"Unversioned (Default)\";\n if (versioningStatus === \"Enabled\") {\n versioningText = \"Versioned\";\n } else if (versioningStatus === \"Suspended\") {\n versioningText = \"Suspended\";\n }\n\n return (\n \n {enableEncryptionScreenOpen && (\n \n )}\n {enableQuotaScreenOpen && (\n \n )}\n {accessPolicyScreenOpen && (\n \n )}\n {retentionConfigOpen && (\n \n )}\n {enableVersioningOpen && (\n \n )}\n\n \n Summary\n \n \n \n \n \n \n \n {\n setAccessPolicyScreenOpen(true);\n }}\n isLoading={bucketLoading}\n />\n \n\n \n {\n setEnableEncryptionScreenOpen(true);\n }}\n isLoading={loadingEncryption}\n />\n \n\n \n : \n }\n label={\n \n }\n />\n }\n />\n \n\n \n : \n }\n label={\n \n }\n />\n }\n />\n \n \n }\n />\n \n \n \n \n \n {quotaEnabled && quota ? (\n \n ) : null}\n \n \n \n \n\n {distributedSetup && (\n \n \n \n Versioning\n \n\n \n \n \n
    {versioningText}
    \n
    \n }\n onEdit={setBucketVersioning}\n isLoading={loadingVersioning}\n disabled={hasObjectLocking}\n />\n\n {versioningInfo?.status === \"Enabled\" ? (\n \n ) : null}\n
    \n \n
    \n \n )}\n\n {hasObjectLocking && (\n \n \n \n Retention\n \n\n \n \n {\n setRetentionConfigOpen(true);\n }}\n isLoading={loadingRetention}\n />\n\n \n {retentionConfig && retentionConfig.mode\n ? retentionConfig.mode\n : \"-\"}\n \n }\n />\n \n {retentionConfig && retentionConfig.validity}{\" \"}\n {retentionConfig &&\n (retentionConfig.validity === 1\n ? retentionConfig.unit?.slice(0, -1)\n : retentionConfig.unit)}\n \n }\n />\n \n \n \n \n )}\n
    \n
    \n );\n};\n\nexport default BucketSummary;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"mds\";\n\ntype LabelWithIconProps = {\n icon: React.ReactNode | null;\n label: React.ReactNode | null;\n};\n\nconst LabelWithIcon = ({ icon = null, label = null }: LabelWithIconProps) => {\n return (\n \n \n {icon}\n \n {label}\n \n );\n};\n\nexport default LabelWithIcon;\n"],"names":["_ref","_versioningState$excl","_versioningState$excl2","_ref$versioningState","versioningState","_jsxs","Box","sx","display","flexDirection","gap","children","_jsx","fontWeight","excludeFolders","LabelWithIcon","icon","EnabledIcon","style","color","DisabledIcon","label","textDecoration","excludedPrefixes","length","justifyItems","placeItems","maxHeight","overflowY","map","it","prefix","disabled","onClick","restProps","_objectWithoutProperties","_excluded","IconButton","_objectSpread","size","EditIcon","SecureAction","resourceName","iamScopes","_ref$secureCmpProps","secureCmpProps","SecureComponent","scopes","resource","errorProps","_ref2","_ref2$isLoading","isLoading","_ref2$resourceName","_ref2$secureCmpProps","_ref2$property","property","_ref2$value","value","onEdit","_ref2$disabled","alignItems","justifyContent","ValuePair","ActionLink","EditActionButton","background","marginLeft","top","width","height","bucketSize","ReportedUsageFullIcon","flexFlow","fontSize","niceBytes","quota","HardBucketQuotaIcon","textTransform","type","concat","SetAccessPolicy","withSuspense","React","SetRetentionConfig","EnableBucketEncryption","EnableVersioningModal","BucketTags","EnableQuota","_retentionConfig$unit","dispatch","useAppDispatch","params","useParams","loadingBucket","useSelector","selBucketDetailsLoading","bucketInfo","selBucketDetailsInfo","distributedSetup","selDistSet","_useState","useState","_useState2","_slicedToArray","encryptionCfg","setEncryptionCfg","_useState3","_useState4","setBucketSize","_useState5","_useState6","hasObjectLocking","setHasObjectLocking","_useState7","_useState8","accessPolicyScreenOpen","setAccessPolicyScreenOpen","_useState9","_useState10","replicationRules","setReplicationRules","_useState11","_useState12","loadingObjectLocking","setLoadingLocking","_useState13","_useState14","loadingSize","setLoadingSize","_useState15","_useState16","bucketLoading","setBucketLoading","_useState17","_useState18","loadingEncryption","setLoadingEncryption","_useState19","_useState20","loadingVersioning","setLoadingVersioning","_useState21","_useState22","loadingQuota","setLoadingQuota","_useState23","_useState24","loadingReplication","setLoadingReplication","_useState25","_useState26","loadingRetention","setLoadingRetention","_useState27","_useState28","versioningInfo","setVersioningInfo","_useState29","_useState30","quotaEnabled","setQuotaEnabled","_useState31","_useState32","setQuota","_useState33","_useState34","encryptionEnabled","setEncryptionEnabled","_useState35","_useState36","retentionEnabled","setRetentionEnabled","_useState37","_useState38","retentionConfig","setRetentionConfig","_useState39","_useState40","retentionConfigOpen","setRetentionConfigOpen","_useState41","_useState42","enableEncryptionScreenOpen","setEnableEncryptionScreenOpen","_useState43","_useState44","enableQuotaScreenOpen","setEnableQuotaScreenOpen","_useState45","_useState46","enableVersioningOpen","setEnableVersioningOpen","useEffect","setHelpName","bucketName","accessPolicy","policyDefinition","access","definition","displayGetBucketObjectLockConfiguration","hasPermission","IAM_SCOPES","S3_GET_BUCKET_OBJECT_LOCK_CONFIGURATION","S3_GET_ACTIONS","displayGetBucketEncryptionConfiguration","S3_GET_BUCKET_ENCRYPTION_CONFIGURATION","displayGetBucketQuota","ADMIN_GET_BUCKET_QUOTA","api","buckets","getBucketEncryptionInfo","then","res","data","algorithm","catch","err","errorToHandler","error","errorMessage","getBucketVersioning","setErrorSnackMessage","getBucketQuota","getBucketObjectLockingStatus","object_locking_enabled","listBuckets","get","find","bucket","name","getBucketReplication","r","rules","getBucketRetentionConfig","loadAllBucketData","setBucketDetailsLoad","versioningStatus","status","versioningText","Fragment","open","selectedBucket","closeModalAndRefresh","enabled","cfg","actualPolicy","actualDefinition","closeVersioningModalAndRefresh","refresh","modalOpen","objectLockingEnabled","SectionTitle","separator","marginBottom","Grid","container","S3_GET_BUCKET_POLICY","item","xs","twoColCssGridLayoutConfig","EditablePropertyItem","S3_PUT_BUCKET_POLICY","S3_PUT_ACTIONS","toLowerCase","S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION","S3_GET_REPLICATION_CONFIGURATION","className","ADMIN_SET_BUCKET_QUOTA","gridTemplateColumns","ReportedUsage","BucketQuotaSize","S3_GET_BUCKET_VERSIONING","marginTop","S3_PUT_BUCKET_VERSIONING","textDecorationStyle","VersioningInfo","S3_GET_OBJECT_RETENTION","mode","validity","unit","slice","_ref$icon","_ref$label"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/3989.7bc0050a.chunk.js","mappings":"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","sources":["screens/Console/Buckets/VersioningInfo.tsx","screens/Console/Buckets/BucketDetails/SummaryItems/EditActionButton.tsx","screens/Console/Buckets/BucketDetails/SummaryItems/EditablePropertyItem.tsx","screens/Console/Buckets/BucketDetails/SummaryItems/ReportedUsage.tsx","screens/Console/Buckets/BucketDetails/SummaryItems/BucketQuotaSize.tsx","screens/Console/Buckets/BucketDetails/BucketSummaryPanel.tsx","screens/Console/Buckets/BucketDetails/SummaryItems/LabelWithIcon.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { DisabledIcon, EnabledIcon, Box } from \"mds\";\nimport { BucketVersioningResponse } from \"api/consoleApi\";\nimport LabelWithIcon from \"./BucketDetails/SummaryItems/LabelWithIcon\";\n\nconst VersioningInfo = ({\n versioningState = {},\n}: {\n versioningState?: BucketVersioningResponse;\n}) => {\n return (\n \n \n {versioningState.excludeFolders ? (\n \n ) : (\n \n )\n }\n label={\n \n }\n />\n ) : null}\n \n {versioningState.excludedPrefixes?.length ? (\n \n Excluded Prefixes :\n \n {versioningState.excludedPrefixes?.map((it) => (\n
    \n {it.prefix}\n
    \n ))}\n \n \n ) : null}\n \n );\n};\n\nexport default VersioningInfo;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { EditIcon, IconButton } from \"mds\";\n\ntype EditActionButtonProps = {\n disabled?: boolean;\n onClick: () => void | any;\n [x: string]: any;\n};\n\nconst EditActionButton = ({\n disabled,\n onClick,\n ...restProps\n}: EditActionButtonProps) => {\n return (\n \n \n \n );\n};\n\nexport default EditActionButton;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { ActionLink, Box, ValuePair } from \"mds\";\nimport { SecureComponent } from \"../../../../../common/SecureComponent\";\n\nimport EditActionButton from \"./EditActionButton\";\n\ntype EditablePropertyItemProps = {\n isLoading: boolean;\n resourceName: string;\n iamScopes: string[];\n property: any;\n value: any;\n onEdit: () => void;\n secureCmpProps?: Record;\n disabled?: boolean;\n};\n\nconst SecureAction = ({\n resourceName,\n iamScopes,\n secureCmpProps = {},\n children,\n}: {\n resourceName: string;\n iamScopes: string[];\n children: any;\n secureCmpProps?: Record;\n}) => {\n return (\n \n {children}\n \n );\n};\n\nconst EditablePropertyItem = ({\n isLoading = true,\n resourceName = \"\",\n iamScopes,\n secureCmpProps = {},\n property = null,\n value = null,\n onEdit,\n disabled = false,\n}: EditablePropertyItemProps) => {\n return (\n \n \n \n \n }\n />\n \n \n \n \n );\n};\n\nexport default EditablePropertyItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { ReportedUsageFullIcon, Box } from \"mds\";\nimport { niceBytes } from \"../../../../../common/utils\";\n\nconst ReportedUsage = ({ bucketSize }: { bucketSize: string }) => {\n return (\n \n \n\n \n \n Reported Usage:\n \n \n \n \n );\n};\n\nexport default ReportedUsage;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { HardBucketQuotaIcon, Box } from \"mds\";\nimport { niceBytes } from \"../../../../../common/utils\";\n\nconst BucketQuotaSize = ({ quota }: { quota: any }) => {\n return (\n \n \n \n \n {quota?.type} Quota\n \n \n \n \n );\n};\n\nexport default BucketQuotaSize;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router-dom\";\nimport { api } from \"api\";\nimport {\n BucketEncryptionInfo,\n BucketQuota,\n BucketVersioningResponse,\n GetBucketRetentionConfig,\n} from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport {\n Box,\n DisabledIcon,\n EnabledIcon,\n Grid,\n SectionTitle,\n ValuePair,\n} from \"mds\";\nimport { twoColCssGridLayoutConfig } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { IAM_SCOPES } from \"../../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../common/SecureComponent\";\nimport {\n selDistSet,\n setErrorSnackMessage,\n setHelpName,\n} from \"../../../../systemSlice\";\nimport {\n selBucketDetailsInfo,\n selBucketDetailsLoading,\n setBucketDetailsLoad,\n} from \"./bucketDetailsSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport VersioningInfo from \"../VersioningInfo\";\nimport withSuspense from \"../../Common/Components/withSuspense\";\nimport LabelWithIcon from \"./SummaryItems/LabelWithIcon\";\nimport EditablePropertyItem from \"./SummaryItems/EditablePropertyItem\";\nimport ReportedUsage from \"./SummaryItems/ReportedUsage\";\nimport BucketQuotaSize from \"./SummaryItems/BucketQuotaSize\";\n\nconst SetAccessPolicy = withSuspense(\n React.lazy(() => import(\"./SetAccessPolicy\")),\n);\nconst SetRetentionConfig = withSuspense(\n React.lazy(() => import(\"./SetRetentionConfig\")),\n);\nconst EnableBucketEncryption = withSuspense(\n React.lazy(() => import(\"./EnableBucketEncryption\")),\n);\nconst EnableVersioningModal = withSuspense(\n React.lazy(() => import(\"./EnableVersioningModal\")),\n);\nconst BucketTags = withSuspense(\n React.lazy(() => import(\"./SummaryItems/BucketTags\")),\n);\nconst EnableQuota = withSuspense(React.lazy(() => import(\"./EnableQuota\")));\n\nconst BucketSummary = () => {\n const dispatch = useAppDispatch();\n const params = useParams();\n\n const loadingBucket = useSelector(selBucketDetailsLoading);\n const bucketInfo = useSelector(selBucketDetailsInfo);\n const distributedSetup = useSelector(selDistSet);\n\n const [encryptionCfg, setEncryptionCfg] =\n useState(null);\n const [bucketSize, setBucketSize] = useState(\"0\");\n const [hasObjectLocking, setHasObjectLocking] = useState(\n false,\n );\n const [accessPolicyScreenOpen, setAccessPolicyScreenOpen] =\n useState(false);\n const [replicationRules, setReplicationRules] = useState(false);\n const [loadingObjectLocking, setLoadingLocking] = useState(true);\n const [loadingSize, setLoadingSize] = useState(true);\n const [bucketLoading, setBucketLoading] = useState(true);\n const [loadingEncryption, setLoadingEncryption] = useState(true);\n const [loadingVersioning, setLoadingVersioning] = useState(true);\n const [loadingQuota, setLoadingQuota] = useState(true);\n const [loadingReplication, setLoadingReplication] = useState(true);\n const [loadingRetention, setLoadingRetention] = useState(true);\n const [versioningInfo, setVersioningInfo] =\n useState();\n const [quotaEnabled, setQuotaEnabled] = useState(false);\n const [quota, setQuota] = useState(null);\n const [encryptionEnabled, setEncryptionEnabled] = useState(false);\n const [retentionEnabled, setRetentionEnabled] = useState(false);\n const [retentionConfig, setRetentionConfig] =\n useState(null);\n const [retentionConfigOpen, setRetentionConfigOpen] =\n useState(false);\n const [enableEncryptionScreenOpen, setEnableEncryptionScreenOpen] =\n useState(false);\n const [enableQuotaScreenOpen, setEnableQuotaScreenOpen] =\n useState(false);\n const [enableVersioningOpen, setEnableVersioningOpen] =\n useState(false);\n\n useEffect(() => {\n dispatch(setHelpName(\"bucket_detail_summary\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const bucketName = params.bucketName || \"\";\n\n let accessPolicy = \"n/a\";\n let policyDefinition = \"\";\n\n if (bucketInfo !== null && bucketInfo.access && bucketInfo.definition) {\n accessPolicy = bucketInfo.access;\n policyDefinition = bucketInfo.definition;\n }\n\n const displayGetBucketObjectLockConfiguration = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_OBJECT_LOCK_CONFIGURATION,\n IAM_SCOPES.S3_GET_ACTIONS,\n ]);\n\n const displayGetBucketEncryptionConfiguration = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,\n IAM_SCOPES.S3_GET_ACTIONS,\n ]);\n\n const displayGetBucketQuota = hasPermission(bucketName, [\n IAM_SCOPES.ADMIN_GET_BUCKET_QUOTA,\n ]);\n\n useEffect(() => {\n if (loadingBucket) {\n setBucketLoading(true);\n } else {\n setBucketLoading(false);\n }\n }, [loadingBucket, setBucketLoading]);\n\n useEffect(() => {\n if (loadingEncryption) {\n if (displayGetBucketEncryptionConfiguration) {\n api.buckets\n .getBucketEncryptionInfo(bucketName)\n .then((res) => {\n if (res.data.algorithm) {\n setEncryptionEnabled(true);\n setEncryptionCfg(res.data);\n }\n setLoadingEncryption(false);\n })\n .catch((err) => {\n err = errorToHandler(err.error);\n if (\n err.errorMessage ===\n \"The server side encryption configuration was not found\"\n ) {\n setEncryptionEnabled(false);\n setEncryptionCfg(null);\n }\n setLoadingEncryption(false);\n });\n } else {\n setEncryptionEnabled(false);\n setEncryptionCfg(null);\n setLoadingEncryption(false);\n }\n }\n }, [loadingEncryption, bucketName, displayGetBucketEncryptionConfiguration]);\n\n useEffect(() => {\n if (loadingVersioning && distributedSetup) {\n api.buckets\n .getBucketVersioning(bucketName)\n .then((res) => {\n setVersioningInfo(res.data);\n setLoadingVersioning(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setLoadingVersioning(false);\n });\n }\n }, [loadingVersioning, dispatch, bucketName, distributedSetup]);\n\n useEffect(() => {\n if (loadingQuota && distributedSetup) {\n if (displayGetBucketQuota) {\n api.buckets\n .getBucketQuota(bucketName)\n .then((res) => {\n setQuota(res.data);\n if (res.data.quota) {\n setQuotaEnabled(true);\n } else {\n setQuotaEnabled(false);\n }\n setLoadingQuota(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setQuotaEnabled(false);\n setLoadingQuota(false);\n });\n } else {\n setQuotaEnabled(false);\n setLoadingQuota(false);\n }\n }\n }, [\n loadingQuota,\n setLoadingVersioning,\n dispatch,\n bucketName,\n distributedSetup,\n displayGetBucketQuota,\n ]);\n\n useEffect(() => {\n if (loadingVersioning && distributedSetup) {\n if (displayGetBucketObjectLockConfiguration) {\n api.buckets\n .getBucketObjectLockingStatus(bucketName)\n .then((res) => {\n setHasObjectLocking(res.data.object_locking_enabled);\n setLoadingLocking(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setLoadingLocking(false);\n });\n } else {\n setLoadingLocking(false);\n }\n }\n }, [\n loadingObjectLocking,\n dispatch,\n bucketName,\n loadingVersioning,\n distributedSetup,\n displayGetBucketObjectLockConfiguration,\n ]);\n\n useEffect(() => {\n if (loadingSize) {\n api.buckets\n .listBuckets()\n .then((res) => {\n const resBuckets = get(res.data, \"buckets\", []);\n\n const bucketInfo = resBuckets.find(\n (bucket) => bucket.name === bucketName,\n );\n\n const size = get(bucketInfo, \"size\", \"0\");\n\n setLoadingSize(false);\n setBucketSize(size);\n })\n .catch((err) => {\n setLoadingSize(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n }, [loadingSize, dispatch, bucketName]);\n\n useEffect(() => {\n if (loadingReplication && distributedSetup) {\n api.buckets\n .getBucketReplication(bucketName)\n .then((res) => {\n const r = res.data.rules ? res.data.rules : [];\n setReplicationRules(r.length > 0);\n setLoadingReplication(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setLoadingReplication(false);\n });\n }\n }, [loadingReplication, dispatch, bucketName, distributedSetup]);\n\n useEffect(() => {\n if (loadingRetention && hasObjectLocking) {\n api.buckets\n .getBucketRetentionConfig(bucketName)\n .then((res) => {\n setLoadingRetention(false);\n setRetentionEnabled(true);\n setRetentionConfig(res.data);\n })\n .catch((err) => {\n setRetentionEnabled(false);\n setLoadingRetention(false);\n setRetentionConfig(null);\n });\n }\n }, [loadingRetention, hasObjectLocking, bucketName]);\n\n const loadAllBucketData = () => {\n dispatch(setBucketDetailsLoad(true));\n setBucketLoading(true);\n setLoadingSize(true);\n setLoadingVersioning(true);\n setLoadingEncryption(true);\n setLoadingRetention(true);\n };\n\n const setBucketVersioning = () => {\n setEnableVersioningOpen(true);\n };\n const setBucketQuota = () => {\n setEnableQuotaScreenOpen(true);\n };\n\n const closeEnableBucketEncryption = () => {\n setEnableEncryptionScreenOpen(false);\n setLoadingEncryption(true);\n };\n const closeEnableBucketQuota = () => {\n setEnableQuotaScreenOpen(false);\n setLoadingQuota(true);\n };\n\n const closeSetAccessPolicy = () => {\n setAccessPolicyScreenOpen(false);\n loadAllBucketData();\n };\n\n const closeRetentionConfig = () => {\n setRetentionConfigOpen(false);\n loadAllBucketData();\n };\n\n const closeEnableVersioning = (refresh: boolean) => {\n setEnableVersioningOpen(false);\n if (refresh) {\n loadAllBucketData();\n }\n };\n\n let versioningStatus = versioningInfo?.status;\n let versioningText = \"Unversioned (Default)\";\n if (versioningStatus === \"Enabled\") {\n versioningText = \"Versioned\";\n } else if (versioningStatus === \"Suspended\") {\n versioningText = \"Suspended\";\n }\n\n return (\n \n {enableEncryptionScreenOpen && (\n \n )}\n {enableQuotaScreenOpen && (\n \n )}\n {accessPolicyScreenOpen && (\n \n )}\n {retentionConfigOpen && (\n \n )}\n {enableVersioningOpen && (\n \n )}\n\n \n Summary\n \n \n \n \n \n \n \n {\n setAccessPolicyScreenOpen(true);\n }}\n isLoading={bucketLoading}\n />\n \n\n \n {\n setEnableEncryptionScreenOpen(true);\n }}\n isLoading={loadingEncryption}\n />\n \n\n \n : \n }\n label={\n \n }\n />\n }\n />\n \n\n \n : \n }\n label={\n \n }\n />\n }\n />\n \n \n }\n />\n \n \n \n \n \n {quotaEnabled && quota ? (\n \n ) : null}\n \n \n \n \n\n {distributedSetup && (\n \n \n \n Versioning\n \n\n \n \n \n
    {versioningText}
    \n
    \n }\n onEdit={setBucketVersioning}\n isLoading={loadingVersioning}\n disabled={hasObjectLocking}\n />\n\n {versioningInfo?.status === \"Enabled\" ? (\n \n ) : null}\n
    \n \n
    \n \n )}\n\n {hasObjectLocking && (\n \n \n \n Retention\n \n\n \n \n {\n setRetentionConfigOpen(true);\n }}\n isLoading={loadingRetention}\n />\n\n \n {retentionConfig && retentionConfig.mode\n ? retentionConfig.mode\n : \"-\"}\n \n }\n />\n \n {retentionConfig && retentionConfig.validity}{\" \"}\n {retentionConfig &&\n (retentionConfig.validity === 1\n ? retentionConfig.unit?.slice(0, -1)\n : retentionConfig.unit)}\n \n }\n />\n \n \n \n \n )}\n
    \n
    \n );\n};\n\nexport default BucketSummary;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"mds\";\n\ntype LabelWithIconProps = {\n icon: React.ReactNode | null;\n label: React.ReactNode | null;\n};\n\nconst LabelWithIcon = ({ icon = null, label = null }: LabelWithIconProps) => {\n return (\n \n \n {icon}\n \n {label}\n \n );\n};\n\nexport default LabelWithIcon;\n"],"names":["_ref","_versioningState$excl","_versioningState$excl2","_ref$versioningState","versioningState","_jsxs","Box","sx","display","flexDirection","gap","children","_jsx","fontWeight","excludeFolders","LabelWithIcon","icon","EnabledIcon","style","color","DisabledIcon","label","textDecoration","excludedPrefixes","length","justifyItems","placeItems","maxHeight","overflowY","map","it","prefix","disabled","onClick","restProps","_objectWithoutProperties","_excluded","IconButton","_objectSpread","size","EditIcon","SecureAction","resourceName","iamScopes","_ref$secureCmpProps","secureCmpProps","SecureComponent","scopes","resource","errorProps","_ref2","_ref2$isLoading","isLoading","_ref2$resourceName","_ref2$secureCmpProps","_ref2$property","property","_ref2$value","value","onEdit","_ref2$disabled","alignItems","justifyContent","ValuePair","ActionLink","EditActionButton","background","marginLeft","top","width","height","bucketSize","ReportedUsageFullIcon","flexFlow","fontSize","niceBytes","quota","HardBucketQuotaIcon","textTransform","type","concat","SetAccessPolicy","withSuspense","React","SetRetentionConfig","EnableBucketEncryption","EnableVersioningModal","BucketTags","EnableQuota","_retentionConfig$unit","dispatch","useAppDispatch","params","useParams","loadingBucket","useSelector","selBucketDetailsLoading","bucketInfo","selBucketDetailsInfo","distributedSetup","selDistSet","_useState","useState","_useState2","_slicedToArray","encryptionCfg","setEncryptionCfg","_useState3","_useState4","setBucketSize","_useState5","_useState6","hasObjectLocking","setHasObjectLocking","_useState7","_useState8","accessPolicyScreenOpen","setAccessPolicyScreenOpen","_useState9","_useState10","replicationRules","setReplicationRules","_useState11","_useState12","loadingObjectLocking","setLoadingLocking","_useState13","_useState14","loadingSize","setLoadingSize","_useState15","_useState16","bucketLoading","setBucketLoading","_useState17","_useState18","loadingEncryption","setLoadingEncryption","_useState19","_useState20","loadingVersioning","setLoadingVersioning","_useState21","_useState22","loadingQuota","setLoadingQuota","_useState23","_useState24","loadingReplication","setLoadingReplication","_useState25","_useState26","loadingRetention","setLoadingRetention","_useState27","_useState28","versioningInfo","setVersioningInfo","_useState29","_useState30","quotaEnabled","setQuotaEnabled","_useState31","_useState32","setQuota","_useState33","_useState34","encryptionEnabled","setEncryptionEnabled","_useState35","_useState36","retentionEnabled","setRetentionEnabled","_useState37","_useState38","retentionConfig","setRetentionConfig","_useState39","_useState40","retentionConfigOpen","setRetentionConfigOpen","_useState41","_useState42","enableEncryptionScreenOpen","setEnableEncryptionScreenOpen","_useState43","_useState44","enableQuotaScreenOpen","setEnableQuotaScreenOpen","_useState45","_useState46","enableVersioningOpen","setEnableVersioningOpen","useEffect","setHelpName","bucketName","accessPolicy","policyDefinition","access","definition","displayGetBucketObjectLockConfiguration","hasPermission","IAM_SCOPES","S3_GET_BUCKET_OBJECT_LOCK_CONFIGURATION","S3_GET_ACTIONS","displayGetBucketEncryptionConfiguration","S3_GET_BUCKET_ENCRYPTION_CONFIGURATION","displayGetBucketQuota","ADMIN_GET_BUCKET_QUOTA","api","buckets","getBucketEncryptionInfo","then","res","data","algorithm","catch","err","errorToHandler","error","errorMessage","getBucketVersioning","setErrorSnackMessage","getBucketQuota","getBucketObjectLockingStatus","object_locking_enabled","listBuckets","get","find","bucket","name","getBucketReplication","r","rules","getBucketRetentionConfig","loadAllBucketData","setBucketDetailsLoad","versioningStatus","status","versioningText","Fragment","open","selectedBucket","closeModalAndRefresh","enabled","cfg","actualPolicy","actualDefinition","closeVersioningModalAndRefresh","refresh","modalOpen","objectLockingEnabled","SectionTitle","separator","marginBottom","Grid","container","S3_GET_BUCKET_POLICY","item","xs","twoColCssGridLayoutConfig","EditablePropertyItem","S3_PUT_BUCKET_POLICY","S3_PUT_ACTIONS","toLowerCase","S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION","S3_GET_REPLICATION_CONFIGURATION","className","ADMIN_SET_BUCKET_QUOTA","gridTemplateColumns","ReportedUsage","BucketQuotaSize","S3_GET_BUCKET_VERSIONING","marginTop","S3_PUT_BUCKET_VERSIONING","textDecorationStyle","VersioningInfo","S3_GET_OBJECT_RETENTION","mode","validity","unit","slice","_ref$icon","_ref$label"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/402.b31b43fa.chunk.js b/portal-ui/build/static/js/402.64814df4.chunk.js similarity index 95% rename from portal-ui/build/static/js/402.b31b43fa.chunk.js rename to portal-ui/build/static/js/402.64814df4.chunk.js index 55c248c810..150b02ea2c 100644 --- a/portal-ui/build/static/js/402.b31b43fa.chunk.js +++ b/portal-ui/build/static/js/402.64814df4.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[402],{70402:function(e,n,t){t.r(n);var i=t(29439),r=t(72791),a=t(29945),l=t(31776),o=t(82342),c=t(87995),s=t(81551),u=t(59447),d=t(23814),f=t(80184);n.default=function(e){var n=e.closeVersioningModalAndRefresh,t=e.modalOpen,x=e.selectedBucket,h=e.versioningInfo,v=void 0===h?{}:h,g=e.objectLockingEnabled,p=(0,s.TL)(),m=(0,r.useState)(!1),j=(0,i.Z)(m,2),b=j[0],k=j[1],C=(0,r.useState)("Enabled"===(null===v||void 0===v?void 0:v.status)),w=(0,i.Z)(C,2),y=w[0],S=w[1],Z=(0,r.useState)(!(null===v||void 0===v||!v.excludeFolders)),B=(0,i.Z)(Z,2),E=B[0],I=B[1],F=(0,r.useState)(function(e){var n=null===e||void 0===e?void 0:e.excludedPrefixes;return n?n.map((function(e){return e.prefix})).join(","):""}(v)),P=(0,i.Z)(F,2),A=P[0],V=P[1];return(0,f.jsx)(a.cFD,{onClose:function(){return n(!1)},open:t,title:"Versioning on Bucket",children:(0,f.jsxs)(a.ltY,{withBorders:!1,containerPadding:!1,children:[(0,f.jsx)(a.rsf,{id:"activateVersioning",label:"Versioning Status",checked:y,onChange:function(e){S(e.target.checked)},indicatorLabels:["Enabled","Disabled"]}),y&&!g&&(0,f.jsxs)(r.Fragment,{children:[(0,f.jsx)(a.rsf,{id:"excludeFolders",label:"Exclude Folders",checked:E,onChange:function(e){I(e.target.checked)},indicatorLabels:["Enabled","Disabled"]}),(0,f.jsx)(u.Z,{elements:A,label:"Excluded Prefixes",name:"excludedPrefixes",onChange:function(e){var n="";n=Array.isArray(e)?e.join(","):e,V(n)},withBorder:!0})]}),(0,f.jsxs)(a.xuv,{sx:d.ID.modalButtonBar,children:[(0,f.jsx)(a.zxk,{id:"clear",type:"button",variant:"regular",color:"primary",onClick:function(){V(""),I(!1),S(!1)},label:"Clear"}),(0,f.jsx)(a.zxk,{type:"submit",variant:"callAction",onClick:function(){b||(k(!0),l.h.buckets.setBucketVersioning(x,{enabled:y,excludeFolders:!!y&&E,excludePrefixes:y?A.split(",").filter((function(e){return""!==e.trim()})):[]}).then((function(){k(!1),n(!0)})).catch((function(e){k(!1),p((0,c.Ih)((0,o.g)(e.error)))})))},id:"saveTag",label:"Save"})]})]})})}},59447:function(e,n,t){var i=t(93433),r=t(29439),a=t(72791),l=t(26181),o=t.n(l),c=t(29945),s=t(80184);n.Z=function(e){var n=e.elements,t=e.name,l=e.label,u=e.tooltip,d=void 0===u?"":u,f=e.commonPlaceholder,x=void 0===f?"":f,h=e.onChange,v=e.withBorder,g=void 0!==v&&v,p=(0,a.useState)([""]),m=(0,r.Z)(p,2),j=m[0],b=m[1],k=(0,a.createRef)();(0,a.useEffect)((function(){if(1===j.length&&""===j[0]&&n&&""!==n){var e=n.split(",");e.push(""),b(e)}}),[n,j]),(0,a.useEffect)((function(){if(j.length>1){var e=k.current;e&&e.scrollIntoView(!1)}}),[j,k]);var C=(0,a.useCallback)((function(e){h(e)}),[h]),w=(0,a.useRef)(!0);(0,a.useEffect)((function(){if(w.current)w.current=!1;else{var e=j.filter((function(e){return""!==e.trim()})).join(",");C(e)}}),[j]);var y=function(e){e.persist();var n=(0,i.Z)(j),t=o()(e.target,"dataset.index","0");n[parseInt(t)]=e.target.value,b(n)},S=j.map((function(e,n){return(0,s.jsx)(c.Wzg,{id:"".concat(t,"-").concat(n.toString()),label:"",name:"".concat(t,"-").concat(n.toString()),value:j[n],onChange:y,index:n,placeholder:x,overlayIcon:n===j.length-1?(0,s.jsx)(c.dtP,{}):null,overlayAction:function(){!function(e){if(""!==e[e.length-1].trim()){var n=(0,i.Z)(e);n.push(""),b(n)}}(j)}},"csv-multi-".concat(t,"-").concat(n.toString()))}));return(0,s.jsx)(a.Fragment,{children:(0,s.jsxs)(c.xuv,{sx:{display:"flex"},className:"inputItem",children:[(0,s.jsxs)(c.AZs,{sx:{alignItems:"flex-start"},children:[(0,s.jsx)("span",{children:l}),""!==d&&(0,s.jsx)(c.xuv,{sx:{marginLeft:5,display:"flex",alignItems:"center","& .min-icon":{width:13}},children:(0,s.jsx)(c.ua7,{tooltip:d,placement:"top",children:(0,s.jsx)(c.xuv,{className:d,children:(0,s.jsx)(c.byK,{})})})})]}),(0,s.jsxs)(c.xuv,{withBorders:g,sx:{width:"100%",overflowY:"auto",height:150,position:"relative"},children:[S,(0,s.jsx)("div",{ref:k})]})]})})}}}]); -//# sourceMappingURL=402.b31b43fa.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[402],{70402:function(e,n,t){t.r(n);var i=t(29439),r=t(72791),a=t(29945),l=t(31776),o=t(82342),c=t(87995),s=t(44690),u=t(59447),d=t(23814),f=t(80184);n.default=function(e){var n=e.closeVersioningModalAndRefresh,t=e.modalOpen,x=e.selectedBucket,h=e.versioningInfo,v=void 0===h?{}:h,g=e.objectLockingEnabled,p=(0,s.TL)(),m=(0,r.useState)(!1),j=(0,i.Z)(m,2),b=j[0],k=j[1],C=(0,r.useState)("Enabled"===(null===v||void 0===v?void 0:v.status)),w=(0,i.Z)(C,2),y=w[0],S=w[1],Z=(0,r.useState)(!(null===v||void 0===v||!v.excludeFolders)),B=(0,i.Z)(Z,2),E=B[0],I=B[1],F=(0,r.useState)(function(e){var n=null===e||void 0===e?void 0:e.excludedPrefixes;return n?n.map((function(e){return e.prefix})).join(","):""}(v)),P=(0,i.Z)(F,2),A=P[0],V=P[1];return(0,f.jsx)(a.cFD,{onClose:function(){return n(!1)},open:t,title:"Versioning on Bucket",children:(0,f.jsxs)(a.ltY,{withBorders:!1,containerPadding:!1,children:[(0,f.jsx)(a.rsf,{id:"activateVersioning",label:"Versioning Status",checked:y,onChange:function(e){S(e.target.checked)},indicatorLabels:["Enabled","Disabled"]}),y&&!g&&(0,f.jsxs)(r.Fragment,{children:[(0,f.jsx)(a.rsf,{id:"excludeFolders",label:"Exclude Folders",checked:E,onChange:function(e){I(e.target.checked)},indicatorLabels:["Enabled","Disabled"]}),(0,f.jsx)(u.Z,{elements:A,label:"Excluded Prefixes",name:"excludedPrefixes",onChange:function(e){var n="";n=Array.isArray(e)?e.join(","):e,V(n)},withBorder:!0})]}),(0,f.jsxs)(a.xuv,{sx:d.ID.modalButtonBar,children:[(0,f.jsx)(a.zxk,{id:"clear",type:"button",variant:"regular",color:"primary",onClick:function(){V(""),I(!1),S(!1)},label:"Clear"}),(0,f.jsx)(a.zxk,{type:"submit",variant:"callAction",onClick:function(){b||(k(!0),l.h.buckets.setBucketVersioning(x,{enabled:y,excludeFolders:!!y&&E,excludePrefixes:y?A.split(",").filter((function(e){return""!==e.trim()})):[]}).then((function(){k(!1),n(!0)})).catch((function(e){k(!1),p((0,c.Ih)((0,o.g)(e.error)))})))},id:"saveTag",label:"Save"})]})]})})}},59447:function(e,n,t){var i=t(93433),r=t(29439),a=t(72791),l=t(26181),o=t.n(l),c=t(29945),s=t(80184);n.Z=function(e){var n=e.elements,t=e.name,l=e.label,u=e.tooltip,d=void 0===u?"":u,f=e.commonPlaceholder,x=void 0===f?"":f,h=e.onChange,v=e.withBorder,g=void 0!==v&&v,p=(0,a.useState)([""]),m=(0,r.Z)(p,2),j=m[0],b=m[1],k=(0,a.createRef)();(0,a.useEffect)((function(){if(1===j.length&&""===j[0]&&n&&""!==n){var e=n.split(",");e.push(""),b(e)}}),[n,j]),(0,a.useEffect)((function(){if(j.length>1){var e=k.current;e&&e.scrollIntoView(!1)}}),[j,k]);var C=(0,a.useCallback)((function(e){h(e)}),[h]),w=(0,a.useRef)(!0);(0,a.useEffect)((function(){if(w.current)w.current=!1;else{var e=j.filter((function(e){return""!==e.trim()})).join(",");C(e)}}),[j]);var y=function(e){e.persist();var n=(0,i.Z)(j),t=o()(e.target,"dataset.index","0");n[parseInt(t)]=e.target.value,b(n)},S=j.map((function(e,n){return(0,s.jsx)(c.Wzg,{id:"".concat(t,"-").concat(n.toString()),label:"",name:"".concat(t,"-").concat(n.toString()),value:j[n],onChange:y,index:n,placeholder:x,overlayIcon:n===j.length-1?(0,s.jsx)(c.dtP,{}):null,overlayAction:function(){!function(e){if(""!==e[e.length-1].trim()){var n=(0,i.Z)(e);n.push(""),b(n)}}(j)}},"csv-multi-".concat(t,"-").concat(n.toString()))}));return(0,s.jsx)(a.Fragment,{children:(0,s.jsxs)(c.xuv,{sx:{display:"flex"},className:"inputItem",children:[(0,s.jsxs)(c.AZs,{sx:{alignItems:"flex-start"},children:[(0,s.jsx)("span",{children:l}),""!==d&&(0,s.jsx)(c.xuv,{sx:{marginLeft:5,display:"flex",alignItems:"center","& .min-icon":{width:13}},children:(0,s.jsx)(c.ua7,{tooltip:d,placement:"top",children:(0,s.jsx)(c.xuv,{className:d,children:(0,s.jsx)(c.byK,{})})})})]}),(0,s.jsxs)(c.xuv,{withBorders:g,sx:{width:"100%",overflowY:"auto",height:150,position:"relative"},children:[S,(0,s.jsx)("div",{ref:k})]})]})})}}}]); +//# sourceMappingURL=402.64814df4.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/402.b31b43fa.chunk.js.map b/portal-ui/build/static/js/402.64814df4.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/402.b31b43fa.chunk.js.map rename to portal-ui/build/static/js/402.64814df4.chunk.js.map index a5e0c3d01b..aa36c1f227 100644 --- a/portal-ui/build/static/js/402.b31b43fa.chunk.js.map +++ b/portal-ui/build/static/js/402.64814df4.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/402.b31b43fa.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/EnableVersioningModal.tsx","screens/Console/Common/FormComponents/CSVMultiSelector/CSVMultiSelector.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { Box, Button, FormLayout, ModalBox, Switch } from \"mds\";\nimport { BucketVersioningResponse } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport CSVMultiSelector from \"../../Common/FormComponents/CSVMultiSelector/CSVMultiSelector\";\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\n\ninterface IVersioningEventProps {\n closeVersioningModalAndRefresh: (refresh: boolean) => void;\n modalOpen: boolean;\n selectedBucket: string;\n versioningInfo: BucketVersioningResponse | undefined;\n objectLockingEnabled: boolean;\n}\n\nconst parseExcludedPrefixes = (\n bucketVersioning: BucketVersioningResponse | undefined,\n) => {\n const excludedPrefixes = bucketVersioning?.excludedPrefixes;\n\n if (excludedPrefixes) {\n return excludedPrefixes.map((item) => item.prefix).join(\",\");\n }\n\n return \"\";\n};\n\nconst EnableVersioningModal = ({\n closeVersioningModalAndRefresh,\n modalOpen,\n selectedBucket,\n versioningInfo = {},\n objectLockingEnabled,\n}: IVersioningEventProps) => {\n const dispatch = useAppDispatch();\n\n const [versioningLoading, setVersioningLoading] = useState(false);\n const [versionState, setVersionState] = useState(\n versioningInfo?.status === \"Enabled\",\n );\n const [excludeFolders, setExcludeFolders] = useState(\n !!versioningInfo?.excludeFolders,\n );\n const [excludedPrefixes, setExcludedPrefixes] = useState(\n parseExcludedPrefixes(versioningInfo),\n );\n\n const enableVersioning = () => {\n if (versioningLoading) {\n return;\n }\n setVersioningLoading(true);\n\n api.buckets\n .setBucketVersioning(selectedBucket, {\n enabled: versionState,\n excludeFolders: versionState ? excludeFolders : false,\n excludePrefixes: versionState\n ? excludedPrefixes.split(\",\").filter((item) => item.trim() !== \"\")\n : [],\n })\n .then(() => {\n setVersioningLoading(false);\n closeVersioningModalAndRefresh(true);\n })\n .catch((err) => {\n setVersioningLoading(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n const resetForm = () => {\n setExcludedPrefixes(\"\");\n setExcludeFolders(false);\n setVersionState(false);\n };\n\n return (\n closeVersioningModalAndRefresh(false)}\n open={modalOpen}\n title={`Versioning on Bucket`}\n >\n \n ) => {\n setVersionState(e.target.checked);\n }}\n indicatorLabels={[\"Enabled\", \"Disabled\"]}\n />\n {versionState && !objectLockingEnabled && (\n \n ) => {\n setExcludeFolders(e.target.checked);\n }}\n indicatorLabels={[\"Enabled\", \"Disabled\"]}\n />\n {\n let valCh = \"\";\n\n if (Array.isArray(value)) {\n valCh = value.join(\",\");\n } else {\n valCh = value;\n }\n setExcludedPrefixes(valCh);\n }}\n withBorder={true}\n />\n \n )}\n \n \n \n \n \n \n );\n};\n\nexport default EnableVersioningModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more 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, {\n ChangeEvent,\n createRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n Fragment,\n} from \"react\";\nimport get from \"lodash/get\";\nimport { AddIcon, Box, HelpIcon, InputBox, InputLabel, Tooltip } from \"mds\";\n\ninterface ICSVMultiSelector {\n elements: string;\n name: string;\n label: string;\n tooltip?: string;\n commonPlaceholder?: string;\n withBorder?: boolean;\n onChange: (elements: string) => void;\n}\n\nconst CSVMultiSelector = ({\n elements,\n name,\n label,\n tooltip = \"\",\n commonPlaceholder = \"\",\n onChange,\n withBorder = false,\n}: ICSVMultiSelector) => {\n const [currentElements, setCurrentElements] = useState([\"\"]);\n const bottomList = createRef();\n\n // Use effect to get the initial values from props\n useEffect(() => {\n if (\n currentElements.length === 1 &&\n currentElements[0] === \"\" &&\n elements &&\n elements !== \"\"\n ) {\n const elementsSplit = elements.split(\",\");\n elementsSplit.push(\"\");\n\n setCurrentElements(elementsSplit);\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [elements, currentElements]);\n\n // Use effect to send new values to onChange\n useEffect(() => {\n if (currentElements.length > 1) {\n const refScroll = bottomList.current;\n if (refScroll) {\n refScroll.scrollIntoView(false);\n }\n }\n }, [currentElements, bottomList]);\n\n const onChangeCallback = useCallback(\n (newString: string) => {\n onChange(newString);\n },\n [onChange],\n );\n\n // We avoid multiple re-renders / hang issue typing too fast\n const firstUpdate = useRef(true);\n useEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = false;\n return;\n }\n const elementsString = currentElements\n .filter((element) => element.trim() !== \"\")\n .join(\",\");\n\n onChangeCallback(elementsString);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentElements]);\n\n // If the last input is not empty, we add a new one\n const addEmptyLine = (elementsUp: string[]) => {\n if (elementsUp[elementsUp.length - 1].trim() !== \"\") {\n const cpList = [...elementsUp];\n cpList.push(\"\");\n setCurrentElements(cpList);\n }\n };\n\n // Onchange function for input box, we get the dataset-index & only update that value in the array\n const onChangeElement = (e: ChangeEvent) => {\n e.persist();\n\n let updatedElement = [...currentElements];\n const index = get(e.target, \"dataset.index\", \"0\");\n const indexNum = parseInt(index);\n updatedElement[indexNum] = e.target.value;\n\n setCurrentElements(updatedElement);\n };\n\n const inputs = currentElements.map((element, index) => {\n return (\n : null}\n overlayAction={() => {\n addEmptyLine(currentElements);\n }}\n />\n );\n });\n\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n \n \n \n \n \n \n \n )}\n \n \n {inputs}\n
    \n \n \n \n );\n};\nexport default CSVMultiSelector;\n"],"names":["_ref","closeVersioningModalAndRefresh","modalOpen","selectedBucket","_ref$versioningInfo","versioningInfo","objectLockingEnabled","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","versioningLoading","setVersioningLoading","_useState3","status","_useState4","versionState","setVersionState","_useState5","excludeFolders","_useState6","setExcludeFolders","_useState7","bucketVersioning","excludedPrefixes","map","item","prefix","join","parseExcludedPrefixes","_useState8","setExcludedPrefixes","_jsx","ModalBox","onClose","open","title","children","_jsxs","FormLayout","withBorders","containerPadding","Switch","id","label","checked","onChange","e","target","indicatorLabels","Fragment","CSVMultiSelector","elements","name","value","valCh","Array","isArray","withBorder","Box","sx","modalStyleUtils","modalButtonBar","Button","type","variant","color","onClick","api","buckets","setBucketVersioning","enabled","excludePrefixes","split","filter","trim","then","catch","err","setErrorSnackMessage","errorToHandler","error","_ref$tooltip","tooltip","_ref$commonPlaceholde","commonPlaceholder","_ref$withBorder","currentElements","setCurrentElements","bottomList","createRef","useEffect","length","elementsSplit","push","refScroll","current","scrollIntoView","onChangeCallback","useCallback","newString","firstUpdate","useRef","elementsString","element","onChangeElement","persist","updatedElement","_toConsumableArray","index","get","parseInt","inputs","InputBox","concat","toString","placeholder","overlayIcon","AddIcon","overlayAction","elementsUp","cpList","addEmptyLine","display","className","InputLabel","alignItems","marginLeft","width","Tooltip","placement","HelpIcon","overflowY","height","position","ref"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/402.64814df4.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/EnableVersioningModal.tsx","screens/Console/Common/FormComponents/CSVMultiSelector/CSVMultiSelector.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { Box, Button, FormLayout, ModalBox, Switch } from \"mds\";\nimport { BucketVersioningResponse } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport CSVMultiSelector from \"../../Common/FormComponents/CSVMultiSelector/CSVMultiSelector\";\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\n\ninterface IVersioningEventProps {\n closeVersioningModalAndRefresh: (refresh: boolean) => void;\n modalOpen: boolean;\n selectedBucket: string;\n versioningInfo: BucketVersioningResponse | undefined;\n objectLockingEnabled: boolean;\n}\n\nconst parseExcludedPrefixes = (\n bucketVersioning: BucketVersioningResponse | undefined,\n) => {\n const excludedPrefixes = bucketVersioning?.excludedPrefixes;\n\n if (excludedPrefixes) {\n return excludedPrefixes.map((item) => item.prefix).join(\",\");\n }\n\n return \"\";\n};\n\nconst EnableVersioningModal = ({\n closeVersioningModalAndRefresh,\n modalOpen,\n selectedBucket,\n versioningInfo = {},\n objectLockingEnabled,\n}: IVersioningEventProps) => {\n const dispatch = useAppDispatch();\n\n const [versioningLoading, setVersioningLoading] = useState(false);\n const [versionState, setVersionState] = useState(\n versioningInfo?.status === \"Enabled\",\n );\n const [excludeFolders, setExcludeFolders] = useState(\n !!versioningInfo?.excludeFolders,\n );\n const [excludedPrefixes, setExcludedPrefixes] = useState(\n parseExcludedPrefixes(versioningInfo),\n );\n\n const enableVersioning = () => {\n if (versioningLoading) {\n return;\n }\n setVersioningLoading(true);\n\n api.buckets\n .setBucketVersioning(selectedBucket, {\n enabled: versionState,\n excludeFolders: versionState ? excludeFolders : false,\n excludePrefixes: versionState\n ? excludedPrefixes.split(\",\").filter((item) => item.trim() !== \"\")\n : [],\n })\n .then(() => {\n setVersioningLoading(false);\n closeVersioningModalAndRefresh(true);\n })\n .catch((err) => {\n setVersioningLoading(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n const resetForm = () => {\n setExcludedPrefixes(\"\");\n setExcludeFolders(false);\n setVersionState(false);\n };\n\n return (\n closeVersioningModalAndRefresh(false)}\n open={modalOpen}\n title={`Versioning on Bucket`}\n >\n \n ) => {\n setVersionState(e.target.checked);\n }}\n indicatorLabels={[\"Enabled\", \"Disabled\"]}\n />\n {versionState && !objectLockingEnabled && (\n \n ) => {\n setExcludeFolders(e.target.checked);\n }}\n indicatorLabels={[\"Enabled\", \"Disabled\"]}\n />\n {\n let valCh = \"\";\n\n if (Array.isArray(value)) {\n valCh = value.join(\",\");\n } else {\n valCh = value;\n }\n setExcludedPrefixes(valCh);\n }}\n withBorder={true}\n />\n \n )}\n \n \n \n \n \n \n );\n};\n\nexport default EnableVersioningModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more 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, {\n ChangeEvent,\n createRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n Fragment,\n} from \"react\";\nimport get from \"lodash/get\";\nimport { AddIcon, Box, HelpIcon, InputBox, InputLabel, Tooltip } from \"mds\";\n\ninterface ICSVMultiSelector {\n elements: string;\n name: string;\n label: string;\n tooltip?: string;\n commonPlaceholder?: string;\n withBorder?: boolean;\n onChange: (elements: string) => void;\n}\n\nconst CSVMultiSelector = ({\n elements,\n name,\n label,\n tooltip = \"\",\n commonPlaceholder = \"\",\n onChange,\n withBorder = false,\n}: ICSVMultiSelector) => {\n const [currentElements, setCurrentElements] = useState([\"\"]);\n const bottomList = createRef();\n\n // Use effect to get the initial values from props\n useEffect(() => {\n if (\n currentElements.length === 1 &&\n currentElements[0] === \"\" &&\n elements &&\n elements !== \"\"\n ) {\n const elementsSplit = elements.split(\",\");\n elementsSplit.push(\"\");\n\n setCurrentElements(elementsSplit);\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [elements, currentElements]);\n\n // Use effect to send new values to onChange\n useEffect(() => {\n if (currentElements.length > 1) {\n const refScroll = bottomList.current;\n if (refScroll) {\n refScroll.scrollIntoView(false);\n }\n }\n }, [currentElements, bottomList]);\n\n const onChangeCallback = useCallback(\n (newString: string) => {\n onChange(newString);\n },\n [onChange],\n );\n\n // We avoid multiple re-renders / hang issue typing too fast\n const firstUpdate = useRef(true);\n useEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = false;\n return;\n }\n const elementsString = currentElements\n .filter((element) => element.trim() !== \"\")\n .join(\",\");\n\n onChangeCallback(elementsString);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentElements]);\n\n // If the last input is not empty, we add a new one\n const addEmptyLine = (elementsUp: string[]) => {\n if (elementsUp[elementsUp.length - 1].trim() !== \"\") {\n const cpList = [...elementsUp];\n cpList.push(\"\");\n setCurrentElements(cpList);\n }\n };\n\n // Onchange function for input box, we get the dataset-index & only update that value in the array\n const onChangeElement = (e: ChangeEvent) => {\n e.persist();\n\n let updatedElement = [...currentElements];\n const index = get(e.target, \"dataset.index\", \"0\");\n const indexNum = parseInt(index);\n updatedElement[indexNum] = e.target.value;\n\n setCurrentElements(updatedElement);\n };\n\n const inputs = currentElements.map((element, index) => {\n return (\n : null}\n overlayAction={() => {\n addEmptyLine(currentElements);\n }}\n />\n );\n });\n\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n \n \n \n \n \n \n \n )}\n \n \n {inputs}\n
    \n \n \n \n );\n};\nexport default CSVMultiSelector;\n"],"names":["_ref","closeVersioningModalAndRefresh","modalOpen","selectedBucket","_ref$versioningInfo","versioningInfo","objectLockingEnabled","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","versioningLoading","setVersioningLoading","_useState3","status","_useState4","versionState","setVersionState","_useState5","excludeFolders","_useState6","setExcludeFolders","_useState7","bucketVersioning","excludedPrefixes","map","item","prefix","join","parseExcludedPrefixes","_useState8","setExcludedPrefixes","_jsx","ModalBox","onClose","open","title","children","_jsxs","FormLayout","withBorders","containerPadding","Switch","id","label","checked","onChange","e","target","indicatorLabels","Fragment","CSVMultiSelector","elements","name","value","valCh","Array","isArray","withBorder","Box","sx","modalStyleUtils","modalButtonBar","Button","type","variant","color","onClick","api","buckets","setBucketVersioning","enabled","excludePrefixes","split","filter","trim","then","catch","err","setErrorSnackMessage","errorToHandler","error","_ref$tooltip","tooltip","_ref$commonPlaceholde","commonPlaceholder","_ref$withBorder","currentElements","setCurrentElements","bottomList","createRef","useEffect","length","elementsSplit","push","refScroll","current","scrollIntoView","onChangeCallback","useCallback","newString","firstUpdate","useRef","elementsString","element","onChangeElement","persist","updatedElement","_toConsumableArray","index","get","parseInt","inputs","InputBox","concat","toString","placeholder","overlayIcon","AddIcon","overlayAction","elementsUp","cpList","addEmptyLine","display","className","InputLabel","alignItems","marginLeft","width","Tooltip","placement","HelpIcon","overflowY","height","position","ref"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/4065.546ae369.chunk.js b/portal-ui/build/static/js/4065.546ae369.chunk.js new file mode 100644 index 0000000000..65fc69a741 --- /dev/null +++ b/portal-ui/build/static/js/4065.546ae369.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[4065],{24065:function(e,s,n){n.r(s),n.d(s,{default:function(){return T}});var t=n(1413),r=n(29439),a=n(72791),o=n(29945),i=n(78687),c=n(57689),l=n(23814),d=n(74165),u=n(15861),h=n(56028),f=n(87995),x=n(44690),p=n(31776),m=n(82342),j=n(16502),g=n(80184),w=function(e){var s=e.open,n=e.closeModal,i=(0,x.TL)(),c=(0,a.useState)(""),w=(0,r.Z)(c,2),v=w[0],y=w[1],Z=(0,a.useState)(""),C=(0,r.Z)(Z,2),b=C[0],S=C[1],A=(0,a.useState)(""),k=(0,r.Z)(A,2),E=k[0],I=k[1],_=(0,a.useState)(!1),P=(0,r.Z)(_,2),K=P[0],M=P[1],T=localStorage.getItem("userLoggedIn")||"";return s?(0,g.jsxs)(h.Z,{title:"Change Password for ".concat(T),modalOpen:s,onClose:function(){S(""),I(""),y(""),n()},titleIcon:(0,g.jsx)(o.IaT,{}),children:[(0,g.jsx)("div",{children:"This will change your Console password. Please note your new password down, as it will be required to log into Console after this session."}),(0,g.jsx)(j.Z,{title:"",label:(0,g.jsx)("div",{children:(0,g.jsxs)("div",{children:["If you are looking to change MINIO_ROOT_USER credentials, Please refer to"," ",(0,g.jsx)("a",{target:"_blank",rel:"noopener",href:"https://min.io/docs/minio/linux/administration/identity-access-management/minio-user-management.html#id4?ref=con",children:"rotating"})," ","credentials ."]})})}),(0,g.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){if(e.preventDefault(),b===E){if(b.length<8)i((0,f.zb)({errorMessage:"Passwords must be at least 8 characters long",detailedError:""}));else if(!K){M(!0);var s={current_secret_key:v,new_secret_key:b};p.h.account.accountChangePassword(s).then((function(){M(!1),S(""),I(""),y(""),i((0,f.y1)("Successfully updated the password.")),n()})).catch(function(){var e=(0,u.Z)((0,d.Z)().mark((function e(s){var n;return(0,d.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return M(!1),S(""),I(""),y(""),e.next=6,s.json();case 6:n=e.sent,i((0,f.Ih)((0,m.g)(n)));case 8:case"end":return e.stop()}}),e)})));return function(s){return e.apply(this,arguments)}}())}}else i((0,f.zb)({errorMessage:"New passwords don't match",detailedError:""}))}(e)},children:(0,g.jsxs)(o.rjZ,{container:!0,children:[(0,g.jsx)(o.rjZ,{item:!0,xs:12,sx:(0,t.Z)({},l.ID.modalFormScrollable),children:(0,g.jsxs)(o.ltY,{withBorders:!1,containerPadding:!1,children:[(0,g.jsx)(o.Wzg,{id:"current-password",name:"current-password",onChange:function(e){y(e.target.value)},label:"Current Password",type:"password",value:v}),(0,g.jsx)(o.Wzg,{id:"new-password",name:"new-password",onChange:function(e){S(e.target.value)},label:"New Password",type:"password",value:b}),(0,g.jsx)(o.Wzg,{id:"re-new-password",name:"re-new-password",onChange:function(e){I(e.target.value)},label:"Type New Password Again",type:"password",value:E})]})}),(0,g.jsx)(o.rjZ,{item:!0,xs:12,sx:(0,t.Z)({},l.ID.modalButtonBar),children:(0,g.jsx)(o.zxk,{id:"save-password-modal",type:"submit",variant:"callAction",color:"primary",disabled:K||!(v.length>0&&b.length>0&&E.length>0),label:"Save"})}),K&&(0,g.jsx)(o.rjZ,{item:!0,xs:12,children:(0,g.jsx)(o.kod,{})})]})})]}):null},v=n(59114),y=n(75578),Z=n(58493),C=n(18303),b=n(14048),S=n(46078),A=n(27454),k=n(47974),E=n(99670),I=n(25643),_=n(21639),P=n(38442),K=n(56087),M=(0,y.Z)(a.lazy((function(){return n.e(3956).then(n.bind(n,23956))}))),T=function(){var e=(0,x.TL)(),s=(0,c.s0)(),n=(0,i.v9)(S.$4),d=(0,a.useState)([]),u=(0,r.Z)(d,2),h=u[0],j=u[1],y=(0,a.useState)(!1),T=(0,r.Z)(y,2),D=T[0],O=T[1],R=(0,a.useState)(""),z=(0,r.Z)(R,2),N=z[0],L=z[1],F=(0,a.useState)(!1),U=(0,r.Z)(F,2),W=U[0],B=U[1],Y=(0,a.useState)(null),Q=(0,r.Z)(Y,2),V=Q[0],X=Q[1],q=(0,a.useState)(!1),J=(0,r.Z)(q,2),$=J[0],G=J[1],H=(0,a.useState)([]),ee=(0,r.Z)(H,2),se=ee[0],ne=ee[1],te=(0,a.useState)(!1),re=(0,r.Z)(te,2),ae=re[0],oe=re[1],ie=(0,a.useState)(!1),ce=(0,r.Z)(ie,2),le=ce[0],de=ce[1],ue=n&&n.includes("external-idp")||!1;(0,a.useEffect)((function(){he()}),[]),(0,a.useEffect)((function(){e((0,f.Sc)("accessKeys"))}),[]),(0,a.useEffect)((function(){D&&p.h.serviceAccounts.listUserServiceAccounts().then((function(e){O(!1);var s=e.data.sort(_.LQ);j(s)})).catch((function(s){e((0,f.Ih)((0,m.g)((null===s||void 0===s?void 0:s.error)||"Error retrieving access keys"))),O(!1)}))}),[D,O,j,e]);var he=function(){O(!0)},fe=[{type:"view",onClick:function(e){e&&function(e){X(e),de(!0)}(e.accessKey)}},{type:"delete",onClick:function(e){e&&function(e){X(e),B(!0)}(e.accessKey)}}],xe=h.filter((function(e){var s;return null===e||void 0===e||null===(s=e.accessKey)||void 0===s?void 0:s.toLowerCase().includes(N.toLowerCase())}));return(0,g.jsxs)(a.Fragment,{children:[W&&(0,g.jsx)(M,{deleteOpen:W,selectedServiceAccount:V,closeDeleteModalAndRefresh:function(e){!function(e){B(!1),e&&(ne([]),he())}(e)}}),ae&&(0,g.jsx)(C.Z,{deleteOpen:ae,selectedSAs:se,closeDeleteModalAndRefresh:function(s){oe(!1),s&&(e((0,f.y1)("Access keys deleted successfully.")),ne([]),O(!0))}}),le&&(0,g.jsx)(b.Z,{open:le,selectedAccessKey:V,closeModalAndRefresh:function(){de(!1),O(!0)}}),(0,g.jsx)(w,{open:$,closeModal:function(){return G(!1)}}),(0,g.jsx)(k.Z,{label:"Access Keys",actions:(0,g.jsx)(E.Z,{})}),(0,g.jsx)(o.Xgh,{children:(0,g.jsxs)(o.rjZ,{container:!0,children:[(0,g.jsxs)(o.rjZ,{item:!0,xs:12,sx:(0,t.Z)({},l.OR.actionsTray),children:[(0,g.jsx)(v.Z,{placeholder:"Search Access Keys",onChange:L,sx:{marginRight:"auto",maxWidth:380},value:N}),(0,g.jsxs)(o.xuv,{sx:{display:"flex",flexWrap:"nowrap",gap:5},children:[(0,g.jsx)(A.Z,{tooltip:"Delete Selected",children:(0,g.jsx)(o.zxk,{id:"delete-selected-accounts",onClick:function(){oe(!0)},label:"Delete Selected",icon:(0,g.jsx)(o.pJl,{}),disabled:0===se.length,variant:"secondary"})}),(0,g.jsx)(P.s,{scopes:[K.Ft.ADMIN_CREATE_USER],resource:K.C3,matchAll:!0,errorProps:{disabled:!0},children:(0,g.jsx)(o.zxk,{id:"change-password",onClick:function(){return G(!0)},label:"Change Password",icon:(0,g.jsx)(o.tvm,{}),variant:"regular",disabled:ue})}),(0,g.jsx)(P.s,{scopes:[K.Ft.ADMIN_CREATE_SERVICEACCOUNT],resource:K.C3,matchAll:!0,errorProps:{disabled:!0},children:(0,g.jsx)(o.zxk,{id:"create-service-account",onClick:function(){s("".concat(K.gA.ACCOUNT_ADD))},label:"Create access key",icon:(0,g.jsx)(o.dtP,{}),variant:"callAction"})})]})]}),(0,g.jsx)(o.rjZ,{item:!0,xs:12,children:(0,g.jsx)(o.wQF,{itemActions:fe,entityName:"Access Keys",columns:I.r,onSelect:function(e){return(0,Z._0)(e,ne,se)},selectedItems:se,isLoading:D,records:xe,idField:"accessKey"})}),(0,g.jsx)(o.rjZ,{item:!0,xs:12,sx:{marginTop:15},children:(0,g.jsx)(o.KfX,{title:"Learn more about ACCESS KEYS",iconComponent:(0,g.jsx)(o.frP,{}),help:(0,g.jsxs)(a.Fragment,{children:["MinIO access keys are child identities of an authenticated MinIO user, including externally managed identities. Each access key inherits its privileges based on the policies attached to it\u2019s parent user or those groups in which the parent user has membership. Access Keys also support an optional inline policy which further restricts access to a subset of actions and resources available to the parent user.",(0,g.jsx)("br",{}),(0,g.jsx)("br",{}),"You can learn more at our"," ",(0,g.jsx)("a",{href:"https://min.io/docs/minio/linux/administration/identity-access-management/minio-user-management.html?ref=con#id3",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})})]})})]})}}}]); +//# sourceMappingURL=4065.546ae369.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/4065.546ae369.chunk.js.map b/portal-ui/build/static/js/4065.546ae369.chunk.js.map new file mode 100644 index 0000000000..5b2212c78c --- /dev/null +++ b/portal-ui/build/static/js/4065.546ae369.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/4065.546ae369.chunk.js","mappings":"6UAmNA,EAvKuB,SAAHA,GAAoD,IAA9CC,EAAID,EAAJC,KAAMC,EAAUF,EAAVE,WACxBC,GAAWC,EAAAA,EAAAA,MACjBC,GAA8CC,EAAAA,EAAAA,UAAiB,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA3DI,EAAeF,EAAA,GAAEG,EAAkBH,EAAA,GAC1CI,GAAsCL,EAAAA,EAAAA,UAAiB,IAAGM,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAAnDE,EAAWD,EAAA,GAAEE,EAAcF,EAAA,GAClCG,GAA0CT,EAAAA,EAAAA,UAAiB,IAAGU,GAAAR,EAAAA,EAAAA,GAAAO,EAAA,GAAvDE,EAAaD,EAAA,GAAEE,EAAgBF,EAAA,GACtCG,GAA8Bb,EAAAA,EAAAA,WAAkB,GAAMc,GAAAZ,EAAAA,EAAAA,GAAAW,EAAA,GAA/CE,EAAOD,EAAA,GAAEE,EAAUF,EAAA,GAEpBG,EAAeC,aAAaC,QAAQ,iBAAmB,GAuD7D,OAAOxB,GACLyB,EAAAA,EAAAA,MAACC,EAAAA,EAAY,CACXC,MAAK,uBAAAC,OAAyBN,GAC9BO,UAAW7B,EACX8B,QAAS,WACPjB,EAAe,IACfI,EAAiB,IACjBR,EAAmB,IACnBR,GACF,EACA8B,WAAWC,EAAAA,EAAAA,KAACC,EAAAA,IAAkB,IAAIC,SAAA,EAElCF,EAAAA,EAAAA,KAAA,OAAAE,SAAK,gJAILF,EAAAA,EAAAA,KAACG,EAAAA,EAAc,CACbR,MAAO,GACPS,OACEJ,EAAAA,EAAAA,KAAA,OAAAE,UACET,EAAAA,EAAAA,MAAA,OAAAS,SAAA,CAAK,4EAEM,KACTF,EAAAA,EAAAA,KAAA,KACEK,OAAO,SACPC,IAAI,WACJC,KAAK,mHAAkHL,SACxH,aAEI,IAAI,wBAMjBF,EAAAA,EAAAA,KAAA,QACEQ,YAAU,EACVC,aAAa,MACbC,SAAU,SAACC,IA3FM,SAACC,GAGtB,GAFAA,EAAMC,iBAEFjC,IAAgBI,GAUpB,GAAIJ,EAAYkC,OAAS,EACvB5C,GACE6C,EAAAA,EAAAA,IAA0B,CACxBC,aAAc,+CACdC,cAAe,WAMrB,IAAI7B,EAAJ,CAGAC,GAAW,GAEX,IAAI6B,EAAwC,CAC1CC,mBAAoB3C,EACpB4C,eAAgBxC,GAGlByC,EAAAA,EAAIC,QACDC,sBAAsBL,GACtBM,MAAK,WACJnC,GAAW,GACXR,EAAe,IACfI,EAAiB,IACjBR,EAAmB,IACnBP,GAASuD,EAAAA,EAAAA,IAAmB,uCAC5BxD,GACF,IACCyD,MAAK,eAAAC,GAAAC,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAAC,SAAAC,EAAOC,GAAG,IAAAC,EAAA,OAAAJ,EAAAA,EAAAA,KAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAIQ,OAHvBhD,GAAW,GACXR,EAAe,IACfI,EAAiB,IACjBR,EAAmB,IAAI0D,EAAAE,KAAA,EACJL,EAAIM,OAAM,OAAvBL,EAAGE,EAAAI,KACTrE,GAASsE,EAAAA,EAAAA,KAAqBC,EAAAA,EAAAA,GAAeR,KAAO,wBAAAE,EAAAO,OAAA,GAAAX,EAAA,KACrD,gBAAAY,GAAA,OAAAhB,EAAAiB,MAAA,KAAAC,UAAE,CAAF,CAPK,GAlBR,OArBE3E,GACE6C,EAAAA,EAAAA,IAA0B,CACxBC,aAAc,4BACdC,cAAe,KA4CvB,CAyCQ6B,CAAenC,EACjB,EAAET,UAEFT,EAAAA,EAAAA,MAACsD,EAAAA,IAAI,CAACC,WAAS,EAAA9C,SAAA,EACbF,EAAAA,EAAAA,KAAC+C,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAIC,IAAEC,EAAAA,EAAAA,GAAA,GAAOC,EAAAA,GAAgBC,qBAAsBpD,UAChET,EAAAA,EAAAA,MAAC8D,EAAAA,IAAU,CAACC,aAAa,EAAOC,kBAAkB,EAAMvD,SAAA,EACtDF,EAAAA,EAAAA,KAAC0D,EAAAA,IAAQ,CACPC,GAAG,mBACHC,KAAK,mBACLC,SAAU,SAACjD,GACTnC,EAAmBmC,EAAMP,OAAOyD,MAClC,EACA1D,MAAM,mBACN2D,KAAM,WACND,MAAOtF,KAETwB,EAAAA,EAAAA,KAAC0D,EAAAA,IAAQ,CACPC,GAAG,eACHC,KAAK,eACLC,SAAU,SAACjD,GACT/B,EAAe+B,EAAMP,OAAOyD,MAC9B,EACA1D,MAAM,eACN2D,KAAM,WACND,MAAOlF,KAEToB,EAAAA,EAAAA,KAAC0D,EAAAA,IAAQ,CACPC,GAAG,kBACHC,KAAK,kBACLC,SAAU,SAACjD,GACT3B,EAAiB2B,EAAMP,OAAOyD,MAChC,EACA1D,MAAM,0BACN2D,KAAM,WACND,MAAO9E,UAIbgB,EAAAA,EAAAA,KAAC+C,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAIC,IAAEC,EAAAA,EAAAA,GAAA,GAAOC,EAAAA,GAAgBW,gBAAiB9D,UAC3DF,EAAAA,EAAAA,KAACiE,EAAAA,IAAM,CACLN,GAAI,sBACJI,KAAK,SACLG,QAAQ,aACRC,MAAM,UACNC,SACEhF,KAEEZ,EAAgBsC,OAAS,GACzBlC,EAAYkC,OAAS,GACrB9B,EAAc8B,OAAS,GAG3BV,MAAM,WAGThB,IACCY,EAAAA,EAAAA,KAAC+C,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAGhD,UAChBF,EAAAA,EAAAA,KAACqE,EAAAA,IAAW,cAMpB,IACN,E,+IClJMC,GAAuBC,EAAAA,EAAAA,GAC3BC,EAAAA,MAAW,kBAAM,+BAAgC,KA8PnD,EA3PgB,WACd,IAAMtG,GAAWC,EAAAA,EAAAA,MACXsG,GAAWC,EAAAA,EAAAA,MAEXC,GAAWC,EAAAA,EAAAA,IAAYC,EAAAA,IAE7BzG,GAA8BC,EAAAA,EAAAA,UAA0B,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAApD0G,EAAOxG,EAAA,GAAEyG,EAAUzG,EAAA,GAC1BI,GAA8BL,EAAAA,EAAAA,WAAkB,GAAMM,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAA/CU,EAAOT,EAAA,GAAEU,EAAUV,EAAA,GAC1BG,GAA4BT,EAAAA,EAAAA,UAAiB,IAAGU,GAAAR,EAAAA,EAAAA,GAAAO,EAAA,GAAzCkG,EAAMjG,EAAA,GAAEkG,EAASlG,EAAA,GACxBG,GAAoCb,EAAAA,EAAAA,WAAkB,GAAMc,GAAAZ,EAAAA,EAAAA,GAAAW,EAAA,GAArDgG,EAAU/F,EAAA,GAAEgG,EAAahG,EAAA,GAChCiG,GAA4D/G,EAAAA,EAAAA,UAE1D,MAAKgH,GAAA9G,EAAAA,EAAAA,GAAA6G,EAAA,GAFAE,EAAsBD,EAAA,GAAEE,EAAyBF,EAAA,GAGxDG,GACEnH,EAAAA,EAAAA,WAAkB,GAAMoH,GAAAlH,EAAAA,EAAAA,GAAAiH,EAAA,GADnBE,EAAuBD,EAAA,GAAEE,EAA0BF,EAAA,GAE1DG,GAAsCvH,EAAAA,EAAAA,UAAmB,IAAGwH,IAAAtH,EAAAA,EAAAA,GAAAqH,EAAA,GAArDE,GAAWD,GAAA,GAAEE,GAAcF,GAAA,GAClCG,IAAoD3H,EAAAA,EAAAA,WAAkB,GAAM4H,IAAA1H,EAAAA,EAAAA,GAAAyH,GAAA,GAArEE,GAAkBD,GAAA,GAAEE,GAAqBF,GAAA,GAChDG,IAAoC/H,EAAAA,EAAAA,WAAkB,GAAMgI,IAAA9H,EAAAA,EAAAA,GAAA6H,GAAA,GAArDE,GAAUD,GAAA,GAAEE,GAAaF,GAAA,GAE1BG,GAAW7B,GAAYA,EAAS8B,SAAS,kBAAoB,GAEnEC,EAAAA,EAAAA,YAAU,WACRC,IACF,GAAG,KAEHD,EAAAA,EAAAA,YAAU,WACRxI,GAAS0I,EAAAA,EAAAA,IAAY,cAEvB,GAAG,KAEHF,EAAAA,EAAAA,YAAU,WACJtH,GACFiC,EAAAA,EAAIwF,gBACDC,0BACAtF,MAAK,SAACQ,GACL3C,GAAW,GACX,IAAM0H,EAAa/E,EAAIgF,KAAKC,KAAKC,EAAAA,IACjCnC,EAAWgC,EACb,IACCrF,OAAM,SAACM,GACN9D,GACEsE,EAAAA,EAAAA,KACEC,EAAAA,EAAAA,IAAkB,OAAHT,QAAG,IAAHA,OAAG,EAAHA,EAAKmF,QAAS,kCAGjC9H,GAAW,EACb,GAEN,GAAG,CAACD,EAASC,EAAY0F,EAAY7G,IAErC,IAAMyI,GAAe,WACnBtH,GAAW,EACb,EAmCM+H,GAAe,CACnB,CACErD,KAAM,OACNsD,QAAS,SAACvD,GACJA,GAnBc,SAACwB,GACvBC,EAA0BD,GAC1BiB,IAAc,EAChB,CAiBQe,CAAgBxD,EAAMyD,UAE1B,GAEF,CACExD,KAAM,SACNsD,QAAS,SAACvD,GACJA,GAjB0B,SAACwB,GACnCC,EAA0BD,GAC1BH,GAAc,EAChB,CAeQqC,CAA4B1D,EAAMyD,UAEtC,IAIEE,GAAkB3C,EAAQE,QAC9B,SAAC0C,GAAW,IAAAC,EAAA,OACC,OAAXD,QAAW,IAAXA,GAAsB,QAAXC,EAAXD,EAAaH,iBAAS,IAAAI,OAAX,EAAXA,EAAwBC,cAAcnB,SAASzB,EAAO4C,cAAc,IAGxE,OACEnI,EAAAA,EAAAA,MAAC+E,EAAAA,SAAc,CAAAtE,SAAA,CACZgF,IACClF,EAAAA,EAAAA,KAACsE,EAAoB,CACnBY,WAAYA,EACZI,uBAAwBA,EACxBuC,2BAA4B,SAACC,IA/DF,SAACA,GAClC3C,GAAc,GAEV2C,IACF/B,GAAe,IACfY,KAEJ,CAyDUkB,CAA2BC,EAC7B,IAGH5B,KACClG,EAAAA,EAAAA,KAAC+H,EAAAA,EAA6B,CAC5B7C,WAAYgB,GACZJ,YAAaA,GACb+B,2BA/DmC,SAACC,GAC1C3B,IAAsB,GAClB2B,IACF5J,GAASuD,EAAAA,EAAAA,IAAmB,sCAC5BsE,GAAe,IACf1G,GAAW,GAEf,IA4DKiH,KACCtG,EAAAA,EAAAA,KAACgI,EAAAA,EAAoB,CACnBhK,KAAMsI,GACN2B,kBAAmB3C,EACnB4C,qBAzDiB,WACvB3B,IAAc,GACdlH,GAAW,EACb,KAyDIW,EAAAA,EAAAA,KAACmI,EAAmB,CAClBnK,KAAM0H,EACNzH,WAAY,kBAAM0H,GAA2B,EAAM,KAErD3F,EAAAA,EAAAA,KAACoI,EAAAA,EAAiB,CAAChI,MAAM,cAAciI,SAASrI,EAAAA,EAAAA,KAACsI,EAAAA,EAAQ,OAEzDtI,EAAAA,EAAAA,KAACuI,EAAAA,IAAU,CAAArI,UACTT,EAAAA,EAAAA,MAACsD,EAAAA,IAAI,CAACC,WAAS,EAAA9C,SAAA,EACbT,EAAAA,EAAAA,MAACsD,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAIC,IAAEC,EAAAA,EAAAA,GAAA,GAAOoF,EAAAA,GAAYA,aAActI,SAAA,EACpDF,EAAAA,EAAAA,KAACyI,EAAAA,EAAS,CACRC,YAAa,qBACb7E,SAAUoB,EACV9B,GAAI,CAAEwF,YAAa,OAAQC,SAAU,KACrC9E,MAAOkB,KAETvF,EAAAA,EAAAA,MAACoJ,EAAAA,IAAG,CACF1F,GAAI,CACF2F,QAAS,OACTC,SAAU,SACVC,IAAK,GACL9I,SAAA,EAEFF,EAAAA,EAAAA,KAACiJ,EAAAA,EAAc,CAACC,QAAS,kBAAkBhJ,UACzCF,EAAAA,EAAAA,KAACiE,EAAAA,IAAM,CACLN,GAAI,2BACJ0D,QAAS,WACPlB,IAAsB,EACxB,EACA/F,MAAO,kBACP+I,MAAMnJ,EAAAA,EAAAA,KAACoJ,EAAAA,IAAU,IACjBhF,SAAiC,IAAvB0B,GAAYhF,OACtBoD,QAAS,iBAGblE,EAAAA,EAAAA,KAACqJ,EAAAA,EAAe,CACdC,OAAQ,CAACC,EAAAA,GAAWC,mBACpBC,SAAUC,EAAAA,GACVC,UAAQ,EACRC,WAAY,CAAExF,UAAU,GAAOlE,UAE/BF,EAAAA,EAAAA,KAACiE,EAAAA,IAAM,CACLN,GAAI,kBACJ0D,QAAS,kBAAM1B,GAA2B,EAAK,EAC/CvF,MAAK,kBACL+I,MAAMnJ,EAAAA,EAAAA,KAAC6J,EAAAA,IAAe,IACtB3F,QAAS,UACTE,SAAUoC,QAGdxG,EAAAA,EAAAA,KAACqJ,EAAAA,EAAe,CACdC,OAAQ,CAACC,EAAAA,GAAWO,6BACpBL,SAAUC,EAAAA,GACVC,UAAQ,EACRC,WAAY,CAAExF,UAAU,GAAOlE,UAE/BF,EAAAA,EAAAA,KAACiE,EAAAA,IAAM,CACLN,GAAI,yBACJ0D,QAAS,WACP5C,EAAS,GAAD7E,OAAImK,EAAAA,GAAUC,aACxB,EACA5J,MAAK,oBACL+I,MAAMnJ,EAAAA,EAAAA,KAACiK,EAAAA,IAAO,IACd/F,QAAS,wBAMjBlE,EAAAA,EAAAA,KAAC+C,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAGhD,UAChBF,EAAAA,EAAAA,KAACkK,EAAAA,IAAS,CACRC,YAAa/C,GACbgD,WAAY,cACZC,QAASC,EAAAA,EACTC,SAAU,SAAC5J,GAAC,OAAK6J,EAAAA,EAAAA,IAAU7J,EAAGoF,GAAgBD,GAAY,EAC1D2E,cAAe3E,GACf4E,UAAWtL,EACX0F,QAAS2C,GACTkD,QAAQ,iBAGZ3K,EAAAA,EAAAA,KAAC+C,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAIC,GAAI,CAAEyH,UAAW,IAAK1K,UACvCF,EAAAA,EAAAA,KAAC6K,EAAAA,IAAO,CACNlL,MAAO,+BACPmL,eAAe9K,EAAAA,EAAAA,KAAC+K,EAAAA,IAAW,IAC3BC,MACEvL,EAAAA,EAAAA,MAACwL,EAAAA,SAAQ,CAAA/K,SAAA,CAAC,iaAQRF,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,SAAM,4BACoB,KAC1BA,EAAAA,EAAAA,KAAA,KACEO,KAAK,mHACLF,OAAO,SACPC,IAAI,WAAUJ,SACf,kBAEG,kBAUtB,C","sources":["screens/Console/Account/ChangePasswordModal.tsx","screens/Console/Account/Account.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 {\n Button,\n ChangePasswordIcon,\n InputBox,\n Grid,\n FormLayout,\n ProgressBar,\n} from \"mds\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\n\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport {\n setErrorSnackMessage,\n setModalErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { api } from \"api\";\nimport { AccountChangePasswordRequest, ApiError } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport WarningMessage from \"../Common/WarningMessage/WarningMessage\";\n\ninterface IChangePasswordProps {\n open: boolean;\n closeModal: () => void;\n}\n\nconst ChangePassword = ({ open, closeModal }: IChangePasswordProps) => {\n const dispatch = useAppDispatch();\n const [currentPassword, setCurrentPassword] = useState(\"\");\n const [newPassword, setNewPassword] = useState(\"\");\n const [reNewPassword, setReNewPassword] = useState(\"\");\n const [loading, setLoading] = useState(false);\n\n const userLoggedIn = localStorage.getItem(\"userLoggedIn\") || \"\";\n\n const changePassword = (event: React.FormEvent) => {\n event.preventDefault();\n\n if (newPassword !== reNewPassword) {\n dispatch(\n setModalErrorSnackMessage({\n errorMessage: \"New passwords don't match\",\n detailedError: \"\",\n }),\n );\n return;\n }\n\n if (newPassword.length < 8) {\n dispatch(\n setModalErrorSnackMessage({\n errorMessage: \"Passwords must be at least 8 characters long\",\n detailedError: \"\",\n }),\n );\n return;\n }\n\n if (loading) {\n return;\n }\n setLoading(true);\n\n let request: AccountChangePasswordRequest = {\n current_secret_key: currentPassword,\n new_secret_key: newPassword,\n };\n\n api.account\n .accountChangePassword(request)\n .then(() => {\n setLoading(false);\n setNewPassword(\"\");\n setReNewPassword(\"\");\n setCurrentPassword(\"\");\n dispatch(setSnackBarMessage(\"Successfully updated the password.\"));\n closeModal();\n })\n .catch(async (res) => {\n setLoading(false);\n setNewPassword(\"\");\n setReNewPassword(\"\");\n setCurrentPassword(\"\");\n const err = (await res.json()) as ApiError;\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n });\n };\n\n return open ? (\n {\n setNewPassword(\"\");\n setReNewPassword(\"\");\n setCurrentPassword(\"\");\n closeModal();\n }}\n titleIcon={}\n >\n
    \n This will change your Console password. Please note your new password\n down, as it will be required to log into Console after this session.\n
    \n \n
    \n If you are looking to change MINIO_ROOT_USER credentials, Please\n refer to{\" \"}\n \n rotating\n {\" \"}\n credentials .\n
    \n
    \n }\n />\n ) => {\n changePassword(e);\n }}\n >\n \n \n \n ) => {\n setCurrentPassword(event.target.value);\n }}\n label=\"Current Password\"\n type={\"password\"}\n value={currentPassword}\n />\n ) => {\n setNewPassword(event.target.value);\n }}\n label=\"New Password\"\n type={\"password\"}\n value={newPassword}\n />\n ) => {\n setReNewPassword(event.target.value);\n }}\n label=\"Type New Password Again\"\n type={\"password\"}\n value={reNewPassword}\n />\n \n \n \n 0 &&\n newPassword.length > 0 &&\n reNewPassword.length > 0\n )\n }\n label=\"Save\"\n />\n \n {loading && (\n \n \n \n )}\n \n \n \n ) : null;\n};\n\nexport default ChangePassword;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport {\n AccountIcon,\n AddIcon,\n Box,\n Button,\n DataTable,\n DeleteIcon,\n Grid,\n HelpBox,\n PageLayout,\n PasswordKeyIcon,\n} from \"mds\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate } from \"react-router-dom\";\nimport { actionsTray } from \"../Common/FormComponents/common/styleLibrary\";\n\nimport ChangePasswordModal from \"./ChangePasswordModal\";\nimport SearchBox from \"../Common/SearchBox\";\nimport withSuspense from \"../Common/Components/withSuspense\";\n\nimport { selectSAs } from \"../Configurations/utils\";\nimport DeleteMultipleServiceAccounts from \"../Users/DeleteMultipleServiceAccounts\";\nimport ServiceAccountPolicy from \"./ServiceAccountPolicy\";\n\nimport { selFeatures } from \"../consoleSlice\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport HelpMenu from \"../HelpMenu\";\nimport { ACCOUNT_TABLE_COLUMNS } from \"./AccountUtils\";\nimport { useAppDispatch } from \"store\";\nimport { ServiceAccounts } from \"api/consoleApi\";\nimport {\n setErrorSnackMessage,\n setHelpName,\n setSnackBarMessage,\n} from \"systemSlice\";\nimport { usersSort } from \"utils/sortFunctions\";\nimport { SecureComponent } from \"common/SecureComponent\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_PAGES,\n IAM_SCOPES,\n} from \"common/SecureComponent/permissions\";\n\nconst DeleteServiceAccount = withSuspense(\n React.lazy(() => import(\"./DeleteServiceAccount\")),\n);\n\nconst Account = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const features = useSelector(selFeatures);\n\n const [records, setRecords] = useState([]);\n const [loading, setLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedServiceAccount, setSelectedServiceAccount] = useState<\n string | null\n >(null);\n const [changePasswordModalOpen, setChangePasswordModalOpen] =\n useState(false);\n const [selectedSAs, setSelectedSAs] = useState([]);\n const [deleteMultipleOpen, setDeleteMultipleOpen] = useState(false);\n const [policyOpen, setPolicyOpen] = useState(false);\n\n const userIDP = (features && features.includes(\"external-idp\")) || false;\n\n useEffect(() => {\n fetchRecords();\n }, []);\n\n useEffect(() => {\n dispatch(setHelpName(\"accessKeys\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (loading) {\n api.serviceAccounts\n .listUserServiceAccounts()\n .then((res) => {\n setLoading(false);\n const sortedRows = res.data.sort(usersSort);\n setRecords(sortedRows);\n })\n .catch((res) => {\n dispatch(\n setErrorSnackMessage(\n errorToHandler(res?.error || \"Error retrieving access keys\"),\n ),\n );\n setLoading(false);\n });\n }\n }, [loading, setLoading, setRecords, dispatch]);\n\n const fetchRecords = () => {\n setLoading(true);\n };\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n\n if (refresh) {\n setSelectedSAs([]);\n fetchRecords();\n }\n };\n\n const closeDeleteMultipleModalAndRefresh = (refresh: boolean) => {\n setDeleteMultipleOpen(false);\n if (refresh) {\n dispatch(setSnackBarMessage(`Access keys deleted successfully.`));\n setSelectedSAs([]);\n setLoading(true);\n }\n };\n\n const policyModalOpen = (selectedServiceAccount: string) => {\n setSelectedServiceAccount(selectedServiceAccount);\n setPolicyOpen(true);\n };\n\n const closePolicyModal = () => {\n setPolicyOpen(false);\n setLoading(true);\n };\n\n const confirmDeleteServiceAccount = (selectedServiceAccount: string) => {\n setSelectedServiceAccount(selectedServiceAccount);\n setDeleteOpen(true);\n };\n\n const tableActions = [\n {\n type: \"view\",\n onClick: (value: any) => {\n if (value) {\n policyModalOpen(value.accessKey);\n }\n },\n },\n {\n type: \"delete\",\n onClick: (value: any) => {\n if (value) {\n confirmDeleteServiceAccount(value.accessKey);\n }\n },\n },\n ];\n\n const filteredRecords = records.filter(\n (elementItem) =>\n elementItem?.accessKey?.toLowerCase().includes(filter.toLowerCase()),\n );\n\n return (\n \n {deleteOpen && (\n {\n closeDeleteModalAndRefresh(refresh);\n }}\n />\n )}\n {deleteMultipleOpen && (\n \n )}\n\n {policyOpen && (\n \n )}\n setChangePasswordModalOpen(false)}\n />\n } />\n\n \n \n \n \n \n \n {\n setDeleteMultipleOpen(true);\n }}\n label={\"Delete Selected\"}\n icon={}\n disabled={selectedSAs.length === 0}\n variant={\"secondary\"}\n />\n \n \n setChangePasswordModalOpen(true)}\n label={`Change Password`}\n icon={}\n variant={\"regular\"}\n disabled={userIDP}\n />\n \n \n {\n navigate(`${IAM_PAGES.ACCOUNT_ADD}`);\n }}\n label={`Create access key`}\n icon={}\n variant={\"callAction\"}\n />\n \n \n \n\n \n selectSAs(e, setSelectedSAs, selectedSAs)}\n selectedItems={selectedSAs}\n isLoading={loading}\n records={filteredRecords}\n idField=\"accessKey\"\n />\n \n \n }\n help={\n \n MinIO access keys are child identities of an authenticated\n MinIO user, including externally managed identities. Each\n access key inherits its privileges based on the policies\n attached to it’s parent user or those groups in which the\n parent user has membership. Access Keys also support an\n optional inline policy which further restricts access to a\n subset of actions and resources available to the parent user.\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 Account;\n"],"names":["_ref","open","closeModal","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","currentPassword","setCurrentPassword","_useState3","_useState4","newPassword","setNewPassword","_useState5","_useState6","reNewPassword","setReNewPassword","_useState7","_useState8","loading","setLoading","userLoggedIn","localStorage","getItem","_jsxs","ModalWrapper","title","concat","modalOpen","onClose","titleIcon","_jsx","ChangePasswordIcon","children","WarningMessage","label","target","rel","href","noValidate","autoComplete","onSubmit","e","event","preventDefault","length","setModalErrorSnackMessage","errorMessage","detailedError","request","current_secret_key","new_secret_key","api","account","accountChangePassword","then","setSnackBarMessage","catch","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","res","err","wrap","_context","prev","next","json","sent","setErrorSnackMessage","errorToHandler","stop","_x","apply","arguments","changePassword","Grid","container","item","xs","sx","_objectSpread","modalStyleUtils","modalFormScrollable","FormLayout","withBorders","containerPadding","InputBox","id","name","onChange","value","type","modalButtonBar","Button","variant","color","disabled","ProgressBar","DeleteServiceAccount","withSuspense","React","navigate","useNavigate","features","useSelector","selFeatures","records","setRecords","filter","setFilter","deleteOpen","setDeleteOpen","_useState9","_useState10","selectedServiceAccount","setSelectedServiceAccount","_useState11","_useState12","changePasswordModalOpen","setChangePasswordModalOpen","_useState13","_useState14","selectedSAs","setSelectedSAs","_useState15","_useState16","deleteMultipleOpen","setDeleteMultipleOpen","_useState17","_useState18","policyOpen","setPolicyOpen","userIDP","includes","useEffect","fetchRecords","setHelpName","serviceAccounts","listUserServiceAccounts","sortedRows","data","sort","usersSort","error","tableActions","onClick","policyModalOpen","accessKey","confirmDeleteServiceAccount","filteredRecords","elementItem","_elementItem$accessKe","toLowerCase","closeDeleteModalAndRefresh","refresh","DeleteMultipleServiceAccounts","ServiceAccountPolicy","selectedAccessKey","closeModalAndRefresh","ChangePasswordModal","PageHeaderWrapper","actions","HelpMenu","PageLayout","actionsTray","SearchBox","placeholder","marginRight","maxWidth","Box","display","flexWrap","gap","TooltipWrapper","tooltip","icon","DeleteIcon","SecureComponent","scopes","IAM_SCOPES","ADMIN_CREATE_USER","resource","CONSOLE_UI_RESOURCE","matchAll","errorProps","PasswordKeyIcon","ADMIN_CREATE_SERVICEACCOUNT","IAM_PAGES","ACCOUNT_ADD","AddIcon","DataTable","itemActions","entityName","columns","ACCOUNT_TABLE_COLUMNS","onSelect","selectSAs","selectedItems","isLoading","idField","marginTop","HelpBox","iconComponent","AccountIcon","help","Fragment"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/4065.5c14967d.chunk.js b/portal-ui/build/static/js/4065.5c14967d.chunk.js deleted file mode 100644 index 5a5983c7c1..0000000000 --- a/portal-ui/build/static/js/4065.5c14967d.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[4065],{24065:function(e,s,n){n.r(s),n.d(s,{default:function(){return z}});var t=n(1413),a=n(74165),r=n(15861),o=n(29439),c=n(72791),i=n(29945),l=n(78687),d=n(57689),u=n(23814),h=n(56028),f=n(87995),x=n(81551),p=n(31776),j=n(82342),m=n(80184),g=function(e){var s=e.open,n=e.closeModal,a=(0,x.TL)(),r=(0,c.useState)(""),l=(0,o.Z)(r,2),d=l[0],g=l[1],w=(0,c.useState)(""),v=(0,o.Z)(w,2),y=v[0],Z=v[1],C=(0,c.useState)(""),b=(0,o.Z)(C,2),S=b[0],A=b[1],k=(0,c.useState)(!1),E=(0,o.Z)(k,2),I=E[0],P=E[1],_=localStorage.getItem("userLoggedIn")||"";return s?(0,m.jsxs)(h.Z,{title:"Change Password for ".concat(_),modalOpen:s,onClose:function(){Z(""),A(""),g(""),n()},titleIcon:(0,m.jsx)(i.IaT,{}),children:[(0,m.jsx)("div",{children:"This will change your Console password. Please note your new password down, as it will be required to log into Console after this session."}),(0,m.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){if(e.preventDefault(),y===S){if(y.length<8)a((0,f.zb)({errorMessage:"Passwords must be at least 8 characters long",detailedError:""}));else if(!I){P(!0);var s={current_secret_key:d,new_secret_key:y};p.h.account.accountChangePassword(s).then((function(){P(!1),Z(""),A(""),g(""),n()})).catch((function(e){P(!1),Z(""),A(""),g(""),a((0,f.zb)((0,j.g)(e)))}))}}else a((0,f.zb)({errorMessage:"New passwords don't match",detailedError:""}))}(e)},children:(0,m.jsxs)(i.rjZ,{container:!0,children:[(0,m.jsx)(i.rjZ,{item:!0,xs:12,sx:(0,t.Z)({},u.ID.modalFormScrollable),children:(0,m.jsxs)(i.ltY,{withBorders:!1,containerPadding:!1,children:[(0,m.jsx)(i.Wzg,{id:"current-password",name:"current-password",onChange:function(e){g(e.target.value)},label:"Current Password",type:"password",value:d}),(0,m.jsx)(i.Wzg,{id:"new-password",name:"new-password",onChange:function(e){Z(e.target.value)},label:"New Password",type:"password",value:y}),(0,m.jsx)(i.Wzg,{id:"re-new-password",name:"re-new-password",onChange:function(e){A(e.target.value)},label:"Type New Password Again",type:"password",value:S})]})}),(0,m.jsx)(i.rjZ,{item:!0,xs:12,sx:(0,t.Z)({},u.ID.modalButtonBar),children:(0,m.jsx)(i.zxk,{id:"save-password-modal",type:"submit",variant:"callAction",color:"primary",disabled:I||!(d.length>0&&y.length>0&&S.length>0),label:"Save"})}),I&&(0,m.jsx)(i.rjZ,{item:!0,xs:12,children:(0,m.jsx)(i.kod,{})})]})})]}):null},w=n(59114),v=n(75578),y=n(58493),Z=n(18303),C=n(14048),b=n(46078),S=n(27454),A=n(47974),k=n(99670),E=n(25643),I=n(21639),P=n(38442),_=n(56087),K=(0,v.Z)(c.lazy((function(){return n.e(3956).then(n.bind(n,23956))}))),z=function(){var e=(0,x.TL)(),s=(0,d.s0)(),n=(0,l.v9)(b.$4),h=(0,c.useState)([]),v=(0,o.Z)(h,2),z=v[0],D=v[1],M=(0,c.useState)(!1),T=(0,o.Z)(M,2),R=T[0],L=T[1],N=(0,c.useState)(""),O=(0,o.Z)(N,2),F=O[0],W=O[1],U=(0,c.useState)(!1),B=(0,o.Z)(U,2),Y=B[0],Q=B[1],V=(0,c.useState)(null),X=(0,o.Z)(V,2),q=X[0],J=X[1],$=(0,c.useState)(!1),G=(0,o.Z)($,2),H=G[0],ee=G[1],se=(0,c.useState)([]),ne=(0,o.Z)(se,2),te=ne[0],ae=ne[1],re=(0,c.useState)(!1),oe=(0,o.Z)(re,2),ce=oe[0],ie=oe[1],le=(0,c.useState)(!1),de=(0,o.Z)(le,2),ue=de[0],he=de[1],fe=n&&n.includes("external-idp")||!1;(0,c.useEffect)((function(){xe()}),[]),(0,c.useEffect)((function(){e((0,f.Sc)("accessKeys"))}),[]),(0,c.useEffect)((function(){R&&p.h.serviceAccounts.listUserServiceAccounts().then((function(e){L(!1);var s=e.data.sort(I.LQ);D(s)})).catch(function(){var s=(0,r.Z)((0,a.Z)().mark((function s(n){var t;return(0,a.Z)().wrap((function(s){for(;;)switch(s.prev=s.next){case 0:return s.next=2,n.json();case 2:t=s.sent,e((0,f.Ih)((0,j.g)(t))),L(!1);case 5:case"end":return s.stop()}}),s)})));return function(e){return s.apply(this,arguments)}}())}),[R,L,D,e]);var xe=function(){L(!0)},pe=[{type:"view",onClick:function(e){e&&function(e){J(e),he(!0)}(e.accessKey)}},{type:"delete",onClick:function(e){e&&function(e){J(e),Q(!0)}(e.accessKey)}}],je=z.filter((function(e){var s;return null===e||void 0===e||null===(s=e.accessKey)||void 0===s?void 0:s.toLowerCase().includes(F.toLowerCase())}));return(0,m.jsxs)(c.Fragment,{children:[Y&&(0,m.jsx)(K,{deleteOpen:Y,selectedServiceAccount:q,closeDeleteModalAndRefresh:function(e){!function(e){Q(!1),e&&(ae([]),xe())}(e)}}),ce&&(0,m.jsx)(Z.Z,{deleteOpen:ce,selectedSAs:te,closeDeleteModalAndRefresh:function(s){ie(!1),s&&(e((0,f.y1)("Access keys deleted successfully.")),ae([]),L(!0))}}),ue&&(0,m.jsx)(C.Z,{open:ue,selectedAccessKey:q,closeModalAndRefresh:function(){he(!1),L(!0)}}),(0,m.jsx)(g,{open:H,closeModal:function(){return ee(!1)}}),(0,m.jsx)(A.Z,{label:"Access Keys",actions:(0,m.jsx)(k.Z,{})}),(0,m.jsx)(i.Xgh,{children:(0,m.jsxs)(i.rjZ,{container:!0,children:[(0,m.jsxs)(i.rjZ,{item:!0,xs:12,sx:(0,t.Z)({},u.OR.actionsTray),children:[(0,m.jsx)(w.Z,{placeholder:"Search Access Keys",onChange:W,sx:{marginRight:"auto",maxWidth:380},value:F}),(0,m.jsxs)(i.xuv,{sx:{display:"flex",flexWrap:"nowrap",gap:5},children:[(0,m.jsx)(S.Z,{tooltip:"Delete Selected",children:(0,m.jsx)(i.zxk,{id:"delete-selected-accounts",onClick:function(){ie(!0)},label:"Delete Selected",icon:(0,m.jsx)(i.pJl,{}),disabled:0===te.length,variant:"secondary"})}),(0,m.jsx)(P.s,{scopes:[_.Ft.ADMIN_CREATE_USER],resource:_.C3,matchAll:!0,errorProps:{disabled:!0},children:(0,m.jsx)(i.zxk,{id:"change-password",onClick:function(){return ee(!0)},label:"Change Password",icon:(0,m.jsx)(i.tvm,{}),variant:"regular",disabled:fe})}),(0,m.jsx)(P.s,{scopes:[_.Ft.ADMIN_CREATE_SERVICEACCOUNT],resource:_.C3,matchAll:!0,errorProps:{disabled:!0},children:(0,m.jsx)(i.zxk,{id:"create-service-account",onClick:function(){s("".concat(_.gA.ACCOUNT_ADD))},label:"Create access key",icon:(0,m.jsx)(i.dtP,{}),variant:"callAction"})})]})]}),(0,m.jsx)(i.rjZ,{item:!0,xs:12,children:(0,m.jsx)(i.wQF,{itemActions:pe,entityName:"Access Keys",columns:E.r,onSelect:function(e){return(0,y._0)(e,ae,te)},selectedItems:te,isLoading:R,records:je,idField:"accessKey"})}),(0,m.jsx)(i.rjZ,{item:!0,xs:12,sx:{marginTop:15},children:(0,m.jsx)(i.KfX,{title:"Learn more about ACCESS KEYS",iconComponent:(0,m.jsx)(i.frP,{}),help:(0,m.jsxs)(c.Fragment,{children:["MinIO access keys are child identities of an authenticated MinIO user, including externally managed identities. Each access key inherits its privileges based on the policies attached to it\u2019s parent user or those groups in which the parent user has membership. Access Keys also support an optional inline policy which further restricts access to a subset of actions and resources available to the parent user.",(0,m.jsx)("br",{}),(0,m.jsx)("br",{}),"You can learn more at our"," ",(0,m.jsx)("a",{href:"https://min.io/docs/minio/linux/administration/identity-access-management/minio-user-management.html?ref=con#id3",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})})]})})]})}}}]); -//# sourceMappingURL=4065.5c14967d.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/4065.5c14967d.chunk.js.map b/portal-ui/build/static/js/4065.5c14967d.chunk.js.map deleted file mode 100644 index 6a28f49fd7..0000000000 --- a/portal-ui/build/static/js/4065.5c14967d.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/4065.5c14967d.chunk.js","mappings":"kUAyLA,EAlJuB,SAAHA,GAAoD,IAA9CC,EAAID,EAAJC,KAAMC,EAAUF,EAAVE,WACxBC,GAAWC,EAAAA,EAAAA,MACjBC,GAA8CC,EAAAA,EAAAA,UAAiB,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA3DI,EAAeF,EAAA,GAAEG,EAAkBH,EAAA,GAC1CI,GAAsCL,EAAAA,EAAAA,UAAiB,IAAGM,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAAnDE,EAAWD,EAAA,GAAEE,EAAcF,EAAA,GAClCG,GAA0CT,EAAAA,EAAAA,UAAiB,IAAGU,GAAAR,EAAAA,EAAAA,GAAAO,EAAA,GAAvDE,EAAaD,EAAA,GAAEE,EAAgBF,EAAA,GACtCG,GAA8Bb,EAAAA,EAAAA,WAAkB,GAAMc,GAAAZ,EAAAA,EAAAA,GAAAW,EAAA,GAA/CE,EAAOD,EAAA,GAAEE,EAAUF,EAAA,GAEpBG,EAAeC,aAAaC,QAAQ,iBAAmB,GAqD7D,OAAOxB,GACLyB,EAAAA,EAAAA,MAACC,EAAAA,EAAY,CACXC,MAAK,uBAAAC,OAAyBN,GAC9BO,UAAW7B,EACX8B,QAAS,WACPjB,EAAe,IACfI,EAAiB,IACjBR,EAAmB,IACnBR,GACF,EACA8B,WAAWC,EAAAA,EAAAA,KAACC,EAAAA,IAAkB,IAAIC,SAAA,EAElCF,EAAAA,EAAAA,KAAA,OAAAE,SAAK,gJAILF,EAAAA,EAAAA,KAAA,QACEG,YAAU,EACVC,aAAa,MACbC,SAAU,SAACC,IAtEM,SAACC,GAGtB,GAFAA,EAAMC,iBAEF5B,IAAgBI,GAUpB,GAAIJ,EAAY6B,OAAS,EACvBvC,GACEwC,EAAAA,EAAAA,IAA0B,CACxBC,aAAc,+CACdC,cAAe,WAMrB,IAAIxB,EAAJ,CAGAC,GAAW,GAEX,IAAIwB,EAAwC,CAC1CC,mBAAoBtC,EACpBuC,eAAgBnC,GAGlBoC,EAAAA,EAAIC,QACDC,sBAAsBL,GACtBM,MAAK,WACJ9B,GAAW,GACXR,EAAe,IACfI,EAAiB,IACjBR,EAAmB,IACnBR,GACF,IACCmD,OAAM,SAACC,GACNhC,GAAW,GACXR,EAAe,IACfI,EAAiB,IACjBR,EAAmB,IACnBP,GAASwC,EAAAA,EAAAA,KAA0BY,EAAAA,EAAAA,GAAeD,IACpD,GAvBF,OArBEnD,GACEwC,EAAAA,EAAAA,IAA0B,CACxBC,aAAc,4BACdC,cAAe,KA0CvB,CAsBQW,CAAejB,EACjB,EAAEJ,UAEFT,EAAAA,EAAAA,MAAC+B,EAAAA,IAAI,CAACC,WAAS,EAAAvB,SAAA,EACbF,EAAAA,EAAAA,KAACwB,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAIC,IAAEC,EAAAA,EAAAA,GAAA,GAAOC,EAAAA,GAAgBC,qBAAsB7B,UAChET,EAAAA,EAAAA,MAACuC,EAAAA,IAAU,CAACC,aAAa,EAAOC,kBAAkB,EAAMhC,SAAA,EACtDF,EAAAA,EAAAA,KAACmC,EAAAA,IAAQ,CACPC,GAAG,mBACHC,KAAK,mBACLC,SAAU,SAAC/B,GACT9B,EAAmB8B,EAAMgC,OAAOC,MAClC,EACAC,MAAM,mBACNC,KAAM,WACNF,MAAOhE,KAETwB,EAAAA,EAAAA,KAACmC,EAAAA,IAAQ,CACPC,GAAG,eACHC,KAAK,eACLC,SAAU,SAAC/B,GACT1B,EAAe0B,EAAMgC,OAAOC,MAC9B,EACAC,MAAM,eACNC,KAAM,WACNF,MAAO5D,KAEToB,EAAAA,EAAAA,KAACmC,EAAAA,IAAQ,CACPC,GAAG,kBACHC,KAAK,kBACLC,SAAU,SAAC/B,GACTtB,EAAiBsB,EAAMgC,OAAOC,MAChC,EACAC,MAAM,0BACNC,KAAM,WACNF,MAAOxD,UAIbgB,EAAAA,EAAAA,KAACwB,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAIC,IAAEC,EAAAA,EAAAA,GAAA,GAAOC,EAAAA,GAAgBa,gBAAiBzC,UAC3DF,EAAAA,EAAAA,KAAC4C,EAAAA,IAAM,CACLR,GAAI,sBACJM,KAAK,SACLG,QAAQ,aACRC,MAAM,UACNC,SACE3D,KAEEZ,EAAgBiC,OAAS,GACzB7B,EAAY6B,OAAS,GACrBzB,EAAcyB,OAAS,GAG3BgC,MAAM,WAGTrD,IACCY,EAAAA,EAAAA,KAACwB,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAGzB,UAChBF,EAAAA,EAAAA,KAACgD,EAAAA,IAAW,cAMpB,IACN,E,+ICxHMC,GAAuBC,EAAAA,EAAAA,GAC3BC,EAAAA,MAAW,kBAAM,+BAAgC,KA2PnD,EAxPgB,WACd,IAAMjF,GAAWC,EAAAA,EAAAA,MACXiF,GAAWC,EAAAA,EAAAA,MAEXC,GAAWC,EAAAA,EAAAA,IAAYC,EAAAA,IAE7BpF,GAA8BC,EAAAA,EAAAA,UAA0B,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAApDqF,EAAOnF,EAAA,GAAEoF,EAAUpF,EAAA,GAC1BI,GAA8BL,EAAAA,EAAAA,WAAkB,GAAMM,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAA/CU,EAAOT,EAAA,GAAEU,EAAUV,EAAA,GAC1BG,GAA4BT,EAAAA,EAAAA,UAAiB,IAAGU,GAAAR,EAAAA,EAAAA,GAAAO,EAAA,GAAzC6E,EAAM5E,EAAA,GAAE6E,EAAS7E,EAAA,GACxBG,GAAoCb,EAAAA,EAAAA,WAAkB,GAAMc,GAAAZ,EAAAA,EAAAA,GAAAW,EAAA,GAArD2E,EAAU1E,EAAA,GAAE2E,EAAa3E,EAAA,GAChC4E,GAA4D1F,EAAAA,EAAAA,UAE1D,MAAK2F,GAAAzF,EAAAA,EAAAA,GAAAwF,EAAA,GAFAE,EAAsBD,EAAA,GAAEE,EAAyBF,EAAA,GAGxDG,GACE9F,EAAAA,EAAAA,WAAkB,GAAM+F,GAAA7F,EAAAA,EAAAA,GAAA4F,EAAA,GADnBE,EAAuBD,EAAA,GAAEE,GAA0BF,EAAA,GAE1DG,IAAsClG,EAAAA,EAAAA,UAAmB,IAAGmG,IAAAjG,EAAAA,EAAAA,GAAAgG,GAAA,GAArDE,GAAWD,GAAA,GAAEE,GAAcF,GAAA,GAClCG,IAAoDtG,EAAAA,EAAAA,WAAkB,GAAMuG,IAAArG,EAAAA,EAAAA,GAAAoG,GAAA,GAArEE,GAAkBD,GAAA,GAAEE,GAAqBF,GAAA,GAChDG,IAAoC1G,EAAAA,EAAAA,WAAkB,GAAM2G,IAAAzG,EAAAA,EAAAA,GAAAwG,GAAA,GAArDE,GAAUD,GAAA,GAAEE,GAAaF,GAAA,GAE1BG,GAAW7B,GAAYA,EAAS8B,SAAS,kBAAoB,GAEnEC,EAAAA,EAAAA,YAAU,WACRC,IACF,GAAG,KAEHD,EAAAA,EAAAA,YAAU,WACRnH,GAASqH,EAAAA,EAAAA,IAAY,cAEvB,GAAG,KAEHF,EAAAA,EAAAA,YAAU,WACJjG,GACF4B,EAAAA,EAAIwE,gBACDC,0BACAtE,MAAK,SAACuE,GACLrG,GAAW,GACX,IAAMsG,EAAaD,EAAIE,KAAKC,KAAKC,EAAAA,IACjCpC,EAAWiC,EACb,IACCvE,MAAK,eAAArD,GAAAgI,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAAC,SAAAC,EAAOR,GAAG,IAAArE,EAAA,OAAA2E,EAAAA,EAAAA,KAAAG,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACIZ,EAAIa,OAAM,OAAvBlF,EAAG+E,EAAAI,KACTtI,GAASuI,EAAAA,EAAAA,KAAqBnF,EAAAA,EAAAA,GAAeD,KAC7ChC,GAAW,GAAO,wBAAA+G,EAAAM,OAAA,GAAAR,EAAA,KACnB,gBAAAS,GAAA,OAAA5I,EAAA6I,MAAA,KAAAC,UAAE,CAAF,CAJK,GAMZ,GAAG,CAACzH,EAASC,EAAYqE,EAAYxF,IAErC,IAAMoH,GAAe,WACnBjG,GAAW,EACb,EAmCMyH,GAAe,CACnB,CACEpE,KAAM,OACNqE,QAAS,SAACvE,GACJA,GAnBc,SAACyB,GACvBC,EAA0BD,GAC1BiB,IAAc,EAChB,CAiBQ8B,CAAgBxE,EAAMyE,UAE1B,GAEF,CACEvE,KAAM,SACNqE,QAAS,SAACvE,GACJA,GAjB0B,SAACyB,GACnCC,EAA0BD,GAC1BH,GAAc,EAChB,CAeQoD,CAA4B1E,EAAMyE,UAEtC,IAIEE,GAAkB1D,EAAQE,QAC9B,SAACyD,GAAW,IAAAC,EAAA,OACC,OAAXD,QAAW,IAAXA,GAAsB,QAAXC,EAAXD,EAAaH,iBAAS,IAAAI,OAAX,EAAXA,EAAwBC,cAAclC,SAASzB,EAAO2D,cAAc,IAGxE,OACE7H,EAAAA,EAAAA,MAAC0D,EAAAA,SAAc,CAAAjD,SAAA,CACZ2D,IACC7D,EAAAA,EAAAA,KAACiD,EAAoB,CACnBY,WAAYA,EACZI,uBAAwBA,EACxBsD,2BAA4B,SAACC,IA/DF,SAACA,GAClC1D,GAAc,GAEV0D,IACF9C,GAAe,IACfY,KAEJ,CAyDUiC,CAA2BC,EAC7B,IAGH3C,KACC7E,EAAAA,EAAAA,KAACyH,EAAAA,EAA6B,CAC5B5D,WAAYgB,GACZJ,YAAaA,GACb8C,2BA/DmC,SAACC,GAC1C1C,IAAsB,GAClB0C,IACFtJ,GAASwJ,EAAAA,EAAAA,IAAmB,sCAC5BhD,GAAe,IACfrF,GAAW,GAEf,IA4DK4F,KACCjF,EAAAA,EAAAA,KAAC2H,EAAAA,EAAoB,CACnB3J,KAAMiH,GACN2C,kBAAmB3D,EACnB4D,qBAzDiB,WACvB3C,IAAc,GACd7F,GAAW,EACb,KAyDIW,EAAAA,EAAAA,KAAC8H,EAAmB,CAClB9J,KAAMqG,EACNpG,WAAY,kBAAMqG,IAA2B,EAAM,KAErDtE,EAAAA,EAAAA,KAAC+H,EAAAA,EAAiB,CAACtF,MAAM,cAAcuF,SAAShI,EAAAA,EAAAA,KAACiI,EAAAA,EAAQ,OAEzDjI,EAAAA,EAAAA,KAACkI,EAAAA,IAAU,CAAAhI,UACTT,EAAAA,EAAAA,MAAC+B,EAAAA,IAAI,CAACC,WAAS,EAAAvB,SAAA,EACbT,EAAAA,EAAAA,MAAC+B,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAIC,IAAEC,EAAAA,EAAAA,GAAA,GAAOsG,EAAAA,GAAYA,aAAcjI,SAAA,EACpDF,EAAAA,EAAAA,KAACoI,EAAAA,EAAS,CACRC,YAAa,qBACb/F,SAAUsB,EACVhC,GAAI,CAAE0G,YAAa,OAAQC,SAAU,KACrC/F,MAAOmB,KAETlE,EAAAA,EAAAA,MAAC+I,EAAAA,IAAG,CACF5G,GAAI,CACF6G,QAAS,OACTC,SAAU,SACVC,IAAK,GACLzI,SAAA,EAEFF,EAAAA,EAAAA,KAAC4I,EAAAA,EAAc,CAACC,QAAS,kBAAkB3I,UACzCF,EAAAA,EAAAA,KAAC4C,EAAAA,IAAM,CACLR,GAAI,2BACJ2E,QAAS,WACPjC,IAAsB,EACxB,EACArC,MAAO,kBACPqG,MAAM9I,EAAAA,EAAAA,KAAC+I,EAAAA,IAAU,IACjBhG,SAAiC,IAAvB0B,GAAYhE,OACtBoC,QAAS,iBAGb7C,EAAAA,EAAAA,KAACgJ,EAAAA,EAAe,CACdC,OAAQ,CAACC,EAAAA,GAAWC,mBACpBC,SAAUC,EAAAA,GACVC,UAAQ,EACRC,WAAY,CAAExG,UAAU,GAAO7C,UAE/BF,EAAAA,EAAAA,KAAC4C,EAAAA,IAAM,CACLR,GAAI,kBACJ2E,QAAS,kBAAMzC,IAA2B,EAAK,EAC/C7B,MAAK,kBACLqG,MAAM9I,EAAAA,EAAAA,KAACwJ,EAAAA,IAAe,IACtB3G,QAAS,UACTE,SAAUoC,QAGdnF,EAAAA,EAAAA,KAACgJ,EAAAA,EAAe,CACdC,OAAQ,CAACC,EAAAA,GAAWO,6BACpBL,SAAUC,EAAAA,GACVC,UAAQ,EACRC,WAAY,CAAExG,UAAU,GAAO7C,UAE/BF,EAAAA,EAAAA,KAAC4C,EAAAA,IAAM,CACLR,GAAI,yBACJ2E,QAAS,WACP3D,EAAS,GAADxD,OAAI8J,EAAAA,GAAUC,aACxB,EACAlH,MAAK,oBACLqG,MAAM9I,EAAAA,EAAAA,KAAC4J,EAAAA,IAAO,IACd/G,QAAS,wBAMjB7C,EAAAA,EAAAA,KAACwB,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAGzB,UAChBF,EAAAA,EAAAA,KAAC6J,EAAAA,IAAS,CACRC,YAAahD,GACbiD,WAAY,cACZC,QAASC,EAAAA,EACTC,SAAU,SAAC5J,GAAC,OAAK6J,EAAAA,EAAAA,IAAU7J,EAAGoE,GAAgBD,GAAY,EAC1D2F,cAAe3F,GACf4F,UAAWjL,EACXqE,QAAS0D,GACTmD,QAAQ,iBAGZtK,EAAAA,EAAAA,KAACwB,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAIC,GAAI,CAAE2I,UAAW,IAAKrK,UACvCF,EAAAA,EAAAA,KAACwK,EAAAA,IAAO,CACN7K,MAAO,+BACP8K,eAAezK,EAAAA,EAAAA,KAAC0K,EAAAA,IAAW,IAC3BC,MACElL,EAAAA,EAAAA,MAACmL,EAAAA,SAAQ,CAAA1K,SAAA,CAAC,iaAQRF,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,SAAM,4BACoB,KAC1BA,EAAAA,EAAAA,KAAA,KACE6K,KAAK,mHACLtI,OAAO,SACPuI,IAAI,WAAU5K,SACf,kBAEG,kBAUtB,C","sources":["screens/Console/Account/ChangePasswordModal.tsx","screens/Console/Account/Account.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 {\n Button,\n ChangePasswordIcon,\n InputBox,\n Grid,\n FormLayout,\n ProgressBar,\n} from \"mds\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\n\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { api } from \"api\";\nimport { AccountChangePasswordRequest } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IChangePasswordProps {\n open: boolean;\n closeModal: () => void;\n}\n\nconst ChangePassword = ({ open, closeModal }: IChangePasswordProps) => {\n const dispatch = useAppDispatch();\n const [currentPassword, setCurrentPassword] = useState(\"\");\n const [newPassword, setNewPassword] = useState(\"\");\n const [reNewPassword, setReNewPassword] = useState(\"\");\n const [loading, setLoading] = useState(false);\n\n const userLoggedIn = localStorage.getItem(\"userLoggedIn\") || \"\";\n\n const changePassword = (event: React.FormEvent) => {\n event.preventDefault();\n\n if (newPassword !== reNewPassword) {\n dispatch(\n setModalErrorSnackMessage({\n errorMessage: \"New passwords don't match\",\n detailedError: \"\",\n }),\n );\n return;\n }\n\n if (newPassword.length < 8) {\n dispatch(\n setModalErrorSnackMessage({\n errorMessage: \"Passwords must be at least 8 characters long\",\n detailedError: \"\",\n }),\n );\n return;\n }\n\n if (loading) {\n return;\n }\n setLoading(true);\n\n let request: AccountChangePasswordRequest = {\n current_secret_key: currentPassword,\n new_secret_key: newPassword,\n };\n\n api.account\n .accountChangePassword(request)\n .then(() => {\n setLoading(false);\n setNewPassword(\"\");\n setReNewPassword(\"\");\n setCurrentPassword(\"\");\n closeModal();\n })\n .catch((err) => {\n setLoading(false);\n setNewPassword(\"\");\n setReNewPassword(\"\");\n setCurrentPassword(\"\");\n dispatch(setModalErrorSnackMessage(errorToHandler(err)));\n });\n };\n\n return open ? (\n {\n setNewPassword(\"\");\n setReNewPassword(\"\");\n setCurrentPassword(\"\");\n closeModal();\n }}\n titleIcon={}\n >\n
    \n This will change your Console password. Please note your new password\n down, as it will be required to log into Console after this session.\n
    \n ) => {\n changePassword(e);\n }}\n >\n \n \n \n ) => {\n setCurrentPassword(event.target.value);\n }}\n label=\"Current Password\"\n type={\"password\"}\n value={currentPassword}\n />\n ) => {\n setNewPassword(event.target.value);\n }}\n label=\"New Password\"\n type={\"password\"}\n value={newPassword}\n />\n ) => {\n setReNewPassword(event.target.value);\n }}\n label=\"Type New Password Again\"\n type={\"password\"}\n value={reNewPassword}\n />\n \n \n \n 0 &&\n newPassword.length > 0 &&\n reNewPassword.length > 0\n )\n }\n label=\"Save\"\n />\n \n {loading && (\n \n \n \n )}\n \n \n \n ) : null;\n};\n\nexport default ChangePassword;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport {\n AccountIcon,\n AddIcon,\n Box,\n Button,\n DataTable,\n DeleteIcon,\n Grid,\n HelpBox,\n PageLayout,\n PasswordKeyIcon,\n} from \"mds\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate } from \"react-router-dom\";\nimport { actionsTray } from \"../Common/FormComponents/common/styleLibrary\";\n\nimport ChangePasswordModal from \"./ChangePasswordModal\";\nimport SearchBox from \"../Common/SearchBox\";\nimport withSuspense from \"../Common/Components/withSuspense\";\n\nimport { selectSAs } from \"../Configurations/utils\";\nimport DeleteMultipleServiceAccounts from \"../Users/DeleteMultipleServiceAccounts\";\nimport ServiceAccountPolicy from \"./ServiceAccountPolicy\";\n\nimport { selFeatures } from \"../consoleSlice\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport HelpMenu from \"../HelpMenu\";\nimport { ACCOUNT_TABLE_COLUMNS } from \"./AccountUtils\";\nimport { useAppDispatch } from \"store\";\nimport { ApiError, ServiceAccounts } from \"api/consoleApi\";\nimport {\n setErrorSnackMessage,\n setHelpName,\n setSnackBarMessage,\n} from \"systemSlice\";\nimport { usersSort } from \"utils/sortFunctions\";\nimport { SecureComponent } from \"common/SecureComponent\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_PAGES,\n IAM_SCOPES,\n} from \"common/SecureComponent/permissions\";\n\nconst DeleteServiceAccount = withSuspense(\n React.lazy(() => import(\"./DeleteServiceAccount\")),\n);\n\nconst Account = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const features = useSelector(selFeatures);\n\n const [records, setRecords] = useState([]);\n const [loading, setLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedServiceAccount, setSelectedServiceAccount] = useState<\n string | null\n >(null);\n const [changePasswordModalOpen, setChangePasswordModalOpen] =\n useState(false);\n const [selectedSAs, setSelectedSAs] = useState([]);\n const [deleteMultipleOpen, setDeleteMultipleOpen] = useState(false);\n const [policyOpen, setPolicyOpen] = useState(false);\n\n const userIDP = (features && features.includes(\"external-idp\")) || false;\n\n useEffect(() => {\n fetchRecords();\n }, []);\n\n useEffect(() => {\n dispatch(setHelpName(\"accessKeys\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (loading) {\n api.serviceAccounts\n .listUserServiceAccounts()\n .then((res) => {\n setLoading(false);\n const sortedRows = res.data.sort(usersSort);\n setRecords(sortedRows);\n })\n .catch(async (res) => {\n const err = (await res.json()) as ApiError;\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n setLoading(false);\n });\n }\n }, [loading, setLoading, setRecords, dispatch]);\n\n const fetchRecords = () => {\n setLoading(true);\n };\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n\n if (refresh) {\n setSelectedSAs([]);\n fetchRecords();\n }\n };\n\n const closeDeleteMultipleModalAndRefresh = (refresh: boolean) => {\n setDeleteMultipleOpen(false);\n if (refresh) {\n dispatch(setSnackBarMessage(`Access keys deleted successfully.`));\n setSelectedSAs([]);\n setLoading(true);\n }\n };\n\n const policyModalOpen = (selectedServiceAccount: string) => {\n setSelectedServiceAccount(selectedServiceAccount);\n setPolicyOpen(true);\n };\n\n const closePolicyModal = () => {\n setPolicyOpen(false);\n setLoading(true);\n };\n\n const confirmDeleteServiceAccount = (selectedServiceAccount: string) => {\n setSelectedServiceAccount(selectedServiceAccount);\n setDeleteOpen(true);\n };\n\n const tableActions = [\n {\n type: \"view\",\n onClick: (value: any) => {\n if (value) {\n policyModalOpen(value.accessKey);\n }\n },\n },\n {\n type: \"delete\",\n onClick: (value: any) => {\n if (value) {\n confirmDeleteServiceAccount(value.accessKey);\n }\n },\n },\n ];\n\n const filteredRecords = records.filter(\n (elementItem) =>\n elementItem?.accessKey?.toLowerCase().includes(filter.toLowerCase()),\n );\n\n return (\n \n {deleteOpen && (\n {\n closeDeleteModalAndRefresh(refresh);\n }}\n />\n )}\n {deleteMultipleOpen && (\n \n )}\n\n {policyOpen && (\n \n )}\n setChangePasswordModalOpen(false)}\n />\n } />\n\n \n \n \n \n \n \n {\n setDeleteMultipleOpen(true);\n }}\n label={\"Delete Selected\"}\n icon={}\n disabled={selectedSAs.length === 0}\n variant={\"secondary\"}\n />\n \n \n setChangePasswordModalOpen(true)}\n label={`Change Password`}\n icon={}\n variant={\"regular\"}\n disabled={userIDP}\n />\n \n \n {\n navigate(`${IAM_PAGES.ACCOUNT_ADD}`);\n }}\n label={`Create access key`}\n icon={}\n variant={\"callAction\"}\n />\n \n \n \n\n \n selectSAs(e, setSelectedSAs, selectedSAs)}\n selectedItems={selectedSAs}\n isLoading={loading}\n records={filteredRecords}\n idField=\"accessKey\"\n />\n \n \n }\n help={\n \n MinIO access keys are child identities of an authenticated\n MinIO user, including externally managed identities. Each\n access key inherits its privileges based on the policies\n attached to it’s parent user or those groups in which the\n parent user has membership. Access Keys also support an\n optional inline policy which further restricts access to a\n subset of actions and resources available to the parent user.\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 Account;\n"],"names":["_ref","open","closeModal","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","currentPassword","setCurrentPassword","_useState3","_useState4","newPassword","setNewPassword","_useState5","_useState6","reNewPassword","setReNewPassword","_useState7","_useState8","loading","setLoading","userLoggedIn","localStorage","getItem","_jsxs","ModalWrapper","title","concat","modalOpen","onClose","titleIcon","_jsx","ChangePasswordIcon","children","noValidate","autoComplete","onSubmit","e","event","preventDefault","length","setModalErrorSnackMessage","errorMessage","detailedError","request","current_secret_key","new_secret_key","api","account","accountChangePassword","then","catch","err","errorToHandler","changePassword","Grid","container","item","xs","sx","_objectSpread","modalStyleUtils","modalFormScrollable","FormLayout","withBorders","containerPadding","InputBox","id","name","onChange","target","value","label","type","modalButtonBar","Button","variant","color","disabled","ProgressBar","DeleteServiceAccount","withSuspense","React","navigate","useNavigate","features","useSelector","selFeatures","records","setRecords","filter","setFilter","deleteOpen","setDeleteOpen","_useState9","_useState10","selectedServiceAccount","setSelectedServiceAccount","_useState11","_useState12","changePasswordModalOpen","setChangePasswordModalOpen","_useState13","_useState14","selectedSAs","setSelectedSAs","_useState15","_useState16","deleteMultipleOpen","setDeleteMultipleOpen","_useState17","_useState18","policyOpen","setPolicyOpen","userIDP","includes","useEffect","fetchRecords","setHelpName","serviceAccounts","listUserServiceAccounts","res","sortedRows","data","sort","usersSort","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","json","sent","setErrorSnackMessage","stop","_x","apply","arguments","tableActions","onClick","policyModalOpen","accessKey","confirmDeleteServiceAccount","filteredRecords","elementItem","_elementItem$accessKe","toLowerCase","closeDeleteModalAndRefresh","refresh","DeleteMultipleServiceAccounts","setSnackBarMessage","ServiceAccountPolicy","selectedAccessKey","closeModalAndRefresh","ChangePasswordModal","PageHeaderWrapper","actions","HelpMenu","PageLayout","actionsTray","SearchBox","placeholder","marginRight","maxWidth","Box","display","flexWrap","gap","TooltipWrapper","tooltip","icon","DeleteIcon","SecureComponent","scopes","IAM_SCOPES","ADMIN_CREATE_USER","resource","CONSOLE_UI_RESOURCE","matchAll","errorProps","PasswordKeyIcon","ADMIN_CREATE_SERVICEACCOUNT","IAM_PAGES","ACCOUNT_ADD","AddIcon","DataTable","itemActions","entityName","columns","ACCOUNT_TABLE_COLUMNS","onSelect","selectSAs","selectedItems","isLoading","idField","marginTop","HelpBox","iconComponent","AccountIcon","help","Fragment","href","rel"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/416.13f98be6.chunk.js b/portal-ui/build/static/js/416.8346e1f6.chunk.js similarity index 97% rename from portal-ui/build/static/js/416.13f98be6.chunk.js rename to portal-ui/build/static/js/416.8346e1f6.chunk.js index c72af559fc..a3132bd8b4 100644 --- a/portal-ui/build/static/js/416.13f98be6.chunk.js +++ b/portal-ui/build/static/js/416.8346e1f6.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[416],{30416:function(e,t,a){a.r(t);var n=a(29439),i=a(72791),r=a(57689),c=a(29945),s=a(56087),l=a(87995),o=a(81551),d=a(47974),u=a(99670),p=a(31776),h=a(82342),g=a(17420),x=a(80184);t.default=function(){var e=(0,o.TL)(),t=(0,r.s0)(),a=new URLSearchParams(document.location.search),f=a.get("bucketName")||"",v=a.get("ruleID")||"";(0,i.useEffect)((function(){e((0,l.Sc)("bucket-replication-edit"))}),[]);var j=s.gA.BUCKETS+"/".concat(f,"/admin/replication"),m=(0,i.useState)(!0),b=(0,n.Z)(m,2),k=b[0],S=b[1],y=(0,i.useState)(!1),C=(0,n.Z)(y,2),Z=C[0],I=C[1],w=(0,i.useState)("1"),D=(0,n.Z)(w,2),E=D[0],R=D[1],M=(0,i.useState)(""),B=(0,n.Z)(M,2),T=B[0],O=B[1],z=(0,i.useState)(""),P=(0,n.Z)(z,2),A=P[0],N=P[1],_=(0,i.useState)(!1),W=(0,n.Z)(_,2),F=W[0],K=W[1],L=(0,i.useState)(!1),U=(0,n.Z)(L,2),q=U[0],V=U[1],Y=(0,i.useState)(""),X=(0,n.Z)(Y,2),G=X[0],H=X[1],J=(0,i.useState)(""),Q=(0,n.Z)(J,2),$=Q[0],ee=Q[1],te=(0,i.useState)(""),ae=(0,n.Z)(te,2),ne=ae[0],ie=ae[1],re=(0,i.useState)(!1),ce=(0,n.Z)(re,2),se=ce[0],le=ce[1],oe=(0,i.useState)(!1),de=(0,n.Z)(oe,2),ue=de[0],pe=de[1],he=(0,i.useState)(!1),ge=(0,n.Z)(he,2),xe=ge[0],fe=ge[1];return(0,i.useEffect)((function(){k&&f&&v&&p.h.buckets.getBucketReplicationRule(f,v).then((function(e){var t;R(e.data.priority?e.data.priority.toString():"");var a=e.data.prefix||"",n=e.data.tags||"";N(a),H(n),ee(n),O((null===(t=e.data.destination)||void 0===t?void 0:t.bucket)||""),K(e.data.delete_marker_replication||!1),ie(e.data.storageClass||""),le(!!e.data.existingObjects),pe(!!e.data.deletes_replication),fe("Enabled"===e.data.status),V(!!e.data.metadata_replication),S(!1)})).catch((function(t){e((0,l.Ih)((0,h.g)(t.error))),S(!1)}))}),[k,e,f,v]),(0,i.useEffect)((function(){if(Z&&f&&v){var a={arn:T,ruleState:xe,prefix:A,tags:$,replicateDeleteMarkers:F,replicateDeletes:ue,replicateExistingObjects:se,replicateMetadata:q,priority:parseInt(E),storageClass:ne};p.h.buckets.updateMultiBucketReplication(f,v,a).then((function(){t(j)})).catch((function(t){e((0,l.Ih)((0,h.g)(t.error))),I(!1)}))}}),[Z,f,v,T,A,$,F,E,ue,se,xe,q,ne,e]),(0,x.jsxs)(i.Fragment,{children:[(0,x.jsx)(d.Z,{label:(0,x.jsx)(c.hbI,{label:"Edit Bucket Replication",onClick:function(){return t(j)}}),actions:(0,x.jsx)(u.Z,{})}),(0,x.jsx)(c.Xgh,{children:(0,x.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),I(!0)},children:(0,x.jsxs)(c.ltY,{containerPadding:!1,withBorders:!1,helpBox:(0,x.jsx)(c.KfX,{iconComponent:(0,x.jsx)(c.xRg,{}),title:"Bucket Replication Configuration",help:(0,x.jsxs)(i.Fragment,{children:[(0,x.jsx)(c.xuv,{sx:{paddingTop:"10px"},children:"For each write operation to the bucket, MinIO checks all configured replication rules for the bucket and applies the matching rule with highest configured priority."}),(0,x.jsx)(c.xuv,{sx:{paddingTop:"10px"},children:"MinIO supports enabling replication of existing objects in a bucket."}),(0,x.jsx)(c.xuv,{sx:{paddingTop:"10px"},children:"MinIO does not enable existing object replication by default. Objects created before replication was configured or while replication is disabled are not synchronized to the target deployment unless replication of existing objects is enabled."}),(0,x.jsx)(c.xuv,{sx:{paddingTop:"10px"},children:"MinIO supports replicating delete operations, where MinIO synchronizes deleting specific object versions and new delete markers. Delete operation replication uses the same replication process as all other replication operations."})," "]})}),children:[(0,x.jsx)(c.rsf,{checked:xe,id:"ruleState",name:"ruleState",label:"Rule State",onChange:function(e){fe(e.target.checked)}}),(0,x.jsx)(c.bSr,{label:"Destination",sx:{width:"100%"},children:T}),(0,x.jsx)(c.Wzg,{id:"priority",name:"priority",onChange:function(e){e.target.validity.valid&&R(e.target.value)},label:"Priority",value:E,pattern:"[0-9]*"}),(0,x.jsx)(c.Wzg,{id:"storageClass",name:"storageClass",onChange:function(e){ie(e.target.value)},placeholder:"STANDARD_IA,REDUCED_REDUNDANCY etc",label:"Storage Class",value:ne}),(0,x.jsxs)("fieldset",{className:"inputItem",children:[(0,x.jsx)("legend",{children:"Object Filters"}),(0,x.jsx)(c.Wzg,{id:"prefix",name:"prefix",onChange:function(e){N(e.target.value)},placeholder:"prefix",label:"Prefix",value:A}),(0,x.jsx)(g.Z,{name:"tags",label:"Tags",elements:G,onChange:function(e){ee(e)},keyPlaceholder:"Tag Key",valuePlaceholder:"Tag Value",withBorder:!0})]}),(0,x.jsxs)("fieldset",{className:"inputItem",children:[(0,x.jsx)("legend",{children:"Replication Options"}),(0,x.jsx)(c.rsf,{checked:se,id:"repExisting",name:"repExisting",label:"Existing Objects",onChange:function(e){le(e.target.checked)},description:"Replicate existing objects"}),(0,x.jsx)(c.rsf,{checked:q,id:"metadatataSync",name:"metadatataSync",label:"Metadata Sync",onChange:function(e){V(e.target.checked)},description:"Metadata Sync"}),(0,x.jsx)(c.rsf,{checked:F,id:"deleteMarker",name:"deleteMarker",label:"Delete Marker",onChange:function(e){K(e.target.checked)},description:"Replicate soft deletes"}),(0,x.jsx)(c.rsf,{checked:ue,id:"repDelete",name:"repDelete",label:"Deletes",onChange:function(e){pe(e.target.checked)},description:"Replicate versioned deletes"})]}),(0,x.jsxs)(c.rjZ,{item:!0,xs:12,sx:{display:"flex",flexDirection:"row",justifyContent:"end",gap:10,paddingTop:10},children:[(0,x.jsx)(c.zxk,{id:"cancel-edit-replication",type:"button",variant:"regular",disabled:k||Z,onClick:function(){t(j)},label:"Cancel"}),(0,x.jsx)(c.zxk,{id:"save-replication",type:"submit",variant:"callAction",disabled:k||Z,label:"Save"})]})]})})})]})}},17420:function(e,t,a){var n=a(93433),i=a(29439),r=a(72791),c=a(26181),s=a.n(c),l=a(48573),o=a.n(l),d=a(29945),u=a(80184);t.Z=function(e){var t=e.elements,a=e.name,c=e.label,l=e.tooltip,p=void 0===l?"":l,h=e.keyPlaceholder,g=void 0===h?"":h,x=e.valuePlaceholder,f=void 0===x?"":x,v=e.onChange,j=e.withBorder,m=void 0!==j&&j,b=(0,r.useState)([""]),k=(0,i.Z)(b,2),S=k[0],y=k[1],C=(0,r.useState)([""]),Z=(0,i.Z)(C,2),I=Z[0],w=Z[1],D=(0,r.createRef)();(0,r.useEffect)((function(){if(1===S.length&&""===S[0]&&1===I.length&&""===I[0]&&t&&""!==t){var e=t.split("&"),a=[],n=[];e.forEach((function(e){var t=e.split("=");2===t.length&&(a.push(t[0]),n.push(t[1]))})),a.push(""),n.push(""),y(a),w(n)}}),[S,I,t]),(0,r.useEffect)((function(){var e=D.current;e&&S.length>1&&e.scrollIntoView(!1)}),[S]);var E=(0,r.useRef)(!0);(0,r.useLayoutEffect)((function(){E.current?E.current=!1:B()}),[S,I]);var R=function(e){e.persist();var t=(0,n.Z)(S),a=s()(e.target,"dataset.index","0");t[parseInt(a)]=e.target.value,y(t)},M=function(e){e.persist();var t=(0,n.Z)(I),a=s()(e.target,"dataset.index","0");t[parseInt(a)]=e.target.value,w(t)},B=o()((function(){var e="";S.forEach((function(t,a){if(S[a]&&I[a]){var n="".concat(t,"=").concat(I[a]);0!==a&&(n="&".concat(n)),e="".concat(e).concat(n)}})),v(e)}),500),T=I.map((function(e,t){return(0,u.jsxs)(d.rjZ,{item:!0,xs:12,className:"lineInputBoxes inputItem",children:[(0,u.jsx)(d.Wzg,{id:"".concat(a,"-key-").concat(t.toString()),label:"",name:"".concat(a,"-").concat(t.toString()),value:S[t],onChange:R,index:t,placeholder:g}),(0,u.jsx)("span",{className:"queryDiv",children:":"}),(0,u.jsx)(d.Wzg,{id:"".concat(a,"-value-").concat(t.toString()),label:"",name:"".concat(a,"-").concat(t.toString()),value:I[t],onChange:M,index:t,placeholder:f,overlayIcon:t===I.length-1?(0,u.jsx)(d.dtP,{}):null,overlayAction:function(){!function(){if(""!==S[S.length-1].trim()&&""!==I[I.length-1].trim()){var e=(0,n.Z)(S),t=(0,n.Z)(I);e.push(""),t.push(""),y(e),w(t)}}()}})]},"query-pair-".concat(a,"-").concat(t.toString()))}));return(0,u.jsx)(r.Fragment,{children:(0,u.jsxs)(d.rjZ,{item:!0,xs:12,sx:{"& .lineInputBoxes":{display:"flex"},"& .queryDiv":{alignSelf:"center",margin:"-15px 4px 0",fontWeight:600}},children:[(0,u.jsxs)(d.AZs,{children:[c,""!==p&&(0,u.jsx)(d.xuv,{sx:{marginLeft:5,display:"flex",alignItems:"center","& .min-icon":{width:13}},children:(0,u.jsx)(d.ua7,{tooltip:p,placement:"top",children:(0,u.jsx)(d.byK,{style:{width:13,height:13}})})})]}),(0,u.jsxs)(d.xuv,{withBorders:m,sx:{padding:15,height:150,overflowY:"auto",position:"relative",marginTop:15},children:[T,(0,u.jsx)("div",{ref:D})]})]})})}}}]); -//# sourceMappingURL=416.13f98be6.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[416],{30416:function(e,t,a){a.r(t);var n=a(29439),i=a(72791),r=a(57689),c=a(29945),s=a(56087),l=a(87995),o=a(44690),d=a(47974),u=a(99670),p=a(31776),h=a(82342),g=a(17420),x=a(80184);t.default=function(){var e=(0,o.TL)(),t=(0,r.s0)(),a=new URLSearchParams(document.location.search),f=a.get("bucketName")||"",v=a.get("ruleID")||"";(0,i.useEffect)((function(){e((0,l.Sc)("bucket-replication-edit"))}),[]);var j=s.gA.BUCKETS+"/".concat(f,"/admin/replication"),m=(0,i.useState)(!0),b=(0,n.Z)(m,2),k=b[0],S=b[1],y=(0,i.useState)(!1),C=(0,n.Z)(y,2),Z=C[0],I=C[1],w=(0,i.useState)("1"),D=(0,n.Z)(w,2),E=D[0],R=D[1],M=(0,i.useState)(""),B=(0,n.Z)(M,2),T=B[0],O=B[1],z=(0,i.useState)(""),P=(0,n.Z)(z,2),A=P[0],N=P[1],_=(0,i.useState)(!1),W=(0,n.Z)(_,2),F=W[0],K=W[1],L=(0,i.useState)(!1),U=(0,n.Z)(L,2),q=U[0],V=U[1],Y=(0,i.useState)(""),X=(0,n.Z)(Y,2),G=X[0],H=X[1],J=(0,i.useState)(""),Q=(0,n.Z)(J,2),$=Q[0],ee=Q[1],te=(0,i.useState)(""),ae=(0,n.Z)(te,2),ne=ae[0],ie=ae[1],re=(0,i.useState)(!1),ce=(0,n.Z)(re,2),se=ce[0],le=ce[1],oe=(0,i.useState)(!1),de=(0,n.Z)(oe,2),ue=de[0],pe=de[1],he=(0,i.useState)(!1),ge=(0,n.Z)(he,2),xe=ge[0],fe=ge[1];return(0,i.useEffect)((function(){k&&f&&v&&p.h.buckets.getBucketReplicationRule(f,v).then((function(e){var t;R(e.data.priority?e.data.priority.toString():"");var a=e.data.prefix||"",n=e.data.tags||"";N(a),H(n),ee(n),O((null===(t=e.data.destination)||void 0===t?void 0:t.bucket)||""),K(e.data.delete_marker_replication||!1),ie(e.data.storageClass||""),le(!!e.data.existingObjects),pe(!!e.data.deletes_replication),fe("Enabled"===e.data.status),V(!!e.data.metadata_replication),S(!1)})).catch((function(t){e((0,l.Ih)((0,h.g)(t.error))),S(!1)}))}),[k,e,f,v]),(0,i.useEffect)((function(){if(Z&&f&&v){var a={arn:T,ruleState:xe,prefix:A,tags:$,replicateDeleteMarkers:F,replicateDeletes:ue,replicateExistingObjects:se,replicateMetadata:q,priority:parseInt(E),storageClass:ne};p.h.buckets.updateMultiBucketReplication(f,v,a).then((function(){t(j)})).catch((function(t){e((0,l.Ih)((0,h.g)(t.error))),I(!1)}))}}),[Z,f,v,T,A,$,F,E,ue,se,xe,q,ne,e]),(0,x.jsxs)(i.Fragment,{children:[(0,x.jsx)(d.Z,{label:(0,x.jsx)(c.hbI,{label:"Edit Bucket Replication",onClick:function(){return t(j)}}),actions:(0,x.jsx)(u.Z,{})}),(0,x.jsx)(c.Xgh,{children:(0,x.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),I(!0)},children:(0,x.jsxs)(c.ltY,{containerPadding:!1,withBorders:!1,helpBox:(0,x.jsx)(c.KfX,{iconComponent:(0,x.jsx)(c.xRg,{}),title:"Bucket Replication Configuration",help:(0,x.jsxs)(i.Fragment,{children:[(0,x.jsx)(c.xuv,{sx:{paddingTop:"10px"},children:"For each write operation to the bucket, MinIO checks all configured replication rules for the bucket and applies the matching rule with highest configured priority."}),(0,x.jsx)(c.xuv,{sx:{paddingTop:"10px"},children:"MinIO supports enabling replication of existing objects in a bucket."}),(0,x.jsx)(c.xuv,{sx:{paddingTop:"10px"},children:"MinIO does not enable existing object replication by default. Objects created before replication was configured or while replication is disabled are not synchronized to the target deployment unless replication of existing objects is enabled."}),(0,x.jsx)(c.xuv,{sx:{paddingTop:"10px"},children:"MinIO supports replicating delete operations, where MinIO synchronizes deleting specific object versions and new delete markers. Delete operation replication uses the same replication process as all other replication operations."})," "]})}),children:[(0,x.jsx)(c.rsf,{checked:xe,id:"ruleState",name:"ruleState",label:"Rule State",onChange:function(e){fe(e.target.checked)}}),(0,x.jsx)(c.bSr,{label:"Destination",sx:{width:"100%"},children:T}),(0,x.jsx)(c.Wzg,{id:"priority",name:"priority",onChange:function(e){e.target.validity.valid&&R(e.target.value)},label:"Priority",value:E,pattern:"[0-9]*"}),(0,x.jsx)(c.Wzg,{id:"storageClass",name:"storageClass",onChange:function(e){ie(e.target.value)},placeholder:"STANDARD_IA,REDUCED_REDUNDANCY etc",label:"Storage Class",value:ne}),(0,x.jsxs)("fieldset",{className:"inputItem",children:[(0,x.jsx)("legend",{children:"Object Filters"}),(0,x.jsx)(c.Wzg,{id:"prefix",name:"prefix",onChange:function(e){N(e.target.value)},placeholder:"prefix",label:"Prefix",value:A}),(0,x.jsx)(g.Z,{name:"tags",label:"Tags",elements:G,onChange:function(e){ee(e)},keyPlaceholder:"Tag Key",valuePlaceholder:"Tag Value",withBorder:!0})]}),(0,x.jsxs)("fieldset",{className:"inputItem",children:[(0,x.jsx)("legend",{children:"Replication Options"}),(0,x.jsx)(c.rsf,{checked:se,id:"repExisting",name:"repExisting",label:"Existing Objects",onChange:function(e){le(e.target.checked)},description:"Replicate existing objects"}),(0,x.jsx)(c.rsf,{checked:q,id:"metadatataSync",name:"metadatataSync",label:"Metadata Sync",onChange:function(e){V(e.target.checked)},description:"Metadata Sync"}),(0,x.jsx)(c.rsf,{checked:F,id:"deleteMarker",name:"deleteMarker",label:"Delete Marker",onChange:function(e){K(e.target.checked)},description:"Replicate soft deletes"}),(0,x.jsx)(c.rsf,{checked:ue,id:"repDelete",name:"repDelete",label:"Deletes",onChange:function(e){pe(e.target.checked)},description:"Replicate versioned deletes"})]}),(0,x.jsxs)(c.rjZ,{item:!0,xs:12,sx:{display:"flex",flexDirection:"row",justifyContent:"end",gap:10,paddingTop:10},children:[(0,x.jsx)(c.zxk,{id:"cancel-edit-replication",type:"button",variant:"regular",disabled:k||Z,onClick:function(){t(j)},label:"Cancel"}),(0,x.jsx)(c.zxk,{id:"save-replication",type:"submit",variant:"callAction",disabled:k||Z,label:"Save"})]})]})})})]})}},17420:function(e,t,a){var n=a(93433),i=a(29439),r=a(72791),c=a(26181),s=a.n(c),l=a(48573),o=a.n(l),d=a(29945),u=a(80184);t.Z=function(e){var t=e.elements,a=e.name,c=e.label,l=e.tooltip,p=void 0===l?"":l,h=e.keyPlaceholder,g=void 0===h?"":h,x=e.valuePlaceholder,f=void 0===x?"":x,v=e.onChange,j=e.withBorder,m=void 0!==j&&j,b=(0,r.useState)([""]),k=(0,i.Z)(b,2),S=k[0],y=k[1],C=(0,r.useState)([""]),Z=(0,i.Z)(C,2),I=Z[0],w=Z[1],D=(0,r.createRef)();(0,r.useEffect)((function(){if(1===S.length&&""===S[0]&&1===I.length&&""===I[0]&&t&&""!==t){var e=t.split("&"),a=[],n=[];e.forEach((function(e){var t=e.split("=");2===t.length&&(a.push(t[0]),n.push(t[1]))})),a.push(""),n.push(""),y(a),w(n)}}),[S,I,t]),(0,r.useEffect)((function(){var e=D.current;e&&S.length>1&&e.scrollIntoView(!1)}),[S]);var E=(0,r.useRef)(!0);(0,r.useLayoutEffect)((function(){E.current?E.current=!1:B()}),[S,I]);var R=function(e){e.persist();var t=(0,n.Z)(S),a=s()(e.target,"dataset.index","0");t[parseInt(a)]=e.target.value,y(t)},M=function(e){e.persist();var t=(0,n.Z)(I),a=s()(e.target,"dataset.index","0");t[parseInt(a)]=e.target.value,w(t)},B=o()((function(){var e="";S.forEach((function(t,a){if(S[a]&&I[a]){var n="".concat(t,"=").concat(I[a]);0!==a&&(n="&".concat(n)),e="".concat(e).concat(n)}})),v(e)}),500),T=I.map((function(e,t){return(0,u.jsxs)(d.rjZ,{item:!0,xs:12,className:"lineInputBoxes inputItem",children:[(0,u.jsx)(d.Wzg,{id:"".concat(a,"-key-").concat(t.toString()),label:"",name:"".concat(a,"-").concat(t.toString()),value:S[t],onChange:R,index:t,placeholder:g}),(0,u.jsx)("span",{className:"queryDiv",children:":"}),(0,u.jsx)(d.Wzg,{id:"".concat(a,"-value-").concat(t.toString()),label:"",name:"".concat(a,"-").concat(t.toString()),value:I[t],onChange:M,index:t,placeholder:f,overlayIcon:t===I.length-1?(0,u.jsx)(d.dtP,{}):null,overlayAction:function(){!function(){if(""!==S[S.length-1].trim()&&""!==I[I.length-1].trim()){var e=(0,n.Z)(S),t=(0,n.Z)(I);e.push(""),t.push(""),y(e),w(t)}}()}})]},"query-pair-".concat(a,"-").concat(t.toString()))}));return(0,u.jsx)(r.Fragment,{children:(0,u.jsxs)(d.rjZ,{item:!0,xs:12,sx:{"& .lineInputBoxes":{display:"flex"},"& .queryDiv":{alignSelf:"center",margin:"-15px 4px 0",fontWeight:600}},children:[(0,u.jsxs)(d.AZs,{children:[c,""!==p&&(0,u.jsx)(d.xuv,{sx:{marginLeft:5,display:"flex",alignItems:"center","& .min-icon":{width:13}},children:(0,u.jsx)(d.ua7,{tooltip:p,placement:"top",children:(0,u.jsx)(d.byK,{style:{width:13,height:13}})})})]}),(0,u.jsxs)(d.xuv,{withBorders:m,sx:{padding:15,height:150,overflowY:"auto",position:"relative",marginTop:15},children:[T,(0,u.jsx)("div",{ref:D})]})]})})}}}]); +//# sourceMappingURL=416.8346e1f6.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/416.13f98be6.chunk.js.map b/portal-ui/build/static/js/416.8346e1f6.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/416.13f98be6.chunk.js.map rename to portal-ui/build/static/js/416.8346e1f6.chunk.js.map index 2ca990fb93..fe0cf7ce7a 100644 --- a/portal-ui/build/static/js/416.13f98be6.chunk.js.map +++ b/portal-ui/build/static/js/416.8346e1f6.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/416.13f98be6.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/EditBucketReplication.tsx","screens/Console/Common/FormComponents/QueryMultiSelector/QueryMultiSelector.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n BackLink,\n Box,\n BucketReplicationIcon,\n Button,\n FormLayout,\n Grid,\n HelpBox,\n InputBox,\n PageLayout,\n ReadBox,\n Switch,\n} from \"mds\";\nimport { IAM_PAGES } from \"../../../../common/SecureComponent/permissions\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../../HelpMenu\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport QueryMultiSelector from \"screens/Console/Common/FormComponents/QueryMultiSelector/QueryMultiSelector\";\n\nconst EditBucketReplication = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n let params = new URLSearchParams(document.location.search);\n\n const bucketName = params.get(\"bucketName\") || \"\";\n const ruleID = params.get(\"ruleID\") || \"\";\n\n useEffect(() => {\n dispatch(setHelpName(\"bucket-replication-edit\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const backLink = IAM_PAGES.BUCKETS + `/${bucketName}/admin/replication`;\n\n const [editLoading, setEditLoading] = useState(true);\n const [saveEdit, setSaveEdit] = useState(false);\n const [priority, setPriority] = useState(\"1\");\n const [destination, setDestination] = useState(\"\");\n const [prefix, setPrefix] = useState(\"\");\n const [repDeleteMarker, setRepDeleteMarker] = useState(false);\n const [metadataSync, setMetadataSync] = useState(false);\n const [initialTags, setInitialTags] = useState(\"\");\n const [tags, setTags] = useState(\"\");\n const [targetStorageClass, setTargetStorageClass] = useState(\"\");\n const [repExisting, setRepExisting] = useState(false);\n const [repDelete, setRepDelete] = useState(false);\n const [ruleState, setRuleState] = useState(false);\n\n useEffect(() => {\n if (editLoading && bucketName && ruleID) {\n api.buckets\n\n .getBucketReplicationRule(bucketName, ruleID)\n .then((res) => {\n setPriority(res.data.priority ? res.data.priority.toString() : \"\");\n const pref = res.data.prefix || \"\";\n const tag = res.data.tags || \"\";\n setPrefix(pref);\n setInitialTags(tag);\n setTags(tag);\n setDestination(res.data.destination?.bucket || \"\");\n setRepDeleteMarker(res.data.delete_marker_replication || false);\n setTargetStorageClass(res.data.storageClass || \"\");\n setRepExisting(!!res.data.existingObjects);\n setRepDelete(!!res.data.deletes_replication);\n setRuleState(res.data.status === \"Enabled\");\n setMetadataSync(!!res.data.metadata_replication);\n\n setEditLoading(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setEditLoading(false);\n });\n }\n }, [editLoading, dispatch, bucketName, ruleID]);\n\n useEffect(() => {\n if (saveEdit && bucketName && ruleID) {\n const remoteBucketsInfo = {\n arn: destination,\n ruleState: ruleState,\n prefix: prefix,\n tags: tags,\n replicateDeleteMarkers: repDeleteMarker,\n replicateDeletes: repDelete,\n replicateExistingObjects: repExisting,\n replicateMetadata: metadataSync,\n priority: parseInt(priority),\n storageClass: targetStorageClass,\n };\n\n api.buckets\n .updateMultiBucketReplication(bucketName, ruleID, remoteBucketsInfo)\n .then(() => {\n navigate(backLink);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setSaveEdit(false);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n saveEdit,\n bucketName,\n ruleID,\n destination,\n prefix,\n tags,\n repDeleteMarker,\n priority,\n repDelete,\n repExisting,\n ruleState,\n metadataSync,\n targetStorageClass,\n dispatch,\n ]);\n\n return (\n \n navigate(backLink)}\n />\n }\n actions={}\n />\n \n ) => {\n e.preventDefault();\n setSaveEdit(true);\n }}\n >\n }\n title=\"Bucket Replication Configuration\"\n help={\n \n \n For each write operation to the bucket, MinIO checks all\n configured replication rules for the bucket and applies\n the matching rule with highest configured priority.\n \n \n MinIO supports enabling replication of existing objects in\n a bucket.\n \n \n MinIO does not enable existing object replication by\n default. Objects created before replication was configured\n or while replication is disabled are not synchronized to\n the target deployment unless replication of existing\n objects is enabled.\n \n \n MinIO supports replicating delete operations, where MinIO\n synchronizes deleting specific object versions and new\n delete markers. Delete operation replication uses the same\n replication process as all other replication operations.\n {\" \"}\n \n }\n />\n }\n >\n {\n setRuleState(e.target.checked);\n }}\n />\n \n {destination}\n \n ) => {\n if (e.target.validity.valid) {\n setPriority(e.target.value);\n }\n }}\n label=\"Priority\"\n value={priority}\n pattern={\"[0-9]*\"}\n />\n ) => {\n setTargetStorageClass(e.target.value);\n }}\n placeholder=\"STANDARD_IA,REDUCED_REDUNDANCY etc\"\n label=\"Storage Class\"\n value={targetStorageClass}\n />\n
    \n Object Filters\n ) => {\n setPrefix(e.target.value);\n }}\n placeholder=\"prefix\"\n label=\"Prefix\"\n value={prefix}\n />\n {\n setTags(vl);\n }}\n keyPlaceholder=\"Tag Key\"\n valuePlaceholder=\"Tag Value\"\n withBorder\n />\n
    \n
    \n Replication Options\n {\n setRepExisting(e.target.checked);\n }}\n description={\"Replicate existing objects\"}\n />\n {\n setMetadataSync(e.target.checked);\n }}\n description={\"Metadata Sync\"}\n />\n {\n setRepDeleteMarker(e.target.checked);\n }}\n description={\"Replicate soft deletes\"}\n />\n {\n setRepDelete(e.target.checked);\n }}\n description={\"Replicate versioned deletes\"}\n />\n
    \n \n {\n navigate(backLink);\n }}\n label={\"Cancel\"}\n />\n \n \n \n \n
    \n
    \n );\n};\n\nexport default EditBucketReplication;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more 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, {\n ChangeEvent,\n createRef,\n Fragment,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport get from \"lodash/get\";\nimport debounce from \"lodash/debounce\";\nimport {\n AddIcon,\n Box,\n Grid,\n HelpIcon,\n InputBox,\n InputLabel,\n Tooltip,\n} from \"mds\";\n\ninterface IQueryMultiSelector {\n elements: string;\n name: string;\n label: string;\n tooltip?: string;\n keyPlaceholder?: string;\n valuePlaceholder?: string;\n withBorder?: boolean;\n onChange: (elements: string) => void;\n}\n\nconst QueryMultiSelector = ({\n elements,\n name,\n label,\n tooltip = \"\",\n keyPlaceholder = \"\",\n valuePlaceholder = \"\",\n onChange,\n withBorder = false,\n}: IQueryMultiSelector) => {\n const [currentKeys, setCurrentKeys] = useState([\"\"]);\n const [currentValues, setCurrentValues] = useState([\"\"]);\n const bottomList = createRef();\n\n // Use effect to get the initial values from props\n useEffect(() => {\n if (\n currentKeys.length === 1 &&\n currentKeys[0] === \"\" &&\n currentValues.length === 1 &&\n currentValues[0] === \"\" &&\n elements &&\n elements !== \"\"\n ) {\n const elementsSplit = elements.split(\"&\");\n let keys = [];\n let values = [];\n\n elementsSplit.forEach((element: string) => {\n const splittedVals = element.split(\"=\");\n if (splittedVals.length === 2) {\n keys.push(splittedVals[0]);\n values.push(splittedVals[1]);\n }\n });\n\n keys.push(\"\");\n values.push(\"\");\n\n setCurrentKeys(keys);\n setCurrentValues(values);\n }\n }, [currentKeys, currentValues, elements]);\n\n // Use effect to send new values to onChange\n useEffect(() => {\n const refScroll = bottomList.current;\n if (refScroll && currentKeys.length > 1) {\n refScroll.scrollIntoView(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentKeys]);\n\n // We avoid multiple re-renders / hang issue typing too fast\n const firstUpdate = useRef(true);\n useLayoutEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = false;\n return;\n }\n debouncedOnChange();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentKeys, currentValues]);\n\n // If the last input is not empty, we add a new one\n const addEmptyLine = () => {\n if (\n currentKeys[currentKeys.length - 1].trim() !== \"\" &&\n currentValues[currentValues.length - 1].trim() !== \"\"\n ) {\n const keysList = [...currentKeys];\n const valuesList = [...currentValues];\n\n keysList.push(\"\");\n valuesList.push(\"\");\n\n setCurrentKeys(keysList);\n setCurrentValues(valuesList);\n }\n };\n\n // Onchange function for input box, we get the dataset-index & only update that value in the array\n const onChangeKey = (e: ChangeEvent) => {\n e.persist();\n\n let updatedElement = [...currentKeys];\n const index = get(e.target, \"dataset.index\", \"0\");\n const indexNum = parseInt(index);\n updatedElement[indexNum] = e.target.value;\n\n setCurrentKeys(updatedElement);\n };\n\n const onChangeValue = (e: ChangeEvent) => {\n e.persist();\n\n let updatedElement = [...currentValues];\n const index = get(e.target, \"dataset.index\", \"0\");\n const indexNum = parseInt(index);\n updatedElement[indexNum] = e.target.value;\n\n setCurrentValues(updatedElement);\n };\n\n // Debounce for On Change\n const debouncedOnChange = debounce(() => {\n let queryString = \"\";\n\n currentKeys.forEach((keyVal, index) => {\n if (currentKeys[index] && currentValues[index]) {\n let insertString = `${keyVal}=${currentValues[index]}`;\n if (index !== 0) {\n insertString = `&${insertString}`;\n }\n queryString = `${queryString}${insertString}`;\n }\n });\n\n onChange(queryString);\n }, 500);\n\n const inputs = currentValues.map((element, index) => {\n return (\n \n \n :\n : null}\n overlayAction={() => {\n addEmptyLine();\n }}\n />\n \n );\n });\n\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n \n \n \n \n \n )}\n \n \n {inputs}\n
    \n \n \n \n );\n};\nexport default QueryMultiSelector;\n"],"names":["dispatch","useAppDispatch","navigate","useNavigate","params","URLSearchParams","document","location","search","bucketName","get","ruleID","useEffect","setHelpName","backLink","IAM_PAGES","BUCKETS","concat","_useState","useState","_useState2","_slicedToArray","editLoading","setEditLoading","_useState3","_useState4","saveEdit","setSaveEdit","_useState5","_useState6","priority","setPriority","_useState7","_useState8","destination","setDestination","_useState9","_useState10","prefix","setPrefix","_useState11","_useState12","repDeleteMarker","setRepDeleteMarker","_useState13","_useState14","metadataSync","setMetadataSync","_useState15","_useState16","initialTags","setInitialTags","_useState17","_useState18","tags","setTags","_useState19","_useState20","targetStorageClass","setTargetStorageClass","_useState21","_useState22","repExisting","setRepExisting","_useState23","_useState24","repDelete","setRepDelete","_useState25","_useState26","ruleState","setRuleState","api","buckets","getBucketReplicationRule","then","res","_res$data$destination","data","toString","pref","tag","bucket","delete_marker_replication","storageClass","existingObjects","deletes_replication","status","metadata_replication","catch","err","setErrorSnackMessage","errorToHandler","error","remoteBucketsInfo","arn","replicateDeleteMarkers","replicateDeletes","replicateExistingObjects","replicateMetadata","parseInt","updateMultiBucketReplication","_jsxs","Fragment","children","_jsx","PageHeaderWrapper","label","BackLink","onClick","actions","HelpMenu","PageLayout","noValidate","autoComplete","onSubmit","e","preventDefault","FormLayout","containerPadding","withBorders","helpBox","HelpBox","iconComponent","BucketReplicationIcon","title","help","Box","sx","paddingTop","Switch","checked","id","name","onChange","target","ReadBox","width","InputBox","validity","valid","value","pattern","placeholder","className","QueryMultiSelector","elements","vl","keyPlaceholder","valuePlaceholder","withBorder","description","Grid","item","xs","display","flexDirection","justifyContent","gap","Button","type","variant","disabled","_ref","_ref$tooltip","tooltip","_ref$keyPlaceholder","_ref$valuePlaceholder","_ref$withBorder","currentKeys","setCurrentKeys","currentValues","setCurrentValues","bottomList","createRef","length","elementsSplit","split","keys","values","forEach","element","splittedVals","push","refScroll","current","scrollIntoView","firstUpdate","useRef","useLayoutEffect","debouncedOnChange","onChangeKey","persist","updatedElement","_toConsumableArray","index","onChangeValue","debounce","queryString","keyVal","insertString","inputs","map","overlayIcon","AddIcon","overlayAction","trim","keysList","valuesList","addEmptyLine","alignSelf","margin","fontWeight","InputLabel","marginLeft","alignItems","Tooltip","placement","HelpIcon","style","height","padding","overflowY","position","marginTop","ref"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/416.8346e1f6.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/EditBucketReplication.tsx","screens/Console/Common/FormComponents/QueryMultiSelector/QueryMultiSelector.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n BackLink,\n Box,\n BucketReplicationIcon,\n Button,\n FormLayout,\n Grid,\n HelpBox,\n InputBox,\n PageLayout,\n ReadBox,\n Switch,\n} from \"mds\";\nimport { IAM_PAGES } from \"../../../../common/SecureComponent/permissions\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../../HelpMenu\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport QueryMultiSelector from \"screens/Console/Common/FormComponents/QueryMultiSelector/QueryMultiSelector\";\n\nconst EditBucketReplication = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n let params = new URLSearchParams(document.location.search);\n\n const bucketName = params.get(\"bucketName\") || \"\";\n const ruleID = params.get(\"ruleID\") || \"\";\n\n useEffect(() => {\n dispatch(setHelpName(\"bucket-replication-edit\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const backLink = IAM_PAGES.BUCKETS + `/${bucketName}/admin/replication`;\n\n const [editLoading, setEditLoading] = useState(true);\n const [saveEdit, setSaveEdit] = useState(false);\n const [priority, setPriority] = useState(\"1\");\n const [destination, setDestination] = useState(\"\");\n const [prefix, setPrefix] = useState(\"\");\n const [repDeleteMarker, setRepDeleteMarker] = useState(false);\n const [metadataSync, setMetadataSync] = useState(false);\n const [initialTags, setInitialTags] = useState(\"\");\n const [tags, setTags] = useState(\"\");\n const [targetStorageClass, setTargetStorageClass] = useState(\"\");\n const [repExisting, setRepExisting] = useState(false);\n const [repDelete, setRepDelete] = useState(false);\n const [ruleState, setRuleState] = useState(false);\n\n useEffect(() => {\n if (editLoading && bucketName && ruleID) {\n api.buckets\n\n .getBucketReplicationRule(bucketName, ruleID)\n .then((res) => {\n setPriority(res.data.priority ? res.data.priority.toString() : \"\");\n const pref = res.data.prefix || \"\";\n const tag = res.data.tags || \"\";\n setPrefix(pref);\n setInitialTags(tag);\n setTags(tag);\n setDestination(res.data.destination?.bucket || \"\");\n setRepDeleteMarker(res.data.delete_marker_replication || false);\n setTargetStorageClass(res.data.storageClass || \"\");\n setRepExisting(!!res.data.existingObjects);\n setRepDelete(!!res.data.deletes_replication);\n setRuleState(res.data.status === \"Enabled\");\n setMetadataSync(!!res.data.metadata_replication);\n\n setEditLoading(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setEditLoading(false);\n });\n }\n }, [editLoading, dispatch, bucketName, ruleID]);\n\n useEffect(() => {\n if (saveEdit && bucketName && ruleID) {\n const remoteBucketsInfo = {\n arn: destination,\n ruleState: ruleState,\n prefix: prefix,\n tags: tags,\n replicateDeleteMarkers: repDeleteMarker,\n replicateDeletes: repDelete,\n replicateExistingObjects: repExisting,\n replicateMetadata: metadataSync,\n priority: parseInt(priority),\n storageClass: targetStorageClass,\n };\n\n api.buckets\n .updateMultiBucketReplication(bucketName, ruleID, remoteBucketsInfo)\n .then(() => {\n navigate(backLink);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setSaveEdit(false);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n saveEdit,\n bucketName,\n ruleID,\n destination,\n prefix,\n tags,\n repDeleteMarker,\n priority,\n repDelete,\n repExisting,\n ruleState,\n metadataSync,\n targetStorageClass,\n dispatch,\n ]);\n\n return (\n \n navigate(backLink)}\n />\n }\n actions={}\n />\n \n ) => {\n e.preventDefault();\n setSaveEdit(true);\n }}\n >\n }\n title=\"Bucket Replication Configuration\"\n help={\n \n \n For each write operation to the bucket, MinIO checks all\n configured replication rules for the bucket and applies\n the matching rule with highest configured priority.\n \n \n MinIO supports enabling replication of existing objects in\n a bucket.\n \n \n MinIO does not enable existing object replication by\n default. Objects created before replication was configured\n or while replication is disabled are not synchronized to\n the target deployment unless replication of existing\n objects is enabled.\n \n \n MinIO supports replicating delete operations, where MinIO\n synchronizes deleting specific object versions and new\n delete markers. Delete operation replication uses the same\n replication process as all other replication operations.\n {\" \"}\n \n }\n />\n }\n >\n {\n setRuleState(e.target.checked);\n }}\n />\n \n {destination}\n \n ) => {\n if (e.target.validity.valid) {\n setPriority(e.target.value);\n }\n }}\n label=\"Priority\"\n value={priority}\n pattern={\"[0-9]*\"}\n />\n ) => {\n setTargetStorageClass(e.target.value);\n }}\n placeholder=\"STANDARD_IA,REDUCED_REDUNDANCY etc\"\n label=\"Storage Class\"\n value={targetStorageClass}\n />\n
    \n Object Filters\n ) => {\n setPrefix(e.target.value);\n }}\n placeholder=\"prefix\"\n label=\"Prefix\"\n value={prefix}\n />\n {\n setTags(vl);\n }}\n keyPlaceholder=\"Tag Key\"\n valuePlaceholder=\"Tag Value\"\n withBorder\n />\n
    \n
    \n Replication Options\n {\n setRepExisting(e.target.checked);\n }}\n description={\"Replicate existing objects\"}\n />\n {\n setMetadataSync(e.target.checked);\n }}\n description={\"Metadata Sync\"}\n />\n {\n setRepDeleteMarker(e.target.checked);\n }}\n description={\"Replicate soft deletes\"}\n />\n {\n setRepDelete(e.target.checked);\n }}\n description={\"Replicate versioned deletes\"}\n />\n
    \n \n {\n navigate(backLink);\n }}\n label={\"Cancel\"}\n />\n \n \n \n \n
    \n
    \n );\n};\n\nexport default EditBucketReplication;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more 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, {\n ChangeEvent,\n createRef,\n Fragment,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport get from \"lodash/get\";\nimport debounce from \"lodash/debounce\";\nimport {\n AddIcon,\n Box,\n Grid,\n HelpIcon,\n InputBox,\n InputLabel,\n Tooltip,\n} from \"mds\";\n\ninterface IQueryMultiSelector {\n elements: string;\n name: string;\n label: string;\n tooltip?: string;\n keyPlaceholder?: string;\n valuePlaceholder?: string;\n withBorder?: boolean;\n onChange: (elements: string) => void;\n}\n\nconst QueryMultiSelector = ({\n elements,\n name,\n label,\n tooltip = \"\",\n keyPlaceholder = \"\",\n valuePlaceholder = \"\",\n onChange,\n withBorder = false,\n}: IQueryMultiSelector) => {\n const [currentKeys, setCurrentKeys] = useState([\"\"]);\n const [currentValues, setCurrentValues] = useState([\"\"]);\n const bottomList = createRef();\n\n // Use effect to get the initial values from props\n useEffect(() => {\n if (\n currentKeys.length === 1 &&\n currentKeys[0] === \"\" &&\n currentValues.length === 1 &&\n currentValues[0] === \"\" &&\n elements &&\n elements !== \"\"\n ) {\n const elementsSplit = elements.split(\"&\");\n let keys = [];\n let values = [];\n\n elementsSplit.forEach((element: string) => {\n const splittedVals = element.split(\"=\");\n if (splittedVals.length === 2) {\n keys.push(splittedVals[0]);\n values.push(splittedVals[1]);\n }\n });\n\n keys.push(\"\");\n values.push(\"\");\n\n setCurrentKeys(keys);\n setCurrentValues(values);\n }\n }, [currentKeys, currentValues, elements]);\n\n // Use effect to send new values to onChange\n useEffect(() => {\n const refScroll = bottomList.current;\n if (refScroll && currentKeys.length > 1) {\n refScroll.scrollIntoView(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentKeys]);\n\n // We avoid multiple re-renders / hang issue typing too fast\n const firstUpdate = useRef(true);\n useLayoutEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = false;\n return;\n }\n debouncedOnChange();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentKeys, currentValues]);\n\n // If the last input is not empty, we add a new one\n const addEmptyLine = () => {\n if (\n currentKeys[currentKeys.length - 1].trim() !== \"\" &&\n currentValues[currentValues.length - 1].trim() !== \"\"\n ) {\n const keysList = [...currentKeys];\n const valuesList = [...currentValues];\n\n keysList.push(\"\");\n valuesList.push(\"\");\n\n setCurrentKeys(keysList);\n setCurrentValues(valuesList);\n }\n };\n\n // Onchange function for input box, we get the dataset-index & only update that value in the array\n const onChangeKey = (e: ChangeEvent) => {\n e.persist();\n\n let updatedElement = [...currentKeys];\n const index = get(e.target, \"dataset.index\", \"0\");\n const indexNum = parseInt(index);\n updatedElement[indexNum] = e.target.value;\n\n setCurrentKeys(updatedElement);\n };\n\n const onChangeValue = (e: ChangeEvent) => {\n e.persist();\n\n let updatedElement = [...currentValues];\n const index = get(e.target, \"dataset.index\", \"0\");\n const indexNum = parseInt(index);\n updatedElement[indexNum] = e.target.value;\n\n setCurrentValues(updatedElement);\n };\n\n // Debounce for On Change\n const debouncedOnChange = debounce(() => {\n let queryString = \"\";\n\n currentKeys.forEach((keyVal, index) => {\n if (currentKeys[index] && currentValues[index]) {\n let insertString = `${keyVal}=${currentValues[index]}`;\n if (index !== 0) {\n insertString = `&${insertString}`;\n }\n queryString = `${queryString}${insertString}`;\n }\n });\n\n onChange(queryString);\n }, 500);\n\n const inputs = currentValues.map((element, index) => {\n return (\n \n \n :\n : null}\n overlayAction={() => {\n addEmptyLine();\n }}\n />\n \n );\n });\n\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n \n \n \n \n \n )}\n \n \n {inputs}\n
    \n \n \n \n );\n};\nexport default QueryMultiSelector;\n"],"names":["dispatch","useAppDispatch","navigate","useNavigate","params","URLSearchParams","document","location","search","bucketName","get","ruleID","useEffect","setHelpName","backLink","IAM_PAGES","BUCKETS","concat","_useState","useState","_useState2","_slicedToArray","editLoading","setEditLoading","_useState3","_useState4","saveEdit","setSaveEdit","_useState5","_useState6","priority","setPriority","_useState7","_useState8","destination","setDestination","_useState9","_useState10","prefix","setPrefix","_useState11","_useState12","repDeleteMarker","setRepDeleteMarker","_useState13","_useState14","metadataSync","setMetadataSync","_useState15","_useState16","initialTags","setInitialTags","_useState17","_useState18","tags","setTags","_useState19","_useState20","targetStorageClass","setTargetStorageClass","_useState21","_useState22","repExisting","setRepExisting","_useState23","_useState24","repDelete","setRepDelete","_useState25","_useState26","ruleState","setRuleState","api","buckets","getBucketReplicationRule","then","res","_res$data$destination","data","toString","pref","tag","bucket","delete_marker_replication","storageClass","existingObjects","deletes_replication","status","metadata_replication","catch","err","setErrorSnackMessage","errorToHandler","error","remoteBucketsInfo","arn","replicateDeleteMarkers","replicateDeletes","replicateExistingObjects","replicateMetadata","parseInt","updateMultiBucketReplication","_jsxs","Fragment","children","_jsx","PageHeaderWrapper","label","BackLink","onClick","actions","HelpMenu","PageLayout","noValidate","autoComplete","onSubmit","e","preventDefault","FormLayout","containerPadding","withBorders","helpBox","HelpBox","iconComponent","BucketReplicationIcon","title","help","Box","sx","paddingTop","Switch","checked","id","name","onChange","target","ReadBox","width","InputBox","validity","valid","value","pattern","placeholder","className","QueryMultiSelector","elements","vl","keyPlaceholder","valuePlaceholder","withBorder","description","Grid","item","xs","display","flexDirection","justifyContent","gap","Button","type","variant","disabled","_ref","_ref$tooltip","tooltip","_ref$keyPlaceholder","_ref$valuePlaceholder","_ref$withBorder","currentKeys","setCurrentKeys","currentValues","setCurrentValues","bottomList","createRef","length","elementsSplit","split","keys","values","forEach","element","splittedVals","push","refScroll","current","scrollIntoView","firstUpdate","useRef","useLayoutEffect","debouncedOnChange","onChangeKey","persist","updatedElement","_toConsumableArray","index","onChangeValue","debounce","queryString","keyVal","insertString","inputs","map","overlayIcon","AddIcon","overlayAction","trim","keysList","valuesList","addEmptyLine","alignSelf","margin","fontWeight","InputLabel","marginLeft","alignItems","Tooltip","placement","HelpIcon","style","height","padding","overflowY","position","marginTop","ref"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/4335.ad6c0ff1.chunk.js b/portal-ui/build/static/js/4335.09096e69.chunk.js similarity index 99% rename from portal-ui/build/static/js/4335.ad6c0ff1.chunk.js rename to portal-ui/build/static/js/4335.09096e69.chunk.js index 933d159b67..252856ab54 100644 --- a/portal-ui/build/static/js/4335.ad6c0ff1.chunk.js +++ b/portal-ui/build/static/js/4335.09096e69.chunk.js @@ -1,2 +1,2 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[4335],{90282:function(e,a,l){"use strict";l.d(a,{Z:function(){return g}});var t=l(29439),n=l(1413),r=l(72791),i=l(26181),u=l.n(i),o=l(29945),s=l(99663),c=l(86711),d=l(11135),v=l(25787),b=l(23814),f=l(20890),h=l(80184),p=(0,v.Z)((function(e){var a;return(0,d.Z)({errorBlock:{color:(null===(a=e.palette)||void 0===a?void 0:a.error.main)||"#C83B51"}})}))((function(e){var a=e.classes,l=e.errorMessage,t=e.withBreak,n=void 0===t||t;return(0,h.jsxs)(r.Fragment,{children:[n&&(0,h.jsx)("br",{}),(0,h.jsx)(f.Z,{component:"p",variant:"body1",className:a.errorBlock,children:l})]})})),g=(0,v.Z)((function(e){return(0,d.Z)((0,n.Z)((0,n.Z)((0,n.Z)((0,n.Z)({},b.YI),b.Hr),{},{valueString:{maxWidth:350,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",marginTop:2},fileInputField:{margin:"13px 0","@media (max-width: 900px)":{flexFlow:"column"}}},b.bV),{},{inputLabel:(0,n.Z)((0,n.Z)({},b.YI.inputLabel),{},{fontWeight:"normal"}),textBoxContainer:(0,n.Z)((0,n.Z)({},b.YI.textBoxContainer),{},{maxWidth:"100%",border:"1px solid #eaeaea",paddingLeft:"15px"})}))}))((function(e){var a=e.label,l=e.classes,n=e.onChange,i=e.id,d=e.name,v=e.disabled,b=void 0!==v&&v,f=e.tooltip,g=void 0===f?"":f,S=e.required,x=e.error,m=void 0===x?"":x,A=e.accept,Z=void 0===A?"":A,E=e.value,C=void 0===E?"":E,j=(0,r.useState)(!1),w=(0,t.Z)(j,2),T=w[0],y=w[1];return(0,h.jsx)(r.Fragment,{children:(0,h.jsxs)(o.rjZ,{item:!0,xs:12,className:"inputItem ".concat(l.fileInputField," ").concat(l.fieldBottom," ").concat(l.fieldContainer," ").concat(""!==m?l.errorInField:""),children:[""!==a&&(0,h.jsxs)(o.AZs,{htmlFor:i,className:"".concat(""!==m?l.fieldLabelError:""),children:[(0,h.jsxs)("span",{children:[a,S?"*":""]}),""!==g&&(0,h.jsx)("div",{className:l.tooltipContainer,children:(0,h.jsx)(o.ua7,{tooltip:g,placement:"top",children:(0,h.jsx)("div",{className:l.tooltip,children:(0,h.jsx)(o.byK,{})})})})]}),T||""===C?(0,h.jsxs)("div",{className:l.textBoxContainer,children:[(0,h.jsx)("input",{type:"file",name:d,onChange:function(e){var a=u()(e,"target.files[0].name","");!function(e,a){var l=e.target.files[0],t=new FileReader;t.readAsDataURL(l),t.onload=function(){var e=t.result;if(e){var l=e.toString().split("base64,");2===l.length&&a(l[1])}}}(e,(function(e){n(e,a)}))},accept:Z,required:S,disabled:b,className:l.fileInputField}),""!==C&&(0,h.jsx)(o.hU,{color:"primary","aria-label":"upload picture",onClick:function(){y(!1)},size:"small",children:(0,h.jsx)(c.Z,{})}),""!==m&&(0,h.jsx)(p,{errorMessage:m})]}):(0,h.jsxs)("div",{className:l.fileReselect,children:[(0,h.jsx)("div",{className:l.valueString,children:C}),(0,h.jsx)(o.hU,{color:"primary","aria-label":"upload picture",onClick:function(){y(!0)},size:"small",children:(0,h.jsx)(s.Z,{})})]})]})})}))},84335:function(e,a,l){"use strict";l.r(a),l.d(a,{default:function(){return F}});var t=l(4942),n=l(74165),r=l(15861),i=l(29439),u=l(1413),o=l(72791),s=l(57689),c=l(26181),d=l.n(c),v=l(29945),b=l(11135),f=l(25787),h=l(23814),p=l(90282),g=l(34345),S=l(56087),x=l(72455),m=l(63733),A=l(56786),Z=l(64554),E=l(20817),C=[{label:"US East (Ohio)",value:"us-east-2"},{label:"US East (N. Virginia)",value:"us-east-1"},{label:"US West (N. California)",value:"us-west-1"},{label:"US West (Oregon)",value:"us-west-2"},{label:"Africa (Cape Town)",value:"af-south-1"},{label:"Asia Pacific (Hong Kong)***",value:"ap-east-1"},{label:"Asia Pacific (Jakarta)",value:"ap-southeast-3"},{label:"Asia Pacific (Mumbai)",value:"ap-south-1"},{label:"Asia Pacific (Osaka)",value:"ap-northeast-3"},{label:"Asia Pacific (Seoul)",value:"ap-northeast-2"},{label:"Asia Pacific (Singapore)",value:"ap-southeast-1"},{label:"Asia Pacific (Sydney)",value:"ap-southeast-2"},{label:"Asia Pacific (Tokyo)",value:"ap-northeast-1"},{label:"Canada (Central)",value:"ca-central-1"},{label:"China (Beijing)",value:"cn-north-1"},{label:"China (Ningxia)",value:"cn-northwest-1"},{label:"Europe (Frankfurt)",value:"eu-central-1"},{label:"Europe (Ireland)",value:"eu-west-1"},{label:"Europe (London)",value:"eu-west-2"},{label:"Europe (Milan)",value:"eu-south-1"},{label:"Europe (Paris)",value:"eu-west-3"},{label:"Europe (Stockholm)",value:"eu-north-1"},{label:"South America (S\xe3o Paulo)",value:"sa-east-1"},{label:"Middle East (Bahrain)",value:"me-south-1"},{label:"AWS GovCloud (US-East)",value:"us-gov-east-1"},{label:"AWS GovCloud (US-West)",value:"us-gov-west-1"}],j=[{label:"Montr\xe9al",value:"NORTHAMERICA-NORTHEAST1"},{label:"Toronto",value:"NORTHAMERICA-NORTHEAST2"},{label:"Iowa",value:"US-CENTRAL1"},{label:"South Carolina",value:"US-EAST1"},{label:"Northern Virginia",value:"US-EAST4"},{label:"Oregon",value:"US-WEST1"},{label:"Los Angeles",value:"US-WEST2"},{label:"Salt Lake City",value:"US-WEST3"},{label:"Las Vegas",value:"US-WEST4"},{label:"S\xe3o Paulo",value:"SOUTHAMERICA-EAST1"},{label:"Santiago",value:"SOUTHAMERICA-WEST1"},{label:"Warsaw",value:"EUROPE-CENTRAL2"},{label:"Finland",value:"EUROPE-NORTH1"},{label:"Belgium",value:"EUROPE-WEST1"},{label:"London",value:"EUROPE-WEST2"},{label:"Frankfurt",value:"EUROPE-WEST3"},{label:"Netherlands",value:"EUROPE-WEST4"},{label:"Z\xfcrich",value:"EUROPE-WEST6"},{label:"Taiwan",value:"ASIA-EAST1"},{label:"Hong Kong",value:"ASIA-EAST2"},{label:"Tokyo",value:"ASIA-NORTHEAST1"},{label:"Osaka",value:"ASIA-NORTHEAST2"},{label:"Seoul",value:"ASIA-NORTHEAST3"},{label:"Mumbai",value:"ASIA-SOUTH1"},{label:"Delhi",value:"ASIA-SOUTH2"},{label:"Singapore",value:"ASIA-SOUTHEAST1"},{label:"Jakarta",value:"ASIA-SOUTHEAST2"},{label:"Sydney",value:"AUSTRALIA-SOUTHEAST1"},{label:"Melbourne",value:"AUSTRALIA-SOUTHEAST2"}],w=[{label:"Asia",value:"asia"},{label:"Asia Pacific",value:"asiapacific"},{label:"Australia",value:"australia"},{label:"Australia Central",value:"australiacentral"},{label:"Australia Central 2",value:"australiacentral2"},{label:"Australia East",value:"australiaeast"},{label:"Australia Southeast",value:"australiasoutheast"},{label:"Brazil",value:"brazil"},{label:"Brazil South",value:"brazilsouth"},{label:"Brazil Southeast",value:"brazilsoutheast"},{label:"Canada",value:"canada"},{label:"Canada Central",value:"canadacentral"},{label:"Canada East",value:"canadaeast"},{label:"Central India",value:"centralindia"},{label:"Central US",value:"centralus"},{label:"Central US (Stage)",value:"centralusstage"},{label:"Central US EUAP",value:"centraluseuap"},{label:"East Asia",value:"eastasia"},{label:"East Asia (Stage)",value:"eastasiastage"},{label:"East US",value:"eastus"},{label:"East US (Stage)",value:"eastusstage"},{label:"East US 2",value:"eastus2"},{label:"East US 2 (Stage)",value:"eastus2stage"},{label:"East US 2 EUAP",value:"eastus2euap"},{label:"Europe",value:"europe"},{label:"France",value:"france"},{label:"France Central",value:"francecentral"},{label:"France South",value:"francesouth"},{label:"Germany",value:"germany"},{label:"Germany North",value:"germanynorth"},{label:"Germany West Central",value:"germanywestcentral"},{label:"Global",value:"global"},{label:"India",value:"india"},{label:"Japan",value:"japan"},{label:"Japan East",value:"japaneast"},{label:"Japan West",value:"japanwest"},{label:"Jio India Central",value:"jioindiacentral"},{label:"Jio India West",value:"jioindiawest"},{label:"Korea",value:"korea"},{label:"Korea Central",value:"koreacentral"},{label:"Korea South",value:"koreasouth"},{label:"North Central US",value:"northcentralus"},{label:"North Central US (Stage)",value:"northcentralusstage"},{label:"North Europe",value:"northeurope"},{label:"Norway",value:"norway"},{label:"Norway East",value:"norwayeast"},{label:"Norway West",value:"norwaywest"},{label:"South Africa",value:"southafrica"},{label:"South Africa North",value:"southafricanorth"},{label:"South Africa West",value:"southafricawest"},{label:"South Central US",value:"southcentralus"},{label:"South Central US (Stage)",value:"southcentralusstage"},{label:"South India",value:"southindia"},{label:"Southeast Asia",value:"southeastasia"},{label:"Southeast Asia (Stage)",value:"southeastasiastage"},{label:"Sweden Central",value:"swedencentral"},{label:"Switzerland",value:"switzerland"},{label:"Switzerland North",value:"switzerlandnorth"},{label:"Switzerland West",value:"switzerlandwest"},{label:"UAE Central",value:"uaecentral"},{label:"UAE North",value:"uaenorth"},{label:"UK South",value:"uksouth"},{label:"UK West",value:"ukwest"},{label:"United Arab Emirates",value:"uae"},{label:"United Kingdom",value:"uk"},{label:"United States",value:"unitedstates"},{label:"United States EUAP",value:"unitedstateseuap"},{label:"West Central US",value:"westcentralus"},{label:"West Europe",value:"westeurope"},{label:"West India",value:"westindia"},{label:"West US",value:"westus"},{label:"West US (Stage)",value:"westusstage"},{label:"West US 2",value:"westus2"},{label:"West US 2 (Stage)",value:"westus2stage"},{label:"West US 3",value:"westus3"}],T=l(80184),y=function(e){var a=e.type,l=e.onChange,t=e.inputProps,n=function(e){return"s3"===e?C:"gcs"===e?j:"azure"===e?w:[]}(a),r=o.useState(""),s=(0,i.Z)(r,2),c=s[0],d=s[1];return(0,T.jsx)(A.Z,{sx:{"& .MuiOutlinedInput-root":{padding:0,paddingLeft:"10px",fontSize:13,fontWeight:600},"& .MuiAutocomplete-inputRoot":{"& .MuiOutlinedInput-notchedOutline":{borderColor:"#e5e5e5",borderWidth:1},"&:hover .MuiOutlinedInput-notchedOutline":{borderColor:"#07193E",borderWidth:1},"&.Mui-focused .MuiOutlinedInput-notchedOutline":{borderColor:"#07193E",borderWidth:1}}},freeSolo:!0,selectOnFocus:!0,handleHomeEndKeys:!0,onChange:function(e,a){var t,n=a;n="string"===typeof a?{label:a}:a&&a.inputValue?{label:a.inputValue}:a,d(n),l(null===(t=n)||void 0===t?void 0:t.value)},value:c,onInputChange:function(e){var a=(e||{}).target,t=(void 0===a?{}:a).value;l(void 0===t?"":t)},getOptionLabel:function(e){return"string"===typeof e?e:e.inputValue?e.inputValue:e.value},options:n,filterOptions:function(e,a){var l=a.inputValue.toLowerCase();return e.filter((function(e){return"".concat(e.label.toLowerCase()).concat(e.value.toLowerCase()).includes(l)}))},renderOption:function(e,a){return(0,T.jsx)("li",(0,u.Z)((0,u.Z)({},e),{},{children:(0,T.jsxs)(Z.Z,{sx:{display:"flex",flexFlow:"column",alignItems:"baseline",padding:"4px",borderBottom:"1px solid #eaeaea",cursor:"pointer",width:"100%","& .label":{fontSize:"13px",fontWeight:500},"& .value":{fontSize:"11px",fontWeight:400}},children:[(0,T.jsx)("span",{className:"label",children:a.value}),(0,T.jsx)("span",{className:"value",children:a.label})]})}))},renderInput:function(e){return(0,T.jsx)(E.Z,(0,u.Z)((0,u.Z)((0,u.Z)({},e),t),{},{fullWidth:!0}))}})},U=(0,x.Z)((function(e){return(0,b.Z)((0,u.Z)({},h.gM))})),I=(0,f.Z)((function(e){return(0,b.Z)((0,u.Z)((0,u.Z)((0,u.Z)({},h.YI),h.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative",minWidth:160},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}},inputLabel:(0,u.Z)((0,u.Z)({},h.YI.inputLabel),{},{fontWeight:"normal"})}))}))((function(e){var a=e.label,l=e.onChange,t=e.id,n=e.name,r=e.type,i=e.tooltip,s=void 0===i?"":i,c=e.index,d=void 0===c?0:c,b=e.error,f=void 0===b?"":b,h=e.required,p=void 0!==h&&h,g=e.overlayId,S=e.overlayIcon,x=void 0===S?null:S,A=e.overlayObject,Z=void 0===A?null:A,E=e.extraInputProps,C=void 0===E?{}:E,j=e.overlayAction,w=e.noLabelMinWidth,I=void 0!==w&&w,W=e.classes,N=e.className,k=void 0===N?"":N,O=U(),z=(0,u.Z)((0,u.Z)({"data-index":d},C),{},{name:n,id:t,classes:O});return(0,T.jsx)(o.Fragment,{children:(0,T.jsxs)(v.rjZ,{container:!0,className:(0,m.Z)(""!==k?k:"",""!==f?W.errorInField:W.inputBoxContainer),children:[""!==a&&(0,T.jsxs)(v.AZs,{htmlFor:t,noMinWidth:I,children:[(0,T.jsxs)("span",{children:[a,p?"*":""]}),""!==s&&(0,T.jsx)("div",{className:W.tooltipContainer,children:(0,T.jsx)(v.ua7,{tooltip:s,placement:"top",children:(0,T.jsx)("div",{className:W.tooltip,children:(0,T.jsx)(v.byK,{})})})})]}),(0,T.jsxs)("div",{className:W.textBoxContainer,children:[(0,T.jsx)(y,{type:r,inputProps:z,onChange:l}),x&&(0,T.jsx)("div",{className:"".concat(W.overlayAction," ").concat(""!==a?"withLabel":""),children:(0,T.jsx)(v.hU,{onClick:j?function(){j()}:function(){return null},id:g,size:"small",children:x})}),Z&&(0,T.jsx)("div",{className:"".concat(W.overlayAction," ").concat(""!==a?"withLabel":""),children:Z})]})]})})})),W=l(87995),N=l(81551),k=l(47974),O=l(99670),z=l(31776),R=l(82342),F=(0,f.Z)((function(e){return(0,b.Z)((0,u.Z)((0,u.Z)((0,u.Z)((0,u.Z)({},h.oO),h.Je),h.DF),{},{lambdaNotifTitle:{color:"#07193E",fontSize:16,fontFamily:"Inter,sans-serif",paddingLeft:18},fileInputFieldCss:{margin:"0"},fileTextBoxContainer:{maxWidth:" 100%",flex:1},fileReselectCss:{maxWidth:" 100%",flex:1}},h.bV))}))((function(e){var a=e.classes,l=(0,N.TL)(),c=(0,s.s0)(),b=(0,s.UO)(),f=(0,o.useState)(!1),x=(0,i.Z)(f,2),m=x[0],A=x[1],Z=(0,o.useState)(""),E=(0,i.Z)(Z,2),C=E[0],j=E[1],w=(0,o.useState)(""),y=(0,i.Z)(w,2),U=y[0],F=y[1],P=(0,o.useState)(""),B=(0,i.Z)(P,2),M=B[0],L=B[1],H=(0,o.useState)(""),K=(0,i.Z)(H,2),V=K[0],q=K[1],G=(0,o.useState)(""),_=(0,i.Z)(G,2),D=_[0],J=_[1],X=(0,o.useState)(""),Y=(0,i.Z)(X,2),$=Y[0],Q=Y[1],ee=(0,o.useState)(""),ae=(0,i.Z)(ee,2),le=ae[0],te=ae[1],ne=(0,o.useState)(""),re=(0,i.Z)(ne,2),ie=re[0],ue=re[1],oe=(0,o.useState)(""),se=(0,i.Z)(oe,2),ce=se[0],de=se[1],ve=(0,o.useState)(""),be=(0,i.Z)(ve,2),fe=be[0],he=be[1],pe=(0,o.useState)(""),ge=(0,i.Z)(pe,2),Se=ge[0],xe=ge[1],me=(0,o.useState)(""),Ae=(0,i.Z)(me,2),Ze=Ae[0],Ee=Ae[1],Ce=(0,o.useState)(""),je=(0,i.Z)(Ce,2),we=je[0],Te=je[1],ye=d()(b,"service","s3"),Ue=(0,o.useState)(!0),Ie=(0,i.Z)(Ue,2),We=Ie[0],Ne=Ie[1],ke=(0,o.useState)(""),Oe=(0,i.Z)(ke,2),ze=Oe[0],Re=Oe[1],Fe=(0,o.useCallback)((function(){return/^[A-Z0-9-_]+$/.test(C)?(Re(""),!0):(Re("Please verify that string is uppercase only and contains valid characters (numbers, dashes & underscores)."),!1)}),[C]);(0,o.useEffect)((function(){if(m){var e={},a={name:C,endpoint:U,bucket:M,prefix:V,region:D},t=ye;switch(ye){case"minio":e={minio:(0,u.Z)((0,u.Z)({},a),{},{accesskey:le,secretkey:ie})};break;case"s3":e={s3:(0,u.Z)((0,u.Z)({},a),{},{accesskey:le,secretkey:ie,storageclass:$})};break;case"gcs":e={gcs:(0,u.Z)((0,u.Z)({},a),{},{creds:fe})};break;case"azure":e={azure:(0,u.Z)((0,u.Z)({},a),{},{accountname:Se,accountkey:Ze})}}var i=(0,u.Z)({type:t},e);z.h.admin.addTier(i).then((function(){A(!1),c(S.gA.TIERS)})).catch(function(){var e=(0,r.Z)((0,n.Z)().mark((function e(a){var t;return(0,n.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,a.json();case 2:t=e.sent,A(!1),l((0,W.Ih)((0,R.g)(t)));case 5:case"end":return e.stop()}}),e)})));return function(a){return e.apply(this,arguments)}}())}}),[le,Ze,Se,M,fe,U,C,V,D,m,ie,l,$,ye,c]),(0,o.useEffect)((function(){var e=!0;""===ye&&(e=!1),""!==C&&Fe()||(e=!1),""===U&&(e=!1),""===M&&(e=!1),""===V&&(e=!1),""===D&&"minio"!==ye&&(e=!1),"s3"!==ye&&"minio"!==ye||(""===le&&(e=!1),""===ie&&(e=!1)),"gcs"===ye&&""===fe&&(e=!1),"azure"===ye&&(""===Se&&(e=!1),""===Ze&&(e=!1)),Ne(e)}),[le,Ze,Se,M,fe,U,We,C,V,D,ie,$,ye,Fe]),(0,o.useEffect)((function(){switch(ye){case"gcs":F("https://storage.googleapis.com"),Te("Google Cloud");break;case"s3":F("https://s3.amazonaws.com"),Te("Amazon S3");break;case"azure":F("http://blob.core.windows.net"),Te("Azure");break;case"minio":F(""),Te("MinIO")}}),[ye]);var Pe=g.Bh.find((function(e){return e.serviceName===ye}));return(0,o.useEffect)((function(){l((0,W.Sc)("add-tier-configuration"))}),[]),(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(k.Z,{label:(0,T.jsx)(o.Fragment,{children:(0,T.jsx)(v.hbI,{label:"Add Tier",onClick:function(){return c(S.gA.TIERS_ADD)}})}),actions:(0,T.jsx)(O.Z,{})}),(0,T.jsx)(v.Xgh,{children:(0,T.jsx)(v.rjZ,{item:!0,xs:12,sx:{border:"1px solid #eaeaea",padding:"25px"},children:(0,T.jsxs)("form",{noValidate:!0,onSubmit:function(e){e.preventDefault(),A(!0)},children:[""!==ye&&Pe?(0,T.jsxs)(v.NZf,{icon:Pe.logo,sx:{marginBottom:20},children:[we||""," - Add Tier Configuration"]}):null,(0,T.jsx)(v.rjZ,{item:!0,xs:12,sx:(0,t.Z)({display:"grid",gridTemplateColumns:"1fr 1fr",gridAutoFlow:"row",gridRowGap:20,gridColumnGap:50},"@media (max-width: ".concat(v.Egj.sm,"px)"),{gridTemplateColumns:"1fr",gridAutoFlow:"dense"}),children:""!==ye&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(v.Wzg,{id:"name",name:"name",label:"Name",placeholder:"Enter Name (Eg. REMOTE-TIER)",value:C,onChange:function(e){j(e.target.value.toUpperCase())},error:ze,required:!0}),(0,T.jsx)(v.Wzg,{id:"endpoint",name:"endpoint",label:"Endpoint",placeholder:"Enter Endpoint",value:U,onChange:function(e){F(e.target.value)},required:!0}),(ye===g.b2||ye===g.Pp)&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(v.Wzg,{id:"accessKey",name:"accessKey",label:"Access Key",placeholder:"Enter Access Key",value:le,onChange:function(e){te(e.target.value)},required:!0}),(0,T.jsx)(v.Wzg,{id:"secretKey",name:"secretKey",label:"Secret Key",placeholder:"Enter Secret Key",value:ie,onChange:function(e){ue(e.target.value)},required:!0})]}),ye===g.f0&&(0,T.jsx)(p.Z,{accept:".json",classes:{fileInputField:a.fileInputFieldCss,textBoxContainer:a.fileTextBoxContainer,fileReselect:a.fileReselectCss},id:"creds",label:"Credentials",name:"creds",onChange:function(e,a){he(e),de(a)},value:ce,required:!0}),ye===g.vB&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(v.Wzg,{id:"accountName",name:"accountName",label:"Account Name",placeholder:"Enter Account Name",value:Se,onChange:function(e){xe(e.target.value)},required:!0}),(0,T.jsx)(v.Wzg,{id:"accountKey",name:"accountKey",label:"Account Key",placeholder:"Enter Account Key",value:Ze,onChange:function(e){Ee(e.target.value)},required:!0})]}),(0,T.jsx)(v.Wzg,{id:"bucket",name:"bucket",label:"Bucket",placeholder:"Enter Bucket",value:M,onChange:function(e){L(e.target.value)},required:!0}),(0,T.jsx)(v.Wzg,{id:"prefix",name:"prefix",label:"Prefix",placeholder:"Enter Prefix",value:V,onChange:function(e){q(e.target.value)},required:!0}),(0,T.jsx)(I,{onChange:function(e){J(e)},required:"minio"!==ye,label:"Region",id:"region",name:"region",type:ye}),ye===g.b2&&(0,T.jsx)(v.Wzg,{id:"storageClass",name:"storageClass",label:"Storage Class",placeholder:"Enter Storage Class",value:$,onChange:function(e){Q(e.target.value)}})]})}),(0,T.jsx)(v.rjZ,{item:!0,xs:12,sx:h.ID.modalButtonBar,children:(0,T.jsx)(v.zxk,{id:"save-tier-configuration",type:"submit",variant:"callAction",disabled:m||!We,label:"Save Tier Configuration"})})]})})})]})}))},34345:function(e,a,l){"use strict";l.d(a,{Bh:function(){return s},Pp:function(){return r},b2:function(){return u},f0:function(){return i},vB:function(){return o}});var t=l(29945),n=l(80184),r="minio",i="gcs",u="s3",o="azure",s=[{serviceName:r,targetTitle:"MinIO",logo:(0,n.jsx)(t.$E9,{}),logoXs:(0,n.jsx)(t.YEz,{})},{serviceName:i,targetTitle:"Google Cloud Storage",logo:(0,n.jsx)(t.UQG,{}),logoXs:(0,n.jsx)(t.Vwu,{})},{serviceName:u,targetTitle:"AWS S3",logo:(0,n.jsx)(t.feu,{}),logoXs:(0,n.jsx)(t.Xj3,{})},{serviceName:o,targetTitle:"Azure",logo:(0,n.jsx)(t.jze,{}),logoXs:(0,n.jsx)(t.nAe,{})}]},99663:function(e,a,l){"use strict";var t=l(64836);a.Z=void 0;var n=t(l(45649)),r=l(80184),i=(0,n.default)((0,r.jsx)("path",{d:"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z"}),"AttachFile");a.Z=i},86711:function(e,a,l){"use strict";var t=l(64836);a.Z=void 0;var n=t(l(45649)),r=l(80184),i=(0,n.default)((0,r.jsx)("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"}),"Cancel");a.Z=i},45649:function(e,a,l){"use strict";Object.defineProperty(a,"__esModule",{value:!0}),Object.defineProperty(a,"default",{enumerable:!0,get:function(){return t.createSvgIcon}});var t=l(28610)},31260:function(e,a,l){"use strict";var t=l(78949);a.Z=t.Z},28610:function(e,a,l){"use strict";l.r(a),l.d(a,{capitalize:function(){return n.Z},createChainedFunction:function(){return r.Z},createSvgIcon:function(){return i.Z},debounce:function(){return u.Z},deprecatedPropType:function(){return o},isMuiElement:function(){return s.Z},ownerDocument:function(){return c.Z},ownerWindow:function(){return d.Z},requirePropFactory:function(){return v},setRef:function(){return b},unstable_ClassNameGenerator:function(){return A},unstable_useEnhancedEffect:function(){return f.Z},unstable_useId:function(){return h.Z},unsupportedProp:function(){return p},useControlled:function(){return g.Z},useEventCallback:function(){return S.Z},useForkRef:function(){return x.Z},useIsFocusVisible:function(){return m.Z}});var t=l(55902),n=l(14036),r=l(31260),i=l(76189),u=l(83199);var o=function(e,a){return function(){return null}},s=l(19103),c=l(98301),d=l(17602);l(87462);var v=function(e,a){return function(){return null}},b=l(62971).Z,f=l(40162),h=l(67384);var p=function(e,a,l,t,n){return null},g=l(98278),S=l(89683),x=l(42071),m=l(23031),A={configure:function(e){t.Z.configure(e)}}},64836:function(e){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); -//# sourceMappingURL=4335.ad6c0ff1.chunk.js.map \ No newline at end of file +(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[4335],{90282:function(e,a,l){"use strict";l.d(a,{Z:function(){return g}});var t=l(29439),n=l(1413),r=l(72791),i=l(26181),u=l.n(i),o=l(29945),s=l(99663),c=l(86711),d=l(11135),v=l(25787),b=l(23814),f=l(20890),h=l(80184),p=(0,v.Z)((function(e){var a;return(0,d.Z)({errorBlock:{color:(null===(a=e.palette)||void 0===a?void 0:a.error.main)||"#C83B51"}})}))((function(e){var a=e.classes,l=e.errorMessage,t=e.withBreak,n=void 0===t||t;return(0,h.jsxs)(r.Fragment,{children:[n&&(0,h.jsx)("br",{}),(0,h.jsx)(f.Z,{component:"p",variant:"body1",className:a.errorBlock,children:l})]})})),g=(0,v.Z)((function(e){return(0,d.Z)((0,n.Z)((0,n.Z)((0,n.Z)((0,n.Z)({},b.YI),b.Hr),{},{valueString:{maxWidth:350,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",marginTop:2},fileInputField:{margin:"13px 0","@media (max-width: 900px)":{flexFlow:"column"}}},b.bV),{},{inputLabel:(0,n.Z)((0,n.Z)({},b.YI.inputLabel),{},{fontWeight:"normal"}),textBoxContainer:(0,n.Z)((0,n.Z)({},b.YI.textBoxContainer),{},{maxWidth:"100%",border:"1px solid #eaeaea",paddingLeft:"15px"})}))}))((function(e){var a=e.label,l=e.classes,n=e.onChange,i=e.id,d=e.name,v=e.disabled,b=void 0!==v&&v,f=e.tooltip,g=void 0===f?"":f,S=e.required,x=e.error,m=void 0===x?"":x,A=e.accept,Z=void 0===A?"":A,E=e.value,C=void 0===E?"":E,j=(0,r.useState)(!1),w=(0,t.Z)(j,2),T=w[0],y=w[1];return(0,h.jsx)(r.Fragment,{children:(0,h.jsxs)(o.rjZ,{item:!0,xs:12,className:"inputItem ".concat(l.fileInputField," ").concat(l.fieldBottom," ").concat(l.fieldContainer," ").concat(""!==m?l.errorInField:""),children:[""!==a&&(0,h.jsxs)(o.AZs,{htmlFor:i,className:"".concat(""!==m?l.fieldLabelError:""),children:[(0,h.jsxs)("span",{children:[a,S?"*":""]}),""!==g&&(0,h.jsx)("div",{className:l.tooltipContainer,children:(0,h.jsx)(o.ua7,{tooltip:g,placement:"top",children:(0,h.jsx)("div",{className:l.tooltip,children:(0,h.jsx)(o.byK,{})})})})]}),T||""===C?(0,h.jsxs)("div",{className:l.textBoxContainer,children:[(0,h.jsx)("input",{type:"file",name:d,onChange:function(e){var a=u()(e,"target.files[0].name","");!function(e,a){var l=e.target.files[0],t=new FileReader;t.readAsDataURL(l),t.onload=function(){var e=t.result;if(e){var l=e.toString().split("base64,");2===l.length&&a(l[1])}}}(e,(function(e){n(e,a)}))},accept:Z,required:S,disabled:b,className:l.fileInputField}),""!==C&&(0,h.jsx)(o.hU,{color:"primary","aria-label":"upload picture",onClick:function(){y(!1)},size:"small",children:(0,h.jsx)(c.Z,{})}),""!==m&&(0,h.jsx)(p,{errorMessage:m})]}):(0,h.jsxs)("div",{className:l.fileReselect,children:[(0,h.jsx)("div",{className:l.valueString,children:C}),(0,h.jsx)(o.hU,{color:"primary","aria-label":"upload picture",onClick:function(){y(!0)},size:"small",children:(0,h.jsx)(s.Z,{})})]})]})})}))},84335:function(e,a,l){"use strict";l.r(a),l.d(a,{default:function(){return F}});var t=l(4942),n=l(74165),r=l(15861),i=l(29439),u=l(1413),o=l(72791),s=l(57689),c=l(26181),d=l.n(c),v=l(29945),b=l(11135),f=l(25787),h=l(23814),p=l(90282),g=l(34345),S=l(56087),x=l(72455),m=l(63733),A=l(56786),Z=l(64554),E=l(20817),C=[{label:"US East (Ohio)",value:"us-east-2"},{label:"US East (N. Virginia)",value:"us-east-1"},{label:"US West (N. California)",value:"us-west-1"},{label:"US West (Oregon)",value:"us-west-2"},{label:"Africa (Cape Town)",value:"af-south-1"},{label:"Asia Pacific (Hong Kong)***",value:"ap-east-1"},{label:"Asia Pacific (Jakarta)",value:"ap-southeast-3"},{label:"Asia Pacific (Mumbai)",value:"ap-south-1"},{label:"Asia Pacific (Osaka)",value:"ap-northeast-3"},{label:"Asia Pacific (Seoul)",value:"ap-northeast-2"},{label:"Asia Pacific (Singapore)",value:"ap-southeast-1"},{label:"Asia Pacific (Sydney)",value:"ap-southeast-2"},{label:"Asia Pacific (Tokyo)",value:"ap-northeast-1"},{label:"Canada (Central)",value:"ca-central-1"},{label:"China (Beijing)",value:"cn-north-1"},{label:"China (Ningxia)",value:"cn-northwest-1"},{label:"Europe (Frankfurt)",value:"eu-central-1"},{label:"Europe (Ireland)",value:"eu-west-1"},{label:"Europe (London)",value:"eu-west-2"},{label:"Europe (Milan)",value:"eu-south-1"},{label:"Europe (Paris)",value:"eu-west-3"},{label:"Europe (Stockholm)",value:"eu-north-1"},{label:"South America (S\xe3o Paulo)",value:"sa-east-1"},{label:"Middle East (Bahrain)",value:"me-south-1"},{label:"AWS GovCloud (US-East)",value:"us-gov-east-1"},{label:"AWS GovCloud (US-West)",value:"us-gov-west-1"}],j=[{label:"Montr\xe9al",value:"NORTHAMERICA-NORTHEAST1"},{label:"Toronto",value:"NORTHAMERICA-NORTHEAST2"},{label:"Iowa",value:"US-CENTRAL1"},{label:"South Carolina",value:"US-EAST1"},{label:"Northern Virginia",value:"US-EAST4"},{label:"Oregon",value:"US-WEST1"},{label:"Los Angeles",value:"US-WEST2"},{label:"Salt Lake City",value:"US-WEST3"},{label:"Las Vegas",value:"US-WEST4"},{label:"S\xe3o Paulo",value:"SOUTHAMERICA-EAST1"},{label:"Santiago",value:"SOUTHAMERICA-WEST1"},{label:"Warsaw",value:"EUROPE-CENTRAL2"},{label:"Finland",value:"EUROPE-NORTH1"},{label:"Belgium",value:"EUROPE-WEST1"},{label:"London",value:"EUROPE-WEST2"},{label:"Frankfurt",value:"EUROPE-WEST3"},{label:"Netherlands",value:"EUROPE-WEST4"},{label:"Z\xfcrich",value:"EUROPE-WEST6"},{label:"Taiwan",value:"ASIA-EAST1"},{label:"Hong Kong",value:"ASIA-EAST2"},{label:"Tokyo",value:"ASIA-NORTHEAST1"},{label:"Osaka",value:"ASIA-NORTHEAST2"},{label:"Seoul",value:"ASIA-NORTHEAST3"},{label:"Mumbai",value:"ASIA-SOUTH1"},{label:"Delhi",value:"ASIA-SOUTH2"},{label:"Singapore",value:"ASIA-SOUTHEAST1"},{label:"Jakarta",value:"ASIA-SOUTHEAST2"},{label:"Sydney",value:"AUSTRALIA-SOUTHEAST1"},{label:"Melbourne",value:"AUSTRALIA-SOUTHEAST2"}],w=[{label:"Asia",value:"asia"},{label:"Asia Pacific",value:"asiapacific"},{label:"Australia",value:"australia"},{label:"Australia Central",value:"australiacentral"},{label:"Australia Central 2",value:"australiacentral2"},{label:"Australia East",value:"australiaeast"},{label:"Australia Southeast",value:"australiasoutheast"},{label:"Brazil",value:"brazil"},{label:"Brazil South",value:"brazilsouth"},{label:"Brazil Southeast",value:"brazilsoutheast"},{label:"Canada",value:"canada"},{label:"Canada Central",value:"canadacentral"},{label:"Canada East",value:"canadaeast"},{label:"Central India",value:"centralindia"},{label:"Central US",value:"centralus"},{label:"Central US (Stage)",value:"centralusstage"},{label:"Central US EUAP",value:"centraluseuap"},{label:"East Asia",value:"eastasia"},{label:"East Asia (Stage)",value:"eastasiastage"},{label:"East US",value:"eastus"},{label:"East US (Stage)",value:"eastusstage"},{label:"East US 2",value:"eastus2"},{label:"East US 2 (Stage)",value:"eastus2stage"},{label:"East US 2 EUAP",value:"eastus2euap"},{label:"Europe",value:"europe"},{label:"France",value:"france"},{label:"France Central",value:"francecentral"},{label:"France South",value:"francesouth"},{label:"Germany",value:"germany"},{label:"Germany North",value:"germanynorth"},{label:"Germany West Central",value:"germanywestcentral"},{label:"Global",value:"global"},{label:"India",value:"india"},{label:"Japan",value:"japan"},{label:"Japan East",value:"japaneast"},{label:"Japan West",value:"japanwest"},{label:"Jio India Central",value:"jioindiacentral"},{label:"Jio India West",value:"jioindiawest"},{label:"Korea",value:"korea"},{label:"Korea Central",value:"koreacentral"},{label:"Korea South",value:"koreasouth"},{label:"North Central US",value:"northcentralus"},{label:"North Central US (Stage)",value:"northcentralusstage"},{label:"North Europe",value:"northeurope"},{label:"Norway",value:"norway"},{label:"Norway East",value:"norwayeast"},{label:"Norway West",value:"norwaywest"},{label:"South Africa",value:"southafrica"},{label:"South Africa North",value:"southafricanorth"},{label:"South Africa West",value:"southafricawest"},{label:"South Central US",value:"southcentralus"},{label:"South Central US (Stage)",value:"southcentralusstage"},{label:"South India",value:"southindia"},{label:"Southeast Asia",value:"southeastasia"},{label:"Southeast Asia (Stage)",value:"southeastasiastage"},{label:"Sweden Central",value:"swedencentral"},{label:"Switzerland",value:"switzerland"},{label:"Switzerland North",value:"switzerlandnorth"},{label:"Switzerland West",value:"switzerlandwest"},{label:"UAE Central",value:"uaecentral"},{label:"UAE North",value:"uaenorth"},{label:"UK South",value:"uksouth"},{label:"UK West",value:"ukwest"},{label:"United Arab Emirates",value:"uae"},{label:"United Kingdom",value:"uk"},{label:"United States",value:"unitedstates"},{label:"United States EUAP",value:"unitedstateseuap"},{label:"West Central US",value:"westcentralus"},{label:"West Europe",value:"westeurope"},{label:"West India",value:"westindia"},{label:"West US",value:"westus"},{label:"West US (Stage)",value:"westusstage"},{label:"West US 2",value:"westus2"},{label:"West US 2 (Stage)",value:"westus2stage"},{label:"West US 3",value:"westus3"}],T=l(80184),y=function(e){var a=e.type,l=e.onChange,t=e.inputProps,n=function(e){return"s3"===e?C:"gcs"===e?j:"azure"===e?w:[]}(a),r=o.useState(""),s=(0,i.Z)(r,2),c=s[0],d=s[1];return(0,T.jsx)(A.Z,{sx:{"& .MuiOutlinedInput-root":{padding:0,paddingLeft:"10px",fontSize:13,fontWeight:600},"& .MuiAutocomplete-inputRoot":{"& .MuiOutlinedInput-notchedOutline":{borderColor:"#e5e5e5",borderWidth:1},"&:hover .MuiOutlinedInput-notchedOutline":{borderColor:"#07193E",borderWidth:1},"&.Mui-focused .MuiOutlinedInput-notchedOutline":{borderColor:"#07193E",borderWidth:1}}},freeSolo:!0,selectOnFocus:!0,handleHomeEndKeys:!0,onChange:function(e,a){var t,n=a;n="string"===typeof a?{label:a}:a&&a.inputValue?{label:a.inputValue}:a,d(n),l(null===(t=n)||void 0===t?void 0:t.value)},value:c,onInputChange:function(e){var a=(e||{}).target,t=(void 0===a?{}:a).value;l(void 0===t?"":t)},getOptionLabel:function(e){return"string"===typeof e?e:e.inputValue?e.inputValue:e.value},options:n,filterOptions:function(e,a){var l=a.inputValue.toLowerCase();return e.filter((function(e){return"".concat(e.label.toLowerCase()).concat(e.value.toLowerCase()).includes(l)}))},renderOption:function(e,a){return(0,T.jsx)("li",(0,u.Z)((0,u.Z)({},e),{},{children:(0,T.jsxs)(Z.Z,{sx:{display:"flex",flexFlow:"column",alignItems:"baseline",padding:"4px",borderBottom:"1px solid #eaeaea",cursor:"pointer",width:"100%","& .label":{fontSize:"13px",fontWeight:500},"& .value":{fontSize:"11px",fontWeight:400}},children:[(0,T.jsx)("span",{className:"label",children:a.value}),(0,T.jsx)("span",{className:"value",children:a.label})]})}))},renderInput:function(e){return(0,T.jsx)(E.Z,(0,u.Z)((0,u.Z)((0,u.Z)({},e),t),{},{fullWidth:!0}))}})},U=(0,x.Z)((function(e){return(0,b.Z)((0,u.Z)({},h.gM))})),I=(0,f.Z)((function(e){return(0,b.Z)((0,u.Z)((0,u.Z)((0,u.Z)({},h.YI),h.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative",minWidth:160},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}},inputLabel:(0,u.Z)((0,u.Z)({},h.YI.inputLabel),{},{fontWeight:"normal"})}))}))((function(e){var a=e.label,l=e.onChange,t=e.id,n=e.name,r=e.type,i=e.tooltip,s=void 0===i?"":i,c=e.index,d=void 0===c?0:c,b=e.error,f=void 0===b?"":b,h=e.required,p=void 0!==h&&h,g=e.overlayId,S=e.overlayIcon,x=void 0===S?null:S,A=e.overlayObject,Z=void 0===A?null:A,E=e.extraInputProps,C=void 0===E?{}:E,j=e.overlayAction,w=e.noLabelMinWidth,I=void 0!==w&&w,W=e.classes,N=e.className,k=void 0===N?"":N,O=U(),z=(0,u.Z)((0,u.Z)({"data-index":d},C),{},{name:n,id:t,classes:O});return(0,T.jsx)(o.Fragment,{children:(0,T.jsxs)(v.rjZ,{container:!0,className:(0,m.Z)(""!==k?k:"",""!==f?W.errorInField:W.inputBoxContainer),children:[""!==a&&(0,T.jsxs)(v.AZs,{htmlFor:t,noMinWidth:I,children:[(0,T.jsxs)("span",{children:[a,p?"*":""]}),""!==s&&(0,T.jsx)("div",{className:W.tooltipContainer,children:(0,T.jsx)(v.ua7,{tooltip:s,placement:"top",children:(0,T.jsx)("div",{className:W.tooltip,children:(0,T.jsx)(v.byK,{})})})})]}),(0,T.jsxs)("div",{className:W.textBoxContainer,children:[(0,T.jsx)(y,{type:r,inputProps:z,onChange:l}),x&&(0,T.jsx)("div",{className:"".concat(W.overlayAction," ").concat(""!==a?"withLabel":""),children:(0,T.jsx)(v.hU,{onClick:j?function(){j()}:function(){return null},id:g,size:"small",children:x})}),Z&&(0,T.jsx)("div",{className:"".concat(W.overlayAction," ").concat(""!==a?"withLabel":""),children:Z})]})]})})})),W=l(87995),N=l(44690),k=l(47974),O=l(99670),z=l(31776),R=l(82342),F=(0,f.Z)((function(e){return(0,b.Z)((0,u.Z)((0,u.Z)((0,u.Z)((0,u.Z)({},h.oO),h.Je),h.DF),{},{lambdaNotifTitle:{color:"#07193E",fontSize:16,fontFamily:"Inter,sans-serif",paddingLeft:18},fileInputFieldCss:{margin:"0"},fileTextBoxContainer:{maxWidth:" 100%",flex:1},fileReselectCss:{maxWidth:" 100%",flex:1}},h.bV))}))((function(e){var a=e.classes,l=(0,N.TL)(),c=(0,s.s0)(),b=(0,s.UO)(),f=(0,o.useState)(!1),x=(0,i.Z)(f,2),m=x[0],A=x[1],Z=(0,o.useState)(""),E=(0,i.Z)(Z,2),C=E[0],j=E[1],w=(0,o.useState)(""),y=(0,i.Z)(w,2),U=y[0],F=y[1],P=(0,o.useState)(""),B=(0,i.Z)(P,2),M=B[0],L=B[1],H=(0,o.useState)(""),K=(0,i.Z)(H,2),V=K[0],q=K[1],G=(0,o.useState)(""),_=(0,i.Z)(G,2),D=_[0],J=_[1],X=(0,o.useState)(""),Y=(0,i.Z)(X,2),$=Y[0],Q=Y[1],ee=(0,o.useState)(""),ae=(0,i.Z)(ee,2),le=ae[0],te=ae[1],ne=(0,o.useState)(""),re=(0,i.Z)(ne,2),ie=re[0],ue=re[1],oe=(0,o.useState)(""),se=(0,i.Z)(oe,2),ce=se[0],de=se[1],ve=(0,o.useState)(""),be=(0,i.Z)(ve,2),fe=be[0],he=be[1],pe=(0,o.useState)(""),ge=(0,i.Z)(pe,2),Se=ge[0],xe=ge[1],me=(0,o.useState)(""),Ae=(0,i.Z)(me,2),Ze=Ae[0],Ee=Ae[1],Ce=(0,o.useState)(""),je=(0,i.Z)(Ce,2),we=je[0],Te=je[1],ye=d()(b,"service","s3"),Ue=(0,o.useState)(!0),Ie=(0,i.Z)(Ue,2),We=Ie[0],Ne=Ie[1],ke=(0,o.useState)(""),Oe=(0,i.Z)(ke,2),ze=Oe[0],Re=Oe[1],Fe=(0,o.useCallback)((function(){return/^[A-Z0-9-_]+$/.test(C)?(Re(""),!0):(Re("Please verify that string is uppercase only and contains valid characters (numbers, dashes & underscores)."),!1)}),[C]);(0,o.useEffect)((function(){if(m){var e={},a={name:C,endpoint:U,bucket:M,prefix:V,region:D},t=ye;switch(ye){case"minio":e={minio:(0,u.Z)((0,u.Z)({},a),{},{accesskey:le,secretkey:ie})};break;case"s3":e={s3:(0,u.Z)((0,u.Z)({},a),{},{accesskey:le,secretkey:ie,storageclass:$})};break;case"gcs":e={gcs:(0,u.Z)((0,u.Z)({},a),{},{creds:fe})};break;case"azure":e={azure:(0,u.Z)((0,u.Z)({},a),{},{accountname:Se,accountkey:Ze})}}var i=(0,u.Z)({type:t},e);z.h.admin.addTier(i).then((function(){A(!1),c(S.gA.TIERS)})).catch(function(){var e=(0,r.Z)((0,n.Z)().mark((function e(a){var t;return(0,n.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,a.json();case 2:t=e.sent,A(!1),l((0,W.Ih)((0,R.g)(t)));case 5:case"end":return e.stop()}}),e)})));return function(a){return e.apply(this,arguments)}}())}}),[le,Ze,Se,M,fe,U,C,V,D,m,ie,l,$,ye,c]),(0,o.useEffect)((function(){var e=!0;""===ye&&(e=!1),""!==C&&Fe()||(e=!1),""===U&&(e=!1),""===M&&(e=!1),""===V&&(e=!1),""===D&&"minio"!==ye&&(e=!1),"s3"!==ye&&"minio"!==ye||(""===le&&(e=!1),""===ie&&(e=!1)),"gcs"===ye&&""===fe&&(e=!1),"azure"===ye&&(""===Se&&(e=!1),""===Ze&&(e=!1)),Ne(e)}),[le,Ze,Se,M,fe,U,We,C,V,D,ie,$,ye,Fe]),(0,o.useEffect)((function(){switch(ye){case"gcs":F("https://storage.googleapis.com"),Te("Google Cloud");break;case"s3":F("https://s3.amazonaws.com"),Te("Amazon S3");break;case"azure":F("http://blob.core.windows.net"),Te("Azure");break;case"minio":F(""),Te("MinIO")}}),[ye]);var Pe=g.Bh.find((function(e){return e.serviceName===ye}));return(0,o.useEffect)((function(){l((0,W.Sc)("add-tier-configuration"))}),[]),(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(k.Z,{label:(0,T.jsx)(o.Fragment,{children:(0,T.jsx)(v.hbI,{label:"Add Tier",onClick:function(){return c(S.gA.TIERS_ADD)}})}),actions:(0,T.jsx)(O.Z,{})}),(0,T.jsx)(v.Xgh,{children:(0,T.jsx)(v.rjZ,{item:!0,xs:12,sx:{border:"1px solid #eaeaea",padding:"25px"},children:(0,T.jsxs)("form",{noValidate:!0,onSubmit:function(e){e.preventDefault(),A(!0)},children:[""!==ye&&Pe?(0,T.jsxs)(v.NZf,{icon:Pe.logo,sx:{marginBottom:20},children:[we||""," - Add Tier Configuration"]}):null,(0,T.jsx)(v.rjZ,{item:!0,xs:12,sx:(0,t.Z)({display:"grid",gridTemplateColumns:"1fr 1fr",gridAutoFlow:"row",gridRowGap:20,gridColumnGap:50},"@media (max-width: ".concat(v.Egj.sm,"px)"),{gridTemplateColumns:"1fr",gridAutoFlow:"dense"}),children:""!==ye&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(v.Wzg,{id:"name",name:"name",label:"Name",placeholder:"Enter Name (Eg. REMOTE-TIER)",value:C,onChange:function(e){j(e.target.value.toUpperCase())},error:ze,required:!0}),(0,T.jsx)(v.Wzg,{id:"endpoint",name:"endpoint",label:"Endpoint",placeholder:"Enter Endpoint",value:U,onChange:function(e){F(e.target.value)},required:!0}),(ye===g.b2||ye===g.Pp)&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(v.Wzg,{id:"accessKey",name:"accessKey",label:"Access Key",placeholder:"Enter Access Key",value:le,onChange:function(e){te(e.target.value)},required:!0}),(0,T.jsx)(v.Wzg,{id:"secretKey",name:"secretKey",label:"Secret Key",placeholder:"Enter Secret Key",value:ie,onChange:function(e){ue(e.target.value)},required:!0})]}),ye===g.f0&&(0,T.jsx)(p.Z,{accept:".json",classes:{fileInputField:a.fileInputFieldCss,textBoxContainer:a.fileTextBoxContainer,fileReselect:a.fileReselectCss},id:"creds",label:"Credentials",name:"creds",onChange:function(e,a){he(e),de(a)},value:ce,required:!0}),ye===g.vB&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(v.Wzg,{id:"accountName",name:"accountName",label:"Account Name",placeholder:"Enter Account Name",value:Se,onChange:function(e){xe(e.target.value)},required:!0}),(0,T.jsx)(v.Wzg,{id:"accountKey",name:"accountKey",label:"Account Key",placeholder:"Enter Account Key",value:Ze,onChange:function(e){Ee(e.target.value)},required:!0})]}),(0,T.jsx)(v.Wzg,{id:"bucket",name:"bucket",label:"Bucket",placeholder:"Enter Bucket",value:M,onChange:function(e){L(e.target.value)},required:!0}),(0,T.jsx)(v.Wzg,{id:"prefix",name:"prefix",label:"Prefix",placeholder:"Enter Prefix",value:V,onChange:function(e){q(e.target.value)},required:!0}),(0,T.jsx)(I,{onChange:function(e){J(e)},required:"minio"!==ye,label:"Region",id:"region",name:"region",type:ye}),ye===g.b2&&(0,T.jsx)(v.Wzg,{id:"storageClass",name:"storageClass",label:"Storage Class",placeholder:"Enter Storage Class",value:$,onChange:function(e){Q(e.target.value)}})]})}),(0,T.jsx)(v.rjZ,{item:!0,xs:12,sx:h.ID.modalButtonBar,children:(0,T.jsx)(v.zxk,{id:"save-tier-configuration",type:"submit",variant:"callAction",disabled:m||!We,label:"Save Tier Configuration"})})]})})})]})}))},34345:function(e,a,l){"use strict";l.d(a,{Bh:function(){return s},Pp:function(){return r},b2:function(){return u},f0:function(){return i},vB:function(){return o}});var t=l(29945),n=l(80184),r="minio",i="gcs",u="s3",o="azure",s=[{serviceName:r,targetTitle:"MinIO",logo:(0,n.jsx)(t.$E9,{}),logoXs:(0,n.jsx)(t.YEz,{})},{serviceName:i,targetTitle:"Google Cloud Storage",logo:(0,n.jsx)(t.UQG,{}),logoXs:(0,n.jsx)(t.Vwu,{})},{serviceName:u,targetTitle:"AWS S3",logo:(0,n.jsx)(t.feu,{}),logoXs:(0,n.jsx)(t.Xj3,{})},{serviceName:o,targetTitle:"Azure",logo:(0,n.jsx)(t.jze,{}),logoXs:(0,n.jsx)(t.nAe,{})}]},99663:function(e,a,l){"use strict";var t=l(64836);a.Z=void 0;var n=t(l(45649)),r=l(80184),i=(0,n.default)((0,r.jsx)("path",{d:"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z"}),"AttachFile");a.Z=i},86711:function(e,a,l){"use strict";var t=l(64836);a.Z=void 0;var n=t(l(45649)),r=l(80184),i=(0,n.default)((0,r.jsx)("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"}),"Cancel");a.Z=i},45649:function(e,a,l){"use strict";Object.defineProperty(a,"__esModule",{value:!0}),Object.defineProperty(a,"default",{enumerable:!0,get:function(){return t.createSvgIcon}});var t=l(28610)},31260:function(e,a,l){"use strict";var t=l(78949);a.Z=t.Z},28610:function(e,a,l){"use strict";l.r(a),l.d(a,{capitalize:function(){return n.Z},createChainedFunction:function(){return r.Z},createSvgIcon:function(){return i.Z},debounce:function(){return u.Z},deprecatedPropType:function(){return o},isMuiElement:function(){return s.Z},ownerDocument:function(){return c.Z},ownerWindow:function(){return d.Z},requirePropFactory:function(){return v},setRef:function(){return b},unstable_ClassNameGenerator:function(){return A},unstable_useEnhancedEffect:function(){return f.Z},unstable_useId:function(){return h.Z},unsupportedProp:function(){return p},useControlled:function(){return g.Z},useEventCallback:function(){return S.Z},useForkRef:function(){return x.Z},useIsFocusVisible:function(){return m.Z}});var t=l(55902),n=l(14036),r=l(31260),i=l(76189),u=l(83199);var o=function(e,a){return function(){return null}},s=l(19103),c=l(98301),d=l(17602);l(87462);var v=function(e,a){return function(){return null}},b=l(62971).Z,f=l(40162),h=l(67384);var p=function(e,a,l,t,n){return null},g=l(98278),S=l(89683),x=l(42071),m=l(23031),A={configure:function(e){t.Z.configure(e)}}},64836:function(e){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); +//# sourceMappingURL=4335.09096e69.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/4335.ad6c0ff1.chunk.js.map b/portal-ui/build/static/js/4335.09096e69.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/4335.ad6c0ff1.chunk.js.map rename to portal-ui/build/static/js/4335.09096e69.chunk.js.map index ab51c1ad51..fc615d8118 100644 --- a/portal-ui/build/static/js/4335.ad6c0ff1.chunk.js.map +++ b/portal-ui/build/static/js/4335.09096e69.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/4335.ad6c0ff1.chunk.js","mappings":"6RAmCA,GAAeA,EAAAA,EAAAA,IA5BA,SAACC,GAAY,IAAAC,EAAA,OAC1BC,EAAAA,EAAAA,GAAa,CACXC,WAAY,CACVC,OAAoB,QAAbH,EAAAD,EAAMK,eAAO,IAAAJ,OAAA,EAAbA,EAAeK,MAAMC,OAAQ,YAErC,GAuBL,EAfmB,SAAHC,GAIS,IAHvBC,EAAOD,EAAPC,QACAC,EAAYF,EAAZE,aAAYC,EAAAH,EACZI,UAAAA,OAAS,IAAAD,GAAOA,EAEhB,OACEE,EAAAA,EAAAA,MAACC,EAAAA,SAAc,CAAAC,SAAA,CACZH,IAAaI,EAAAA,EAAAA,KAAA,UACdA,EAAAA,EAAAA,KAACC,EAAAA,EAAU,CAACC,UAAU,IAAIC,QAAQ,QAAQC,UAAWX,EAAQN,WAAWY,SACrEL,MAIT,IC+IA,GAAeX,EAAAA,EAAAA,IAjIA,SAACC,GAAY,OAC1BE,EAAAA,EAAAA,IAAYmB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACTC,EAAAA,IACAC,EAAAA,IAAa,IAChBC,YAAa,CACXC,SAAU,IACVC,WAAY,SACZC,SAAU,SACVC,aAAc,WACdC,UAAW,GAEbC,eAAgB,CACdC,OAAQ,SACR,4BAA6B,CAC3BC,SAAU,YAGXC,EAAAA,IAAe,IAClBC,YAAUb,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACLC,EAAAA,GAAWY,YAAU,IACxBC,WAAY,WAEdC,kBAAgBf,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACXC,EAAAA,GAAWc,kBAAgB,IAC9BX,SAAU,OACVY,OAAQ,oBACRC,YAAa,WAEd,GAqGL,EAnGqB,SAAH9B,GAYI,IAXpB+B,EAAK/B,EAAL+B,MACA9B,EAAOD,EAAPC,QACA+B,EAAQhC,EAARgC,SACAC,EAAEjC,EAAFiC,GACAC,EAAIlC,EAAJkC,KAAIC,EAAAnC,EACJoC,SAAAA,OAAQ,IAAAD,GAAQA,EAAAE,EAAArC,EAChBsC,QAAAA,OAAO,IAAAD,EAAG,GAAEA,EACZE,EAAQvC,EAARuC,SAAQC,EAAAxC,EACRF,MAAAA,OAAK,IAAA0C,EAAG,GAAEA,EAAAC,EAAAzC,EACV0C,OAAAA,OAAM,IAAAD,EAAG,GAAEA,EAAAE,EAAA3C,EACX4C,MAAAA,OAAK,IAAAD,EAAG,GAAEA,EAEVE,GAA4CC,EAAAA,EAAAA,WAAS,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAApDI,EAAgBF,EAAA,GAAEG,EAAeH,EAAA,GAExC,OACEvC,EAAAA,EAAAA,KAACF,EAAAA,SAAc,CAAAC,UACbF,EAAAA,EAAAA,MAAC8C,EAAAA,IAAI,CACHC,MAAI,EACJC,GAAI,GACJzC,UAAS,aAAA0C,OAAerD,EAAQqB,eAAc,KAAAgC,OAC5CrD,EAAQsD,YAAW,KAAAD,OACjBrD,EAAQuD,eAAc,KAAAF,OACd,KAAVxD,EAAeG,EAAQwD,aAAe,IACrClD,SAAA,CAEQ,KAAVwB,IACC1B,EAAAA,EAAAA,MAACqD,EAAAA,IAAU,CACTC,QAAS1B,EACTrB,UAAS,GAAA0C,OAAe,KAAVxD,EAAeG,EAAQ2D,gBAAkB,IAAKrD,SAAA,EAE5DF,EAAAA,EAAAA,MAAA,QAAAE,SAAA,CACGwB,EACAQ,EAAW,IAAM,MAEP,KAAZD,IACC9B,EAAAA,EAAAA,KAAA,OAAKI,UAAWX,EAAQ4D,iBAAiBtD,UACvCC,EAAAA,EAAAA,KAACsD,EAAAA,IAAO,CAACxB,QAASA,EAASyB,UAAU,MAAKxD,UACxCC,EAAAA,EAAAA,KAAA,OAAKI,UAAWX,EAAQqC,QAAQ/B,UAC9BC,EAAAA,EAAAA,KAACwD,EAAAA,IAAQ,aAQpBf,GAA8B,KAAVL,GACnBvC,EAAAA,EAAAA,MAAA,OAAKO,UAAWX,EAAQ2B,iBAAiBrB,SAAA,EACvCC,EAAAA,EAAAA,KAAA,SACEyD,KAAK,OACL/B,KAAMA,EACNF,SAAU,SAACkC,GACT,IAAMC,EAAWC,IAAIF,EAAG,uBAAwB,KClHrC,SAACG,EAAUC,GACpC,IAAMC,EAAOF,EAAIG,OAAOC,MAAM,GACxBC,EAAS,IAAIC,WACnBD,EAAOE,cAAcL,GAErBG,EAAOG,OAAS,WAGd,IAAMC,EAAaJ,EAAOK,OAC1B,GAAID,EAAY,CACd,IAAME,EAAYF,EAAWG,WAAWC,MAAM,WAErB,IAArBF,EAAUG,QACZb,EAASU,EAAU,GAEvB,CACF,CACF,CDkGgBI,CAAYlB,GAAG,SAACmB,GACdrD,EAASqD,EAAMlB,EACjB,GACF,EACAzB,OAAQA,EACRH,SAAUA,EACVH,SAAUA,EACVxB,UAAWX,EAAQqB,iBAGV,KAAVsB,IACCpC,EAAAA,EAAAA,KAAC8E,EAAAA,GAAU,CACT1F,MAAM,UACN,aAAW,iBACX2F,QAAS,WACPrC,GAAgB,EAClB,EACAsC,KAAK,QAAOjF,UAEZC,EAAAA,EAAAA,KAACiF,EAAAA,EAAU,MAIJ,KAAV3F,IAAgBU,EAAAA,EAAAA,KAACkF,EAAU,CAACxF,aAAcJ,QAG7CO,EAAAA,EAAAA,MAAA,OAAKO,UAAWX,EAAQ0F,aAAapF,SAAA,EACnCC,EAAAA,EAAAA,KAAA,OAAKI,UAAWX,EAAQe,YAAYT,SAAEqC,KACtCpC,EAAAA,EAAAA,KAAC8E,EAAAA,GAAU,CACT1F,MAAM,UACN,aAAW,iBACX2F,QAAS,WACPrC,GAAgB,EAClB,EACAsC,KAAK,QAAOjF,UAEZC,EAAAA,EAAAA,KAACoF,EAAAA,EAAc,aAO7B,G,yTE/HA,EA7BiC,CAC/B,CAAE7D,MAAO,iBAAkBa,MAAO,aAClC,CAAEb,MAAO,wBAAyBa,MAAO,aACzC,CAAEb,MAAO,0BAA2Ba,MAAO,aAC3C,CAAEb,MAAO,mBAAoBa,MAAO,aACpC,CAAEb,MAAO,qBAAsBa,MAAO,cACtC,CAAEb,MAAO,8BAA+Ba,MAAO,aAC/C,CAAEb,MAAO,yBAA0Ba,MAAO,kBAC1C,CAAEb,MAAO,wBAAyBa,MAAO,cACzC,CAAEb,MAAO,uBAAwBa,MAAO,kBACxC,CAAEb,MAAO,uBAAwBa,MAAO,kBACxC,CAAEb,MAAO,2BAA4Ba,MAAO,kBAC5C,CAAEb,MAAO,wBAAyBa,MAAO,kBACzC,CAAEb,MAAO,uBAAwBa,MAAO,kBACxC,CAAEb,MAAO,mBAAoBa,MAAO,gBACpC,CAAEb,MAAO,kBAAmBa,MAAO,cACnC,CAAEb,MAAO,kBAAmBa,MAAO,kBACnC,CAAEb,MAAO,qBAAsBa,MAAO,gBACtC,CAAEb,MAAO,mBAAoBa,MAAO,aACpC,CAAEb,MAAO,kBAAmBa,MAAO,aACnC,CAAEb,MAAO,iBAAkBa,MAAO,cAClC,CAAEb,MAAO,iBAAkBa,MAAO,aAClC,CAAEb,MAAO,qBAAsBa,MAAO,cACtC,CAAEb,MAAO,+BAA6Ba,MAAO,aAC7C,CAAEb,MAAO,wBAAyBa,MAAO,cACzC,CAAEb,MAAO,yBAA0Ba,MAAO,iBAC1C,CAAEb,MAAO,yBAA0Ba,MAAO,kBCV5C,EAhCkC,CAChC,CAAEb,MAAO,cAAYa,MAAO,2BAC5B,CAAEb,MAAO,UAAWa,MAAO,2BAC3B,CAAEb,MAAO,OAAQa,MAAO,eACxB,CAAEb,MAAO,iBAAkBa,MAAO,YAClC,CAAEb,MAAO,oBAAqBa,MAAO,YACrC,CAAEb,MAAO,SAAUa,MAAO,YAC1B,CAAEb,MAAO,cAAea,MAAO,YAC/B,CAAEb,MAAO,iBAAkBa,MAAO,YAClC,CAAEb,MAAO,YAAaa,MAAO,YAC7B,CAAEb,MAAO,eAAaa,MAAO,sBAC7B,CAAEb,MAAO,WAAYa,MAAO,sBAC5B,CAAEb,MAAO,SAAUa,MAAO,mBAC1B,CAAEb,MAAO,UAAWa,MAAO,iBAC3B,CAAEb,MAAO,UAAWa,MAAO,gBAC3B,CAAEb,MAAO,SAAUa,MAAO,gBAC1B,CAAEb,MAAO,YAAaa,MAAO,gBAC7B,CAAEb,MAAO,cAAea,MAAO,gBAC/B,CAAEb,MAAO,YAAUa,MAAO,gBAC1B,CAAEb,MAAO,SAAUa,MAAO,cAC1B,CAAEb,MAAO,YAAaa,MAAO,cAC7B,CAAEb,MAAO,QAASa,MAAO,mBACzB,CAAEb,MAAO,QAASa,MAAO,mBACzB,CAAEb,MAAO,QAASa,MAAO,mBACzB,CAAEb,MAAO,SAAUa,MAAO,eAC1B,CAAEb,MAAO,QAASa,MAAO,eACzB,CAAEb,MAAO,YAAaa,MAAO,mBAC7B,CAAEb,MAAO,UAAWa,MAAO,mBAC3B,CAAEb,MAAO,SAAUa,MAAO,wBAC1B,CAAEb,MAAO,YAAaa,MAAO,yBCiS/B,EA9SoC,CAClC,CACEb,MAAO,OACPa,MAAO,QAET,CACEb,MAAO,eACPa,MAAO,eAET,CACEb,MAAO,YACPa,MAAO,aAET,CACEb,MAAO,oBACPa,MAAO,oBAET,CACEb,MAAO,sBACPa,MAAO,qBAET,CACEb,MAAO,iBACPa,MAAO,iBAET,CACEb,MAAO,sBACPa,MAAO,sBAET,CACEb,MAAO,SACPa,MAAO,UAET,CACEb,MAAO,eACPa,MAAO,eAET,CACEb,MAAO,mBACPa,MAAO,mBAET,CACEb,MAAO,SACPa,MAAO,UAET,CACEb,MAAO,iBACPa,MAAO,iBAET,CACEb,MAAO,cACPa,MAAO,cAET,CACEb,MAAO,gBACPa,MAAO,gBAET,CACEb,MAAO,aACPa,MAAO,aAET,CACEb,MAAO,qBACPa,MAAO,kBAET,CACEb,MAAO,kBACPa,MAAO,iBAET,CACEb,MAAO,YACPa,MAAO,YAET,CACEb,MAAO,oBACPa,MAAO,iBAET,CACEb,MAAO,UACPa,MAAO,UAET,CACEb,MAAO,kBACPa,MAAO,eAET,CACEb,MAAO,YACPa,MAAO,WAET,CACEb,MAAO,oBACPa,MAAO,gBAET,CACEb,MAAO,iBACPa,MAAO,eAET,CACEb,MAAO,SACPa,MAAO,UAET,CACEb,MAAO,SACPa,MAAO,UAET,CACEb,MAAO,iBACPa,MAAO,iBAET,CACEb,MAAO,eACPa,MAAO,eAET,CACEb,MAAO,UACPa,MAAO,WAET,CACEb,MAAO,gBACPa,MAAO,gBAET,CACEb,MAAO,uBACPa,MAAO,sBAET,CACEb,MAAO,SACPa,MAAO,UAET,CACEb,MAAO,QACPa,MAAO,SAET,CACEb,MAAO,QACPa,MAAO,SAET,CACEb,MAAO,aACPa,MAAO,aAET,CACEb,MAAO,aACPa,MAAO,aAET,CACEb,MAAO,oBACPa,MAAO,mBAET,CACEb,MAAO,iBACPa,MAAO,gBAET,CACEb,MAAO,QACPa,MAAO,SAET,CACEb,MAAO,gBACPa,MAAO,gBAET,CACEb,MAAO,cACPa,MAAO,cAET,CACEb,MAAO,mBACPa,MAAO,kBAET,CACEb,MAAO,2BACPa,MAAO,uBAET,CACEb,MAAO,eACPa,MAAO,eAET,CACEb,MAAO,SACPa,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","sources":["screens/shared/ErrorBlock.tsx","screens/Console/Common/FormComponents/FileSelector/FileSelector.tsx","screens/Console/Common/FormComponents/FileSelector/utils.ts","screens/Console/Configurations/TiersConfiguration/s3-regions.tsx","screens/Console/Configurations/TiersConfiguration/gcs-regions.ts","screens/Console/Configurations/TiersConfiguration/azure-regions.ts","screens/Console/Configurations/TiersConfiguration/RegionSelect.tsx","screens/Console/Configurations/TiersConfiguration/RegionSelectWrapper.tsx","screens/Console/Configurations/TiersConfiguration/AddTierConfiguration.tsx","screens/Console/Configurations/TiersConfiguration/utils.tsx","../node_modules/@mui/icons-material/AttachFile.js","../node_modules/@mui/icons-material/Cancel.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/esm/deprecatedPropType.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/esm/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/esm/unsupportedProp.js","../node_modules/@mui/material/utils/index.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js"],"sourcesContent":["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","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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, IconButton } from \"mds\";\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
    \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 size=\"small\"\n >\n \n \n )}\n\n {error !== \"\" && }\n
    \n ) : (\n
    \n
    {value}
    \n {\n setShowSelector(true);\n }}\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) 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 { RegionEntry } from \"./types\";\n\nconst s3Regions: RegionEntry[] = [\n { label: \"US East (Ohio)\", value: \"us-east-2\" },\n { label: \"US East (N. Virginia)\", value: \"us-east-1\" },\n { label: \"US West (N. California)\", value: \"us-west-1\" },\n { label: \"US West (Oregon)\", value: \"us-west-2\" },\n { label: \"Africa (Cape Town)\", value: \"af-south-1\" },\n { label: \"Asia Pacific (Hong Kong)***\", value: \"ap-east-1\" },\n { label: \"Asia Pacific (Jakarta)\", value: \"ap-southeast-3\" },\n { label: \"Asia Pacific (Mumbai)\", value: \"ap-south-1\" },\n { label: \"Asia Pacific (Osaka)\", value: \"ap-northeast-3\" },\n { label: \"Asia Pacific (Seoul)\", value: \"ap-northeast-2\" },\n { label: \"Asia Pacific (Singapore)\", value: \"ap-southeast-1\" },\n { label: \"Asia Pacific (Sydney)\", value: \"ap-southeast-2\" },\n { label: \"Asia Pacific (Tokyo)\", value: \"ap-northeast-1\" },\n { label: \"Canada (Central)\", value: \"ca-central-1\" },\n { label: \"China (Beijing)\", value: \"cn-north-1\" },\n { label: \"China (Ningxia)\", value: \"cn-northwest-1\" },\n { label: \"Europe (Frankfurt)\", value: \"eu-central-1\" },\n { label: \"Europe (Ireland)\", value: \"eu-west-1\" },\n { label: \"Europe (London)\", value: \"eu-west-2\" },\n { label: \"Europe (Milan)\", value: \"eu-south-1\" },\n { label: \"Europe (Paris)\", value: \"eu-west-3\" },\n { label: \"Europe (Stockholm)\", value: \"eu-north-1\" },\n { label: \"South America (São Paulo)\", value: \"sa-east-1\" },\n { label: \"Middle East (Bahrain)\", value: \"me-south-1\" },\n { label: \"AWS GovCloud (US-East)\", value: \"us-gov-east-1\" },\n { label: \"AWS GovCloud (US-West)\", value: \"us-gov-west-1\" },\n];\n\nexport default s3Regions;\n","import { RegionEntry } from \"./types\";\n\nconst gcsRegions: RegionEntry[] = [\n { label: \"Montréal\", value: \"NORTHAMERICA-NORTHEAST1\" },\n { label: \"Toronto\", value: \"NORTHAMERICA-NORTHEAST2\" },\n { label: \"Iowa\", value: \"US-CENTRAL1\" },\n { label: \"South Carolina\", value: \"US-EAST1\" },\n { label: \"Northern Virginia\", value: \"US-EAST4\" },\n { label: \"Oregon\", value: \"US-WEST1\" },\n { label: \"Los Angeles\", value: \"US-WEST2\" },\n { label: \"Salt Lake City\", value: \"US-WEST3\" },\n { label: \"Las Vegas\", value: \"US-WEST4\" },\n { label: \"São Paulo\", value: \"SOUTHAMERICA-EAST1\" },\n { label: \"Santiago\", value: \"SOUTHAMERICA-WEST1\" },\n { label: \"Warsaw\", value: \"EUROPE-CENTRAL2\" },\n { label: \"Finland\", value: \"EUROPE-NORTH1\" },\n { label: \"Belgium\", value: \"EUROPE-WEST1\" },\n { label: \"London\", value: \"EUROPE-WEST2\" },\n { label: \"Frankfurt\", value: \"EUROPE-WEST3\" },\n { label: \"Netherlands\", value: \"EUROPE-WEST4\" },\n { label: \"Zürich\", value: \"EUROPE-WEST6\" },\n { label: \"Taiwan\", value: \"ASIA-EAST1\" },\n { label: \"Hong Kong\", value: \"ASIA-EAST2\" },\n { label: \"Tokyo\", value: \"ASIA-NORTHEAST1\" },\n { label: \"Osaka\", value: \"ASIA-NORTHEAST2\" },\n { label: \"Seoul\", value: \"ASIA-NORTHEAST3\" },\n { label: \"Mumbai\", value: \"ASIA-SOUTH1\" },\n { label: \"Delhi\", value: \"ASIA-SOUTH2\" },\n { label: \"Singapore\", value: \"ASIA-SOUTHEAST1\" },\n { label: \"Jakarta\", value: \"ASIA-SOUTHEAST2\" },\n { label: \"Sydney\", value: \"AUSTRALIA-SOUTHEAST1\" },\n { label: \"Melbourne\", value: \"AUSTRALIA-SOUTHEAST2\" },\n];\n\nexport default gcsRegions;\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 { RegionEntry } from \"./types\";\n\nconst azureRegions: RegionEntry[] = [\n {\n label: \"Asia\",\n value: \"asia\",\n },\n {\n label: \"Asia Pacific\",\n value: \"asiapacific\",\n },\n {\n label: \"Australia\",\n value: \"australia\",\n },\n {\n label: \"Australia Central\",\n value: \"australiacentral\",\n },\n {\n label: \"Australia Central 2\",\n value: \"australiacentral2\",\n },\n {\n label: \"Australia East\",\n value: \"australiaeast\",\n },\n {\n label: \"Australia Southeast\",\n value: \"australiasoutheast\",\n },\n {\n label: \"Brazil\",\n value: \"brazil\",\n },\n {\n label: \"Brazil South\",\n value: \"brazilsouth\",\n },\n {\n label: \"Brazil Southeast\",\n value: \"brazilsoutheast\",\n },\n {\n label: \"Canada\",\n value: \"canada\",\n },\n {\n label: \"Canada Central\",\n value: \"canadacentral\",\n },\n {\n label: \"Canada East\",\n value: \"canadaeast\",\n },\n {\n label: \"Central India\",\n value: \"centralindia\",\n },\n {\n label: \"Central US\",\n value: \"centralus\",\n },\n {\n label: \"Central US (Stage)\",\n value: \"centralusstage\",\n },\n {\n label: \"Central US EUAP\",\n value: \"centraluseuap\",\n },\n {\n label: \"East Asia\",\n value: \"eastasia\",\n },\n {\n label: \"East Asia (Stage)\",\n value: \"eastasiastage\",\n },\n {\n label: \"East US\",\n value: \"eastus\",\n },\n {\n label: \"East US (Stage)\",\n value: \"eastusstage\",\n },\n {\n label: \"East US 2\",\n value: \"eastus2\",\n },\n {\n label: \"East US 2 (Stage)\",\n value: \"eastus2stage\",\n },\n {\n label: \"East US 2 EUAP\",\n value: \"eastus2euap\",\n },\n {\n label: \"Europe\",\n value: \"europe\",\n },\n {\n label: \"France\",\n value: \"france\",\n },\n {\n label: \"France Central\",\n value: \"francecentral\",\n },\n {\n label: \"France South\",\n value: \"francesouth\",\n },\n {\n label: \"Germany\",\n value: \"germany\",\n },\n {\n label: \"Germany North\",\n value: \"germanynorth\",\n },\n {\n label: \"Germany West Central\",\n value: \"germanywestcentral\",\n },\n {\n label: \"Global\",\n value: \"global\",\n },\n {\n label: \"India\",\n value: \"india\",\n },\n {\n label: \"Japan\",\n value: \"japan\",\n },\n {\n label: \"Japan East\",\n value: \"japaneast\",\n },\n {\n label: \"Japan West\",\n value: \"japanwest\",\n },\n {\n label: \"Jio India Central\",\n value: \"jioindiacentral\",\n },\n {\n label: \"Jio India West\",\n value: \"jioindiawest\",\n },\n {\n label: \"Korea\",\n value: \"korea\",\n },\n {\n label: \"Korea Central\",\n value: \"koreacentral\",\n },\n {\n label: \"Korea South\",\n value: \"koreasouth\",\n },\n {\n label: \"North Central US\",\n value: \"northcentralus\",\n },\n {\n label: \"North Central US (Stage)\",\n value: \"northcentralusstage\",\n },\n {\n label: \"North Europe\",\n value: \"northeurope\",\n },\n {\n label: \"Norway\",\n value: \"norway\",\n },\n {\n label: \"Norway East\",\n value: \"norwayeast\",\n },\n {\n label: \"Norway West\",\n value: \"norwaywest\",\n },\n {\n label: \"South Africa\",\n value: \"southafrica\",\n },\n {\n label: \"South Africa North\",\n value: \"southafricanorth\",\n },\n {\n label: \"South Africa West\",\n value: \"southafricawest\",\n },\n {\n label: \"South Central US\",\n value: \"southcentralus\",\n },\n {\n label: \"South Central US (Stage)\",\n value: \"southcentralusstage\",\n },\n {\n label: \"South India\",\n value: \"southindia\",\n },\n {\n label: \"Southeast Asia\",\n value: \"southeastasia\",\n },\n {\n label: \"Southeast Asia (Stage)\",\n value: \"southeastasiastage\",\n },\n {\n label: \"Sweden Central\",\n value: \"swedencentral\",\n },\n {\n label: \"Switzerland\",\n value: \"switzerland\",\n },\n {\n label: \"Switzerland North\",\n value: \"switzerlandnorth\",\n },\n {\n label: \"Switzerland West\",\n value: \"switzerlandwest\",\n },\n {\n label: \"UAE Central\",\n value: \"uaecentral\",\n },\n {\n label: \"UAE North\",\n value: \"uaenorth\",\n },\n {\n label: \"UK South\",\n value: \"uksouth\",\n },\n {\n label: \"UK West\",\n value: \"ukwest\",\n },\n {\n label: \"United Arab Emirates\",\n value: \"uae\",\n },\n {\n label: \"United Kingdom\",\n value: \"uk\",\n },\n {\n label: \"United States\",\n value: \"unitedstates\",\n },\n {\n label: \"United States EUAP\",\n value: \"unitedstateseuap\",\n },\n {\n label: \"West Central US\",\n value: \"westcentralus\",\n },\n {\n label: \"West Europe\",\n value: \"westeurope\",\n },\n {\n label: \"West India\",\n value: \"westindia\",\n },\n {\n label: \"West US\",\n value: \"westus\",\n },\n {\n label: \"West US (Stage)\",\n value: \"westusstage\",\n },\n {\n label: \"West US 2\",\n value: \"westus2\",\n },\n {\n label: \"West US 2 (Stage)\",\n value: \"westus2stage\",\n },\n {\n label: \"West US 3\",\n value: \"westus3\",\n },\n];\nexport default azureRegions;\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\nimport { Autocomplete, Box, TextField } from \"@mui/material\";\n\nimport s3Regions from \"./s3-regions\";\nimport gcsRegions from \"./gcs-regions\";\nimport azRegions from \"./azure-regions\";\n\nconst getRegions = (type: string): any => {\n if (type === \"s3\") {\n return s3Regions;\n }\n if (type === \"gcs\") {\n return gcsRegions;\n }\n if (type === \"azure\") {\n return azRegions;\n }\n\n return [];\n};\n\nconst RegionSelect = ({\n type,\n onChange,\n inputProps,\n}: {\n type: \"minio\" | \"s3\" | \"gcs\" | \"azure\" | \"unsupported\";\n onChange: (obj: any) => void;\n inputProps?: any;\n}) => {\n const regionList = getRegions(type);\n const [value, setValue] = React.useState(\"\");\n\n return (\n {\n let newVal: any = newValue;\n\n if (typeof newValue === \"string\") {\n newVal = {\n label: newValue,\n };\n } else if (newValue && newValue.inputValue) {\n // Create a new value from the user input\n newVal = {\n label: newValue.inputValue,\n };\n } else {\n newVal = newValue;\n }\n setValue(newVal);\n onChange(newVal?.value);\n }}\n value={value}\n onInputChange={(e: any) => {\n const { target: { value = \"\" } = {} } = e || {};\n onChange(value);\n }}\n getOptionLabel={(option) => {\n // Value selected with enter, right from the input\n if (typeof option === \"string\") {\n return option;\n }\n // Add \"xxx\" option created dynamically\n if (option.inputValue) {\n return option.inputValue;\n }\n // Regular option\n return option.value;\n }}\n options={regionList}\n filterOptions={(opts: any[], state: any) => {\n const filterText = state.inputValue.toLowerCase();\n\n return opts.filter((opt) =>\n `${opt.label.toLowerCase()}${opt.value.toLowerCase()}`.includes(\n filterText,\n ),\n );\n }}\n renderOption={(props: any, opt: any) => {\n return (\n
  • \n \n {opt.value}\n {opt.label}\n \n
  • \n );\n }}\n renderInput={(params) => (\n \n )}\n />\n );\n};\n\nexport default RegionSelect;\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 { Grid, IconButton, InputLabel, Tooltip } from \"mds\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\nimport RegionSelect from \"./RegionSelect\";\n\ninterface RegionSelectBoxProps {\n label: string;\n classes?: any;\n onChange: (value: string) => void;\n onKeyPress?: (e: any) => void;\n value?: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n type: \"minio\" | \"s3\" | \"gcs\" | \"azure\";\n tooltip?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n overlayId?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n minWidth: 160,\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n }),\n);\n\nconst RegionSelectWrapper = ({\n label,\n onChange,\n id,\n name,\n type,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n overlayId,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n classes,\n className = \"\",\n}: RegionSelectBoxProps) => {\n const inputClasses = inputStyles();\n\n let inputProps: any = {\n \"data-index\": index,\n ...extraInputProps,\n name: name,\n id: id,\n classes: inputClasses,\n };\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
    \n \n
    \n \n
    \n
    \n
    \n )}\n
    \n )}\n\n
    \n \n {overlayIcon && (\n \n {\n overlayAction();\n }\n : () => null\n }\n id={overlayId}\n size={\"small\"}\n >\n {overlayIcon}\n \n
    \n )}\n {overlayObject && (\n \n {overlayObject}\n
    \n )}\n
    \n \n \n );\n};\n\nexport default withStyles(styles)(RegionSelectWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\n\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport get from \"lodash/get\";\nimport { Theme } from \"@mui/material/styles\";\nimport {\n BackLink,\n breakPoints,\n Button,\n Grid,\n PageLayout,\n InputBox,\n SectionTitle,\n} from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fileInputStyles,\n formFieldStyles,\n modalBasic,\n modalStyleUtils,\n settingsCommon,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport FileSelector from \"../../Common/FormComponents/FileSelector/FileSelector\";\nimport {\n azureServiceName,\n gcsServiceName,\n minioServiceName,\n s3ServiceName,\n tierTypes,\n} from \"./utils\";\n\nimport { IAM_PAGES } from \"../../../../common/SecureComponent/permissions\";\n\nimport RegionSelectWrapper from \"./RegionSelectWrapper\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../../HelpMenu\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { ApiError } from \"api/consoleApi\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...modalBasic,\n ...settingsCommon,\n ...formFieldStyles,\n lambdaNotifTitle: {\n color: \"#07193E\",\n fontSize: 16,\n fontFamily: \"Inter,sans-serif\",\n paddingLeft: 18,\n },\n fileInputFieldCss: {\n margin: \"0\",\n },\n fileTextBoxContainer: {\n maxWidth: \" 100%\",\n flex: 1,\n },\n fileReselectCss: {\n maxWidth: \" 100%\",\n flex: 1,\n },\n ...fileInputStyles,\n });\n\ninterface IAddNotificationEndpointProps {\n classes: any;\n}\n\nconst AddTierConfiguration = ({ classes }: IAddNotificationEndpointProps) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const params = useParams();\n\n //Local States\n const [saving, setSaving] = useState(false);\n\n // Form Items\n const [name, setName] = useState(\"\");\n const [endpoint, setEndpoint] = useState(\"\");\n const [bucket, setBucket] = useState(\"\");\n const [prefix, setPrefix] = useState(\"\");\n const [region, setRegion] = useState(\"\");\n const [storageClass, setStorageClass] = useState(\"\");\n\n const [accessKey, setAccessKey] = useState(\"\");\n const [secretKey, setSecretKey] = useState(\"\");\n\n const [creds, setCreds] = useState(\"\");\n const [encodedCreds, setEncodedCreds] = useState(\"\");\n\n const [accountName, setAccountName] = useState(\"\");\n const [accountKey, setAccountKey] = useState(\"\");\n\n const [titleSelection, setTitleSelection] = useState(\"\");\n\n const type = get(params, \"service\", \"s3\");\n\n // Validations\n const [isFormValid, setIsFormValid] = useState(true);\n const [nameInputError, setNameInputError] = useState(\"\");\n\n // Extra validation functions\n\n const validName = useCallback(() => {\n const patternAgainst = /^[A-Z0-9-_]+$/; // Only allow uppercase, numbers, dashes and underscores\n if (patternAgainst.test(name)) {\n setNameInputError(\"\");\n return true;\n }\n\n setNameInputError(\n \"Please verify that string is uppercase only and contains valid characters (numbers, dashes & underscores).\",\n );\n return false;\n }, [name]);\n\n //Effects\n\n useEffect(() => {\n if (saving) {\n let request = {};\n let fields = {\n name,\n endpoint,\n bucket,\n prefix,\n region,\n };\n\n let tierType = type;\n\n switch (type) {\n case \"minio\":\n request = {\n minio: {\n ...fields,\n accesskey: accessKey,\n secretkey: secretKey,\n },\n };\n break;\n case \"s3\":\n request = {\n s3: {\n ...fields,\n accesskey: accessKey,\n secretkey: secretKey,\n storageclass: storageClass,\n },\n };\n break;\n case \"gcs\":\n request = {\n gcs: {\n ...fields,\n creds: encodedCreds,\n },\n };\n break;\n case \"azure\":\n request = {\n azure: {\n ...fields,\n accountname: accountName,\n accountkey: accountKey,\n },\n };\n }\n\n let payload = {\n type: tierType as\n | \"azure\"\n | \"s3\"\n | \"minio\"\n | \"gcs\"\n | \"unsupported\"\n | undefined,\n ...request,\n };\n\n api.admin\n .addTier(payload)\n .then(() => {\n setSaving(false);\n navigate(IAM_PAGES.TIERS);\n })\n .catch(async (res) => {\n const err = (await res.json()) as ApiError;\n setSaving(false);\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n });\n }\n }, [\n accessKey,\n accountKey,\n accountName,\n bucket,\n encodedCreds,\n endpoint,\n name,\n prefix,\n region,\n saving,\n secretKey,\n dispatch,\n storageClass,\n type,\n navigate,\n ]);\n\n useEffect(() => {\n let valid = true;\n if (type === \"\") {\n valid = false;\n }\n if (name === \"\" || !validName()) {\n valid = false;\n }\n if (endpoint === \"\") {\n valid = false;\n }\n if (bucket === \"\") {\n valid = false;\n }\n if (prefix === \"\") {\n valid = false;\n }\n if (region === \"\" && type !== \"minio\") {\n valid = false;\n }\n\n if (type === \"s3\" || type === \"minio\") {\n if (accessKey === \"\") {\n valid = false;\n }\n if (secretKey === \"\") {\n valid = false;\n }\n }\n\n if (type === \"gcs\") {\n if (encodedCreds === \"\") {\n valid = false;\n }\n }\n\n if (type === \"azure\") {\n if (accountName === \"\") {\n valid = false;\n }\n if (accountKey === \"\") {\n valid = false;\n }\n }\n\n setIsFormValid(valid);\n }, [\n accessKey,\n accountKey,\n accountName,\n bucket,\n encodedCreds,\n endpoint,\n isFormValid,\n name,\n prefix,\n region,\n secretKey,\n storageClass,\n type,\n validName,\n ]);\n\n useEffect(() => {\n switch (type) {\n case \"gcs\":\n setEndpoint(\"https://storage.googleapis.com\");\n setTitleSelection(\"Google Cloud\");\n break;\n case \"s3\":\n setEndpoint(\"https://s3.amazonaws.com\");\n setTitleSelection(\"Amazon S3\");\n break;\n case \"azure\":\n setEndpoint(\"http://blob.core.windows.net\");\n setTitleSelection(\"Azure\");\n break;\n case \"minio\":\n setEndpoint(\"\");\n setTitleSelection(\"MinIO\");\n }\n }, [type]);\n\n //Fetch Actions\n const submitForm = (event: React.FormEvent) => {\n event.preventDefault();\n setSaving(true);\n };\n\n // Input actions\n const updateTierName = (e: React.ChangeEvent) => {\n setName(e.target.value.toUpperCase());\n };\n\n const targetElement = tierTypes.find((item) => item.serviceName === type);\n\n useEffect(() => {\n dispatch(setHelpName(\"add-tier-configuration\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n \n navigate(IAM_PAGES.TIERS_ADD)}\n />\n \n }\n actions={}\n />\n\n \n \n
    \n {type !== \"\" && targetElement ? (\n \n {titleSelection ? titleSelection : \"\"} - Add Tier Configuration\n \n ) : null}\n \n {type !== \"\" && (\n \n \n ) => {\n setEndpoint(e.target.value);\n }}\n required\n />\n {(type === s3ServiceName || type === minioServiceName) && (\n \n ) => {\n setAccessKey(e.target.value);\n }}\n required\n />\n ) => {\n setSecretKey(e.target.value);\n }}\n required\n />\n \n )}\n {type === gcsServiceName && (\n {\n setEncodedCreds(encodedValue);\n setCreds(fileName);\n }}\n value={creds}\n required\n />\n )}\n {type === azureServiceName && (\n \n ) => {\n setAccountName(e.target.value);\n }}\n required\n />\n ) => {\n setAccountKey(e.target.value);\n }}\n required\n />\n \n )}\n ) => {\n setBucket(e.target.value);\n }}\n required\n />\n ) => {\n setPrefix(e.target.value);\n }}\n required\n />\n {\n setRegion(value);\n }}\n required={type !== \"minio\"}\n label={\"Region\"}\n id=\"region\"\n name=\"region\"\n type={type as \"azure\" | \"s3\" | \"minio\" | \"gcs\"}\n />\n {type === s3ServiceName && (\n ) => {\n setStorageClass(e.target.value);\n }}\n />\n )}\n \n )}\n \n \n \n \n \n \n
    \n
    \n );\n};\n\nexport default withStyles(styles)(AddTierConfiguration);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\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","\"use strict\";\n\"use client\";\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\"use client\";\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'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["withStyles","theme","_theme$palette","createStyles","errorBlock","color","palette","error","main","_ref","classes","errorMessage","_ref$withBreak","withBreak","_jsxs","React","children","_jsx","Typography","component","variant","className","_objectSpread","fieldBasic","tooltipHelper","valueString","maxWidth","whiteSpace","overflow","textOverflow","marginTop","fileInputField","margin","flexFlow","fileInputStyles","inputLabel","fontWeight","textBoxContainer","border","paddingLeft","label","onChange","id","name","_ref$disabled","disabled","_ref$tooltip","tooltip","required","_ref$error","_ref$accept","accept","_ref$value","value","_useState","useState","_useState2","_slicedToArray","showFileSelector","setShowSelector","Grid","item","xs","concat","fieldBottom","fieldContainer","errorInField","InputLabel","htmlFor","fieldLabelError","tooltipContainer","Tooltip","placement","HelpIcon","type","e","fileName","get","evt","callback","file","target","files","reader","FileReader","readAsDataURL","onload","fileBase64","result","fileArray","toString","split","length","fileProcess","data","IconButton","onClick","size","CancelIcon","ErrorBlock","fileReselect","AttachFileIcon","inputProps","regionList","s3Regions","gcsRegions","azRegions","getRegions","_React$useState","_React$useState2","setValue","Autocomplete","sx","padding","fontSize","borderColor","borderWidth","freeSolo","selectOnFocus","handleHomeEndKeys","event","newValue","_newVal","newVal","inputValue","onInputChange","_ref2$target","_ref2$target2$value","getOptionLabel","option","options","filterOptions","opts","state","filterText","toLowerCase","filter","opt","includes","renderOption","props","Box","display","alignItems","borderBottom","cursor","width","renderInput","params","TextField","fullWidth","inputStyles","makeStyles","inputFieldStyles","flexGrow","position","minWidth","overlayAction","right","top","maxHeight","_ref$index","index","_ref$required","overlayId","_ref$overlayIcon","overlayIcon","_ref$overlayObject","overlayObject","_ref$extraInputProps","extraInputProps","_ref$noLabelMinWidth","noLabelMinWidth","_ref$className","inputClasses","container","clsx","inputBoxContainer","noMinWidth","RegionSelect","modalBasic","settingsCommon","formFieldStyles","lambdaNotifTitle","fontFamily","fileInputFieldCss","fileTextBoxContainer","flex","fileReselectCss","dispatch","useAppDispatch","navigate","useNavigate","useParams","saving","setSaving","_useState3","_useState4","setName","_useState5","_useState6","endpoint","setEndpoint","_useState7","_useState8","bucket","setBucket","_useState9","_useState10","prefix","setPrefix","_useState11","_useState12","region","setRegion","_useState13","_useState14","storageClass","setStorageClass","_useState15","_useState16","accessKey","setAccessKey","_useState17","_useState18","secretKey","setSecretKey","_useState19","_useState20","creds","setCreds","_useState21","_useState22","encodedCreds","setEncodedCreds","_useState23","_useState24","accountName","setAccountName","_useState25","_useState26","accountKey","setAccountKey","_useState27","_useState28","titleSelection","setTitleSelection","_useState29","_useState30","isFormValid","setIsFormValid","_useState31","_useState32","nameInputError","setNameInputError","validName","useCallback","test","useEffect","request","fields","tierType","minio","accesskey","secretkey","s3","storageclass","gcs","azure","accountname","accountkey","payload","api","admin","addTier","then","IAM_PAGES","TIERS","catch","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","res","err","wrap","_context","prev","next","json","sent","setErrorSnackMessage","errorToHandler","stop","_x","apply","arguments","valid","targetElement","tierTypes","find","serviceName","setHelpName","Fragment","PageHeaderWrapper","BackLink","TIERS_ADD","actions","HelpMenu","PageLayout","noValidate","onSubmit","preventDefault","SectionTitle","icon","logo","marginBottom","_defineProperty","gridTemplateColumns","gridAutoFlow","gridRowGap","gridColumnGap","breakPoints","sm","InputBox","placeholder","toUpperCase","s3ServiceName","minioServiceName","gcsServiceName","FileSelector","encodedValue","azureServiceName","RegionSelectWrapper","modalStyleUtils","modalButtonBar","Button","targetTitle","MinIOTierIcon","logoXs","MinIOTierIconXs","GoogleTierIcon","GoogleTierIconXs","S3TierIcon","S3TierIconXs","AzureTierIcon","AzureTierIconXs","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Object","defineProperty","enumerable","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/4335.09096e69.chunk.js","mappings":"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AAO,eAET,CACEb,MAAO,YACPa,MAAO,aAET,CACEb,MAAO,oBACPa,MAAO,oBAET,CACEb,MAAO,sBACPa,MAAO,qBAET,CACEb,MAAO,iBACPa,MAAO,iBAET,CACEb,MAAO,sBACPa,MAAO,sBAET,CACEb,MAAO,SACPa,MAAO,UAET,CACEb,MAAO,eACPa,MAAO,eAET,CACEb,MAAO,mBACPa,MAAO,mBAET,CACEb,MAAO,SACPa,MAAO,UAET,CACEb,MAAO,iBACPa,MAAO,iBAET,CACEb,MAAO,cACPa,MAAO,cAET,CACEb,MAAO,gBACPa,MAAO,gBAET,CACEb,MAAO,aACPa,MAAO,aAET,CACEb,MAAO,qBACPa,MAAO,kBAET,CACEb,MAAO,kBACPa,MAAO,iBAET,CACEb,MAAO,YACPa,MAAO,YAET,CACEb,MAAO,oBACPa,MAAO,iBAET,CACEb,MAAO,UACPa,MAAO,UAET,CACEb,MAAO,kBACPa,MAAO,eAET,CACEb,MAAO,YACPa,MAAO,WAET,CACEb,MAAO,oBACPa,MAAO,gBAET,CACEb,MAAO,iBACPa,MAAO,eAET,CACEb,MAAO,SACPa,MAAO,UAET,CACEb,MAAO,SACPa,MAAO,UAET,CACEb,MAAO,iBACPa,MAAO,iBAET,CACEb,MAAO,eACPa,MAAO,eAET,CACEb,MAAO,UACPa,MAAO,WAET,CACEb,MAAO,gBACPa,MAAO,gBAET,CACEb,MAAO,uBACPa,MAAO,sBAET,CACEb,MAAO,SACPa,MAAO,UAET,CACEb,MAAO,QACPa,MAAO,SAET,CACEb,MAAO,QACPa,MAAO,SAET,CACEb,MAAO,aACPa,MAAO,aAET,CACEb,MAAO,aACPa,MAAO,aAET,CACEb,MAAO,oBACPa,MAAO,mBAET,CACEb,MAAO,iBACPa,MAAO,gBAET,CACEb,MAAO,QACPa,MAAO,SAET,CACEb,MAAO,gBACPa,MAAO,gBAET,CACEb,MAAO,cACPa,MAAO,cAET,CACEb,MAAO,mBACPa,MAAO,kBAET,CACEb,MAAO,2BACPa,MAAO,uBAET,CACEb,MAAO,eACPa,MAAO,eAET,CACEb,MAAO,SACPa,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","sources":["screens/shared/ErrorBlock.tsx","screens/Console/Common/FormComponents/FileSelector/FileSelector.tsx","screens/Console/Common/FormComponents/FileSelector/utils.ts","screens/Console/Configurations/TiersConfiguration/s3-regions.tsx","screens/Console/Configurations/TiersConfiguration/gcs-regions.ts","screens/Console/Configurations/TiersConfiguration/azure-regions.ts","screens/Console/Configurations/TiersConfiguration/RegionSelect.tsx","screens/Console/Configurations/TiersConfiguration/RegionSelectWrapper.tsx","screens/Console/Configurations/TiersConfiguration/AddTierConfiguration.tsx","screens/Console/Configurations/TiersConfiguration/utils.tsx","../node_modules/@mui/icons-material/AttachFile.js","../node_modules/@mui/icons-material/Cancel.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/esm/deprecatedPropType.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/esm/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/esm/unsupportedProp.js","../node_modules/@mui/material/utils/index.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js"],"sourcesContent":["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","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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, IconButton } from \"mds\";\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
    \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 size=\"small\"\n >\n \n \n )}\n\n {error !== \"\" && }\n
    \n ) : (\n
    \n
    {value}
    \n {\n setShowSelector(true);\n }}\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) 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 { RegionEntry } from \"./types\";\n\nconst s3Regions: RegionEntry[] = [\n { label: \"US East (Ohio)\", value: \"us-east-2\" },\n { label: \"US East (N. Virginia)\", value: \"us-east-1\" },\n { label: \"US West (N. California)\", value: \"us-west-1\" },\n { label: \"US West (Oregon)\", value: \"us-west-2\" },\n { label: \"Africa (Cape Town)\", value: \"af-south-1\" },\n { label: \"Asia Pacific (Hong Kong)***\", value: \"ap-east-1\" },\n { label: \"Asia Pacific (Jakarta)\", value: \"ap-southeast-3\" },\n { label: \"Asia Pacific (Mumbai)\", value: \"ap-south-1\" },\n { label: \"Asia Pacific (Osaka)\", value: \"ap-northeast-3\" },\n { label: \"Asia Pacific (Seoul)\", value: \"ap-northeast-2\" },\n { label: \"Asia Pacific (Singapore)\", value: \"ap-southeast-1\" },\n { label: \"Asia Pacific (Sydney)\", value: \"ap-southeast-2\" },\n { label: \"Asia Pacific (Tokyo)\", value: \"ap-northeast-1\" },\n { label: \"Canada (Central)\", value: \"ca-central-1\" },\n { label: \"China (Beijing)\", value: \"cn-north-1\" },\n { label: \"China (Ningxia)\", value: \"cn-northwest-1\" },\n { label: \"Europe (Frankfurt)\", value: \"eu-central-1\" },\n { label: \"Europe (Ireland)\", value: \"eu-west-1\" },\n { label: \"Europe (London)\", value: \"eu-west-2\" },\n { label: \"Europe (Milan)\", value: \"eu-south-1\" },\n { label: \"Europe (Paris)\", value: \"eu-west-3\" },\n { label: \"Europe (Stockholm)\", value: \"eu-north-1\" },\n { label: \"South America (São Paulo)\", value: \"sa-east-1\" },\n { label: \"Middle East (Bahrain)\", value: \"me-south-1\" },\n { label: \"AWS GovCloud (US-East)\", value: \"us-gov-east-1\" },\n { label: \"AWS GovCloud (US-West)\", value: \"us-gov-west-1\" },\n];\n\nexport default s3Regions;\n","import { RegionEntry } from \"./types\";\n\nconst gcsRegions: RegionEntry[] = [\n { label: \"Montréal\", value: \"NORTHAMERICA-NORTHEAST1\" },\n { label: \"Toronto\", value: \"NORTHAMERICA-NORTHEAST2\" },\n { label: \"Iowa\", value: \"US-CENTRAL1\" },\n { label: \"South Carolina\", value: \"US-EAST1\" },\n { label: \"Northern Virginia\", value: \"US-EAST4\" },\n { label: \"Oregon\", value: \"US-WEST1\" },\n { label: \"Los Angeles\", value: \"US-WEST2\" },\n { label: \"Salt Lake City\", value: \"US-WEST3\" },\n { label: \"Las Vegas\", value: \"US-WEST4\" },\n { label: \"São Paulo\", value: \"SOUTHAMERICA-EAST1\" },\n { label: \"Santiago\", value: \"SOUTHAMERICA-WEST1\" },\n { label: \"Warsaw\", value: \"EUROPE-CENTRAL2\" },\n { label: \"Finland\", value: \"EUROPE-NORTH1\" },\n { label: \"Belgium\", value: \"EUROPE-WEST1\" },\n { label: \"London\", value: \"EUROPE-WEST2\" },\n { label: \"Frankfurt\", value: \"EUROPE-WEST3\" },\n { label: \"Netherlands\", value: \"EUROPE-WEST4\" },\n { label: \"Zürich\", value: \"EUROPE-WEST6\" },\n { label: \"Taiwan\", value: \"ASIA-EAST1\" },\n { label: \"Hong Kong\", value: \"ASIA-EAST2\" },\n { label: \"Tokyo\", value: \"ASIA-NORTHEAST1\" },\n { label: \"Osaka\", value: \"ASIA-NORTHEAST2\" },\n { label: \"Seoul\", value: \"ASIA-NORTHEAST3\" },\n { label: \"Mumbai\", value: \"ASIA-SOUTH1\" },\n { label: \"Delhi\", value: \"ASIA-SOUTH2\" },\n { label: \"Singapore\", value: \"ASIA-SOUTHEAST1\" },\n { label: \"Jakarta\", value: \"ASIA-SOUTHEAST2\" },\n { label: \"Sydney\", value: \"AUSTRALIA-SOUTHEAST1\" },\n { label: \"Melbourne\", value: \"AUSTRALIA-SOUTHEAST2\" },\n];\n\nexport default gcsRegions;\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 { RegionEntry } from \"./types\";\n\nconst azureRegions: RegionEntry[] = [\n {\n label: \"Asia\",\n value: \"asia\",\n },\n {\n label: \"Asia Pacific\",\n value: \"asiapacific\",\n },\n {\n label: \"Australia\",\n value: \"australia\",\n },\n {\n label: \"Australia Central\",\n value: \"australiacentral\",\n },\n {\n label: \"Australia Central 2\",\n value: \"australiacentral2\",\n },\n {\n label: \"Australia East\",\n value: \"australiaeast\",\n },\n {\n label: \"Australia Southeast\",\n value: \"australiasoutheast\",\n },\n {\n label: \"Brazil\",\n value: \"brazil\",\n },\n {\n label: \"Brazil South\",\n value: \"brazilsouth\",\n },\n {\n label: \"Brazil Southeast\",\n value: \"brazilsoutheast\",\n },\n {\n label: \"Canada\",\n value: \"canada\",\n },\n {\n label: \"Canada Central\",\n value: \"canadacentral\",\n },\n {\n label: \"Canada East\",\n value: \"canadaeast\",\n },\n {\n label: \"Central India\",\n value: \"centralindia\",\n },\n {\n label: \"Central US\",\n value: \"centralus\",\n },\n {\n label: \"Central US (Stage)\",\n value: \"centralusstage\",\n },\n {\n label: \"Central US EUAP\",\n value: \"centraluseuap\",\n },\n {\n label: \"East Asia\",\n value: \"eastasia\",\n },\n {\n label: \"East Asia (Stage)\",\n value: \"eastasiastage\",\n },\n {\n label: \"East US\",\n value: \"eastus\",\n },\n {\n label: \"East US (Stage)\",\n value: \"eastusstage\",\n },\n {\n label: \"East US 2\",\n value: \"eastus2\",\n },\n {\n label: \"East US 2 (Stage)\",\n value: \"eastus2stage\",\n },\n {\n label: \"East US 2 EUAP\",\n value: \"eastus2euap\",\n },\n {\n label: \"Europe\",\n value: \"europe\",\n },\n {\n label: \"France\",\n value: \"france\",\n },\n {\n label: \"France Central\",\n value: \"francecentral\",\n },\n {\n label: \"France South\",\n value: \"francesouth\",\n },\n {\n label: \"Germany\",\n value: \"germany\",\n },\n {\n label: \"Germany North\",\n value: \"germanynorth\",\n },\n {\n label: \"Germany West Central\",\n value: \"germanywestcentral\",\n },\n {\n label: \"Global\",\n value: \"global\",\n },\n {\n label: \"India\",\n value: \"india\",\n },\n {\n label: \"Japan\",\n value: \"japan\",\n },\n {\n label: \"Japan East\",\n value: \"japaneast\",\n },\n {\n label: \"Japan West\",\n value: \"japanwest\",\n },\n {\n label: \"Jio India Central\",\n value: \"jioindiacentral\",\n },\n {\n label: \"Jio India West\",\n value: \"jioindiawest\",\n },\n {\n label: \"Korea\",\n value: \"korea\",\n },\n {\n label: \"Korea Central\",\n value: \"koreacentral\",\n },\n {\n label: \"Korea South\",\n value: \"koreasouth\",\n },\n {\n label: \"North Central US\",\n value: \"northcentralus\",\n },\n {\n label: \"North Central US (Stage)\",\n value: \"northcentralusstage\",\n },\n {\n label: \"North Europe\",\n value: \"northeurope\",\n },\n {\n label: \"Norway\",\n value: \"norway\",\n },\n {\n label: \"Norway East\",\n value: \"norwayeast\",\n },\n {\n label: \"Norway West\",\n value: \"norwaywest\",\n },\n {\n label: \"South Africa\",\n value: \"southafrica\",\n },\n {\n label: \"South Africa North\",\n value: \"southafricanorth\",\n },\n {\n label: \"South Africa West\",\n value: \"southafricawest\",\n },\n {\n label: \"South Central US\",\n value: \"southcentralus\",\n },\n {\n label: \"South Central US (Stage)\",\n value: \"southcentralusstage\",\n },\n {\n label: \"South India\",\n value: \"southindia\",\n },\n {\n label: \"Southeast Asia\",\n value: \"southeastasia\",\n },\n {\n label: \"Southeast Asia (Stage)\",\n value: \"southeastasiastage\",\n },\n {\n label: \"Sweden Central\",\n value: \"swedencentral\",\n },\n {\n label: \"Switzerland\",\n value: \"switzerland\",\n },\n {\n label: \"Switzerland North\",\n value: \"switzerlandnorth\",\n },\n {\n label: \"Switzerland West\",\n value: \"switzerlandwest\",\n },\n {\n label: \"UAE Central\",\n value: \"uaecentral\",\n },\n {\n label: \"UAE North\",\n value: \"uaenorth\",\n },\n {\n label: \"UK South\",\n value: \"uksouth\",\n },\n {\n label: \"UK West\",\n value: \"ukwest\",\n },\n {\n label: \"United Arab Emirates\",\n value: \"uae\",\n },\n {\n label: \"United Kingdom\",\n value: \"uk\",\n },\n {\n label: \"United States\",\n value: \"unitedstates\",\n },\n {\n label: \"United States EUAP\",\n value: \"unitedstateseuap\",\n },\n {\n label: \"West Central US\",\n value: \"westcentralus\",\n },\n {\n label: \"West Europe\",\n value: \"westeurope\",\n },\n {\n label: \"West India\",\n value: \"westindia\",\n },\n {\n label: \"West US\",\n value: \"westus\",\n },\n {\n label: \"West US (Stage)\",\n value: \"westusstage\",\n },\n {\n label: \"West US 2\",\n value: \"westus2\",\n },\n {\n label: \"West US 2 (Stage)\",\n value: \"westus2stage\",\n },\n {\n label: \"West US 3\",\n value: \"westus3\",\n },\n];\nexport default azureRegions;\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\nimport { Autocomplete, Box, TextField } from \"@mui/material\";\n\nimport s3Regions from \"./s3-regions\";\nimport gcsRegions from \"./gcs-regions\";\nimport azRegions from \"./azure-regions\";\n\nconst getRegions = (type: string): any => {\n if (type === \"s3\") {\n return s3Regions;\n }\n if (type === \"gcs\") {\n return gcsRegions;\n }\n if (type === \"azure\") {\n return azRegions;\n }\n\n return [];\n};\n\nconst RegionSelect = ({\n type,\n onChange,\n inputProps,\n}: {\n type: \"minio\" | \"s3\" | \"gcs\" | \"azure\" | \"unsupported\";\n onChange: (obj: any) => void;\n inputProps?: any;\n}) => {\n const regionList = getRegions(type);\n const [value, setValue] = React.useState(\"\");\n\n return (\n {\n let newVal: any = newValue;\n\n if (typeof newValue === \"string\") {\n newVal = {\n label: newValue,\n };\n } else if (newValue && newValue.inputValue) {\n // Create a new value from the user input\n newVal = {\n label: newValue.inputValue,\n };\n } else {\n newVal = newValue;\n }\n setValue(newVal);\n onChange(newVal?.value);\n }}\n value={value}\n onInputChange={(e: any) => {\n const { target: { value = \"\" } = {} } = e || {};\n onChange(value);\n }}\n getOptionLabel={(option) => {\n // Value selected with enter, right from the input\n if (typeof option === \"string\") {\n return option;\n }\n // Add \"xxx\" option created dynamically\n if (option.inputValue) {\n return option.inputValue;\n }\n // Regular option\n return option.value;\n }}\n options={regionList}\n filterOptions={(opts: any[], state: any) => {\n const filterText = state.inputValue.toLowerCase();\n\n return opts.filter((opt) =>\n `${opt.label.toLowerCase()}${opt.value.toLowerCase()}`.includes(\n filterText,\n ),\n );\n }}\n renderOption={(props: any, opt: any) => {\n return (\n
  • \n \n {opt.value}\n {opt.label}\n \n
  • \n );\n }}\n renderInput={(params) => (\n \n )}\n />\n );\n};\n\nexport default RegionSelect;\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 { Grid, IconButton, InputLabel, Tooltip } from \"mds\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\nimport RegionSelect from \"./RegionSelect\";\n\ninterface RegionSelectBoxProps {\n label: string;\n classes?: any;\n onChange: (value: string) => void;\n onKeyPress?: (e: any) => void;\n value?: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n type: \"minio\" | \"s3\" | \"gcs\" | \"azure\";\n tooltip?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n overlayId?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n minWidth: 160,\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n }),\n);\n\nconst RegionSelectWrapper = ({\n label,\n onChange,\n id,\n name,\n type,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n overlayId,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n classes,\n className = \"\",\n}: RegionSelectBoxProps) => {\n const inputClasses = inputStyles();\n\n let inputProps: any = {\n \"data-index\": index,\n ...extraInputProps,\n name: name,\n id: id,\n classes: inputClasses,\n };\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
    \n \n
    \n \n
    \n
    \n
    \n )}\n
    \n )}\n\n
    \n \n {overlayIcon && (\n \n {\n overlayAction();\n }\n : () => null\n }\n id={overlayId}\n size={\"small\"}\n >\n {overlayIcon}\n \n
    \n )}\n {overlayObject && (\n \n {overlayObject}\n
    \n )}\n \n \n \n );\n};\n\nexport default withStyles(styles)(RegionSelectWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\n\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport get from \"lodash/get\";\nimport { Theme } from \"@mui/material/styles\";\nimport {\n BackLink,\n breakPoints,\n Button,\n Grid,\n PageLayout,\n InputBox,\n SectionTitle,\n} from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fileInputStyles,\n formFieldStyles,\n modalBasic,\n modalStyleUtils,\n settingsCommon,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport FileSelector from \"../../Common/FormComponents/FileSelector/FileSelector\";\nimport {\n azureServiceName,\n gcsServiceName,\n minioServiceName,\n s3ServiceName,\n tierTypes,\n} from \"./utils\";\n\nimport { IAM_PAGES } from \"../../../../common/SecureComponent/permissions\";\n\nimport RegionSelectWrapper from \"./RegionSelectWrapper\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../../HelpMenu\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { ApiError } from \"api/consoleApi\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...modalBasic,\n ...settingsCommon,\n ...formFieldStyles,\n lambdaNotifTitle: {\n color: \"#07193E\",\n fontSize: 16,\n fontFamily: \"Inter,sans-serif\",\n paddingLeft: 18,\n },\n fileInputFieldCss: {\n margin: \"0\",\n },\n fileTextBoxContainer: {\n maxWidth: \" 100%\",\n flex: 1,\n },\n fileReselectCss: {\n maxWidth: \" 100%\",\n flex: 1,\n },\n ...fileInputStyles,\n });\n\ninterface IAddNotificationEndpointProps {\n classes: any;\n}\n\nconst AddTierConfiguration = ({ classes }: IAddNotificationEndpointProps) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const params = useParams();\n\n //Local States\n const [saving, setSaving] = useState(false);\n\n // Form Items\n const [name, setName] = useState(\"\");\n const [endpoint, setEndpoint] = useState(\"\");\n const [bucket, setBucket] = useState(\"\");\n const [prefix, setPrefix] = useState(\"\");\n const [region, setRegion] = useState(\"\");\n const [storageClass, setStorageClass] = useState(\"\");\n\n const [accessKey, setAccessKey] = useState(\"\");\n const [secretKey, setSecretKey] = useState(\"\");\n\n const [creds, setCreds] = useState(\"\");\n const [encodedCreds, setEncodedCreds] = useState(\"\");\n\n const [accountName, setAccountName] = useState(\"\");\n const [accountKey, setAccountKey] = useState(\"\");\n\n const [titleSelection, setTitleSelection] = useState(\"\");\n\n const type = get(params, \"service\", \"s3\");\n\n // Validations\n const [isFormValid, setIsFormValid] = useState(true);\n const [nameInputError, setNameInputError] = useState(\"\");\n\n // Extra validation functions\n\n const validName = useCallback(() => {\n const patternAgainst = /^[A-Z0-9-_]+$/; // Only allow uppercase, numbers, dashes and underscores\n if (patternAgainst.test(name)) {\n setNameInputError(\"\");\n return true;\n }\n\n setNameInputError(\n \"Please verify that string is uppercase only and contains valid characters (numbers, dashes & underscores).\",\n );\n return false;\n }, [name]);\n\n //Effects\n\n useEffect(() => {\n if (saving) {\n let request = {};\n let fields = {\n name,\n endpoint,\n bucket,\n prefix,\n region,\n };\n\n let tierType = type;\n\n switch (type) {\n case \"minio\":\n request = {\n minio: {\n ...fields,\n accesskey: accessKey,\n secretkey: secretKey,\n },\n };\n break;\n case \"s3\":\n request = {\n s3: {\n ...fields,\n accesskey: accessKey,\n secretkey: secretKey,\n storageclass: storageClass,\n },\n };\n break;\n case \"gcs\":\n request = {\n gcs: {\n ...fields,\n creds: encodedCreds,\n },\n };\n break;\n case \"azure\":\n request = {\n azure: {\n ...fields,\n accountname: accountName,\n accountkey: accountKey,\n },\n };\n }\n\n let payload = {\n type: tierType as\n | \"azure\"\n | \"s3\"\n | \"minio\"\n | \"gcs\"\n | \"unsupported\"\n | undefined,\n ...request,\n };\n\n api.admin\n .addTier(payload)\n .then(() => {\n setSaving(false);\n navigate(IAM_PAGES.TIERS);\n })\n .catch(async (res) => {\n const err = (await res.json()) as ApiError;\n setSaving(false);\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n });\n }\n }, [\n accessKey,\n accountKey,\n accountName,\n bucket,\n encodedCreds,\n endpoint,\n name,\n prefix,\n region,\n saving,\n secretKey,\n dispatch,\n storageClass,\n type,\n navigate,\n ]);\n\n useEffect(() => {\n let valid = true;\n if (type === \"\") {\n valid = false;\n }\n if (name === \"\" || !validName()) {\n valid = false;\n }\n if (endpoint === \"\") {\n valid = false;\n }\n if (bucket === \"\") {\n valid = false;\n }\n if (prefix === \"\") {\n valid = false;\n }\n if (region === \"\" && type !== \"minio\") {\n valid = false;\n }\n\n if (type === \"s3\" || type === \"minio\") {\n if (accessKey === \"\") {\n valid = false;\n }\n if (secretKey === \"\") {\n valid = false;\n }\n }\n\n if (type === \"gcs\") {\n if (encodedCreds === \"\") {\n valid = false;\n }\n }\n\n if (type === \"azure\") {\n if (accountName === \"\") {\n valid = false;\n }\n if (accountKey === \"\") {\n valid = false;\n }\n }\n\n setIsFormValid(valid);\n }, [\n accessKey,\n accountKey,\n accountName,\n bucket,\n encodedCreds,\n endpoint,\n isFormValid,\n name,\n prefix,\n region,\n secretKey,\n storageClass,\n type,\n validName,\n ]);\n\n useEffect(() => {\n switch (type) {\n case \"gcs\":\n setEndpoint(\"https://storage.googleapis.com\");\n setTitleSelection(\"Google Cloud\");\n break;\n case \"s3\":\n setEndpoint(\"https://s3.amazonaws.com\");\n setTitleSelection(\"Amazon S3\");\n break;\n case \"azure\":\n setEndpoint(\"http://blob.core.windows.net\");\n setTitleSelection(\"Azure\");\n break;\n case \"minio\":\n setEndpoint(\"\");\n setTitleSelection(\"MinIO\");\n }\n }, [type]);\n\n //Fetch Actions\n const submitForm = (event: React.FormEvent) => {\n event.preventDefault();\n setSaving(true);\n };\n\n // Input actions\n const updateTierName = (e: React.ChangeEvent) => {\n setName(e.target.value.toUpperCase());\n };\n\n const targetElement = tierTypes.find((item) => item.serviceName === type);\n\n useEffect(() => {\n dispatch(setHelpName(\"add-tier-configuration\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n \n navigate(IAM_PAGES.TIERS_ADD)}\n />\n \n }\n actions={}\n />\n\n \n \n
    \n {type !== \"\" && targetElement ? (\n \n {titleSelection ? titleSelection : \"\"} - Add Tier Configuration\n \n ) : null}\n \n {type !== \"\" && (\n \n \n ) => {\n setEndpoint(e.target.value);\n }}\n required\n />\n {(type === s3ServiceName || type === minioServiceName) && (\n \n ) => {\n setAccessKey(e.target.value);\n }}\n required\n />\n ) => {\n setSecretKey(e.target.value);\n }}\n required\n />\n \n )}\n {type === gcsServiceName && (\n {\n setEncodedCreds(encodedValue);\n setCreds(fileName);\n }}\n value={creds}\n required\n />\n )}\n {type === azureServiceName && (\n \n ) => {\n setAccountName(e.target.value);\n }}\n required\n />\n ) => {\n setAccountKey(e.target.value);\n }}\n required\n />\n \n )}\n ) => {\n setBucket(e.target.value);\n }}\n required\n />\n ) => {\n setPrefix(e.target.value);\n }}\n required\n />\n {\n setRegion(value);\n }}\n required={type !== \"minio\"}\n label={\"Region\"}\n id=\"region\"\n name=\"region\"\n type={type as \"azure\" | \"s3\" | \"minio\" | \"gcs\"}\n />\n {type === s3ServiceName && (\n ) => {\n setStorageClass(e.target.value);\n }}\n />\n )}\n \n )}\n \n \n \n \n \n \n
    \n
    \n );\n};\n\nexport default withStyles(styles)(AddTierConfiguration);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\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","\"use strict\";\n\"use client\";\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\"use client\";\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'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["withStyles","theme","_theme$palette","createStyles","errorBlock","color","palette","error","main","_ref","classes","errorMessage","_ref$withBreak","withBreak","_jsxs","React","children","_jsx","Typography","component","variant","className","_objectSpread","fieldBasic","tooltipHelper","valueString","maxWidth","whiteSpace","overflow","textOverflow","marginTop","fileInputField","margin","flexFlow","fileInputStyles","inputLabel","fontWeight","textBoxContainer","border","paddingLeft","label","onChange","id","name","_ref$disabled","disabled","_ref$tooltip","tooltip","required","_ref$error","_ref$accept","accept","_ref$value","value","_useState","useState","_useState2","_slicedToArray","showFileSelector","setShowSelector","Grid","item","xs","concat","fieldBottom","fieldContainer","errorInField","InputLabel","htmlFor","fieldLabelError","tooltipContainer","Tooltip","placement","HelpIcon","type","e","fileName","get","evt","callback","file","target","files","reader","FileReader","readAsDataURL","onload","fileBase64","result","fileArray","toString","split","length","fileProcess","data","IconButton","onClick","size","CancelIcon","ErrorBlock","fileReselect","AttachFileIcon","inputProps","regionList","s3Regions","gcsRegions","azRegions","getRegions","_React$useState","_React$useState2","setValue","Autocomplete","sx","padding","fontSize","borderColor","borderWidth","freeSolo","selectOnFocus","handleHomeEndKeys","event","newValue","_newVal","newVal","inputValue","onInputChange","_ref2$target","_ref2$target2$value","getOptionLabel","option","options","filterOptions","opts","state","filterText","toLowerCase","filter","opt","includes","renderOption","props","Box","display","alignItems","borderBottom","cursor","width","renderInput","params","TextField","fullWidth","inputStyles","makeStyles","inputFieldStyles","flexGrow","position","minWidth","overlayAction","right","top","maxHeight","_ref$index","index","_ref$required","overlayId","_ref$overlayIcon","overlayIcon","_ref$overlayObject","overlayObject","_ref$extraInputProps","extraInputProps","_ref$noLabelMinWidth","noLabelMinWidth","_ref$className","inputClasses","container","clsx","inputBoxContainer","noMinWidth","RegionSelect","modalBasic","settingsCommon","formFieldStyles","lambdaNotifTitle","fontFamily","fileInputFieldCss","fileTextBoxContainer","flex","fileReselectCss","dispatch","useAppDispatch","navigate","useNavigate","useParams","saving","setSaving","_useState3","_useState4","setName","_useState5","_useState6","endpoint","setEndpoint","_useState7","_useState8","bucket","setBucket","_useState9","_useState10","prefix","setPrefix","_useState11","_useState12","region","setRegion","_useState13","_useState14","storageClass","setStorageClass","_useState15","_useState16","accessKey","setAccessKey","_useState17","_useState18","secretKey","setSecretKey","_useState19","_useState20","creds","setCreds","_useState21","_useState22","encodedCreds","setEncodedCreds","_useState23","_useState24","accountName","setAccountName","_useState25","_useState26","accountKey","setAccountKey","_useState27","_useState28","titleSelection","setTitleSelection","_useState29","_useState30","isFormValid","setIsFormValid","_useState31","_useState32","nameInputError","setNameInputError","validName","useCallback","test","useEffect","request","fields","tierType","minio","accesskey","secretkey","s3","storageclass","gcs","azure","accountname","accountkey","payload","api","admin","addTier","then","IAM_PAGES","TIERS","catch","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","res","err","wrap","_context","prev","next","json","sent","setErrorSnackMessage","errorToHandler","stop","_x","apply","arguments","valid","targetElement","tierTypes","find","serviceName","setHelpName","Fragment","PageHeaderWrapper","BackLink","TIERS_ADD","actions","HelpMenu","PageLayout","noValidate","onSubmit","preventDefault","SectionTitle","icon","logo","marginBottom","_defineProperty","gridTemplateColumns","gridAutoFlow","gridRowGap","gridColumnGap","breakPoints","sm","InputBox","placeholder","toUpperCase","s3ServiceName","minioServiceName","gcsServiceName","FileSelector","encodedValue","azureServiceName","RegionSelectWrapper","modalStyleUtils","modalButtonBar","Button","targetTitle","MinIOTierIcon","logoXs","MinIOTierIconXs","GoogleTierIcon","GoogleTierIconXs","S3TierIcon","S3TierIconXs","AzureTierIcon","AzureTierIconXs","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Object","defineProperty","enumerable","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/4414.f0324dee.chunk.js b/portal-ui/build/static/js/4414.1db328e3.chunk.js similarity index 73% rename from portal-ui/build/static/js/4414.f0324dee.chunk.js rename to portal-ui/build/static/js/4414.1db328e3.chunk.js index 00e0f86872..2e46b0774e 100644 --- a/portal-ui/build/static/js/4414.f0324dee.chunk.js +++ b/portal-ui/build/static/js/4414.1db328e3.chunk.js @@ -1,2 +1,2 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[4414],{90282:function(e,n,t){"use strict";t.d(n,{Z:function(){return x}});var r=t(29439),a=t(1413),i=t(72791),c=t(26181),o=t.n(c),u=t(29945),s=t(99663),l=t(86711),d=t(11135),f=t(25787),p=t(23814),v=t(20890),m=t(80184),h=(0,f.Z)((function(e){var n;return(0,d.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,r=e.withBreak,a=void 0===r||r;return(0,m.jsxs)(i.Fragment,{children:[a&&(0,m.jsx)("br",{}),(0,m.jsx)(v.Z,{component:"p",variant:"body1",className:n.errorBlock,children:t})]})})),x=(0,f.Z)((function(e){return(0,d.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,c=e.id,d=e.name,f=e.disabled,p=void 0!==f&&f,v=e.tooltip,x=void 0===v?"":v,Z=e.required,g=e.error,j=void 0===g?"":g,b=e.accept,y=void 0===b?"":b,C=e.value,S=void 0===C?"":C,w=(0,i.useState)(!1),F=(0,r.Z)(w,2),z=F[0],k=F[1];return(0,m.jsx)(i.Fragment,{children:(0,m.jsxs)(u.rjZ,{item:!0,xs:12,className:"inputItem ".concat(t.fileInputField," ").concat(t.fieldBottom," ").concat(t.fieldContainer," ").concat(""!==j?t.errorInField:""),children:[""!==n&&(0,m.jsxs)(u.AZs,{htmlFor:c,className:"".concat(""!==j?t.fieldLabelError:""),children:[(0,m.jsxs)("span",{children:[n,Z?"*":""]}),""!==x&&(0,m.jsx)("div",{className:t.tooltipContainer,children:(0,m.jsx)(u.ua7,{tooltip:x,placement:"top",children:(0,m.jsx)("div",{className:t.tooltip,children:(0,m.jsx)(u.byK,{})})})})]}),z||""===S?(0,m.jsxs)("div",{className:t.textBoxContainer,children:[(0,m.jsx)("input",{type:"file",name:d,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:y,required:Z,disabled:p,className:t.fileInputField}),""!==S&&(0,m.jsx)(u.hU,{color:"primary","aria-label":"upload picture",onClick:function(){k(!1)},size:"small",children:(0,m.jsx)(l.Z,{})}),""!==j&&(0,m.jsx)(h,{errorMessage:j})]}):(0,m.jsxs)("div",{className:t.fileReselect,children:[(0,m.jsx)("div",{className:t.valueString,children:S}),(0,m.jsx)(u.hU,{color:"primary","aria-label":"upload picture",onClick:function(){k(!0)},size:"small",children:(0,m.jsx)(s.Z,{})})]})]})})}))},34414:function(e,n,t){"use strict";t.r(n);var r=t(29439),a=t(72791),i=t(26181),c=t.n(i),o=t(29945),u=t(31776),s=t(82342),l=t(23814),d=t(87995),f=t(81551),p=t(90282),v=t(56028),m=t(80184);n.default=function(e){var n=e.open,t=e.closeModalAndRefresh,i=e.tierData,h=(0,f.TL)(),x=(0,a.useState)(!1),Z=(0,r.Z)(x,2),g=Z[0],j=Z[1],b=(0,a.useState)(""),y=(0,r.Z)(b,2),C=y[0],S=y[1],w=(0,a.useState)(""),F=(0,r.Z)(w,2),z=F[0],k=F[1],N=(0,a.useState)(""),I=(0,r.Z)(N,2),A=I[0],K=I[1],_=(0,a.useState)(""),B=(0,r.Z)(_,2),E=B[0],M=B[1],V=(0,a.useState)(!0),W=(0,r.Z)(V,2),L=W[0],P=W[1],R=c()(i,"type",""),D=c()(i,"".concat(R,".name"),"");(0,a.useEffect)((function(){var e=!0;"s3"===R||"azure"===R||"minio"===R?""!==A&&""!==E||(e=!1):"gcs"===R&&""===z&&(e=!1),P(e)}),[E,A,z,R]);return(0,m.jsx)(v.Z,{modalOpen:n,titleIcon:(0,m.jsx)(o.mBM,{}),onClose:function(){t(!1)},title:"Update Credentials - ".concat(R," / ").concat(D),children:(0,m.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),j(!0),function(){var e={};"s3"===R||"azure"===R||"minio"===R?e={access_key:A,secret_key:E}:"gcs"===R&&(e={creds:z}),""!==D?u.h.admin.editTierCredentials(R,D,e).then((function(){j(!1),t(!0)})).catch((function(e){j(!1),h((0,d.zb)((0,s.g)(e.error)))})):(0,d.zb)({errorMessage:"There was an error retrieving tier information",detailedError:""})}()},children:[(0,m.jsxs)(o.ltY,{withBorders:!1,containerPadding:!1,children:[("s3"===R||"minio"===R)&&(0,m.jsxs)(a.Fragment,{children:[(0,m.jsx)(o.Wzg,{id:"accessKey",name:"accessKey",label:"Access Key",placeholder:"Enter Access Key",value:A,onChange:function(e){K(e.target.value)}}),(0,m.jsx)(o.Wzg,{id:"secretKey",name:"secretKey",label:"Secret Key",placeholder:"Enter Secret Key",value:E,onChange:function(e){M(e.target.value)}})]}),"gcs"===R&&(0,m.jsx)(a.Fragment,{children:(0,m.jsx)(p.Z,{accept:".json",id:"creds",label:"Credentials",name:"creds",onChange:function(e,n){k(e),S(n)},value:C})}),"azure"===R&&(0,m.jsxs)(a.Fragment,{children:[(0,m.jsx)(o.Wzg,{id:"accountName",name:"accountName",label:"Account Name",placeholder:"Enter Account Name",value:A,onChange:function(e){K(e.target.value)}}),(0,m.jsx)(o.Wzg,{id:"accountKey",name:"accountKey",label:"Account Key",placeholder:"Enter Account Key",value:E,onChange:function(e){M(e.target.value)}})]})]}),g&&(0,m.jsx)(o.rjZ,{item:!0,xs:12,children:(0,m.jsx)(o.kod,{})}),(0,m.jsx)(o.rjZ,{item:!0,xs:12,sx:l.ID.modalButtonBar,children:(0,m.jsx)(o.zxk,{id:"save-credentials",type:"submit",variant:"callAction",disabled:g||!L,label:"Save"})})]})})}},99663:function(e,n,t){"use strict";var r=t(64836);n.Z=void 0;var a=r(t(45649)),i=t(80184),c=(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=c},86711:function(e,n,t){"use strict";var r=t(64836);n.Z=void 0;var a=r(t(45649)),i=t(80184),c=(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=c},45649:function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return r.createSvgIcon}});var r=t(28610)},31260:function(e,n,t){"use strict";var r=t(78949);n.Z=r.Z},28610:function(e,n,t){"use strict";t.r(n),t.d(n,{capitalize:function(){return a.Z},createChainedFunction:function(){return i.Z},createSvgIcon:function(){return c.Z},debounce:function(){return o.Z},deprecatedPropType:function(){return u},isMuiElement:function(){return s.Z},ownerDocument:function(){return l.Z},ownerWindow:function(){return d.Z},requirePropFactory:function(){return f},setRef:function(){return p},unstable_ClassNameGenerator:function(){return b},unstable_useEnhancedEffect:function(){return v.Z},unstable_useId:function(){return m.Z},unsupportedProp:function(){return h},useControlled:function(){return x.Z},useEventCallback:function(){return Z.Z},useForkRef:function(){return g.Z},useIsFocusVisible:function(){return j.Z}});var r=t(55902),a=t(14036),i=t(31260),c=t(76189),o=t(83199);var u=function(e,n){return function(){return null}},s=t(19103),l=t(98301),d=t(17602);t(87462);var f=function(e,n){return function(){return null}},p=t(62971).Z,v=t(40162),m=t(67384);var h=function(e,n,t,r,a){return null},x=t(98278),Z=t(89683),g=t(42071),j=t(23031),b={configure:function(e){r.Z.configure(e)}}},19103:function(e,n,t){"use strict";t.d(n,{Z:function(){return a}});var r=t(72791);var a=function(e,n){return r.isValidElement(e)&&-1!==n.indexOf(e.type.muiName)}},78949:function(e,n,t){"use strict";function r(){for(var e=arguments.length,n=new Array(e),t=0;t\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","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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, IconButton } from \"mds\";\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
    \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 size=\"small\"\n >\n \n \n )}\n\n {error !== \"\" && }\n
    \n ) : (\n
    \n
    {value}
    \n {\n setShowSelector(true);\n }}\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 .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { Button, FormLayout, Grid, InputBox, LockIcon, ProgressBar } from \"mds\";\nimport { Tier } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport FileSelector from \"../../Common/FormComponents/FileSelector/FileSelector\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\n\ninterface ITierCredentialsModal {\n open: boolean;\n closeModalAndRefresh: (refresh: boolean) => any;\n tierData: Tier;\n}\n\nconst UpdateTierCredentialsModal = ({\n open,\n closeModalAndRefresh,\n tierData,\n}: ITierCredentialsModal) => {\n const dispatch = useAppDispatch();\n const [savingTiers, setSavingTiers] = useState(false);\n const [creds, setCreds] = useState(\"\");\n const [encodedCreds, setEncodedCreds] = useState(\"\");\n\n const [accountName, setAccountName] = useState(\"\");\n const [accountKey, setAccountKey] = useState(\"\");\n\n // Validations\n const [isFormValid, setIsFormValid] = useState(true);\n\n const type = get(tierData, \"type\", \"\");\n const name = get(tierData, `${type}.name`, \"\");\n\n useEffect(() => {\n let valid = true;\n\n if (type === \"s3\" || type === \"azure\" || type === \"minio\") {\n if (accountName === \"\" || accountKey === \"\") {\n valid = false;\n }\n } else if (type === \"gcs\") {\n if (encodedCreds === \"\") {\n valid = false;\n }\n }\n setIsFormValid(valid);\n }, [accountKey, accountName, encodedCreds, type]);\n\n const addRecord = () => {\n let rules = {};\n\n if (type === \"s3\" || type === \"azure\" || type === \"minio\") {\n rules = {\n access_key: accountName,\n secret_key: accountKey,\n };\n } else if (type === \"gcs\") {\n rules = {\n creds: encodedCreds,\n };\n }\n if (name !== \"\") {\n api.admin\n .editTierCredentials(\n type as \"azure\" | \"s3\" | \"minio\" | \"gcs\",\n name,\n rules,\n )\n .then(() => {\n setSavingTiers(false);\n closeModalAndRefresh(true);\n })\n .catch((err) => {\n setSavingTiers(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n } else {\n setModalErrorSnackMessage({\n errorMessage: \"There was an error retrieving tier information\",\n detailedError: \"\",\n });\n }\n };\n\n return (\n }\n onClose={() => {\n closeModalAndRefresh(false);\n }}\n title={`Update Credentials - ${type} / ${name}`}\n >\n ) => {\n e.preventDefault();\n setSavingTiers(true);\n addRecord();\n }}\n >\n \n {(type === \"s3\" || type === \"minio\") && (\n \n ) => {\n setAccountName(e.target.value);\n }}\n />\n ) => {\n setAccountKey(e.target.value);\n }}\n />\n \n )}\n {type === \"gcs\" && (\n \n {\n setEncodedCreds(encodedValue);\n setCreds(fileName);\n }}\n value={creds}\n />\n \n )}\n {type === \"azure\" && (\n \n ) => {\n setAccountName(e.target.value);\n }}\n />\n ) => {\n setAccountKey(e.target.value);\n }}\n />\n \n )}\n \n {savingTiers && (\n \n \n \n )}\n \n \n \n \n \n );\n};\n\nexport default UpdateTierCredentialsModal;\n","\"use strict\";\n\"use client\";\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\"use client\";\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'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n var _muiName, _element$type;\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf( // For server components `muiName` is avaialble in element.type._payload.value.muiName\n // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45\n // eslint-disable-next-line no-underscore-dangle\n (_muiName = element.type.muiName) != null ? _muiName : (_element$type = element.type) == null || (_element$type = _element$type._payload) == null || (_element$type = _element$type.value) == null ? void 0 : _element$type.muiName) !== -1;\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["withStyles","theme","_theme$palette","createStyles","errorBlock","color","palette","error","main","_ref","classes","errorMessage","_ref$withBreak","withBreak","_jsxs","React","children","_jsx","Typography","component","variant","className","_objectSpread","fieldBasic","tooltipHelper","valueString","maxWidth","whiteSpace","overflow","textOverflow","marginTop","fileInputField","margin","flexFlow","fileInputStyles","inputLabel","fontWeight","textBoxContainer","border","paddingLeft","label","onChange","id","name","_ref$disabled","disabled","_ref$tooltip","tooltip","required","_ref$error","_ref$accept","accept","_ref$value","value","_useState","useState","_useState2","_slicedToArray","showFileSelector","setShowSelector","Grid","item","xs","concat","fieldBottom","fieldContainer","errorInField","InputLabel","htmlFor","fieldLabelError","tooltipContainer","Tooltip","placement","HelpIcon","type","e","fileName","get","evt","callback","file","target","files","reader","FileReader","readAsDataURL","onload","fileBase64","result","fileArray","toString","split","length","fileProcess","data","IconButton","onClick","size","CancelIcon","ErrorBlock","fileReselect","AttachFileIcon","open","closeModalAndRefresh","tierData","dispatch","useAppDispatch","savingTiers","setSavingTiers","_useState3","_useState4","creds","setCreds","_useState5","_useState6","encodedCreds","setEncodedCreds","_useState7","_useState8","accountName","setAccountName","_useState9","_useState10","accountKey","setAccountKey","_useState11","_useState12","isFormValid","setIsFormValid","useEffect","valid","ModalWrapper","modalOpen","titleIcon","LockIcon","onClose","title","noValidate","autoComplete","onSubmit","preventDefault","rules","access_key","secret_key","api","admin","editTierCredentials","then","catch","err","setModalErrorSnackMessage","errorToHandler","detailedError","addRecord","FormLayout","withBorders","containerPadding","Fragment","InputBox","placeholder","FileSelector","encodedValue","ProgressBar","sx","modalStyleUtils","modalButtonBar","Button","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Object","defineProperty","enumerable","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","props","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","element","muiNames","_muiName","_element$type","indexOf","muiName","_payload","_len","arguments","funcs","Array","_key","reduce","acc","func","_len2","args","_key2","apply","this","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/4414.f0324dee.chunk.js.map b/portal-ui/build/static/js/4414.f0324dee.chunk.js.map deleted file mode 100644 index 67d963b47f..0000000000 --- a/portal-ui/build/static/js/4414.f0324dee.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/4414.f0324dee.chunk.js","mappings":"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","sources":["screens/shared/ErrorBlock.tsx","screens/Console/Common/FormComponents/FileSelector/FileSelector.tsx","screens/Console/Common/FormComponents/FileSelector/utils.ts","screens/Console/Configurations/TiersConfiguration/UpdateTierCredentialsModal.tsx","../node_modules/@mui/icons-material/AttachFile.js","../node_modules/@mui/icons-material/Cancel.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/esm/deprecatedPropType.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/esm/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/esm/unsupportedProp.js","../node_modules/@mui/material/utils/index.js","../node_modules/@mui/material/utils/isMuiElement.js","../node_modules/@mui/utils/esm/isMuiElement.js","../node_modules/@mui/utils/esm/createChainedFunction.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js"],"sourcesContent":["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","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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, IconButton } from \"mds\";\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
    \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 size=\"small\"\n >\n \n \n )}\n\n {error !== \"\" && }\n
    \n ) : (\n
    \n
    {value}
    \n {\n setShowSelector(true);\n }}\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 .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { Button, FormLayout, Grid, InputBox, LockIcon, ProgressBar } from \"mds\";\nimport { Tier } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport FileSelector from \"../../Common/FormComponents/FileSelector/FileSelector\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\n\ninterface ITierCredentialsModal {\n open: boolean;\n closeModalAndRefresh: (refresh: boolean) => any;\n tierData: Tier;\n}\n\nconst UpdateTierCredentialsModal = ({\n open,\n closeModalAndRefresh,\n tierData,\n}: ITierCredentialsModal) => {\n const dispatch = useAppDispatch();\n const [savingTiers, setSavingTiers] = useState(false);\n const [creds, setCreds] = useState(\"\");\n const [encodedCreds, setEncodedCreds] = useState(\"\");\n\n const [accountName, setAccountName] = useState(\"\");\n const [accountKey, setAccountKey] = useState(\"\");\n\n // Validations\n const [isFormValid, setIsFormValid] = useState(true);\n\n const type = get(tierData, \"type\", \"\");\n const name = get(tierData, `${type}.name`, \"\");\n\n useEffect(() => {\n let valid = true;\n\n if (type === \"s3\" || type === \"azure\" || type === \"minio\") {\n if (accountName === \"\" || accountKey === \"\") {\n valid = false;\n }\n } else if (type === \"gcs\") {\n if (encodedCreds === \"\") {\n valid = false;\n }\n }\n setIsFormValid(valid);\n }, [accountKey, accountName, encodedCreds, type]);\n\n const addRecord = () => {\n let rules = {};\n\n if (type === \"s3\" || type === \"azure\" || type === \"minio\") {\n rules = {\n access_key: accountName,\n secret_key: accountKey,\n };\n } else if (type === \"gcs\") {\n rules = {\n creds: encodedCreds,\n };\n }\n if (name !== \"\") {\n api.admin\n .editTierCredentials(\n type as \"azure\" | \"s3\" | \"minio\" | \"gcs\",\n name,\n rules,\n )\n .then(() => {\n setSavingTiers(false);\n closeModalAndRefresh(true);\n })\n .catch((err) => {\n setSavingTiers(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n } else {\n setModalErrorSnackMessage({\n errorMessage: \"There was an error retrieving tier information\",\n detailedError: \"\",\n });\n }\n };\n\n return (\n }\n onClose={() => {\n closeModalAndRefresh(false);\n }}\n title={`Update Credentials - ${type} / ${name}`}\n >\n ) => {\n e.preventDefault();\n setSavingTiers(true);\n addRecord();\n }}\n >\n \n {(type === \"s3\" || type === \"minio\") && (\n \n ) => {\n setAccountName(e.target.value);\n }}\n />\n ) => {\n setAccountKey(e.target.value);\n }}\n />\n \n )}\n {type === \"gcs\" && (\n \n {\n setEncodedCreds(encodedValue);\n setCreds(fileName);\n }}\n value={creds}\n />\n \n )}\n {type === \"azure\" && (\n \n ) => {\n setAccountName(e.target.value);\n }}\n />\n ) => {\n setAccountKey(e.target.value);\n }}\n />\n \n )}\n \n {savingTiers && (\n \n \n \n )}\n \n \n \n \n \n );\n};\n\nexport default UpdateTierCredentialsModal;\n","\"use strict\";\n\"use client\";\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\"use client\";\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'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1;\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["withStyles","theme","_theme$palette","createStyles","errorBlock","color","palette","error","main","_ref","classes","errorMessage","_ref$withBreak","withBreak","_jsxs","React","children","_jsx","Typography","component","variant","className","_objectSpread","fieldBasic","tooltipHelper","valueString","maxWidth","whiteSpace","overflow","textOverflow","marginTop","fileInputField","margin","flexFlow","fileInputStyles","inputLabel","fontWeight","textBoxContainer","border","paddingLeft","label","onChange","id","name","_ref$disabled","disabled","_ref$tooltip","tooltip","required","_ref$error","_ref$accept","accept","_ref$value","value","_useState","useState","_useState2","_slicedToArray","showFileSelector","setShowSelector","Grid","item","xs","concat","fieldBottom","fieldContainer","errorInField","InputLabel","htmlFor","fieldLabelError","tooltipContainer","Tooltip","placement","HelpIcon","type","e","fileName","get","evt","callback","file","target","files","reader","FileReader","readAsDataURL","onload","fileBase64","result","fileArray","toString","split","length","fileProcess","data","IconButton","onClick","size","CancelIcon","ErrorBlock","fileReselect","AttachFileIcon","open","closeModalAndRefresh","tierData","dispatch","useAppDispatch","savingTiers","setSavingTiers","_useState3","_useState4","creds","setCreds","_useState5","_useState6","encodedCreds","setEncodedCreds","_useState7","_useState8","accountName","setAccountName","_useState9","_useState10","accountKey","setAccountKey","_useState11","_useState12","isFormValid","setIsFormValid","useEffect","valid","ModalWrapper","modalOpen","titleIcon","LockIcon","onClose","title","noValidate","autoComplete","onSubmit","preventDefault","rules","access_key","secret_key","api","admin","editTierCredentials","then","catch","err","setModalErrorSnackMessage","errorToHandler","detailedError","addRecord","FormLayout","withBorders","containerPadding","Fragment","InputBox","placeholder","FileSelector","encodedValue","ProgressBar","sx","modalStyleUtils","modalButtonBar","Button","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Object","defineProperty","enumerable","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","props","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","element","muiNames","indexOf","muiName","_len","arguments","funcs","Array","_key","reduce","acc","func","_len2","args","_key2","apply","this","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/4549.a4409fb4.chunk.js b/portal-ui/build/static/js/4549.3d93db81.chunk.js similarity index 74% rename from portal-ui/build/static/js/4549.a4409fb4.chunk.js rename to portal-ui/build/static/js/4549.3d93db81.chunk.js index 60ae7ce42e..b030646858 100644 --- a/portal-ui/build/static/js/4549.a4409fb4.chunk.js +++ b/portal-ui/build/static/js/4549.3d93db81.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[4549],{68096:function(r,e,o){o.d(e,{Z:function(){return y}});var n=o(29439),t=o(63366),i=o(87462),a=o(72791),l=o(63733),d=o(94419),u=o(31402),c=o(66934),s=o(35470),f=o(14036),m=o(19103),v=o(93840),p=o(75878),Z=o(21217);function h(r){return(0,Z.Z)("MuiFormControl",r)}(0,p.Z)("MuiFormControl",["root","marginNone","marginNormal","marginDense","fullWidth","disabled"]);var b=o(80184),g=["children","className","color","component","disabled","error","focused","fullWidth","hiddenLabel","margin","required","size","variant"],S=(0,c.ZP)("div",{name:"MuiFormControl",slot:"Root",overridesResolver:function(r,e){var o=r.ownerState;return(0,i.Z)({},e.root,e["margin".concat((0,f.Z)(o.margin))],o.fullWidth&&e.fullWidth)}})((function(r){var e=r.ownerState;return(0,i.Z)({display:"inline-flex",flexDirection:"column",position:"relative",minWidth:0,padding:0,margin:0,border:0,verticalAlign:"top"},"normal"===e.margin&&{marginTop:16,marginBottom:8},"dense"===e.margin&&{marginTop:8,marginBottom:4},e.fullWidth&&{width:"100%"})})),y=a.forwardRef((function(r,e){var o=(0,u.Z)({props:r,name:"MuiFormControl"}),c=o.children,p=o.className,Z=o.color,y=void 0===Z?"primary":Z,F=o.component,q=void 0===F?"div":F,w=o.disabled,C=void 0!==w&&w,M=o.error,x=void 0!==M&&M,W=o.focused,k=o.fullWidth,N=void 0!==k&&k,L=o.hiddenLabel,R=void 0!==L&&L,A=o.margin,B=void 0===A?"none":A,E=o.required,P=void 0!==E&&E,j=o.size,z=void 0===j?"medium":j,V=o.variant,D=void 0===V?"outlined":V,I=(0,t.Z)(o,g),T=(0,i.Z)({},o,{color:y,component:q,disabled:C,error:x,fullWidth:N,hiddenLabel:R,margin:B,required:P,size:z,variant:D}),_=function(r){var e=r.classes,o=r.margin,n=r.fullWidth,t={root:["root","none"!==o&&"margin".concat((0,f.Z)(o)),n&&"fullWidth"]};return(0,d.Z)(t,h,e)}(T),H=a.useState((function(){var r=!1;return c&&a.Children.forEach(c,(function(e){if((0,m.Z)(e,["Input","Select"])){var o=(0,m.Z)(e,["Select"])?e.props.input:e;o&&(0,s.B7)(o.props)&&(r=!0)}})),r})),O=(0,n.Z)(H,2),G=O[0],J=O[1],K=a.useState((function(){var r=!1;return c&&a.Children.forEach(c,(function(e){(0,m.Z)(e,["Input","Select"])&&((0,s.vd)(e.props,!0)||(0,s.vd)(e.props.inputProps,!0))&&(r=!0)})),r})),Q=(0,n.Z)(K,2),U=Q[0],X=Q[1],Y=a.useState(!1),$=(0,n.Z)(Y,2),rr=$[0],er=$[1];C&&rr&&er(!1);var or,nr=void 0===W||C?rr:W,tr=a.useMemo((function(){return{adornedStart:G,setAdornedStart:J,color:y,disabled:C,error:x,filled:U,focused:nr,fullWidth:N,hiddenLabel:R,size:z,onBlur:function(){er(!1)},onEmpty:function(){X(!1)},onFilled:function(){X(!0)},onFocus:function(){er(!0)},registerEffect:or,required:P,variant:D}}),[G,y,C,x,U,nr,N,R,or,P,z,D]);return(0,b.jsx)(v.Z.Provider,{value:tr,children:(0,b.jsx)(S,(0,i.Z)({as:q,ownerState:T,className:(0,l.Z)(_.root,p),ref:e},I,{children:c}))})}))},93840:function(r,e,o){var n=o(72791).createContext(void 0);e.Z=n},76147:function(r,e,o){function n(r){var e=r.props,o=r.states,n=r.muiFormControl;return o.reduce((function(r,o){return r[o]=e[o],n&&"undefined"===typeof e[o]&&(r[o]=n[o]),r}),{})}o.d(e,{Z:function(){return n}})},52930:function(r,e,o){o.d(e,{Z:function(){return i}});var n=o(72791),t=o(93840);function i(){return n.useContext(t.Z)}},17133:function(r,e,o){var n=o(4942),t=o(63366),i=o(87462),a=o(72791),l=o(63733),d=o(94419),u=o(76147),c=o(52930),s=o(14036),f=o(31402),m=o(66934),v=o(10843),p=o(80184),Z=["children","className","color","component","disabled","error","filled","focused","required"],h=(0,m.ZP)("label",{name:"MuiFormLabel",slot:"Root",overridesResolver:function(r,e){var o=r.ownerState;return(0,i.Z)({},e.root,"secondary"===o.color&&e.colorSecondary,o.filled&&e.filled)}})((function(r){var e,o=r.theme,t=r.ownerState;return(0,i.Z)({color:(o.vars||o).palette.text.secondary},o.typography.body1,(e={lineHeight:"1.4375em",padding:0,position:"relative"},(0,n.Z)(e,"&.".concat(v.Z.focused),{color:(o.vars||o).palette[t.color].main}),(0,n.Z)(e,"&.".concat(v.Z.disabled),{color:(o.vars||o).palette.text.disabled}),(0,n.Z)(e,"&.".concat(v.Z.error),{color:(o.vars||o).palette.error.main}),e))})),b=(0,m.ZP)("span",{name:"MuiFormLabel",slot:"Asterisk",overridesResolver:function(r,e){return e.asterisk}})((function(r){var e=r.theme;return(0,n.Z)({},"&.".concat(v.Z.error),{color:(e.vars||e).palette.error.main})})),g=a.forwardRef((function(r,e){var o=(0,f.Z)({props:r,name:"MuiFormLabel"}),n=o.children,a=o.className,m=o.component,g=void 0===m?"label":m,S=(0,t.Z)(o,Z),y=(0,c.Z)(),F=(0,u.Z)({props:o,muiFormControl:y,states:["color","required","focused","disabled","error","filled"]}),q=(0,i.Z)({},o,{color:F.color||"primary",component:g,disabled:F.disabled,error:F.error,filled:F.filled,focused:F.focused,required:F.required}),w=function(r){var e=r.classes,o=r.color,n=r.focused,t=r.disabled,i=r.error,a=r.filled,l=r.required,u={root:["root","color".concat((0,s.Z)(o)),t&&"disabled",i&&"error",a&&"filled",n&&"focused",l&&"required"],asterisk:["asterisk",i&&"error"]};return(0,d.Z)(u,v.M,e)}(q);return(0,p.jsxs)(h,(0,i.Z)({as:g,ownerState:q,className:(0,l.Z)(w.root,a),ref:e},S,{children:[n,F.required&&(0,p.jsxs)(b,{ownerState:q,"aria-hidden":!0,className:w.asterisk,children:["\u2009","*"]})]}))}));e.Z=g},10843:function(r,e,o){o.d(e,{M:function(){return i}});var n=o(75878),t=o(21217);function i(r){return(0,t.Z)("MuiFormLabel",r)}var a=(0,n.Z)("MuiFormLabel",["root","colorSecondary","focused","disabled","error","filled","required","asterisk"]);e.Z=a},35470:function(r,e,o){function n(r){return null!=r&&!(Array.isArray(r)&&0===r.length)}function t(r){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return r&&(n(r.value)&&""!==r.value||e&&n(r.defaultValue)&&""!==r.defaultValue)}function i(r){return r.startAdornment}o.d(e,{B7:function(){return i},vd:function(){return t}})},19103:function(r,e,o){o.d(e,{Z:function(){return t}});var n=o(72791);var t=function(r,e){return n.isValidElement(r)&&-1!==e.indexOf(r.type.muiName)}}}]); -//# sourceMappingURL=4549.a4409fb4.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[4549],{68096:function(r,e,o){o.d(e,{Z:function(){return S}});var n=o(29439),t=o(63366),i=o(87462),a=o(72791),l=o(63733),d=o(94419),u=o(31402),c=o(66934),s=o(35470),f=o(14036),m=o(19103),v=o(93840),p=o(75878),Z=o(21217);function h(r){return(0,Z.Z)("MuiFormControl",r)}(0,p.Z)("MuiFormControl",["root","marginNone","marginNormal","marginDense","fullWidth","disabled"]);var b=o(80184),g=["children","className","color","component","disabled","error","focused","fullWidth","hiddenLabel","margin","required","size","variant"],y=(0,c.ZP)("div",{name:"MuiFormControl",slot:"Root",overridesResolver:function(r,e){var o=r.ownerState;return(0,i.Z)({},e.root,e["margin".concat((0,f.Z)(o.margin))],o.fullWidth&&e.fullWidth)}})((function(r){var e=r.ownerState;return(0,i.Z)({display:"inline-flex",flexDirection:"column",position:"relative",minWidth:0,padding:0,margin:0,border:0,verticalAlign:"top"},"normal"===e.margin&&{marginTop:16,marginBottom:8},"dense"===e.margin&&{marginTop:8,marginBottom:4},e.fullWidth&&{width:"100%"})})),S=a.forwardRef((function(r,e){var o=(0,u.Z)({props:r,name:"MuiFormControl"}),c=o.children,p=o.className,Z=o.color,S=void 0===Z?"primary":Z,F=o.component,q=void 0===F?"div":F,w=o.disabled,C=void 0!==w&&w,M=o.error,x=void 0!==M&&M,N=o.focused,W=o.fullWidth,k=void 0!==W&&W,L=o.hiddenLabel,R=void 0!==L&&L,A=o.margin,B=void 0===A?"none":A,E=o.required,P=void 0!==E&&E,j=o.size,z=void 0===j?"medium":j,V=o.variant,_=void 0===V?"outlined":V,D=(0,t.Z)(o,g),I=(0,i.Z)({},o,{color:S,component:q,disabled:C,error:x,fullWidth:k,hiddenLabel:R,margin:B,required:P,size:z,variant:_}),T=function(r){var e=r.classes,o=r.margin,n=r.fullWidth,t={root:["root","none"!==o&&"margin".concat((0,f.Z)(o)),n&&"fullWidth"]};return(0,d.Z)(t,h,e)}(I),H=a.useState((function(){var r=!1;return c&&a.Children.forEach(c,(function(e){if((0,m.Z)(e,["Input","Select"])){var o=(0,m.Z)(e,["Select"])?e.props.input:e;o&&(0,s.B7)(o.props)&&(r=!0)}})),r})),O=(0,n.Z)(H,2),G=O[0],J=O[1],K=a.useState((function(){var r=!1;return c&&a.Children.forEach(c,(function(e){(0,m.Z)(e,["Input","Select"])&&((0,s.vd)(e.props,!0)||(0,s.vd)(e.props.inputProps,!0))&&(r=!0)})),r})),Q=(0,n.Z)(K,2),U=Q[0],X=Q[1],Y=a.useState(!1),$=(0,n.Z)(Y,2),rr=$[0],er=$[1];C&&rr&&er(!1);var or,nr=void 0===N||C?rr:N,tr=a.useMemo((function(){return{adornedStart:G,setAdornedStart:J,color:S,disabled:C,error:x,filled:U,focused:nr,fullWidth:k,hiddenLabel:R,size:z,onBlur:function(){er(!1)},onEmpty:function(){X(!1)},onFilled:function(){X(!0)},onFocus:function(){er(!0)},registerEffect:or,required:P,variant:_}}),[G,S,C,x,U,nr,k,R,or,P,z,_]);return(0,b.jsx)(v.Z.Provider,{value:tr,children:(0,b.jsx)(y,(0,i.Z)({as:q,ownerState:I,className:(0,l.Z)(T.root,p),ref:e},D,{children:c}))})}))},93840:function(r,e,o){var n=o(72791).createContext(void 0);e.Z=n},76147:function(r,e,o){function n(r){var e=r.props,o=r.states,n=r.muiFormControl;return o.reduce((function(r,o){return r[o]=e[o],n&&"undefined"===typeof e[o]&&(r[o]=n[o]),r}),{})}o.d(e,{Z:function(){return n}})},52930:function(r,e,o){o.d(e,{Z:function(){return i}});var n=o(72791),t=o(93840);function i(){return n.useContext(t.Z)}},17133:function(r,e,o){var n=o(4942),t=o(63366),i=o(87462),a=o(72791),l=o(63733),d=o(94419),u=o(76147),c=o(52930),s=o(14036),f=o(31402),m=o(66934),v=o(10843),p=o(80184),Z=["children","className","color","component","disabled","error","filled","focused","required"],h=(0,m.ZP)("label",{name:"MuiFormLabel",slot:"Root",overridesResolver:function(r,e){var o=r.ownerState;return(0,i.Z)({},e.root,"secondary"===o.color&&e.colorSecondary,o.filled&&e.filled)}})((function(r){var e,o=r.theme,t=r.ownerState;return(0,i.Z)({color:(o.vars||o).palette.text.secondary},o.typography.body1,(e={lineHeight:"1.4375em",padding:0,position:"relative"},(0,n.Z)(e,"&.".concat(v.Z.focused),{color:(o.vars||o).palette[t.color].main}),(0,n.Z)(e,"&.".concat(v.Z.disabled),{color:(o.vars||o).palette.text.disabled}),(0,n.Z)(e,"&.".concat(v.Z.error),{color:(o.vars||o).palette.error.main}),e))})),b=(0,m.ZP)("span",{name:"MuiFormLabel",slot:"Asterisk",overridesResolver:function(r,e){return e.asterisk}})((function(r){var e=r.theme;return(0,n.Z)({},"&.".concat(v.Z.error),{color:(e.vars||e).palette.error.main})})),g=a.forwardRef((function(r,e){var o=(0,f.Z)({props:r,name:"MuiFormLabel"}),n=o.children,a=o.className,m=o.component,g=void 0===m?"label":m,y=(0,t.Z)(o,Z),S=(0,c.Z)(),F=(0,u.Z)({props:o,muiFormControl:S,states:["color","required","focused","disabled","error","filled"]}),q=(0,i.Z)({},o,{color:F.color||"primary",component:g,disabled:F.disabled,error:F.error,filled:F.filled,focused:F.focused,required:F.required}),w=function(r){var e=r.classes,o=r.color,n=r.focused,t=r.disabled,i=r.error,a=r.filled,l=r.required,u={root:["root","color".concat((0,s.Z)(o)),t&&"disabled",i&&"error",a&&"filled",n&&"focused",l&&"required"],asterisk:["asterisk",i&&"error"]};return(0,d.Z)(u,v.M,e)}(q);return(0,p.jsxs)(h,(0,i.Z)({as:g,ownerState:q,className:(0,l.Z)(w.root,a),ref:e},y,{children:[n,F.required&&(0,p.jsxs)(b,{ownerState:q,"aria-hidden":!0,className:w.asterisk,children:["\u2009","*"]})]}))}));e.Z=g},10843:function(r,e,o){o.d(e,{M:function(){return i}});var n=o(75878),t=o(21217);function i(r){return(0,t.Z)("MuiFormLabel",r)}var a=(0,n.Z)("MuiFormLabel",["root","colorSecondary","focused","disabled","error","filled","required","asterisk"]);e.Z=a},35470:function(r,e,o){function n(r){return null!=r&&!(Array.isArray(r)&&0===r.length)}function t(r){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return r&&(n(r.value)&&""!==r.value||e&&n(r.defaultValue)&&""!==r.defaultValue)}function i(r){return r.startAdornment}o.d(e,{B7:function(){return i},vd:function(){return t}})},19103:function(r,e,o){o.d(e,{Z:function(){return t}});var n=o(72791);var t=function(r,e){var o,t;return n.isValidElement(r)&&-1!==e.indexOf(null!=(o=r.type.muiName)?o:null==(t=r.type)||null==(t=t._payload)||null==(t=t.value)?void 0:t.muiName)}}}]); +//# sourceMappingURL=4549.3d93db81.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/4549.3d93db81.chunk.js.map b/portal-ui/build/static/js/4549.3d93db81.chunk.js.map new file mode 100644 index 0000000000..dc9bf33f32 --- /dev/null +++ b/portal-ui/build/static/js/4549.3d93db81.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/4549.3d93db81.chunk.js","mappings":"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","sources":["../node_modules/@mui/material/FormControl/formControlClasses.js","../node_modules/@mui/material/FormControl/FormControl.js","../node_modules/@mui/material/FormControl/FormControlContext.js","../node_modules/@mui/material/FormControl/formControlState.js","../node_modules/@mui/material/FormControl/useFormControl.js","../node_modules/@mui/material/FormLabel/FormLabel.js","../node_modules/@mui/material/FormLabel/formLabelClasses.js","../node_modules/@mui/material/InputBase/utils.js","../node_modules/@mui/material/utils/isMuiElement.js","../node_modules/@mui/utils/esm/isMuiElement.js"],"sourcesContent":["import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getFormControlUtilityClasses(slot) {\n return generateUtilityClass('MuiFormControl', slot);\n}\nconst formControlClasses = generateUtilityClasses('MuiFormControl', ['root', 'marginNone', 'marginNormal', 'marginDense', 'fullWidth', 'disabled']);\nexport default formControlClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"error\", \"focused\", \"fullWidth\", \"hiddenLabel\", \"margin\", \"required\", \"size\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { isFilled, isAdornedStart } from '../InputBase/utils';\nimport capitalize from '../utils/capitalize';\nimport isMuiElement from '../utils/isMuiElement';\nimport FormControlContext from './FormControlContext';\nimport { getFormControlUtilityClasses } from './formControlClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n margin,\n fullWidth\n } = ownerState;\n const slots = {\n root: ['root', margin !== 'none' && `margin${capitalize(margin)}`, fullWidth && 'fullWidth']\n };\n return composeClasses(slots, getFormControlUtilityClasses, classes);\n};\nconst FormControlRoot = styled('div', {\n name: 'MuiFormControl',\n slot: 'Root',\n overridesResolver: ({\n ownerState\n }, styles) => {\n return _extends({}, styles.root, styles[`margin${capitalize(ownerState.margin)}`], ownerState.fullWidth && styles.fullWidth);\n }\n})(({\n ownerState\n}) => _extends({\n display: 'inline-flex',\n flexDirection: 'column',\n position: 'relative',\n // Reset fieldset default style.\n minWidth: 0,\n padding: 0,\n margin: 0,\n border: 0,\n verticalAlign: 'top'\n}, ownerState.margin === 'normal' && {\n marginTop: 16,\n marginBottom: 8\n}, ownerState.margin === 'dense' && {\n marginTop: 8,\n marginBottom: 4\n}, ownerState.fullWidth && {\n width: '100%'\n}));\n\n/**\n * Provides context such as filled/focused/error/required for form inputs.\n * Relying on the context provides high flexibility and ensures that the state always stays\n * consistent across the children of the `FormControl`.\n * This context is used by the following components:\n *\n * - FormLabel\n * - FormHelperText\n * - Input\n * - InputLabel\n *\n * You can find one composition example below and more going to [the demos](/material-ui/react-text-field/#components).\n *\n * ```jsx\n * \n * Email address\n * \n * We'll never share your email.\n * \n * ```\n *\n * ⚠️ Only one `InputBase` can be used within a FormControl because it creates visual inconsistencies.\n * For instance, only one input can be focused at the same time, the state shouldn't be shared.\n */\nconst FormControl = /*#__PURE__*/React.forwardRef(function FormControl(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFormControl'\n });\n const {\n children,\n className,\n color = 'primary',\n component = 'div',\n disabled = false,\n error = false,\n focused: visuallyFocused,\n fullWidth = false,\n hiddenLabel = false,\n margin = 'none',\n required = false,\n size = 'medium',\n variant = 'outlined'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n component,\n disabled,\n error,\n fullWidth,\n hiddenLabel,\n margin,\n required,\n size,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n const [adornedStart, setAdornedStart] = React.useState(() => {\n // We need to iterate through the children and find the Input in order\n // to fully support server-side rendering.\n let initialAdornedStart = false;\n if (children) {\n React.Children.forEach(children, child => {\n if (!isMuiElement(child, ['Input', 'Select'])) {\n return;\n }\n const input = isMuiElement(child, ['Select']) ? child.props.input : child;\n if (input && isAdornedStart(input.props)) {\n initialAdornedStart = true;\n }\n });\n }\n return initialAdornedStart;\n });\n const [filled, setFilled] = React.useState(() => {\n // We need to iterate through the children and find the Input in order\n // to fully support server-side rendering.\n let initialFilled = false;\n if (children) {\n React.Children.forEach(children, child => {\n if (!isMuiElement(child, ['Input', 'Select'])) {\n return;\n }\n if (isFilled(child.props, true) || isFilled(child.props.inputProps, true)) {\n initialFilled = true;\n }\n });\n }\n return initialFilled;\n });\n const [focusedState, setFocused] = React.useState(false);\n if (disabled && focusedState) {\n setFocused(false);\n }\n const focused = visuallyFocused !== undefined && !disabled ? visuallyFocused : focusedState;\n let registerEffect;\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const registeredInput = React.useRef(false);\n registerEffect = () => {\n if (registeredInput.current) {\n console.error(['MUI: There are multiple `InputBase` components inside a FormControl.', 'This creates visual inconsistencies, only use one `InputBase`.'].join('\\n'));\n }\n registeredInput.current = true;\n return () => {\n registeredInput.current = false;\n };\n };\n }\n const childContext = React.useMemo(() => {\n return {\n adornedStart,\n setAdornedStart,\n color,\n disabled,\n error,\n filled,\n focused,\n fullWidth,\n hiddenLabel,\n size,\n onBlur: () => {\n setFocused(false);\n },\n onEmpty: () => {\n setFilled(false);\n },\n onFilled: () => {\n setFilled(true);\n },\n onFocus: () => {\n setFocused(true);\n },\n registerEffect,\n required,\n variant\n };\n }, [adornedStart, color, disabled, error, filled, focused, fullWidth, hiddenLabel, registerEffect, required, size, variant]);\n return /*#__PURE__*/_jsx(FormControlContext.Provider, {\n value: childContext,\n children: /*#__PURE__*/_jsx(FormControlRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: children\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? FormControl.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n * @default 'primary'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the label, input and helper text should be displayed in a disabled state.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n * @default false\n */\n error: PropTypes.bool,\n /**\n * If `true`, the component is displayed in focused state.\n */\n focused: PropTypes.bool,\n /**\n * If `true`, the component will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * If `true`, the label is hidden.\n * This is used to increase density for a `FilledInput`.\n * Be sure to add `aria-label` to the `input` element.\n * @default false\n */\n hiddenLabel: PropTypes.bool,\n /**\n * If `dense` or `normal`, will adjust vertical spacing of this and contained components.\n * @default 'none'\n */\n margin: PropTypes.oneOf(['dense', 'none', 'normal']),\n /**\n * If `true`, the label will indicate that the `input` is required.\n * @default false\n */\n required: PropTypes.bool,\n /**\n * The size of the component.\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 variant to use.\n * @default 'outlined'\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default FormControl;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst FormControlContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n FormControlContext.displayName = 'FormControlContext';\n}\nexport default FormControlContext;","export default function formControlState({\n props,\n states,\n muiFormControl\n}) {\n return states.reduce((acc, state) => {\n acc[state] = props[state];\n if (muiFormControl) {\n if (typeof props[state] === 'undefined') {\n acc[state] = muiFormControl[state];\n }\n }\n return acc;\n }, {});\n}","'use client';\n\nimport * as React from 'react';\nimport FormControlContext from './FormControlContext';\nexport default function useFormControl() {\n return React.useContext(FormControlContext);\n}","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"error\", \"filled\", \"focused\", \"required\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport formLabelClasses, { getFormLabelUtilityClasses } from './formLabelClasses';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color,\n focused,\n disabled,\n error,\n filled,\n required\n } = ownerState;\n const slots = {\n root: ['root', `color${capitalize(color)}`, disabled && 'disabled', error && 'error', filled && 'filled', focused && 'focused', required && 'required'],\n asterisk: ['asterisk', error && 'error']\n };\n return composeClasses(slots, getFormLabelUtilityClasses, classes);\n};\nexport const FormLabelRoot = styled('label', {\n name: 'MuiFormLabel',\n slot: 'Root',\n overridesResolver: ({\n ownerState\n }, styles) => {\n return _extends({}, styles.root, ownerState.color === 'secondary' && styles.colorSecondary, ownerState.filled && styles.filled);\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n color: (theme.vars || theme).palette.text.secondary\n}, theme.typography.body1, {\n lineHeight: '1.4375em',\n padding: 0,\n position: 'relative',\n [`&.${formLabelClasses.focused}`]: {\n color: (theme.vars || theme).palette[ownerState.color].main\n },\n [`&.${formLabelClasses.disabled}`]: {\n color: (theme.vars || theme).palette.text.disabled\n },\n [`&.${formLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}));\nconst AsteriskComponent = styled('span', {\n name: 'MuiFormLabel',\n slot: 'Asterisk',\n overridesResolver: (props, styles) => styles.asterisk\n})(({\n theme\n}) => ({\n [`&.${formLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}));\nconst FormLabel = /*#__PURE__*/React.forwardRef(function FormLabel(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFormLabel'\n });\n const {\n children,\n className,\n component = 'label'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['color', 'required', 'focused', 'disabled', 'error', 'filled']\n });\n const ownerState = _extends({}, props, {\n color: fcs.color || 'primary',\n component,\n disabled: fcs.disabled,\n error: fcs.error,\n filled: fcs.filled,\n focused: fcs.focused,\n required: fcs.required\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(FormLabelRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: [children, fcs.required && /*#__PURE__*/_jsxs(AsteriskComponent, {\n ownerState: ownerState,\n \"aria-hidden\": true,\n className: classes.asterisk,\n children: [\"\\u2009\", '*']\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormLabel.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the label should be displayed in a disabled state.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the label should use filled classes key.\n */\n filled: PropTypes.bool,\n /**\n * If `true`, the input of this label is focused (used by `FormGroup` components).\n */\n focused: PropTypes.bool,\n /**\n * If `true`, the label will indicate that the `input` is required.\n */\n required: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default FormLabel;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getFormLabelUtilityClasses(slot) {\n return generateUtilityClass('MuiFormLabel', slot);\n}\nconst formLabelClasses = generateUtilityClasses('MuiFormLabel', ['root', 'colorSecondary', 'focused', 'disabled', 'error', 'filled', 'required', 'asterisk']);\nexport default formLabelClasses;","// Supports determination of isControlled().\n// Controlled input accepts its current value as a prop.\n//\n// @see https://facebook.github.io/react/docs/forms.html#controlled-components\n// @param value\n// @returns {boolean} true if string (including '') or number (including zero)\nexport function hasValue(value) {\n return value != null && !(Array.isArray(value) && value.length === 0);\n}\n\n// Determine if field is empty or filled.\n// Response determines if label is presented above field or as placeholder.\n//\n// @param obj\n// @param SSR\n// @returns {boolean} False when not present or empty string.\n// True when any number or string with length.\nexport function isFilled(obj, SSR = false) {\n return obj && (hasValue(obj.value) && obj.value !== '' || SSR && hasValue(obj.defaultValue) && obj.defaultValue !== '');\n}\n\n// Determine if an Input is adorned on start.\n// It's corresponding to the left with LTR.\n//\n// @param obj\n// @returns {boolean} False when no adornments.\n// True when adorned at the start.\nexport function isAdornedStart(obj) {\n return obj.startAdornment;\n}","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n var _muiName, _element$type;\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf( // For server components `muiName` is avaialble in element.type._payload.value.muiName\n // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45\n // eslint-disable-next-line no-underscore-dangle\n (_muiName = element.type.muiName) != null ? _muiName : (_element$type = element.type) == null || (_element$type = _element$type._payload) == null || (_element$type = _element$type.value) == null ? void 0 : _element$type.muiName) !== -1;\n}"],"names":["getFormControlUtilityClasses","slot","generateUtilityClass","generateUtilityClasses","_excluded","FormControlRoot","styled","name","overridesResolver","_ref","styles","ownerState","_extends","root","concat","capitalize","margin","fullWidth","_ref2","display","flexDirection","position","minWidth","padding","border","verticalAlign","marginTop","marginBottom","width","React","inProps","ref","props","useThemeProps","children","className","_props$color","color","_props$component","component","_props$disabled","disabled","_props$error","error","visuallyFocused","focused","_props$fullWidth","_props$hiddenLabel","hiddenLabel","_props$margin","_props$required","required","_props$size","size","_props$variant","variant","other","_objectWithoutPropertiesLoose","classes","slots","composeClasses","useUtilityClasses","_React$useState","initialAdornedStart","forEach","child","isMuiElement","input","isAdornedStart","_React$useState2","_slicedToArray","adornedStart","setAdornedStart","_React$useState3","initialFilled","isFilled","inputProps","_React$useState4","filled","setFilled","_React$useState5","_React$useState6","focusedState","setFocused","registerEffect","undefined","childContext","onBlur","onEmpty","onFilled","onFocus","_jsx","FormControlContext","Provider","value","as","clsx","formControlState","states","muiFormControl","reduce","acc","state","useFormControl","FormLabelRoot","colorSecondary","_extends2","theme","vars","palette","text","secondary","typography","body1","lineHeight","_defineProperty","formLabelClasses","main","AsteriskComponent","asterisk","_ref3","FormLabel","fcs","getFormLabelUtilityClasses","_jsxs","hasValue","Array","isArray","length","obj","SSR","arguments","defaultValue","startAdornment","element","muiNames","_muiName","_element$type","indexOf","type","muiName","_payload"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/4549.a4409fb4.chunk.js.map b/portal-ui/build/static/js/4549.a4409fb4.chunk.js.map deleted file mode 100644 index 33aeaa11c1..0000000000 --- a/portal-ui/build/static/js/4549.a4409fb4.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/4549.a4409fb4.chunk.js","mappings":"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","sources":["../node_modules/@mui/material/FormControl/formControlClasses.js","../node_modules/@mui/material/FormControl/FormControl.js","../node_modules/@mui/material/FormControl/FormControlContext.js","../node_modules/@mui/material/FormControl/formControlState.js","../node_modules/@mui/material/FormControl/useFormControl.js","../node_modules/@mui/material/FormLabel/FormLabel.js","../node_modules/@mui/material/FormLabel/formLabelClasses.js","../node_modules/@mui/material/InputBase/utils.js","../node_modules/@mui/material/utils/isMuiElement.js","../node_modules/@mui/utils/esm/isMuiElement.js"],"sourcesContent":["import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getFormControlUtilityClasses(slot) {\n return generateUtilityClass('MuiFormControl', slot);\n}\nconst formControlClasses = generateUtilityClasses('MuiFormControl', ['root', 'marginNone', 'marginNormal', 'marginDense', 'fullWidth', 'disabled']);\nexport default formControlClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"error\", \"focused\", \"fullWidth\", \"hiddenLabel\", \"margin\", \"required\", \"size\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { isFilled, isAdornedStart } from '../InputBase/utils';\nimport capitalize from '../utils/capitalize';\nimport isMuiElement from '../utils/isMuiElement';\nimport FormControlContext from './FormControlContext';\nimport { getFormControlUtilityClasses } from './formControlClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n margin,\n fullWidth\n } = ownerState;\n const slots = {\n root: ['root', margin !== 'none' && `margin${capitalize(margin)}`, fullWidth && 'fullWidth']\n };\n return composeClasses(slots, getFormControlUtilityClasses, classes);\n};\nconst FormControlRoot = styled('div', {\n name: 'MuiFormControl',\n slot: 'Root',\n overridesResolver: ({\n ownerState\n }, styles) => {\n return _extends({}, styles.root, styles[`margin${capitalize(ownerState.margin)}`], ownerState.fullWidth && styles.fullWidth);\n }\n})(({\n ownerState\n}) => _extends({\n display: 'inline-flex',\n flexDirection: 'column',\n position: 'relative',\n // Reset fieldset default style.\n minWidth: 0,\n padding: 0,\n margin: 0,\n border: 0,\n verticalAlign: 'top'\n}, ownerState.margin === 'normal' && {\n marginTop: 16,\n marginBottom: 8\n}, ownerState.margin === 'dense' && {\n marginTop: 8,\n marginBottom: 4\n}, ownerState.fullWidth && {\n width: '100%'\n}));\n\n/**\n * Provides context such as filled/focused/error/required for form inputs.\n * Relying on the context provides high flexibility and ensures that the state always stays\n * consistent across the children of the `FormControl`.\n * This context is used by the following components:\n *\n * - FormLabel\n * - FormHelperText\n * - Input\n * - InputLabel\n *\n * You can find one composition example below and more going to [the demos](/material-ui/react-text-field/#components).\n *\n * ```jsx\n * \n * Email address\n * \n * We'll never share your email.\n * \n * ```\n *\n * ⚠️ Only one `InputBase` can be used within a FormControl because it creates visual inconsistencies.\n * For instance, only one input can be focused at the same time, the state shouldn't be shared.\n */\nconst FormControl = /*#__PURE__*/React.forwardRef(function FormControl(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFormControl'\n });\n const {\n children,\n className,\n color = 'primary',\n component = 'div',\n disabled = false,\n error = false,\n focused: visuallyFocused,\n fullWidth = false,\n hiddenLabel = false,\n margin = 'none',\n required = false,\n size = 'medium',\n variant = 'outlined'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n component,\n disabled,\n error,\n fullWidth,\n hiddenLabel,\n margin,\n required,\n size,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n const [adornedStart, setAdornedStart] = React.useState(() => {\n // We need to iterate through the children and find the Input in order\n // to fully support server-side rendering.\n let initialAdornedStart = false;\n if (children) {\n React.Children.forEach(children, child => {\n if (!isMuiElement(child, ['Input', 'Select'])) {\n return;\n }\n const input = isMuiElement(child, ['Select']) ? child.props.input : child;\n if (input && isAdornedStart(input.props)) {\n initialAdornedStart = true;\n }\n });\n }\n return initialAdornedStart;\n });\n const [filled, setFilled] = React.useState(() => {\n // We need to iterate through the children and find the Input in order\n // to fully support server-side rendering.\n let initialFilled = false;\n if (children) {\n React.Children.forEach(children, child => {\n if (!isMuiElement(child, ['Input', 'Select'])) {\n return;\n }\n if (isFilled(child.props, true) || isFilled(child.props.inputProps, true)) {\n initialFilled = true;\n }\n });\n }\n return initialFilled;\n });\n const [focusedState, setFocused] = React.useState(false);\n if (disabled && focusedState) {\n setFocused(false);\n }\n const focused = visuallyFocused !== undefined && !disabled ? visuallyFocused : focusedState;\n let registerEffect;\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const registeredInput = React.useRef(false);\n registerEffect = () => {\n if (registeredInput.current) {\n console.error(['MUI: There are multiple `InputBase` components inside a FormControl.', 'This creates visual inconsistencies, only use one `InputBase`.'].join('\\n'));\n }\n registeredInput.current = true;\n return () => {\n registeredInput.current = false;\n };\n };\n }\n const childContext = React.useMemo(() => {\n return {\n adornedStart,\n setAdornedStart,\n color,\n disabled,\n error,\n filled,\n focused,\n fullWidth,\n hiddenLabel,\n size,\n onBlur: () => {\n setFocused(false);\n },\n onEmpty: () => {\n setFilled(false);\n },\n onFilled: () => {\n setFilled(true);\n },\n onFocus: () => {\n setFocused(true);\n },\n registerEffect,\n required,\n variant\n };\n }, [adornedStart, color, disabled, error, filled, focused, fullWidth, hiddenLabel, registerEffect, required, size, variant]);\n return /*#__PURE__*/_jsx(FormControlContext.Provider, {\n value: childContext,\n children: /*#__PURE__*/_jsx(FormControlRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: children\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? FormControl.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n * @default 'primary'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the label, input and helper text should be displayed in a disabled state.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n * @default false\n */\n error: PropTypes.bool,\n /**\n * If `true`, the component is displayed in focused state.\n */\n focused: PropTypes.bool,\n /**\n * If `true`, the component will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * If `true`, the label is hidden.\n * This is used to increase density for a `FilledInput`.\n * Be sure to add `aria-label` to the `input` element.\n * @default false\n */\n hiddenLabel: PropTypes.bool,\n /**\n * If `dense` or `normal`, will adjust vertical spacing of this and contained components.\n * @default 'none'\n */\n margin: PropTypes.oneOf(['dense', 'none', 'normal']),\n /**\n * If `true`, the label will indicate that the `input` is required.\n * @default false\n */\n required: PropTypes.bool,\n /**\n * The size of the component.\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 variant to use.\n * @default 'outlined'\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default FormControl;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst FormControlContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n FormControlContext.displayName = 'FormControlContext';\n}\nexport default FormControlContext;","export default function formControlState({\n props,\n states,\n muiFormControl\n}) {\n return states.reduce((acc, state) => {\n acc[state] = props[state];\n if (muiFormControl) {\n if (typeof props[state] === 'undefined') {\n acc[state] = muiFormControl[state];\n }\n }\n return acc;\n }, {});\n}","'use client';\n\nimport * as React from 'react';\nimport FormControlContext from './FormControlContext';\nexport default function useFormControl() {\n return React.useContext(FormControlContext);\n}","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"error\", \"filled\", \"focused\", \"required\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport formLabelClasses, { getFormLabelUtilityClasses } from './formLabelClasses';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color,\n focused,\n disabled,\n error,\n filled,\n required\n } = ownerState;\n const slots = {\n root: ['root', `color${capitalize(color)}`, disabled && 'disabled', error && 'error', filled && 'filled', focused && 'focused', required && 'required'],\n asterisk: ['asterisk', error && 'error']\n };\n return composeClasses(slots, getFormLabelUtilityClasses, classes);\n};\nexport const FormLabelRoot = styled('label', {\n name: 'MuiFormLabel',\n slot: 'Root',\n overridesResolver: ({\n ownerState\n }, styles) => {\n return _extends({}, styles.root, ownerState.color === 'secondary' && styles.colorSecondary, ownerState.filled && styles.filled);\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n color: (theme.vars || theme).palette.text.secondary\n}, theme.typography.body1, {\n lineHeight: '1.4375em',\n padding: 0,\n position: 'relative',\n [`&.${formLabelClasses.focused}`]: {\n color: (theme.vars || theme).palette[ownerState.color].main\n },\n [`&.${formLabelClasses.disabled}`]: {\n color: (theme.vars || theme).palette.text.disabled\n },\n [`&.${formLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}));\nconst AsteriskComponent = styled('span', {\n name: 'MuiFormLabel',\n slot: 'Asterisk',\n overridesResolver: (props, styles) => styles.asterisk\n})(({\n theme\n}) => ({\n [`&.${formLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}));\nconst FormLabel = /*#__PURE__*/React.forwardRef(function FormLabel(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFormLabel'\n });\n const {\n children,\n className,\n component = 'label'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['color', 'required', 'focused', 'disabled', 'error', 'filled']\n });\n const ownerState = _extends({}, props, {\n color: fcs.color || 'primary',\n component,\n disabled: fcs.disabled,\n error: fcs.error,\n filled: fcs.filled,\n focused: fcs.focused,\n required: fcs.required\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(FormLabelRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: [children, fcs.required && /*#__PURE__*/_jsxs(AsteriskComponent, {\n ownerState: ownerState,\n \"aria-hidden\": true,\n className: classes.asterisk,\n children: [\"\\u2009\", '*']\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormLabel.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the label should be displayed in a disabled state.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the label should use filled classes key.\n */\n filled: PropTypes.bool,\n /**\n * If `true`, the input of this label is focused (used by `FormGroup` components).\n */\n focused: PropTypes.bool,\n /**\n * If `true`, the label will indicate that the `input` is required.\n */\n required: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default FormLabel;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getFormLabelUtilityClasses(slot) {\n return generateUtilityClass('MuiFormLabel', slot);\n}\nconst formLabelClasses = generateUtilityClasses('MuiFormLabel', ['root', 'colorSecondary', 'focused', 'disabled', 'error', 'filled', 'required', 'asterisk']);\nexport default formLabelClasses;","// Supports determination of isControlled().\n// Controlled input accepts its current value as a prop.\n//\n// @see https://facebook.github.io/react/docs/forms.html#controlled-components\n// @param value\n// @returns {boolean} true if string (including '') or number (including zero)\nexport function hasValue(value) {\n return value != null && !(Array.isArray(value) && value.length === 0);\n}\n\n// Determine if field is empty or filled.\n// Response determines if label is presented above field or as placeholder.\n//\n// @param obj\n// @param SSR\n// @returns {boolean} False when not present or empty string.\n// True when any number or string with length.\nexport function isFilled(obj, SSR = false) {\n return obj && (hasValue(obj.value) && obj.value !== '' || SSR && hasValue(obj.defaultValue) && obj.defaultValue !== '');\n}\n\n// Determine if an Input is adorned on start.\n// It's corresponding to the left with LTR.\n//\n// @param obj\n// @returns {boolean} False when no adornments.\n// True when adorned at the start.\nexport function isAdornedStart(obj) {\n return obj.startAdornment;\n}","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1;\n}"],"names":["getFormControlUtilityClasses","slot","generateUtilityClass","generateUtilityClasses","_excluded","FormControlRoot","styled","name","overridesResolver","_ref","styles","ownerState","_extends","root","concat","capitalize","margin","fullWidth","_ref2","display","flexDirection","position","minWidth","padding","border","verticalAlign","marginTop","marginBottom","width","React","inProps","ref","props","useThemeProps","children","className","_props$color","color","_props$component","component","_props$disabled","disabled","_props$error","error","visuallyFocused","focused","_props$fullWidth","_props$hiddenLabel","hiddenLabel","_props$margin","_props$required","required","_props$size","size","_props$variant","variant","other","_objectWithoutPropertiesLoose","classes","slots","composeClasses","useUtilityClasses","_React$useState","initialAdornedStart","forEach","child","isMuiElement","input","isAdornedStart","_React$useState2","_slicedToArray","adornedStart","setAdornedStart","_React$useState3","initialFilled","isFilled","inputProps","_React$useState4","filled","setFilled","_React$useState5","_React$useState6","focusedState","setFocused","registerEffect","undefined","childContext","onBlur","onEmpty","onFilled","onFocus","_jsx","FormControlContext","Provider","value","as","clsx","formControlState","states","muiFormControl","reduce","acc","state","useFormControl","FormLabelRoot","colorSecondary","_extends2","theme","vars","palette","text","secondary","typography","body1","lineHeight","_defineProperty","formLabelClasses","main","AsteriskComponent","asterisk","_ref3","FormLabel","fcs","getFormLabelUtilityClasses","_jsxs","hasValue","Array","isArray","length","obj","SSR","arguments","defaultValue","startAdornment","element","muiNames","indexOf","type","muiName"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/455.3198900d.chunk.js b/portal-ui/build/static/js/455.3198900d.chunk.js deleted file mode 100644 index af3d8c9948..0000000000 --- a/portal-ui/build/static/js/455.3198900d.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[455],{80455:function(e,n,t){t.r(n);var r=t(29439),u=t(72791),i=t(26181),o=t.n(i),c=t(9505),s=t(23508),f=t(29945),l=t(87995),a=t(81551),v=t(80184);n.default=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,i=e.selectedBucket,p=e.bucketEvent,d=(0,a.TL)(),x=(0,c.Z)((function(){return n(!0)}),(function(e){return d((0,l.Ih)(e))})),h=(0,r.Z)(x,2),k=h[0],C=h[1];if(!i)return null;return(0,v.jsx)(s.Z,{title:"Delete Event",confirmText:"Delete",isOpen:t,titleIcon:(0,v.jsx)(f.NvT,{}),isLoading:k,onConfirm:function(){if(null!==p){var e=o()(p,"events",[]),n=o()(p,"prefix",""),t=o()(p,"suffix","");C("DELETE","/api/v1/buckets/".concat(i,"/events/").concat(p.arn),{events:e,prefix:n,suffix:t})}},onClose:function(){return n(!1)},confirmationContent:(0,v.jsx)(u.Fragment,{children:"Are you sure you want to delete this event?"})})}}}]); -//# sourceMappingURL=455.3198900d.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/455.3a91ee14.chunk.js b/portal-ui/build/static/js/455.3a91ee14.chunk.js new file mode 100644 index 0000000000..70b0510145 --- /dev/null +++ b/portal-ui/build/static/js/455.3a91ee14.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[455],{80455:function(e,n,t){t.r(n);var u=t(93433),r=t(29439),i=t(72791),c=t(26181),o=t.n(c),s=t(9505),f=t(23508),l=t(29945),a=t(87995),v=t(44690),d=t(80184);n.default=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,c=e.selectedBucket,p=e.bucketEvent,x=(0,v.TL)(),h=(0,s.Z)((function(){return n(!0)}),(function(e){return x((0,a.Ih)(e))})),k=(0,r.Z)(h,2),C=k[0],E=k[1];if(!c)return null;return(0,d.jsx)(f.Z,{title:"Delete Event",confirmText:"Delete",isOpen:t,titleIcon:(0,d.jsx)(l.NvT,{}),isLoading:C,onConfirm:function(){if(null!==p){var e=o()(p,"events",[]),n=o()(p,"prefix",""),t=o()(p,"suffix",""),r=e.reduce((function(e,n){return e.includes(n)?e:[].concat((0,u.Z)(e),[n])}),[]);E("DELETE","/api/v1/buckets/".concat(c,"/events/").concat(p.arn),{events:r,prefix:n,suffix:t})}},onClose:function(){return n(!1)},confirmationContent:(0,d.jsx)(i.Fragment,{children:"Are you sure you want to delete this event?"})})}}}]); +//# sourceMappingURL=455.3a91ee14.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/455.3198900d.chunk.js.map b/portal-ui/build/static/js/455.3a91ee14.chunk.js.map similarity index 52% rename from portal-ui/build/static/js/455.3198900d.chunk.js.map rename to portal-ui/build/static/js/455.3a91ee14.chunk.js.map index 9bd9834e08..a6c214c93d 100644 --- a/portal-ui/build/static/js/455.3198900d.chunk.js.map +++ b/portal-ui/build/static/js/455.3a91ee14.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/455.3198900d.chunk.js","mappings":"kOAuFA,UAtDoB,SAAHA,GAKS,IAJxBC,EAA0BD,EAA1BC,2BACAC,EAAUF,EAAVE,WACAC,EAAcH,EAAdG,eACAC,EAAWJ,EAAXI,YAEMC,GAAWC,EAAAA,EAAAA,MAMjBC,GAAyCC,EAAAA,EAAAA,IALpB,WAAH,OAASP,GAA2B,EAAM,IACzC,SAACQ,GAAyB,OAC3CJ,GAASK,EAAAA,EAAAA,IAAqBD,GAAM,IAGmCE,GAAAC,EAAAA,EAAAA,GAAAL,EAAA,GAAlEM,EAAaF,EAAA,GAAEG,EAAeH,EAAA,GAErC,IAAKR,EACH,OAAO,KAuBT,OACEY,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CACZC,MAAK,eACLC,YAAa,SACbC,OAAQjB,EACRkB,WAAWL,EAAAA,EAAAA,KAACM,EAAAA,IAAiB,IAC7BC,UAAWT,EACXU,UA3BoB,WACtB,GAAoB,OAAhBnB,EAAJ,CAIA,IAAMoB,EAASC,IAAIrB,EAAa,SAAU,IACpCsB,EAASD,IAAIrB,EAAa,SAAU,IACpCuB,EAASF,IAAIrB,EAAa,SAAU,IAE1CU,EACE,SAAS,mBAADc,OACWzB,EAAc,YAAAyB,OAAWxB,EAAYyB,KACxD,CACEL,OAAAA,EACAE,OAAAA,EACAC,OAAAA,GAZJ,CAeF,EAUIG,QApCY,WAAH,OAAS7B,GAA2B,EAAO,EAqCpD8B,qBACEhB,EAAAA,EAAAA,KAACiB,EAAAA,SAAQ,CAAAC,SAAC,iDAIlB,C","sources":["screens/Console/Buckets/BucketDetails/DeleteEvent.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport get from \"lodash/get\";\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\";\nimport { NotificationConfig } from \"api/consoleApi\";\n\ninterface IDeleteEventProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedBucket: string;\n bucketEvent: NotificationConfig | null;\n}\n\nconst DeleteEvent = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n bucketEvent,\n}: IDeleteEventProps) => {\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\n if (!selectedBucket) {\n return null;\n }\n\n const onConfirmDelete = () => {\n if (bucketEvent === null) {\n return;\n }\n\n const events = get(bucketEvent, \"events\", []);\n const prefix = get(bucketEvent, \"prefix\", \"\");\n const suffix = get(bucketEvent, \"suffix\", \"\");\n\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/buckets/${selectedBucket}/events/${bucketEvent.arn}`,\n {\n events,\n prefix,\n suffix,\n },\n );\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n Are you sure you want to delete this event?\n }\n />\n );\n};\n\nexport default DeleteEvent;\n"],"names":["_ref","closeDeleteModalAndRefresh","deleteOpen","selectedBucket","bucketEvent","dispatch","useAppDispatch","_useApi","useApi","err","setErrorSnackMessage","_useApi2","_slicedToArray","deleteLoading","invokeDeleteApi","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","events","get","prefix","suffix","concat","arn","onClose","confirmationContent","Fragment","children"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/455.3a91ee14.chunk.js","mappings":"6OA8FA,UA7DoB,SAAHA,GAKS,IAJxBC,EAA0BD,EAA1BC,2BACAC,EAAUF,EAAVE,WACAC,EAAcH,EAAdG,eACAC,EAAWJ,EAAXI,YAEMC,GAAWC,EAAAA,EAAAA,MAMjBC,GAAyCC,EAAAA,EAAAA,IALpB,WAAH,OAASP,GAA2B,EAAM,IACzC,SAACQ,GAAyB,OAC3CJ,GAASK,EAAAA,EAAAA,IAAqBD,GAAM,IAGmCE,GAAAC,EAAAA,EAAAA,GAAAL,EAAA,GAAlEM,EAAaF,EAAA,GAAEG,EAAeH,EAAA,GAErC,IAAKR,EACH,OAAO,KA8BT,OACEY,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CACZC,MAAK,eACLC,YAAa,SACbC,OAAQjB,EACRkB,WAAWL,EAAAA,EAAAA,KAACM,EAAAA,IAAiB,IAC7BC,UAAWT,EACXU,UAlCoB,WACtB,GAAoB,OAAhBnB,EAAJ,CAIA,IAAMoB,EAAmBC,IAAIrB,EAAa,SAAU,IAC9CsB,EAASD,IAAIrB,EAAa,SAAU,IACpCuB,EAASF,IAAIrB,EAAa,SAAU,IAEpCwB,EAAcJ,EAAOK,QAAO,SAACC,EAAeC,GAChD,OAAKD,EAAIE,SAASD,GAGXD,EAFC,GAANG,QAAAC,EAAAA,EAAAA,GAAWJ,GAAG,CAAEC,GAGpB,GAAG,IAEHjB,EACE,SAAS,mBAADmB,OACW9B,EAAc,YAAA8B,OAAW7B,EAAY+B,KACxD,CACEX,OAAQI,EACRF,OAAAA,EACAC,OAAAA,GAnBJ,CAsBF,EAUIS,QA3CY,WAAH,OAASnC,GAA2B,EAAO,EA4CpDoC,qBACEtB,EAAAA,EAAAA,KAACuB,EAAAA,SAAQ,CAAAC,SAAC,iDAIlB,C","sources":["screens/Console/Buckets/BucketDetails/DeleteEvent.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport get from \"lodash/get\";\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\";\nimport { NotificationConfig } from \"api/consoleApi\";\n\ninterface IDeleteEventProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedBucket: string;\n bucketEvent: NotificationConfig | null;\n}\n\nconst DeleteEvent = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n bucketEvent,\n}: IDeleteEventProps) => {\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\n if (!selectedBucket) {\n return null;\n }\n\n const onConfirmDelete = () => {\n if (bucketEvent === null) {\n return;\n }\n\n const events: string[] = get(bucketEvent, \"events\", []);\n const prefix = get(bucketEvent, \"prefix\", \"\");\n const suffix = get(bucketEvent, \"suffix\", \"\");\n\n const cleanEvents = events.reduce((acc: string[], currVal: string) => {\n if (!acc.includes(currVal)) {\n return [...acc, currVal];\n }\n return acc;\n }, []);\n\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/buckets/${selectedBucket}/events/${bucketEvent.arn}`,\n {\n events: cleanEvents,\n prefix,\n suffix,\n },\n );\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n Are you sure you want to delete this event?\n }\n />\n );\n};\n\nexport default DeleteEvent;\n"],"names":["_ref","closeDeleteModalAndRefresh","deleteOpen","selectedBucket","bucketEvent","dispatch","useAppDispatch","_useApi","useApi","err","setErrorSnackMessage","_useApi2","_slicedToArray","deleteLoading","invokeDeleteApi","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","events","get","prefix","suffix","cleanEvents","reduce","acc","currVal","includes","concat","_toConsumableArray","arn","onClose","confirmationContent","Fragment","children"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/4563.7028e97b.chunk.js b/portal-ui/build/static/js/4563.7028e97b.chunk.js deleted file mode 100644 index 955445feac..0000000000 --- a/portal-ui/build/static/js/4563.7028e97b.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[4563,3956],{23956:function(e,t,s){s.r(t);var n=s(29439),i=s(72791),r=s(9505),o=s(23508),c=s(29945),a=s(45248),l=s(87995),u=s(81551),d=s(80184);t.default=function(e){var t=e.closeDeleteModalAndRefresh,s=e.deleteOpen,x=e.selectedServiceAccount,h=(0,u.TL)(),p=(0,r.Z)((function(){return t(!0)}),(function(e){return h((0,l.Ih)(e))})),f=(0,n.Z)(p,2),m=f[0],j=f[1];if(!x)return null;return(0,d.jsx)(o.Z,{title:"Delete Access Key",confirmText:"Delete",isOpen:s,titleIcon:(0,d.jsx)(c.NvT,{}),isLoading:m,onConfirm:function(){j("DELETE","/api/v1/service-accounts/".concat((0,a.LL)(x)))},onClose:function(){return t(!1)},confirmationContent:(0,d.jsxs)(i.Fragment,{children:["Are you sure you want to delete Access Key"," ",(0,d.jsx)("b",{style:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"},children:x}),"?"]})})}},37798:function(e,t,s){s.d(t,{Z:function(){return v}});var n=s(1413),i=s(72791),r=s(26181),o=s.n(r),c=s(17691),a=s(29945),l=s(56028),u=s(78029),d=s.n(u),x=s(87995),h=s(81551),p=s(80184),f=function(e){var t=e.label,s=void 0===t?"":t,n=e.value,i=void 0===n?"":n,r=(0,h.TL)();return(0,p.jsxs)(a.xuv,{sx:{marginTop:12},children:[(0,p.jsx)(a.AZs,{children:s}),(0,p.jsx)(a.bSr,{actionButton:(0,p.jsx)(d(),{text:i,children:(0,p.jsx)(a.zxk,{id:"copy-path",variant:"regular",onClick:function(){r((0,x.MK)("".concat(s," copied to clipboard")))},style:{marginRight:"5px",width:"28px",height:"28px",padding:"0px"},icon:(0,p.jsx)(a.TIy,{})})}),children:i})]})},m=s(27454),j=s(23814),g=c.ZP.div((function(e){e.theme;return{color:"red",fontSize:".85rem",margin:".5rem 0 .5rem 0",display:"flex",alignItems:"center","& svg ":{marginRight:".3rem",height:16,width:16}}})),y=function(e,t){var s=document.createElement("a");s.setAttribute("href","data:text/plain;charset=utf-8,"+t),s.setAttribute("download",e),s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s)},v=function(e){var t=e.newServiceAccount,s=e.open,r=e.closeModal,c=e.entity;if(!t)return null;var u=o()(t,"console",null),d=o()(t,"idp",!1);return(0,p.jsx)(l.Z,{modalOpen:s,onClose:function(){r()},title:"New ".concat(c," Created"),titleIcon:(0,p.jsx)(a.tVY,{}),children:(0,p.jsxs)(a.rjZ,{container:!0,children:[(0,p.jsxs)(a.rjZ,{item:!0,xs:12,children:["A new ",c," has been created with the following details:",!d&&u&&(0,p.jsx)(i.Fragment,{children:(0,p.jsxs)(a.rjZ,{item:!0,xs:12,sx:{overflowY:"auto",maxHeight:350},children:[(0,p.jsx)(a.xuv,{sx:{padding:".8rem 0 0 0",fontWeight:600,fontSize:".9rem"},children:"Console Credentials"}),Array.isArray(u)&&u.map((function(e,t){return(0,p.jsxs)(i.Fragment,{children:[(0,p.jsx)(f,{label:"Access Key",value:e.accessKey}),(0,p.jsx)(f,{label:"Secret Key",value:e.secretKey})]})})),!Array.isArray(u)&&(0,p.jsxs)(i.Fragment,{children:[(0,p.jsx)(f,{label:"Access Key",value:u.accessKey}),(0,p.jsx)(f,{label:"Secret Key",value:u.secretKey})]})]})}),(null===u||void 0===u)&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(f,{label:"Access Key",value:t.accessKey||""}),(0,p.jsx)(f,{label:"Secret Key",value:t.secretKey||""})]}),d?(0,p.jsx)(g,{children:"Please Login via the configured external identity provider."}):(0,p.jsxs)(g,{children:[(0,p.jsx)(a.e6P,{}),(0,p.jsx)("span",{children:"Write these down, as this is the only time the secret will be displayed."})]})]}),(0,p.jsx)(a.rjZ,{item:!0,xs:12,sx:(0,n.Z)({},j.ID.modalButtonBar),children:!d&&(0,p.jsxs)(i.Fragment,{children:[(0,p.jsx)(m.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,p.jsx)(a.zxk,{id:"download-button",label:"Download for import",onClick:function(){var e={};u?e=Array.isArray(u)?u.map((function(e){return{url:e.url,accessKey:e.accessKey,secretKey:e.secretKey,api:"s3v4",path:"auto"}}))[0]:{url:u.url,accessKey:u.accessKey,secretKey:u.secretKey,api:"s3v4",path:"auto"}:e={url:t.url,accessKey:t.accessKey,secretKey:t.secretKey,api:"s3v4",path:"auto"};y("credentials.json",JSON.stringify((0,n.Z)({},e)))},icon:(0,p.jsx)(a._8t,{}),variant:"callAction"})}),Array.isArray(u)&&u.length>1&&(0,p.jsx)(m.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,p.jsx)(a.zxk,{id:"download-all-button",label:"Download all access credentials",onClick:function(){var e={};u&&Array.isArray(u)&&u.length>1&&(e=u.map((function(e){return{accessKey:e.accessKey,secretKey:e.secretKey}})));y("all_credentials.json",JSON.stringify((0,n.Z)({},e)))},icon:(0,p.jsx)(a._8t,{}),variant:"callAction",color:"primary"})})]})})]})})}},60680:function(e,t,s){s(72791);var n=s(11135),i=s(25787),r=s(80184);t.Z=(0,i.Z)((function(e){return(0,n.Z)({root:{padding:0,margin:0,fontSize:".9rem"}})}))((function(e){var t=e.classes,s=e.children;return(0,r.jsx)("h1",{className:t.root,children:s})}))},16502:function(e,t,s){s(72791);var n=s(11135),i=s(25787),r=s(80184);t.Z=(0,i.Z)((function(e){return(0,n.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 t=e.classes,s=e.label,n=e.title;return(0,r.jsxs)("div",{className:t.headerContainer,children:[(0,r.jsx)("h4",{className:t.labelHeadline,children:n}),(0,r.jsx)("div",{className:t.labelText,children:s})]})}))},58400:function(e,t,s){var n=s(93433),i=s(29439),r=s(72791),o=s(29945),c=s(21639),a=s(59114),l=s(87995),u=s(81551),d=s(74616),x=s(78687),h=s(31776),p=s(80184);t.Z=function(e){var t=e.noTitle,s=void 0!==t&&t,f=(0,u.TL)(),m=(0,r.useState)([]),j=(0,i.Z)(m,2),g=j[0],y=j[1],v=(0,r.useState)(!1),b=(0,i.Z)(v,2),S=b[0],A=b[1],Z=(0,r.useState)(""),C=(0,i.Z)(Z,2),I=C[0],E=C[1],w=(0,x.v9)((function(e){return e.createUser.selectedPolicies})),k=(0,r.useCallback)((function(){A(!0),h.h.policies.listPolicies().then((function(e){var t,s=null!==(t=e.data.policies)&&void 0!==t?t:[];A(!1),y(s.sort(c.g4))})).catch((function(e){A(!1),f((0,l.zb)(e))}))}),[f]);(0,r.useEffect)((function(){A(!0)}),[]),(0,r.useEffect)((function(){S&&k()}),[S,k]);var _=g.filter((function(e){return e.name.includes(I)}));return(0,p.jsxs)(o.rjZ,{item:!0,xs:12,className:"inputItem",children:[S&&(0,p.jsx)(o.kod,{}),g.length>0?(0,p.jsxs)(r.Fragment,{children:[(0,p.jsx)(o.rjZ,{item:!0,xs:12,className:"inputItem",children:(0,p.jsx)(a.Z,{placeholder:"Start typing to search for a Policy",onChange:function(e){E(e)},value:I,label:s?"":"Assign Policies"})}),(0,p.jsx)(o.wQF,{columns:[{label:"Policy",elementKey:"name"}],onSelect:function(e){var t=e.target,s=t.value,i=t.checked,r=(0,n.Z)(w);i?r.push(s):r=r.filter((function(e){return e!==s})),r=r.filter((function(e){return""!==e})),f((0,d.ue)(r))},selectedItems:w,isLoading:S,records:_,entityName:"Policies",idField:"name",customPaperHeight:"200px"})]}):(0,p.jsx)(o.xuv,{sx:{textAlign:"center",padding:"10px 0"},children:"No Policies Available"})]})}},49076:function(e,t,s){s.r(t);var n=s(37762),i=s(29439),r=s(72791),o=s(57689),c=s(87995),a=s(29945),l=s(45248),u=s(56087),d=s(9505),x=s(23508),h=s(16502),p=s(81207),f=s(81551),m=s(80184);t.default=function(e){var t=e.closeDeleteModalAndRefresh,s=e.deleteOpen,j=e.selectedUsers,g=(0,o.s0)(),y=(0,f.TL)(),v=function(){return t(!1)},b=(0,d.Z)((function(){return t(!0)}),(function(e){return y((0,c.Ih)(e))})),S=(0,i.Z)(b,2),A=S[0],Z=S[1],C=(0,r.useState)(!0),I=(0,i.Z)(C,2),E=I[0],w=I[1],k=(0,r.useState)(!1),_=(0,i.Z)(k,2),K=_[0],U=_[1],L=(0,r.useState)([]),F=(0,i.Z)(L,2),T=F[0],P=F[1],R=localStorage.getItem("userLoggedIn")||"";if((0,r.useEffect)((function(){j&&p.Z.invoke("POST","/api/v1/users/service-accounts",j).then((function(e){P(e.userServiceAccountList),e.hasSA&&U(!0),w(!1)})).catch((function(e){y((0,c.Ih)(e)),w(!1)}))}),[j,y]),!j)return null;var M=j.map((function(e){return(0,m.jsx)("div",{children:(0,m.jsx)("b",{children:e})},e)})),N=[{type:"view",onClick:function(e){g("".concat(u.gA.USERS,"/").concat((0,l.LL)(e.userName))),v()}}],O="Are you sure you want to delete the following "+j.length+" user"+(j.length>1?"s?":"?");return(0,m.jsx)(x.Z,{title:"Delete User".concat(j.length>1?"s":""),confirmText:"Delete",isOpen:s,titleIcon:(0,m.jsx)(a.NvT,{}),isLoading:A,onConfirm:function(){var e,s=(0,n.Z)(j);try{for(s.s();!(e=s.n()).done;){var i=e.value;i===R?(y((0,c.Ih)({errorMessage:"Cannot delete currently logged in user",detailedError:"Cannot delete currently logged in user ".concat(R)})),t(!0)):(Z("DELETE","/api/v1/user/".concat((0,l.LL)(i))),t(!0),g("".concat(u.gA.USERS)))}}catch(r){s.e(r)}finally{s.f()}},onClose:v,confirmationContent:E?(0,m.jsx)(a.aNw,{}):(0,m.jsx)(r.Fragment,{children:K?(0,m.jsxs)(r.Fragment,{children:[(0,m.jsx)(h.Z,{label:"Click on a user to view the full listing of asociated Access Keys. All Access Keys associated with a user will be deleted along with the user. Are you sure you want to continue?",title:"Warning: One or more users selected has associated Access Keys. "}),(0,m.jsx)(a.wQF,{itemActions:N,columns:[{label:"Username",elementKey:"userName"},{label:"# Associated Access Keys",elementKey:"numSAs"}],isLoading:E,records:T,entityName:"User Access Keys",idField:"userName",customPaperHeight:"250"})]}):(0,m.jsxs)(r.Fragment,{children:[O,M]})})})}},83658:function(e,t,s){var n=s(93433),i=s(29439),r=s(72791),o=s(26181),c=s.n(o),a=s(29945),l=s(21639),u=s(87995),d=s(81551),x=s(81207),h=s(59114),p=s(80184);t.Z=function(e){var t=e.selectedGroups,s=e.setSelectedGroups,o=(0,d.TL)(),f=(0,r.useState)([]),m=(0,i.Z)(f,2),j=m[0],g=m[1],y=(0,r.useState)(!1),v=(0,i.Z)(y,2),b=v[0],S=v[1],A=(0,r.useState)(""),Z=(0,i.Z)(A,2),C=Z[0],I=Z[1],E=(0,r.useCallback)((function(){x.Z.invoke("GET","/api/v1/groups").then((function(e){var t=c()(e,"groups",[]);t||(t=[]),g(t.sort(l.V2)),S(!1)})).catch((function(e){o((0,u.zb)(e)),S(!1)}))}),[o]);(0,r.useEffect)((function(){S(!0)}),[]),(0,r.useEffect)((function(){b&&E()}),[b,E]);var w=t||[],k=j.filter((function(e){return e.includes(C)}));return(0,p.jsxs)(a.rjZ,{item:!0,xs:12,className:"inputItem",children:[b&&(0,p.jsx)(a.kod,{}),null!==j&&j.length>0?(0,p.jsxs)(r.Fragment,{children:[(0,p.jsx)(a.rjZ,{item:!0,xs:12,className:"inputItem",children:(0,p.jsx)(h.Z,{placeholder:"Start typing to search for Groups",onChange:I,value:C,label:"Assign Groups"})}),(0,p.jsx)(a.wQF,{columns:[{label:"Group"}],onSelect:function(e){var t=e.target,i=t.value,r=t.checked,o=(0,n.Z)(w);return r?o.push(i):o=o.filter((function(e){return e!==i})),s(o),o},selectedItems:w,isLoading:b,records:k,entityName:"Groups",idField:"",customPaperHeight:"200px"})]}):(0,p.jsx)(a.xuv,{sx:{textAlign:"center",padding:"10px 0"},children:"No Groups Available"})]})}},4563:function(e,t,s){s.r(t),s.d(t,{default:function(){return ae}});var n=s(72791),i=s(57689),r=s(98604),o=s(93433),c=s(29439),a=s(29945),l=s(21639),u=s(23814),d=s(45248),x=s(56087),h=s(81207),p=s(81806),f=s(59114),m=s(75578),j=s(38442),g=s(87995),y=s(81551),v=s(27454),b=s(47974),S=s(99670),A=s(80184),Z=(0,m.Z)(n.lazy((function(){return Promise.resolve().then(s.bind(s,49076))}))),C=(0,m.Z)(n.lazy((function(){return s.e(9221).then(s.bind(s,49221))}))),I=function(){var e=(0,y.TL)(),t=(0,i.s0)(),s=(0,n.useState)([]),r=(0,c.Z)(s,2),m=r[0],I=r[1],E=(0,n.useState)(!0),w=(0,c.Z)(E,2),k=w[0],_=w[1],K=(0,n.useState)(!1),U=(0,c.Z)(K,2),L=U[0],F=U[1],T=(0,n.useState)(!1),P=(0,c.Z)(T,2),R=P[0],M=P[1],N=(0,n.useState)(""),O=(0,c.Z)(N,2),D=O[0],z=O[1],B=(0,n.useState)([]),G=(0,c.Z)(B,2),Y=G[0],W=G[1],V=(0,j.F)(x.C3,x.Rs),H=(0,j.F)(x.C3,x.iw),Q=(0,j.F)(x.C3,x.uH),J=(0,j.F)(x.C3,x.Yj);(0,n.useEffect)((function(){k&&(V?h.Z.invoke("GET","/api/v1/users").then((function(e){var t=null===e.users?[]:e.users;_(!1),I(t.sort(l.LQ))})).catch((function(t){_(!1),e((0,g.Ih)(t))})):_(!1))}),[k,e,V]);var X=m.filter((function(e){return e.accessKey.includes(D)})),q=function(e){t("".concat(x.gA.USERS,"/").concat((0,d.LL)(e.accessKey)))},$=[{type:"view",onClick:q,disableButtonFunction:function(){return!H}},{type:"edit",onClick:q,disableButtonFunction:function(){return!H}}];return(0,n.useEffect)((function(){e((0,g.Sc)("list_users"))}),[]),(0,A.jsxs)(n.Fragment,{children:[L&&(0,A.jsx)(Z,{deleteOpen:L,selectedUsers:Y,closeDeleteModalAndRefresh:function(e){!function(e){F(!1),e&&(_(!0),W([]))}(e)}}),R&&(0,A.jsx)(C,{open:R,checkedUsers:Y,closeModalAndRefresh:function(e){!function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];M(!1),e&&W([])}(e)}}),(0,A.jsx)(b.Z,{label:"Users",actions:(0,A.jsx)(S.Z,{})}),(0,A.jsx)(a.Xgh,{children:(0,A.jsxs)(a.rjZ,{container:!0,children:[(0,A.jsxs)(a.rjZ,{item:!0,xs:12,sx:u.OR.actionsTray,children:[(0,A.jsx)(f.Z,{placeholder:"Search Users",onChange:z,value:D,sx:{marginRight:"auto",maxWidth:380}}),(0,A.jsx)(j.s,{resource:x.C3,scopes:[x.Ft.ADMIN_DELETE_USER],matchAll:!0,errorProps:{disabled:!0},children:(0,A.jsx)(v.Z,{tooltip:(0,j.F)("console",[x.Ft.ADMIN_DELETE_USER])?0===Y.length?"Select Users to delete":"Delete Selected":(0,x.MK)([x.Ft.ADMIN_DELETE_USER],"delete users"),children:(0,A.jsx)(a.zxk,{id:"delete-selected-users",onClick:function(){F(!0)},label:"Delete Selected",icon:(0,A.jsx)(a.pJl,{}),disabled:0===Y.length,variant:"secondary","aria-label":"delete-selected-users"})})}),(0,A.jsx)(j.s,{scopes:[x.Ft.ADMIN_ADD_USER_TO_GROUP],resource:x.C3,errorProps:{disabled:!0},children:(0,A.jsx)(v.Z,{tooltip:(0,j.F)("console",[x.Ft.ADMIN_ADD_USER_TO_GROUP])?0===Y.length?"Select Users to group":"Add to Group":(0,x.MK)([x.Ft.ADMIN_ADD_USER_TO_GROUP],"add users to groups"),children:(0,A.jsx)(a.zxk,{id:"add-to-group",label:"Add to Group",icon:(0,A.jsx)(a.wws,{}),disabled:Y.length<=0,onClick:function(){Y.length>0&&M(!0)},variant:"regular"})})}),(0,A.jsx)(j.s,{scopes:[x.Ft.ADMIN_CREATE_USER,x.Ft.ADMIN_LIST_USER_POLICIES,x.Ft.ADMIN_LIST_GROUPS],resource:x.HQ,matchAll:!0,errorProps:{disabled:!0},children:(0,A.jsx)(v.Z,{tooltip:(0,j.F)("console",[x.Ft.ADMIN_CREATE_USER,x.Ft.ADMIN_LIST_USER_POLICIES,x.Ft.ADMIN_LIST_GROUPS,x.Ft.ADMIN_ATTACH_USER_OR_GROUP_POLICY],!0)?"Create User":(0,x.MK)([x.Ft.ADMIN_CREATE_USER,x.Ft.ADMIN_LIST_USER_POLICIES,x.Ft.ADMIN_LIST_GROUPS,x.Ft.ADMIN_ATTACH_USER_OR_GROUP_POLICY],"create users"),children:(0,A.jsx)(a.zxk,{id:"create-user",label:"Create User",icon:(0,A.jsx)(a.dtP,{}),onClick:function(){t("".concat(x.gA.USER_ADD))},variant:"callAction",disabled:!(0,j.F)("console",[x.Ft.ADMIN_CREATE_USER,x.Ft.ADMIN_LIST_USER_POLICIES,x.Ft.ADMIN_LIST_GROUPS,x.Ft.ADMIN_ATTACH_USER_OR_GROUP_POLICY],!0)})})})]}),k&&(0,A.jsx)(a.kod,{}),!k&&(0,A.jsxs)(n.Fragment,{children:[m.length>0&&(0,A.jsxs)(n.Fragment,{children:[(0,A.jsx)(a.rjZ,{item:!0,xs:12,sx:{marginBottom:15},children:(0,A.jsx)(j.s,{scopes:[x.Ft.ADMIN_LIST_USERS],resource:x.C3,errorProps:{disabled:!0},children:(0,A.jsx)(a.wQF,{itemActions:$,columns:[{label:"Access Key",elementKey:"accessKey"}],onSelect:Q||J?function(e){var t=e.target,s=void 0===t?{}:t,n=s.value,i=void 0===n?"":n,r=s.checked,c=void 0!==r&&r,a=(0,o.Z)(Y);return c?a.push(i):a=a.filter((function(e){return e!==i})),W(a),a}:void 0,selectedItems:Y,isLoading:k,records:X,entityName:"Users",idField:"accessKey"})})}),(0,A.jsx)(a.KfX,{title:"Users",iconComponent:(0,A.jsx)(a.oyc,{}),help:(0,A.jsxs)(n.Fragment,{children:["A MinIO user consists of a unique access key (username) and corresponding secret key (password). Clients must authenticate their identity by specifying both a valid access key (username) and the corresponding secret key (password) of an existing MinIO user.",(0,A.jsx)("br",{}),"Groups provide a simplified method for managing shared permissions among users with common access patterns and workloads.",(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"Users inherit access permissions to data and resources through the groups they belong to.",(0,A.jsx)("br",{}),"MinIO uses Policy-Based Access Control (PBAC) to define the authorized actions and resources to which an authenticated user has access. Each policy describes one or more actions and conditions that outline the permissions of a user or group of users.",(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"Each user can access only those resources and operations which are explicitly granted by the built-in role. MinIO denies access to any other resource or action by default.",(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"You can learn more at our"," ",(0,A.jsx)("a",{href:"https://min.io/docs/minio/kubernetes/upstream/administration/identity-access-management/minio-user-management.html?ref=con",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})]}),0===m.length&&(0,A.jsx)(a.rjZ,{container:!0,children:(0,A.jsx)(a.rjZ,{item:!0,xs:8,children:(0,A.jsx)(a.KfX,{title:"Users",iconComponent:(0,A.jsx)(a.oyc,{}),help:(0,A.jsxs)(n.Fragment,{children:["A MinIO user consists of a unique access key (username) and corresponding secret key (password). Clients must authenticate their identity by specifying both a valid access key (username) and the corresponding secret key (password) of an existing MinIO user.",(0,A.jsx)("br",{}),"Groups provide a simplified method for managing shared permissions among users with common access patterns and workloads.",(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"Users inherit access permissions to data and resources through the groups they belong to.",(0,A.jsx)("br",{}),"MinIO uses Policy-Based Access Control (PBAC) to define the authorized actions and resources to which an authenticated user has access. Each policy describes one or more actions and conditions that outline the permissions of a user or group of users.",(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"Each user can access only those resources and operations which are explicitly granted by the built-in role. MinIO denies access to any other resource or action by default.",(0,A.jsxs)(j.s,{scopes:[x.Ft.ADMIN_CREATE_USER,x.Ft.ADMIN_LIST_USER_POLICIES,x.Ft.ADMIN_LIST_GROUPS],matchAll:!0,resource:x.C3,children:[(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"To get started,"," ",(0,A.jsx)(p.Z,{onClick:function(){t("".concat(x.gA.USER_ADD))},children:"Create a User"}),"."]})]})})})})]})]})})]})},E=s(83658),w=s(56028),k=function(e){var t=e.closeModalAndRefresh,s=e.selectedUser,i=e.open,r=(0,y.TL)(),o=(0,n.useState)(!1),l=(0,c.Z)(o,2),x=l[0],p=l[1],f=(0,n.useState)(""),m=(0,c.Z)(f,2),j=m[0],v=m[1],b=(0,n.useState)(""),S=(0,c.Z)(b,2),Z=S[0],C=S[1],I=(0,n.useState)(!1),k=(0,c.Z)(I,2),_=k[0],K=k[1],U=(0,n.useState)([]),L=(0,c.Z)(U,2),F=L[0],T=L[1],P=(0,n.useCallback)((function(){if(!s)return null;h.Z.invoke("GET","/api/v1/user/".concat((0,d.LL)(s))).then((function(e){p(!1),v(e.accessKey),T(e.memberOf||[]),K("enabled"===e.status)})).catch((function(e){p(!1),r((0,g.zb)(e))}))}),[s,r]);(0,n.useEffect)((function(){null===s?(v(""),C(""),T([])):P()}),[s,P]);var R=""!==j.trim()&&(""!==Z.trim()&&null===s||null!==s);return(0,A.jsx)(w.Z,{onClose:function(){t()},modalOpen:i,title:"Set Groups",titleIcon:(0,A.jsx)(a.ZmA,{}),children:(0,A.jsx)(n.Fragment,{children:(0,A.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),x||(p(!0),null!==s?h.Z.invoke("PUT","/api/v1/user/".concat((0,d.LL)(s)),{status:_?"enabled":"disabled",groups:F}).then((function(e){p(!1),t()})).catch((function(e){p(!1),r((0,g.zb)(e))})):h.Z.invoke("POST","/api/v1/users",{accessKey:j,secretKey:Z,groups:F}).then((function(e){p(!1),t()})).catch((function(e){p(!1),r((0,g.zb)(e))})))},children:[(0,A.jsx)(a.ltY,{withBorders:!1,containerPadding:!1,children:(0,A.jsx)(E.Z,{selectedGroups:F,setSelectedGroups:function(e){T(e)}})}),(0,A.jsxs)(a.xuv,{sx:u.ID.modalButtonBar,children:[(0,A.jsx)(a.zxk,{id:"clear-change-user-groups",type:"button",variant:"regular",onClick:function(){null===s?(v(""),C(""),T([])):T([])},label:"Clear"}),(0,A.jsx)(a.zxk,{id:"save-user-groups",type:"submit",variant:"callAction",disabled:x||!R,label:"Save"})]}),x&&(0,A.jsx)(a.rjZ,{item:!0,xs:12,children:(0,A.jsx)(a.kod,{})})]})})})},_=s(78687),K=s(61889),U=s(58400),L=s(74616),F=function(e){var t=e.closeModalAndRefresh,s=e.selectedUser,i=e.currentPolicies,r=e.open,o=(0,y.TL)(),l=(0,n.useState)(!1),d=(0,c.Z)(l,2),x=d[0],p=d[1],f=(0,n.useState)([]),m=(0,c.Z)(f,2),j=m[0],v=m[1],b=(0,_.v9)((function(e){return e.createUser.selectedPolicies}));return(0,n.useEffect)((function(){if(r){var e=i.map((function(e){return e.policy}));v(e),o((0,L.ue)(e))}}),[r,s]),(0,A.jsxs)(w.Z,{onClose:function(){t()},modalOpen:r,title:"Set Policies",titleIcon:(0,A.jsx)(a.v42,{}),children:[(0,A.jsx)(a.ltY,{withBorders:!1,containerPadding:!1,children:(0,A.jsx)(U.Z,{selectedPolicy:b})}),(0,A.jsxs)(a.xuv,{sx:u.ID.modalButtonBar,children:[(0,A.jsx)(a.zxk,{id:"reset-user-policies",type:"button",variant:"regular",color:"primary",onClick:function(){o((0,L.ue)(j))},label:"Reset"}),(0,A.jsx)(a.zxk,{id:"save-user-policy",type:"button",variant:"callAction",color:"primary",disabled:x,onClick:function(){var e=s;p(!0),h.Z.invoke("PUT","/api/v1/set-policy",{name:b,entityName:e,entityType:"user"}).then((function(){p(!1),o((0,L.ue)([])),t()})).catch((function(e){p(!1),o((0,g.zb)(e))}))},label:"Save"})]}),x&&(0,A.jsx)(K.ZP,{item:!0,xs:12,children:(0,A.jsx)(a.kod,{})})]})},T=s(23956),P=s(37798),R=s(18303),M=s(58493),N=s(14048),O=s(25643),D=function(e){var t=e.user,s=e.hasPolicy,r=(0,y.TL)(),o=(0,i.s0)(),u=(0,n.useState)([]),p=(0,c.Z)(u,2),f=p[0],m=p[1],b=(0,n.useState)(!1),S=(0,c.Z)(b,2),Z=S[0],C=S[1],I=(0,n.useState)(!1),E=(0,c.Z)(I,2),w=E[0],k=E[1],_=(0,n.useState)(null),K=(0,c.Z)(_,2),U=K[0],L=K[1],F=(0,n.useState)(!1),D=(0,c.Z)(F,2),z=D[0],B=D[1],G=(0,n.useState)(null),Y=(0,c.Z)(G,2),W=Y[0],V=Y[1],H=(0,n.useState)([]),Q=(0,c.Z)(H,2),J=Q[0],X=Q[1],q=(0,n.useState)(!1),$=(0,c.Z)(q,2),ee=$[0],te=$[1],se=(0,n.useState)(!1),ne=(0,c.Z)(se,2),ie=ne[0],re=ne[1];(0,n.useEffect)((function(){oe()}),[]),(0,n.useEffect)((function(){Z&&h.Z.invoke("GET","/api/v1/user/".concat((0,d.LL)(t),"/service-accounts")).then((function(e){C(!1);var t=e.sort(l.LQ);m(t)})).catch((function(e){r((0,g.Ih)(e)),C(!1)}))}),[Z,C,m,t,r]);var oe=function(){C(!0)},ce=[{type:"view",onClick:function(e){e&&function(e){L(e),re(!0)}(e.accessKey)}},{type:"delete",onClick:function(e){e&&function(e){L(e),k(!0)}(e.accessKey)}}];return(0,n.useEffect)((function(){r((0,g.Sc)("user_details_accounts"))}),[]),(0,A.jsxs)(n.Fragment,{children:[w&&(0,A.jsx)(T.default,{deleteOpen:w,selectedServiceAccount:U,closeDeleteModalAndRefresh:function(e){!function(e){k(!1),e&&oe()}(e)}}),ee&&(0,A.jsx)(R.Z,{deleteOpen:ee,selectedSAs:J,closeDeleteModalAndRefresh:function(e){te(!1),e&&(r((0,g.y1)("Access Keys deleted successfully.")),X([]),C(!0))}}),z&&(0,A.jsx)(P.Z,{newServiceAccount:W,open:z,closeModal:function(){B(!1),V(null)},entity:"Access Key"}),ie&&(0,A.jsx)(N.Z,{open:ie,selectedAccessKey:U,closeModalAndRefresh:function(){re(!1),C(!0)}}),(0,A.jsx)(a.NZf,{separator:!0,sx:{marginBottom:15},actions:(0,A.jsxs)(a.xuv,{sx:{display:"flex",justifyContent:"flex-end",gap:10},children:[(0,A.jsx)(v.Z,{tooltip:"Delete Selected",children:(0,A.jsx)(a.zxk,{id:"delete-selected",onClick:function(){te(!0)},label:"Delete Selected",icon:(0,A.jsx)(a.pJl,{}),disabled:0===J.length,variant:"secondary"})}),(0,A.jsx)(j.s,{scopes:[x.Ft.ADMIN_CREATE_SERVICEACCOUNT,x.Ft.ADMIN_UPDATE_SERVICEACCOUNT,x.Ft.ADMIN_REMOVE_SERVICEACCOUNT,x.Ft.ADMIN_LIST_SERVICEACCOUNTS],resource:x.C3,matchAll:!0,errorProps:{disabled:!0},children:(0,A.jsx)(v.Z,{tooltip:"Create Access Key",children:(0,A.jsx)(a.zxk,{id:"create-service-account",label:"Create Access Key",variant:"callAction",icon:(0,A.jsx)(a.dtP,{}),onClick:function(){o("/identity/users/new-user-sa/".concat((0,d.LL)(t)))},disabled:!s})})})]}),children:"Access Keys"}),(0,A.jsx)(a.wQF,{itemActions:ce,entityName:"Access Keys",columns:O.r,onSelect:function(e){return(0,M._0)(e,X,J)},selectedItems:J,isLoading:Z,records:f,idField:"accessKey"})]})},z=s(31776),B=s(82342),G=function(e){var t=e.open,s=e.userName,i=e.closeModal,r=(0,y.TL)(),o=(0,n.useState)(""),l=(0,c.Z)(o,2),d=l[0],x=l[1],h=(0,n.useState)(""),p=(0,c.Z)(h,2),f=p[0],m=p[1],j=(0,n.useState)(!1),v=(0,c.Z)(j,2),b=v[0],S=v[1];return t?(0,A.jsx)(w.Z,{title:"Change User Password",modalOpen:t,onClose:function(){x(""),m(""),i()},titleIcon:(0,A.jsx)(a.IaT,{}),children:(0,A.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){if(e.preventDefault(),!b){if(S(!0),d.length<8)return r((0,g.zb)({errorMessage:"Passwords must be at least 8 characters long",detailedError:""})),void S(!1);var t={selectedUser:s,newSecretKey:d};z.h.account.changeUserPassword(t).then((function(e){S(!1),x(""),m(""),i()})).catch((function(e){S(!1),x(""),m(""),r((0,g.zb)((0,B.g)(e)))}))}}(e)},children:(0,A.jsxs)(a.ltY,{withBorders:!1,containerPadding:!1,children:[(0,A.jsxs)(a.xuv,{sx:{margin:"10px 0 20px"},children:["Change password for: ",(0,A.jsx)("strong",{children:s})]}),(0,A.jsx)(a.Wzg,{id:"new-password",name:"new-password",onChange:function(e){x(e.target.value)},label:"New Password",type:"password",value:d}),(0,A.jsx)(a.Wzg,{id:"re-new-password",name:"re-new-password",onChange:function(e){m(e.target.value)},label:"Type New Password Again",type:"password",value:f}),(0,A.jsx)(a.xuv,{sx:u.ID.modalButtonBar,children:(0,A.jsx)(a.zxk,{id:"save-user-password",type:"submit",variant:"callAction",color:"primary",disabled:b||!(f.length>0&&d===f),label:"Save"})}),b&&(0,A.jsx)(a.xuv,{children:(0,A.jsx)(a.kod,{})})]})})}):null},Y=s(49076),W=function(){var e=(0,y.TL)(),t=(0,i.UO)(),s=(0,i.s0)(),r=(0,n.useState)(!1),o=(0,c.Z)(r,2),u=o[0],p=o[1],f=(0,n.useState)(!1),m=(0,c.Z)(f,2),Z=m[0],C=m[1],I=(0,n.useState)(!1),E=(0,c.Z)(I,2),w=E[0],_=E[1],K=(0,n.useState)(!1),U=(0,c.Z)(K,2),L=U[0],T=U[1],P=(0,n.useState)(!1),R=(0,c.Z)(P,2),M=R[0],N=R[1],O=(0,n.useState)([]),z=(0,c.Z)(O,2),B=z[0],W=z[1],V=(0,n.useState)([]),H=(0,c.Z)(V,2),Q=H[0],J=H[1],X=(0,n.useState)([]),q=(0,c.Z)(X,2),$=q[0],ee=q[1],te=(0,n.useState)(!1),se=(0,c.Z)(te,2),ne=se[0],ie=se[1],re=(0,n.useState)(!1),oe=(0,c.Z)(re,2),ce=oe[0],ae=oe[1],le=(0,n.useState)(!1),ue=(0,c.Z)(le,2),de=ue[0],xe=ue[1],he=(0,n.useState)("groups"),pe=(0,c.Z)(he,2),fe=pe[0],me=pe[1],je=(0,j.F)(x.C3,x.cI)&&!M,ge=(0,j.F)(x.C3,x.kZ)&&M,ye=(0,d.IO)(t.userName||""),ve=localStorage.getItem("userLoggedIn")||"",be=(0,j.F)(x.C3,x.W2,!0),Se=(0,j.F)(x.C3,x.ck,!0),Ae=(0,j.F)(x.C3,x.k_),Ze=(0,n.useCallback)((function(){if(""===ye)return null;p(!0),h.Z.invoke("GET","/api/v1/user/".concat((0,d.LL)(ye))).then((function(e){T(!1);var t=e.memberOf||[];W(t);var s=t.map((function(e){return{group:e}}));J(s);var n=e.policy.map((function(e){return{policy:e}}));n.sort(l.KE),ee(n),N("enabled"===e.status),xe(e.hasPolicy),p(!1)})).catch((function(t){T(!1),p(!1),e((0,g.zb)(t))}))}),[ye,e]);(0,n.useEffect)((function(){e((0,g.Sc)("user_details_groups"))}),[]),(0,n.useEffect)((function(){Ze()}),[Ze]);var Ce=[{type:"view",onClick:function(e){s("".concat(x.gA.GROUPS,"/").concat((0,d.LL)(e.group)))},disableButtonFunction:function(){return!Ae}}];return(0,A.jsxs)(n.Fragment,{children:[Z&&(0,A.jsx)(k,{open:Z,selectedUser:ye,closeModalAndRefresh:function(){C(!1),Ze()}}),w&&(0,A.jsx)(F,{open:w,selectedUser:ye,currentPolicies:$,closeModalAndRefresh:function(){_(!1),Ze()}}),ce&&(0,A.jsx)(Y.default,{deleteOpen:ce,selectedUsers:[ye],closeDeleteModalAndRefresh:function(e){!function(e){ae(!1),e&&Ze()}(e)}}),ne&&(0,A.jsx)(G,{open:ne,userName:ye,closeModal:function(){return ie(!1)}}),(0,A.jsx)(b.Z,{label:(0,A.jsx)(n.Fragment,{children:(0,A.jsx)(a.hbI,{label:"Users",onClick:function(){return s(x.gA.USERS)}})}),actions:(0,A.jsx)(S.Z,{})}),(0,A.jsx)(a.Xgh,{children:(0,A.jsxs)(a.rjZ,{container:!0,children:[(0,A.jsx)(a.rjZ,{item:!0,xs:12,children:(0,A.jsx)(a.UHn,{icon:(0,A.jsx)(a.oyc,{width:40}),title:ye,subTitle:"",actions:(0,A.jsxs)(n.Fragment,{children:[(0,A.jsx)("span",{style:{fontSize:".8rem",marginRight:".5rem"},children:"User Status:"}),(0,A.jsx)("span",{style:{fontWeight:"bold",fontSize:".9rem",marginRight:".5rem"},children:M?"Enabled":"Disabled"}),(0,A.jsx)(v.Z,{tooltip:je||ge?"":(0,j.F)(x.C3,x.cI)?(0,x.MK)(x.kZ,"disable users"):(0,j.F)(x.C3,x.kZ)?(0,x.MK)(x.cI,"enable users"):(0,x.MK)(x.xQ,"enable or disable users"),children:(0,A.jsx)(a.rsf,{indicatorLabels:["Enabled","Disabled"],checked:M,value:"group_enabled",id:"group-status",name:"group-status",onChange:function(){var t;N(!M),t=!M,L||(T(!0),h.Z.invoke("PUT","/api/v1/user/".concat((0,d.LL)(ye)),{status:t?"enabled":"disabled",groups:B}).then((function(e){T(!1)})).catch((function(t){T(!1),e((0,g.zb)(t))})))},switchOnly:!0,disabled:!je&&!ge})}),(0,A.jsx)(v.Z,{tooltip:(0,j.F)(x.C3,x.Yj)?ve===ye?"You cannot delete the currently logged in User":"Delete User":(0,x.MK)(x.Yj,"delete user"),children:(0,A.jsx)(a.zxk,{id:"delete-user",onClick:function(){ae(!0)},icon:(0,A.jsx)(a.XHJ,{}),variant:"secondary",disabled:!(0,j.F)(x.C3,x.Yj)||ve===ye})}),(0,A.jsx)(v.Z,{tooltip:"Change Password",children:(0,A.jsx)(a.zxk,{id:"change-user-password",onClick:function(){ie(!0)},icon:(0,A.jsx)(a.tvm,{}),variant:"regular"})})]}),sx:{marginBottom:15}})}),(0,A.jsx)(a.rjZ,{item:!0,xs:12,children:(0,A.jsx)(a.mQc,{currentTabOrPath:fe,onTabClick:me,options:[{tabConfig:{id:"groups",label:"Groups",disabled:!Se},content:(0,A.jsxs)(n.Fragment,{children:[(0,A.jsx)(a.xuv,{onMouseMove:function(){return e((0,g.Sc)("user_details_groups"))},children:(0,A.jsx)(a.NZf,{separator:!0,sx:{marginBottom:15},actions:(0,A.jsx)(v.Z,{tooltip:Se?"Assign groups":(0,x.MK)(x.ck,"add users to groups"),children:(0,A.jsx)(a.zxk,{id:"add-groups",label:"Add to Groups",onClick:function(){C(!0)},icon:(0,A.jsx)(a.dtP,{}),variant:"callAction",disabled:!Se})}),children:"Groups"})}),(0,A.jsx)(a.rjZ,{item:!0,xs:12,onMouseMove:function(){return e((0,g.Sc)("user_details_groups"))},children:(0,A.jsx)(a.wQF,{itemActions:Ce,columns:[{label:"Name",elementKey:"group"}],isLoading:u,records:Q,entityName:"Groups",idField:"group"})})]})},{tabConfig:{id:"service_accounts",label:"Service Accounts",disabled:!(0,j.F)(x.C3,x.LE)},content:(0,A.jsx)(D,{user:ye,hasPolicy:de})},{tabConfig:{id:"policies",label:"Policies",disabled:!be},content:(0,A.jsxs)(n.Fragment,{children:[(0,A.jsx)(a.xuv,{onMouseMove:function(){return e((0,g.Sc)("user_details_policies"))},children:(0,A.jsx)(a.NZf,{separator:!0,sx:{marginBottom:15},actions:(0,A.jsx)(v.Z,{tooltip:be?"Assign Policies":(0,x.MK)(x.W2,"assign policies"),children:(0,A.jsx)(a.zxk,{id:"assign-policies",label:"Assign Policies",onClick:function(){_(!0)},icon:(0,A.jsx)(a.v42,{}),variant:"callAction",disabled:!be})}),children:"Policies"})}),(0,A.jsx)(a.xuv,{children:(0,A.jsx)(a.wQF,{itemActions:[{type:"view",onClick:function(e){s("".concat(x.gA.POLICIES,"/").concat((0,d.LL)(e.policy)))}}],columns:[{label:"Name",elementKey:"policy"}],isLoading:u,records:$,entityName:"Policies",idField:"policy"})})]})}]})})]})})]})},V=s(58429),H=s(64554),Q=function(e){var t=e.icon,s=e.description;return(0,A.jsxs)(H.Z,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[t," ",(0,A.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:s})]})},J=function(){return(0,A.jsxs)(H.Z,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px",marginTop:{xs:"0px"}},children:[(0,A.jsxs)(H.Z,{sx:{fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center",marginBottom:"16px","& .min-icon":{height:"21px",width:"21px",marginRight:"15px"}},children:[(0,A.jsx)(a.M9A,{}),(0,A.jsx)("div",{children:"Learn more about the Users feature"})]}),(0,A.jsxs)(H.Z,{sx:{fontSize:"14px",marginBottom:"15px"},children:["A MinIO user consists of a unique access key (username) and corresponding secret key (password). Clients must authenticate their identity by specifying both a valid access key (username) and the corresponding secret key (password) of an existing MinIO user.",(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"Each user can have one or more assigned policies that explicitly list the actions and resources to which that user has access. Users can also inherit policies from the groups in which they have membership.",(0,A.jsx)("br",{})]}),(0,A.jsxs)(H.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,A.jsx)(Q,{icon:(0,A.jsx)(a.oyc,{}),description:"Create Users"}),(0,A.jsx)(Q,{icon:(0,A.jsx)(a.wws,{}),description:"Manage Groups"}),(0,A.jsx)(Q,{icon:(0,A.jsx)(a.QXQ,{}),description:"Assign Policies"})]})]})},X=function(){var e=(0,y.TL)(),t=(0,_.v9)((function(e){return e.createUser.userName}));return(0,A.jsx)(a.Wzg,{id:"accesskey-input",name:"accesskey-input",label:"User Name",value:t,autoFocus:!0,onChange:function(t){e((0,L.b4)(t.target.value))}})},q=s(20165),$=s(3579),ee=function(){var e=(0,y.TL)(),t=(0,_.v9)((function(e){return e.createUser.showPassword})),s=(0,_.v9)((function(e){return e.createUser.secretKey}));return(0,A.jsx)(a.Wzg,{id:"standard-multiline-static",name:"standard-multiline-static",label:"Password",type:t?"text":"password",value:s,onChange:function(t){e((0,L.xz)(t.target.value))},autoComplete:"current-password",overlayIcon:t?(0,A.jsx)(q.Z,{}):(0,A.jsx)($.Z,{}),overlayAction:function(){return e((0,L.R5)(!t))}})},te=function(){var e=(0,y.TL)(),t=(0,_.v9)((function(e){return e.createUser.selectedPolicies})),s=(0,_.v9)((function(e){return e.createUser.selectedGroups})),r=(0,_.v9)((function(e){return e.createUser.addLoading})),o=(0,_.v9)((function(e){return e.createUser.sendEnabled})),c=(0,_.v9)((function(e){return e.createUser.secretKeylength})),l=(0,i.s0)();e((0,L.B$)());return(0,n.useEffect)((function(){e((0,g.Sc)("add_user"))}),[]),(0,A.jsx)(n.Fragment,{children:(0,A.jsxs)(a.rjZ,{item:!0,xs:12,children:[(0,A.jsx)(b.Z,{label:(0,A.jsx)(a.hbI,{label:"Users",onClick:function(){return l(x.gA.USERS)}}),actions:(0,A.jsx)(S.Z,{})}),(0,A.jsx)(a.Xgh,{children:(0,A.jsx)(a.ltY,{title:"Create User",icon:(0,A.jsx)(a.P3B,{}),helpBox:(0,A.jsx)(J,{}),children:(0,A.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(t){!function(t){if(t.preventDefault(),c<8)return e((0,g.Ih)({errorMessage:"Passwords must be at least 8 characters long",detailedError:""})),void e((0,L.NV)(!1));r||(e((0,L.NV)(!0)),e((0,V.h)()).unwrap().then((function(){return l("".concat(x.gA.USERS))})))}(t)},children:[(0,A.jsx)(X,{}),(0,A.jsx)(ee,{}),(0,A.jsx)(U.Z,{selectedPolicy:t}),(0,A.jsx)(E.Z,{selectedGroups:s,setSelectedGroups:function(t){e((0,L.wY)(t))}}),r&&(0,A.jsx)(a.rjZ,{item:!0,xs:12,children:(0,A.jsx)(a.kod,{})}),(0,A.jsxs)(a.rjZ,{item:!0,xs:12,sx:u.ID.modalButtonBar,children:[(0,A.jsx)(a.zxk,{id:"clear-add-user",type:"button",variant:"regular",onClick:function(t){e((0,V.S)())},label:"Clear"}),(0,A.jsx)(a.zxk,{id:"save-user",type:"submit",variant:"callAction",color:"primary",disabled:r||!o,label:"Save"})]})]})})})]})})},se=s(1413),ne=s(92217),ie=function(e){var t=e.icon,s=e.description;return(0,A.jsxs)(H.Z,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[t," ",(0,A.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:s})]})},re=function(){return(0,A.jsxs)(H.Z,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px",marginTop:{xs:"0px"}},children:[(0,A.jsxs)(H.Z,{sx:{fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center",marginBottom:"16px",paddingBottom:"20px","& .min-icon":{height:"21px",width:"21px",marginRight:"15px"}},children:[(0,A.jsx)(a.M9A,{}),(0,A.jsx)("div",{children:"Learn more about Access Keys"})]}),(0,A.jsxs)(H.Z,{sx:{fontSize:"14px",marginBottom:"15px"},children:[(0,A.jsxs)(H.Z,{sx:{paddingBottom:"20px"},children:[(0,A.jsx)(ie,{icon:(0,A.jsx)(a.nO6,{}),description:"Create Access Keys"}),(0,A.jsx)(H.Z,{sx:{paddingTop:"20px"},children:"Access Keys inherit the policies explicitly attached to the parent user, and the policies attached to each group in which the parent user has membership."})]}),(0,A.jsxs)(H.Z,{sx:{paddingBottom:"20px"},children:[(0,A.jsx)(ie,{icon:(0,A.jsx)(a.tvm,{}),description:"Assign Custom Credentials"}),(0,A.jsx)(H.Z,{sx:{paddingTop:"10px"},children:"Randomized access credentials are recommended, and provided by default. You may use your own custom Access Key and Secret Key by replacing the default values. After creation of any Access Key, you will be given the opportunity to view and download the account credentials."}),(0,A.jsx)(H.Z,{sx:{paddingTop:"10px"},children:"Access Keys support programmatic access by applications. You cannot use a Access Key to log into the MinIO Console."})]}),(0,A.jsxs)(H.Z,{sx:{paddingBottom:"20px"},children:[(0,A.jsx)(ie,{icon:(0,A.jsx)(a.v42,{}),description:"Assign Access Policies"}),(0,A.jsx)(H.Z,{sx:{paddingTop:"10px"},children:"You can specify an optional JSON-formatted IAM policy to further restrict Access Key access to a subset of the actions and resources explicitly allowed for the parent user. Additional access beyond that of the parent user cannot be implemented through these policies."}),(0,A.jsx)(H.Z,{sx:{paddingTop:"10px"},children:"You cannot modify the optional Access Key IAM policy after saving."})]})]}),(0,A.jsx)(H.Z,{sx:{display:"flex",flexFlow:"column"}})]})},oe=s(60680),ce=function(){var e=(0,y.TL)(),t=(0,i.UO)(),s=(0,i.s0)(),r=(0,n.useState)(!1),o=(0,c.Z)(r,2),l=o[0],p=o[1],f=(0,n.useState)((0,d.zO)(20)),m=(0,c.Z)(f,2),j=m[0],v=m[1],Z=(0,n.useState)((0,d.zO)(40)),C=(0,c.Z)(Z,2),I=C[0],E=C[1],w=(0,n.useState)(!1),k=(0,c.Z)(w,2),_=k[0],K=k[1],U=(0,n.useState)(null),L=(0,c.Z)(U,2),F=L[0],T=L[1],R=(0,n.useState)(""),M=(0,c.Z)(R,2),N=M[0],O=M[1],D=(0,d.IO)(t.userName||"");(0,n.useEffect)((function(){l&&h.Z.invoke("POST","/api/v1/user/".concat((0,d.LL)(D),"/service-account-credentials"),{policy:N,accessKey:j,secretKey:I}).then((function(e){p(!1),T({accessKey:e.accessKey||"",secretKey:e.secretKey||"",url:e.url||""})})).catch((function(t){p(!1),e((0,g.Ih)(t))}))}),[l,p,e,N,D,j,I]),(0,n.useEffect)((function(){_&&h.Z.invoke("GET","/api/v1/user/".concat((0,d.LL)(D),"/policies")).then((function(e){O(JSON.stringify(JSON.parse(e.policy),null,4))})).catch((function(e){(0,g.Ih)(e)}))}),[_,D]);return(0,n.useEffect)((function(){e((0,g.Sc)("add_user_SA"))}),[]),(0,A.jsxs)(n.Fragment,{children:[F&&(0,A.jsx)(P.Z,{newServiceAccount:F,open:!0,closeModal:function(){T(null),s("".concat(x.gA.USERS,"/").concat((0,d.LL)(D)))},entity:"Access Key"}),(0,A.jsxs)(a.rjZ,{item:!0,xs:12,children:[(0,A.jsx)(b.Z,{label:(0,A.jsx)(a.hbI,{onClick:function(){return s("".concat(x.gA.USERS,"/").concat((0,d.LL)(D)))},label:"User Details - "+D}),actions:(0,A.jsx)(S.Z,{})}),(0,A.jsx)(a.Xgh,{children:(0,A.jsx)(a.ltY,{helpBox:(0,A.jsx)(re,{}),icon:(0,A.jsx)(a.tVY,{}),title:"Create Access Key for ".concat(D),children:(0,A.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),function(e){e.preventDefault(),p(!0)}(e)},children:[(0,A.jsx)(a.Wzg,{value:j,label:"Access Key",id:"accessKey",name:"accessKey",placeholder:"Enter Access Key",onChange:function(e){v(e.target.value)},startIcon:(0,A.jsx)(a.nO6,{})}),(0,A.jsx)(a.Wzg,{value:I,label:"Secret Key",id:"secretKey",name:"secretKey",type:"password",placeholder:"Enter Secret Key",onChange:function(e){E(e.target.value)},startIcon:(0,A.jsx)(a.tvm,{})}),(0,A.jsx)(a.rsf,{value:"serviceAccountPolicy",id:"serviceAccountPolicy",name:"serviceAccountPolicy",checked:_,onChange:function(e){K(e.target.checked)},label:"Restrict beyond user policy",description:"You can specify an optional JSON-formatted IAM policy to further restrict Access Key access to a subset of the actions and resources explicitly allowed for the parent user. Additional access beyond that of the parent user cannot be implemented through these policies."}),_&&(0,A.jsxs)(a.rjZ,{item:!0,xs:12,children:[(0,A.jsx)(a.xuv,{children:(0,A.jsx)(oe.Z,{children:"Current User Policy - edit the JSON to remove permissions for this Access Key"})}),(0,A.jsx)(a.rjZ,{item:!0,xs:12,sx:(0,se.Z)({},u.ID.formScrollable),children:(0,A.jsx)(ne.Z,{value:N,onChange:function(e){O(e)},editorHeight:"350px"})})]}),(0,A.jsxs)(a.rjZ,{item:!0,xs:12,sx:(0,se.Z)({},u.ID.modalButtonBar),children:[(0,A.jsx)(a.zxk,{id:"clear",type:"button",variant:"regular",onClick:function(){T(null),v(""),E("")},label:"Clear"}),(0,A.jsx)(a.zxk,{id:"create-sa",type:"submit",variant:"callAction",color:"primary",label:"Create"})]})]})})})]})]})},ae=function(){return(0,A.jsxs)(i.Z5,{children:[(0,A.jsx)(i.AW,{path:"add-user",element:(0,A.jsx)(te,{})}),(0,A.jsx)(i.AW,{path:":userName",element:(0,A.jsx)(W,{})}),(0,A.jsx)(i.AW,{path:"new-user-sa/:userName",element:(0,A.jsx)(ce,{})}),(0,A.jsx)(i.AW,{path:"/",element:(0,A.jsx)(I,{})}),(0,A.jsx)(i.AW,{element:(0,A.jsx)(r.Z,{})})]})}},3579:function(e,t,s){var n=s(64836);t.Z=void 0;var i=n(s(45649)),r=s(80184),o=(0,i.default)((0,r.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"}),"RemoveRedEye");t.Z=o},20165:function(e,t,s){var n=s(64836);t.Z=void 0;var i=n(s(45649)),r=s(80184),o=(0,i.default)((0,r.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}),"VisibilityOff");t.Z=o}}]); -//# sourceMappingURL=4563.7028e97b.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/4563.7028e97b.chunk.js.map b/portal-ui/build/static/js/4563.7028e97b.chunk.js.map deleted file mode 100644 index df3354dd6a..0000000000 --- a/portal-ui/build/static/js/4563.7028e97b.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/4563.7028e97b.chunk.js","mappings":"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","sources":["screens/Console/Account/DeleteServiceAccount.tsx","screens/Console/Common/CredentialsPrompt/CredentialItem.tsx","screens/Console/Common/CredentialsPrompt/CredentialsPrompt.tsx","screens/Console/Common/PanelTitle/PanelTitle.tsx","screens/Console/Common/WarningMessage/WarningMessage.tsx","screens/Console/Policies/PolicySelectors.tsx","screens/Console/Users/DeleteUser.tsx","screens/Console/Users/GroupsSelectors.tsx","screens/Console/Users/ListUsers.tsx","screens/Console/Users/ChangeUserGroups.tsx","screens/Console/Users/SetUserPolicies.tsx","screens/Console/Users/UserServiceAccountsPanel.tsx","screens/Console/Account/ChangeUserPasswordModal.tsx","screens/Console/Users/UserDetails.tsx","screens/Console/Users/AddUserHelpBox.tsx","screens/Console/Users/UserSelector.tsx","screens/Console/Users/PasswordSelector.tsx","screens/Console/Users/AddUserScreen.tsx","screens/Console/Users/AddUserServiceAccountHelpBox.tsx","screens/Console/Users/AddUserServiceAccountScreen.tsx","screens/Console/Users/Users.tsx","../node_modules/@mui/icons-material/RemoveRedEye.js","../node_modules/@mui/icons-material/VisibilityOff.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 } from \"react\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\n\ninterface IDeleteServiceAccountProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedServiceAccount: string | null;\n}\n\nconst DeleteServiceAccount = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedServiceAccount,\n}: IDeleteServiceAccountProps) => {\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\n if (!selectedServiceAccount) {\n return null;\n }\n\n const onConfirmDelete = () => {\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/service-accounts/${encodeURLString(selectedServiceAccount)}`,\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 Access Key{\" \"}\n \n {selectedServiceAccount}\n \n ?\n \n }\n />\n );\n};\n\nexport default DeleteServiceAccount;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Button, CopyIcon, InputLabel, ReadBox, Box } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface ICredentialsItem {\n label?: string;\n value?: string;\n}\n\nconst CredentialItem = ({ label = \"\", value = \"\" }: ICredentialsItem) => {\n const dispatch = useAppDispatch();\n\n return (\n \n {label}\n \n {\n dispatch(setModalSnackMessage(`${label} copied to clipboard`));\n }}\n style={{\n marginRight: \"5px\",\n width: \"28px\",\n height: \"28px\",\n padding: \"0px\",\n }}\n icon={}\n />\n \n }\n >\n {value}\n \n \n );\n};\n\nexport default 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, { Fragment } from \"react\";\nimport get from \"lodash/get\";\nimport styled from \"styled-components\";\nimport {\n Box,\n Button,\n DownloadIcon,\n ServiceAccountCredentialsIcon,\n WarnIcon,\n Grid,\n} from \"mds\";\nimport { NewServiceAccount } from \"./types\";\nimport ModalWrapper from \"../ModalWrapper/ModalWrapper\";\nimport CredentialItem from \"./CredentialItem\";\nimport TooltipWrapper from \"../TooltipWrapper/TooltipWrapper\";\nimport { modalStyleUtils } from \"../FormComponents/common/styleLibrary\";\n\nconst WarningBlock = styled.div(({ theme }) => ({\n color: \"red\", // TODO: Change this to themed color variant in mds\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\ninterface ICredentialsPromptProps {\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 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={`New ${entity} Created`}\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 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 { 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","// 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

    {title}

    \n
    {label}
    \n
    \n );\n};\n\nexport default withStyles(styles)(WarningMessage);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\n\nimport { Box, DataTable, Grid, ProgressBar } from \"mds\";\nimport { policySort } from \"../../../utils/sortFunctions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setSelectedPolicies } from \"../Users/AddUsersSlice\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"../../../api\";\n\ninterface ISelectPolicyProps {\n selectedPolicy?: string[];\n noTitle?: boolean;\n}\n\nconst PolicySelectors = ({ noTitle = false }: ISelectPolicyProps) => {\n const dispatch = useAppDispatch();\n // Local State\n const [records, setRecords] = useState([]);\n const [loading, isLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n\n const currentPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n\n const fetchPolicies = useCallback(() => {\n isLoading(true);\n\n api.policies\n .listPolicies()\n .then((res) => {\n const policies = res.data.policies ?? [];\n isLoading(false);\n setRecords(policies.sort(policySort));\n })\n .catch((err: ErrorResponseHandler) => {\n isLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }, [dispatch]);\n\n //Effects\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n if (loading) {\n fetchPolicies();\n }\n }, [loading, fetchPolicies]);\n\n const selectionChanged = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...currentPolicies]; // We clone the checkedUsers array\n\n if (checked) {\n // If the user has checked this field we need to push this to checkedUsersList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n // remove empty values\n elements = elements.filter((element) => element !== \"\");\n\n dispatch(setSelectedPolicies(elements));\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.name.includes(filter),\n );\n\n return (\n \n {loading && }\n {records.length > 0 ? (\n \n \n {\n setFilter(value);\n }}\n value={filter}\n label={!noTitle ? \"Assign Policies\" : \"\"}\n />\n \n\n \n \n ) : (\n \n No Policies Available\n \n )}\n \n );\n};\n\nexport default PolicySelectors;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { ConfirmDeleteIcon, Loader, DataTable } from \"mds\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport WarningMessage from \"../Common/WarningMessage/WarningMessage\";\nimport api from \"../../../common/api\";\nimport { useAppDispatch } from \"../../../store\";\n\ninterface IDeleteUserProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedUsers: string[] | null;\n}\n\nconst DeleteUser = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedUsers,\n}: IDeleteUserProps) => {\n const navigate = useNavigate();\n const dispatch = useAppDispatch();\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 const [loadingSA, setLoadingSA] = useState(true);\n const [hasSA, setHasSA] = useState(false);\n const [userSAList, setUserSAList] = useState([]);\n\n const userLoggedIn = localStorage.getItem(\"userLoggedIn\") || \"\";\n\n useEffect(() => {\n if (selectedUsers) {\n api\n .invoke(\"POST\", `/api/v1/users/service-accounts`, selectedUsers)\n .then((res) => {\n setUserSAList(res.userServiceAccountList);\n if (res.hasSA) {\n setHasSA(true);\n }\n setLoadingSA(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoadingSA(false);\n });\n }\n }, [selectedUsers, dispatch]);\n\n if (!selectedUsers) {\n return null;\n }\n const renderUsers = selectedUsers.map((user) => (\n
    \n {user}\n
    \n ));\n const viewAction = (selectionElement: any): void => {\n navigate(\n `${IAM_PAGES.USERS}/${encodeURLString(selectionElement.userName)}`,\n );\n onClose();\n };\n const tableActions = [\n {\n type: \"view\",\n onClick: viewAction,\n },\n ];\n\n const onConfirmDelete = () => {\n for (let user of selectedUsers) {\n if (user === userLoggedIn) {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Cannot delete currently logged in user\",\n detailedError: `Cannot delete currently logged in user ${userLoggedIn}`,\n }),\n );\n closeDeleteModalAndRefresh(true);\n } else {\n invokeDeleteApi(\"DELETE\", `/api/v1/user/${encodeURLString(user)}`);\n closeDeleteModalAndRefresh(true);\n navigate(`${IAM_PAGES.USERS}`);\n }\n }\n };\n\n interface userSACount {\n userName: string;\n numSAs: number;\n }\n\n const noSAtext =\n \"Are you sure you want to delete the following \" +\n selectedUsers.length +\n \" \" +\n \"user\" +\n (selectedUsers.length > 1 ? \"s?\" : \"?\");\n\n return (\n 1 ? \"s\" : \"\"}`}\n confirmText={\"Delete\"}\n isOpen={deleteOpen}\n titleIcon={}\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n loadingSA ? (\n \n ) : (\n \n {hasSA ? (\n \n \n \n \n ) : (\n \n {noSAtext}\n {renderUsers}\n \n )}\n \n )\n }\n />\n );\n};\n\nexport default DeleteUser;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useCallback, useEffect, useState, Fragment } from \"react\";\nimport get from \"lodash/get\";\n\nimport { Box, DataTable, Grid, ProgressBar } from \"mds\";\nimport { stringSort } from \"../../../utils/sortFunctions\";\nimport { GroupsList } from \"../Groups/types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport api from \"../../../common/api\";\nimport SearchBox from \"../Common/SearchBox\";\n\ninterface IGroupsProps {\n selectedGroups: string[];\n setSelectedGroups: any;\n}\n\nconst GroupsSelectors = ({\n selectedGroups,\n setSelectedGroups,\n}: IGroupsProps) => {\n const dispatch = useAppDispatch();\n // Local State\n const [records, setRecords] = useState([]);\n const [loading, isLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n\n const fetchGroups = useCallback(() => {\n api\n .invoke(\"GET\", `/api/v1/groups`)\n .then((res: GroupsList) => {\n let groups = get(res, \"groups\", []);\n\n if (!groups) {\n groups = [];\n }\n setRecords(groups.sort(stringSort));\n isLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(err));\n isLoading(false);\n });\n }, [dispatch]);\n\n //Effects\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n if (loading) {\n fetchGroups();\n }\n }, [loading, fetchGroups]);\n\n const selGroups = !selectedGroups ? [] : selectedGroups;\n\n const selectionChanged = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selGroups]; // We clone the selectedGroups array\n\n if (checked) {\n // If the user has checked this field we need to push this to selectedGroupsList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedGroups(elements);\n\n return elements;\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.includes(filter),\n );\n\n return (\n \n {loading && }\n {records !== null && records.length > 0 ? (\n \n \n \n \n \n \n ) : (\n \n No Groups Available\n \n )}\n \n );\n};\n\nexport default GroupsSelectors;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n AddIcon,\n Button,\n DeleteIcon,\n GroupsIcon,\n HelpBox,\n PageLayout,\n UsersIcon,\n DataTable,\n Grid,\n ProgressBar,\n} from \"mds\";\n\nimport { User, UsersList } from \"./types\";\nimport { usersSort } from \"../../../utils/sortFunctions\";\nimport { actionsTray } from \"../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport {\n addUserToGroupPermissions,\n CONSOLE_UI_RESOURCE,\n deleteUserPermissions,\n IAM_PAGES,\n IAM_SCOPES,\n listUsersPermissions,\n permissionTooltipHelper,\n S3_ALL_RESOURCES,\n viewUserPermissions,\n} from \"../../../common/SecureComponent/permissions\";\nimport api from \"../../../common/api\";\nimport AButton from \"../Common/AButton/AButton\";\nimport SearchBox from \"../Common/SearchBox\";\nimport withSuspense from \"../Common/Components/withSuspense\";\n\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../common/SecureComponent\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst DeleteUser = withSuspense(React.lazy(() => import(\"./DeleteUser\")));\nconst AddToGroup = withSuspense(React.lazy(() => import(\"./BulkAddToGroup\")));\n\nconst ListUsers = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [records, setRecords] = useState([]);\n const [loading, setLoading] = useState(true);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [addGroupOpen, setAddGroupOpen] = useState(false);\n const [filter, setFilter] = useState(\"\");\n const [checkedUsers, setCheckedUsers] = useState([]);\n\n const displayListUsers = hasPermission(\n CONSOLE_UI_RESOURCE,\n listUsersPermissions,\n );\n\n const viewUser = hasPermission(CONSOLE_UI_RESOURCE, viewUserPermissions);\n\n const addUserToGroup = hasPermission(\n CONSOLE_UI_RESOURCE,\n addUserToGroupPermissions,\n );\n\n const deleteUser = hasPermission(CONSOLE_UI_RESOURCE, deleteUserPermissions);\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n if (refresh) {\n setLoading(true);\n setCheckedUsers([]);\n }\n };\n\n const closeAddGroupBulk = (unCheckAll: boolean = false) => {\n setAddGroupOpen(false);\n if (unCheckAll) {\n setCheckedUsers([]);\n }\n };\n\n useEffect(() => {\n if (loading) {\n if (displayListUsers) {\n api\n .invoke(\"GET\", `/api/v1/users`)\n .then((res: UsersList) => {\n const users = res.users === null ? [] : res.users;\n\n setLoading(false);\n setRecords(users.sort(usersSort));\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setErrorSnackMessage(err));\n });\n } else {\n setLoading(false);\n }\n }\n }, [loading, dispatch, displayListUsers]);\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.accessKey.includes(filter),\n );\n\n const selectionChanged = (e: React.ChangeEvent) => {\n const { target: { value = \"\", checked = false } = {} } = e;\n\n let elements: string[] = [...checkedUsers]; // We clone the checkedUsers array\n\n if (checked) {\n // If the user has checked this field we need to push this to checkedUsersList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n\n setCheckedUsers(elements);\n\n return elements;\n };\n\n const viewAction = (selectionElement: any): void => {\n navigate(\n `${IAM_PAGES.USERS}/${encodeURLString(selectionElement.accessKey)}`,\n );\n };\n\n const tableActions = [\n {\n type: \"view\",\n onClick: viewAction,\n disableButtonFunction: () => !viewUser,\n },\n {\n type: \"edit\",\n onClick: viewAction,\n disableButtonFunction: () => !viewUser,\n },\n ];\n\n useEffect(() => {\n dispatch(setHelpName(\"list_users\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {deleteOpen && (\n {\n closeDeleteModalAndRefresh(refresh);\n }}\n />\n )}\n {addGroupOpen && (\n {\n closeAddGroupBulk(close);\n }}\n />\n )}\n } />\n\n \n \n \n \n \n \n {\n setDeleteOpen(true);\n }}\n label={\"Delete Selected\"}\n icon={}\n disabled={checkedUsers.length === 0}\n variant={\"secondary\"}\n aria-label=\"delete-selected-users\"\n />\n \n \n \n \n }\n disabled={checkedUsers.length <= 0}\n onClick={() => {\n if (checkedUsers.length > 0) {\n setAddGroupOpen(true);\n }\n }}\n variant={\"regular\"}\n />\n \n \n \n \n }\n onClick={() => {\n navigate(`${IAM_PAGES.USER_ADD}`);\n }}\n variant={\"callAction\"}\n disabled={\n !hasPermission(\n \"console\",\n [\n IAM_SCOPES.ADMIN_CREATE_USER,\n IAM_SCOPES.ADMIN_LIST_USER_POLICIES,\n IAM_SCOPES.ADMIN_LIST_GROUPS,\n IAM_SCOPES.ADMIN_ATTACH_USER_OR_GROUP_POLICY,\n ],\n true,\n )\n }\n />\n \n \n \n\n {loading && }\n {!loading && (\n \n {records.length > 0 && (\n \n \n \n \n \n \n }\n help={\n \n A MinIO user consists of a unique access key (username)\n and corresponding secret key (password). Clients must\n authenticate their identity by specifying both a valid\n access key (username) and the corresponding secret key\n (password) of an existing MinIO user.\n
    \n Groups provide a simplified method for managing shared\n permissions among users with common access patterns and\n workloads.\n
    \n
    \n Users inherit access permissions to data and resources\n through the groups they belong to.\n
    \n MinIO uses Policy-Based Access Control (PBAC) to define\n the authorized actions and resources to which an\n authenticated user has access. Each policy describes one\n or more actions and conditions that outline the\n permissions of a user or group of users.\n
    \n
    \n Each user can access only those resources and operations\n which are explicitly granted by the built-in role. MinIO\n denies access to any other resource or action by\n default.\n
    \n
    \n You can learn more at our{\" \"}\n \n documentation\n \n .\n
    \n }\n />\n
    \n )}\n {records.length === 0 && (\n \n \n }\n help={\n \n A MinIO user consists of a unique access key\n (username) and corresponding secret key (password).\n Clients must authenticate their identity by specifying\n both a valid access key (username) and the\n corresponding secret key (password) of an existing\n MinIO user.\n
    \n Groups provide a simplified method for managing shared\n permissions among users with common access patterns\n and workloads.\n
    \n
    \n Users inherit access permissions to data and resources\n through the groups they belong to.\n
    \n MinIO uses Policy-Based Access Control (PBAC) to\n define the authorized actions and resources to which\n an authenticated user has access. Each policy\n describes one or more actions and conditions that\n outline the permissions of a user or group of users.\n
    \n
    \n Each user can access only those resources and\n operations which are explicitly granted by the\n built-in role. MinIO denies access to any other\n resource or action by default.\n \n
    \n
    \n To get started,{\" \"}\n {\n navigate(`${IAM_PAGES.USER_ADD}`);\n }}\n >\n Create a User\n \n .\n \n
    \n }\n />\n
    \n
    \n )}\n
    \n )}\n
    \n
    \n
    \n );\n};\n\nexport default ListUsers;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useCallback, useEffect, useState, Fragment } from \"react\";\n\nimport {\n AddMembersToGroupIcon,\n Button,\n FormLayout,\n Grid,\n Box,\n ProgressBar,\n} from \"mds\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport api from \"../../../common/api\";\nimport GroupsSelectors from \"./GroupsSelectors\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\n\ninterface IChangeUserGroupsContentProps {\n closeModalAndRefresh: () => void;\n selectedUser: string;\n open: boolean;\n}\n\nconst ChangeUserGroups = ({\n closeModalAndRefresh,\n selectedUser,\n open,\n}: IChangeUserGroupsContentProps) => {\n const dispatch = useAppDispatch();\n const [addLoading, setAddLoading] = useState(false);\n const [accessKey, setAccessKey] = useState(\"\");\n const [secretKey, setSecretKey] = useState(\"\");\n const [enabled, setEnabled] = useState(false);\n const [selectedGroups, setSelectedGroups] = useState([]);\n\n const getUserInformation = useCallback(() => {\n if (!selectedUser) {\n return null;\n }\n\n api\n .invoke(\"GET\", `/api/v1/user/${encodeURLString(selectedUser)}`)\n .then((res) => {\n setAddLoading(false);\n setAccessKey(res.accessKey);\n setSelectedGroups(res.memberOf || []);\n setEnabled(res.status === \"enabled\");\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }, [selectedUser, dispatch]);\n\n useEffect(() => {\n if (selectedUser === null) {\n setAccessKey(\"\");\n setSecretKey(\"\");\n setSelectedGroups([]);\n } else {\n getUserInformation();\n }\n }, [selectedUser, getUserInformation]);\n\n const saveRecord = (event: React.FormEvent) => {\n event.preventDefault();\n\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n if (selectedUser !== null) {\n api\n .invoke(\"PUT\", `/api/v1/user/${encodeURLString(selectedUser)}`, {\n status: enabled ? \"enabled\" : \"disabled\",\n groups: selectedGroups,\n })\n .then((_) => {\n setAddLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n } else {\n api\n .invoke(\"POST\", \"/api/v1/users\", {\n accessKey,\n secretKey,\n groups: selectedGroups,\n })\n .then((_) => {\n setAddLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }\n };\n\n const resetForm = () => {\n if (selectedUser !== null) {\n setSelectedGroups([]);\n return;\n }\n setAccessKey(\"\");\n setSecretKey(\"\");\n setSelectedGroups([]);\n };\n\n const sendEnabled =\n accessKey.trim() !== \"\" &&\n ((secretKey.trim() !== \"\" && selectedUser === null) ||\n selectedUser !== null);\n return (\n {\n closeModalAndRefresh();\n }}\n modalOpen={open}\n title={\"Set Groups\"}\n titleIcon={}\n >\n \n ) => {\n saveRecord(e);\n }}\n >\n \n {\n setSelectedGroups(elements);\n }}\n />\n \n \n \n\n \n \n {addLoading && (\n \n \n \n )}\n \n \n \n );\n};\n\nexport default ChangeUserGroups;\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 { Box, Button, FormLayout, IAMPoliciesIcon, ProgressBar } from \"mds\";\n\nimport { useSelector } from \"react-redux\";\nimport Grid from \"@mui/material/Grid\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { IPolicyItem } from \"../Users/types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport api from \"../../../common/api\";\nimport PolicySelectors from \"../Policies/PolicySelectors\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setSelectedPolicies } from \"./AddUsersSlice\";\n\ninterface ISetUserPoliciesProps {\n closeModalAndRefresh: () => void;\n selectedUser: string;\n currentPolicies: IPolicyItem[];\n open: boolean;\n}\n\nconst SetUserPolicies = ({\n closeModalAndRefresh,\n selectedUser,\n currentPolicies,\n open,\n}: ISetUserPoliciesProps) => {\n const dispatch = useAppDispatch();\n //Local States\n const [loading, setLoading] = useState(false);\n const [actualPolicy, setActualPolicy] = useState([]);\n\n const statePolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n\n const SetUserPoliciesAction = () => {\n let entity = \"user\";\n let value = selectedUser;\n\n setLoading(true);\n\n api\n .invoke(\"PUT\", `/api/v1/set-policy`, {\n name: statePolicies,\n entityName: value,\n entityType: entity,\n })\n .then(() => {\n setLoading(false);\n dispatch(setSelectedPolicies([]));\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n };\n\n const resetSelection = () => {\n dispatch(setSelectedPolicies(actualPolicy));\n };\n\n useEffect(() => {\n if (open) {\n const userPolicy: string[] = currentPolicies.map((pol) => {\n return pol.policy;\n });\n setActualPolicy(userPolicy);\n dispatch(setSelectedPolicies(userPolicy));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, selectedUser]);\n\n return (\n {\n closeModalAndRefresh();\n }}\n modalOpen={open}\n title=\"Set Policies\"\n titleIcon={}\n >\n \n \n \n \n \n \n \n {loading && (\n \n \n \n )}\n \n );\n};\n\nexport default SetUserPolicies;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { AddIcon, Box, Button, DataTable, DeleteIcon, SectionTitle } from \"mds\";\nimport api from \"../../../common/api\";\nimport { NewServiceAccount } from \"../Common/CredentialsPrompt/types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport DeleteServiceAccount from \"../Account/DeleteServiceAccount\";\nimport CredentialsPrompt from \"../Common/CredentialsPrompt/CredentialsPrompt\";\n\nimport DeleteMultipleServiceAccounts from \"./DeleteMultipleServiceAccounts\";\nimport { selectSAs } from \"../Configurations/utils\";\nimport ServiceAccountPolicy from \"../Account/ServiceAccountPolicy\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_SCOPES,\n} from \"../../../common/SecureComponent/permissions\";\nimport { SecureComponent } from \"../../../common/SecureComponent\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport {\n setErrorSnackMessage,\n setHelpName,\n setSnackBarMessage,\n} from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport { ServiceAccounts } from \"../../../api/consoleApi\";\nimport { usersSort } from \"../../../utils/sortFunctions\";\nimport { ACCOUNT_TABLE_COLUMNS } from \"../Account/AccountUtils\";\n\ninterface IUserServiceAccountsProps {\n user: string;\n hasPolicy: boolean;\n}\n\nconst UserServiceAccountsPanel = ({\n user,\n hasPolicy,\n}: IUserServiceAccountsProps) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [records, setRecords] = useState([]);\n const [loading, setLoading] = useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedServiceAccount, setSelectedServiceAccount] = useState<\n string | null\n >(null);\n const [showNewCredentials, setShowNewCredentials] = useState(false);\n const [newServiceAccount, setNewServiceAccount] =\n useState(null);\n const [selectedSAs, setSelectedSAs] = useState([]);\n const [deleteMultipleOpen, setDeleteMultipleOpen] = useState(false);\n const [policyOpen, setPolicyOpen] = useState(false);\n\n useEffect(() => {\n fetchRecords();\n }, []);\n\n useEffect(() => {\n if (loading) {\n api\n .invoke(\"GET\", `/api/v1/user/${encodeURLString(user)}/service-accounts`)\n .then((res: ServiceAccounts) => {\n setLoading(false);\n const sortedRows = res.sort(usersSort);\n setRecords(sortedRows);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, setLoading, setRecords, user, dispatch]);\n\n const fetchRecords = () => {\n setLoading(true);\n };\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n\n if (refresh) {\n fetchRecords();\n }\n };\n\n const closeDeleteMultipleModalAndRefresh = (refresh: boolean) => {\n setDeleteMultipleOpen(false);\n if (refresh) {\n dispatch(setSnackBarMessage(`Access Keys deleted successfully.`));\n setSelectedSAs([]);\n setLoading(true);\n }\n };\n\n const closeCredentialsModal = () => {\n setShowNewCredentials(false);\n setNewServiceAccount(null);\n };\n\n const policyModalOpen = (selectedServiceAccount: string) => {\n setSelectedServiceAccount(selectedServiceAccount);\n setPolicyOpen(true);\n };\n\n const confirmDeleteServiceAccount = (selectedServiceAccount: string) => {\n setSelectedServiceAccount(selectedServiceAccount);\n setDeleteOpen(true);\n };\n\n const closePolicyModal = () => {\n setPolicyOpen(false);\n setLoading(true);\n };\n\n const tableActions = [\n {\n type: \"view\",\n onClick: (value: any) => {\n if (value) {\n policyModalOpen(value.accessKey);\n }\n },\n },\n {\n type: \"delete\",\n onClick: (value: any) => {\n if (value) {\n confirmDeleteServiceAccount(value.accessKey);\n }\n },\n },\n ];\n\n useEffect(() => {\n dispatch(setHelpName(\"user_details_accounts\"));\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return (\n \n {deleteOpen && (\n {\n closeDeleteModalAndRefresh(refresh);\n }}\n />\n )}\n {deleteMultipleOpen && (\n \n )}\n {showNewCredentials && (\n {\n closeCredentialsModal();\n }}\n entity=\"Access Key\"\n />\n )}\n {policyOpen && (\n \n )}\n\n \n \n {\n setDeleteMultipleOpen(true);\n }}\n label={\"Delete Selected\"}\n icon={}\n disabled={selectedSAs.length === 0}\n variant={\"secondary\"}\n />\n \n \n \n }\n onClick={() => {\n navigate(\n `/identity/users/new-user-sa/${encodeURLString(user)}`,\n );\n }}\n disabled={!hasPolicy}\n />\n \n \n \n }\n >\n Access Keys\n \n\n selectSAs(e, setSelectedSAs, selectedSAs)}\n selectedItems={selectedSAs}\n isLoading={loading}\n records={records}\n idField=\"accessKey\"\n />\n \n );\n};\n\nexport default UserServiceAccountsPanel;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport {\n Box,\n Button,\n ChangePasswordIcon,\n FormLayout,\n InputBox,\n ProgressBar,\n} from \"mds\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { api } from \"api\";\nimport { ChangeUserPasswordRequest } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\n\ninterface IChangeUserPasswordProps {\n open: boolean;\n userName: string;\n closeModal: () => void;\n}\n\nconst ChangeUserPassword = ({\n open,\n userName,\n closeModal,\n}: IChangeUserPasswordProps) => {\n const dispatch = useAppDispatch();\n const [newPassword, setNewPassword] = useState(\"\");\n const [reNewPassword, setReNewPassword] = useState(\"\");\n const [loading, setLoading] = useState(false);\n\n const changeUserPassword = (event: React.FormEvent) => {\n event.preventDefault();\n\n if (loading) {\n return;\n }\n setLoading(true);\n\n if (newPassword.length < 8) {\n dispatch(\n setModalErrorSnackMessage({\n errorMessage: \"Passwords must be at least 8 characters long\",\n detailedError: \"\",\n }),\n );\n setLoading(false);\n return;\n }\n\n let request: ChangeUserPasswordRequest = {\n selectedUser: userName,\n newSecretKey: newPassword,\n };\n\n api.account\n .changeUserPassword(request)\n .then((res) => {\n setLoading(false);\n setNewPassword(\"\");\n setReNewPassword(\"\");\n closeModal();\n })\n .catch((err) => {\n setLoading(false);\n setNewPassword(\"\");\n setReNewPassword(\"\");\n dispatch(setModalErrorSnackMessage(errorToHandler(err)));\n });\n };\n\n return open ? (\n {\n setNewPassword(\"\");\n setReNewPassword(\"\");\n closeModal();\n }}\n titleIcon={}\n >\n ) => {\n changeUserPassword(e);\n }}\n >\n \n \n Change password for: {userName}\n \n ) => {\n setNewPassword(event.target.value);\n }}\n label=\"New Password\"\n type=\"password\"\n value={newPassword}\n />\n ) => {\n setReNewPassword(event.target.value);\n }}\n label=\"Type New Password Again\"\n type=\"password\"\n value={reNewPassword}\n />\n \n 0 && newPassword === reNewPassword)\n }\n label={\"Save\"}\n />\n \n {loading && (\n \n \n \n )}\n \n \n \n ) : null;\n};\n\nexport default ChangeUserPassword;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { useNavigate, useParams } from \"react-router-dom\";\nimport {\n AddIcon,\n BackLink,\n Box,\n Button,\n DataTable,\n Grid,\n IAMPoliciesIcon,\n PageLayout,\n PasswordKeyIcon,\n ScreenTitle,\n SectionTitle,\n Switch,\n Tabs,\n TrashIcon,\n UsersIcon,\n} from \"mds\";\nimport { IPolicyItem } from \"./types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { decodeURLString, encodeURLString } from \"../../../common/utils\";\nimport { setHelpName, setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport {\n assignGroupPermissions,\n assignIAMPolicyPermissions,\n CONSOLE_UI_RESOURCE,\n deleteUserPermissions,\n disableUserPermissions,\n editServiceAccountPermissions,\n enableDisableUserPermissions,\n enableUserPermissions,\n getGroupPermissions,\n IAM_PAGES,\n permissionTooltipHelper,\n} from \"../../../common/SecureComponent/permissions\";\nimport { hasPermission } from \"../../../common/SecureComponent\";\nimport { useAppDispatch } from \"../../../store\";\nimport { policyDetailsSort } from \"../../../utils/sortFunctions\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport api from \"../../../common/api\";\nimport ChangeUserGroups from \"./ChangeUserGroups\";\nimport SetUserPolicies from \"./SetUserPolicies\";\nimport UserServiceAccountsPanel from \"./UserServiceAccountsPanel\";\nimport ChangeUserPasswordModal from \"../Account/ChangeUserPasswordModal\";\nimport DeleteUser from \"./DeleteUser\";\n\ninterface IGroupItem {\n group: string;\n}\n\nconst UserDetails = () => {\n const dispatch = useAppDispatch();\n const params = useParams();\n const navigate = useNavigate();\n\n const [loading, setLoading] = useState(false);\n const [addGroupOpen, setAddGroupOpen] = useState(false);\n const [policyOpen, setPolicyOpen] = useState(false);\n const [addLoading, setAddLoading] = useState(false);\n const [enabled, setEnabled] = useState(false);\n const [selectedGroups, setSelectedGroups] = useState([]);\n const [currentGroups, setCurrentGroups] = useState([]);\n const [currentPolicies, setCurrentPolicies] = useState([]);\n const [changeUserPasswordModalOpen, setChangeUserPasswordModalOpen] =\n useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [hasPolicy, setHasPolicy] = useState(false);\n const [selectedTab, setSelectedTab] = useState(\"groups\");\n\n const enableEnabled =\n hasPermission(CONSOLE_UI_RESOURCE, enableUserPermissions) && !enabled;\n const disableEnabled =\n hasPermission(CONSOLE_UI_RESOURCE, disableUserPermissions) && enabled;\n\n const userName = decodeURLString(params.userName || \"\");\n\n const changeUserPassword = () => {\n setChangeUserPasswordModalOpen(true);\n };\n\n const deleteUser = () => {\n setDeleteOpen(true);\n };\n\n const userLoggedIn = localStorage.getItem(\"userLoggedIn\") || \"\";\n const canAssignPolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n assignIAMPolicyPermissions,\n true,\n );\n const canAssignGroup = hasPermission(\n CONSOLE_UI_RESOURCE,\n assignGroupPermissions,\n true,\n );\n\n const viewGroup = hasPermission(CONSOLE_UI_RESOURCE, getGroupPermissions);\n\n const getUserInformation = useCallback(() => {\n if (userName === \"\") {\n return null;\n }\n setLoading(true);\n api\n .invoke(\"GET\", `/api/v1/user/${encodeURLString(userName)}`)\n .then((res) => {\n setAddLoading(false);\n const memberOf = res.memberOf || [];\n setSelectedGroups(memberOf);\n\n const currentGroups: IGroupItem[] = memberOf.map((group: string) => {\n return {\n group: group,\n };\n });\n\n setCurrentGroups(currentGroups);\n const currentPolicies: IPolicyItem[] = res.policy.map(\n (policy: string) => {\n return {\n policy: policy,\n };\n },\n );\n\n currentPolicies.sort(policyDetailsSort);\n\n setCurrentPolicies(currentPolicies);\n setEnabled(res.status === \"enabled\");\n setHasPolicy(res.hasPolicy);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n setLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }, [userName, dispatch]);\n\n const saveRecord = (isEnabled: boolean) => {\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n api\n .invoke(\"PUT\", `/api/v1/user/${encodeURLString(userName)}`, {\n status: isEnabled ? \"enabled\" : \"disabled\",\n groups: selectedGroups,\n })\n .then((_) => {\n setAddLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"user_details_groups\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n getUserInformation();\n }, [getUserInformation]);\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n if (refresh) {\n getUserInformation();\n }\n };\n\n const groupViewAction = (group: any) => {\n navigate(`${IAM_PAGES.GROUPS}/${encodeURLString(group.group)}`);\n };\n\n const groupTableActions = [\n {\n type: \"view\",\n onClick: groupViewAction,\n disableButtonFunction: () => !viewGroup,\n },\n ];\n\n return (\n \n {addGroupOpen && (\n {\n setAddGroupOpen(false);\n getUserInformation();\n }}\n />\n )}\n {policyOpen && (\n {\n setPolicyOpen(false);\n getUserInformation();\n }}\n />\n )}\n {deleteOpen && (\n {\n closeDeleteModalAndRefresh(refresh);\n }}\n />\n )}\n {changeUserPasswordModalOpen && (\n setChangeUserPasswordModalOpen(false)}\n />\n )}\n \n navigate(IAM_PAGES.USERS)}\n />\n \n }\n actions={}\n />\n \n \n \n }\n title={userName}\n subTitle={\"\"}\n actions={\n \n \n User Status:\n \n \n {enabled ? \"Enabled\" : \"Disabled\"}\n \n \n {\n setEnabled(!enabled);\n saveRecord(!enabled);\n }}\n switchOnly\n disabled={!enableEnabled && !disableEnabled}\n />\n \n \n }\n variant={\"secondary\"}\n disabled={\n !hasPermission(\n CONSOLE_UI_RESOURCE,\n deleteUserPermissions,\n ) || userLoggedIn === userName\n }\n />\n \n\n \n }\n variant={\"regular\"}\n />\n \n \n }\n sx={{ marginBottom: 15 }}\n />\n \n\n \n \n \n dispatch(setHelpName(\"user_details_groups\"))\n }\n >\n \n {\n setAddGroupOpen(true);\n }}\n icon={}\n variant={\"callAction\"}\n disabled={!canAssignGroup}\n />\n \n }\n >\n Groups\n \n \n \n dispatch(setHelpName(\"user_details_groups\"))\n }\n >\n \n \n \n ),\n },\n {\n tabConfig: {\n id: \"service_accounts\",\n label: \"Service Accounts\",\n disabled: !hasPermission(\n CONSOLE_UI_RESOURCE,\n editServiceAccountPermissions,\n ),\n },\n content: (\n \n ),\n },\n {\n tabConfig: {\n id: \"policies\",\n label: \"Policies\",\n disabled: !canAssignPolicy,\n },\n content: (\n \n \n dispatch(setHelpName(\"user_details_policies\"))\n }\n >\n \n {\n setPolicyOpen(true);\n }}\n icon={}\n variant={\"callAction\"}\n disabled={!canAssignPolicy}\n />\n \n }\n >\n Policies\n \n \n \n {\n navigate(\n `${IAM_PAGES.POLICIES}/${encodeURLString(\n policy.policy,\n )}`,\n );\n },\n },\n ]}\n columns={[{ label: \"Name\", elementKey: \"policy\" }]}\n isLoading={loading}\n records={currentPolicies}\n entityName=\"Policies\"\n idField=\"policy\"\n />\n \n \n ),\n },\n ]}\n />\n \n \n \n \n );\n};\n\nexport default UserDetails;\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 { Box } from \"@mui/material\";\nimport {\n ChangeAccessPolicyIcon,\n GroupsIcon,\n HelpIconFilled,\n UsersIcon,\n} from \"mds\";\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 AddUserHelpBox = () => {\n return (\n \n \n \n
    Learn more about the Users feature
    \n \n \n A MinIO user consists of a unique access key (username) and\n corresponding secret key (password). Clients must authenticate their\n identity by specifying both a valid access key (username) and the\n corresponding secret key (password) of an existing MinIO user.\n
    \n
    \n Each user can have one or more assigned policies that explicitly list\n the actions and resources to which that user has access. Users can also\n inherit policies from the groups in which they have membership.\n
    \n
    \n\n \n } description={`Create Users`} />\n } description={`Manage Groups`} />\n }\n description={`Assign Policies`}\n />\n \n \n );\n};\n\nexport default AddUserHelpBox;\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 { setUserName } from \"./AddUsersSlice\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { InputBox } from \"mds\";\n\nconst UserSelector = () => {\n const dispatch = useAppDispatch();\n const userName = useSelector((state: AppState) => state.createUser.userName);\n return (\n ) => {\n dispatch(setUserName(e.target.value));\n }}\n />\n );\n};\nexport default UserSelector;\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 { InputBox } from \"mds\";\nimport { setSecretKey, setShowPassword } from \"./AddUsersSlice\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\n\nconst PasswordSelector = () => {\n const dispatch = useAppDispatch();\n const showPassword = useSelector(\n (state: AppState) => state.createUser.showPassword,\n );\n const secretKey = useSelector(\n (state: AppState) => state.createUser.secretKey,\n );\n return (\n ) => {\n dispatch(setSecretKey(e.target.value));\n }}\n autoComplete=\"current-password\"\n overlayIcon={showPassword ? : }\n overlayAction={() => dispatch(setShowPassword(!showPassword))}\n />\n );\n};\nexport default PasswordSelector;\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 } from \"react\";\nimport {\n BackLink,\n Button,\n CreateUserIcon,\n FormLayout,\n Grid,\n PageLayout,\n ProgressBar,\n} from \"mds\";\nimport { createUserAsync, resetFormAsync } from \"./thunk/AddUsersThunk\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\n\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport { useNavigate } from \"react-router-dom\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { useSelector } from \"react-redux\";\nimport {\n setAddLoading,\n setSelectedGroups,\n setSendEnabled,\n} from \"./AddUsersSlice\";\nimport AddUserHelpBox from \"./AddUserHelpBox\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport PolicySelectors from \"../Policies/PolicySelectors\";\nimport UserSelector from \"./UserSelector\";\nimport PasswordSelector from \"./PasswordSelector\";\nimport GroupsSelectors from \"./GroupsSelectors\";\n\nconst AddUser = () => {\n const dispatch = useAppDispatch();\n const selectedPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n const selectedGroups = useSelector(\n (state: AppState) => state.createUser.selectedGroups,\n );\n const addLoading = useSelector(\n (state: AppState) => state.createUser.addLoading,\n );\n const sendEnabled = useSelector(\n (state: AppState) => state.createUser.sendEnabled,\n );\n const secretKeylength = useSelector(\n (state: AppState) => state.createUser.secretKeylength,\n );\n const navigate = useNavigate();\n dispatch(setSendEnabled());\n\n const saveRecord = (event: React.FormEvent) => {\n event.preventDefault();\n if (secretKeylength < 8) {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Passwords must be at least 8 characters long\",\n detailedError: \"\",\n }),\n );\n dispatch(setAddLoading(false));\n return;\n }\n if (addLoading) {\n return;\n }\n dispatch(setAddLoading(true));\n dispatch(createUserAsync())\n .unwrap() // <-- async Thunk returns a promise, that can be 'unwrapped')\n .then(() => navigate(`${IAM_PAGES.USERS}`));\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"add_user\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n \n navigate(IAM_PAGES.USERS)}\n />\n }\n actions={}\n />\n \n }\n helpBox={}\n >\n ) => {\n saveRecord(e);\n }}\n >\n \n \n \n {\n dispatch(setSelectedGroups(elements));\n }}\n />\n {addLoading && (\n \n \n \n )}\n\n \n {\n dispatch(resetFormAsync());\n }}\n label={\"Clear\"}\n />\n\n \n \n \n \n \n \n \n );\n};\n\nexport default AddUser;\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 { Box } from \"@mui/material\";\nimport {\n HelpIconFilled,\n IAMPoliciesIcon,\n PasswordKeyIcon,\n ServiceAccountIcon,\n} from \"mds\";\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 AddUserServiceAccountHelpBox = () => {\n return (\n \n \n \n
    Learn more about Access Keys
    \n \n \n \n }\n description={`Create Access Keys`}\n />\n \n Access Keys inherit the policies explicitly attached to the parent\n user, and the policies attached to each group in which the parent\n user has membership.\n \n \n \n }\n description={`Assign Custom Credentials`}\n />\n \n Randomized access credentials are recommended, and provided by\n default. You may use your own custom Access Key and Secret Key by\n replacing the default values. After creation of any Access Key, you\n will be given the opportunity to view and download the account\n credentials.\n \n \n Access Keys support programmatic access by applications. You cannot\n use a Access Key to log into the MinIO Console.\n \n \n \n }\n description={`Assign Access Policies`}\n />\n \n You can specify an optional JSON-formatted IAM policy to further\n restrict Access Key access to a subset of the actions and resources\n explicitly allowed for the parent user. Additional access beyond\n that of the parent user cannot be implemented through these\n policies.\n \n \n You cannot modify the optional Access Key IAM policy after saving.\n \n \n \n \n \n );\n};\n\nexport default AddUserServiceAccountHelpBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport {\n BackLink,\n Box,\n Button,\n FormLayout,\n Grid,\n InputBox,\n PageLayout,\n PasswordKeyIcon,\n ServiceAccountCredentialsIcon,\n ServiceAccountIcon,\n Switch,\n} from \"mds\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { NewServiceAccount } from \"../Common/CredentialsPrompt/types\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport {\n decodeURLString,\n encodeURLString,\n getRandomString,\n} from \"../../../common/utils\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport api from \"../../../../src/common/api\";\nimport CredentialsPrompt from \"../Common/CredentialsPrompt/CredentialsPrompt\";\nimport AddUserServiceAccountHelpBox from \"./AddUserServiceAccountHelpBox\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport PanelTitle from \"../Common/PanelTitle/PanelTitle\";\n\nconst AddServiceAccount = () => {\n const dispatch = useAppDispatch();\n const params = useParams();\n const navigate = useNavigate();\n\n const [addSending, setAddSending] = useState(false);\n const [accessKey, setAccessKey] = useState(getRandomString(20));\n const [secretKey, setSecretKey] = useState(getRandomString(40));\n const [isRestrictedByPolicy, setIsRestrictedByPolicy] =\n useState(false);\n const [newServiceAccount, setNewServiceAccount] =\n useState(null);\n const [policyJSON, setPolicyJSON] = useState(\"\");\n\n const userName = decodeURLString(params.userName || \"\");\n\n useEffect(() => {\n if (addSending) {\n api\n .invoke(\n \"POST\",\n `/api/v1/user/${encodeURLString(\n userName,\n )}/service-account-credentials`,\n {\n policy: policyJSON,\n accessKey: accessKey,\n secretKey: secretKey,\n },\n )\n .then((res) => {\n setAddSending(false);\n setNewServiceAccount({\n accessKey: res.accessKey || \"\",\n secretKey: res.secretKey || \"\",\n url: res.url || \"\",\n });\n })\n .catch((err: ErrorResponseHandler) => {\n setAddSending(false);\n dispatch(setErrorSnackMessage(err));\n });\n }\n }, [\n addSending,\n setAddSending,\n dispatch,\n policyJSON,\n userName,\n accessKey,\n secretKey,\n ]);\n\n useEffect(() => {\n if (isRestrictedByPolicy) {\n api\n .invoke(\"GET\", `/api/v1/user/${encodeURLString(userName)}/policies`)\n\n .then((res) => {\n setPolicyJSON(JSON.stringify(JSON.parse(res.policy), null, 4));\n })\n .catch((err: ErrorResponseHandler) => {\n setErrorSnackMessage(err);\n });\n }\n }, [isRestrictedByPolicy, userName]);\n\n const addUserServiceAccount = (e: React.FormEvent) => {\n e.preventDefault();\n setAddSending(true);\n };\n\n const resetForm = () => {\n setNewServiceAccount(null);\n setAccessKey(\"\");\n setSecretKey(\"\");\n };\n\n const closeCredentialsModal = () => {\n setNewServiceAccount(null);\n navigate(`${IAM_PAGES.USERS}/${encodeURLString(userName)}`);\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"add_user_SA\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {newServiceAccount && (\n {\n closeCredentialsModal();\n }}\n entity=\"Access Key\"\n />\n )}\n \n \n navigate(`${IAM_PAGES.USERS}/${encodeURLString(userName)}`)\n }\n label={\"User Details - \" + userName}\n />\n }\n actions={}\n />\n \n }\n icon={}\n title={`Create Access Key for ${userName}`}\n >\n ) => {\n e.preventDefault();\n addUserServiceAccount(e);\n }}\n >\n {\n setAccessKey(e.target.value);\n }}\n startIcon={}\n />\n {\n setSecretKey(e.target.value);\n }}\n startIcon={}\n />\n ) => {\n setIsRestrictedByPolicy(event.target.checked);\n }}\n label={\"Restrict beyond user policy\"}\n description={\n \"You can specify an optional JSON-formatted IAM policy to further restrict Access Key access to a subset of the actions and resources explicitly allowed for the parent user. Additional access beyond that of the parent user cannot be implemented through these policies.\"\n }\n />\n {isRestrictedByPolicy && (\n \n \n \n Current User Policy - edit the JSON to remove permissions\n for this Access Key\n \n \n \n {\n setPolicyJSON(value);\n }}\n editorHeight={\"350px\"}\n />\n \n \n )}\n \n \n\n \n \n \n \n \n \n \n );\n};\n\nexport default AddServiceAccount;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Route, Routes } from \"react-router-dom\";\nimport NotFoundPage from \"../../NotFoundPage\";\nimport ListUsers from \"./ListUsers\";\nimport UserDetails from \"./UserDetails\";\nimport AddUserScreen from \"./AddUserScreen\";\nimport AddUserServiceAccountScreen from \"./AddUserServiceAccountScreen\";\n\nconst Users = () => {\n return (\n \n } />\n } />\n }\n />\n } />\n } />\n \n );\n};\n\nexport default Users;\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'RemoveRedEye');\nexports.default = _default;","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\nexports.default = _default;"],"names":["_ref","closeDeleteModalAndRefresh","deleteOpen","selectedServiceAccount","dispatch","useAppDispatch","_useApi","useApi","err","setErrorSnackMessage","_useApi2","_slicedToArray","deleteLoading","invokeDeleteApi","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","concat","encodeURLString","onClose","confirmationContent","_jsxs","Fragment","children","style","maxWidth","whiteSpace","wordWrap","_ref$label","label","_ref$value","value","Box","sx","marginTop","InputLabel","ReadBox","actionButton","CopyToClipboard","text","Button","id","variant","onClick","setModalSnackMessage","marginRight","width","height","padding","icon","CopyIcon","WarningBlock","styled","div","theme","color","fontSize","margin","display","alignItems","download","filename","element","document","createElement","setAttribute","body","appendChild","click","removeChild","_ref2","newServiceAccount","open","closeModal","entity","consoleCreds","get","idp","ModalWrapper","modalOpen","ServiceAccountCredentialsIcon","Grid","container","item","xs","overflowY","maxHeight","fontWeight","Array","isArray","map","credentialsPair","index","CredentialItem","accessKey","secretKey","undefined","_Fragment","WarnIcon","_objectSpread","modalStyleUtils","modalButtonBar","TooltipWrapper","tooltip","consoleExtras","itemMap","url","api","path","JSON","stringify","DownloadIcon","length","allCredentials","withStyles","createStyles","root","classes","className","headerContainer","backgroundColor","borderRadius","marginBottom","paddingBottom","labelHeadline","marginLeft","labelText","_ref$noTitle","noTitle","_useState","useState","_useState2","records","setRecords","_useState3","_useState4","loading","_useState5","_useState6","filter","setFilter","currentPolicies","useSelector","state","createUser","selectedPolicies","fetchPolicies","useCallback","policies","listPolicies","then","res","_res$data$policies","data","sort","policySort","catch","setModalErrorSnackMessage","useEffect","filteredRecords","elementItem","name","includes","ProgressBar","SearchBox","placeholder","onChange","DataTable","columns","elementKey","onSelect","e","targetD","target","checked","elements","_toConsumableArray","push","setSelectedPolicies","selectedItems","entityName","idField","customPaperHeight","textAlign","selectedUsers","navigate","useNavigate","loadingSA","setLoadingSA","hasSA","setHasSA","userSAList","setUserSAList","userLoggedIn","localStorage","getItem","invoke","userServiceAccountList","renderUsers","user","tableActions","type","selectionElement","IAM_PAGES","USERS","userName","noSAtext","_step","_iterator","_createForOfIteratorHelper","s","n","done","errorMessage","detailedError","f","Loader","WarningMessage","itemActions","selectedGroups","setSelectedGroups","fetchGroups","groups","stringSort","selGroups","DeleteUser","withSuspense","React","AddToGroup","setLoading","setDeleteOpen","_useState7","_useState8","addGroupOpen","setAddGroupOpen","_useState9","_useState10","_useState11","_useState12","checkedUsers","setCheckedUsers","displayListUsers","hasPermission","CONSOLE_UI_RESOURCE","listUsersPermissions","viewUser","viewUserPermissions","addUserToGroup","addUserToGroupPermissions","deleteUser","deleteUserPermissions","users","usersSort","viewAction","disableButtonFunction","setHelpName","refresh","closeModalAndRefresh","close","unCheckAll","arguments","closeAddGroupBulk","PageHeaderWrapper","actions","HelpMenu","PageLayout","actionsTray","SecureComponent","resource","scopes","IAM_SCOPES","ADMIN_DELETE_USER","matchAll","errorProps","disabled","permissionTooltipHelper","DeleteIcon","ADMIN_ADD_USER_TO_GROUP","GroupsIcon","ADMIN_CREATE_USER","ADMIN_LIST_USER_POLICIES","ADMIN_LIST_GROUPS","S3_ALL_RESOURCES","ADMIN_ATTACH_USER_OR_GROUP_POLICY","AddIcon","USER_ADD","ADMIN_LIST_USERS","_e$target","_e$target2","_e$target2$value","_e$target2$checked","HelpBox","iconComponent","UsersIcon","help","href","rel","AButton","selectedUser","addLoading","setAddLoading","setAccessKey","setSecretKey","enabled","setEnabled","getUserInformation","memberOf","status","sendEnabled","trim","AddMembersToGroupIcon","noValidate","autoComplete","onSubmit","preventDefault","_","FormLayout","withBorders","containerPadding","GroupsSelectors","actualPolicy","setActualPolicy","statePolicies","userPolicy","pol","policy","IAMPoliciesIcon","PolicySelectors","selectedPolicy","entityType","hasPolicy","setSelectedServiceAccount","showNewCredentials","setShowNewCredentials","setNewServiceAccount","_useState13","_useState14","selectedSAs","setSelectedSAs","_useState15","_useState16","deleteMultipleOpen","setDeleteMultipleOpen","_useState17","_useState18","policyOpen","setPolicyOpen","fetchRecords","sortedRows","policyModalOpen","confirmDeleteServiceAccount","DeleteServiceAccount","DeleteMultipleServiceAccounts","setSnackBarMessage","CredentialsPrompt","ServiceAccountPolicy","selectedAccessKey","SectionTitle","separator","justifyContent","gap","ADMIN_CREATE_SERVICEACCOUNT","ADMIN_UPDATE_SERVICEACCOUNT","ADMIN_REMOVE_SERVICEACCOUNT","ADMIN_LIST_SERVICEACCOUNTS","ACCOUNT_TABLE_COLUMNS","selectSAs","newPassword","setNewPassword","reNewPassword","setReNewPassword","ChangePasswordIcon","event","request","newSecretKey","account","changeUserPassword","errorToHandler","InputBox","params","useParams","currentGroups","setCurrentGroups","setCurrentPolicies","changeUserPasswordModalOpen","setChangeUserPasswordModalOpen","_useState19","_useState20","_useState21","_useState22","setHasPolicy","_useState23","_useState24","selectedTab","setSelectedTab","enableEnabled","enableUserPermissions","disableEnabled","disableUserPermissions","decodeURLString","canAssignPolicy","assignIAMPolicyPermissions","canAssignGroup","assignGroupPermissions","viewGroup","getGroupPermissions","group","policyDetailsSort","groupTableActions","GROUPS","ChangeUserGroups","SetUserPolicies","ChangeUserPasswordModal","BackLink","ScreenTitle","subTitle","enableDisableUserPermissions","Switch","indicatorLabels","isEnabled","switchOnly","TrashIcon","PasswordKeyIcon","Tabs","currentTabOrPath","onTabClick","options","tabConfig","content","onMouseMove","editServiceAccountPermissions","UserServiceAccountsPanel","POLICIES","FeatureItem","description","fontStyle","flex","border","flexFlow","HelpIconFilled","ChangeAccessPolicyIcon","autoFocus","setUserName","showPassword","overlayIcon","VisibilityOffIcon","RemoveRedEyeIcon","overlayAction","setShowPassword","secretKeylength","setSendEnabled","CreateUserIcon","helpBox","AddUserHelpBox","createUserAsync","unwrap","saveRecord","UserSelector","PasswordSelector","resetFormAsync","ServiceAccountIcon","paddingTop","addSending","setAddSending","getRandomString","isRestrictedByPolicy","setIsRestrictedByPolicy","policyJSON","setPolicyJSON","parse","AddUserServiceAccountHelpBox","addUserServiceAccount","startIcon","PanelTitle","formScrollable","CodeMirrorWrapper","editorHeight","Routes","Route","AddUserScreen","UserDetails","AddUserServiceAccountScreen","ListUsers","NotFoundPage","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/4563.be189475.chunk.js b/portal-ui/build/static/js/4563.be189475.chunk.js new file mode 100644 index 0000000000..d45eb1f194 --- /dev/null +++ b/portal-ui/build/static/js/4563.be189475.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[4563,3956],{23956:function(e,t,s){s.r(t);var n=s(29439),r=s(72791),i=s(9505),c=s(23508),o=s(29945),a=s(45248),l=s(87995),u=s(44690),d=s(80184);t.default=function(e){var t=e.closeDeleteModalAndRefresh,s=e.deleteOpen,x=e.selectedServiceAccount,h=(0,u.TL)(),p=(0,i.Z)((function(){return t(!0)}),(function(e){return h((0,l.Ih)(e))})),f=(0,n.Z)(p,2),m=f[0],j=f[1];if(!x)return null;return(0,d.jsx)(c.Z,{title:"Delete Access Key",confirmText:"Delete",isOpen:s,titleIcon:(0,d.jsx)(o.NvT,{}),isLoading:m,onConfirm:function(){j("DELETE","/api/v1/service-accounts/".concat((0,a.LL)(x)))},onClose:function(){return t(!1)},confirmationContent:(0,d.jsxs)(r.Fragment,{children:["Are you sure you want to delete Access Key"," ",(0,d.jsx)("b",{style:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"},children:x}),"?"]})})}},37798:function(e,t,s){s.d(t,{Z:function(){return v}});var n=s(1413),r=s(72791),i=s(26181),c=s.n(i),o=s(17691),a=s(29945),l=s(56028),u=s(78029),d=s.n(u),x=s(87995),h=s(44690),p=s(80184),f=function(e){var t=e.label,s=void 0===t?"":t,n=e.value,r=void 0===n?"":n,i=(0,h.TL)();return(0,p.jsxs)(a.xuv,{sx:{marginTop:12},children:[(0,p.jsx)(a.AZs,{children:s}),(0,p.jsx)(a.bSr,{actionButton:(0,p.jsx)(d(),{text:r,children:(0,p.jsx)(a.zxk,{id:"copy-path",variant:"regular",onClick:function(){i((0,x.MK)("".concat(s," copied to clipboard")))},style:{marginRight:"5px",width:"28px",height:"28px",padding:"0px"},icon:(0,p.jsx)(a.TIy,{})})}),children:r})]})},m=s(27454),j=s(23814),g=o.ZP.div((function(e){e.theme;return{color:"red",fontSize:".85rem",margin:".5rem 0 .5rem 0",display:"flex",alignItems:"center","& svg ":{marginRight:".3rem",height:16,width:16}}})),y=function(e,t){var s=document.createElement("a");s.setAttribute("href","data:text/plain;charset=utf-8,"+t),s.setAttribute("download",e),s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s)},v=function(e){var t=e.newServiceAccount,s=e.open,i=e.closeModal,o=e.entity;if(!t)return null;var u=c()(t,"console",null),d=c()(t,"idp",!1);return(0,p.jsx)(l.Z,{modalOpen:s,onClose:function(){i()},title:"New ".concat(o," Created"),titleIcon:(0,p.jsx)(a.tVY,{}),children:(0,p.jsxs)(a.rjZ,{container:!0,children:[(0,p.jsxs)(a.rjZ,{item:!0,xs:12,children:["A new ",o," has been created with the following details:",!d&&u&&(0,p.jsx)(r.Fragment,{children:(0,p.jsxs)(a.rjZ,{item:!0,xs:12,sx:{overflowY:"auto",maxHeight:350},children:[(0,p.jsx)(a.xuv,{sx:{padding:".8rem 0 0 0",fontWeight:600,fontSize:".9rem"},children:"Console Credentials"}),Array.isArray(u)&&u.map((function(e,t){return(0,p.jsxs)(r.Fragment,{children:[(0,p.jsx)(f,{label:"Access Key",value:e.accessKey}),(0,p.jsx)(f,{label:"Secret Key",value:e.secretKey})]})})),!Array.isArray(u)&&(0,p.jsxs)(r.Fragment,{children:[(0,p.jsx)(f,{label:"Access Key",value:u.accessKey}),(0,p.jsx)(f,{label:"Secret Key",value:u.secretKey})]})]})}),(null===u||void 0===u)&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(f,{label:"Access Key",value:t.accessKey||""}),(0,p.jsx)(f,{label:"Secret Key",value:t.secretKey||""})]}),d?(0,p.jsx)(g,{children:"Please Login via the configured external identity provider."}):(0,p.jsxs)(g,{children:[(0,p.jsx)(a.e6P,{}),(0,p.jsx)("span",{children:"Write these down, as this is the only time the secret will be displayed."})]})]}),(0,p.jsx)(a.rjZ,{item:!0,xs:12,sx:(0,n.Z)({},j.ID.modalButtonBar),children:!d&&(0,p.jsxs)(r.Fragment,{children:[(0,p.jsx)(m.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,p.jsx)(a.zxk,{id:"download-button",label:"Download for import",onClick:function(){var e={};u?e=Array.isArray(u)?u.map((function(e){return{url:e.url,accessKey:e.accessKey,secretKey:e.secretKey,api:"s3v4",path:"auto"}}))[0]:{url:u.url,accessKey:u.accessKey,secretKey:u.secretKey,api:"s3v4",path:"auto"}:e={url:t.url,accessKey:t.accessKey,secretKey:t.secretKey,api:"s3v4",path:"auto"};y("credentials.json",JSON.stringify((0,n.Z)({},e)))},icon:(0,p.jsx)(a._8t,{}),variant:"callAction"})}),Array.isArray(u)&&u.length>1&&(0,p.jsx)(m.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,p.jsx)(a.zxk,{id:"download-all-button",label:"Download all access credentials",onClick:function(){var e={};u&&Array.isArray(u)&&u.length>1&&(e=u.map((function(e){return{accessKey:e.accessKey,secretKey:e.secretKey}})));y("all_credentials.json",JSON.stringify((0,n.Z)({},e)))},icon:(0,p.jsx)(a._8t,{}),variant:"callAction",color:"primary"})})]})})]})})}},60680:function(e,t,s){s(72791);var n=s(11135),r=s(25787),i=s(80184);t.Z=(0,r.Z)((function(e){return(0,n.Z)({root:{padding:0,margin:0,fontSize:".9rem"}})}))((function(e){var t=e.classes,s=e.children;return(0,i.jsx)("h1",{className:t.root,children:s})}))},58400:function(e,t,s){var n=s(93433),r=s(29439),i=s(72791),c=s(29945),o=s(21639),a=s(59114),l=s(87995),u=s(44690),d=s(74616),x=s(78687),h=s(31776),p=s(80184);t.Z=function(e){var t=e.noTitle,s=void 0!==t&&t,f=(0,u.TL)(),m=(0,i.useState)([]),j=(0,r.Z)(m,2),g=j[0],y=j[1],v=(0,i.useState)(!1),b=(0,r.Z)(v,2),S=b[0],A=b[1],Z=(0,i.useState)(""),C=(0,r.Z)(Z,2),I=C[0],w=C[1],E=(0,x.v9)((function(e){return e.createUser.selectedPolicies})),k=(0,i.useCallback)((function(){A(!0),h.h.policies.listPolicies().then((function(e){var t,s=null!==(t=e.data.policies)&&void 0!==t?t:[];A(!1),y(s.sort(o.g4))})).catch((function(e){A(!1),f((0,l.zb)(e))}))}),[f]);(0,i.useEffect)((function(){A(!0)}),[]),(0,i.useEffect)((function(){S&&k()}),[S,k]);var _=g.filter((function(e){return e.name.includes(I)}));return(0,p.jsxs)(c.rjZ,{item:!0,xs:12,className:"inputItem",children:[S&&(0,p.jsx)(c.kod,{}),g.length>0?(0,p.jsxs)(i.Fragment,{children:[(0,p.jsx)(c.rjZ,{item:!0,xs:12,className:"inputItem",children:(0,p.jsx)(a.Z,{placeholder:"Start typing to search for a Policy",onChange:function(e){w(e)},value:I,label:s?"":"Assign Policies"})}),(0,p.jsx)(c.wQF,{columns:[{label:"Policy",elementKey:"name"}],onSelect:function(e){var t=e.target,s=t.value,r=t.checked,i=(0,n.Z)(E);r?i.push(s):i=i.filter((function(e){return e!==s})),i=i.filter((function(e){return""!==e})),f((0,d.ue)(i))},selectedItems:E,isLoading:S,records:_,entityName:"Policies",idField:"name",customPaperHeight:"200px"})]}):(0,p.jsx)(c.xuv,{sx:{textAlign:"center",padding:"10px 0"},children:"No Policies Available"})]})}},49076:function(e,t,s){s.r(t);var n=s(37762),r=s(29439),i=s(72791),c=s(57689),o=s(87995),a=s(29945),l=s(45248),u=s(56087),d=s(9505),x=s(23508),h=s(16502),p=s(81207),f=s(44690),m=s(80184);t.default=function(e){var t=e.closeDeleteModalAndRefresh,s=e.deleteOpen,j=e.selectedUsers,g=(0,c.s0)(),y=(0,f.TL)(),v=function(){return t(!1)},b=(0,d.Z)((function(){return t(!0)}),(function(e){return y((0,o.Ih)(e))})),S=(0,r.Z)(b,2),A=S[0],Z=S[1],C=(0,i.useState)(!0),I=(0,r.Z)(C,2),w=I[0],E=I[1],k=(0,i.useState)(!1),_=(0,r.Z)(k,2),K=_[0],U=_[1],F=(0,i.useState)([]),L=(0,r.Z)(F,2),P=L[0],T=L[1],M=localStorage.getItem("userLoggedIn")||"";if((0,i.useEffect)((function(){j&&p.Z.invoke("POST","/api/v1/users/service-accounts",j).then((function(e){T(e.userServiceAccountList),e.hasSA&&U(!0),E(!1)})).catch((function(e){y((0,o.Ih)(e)),E(!1)}))}),[j,y]),!j)return null;var R=j.map((function(e){return(0,m.jsx)("div",{children:(0,m.jsx)("b",{children:e})},e)})),O=[{type:"view",onClick:function(e){g("".concat(u.gA.USERS,"/").concat((0,l.LL)(e.userName))),v()}}],N="Are you sure you want to delete the following "+j.length+" user"+(j.length>1?"s?":"?");return(0,m.jsx)(x.Z,{title:"Delete User".concat(j.length>1?"s":""),confirmText:"Delete",isOpen:s,titleIcon:(0,m.jsx)(a.NvT,{}),isLoading:A,onConfirm:function(){var e,s=(0,n.Z)(j);try{for(s.s();!(e=s.n()).done;){var r=e.value;r===M?(y((0,o.Ih)({errorMessage:"Cannot delete currently logged in user",detailedError:"Cannot delete currently logged in user ".concat(M)})),t(!0)):(Z("DELETE","/api/v1/user/".concat((0,l.LL)(r))),t(!0),g("".concat(u.gA.USERS)))}}catch(i){s.e(i)}finally{s.f()}},onClose:v,confirmationContent:w?(0,m.jsx)(a.aNw,{}):(0,m.jsx)(i.Fragment,{children:K?(0,m.jsxs)(i.Fragment,{children:[(0,m.jsx)(h.Z,{label:"Click on a user to view the full listing of asociated Access Keys. All Access Keys associated with a user will be deleted along with the user. Are you sure you want to continue?",title:"Warning: One or more users selected has associated Access Keys. "}),(0,m.jsx)(a.wQF,{itemActions:O,columns:[{label:"Username",elementKey:"userName"},{label:"# Associated Access Keys",elementKey:"numSAs"}],isLoading:w,records:P,entityName:"User Access Keys",idField:"userName",customPaperHeight:"250"})]}):(0,m.jsxs)(i.Fragment,{children:[N,R]})})})}},83658:function(e,t,s){var n=s(93433),r=s(29439),i=s(72791),c=s(26181),o=s.n(c),a=s(29945),l=s(21639),u=s(87995),d=s(44690),x=s(81207),h=s(59114),p=s(80184);t.Z=function(e){var t=e.selectedGroups,s=e.setSelectedGroups,c=(0,d.TL)(),f=(0,i.useState)([]),m=(0,r.Z)(f,2),j=m[0],g=m[1],y=(0,i.useState)(!1),v=(0,r.Z)(y,2),b=v[0],S=v[1],A=(0,i.useState)(""),Z=(0,r.Z)(A,2),C=Z[0],I=Z[1],w=(0,i.useCallback)((function(){x.Z.invoke("GET","/api/v1/groups").then((function(e){var t=o()(e,"groups",[]);t||(t=[]),g(t.sort(l.V2)),S(!1)})).catch((function(e){c((0,u.zb)(e)),S(!1)}))}),[c]);(0,i.useEffect)((function(){S(!0)}),[]),(0,i.useEffect)((function(){b&&w()}),[b,w]);var E=t||[],k=j.filter((function(e){return e.includes(C)}));return(0,p.jsxs)(a.rjZ,{item:!0,xs:12,className:"inputItem",children:[b&&(0,p.jsx)(a.kod,{}),null!==j&&j.length>0?(0,p.jsxs)(i.Fragment,{children:[(0,p.jsx)(a.rjZ,{item:!0,xs:12,className:"inputItem",children:(0,p.jsx)(h.Z,{placeholder:"Start typing to search for Groups",onChange:I,value:C,label:"Assign Groups"})}),(0,p.jsx)(a.wQF,{columns:[{label:"Group"}],onSelect:function(e){var t=e.target,r=t.value,i=t.checked,c=(0,n.Z)(E);return i?c.push(r):c=c.filter((function(e){return e!==r})),s(c),c},selectedItems:E,isLoading:b,records:k,entityName:"Groups",idField:"",customPaperHeight:"200px"})]}):(0,p.jsx)(a.xuv,{sx:{textAlign:"center",padding:"10px 0"},children:"No Groups Available"})]})}},4563:function(e,t,s){s.r(t),s.d(t,{default:function(){return ue}});var n=s(72791),r=s(57689),i=s(98604),c=s(93433),o=s(29439),a=s(29945),l=s(21639),u=s(23814),d=s(45248),x=s(56087),h=s(81207),p=s(81806),f=s(59114),m=s(75578),j=s(38442),g=s(87995),y=s(44690),v=s(27454),b=s(47974),S=s(99670),A=s(80184),Z=(0,m.Z)(n.lazy((function(){return Promise.resolve().then(s.bind(s,49076))}))),C=(0,m.Z)(n.lazy((function(){return s.e(9221).then(s.bind(s,49221))}))),I=function(){var e=(0,y.TL)(),t=(0,r.s0)(),s=(0,n.useState)([]),i=(0,o.Z)(s,2),m=i[0],I=i[1],w=(0,n.useState)(!0),E=(0,o.Z)(w,2),k=E[0],_=E[1],K=(0,n.useState)(!1),U=(0,o.Z)(K,2),F=U[0],L=U[1],P=(0,n.useState)(!1),T=(0,o.Z)(P,2),M=T[0],R=T[1],O=(0,n.useState)(""),N=(0,o.Z)(O,2),D=N[0],z=N[1],B=(0,n.useState)([]),G=(0,o.Z)(B,2),Y=G[0],W=G[1],V=(0,j.F)(x.C3,x.Rs),Q=(0,j.F)(x.C3,x.iw),H=(0,j.F)(x.C3,x.uH),J=(0,j.F)(x.C3,x.Yj);(0,n.useEffect)((function(){k&&(V?h.Z.invoke("GET","/api/v1/users").then((function(e){var t=null===e.users?[]:e.users;_(!1),I(t.sort(l.LQ))})).catch((function(t){_(!1),e((0,g.Ih)(t))})):_(!1))}),[k,e,V]);var X=m.filter((function(e){return e.accessKey.includes(D)})),q=function(e){t("".concat(x.gA.USERS,"/").concat((0,d.LL)(e.accessKey)))},$=[{type:"view",onClick:q,disableButtonFunction:function(){return!Q}},{type:"edit",onClick:q,disableButtonFunction:function(){return!Q}}];return(0,n.useEffect)((function(){e((0,g.Sc)("list_users"))}),[]),(0,A.jsxs)(n.Fragment,{children:[F&&(0,A.jsx)(Z,{deleteOpen:F,selectedUsers:Y,closeDeleteModalAndRefresh:function(e){!function(e){L(!1),e&&(_(!0),W([]))}(e)}}),M&&(0,A.jsx)(C,{open:M,checkedUsers:Y,closeModalAndRefresh:function(e){!function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];R(!1),e&&W([])}(e)}}),(0,A.jsx)(b.Z,{label:"Users",actions:(0,A.jsx)(S.Z,{})}),(0,A.jsx)(a.Xgh,{children:(0,A.jsxs)(a.rjZ,{container:!0,children:[(0,A.jsxs)(a.rjZ,{item:!0,xs:12,sx:u.OR.actionsTray,children:[(0,A.jsx)(f.Z,{placeholder:"Search Users",onChange:z,value:D,sx:{marginRight:"auto",maxWidth:380}}),(0,A.jsx)(j.s,{resource:x.C3,scopes:[x.Ft.ADMIN_DELETE_USER],matchAll:!0,errorProps:{disabled:!0},children:(0,A.jsx)(v.Z,{tooltip:(0,j.F)("console",[x.Ft.ADMIN_DELETE_USER])?0===Y.length?"Select Users to delete":"Delete Selected":(0,x.MK)([x.Ft.ADMIN_DELETE_USER],"delete users"),children:(0,A.jsx)(a.zxk,{id:"delete-selected-users",onClick:function(){L(!0)},label:"Delete Selected",icon:(0,A.jsx)(a.pJl,{}),disabled:0===Y.length,variant:"secondary","aria-label":"delete-selected-users"})})}),(0,A.jsx)(j.s,{scopes:[x.Ft.ADMIN_ADD_USER_TO_GROUP],resource:x.C3,errorProps:{disabled:!0},children:(0,A.jsx)(v.Z,{tooltip:(0,j.F)("console",[x.Ft.ADMIN_ADD_USER_TO_GROUP])?0===Y.length?"Select Users to group":"Add to Group":(0,x.MK)([x.Ft.ADMIN_ADD_USER_TO_GROUP],"add users to groups"),children:(0,A.jsx)(a.zxk,{id:"add-to-group",label:"Add to Group",icon:(0,A.jsx)(a.wws,{}),disabled:Y.length<=0,onClick:function(){Y.length>0&&R(!0)},variant:"regular"})})}),(0,A.jsx)(j.s,{scopes:[x.Ft.ADMIN_CREATE_USER,x.Ft.ADMIN_LIST_USER_POLICIES,x.Ft.ADMIN_LIST_GROUPS],resource:x.HQ,matchAll:!0,errorProps:{disabled:!0},children:(0,A.jsx)(v.Z,{tooltip:(0,j.F)("console",[x.Ft.ADMIN_CREATE_USER,x.Ft.ADMIN_LIST_USER_POLICIES,x.Ft.ADMIN_LIST_GROUPS,x.Ft.ADMIN_ATTACH_USER_OR_GROUP_POLICY],!0)?"Create User":(0,x.MK)([x.Ft.ADMIN_CREATE_USER,x.Ft.ADMIN_LIST_USER_POLICIES,x.Ft.ADMIN_LIST_GROUPS,x.Ft.ADMIN_ATTACH_USER_OR_GROUP_POLICY],"create users"),children:(0,A.jsx)(a.zxk,{id:"create-user",label:"Create User",icon:(0,A.jsx)(a.dtP,{}),onClick:function(){t("".concat(x.gA.USER_ADD))},variant:"callAction",disabled:!(0,j.F)("console",[x.Ft.ADMIN_CREATE_USER,x.Ft.ADMIN_LIST_USER_POLICIES,x.Ft.ADMIN_LIST_GROUPS,x.Ft.ADMIN_ATTACH_USER_OR_GROUP_POLICY],!0)})})})]}),k&&(0,A.jsx)(a.kod,{}),!k&&(0,A.jsxs)(n.Fragment,{children:[m.length>0&&(0,A.jsxs)(n.Fragment,{children:[(0,A.jsx)(a.rjZ,{item:!0,xs:12,sx:{marginBottom:15},children:(0,A.jsx)(j.s,{scopes:[x.Ft.ADMIN_LIST_USERS],resource:x.C3,errorProps:{disabled:!0},children:(0,A.jsx)(a.wQF,{itemActions:$,columns:[{label:"Access Key",elementKey:"accessKey"}],onSelect:H||J?function(e){var t=e.target,s=void 0===t?{}:t,n=s.value,r=void 0===n?"":n,i=s.checked,o=void 0!==i&&i,a=(0,c.Z)(Y);return o?a.push(r):a=a.filter((function(e){return e!==r})),W(a),a}:void 0,selectedItems:Y,isLoading:k,records:X,entityName:"Users",idField:"accessKey"})})}),(0,A.jsx)(a.KfX,{title:"Users",iconComponent:(0,A.jsx)(a.oyc,{}),help:(0,A.jsxs)(n.Fragment,{children:["A MinIO user consists of a unique access key (username) and corresponding secret key (password). Clients must authenticate their identity by specifying both a valid access key (username) and the corresponding secret key (password) of an existing MinIO user.",(0,A.jsx)("br",{}),"Groups provide a simplified method for managing shared permissions among users with common access patterns and workloads.",(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"Users inherit access permissions to data and resources through the groups they belong to.",(0,A.jsx)("br",{}),"MinIO uses Policy-Based Access Control (PBAC) to define the authorized actions and resources to which an authenticated user has access. Each policy describes one or more actions and conditions that outline the permissions of a user or group of users.",(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"Each user can access only those resources and operations which are explicitly granted by the built-in role. MinIO denies access to any other resource or action by default.",(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"You can learn more at our"," ",(0,A.jsx)("a",{href:"https://min.io/docs/minio/kubernetes/upstream/administration/identity-access-management/minio-user-management.html?ref=con",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})]}),0===m.length&&(0,A.jsx)(a.rjZ,{container:!0,children:(0,A.jsx)(a.rjZ,{item:!0,xs:8,children:(0,A.jsx)(a.KfX,{title:"Users",iconComponent:(0,A.jsx)(a.oyc,{}),help:(0,A.jsxs)(n.Fragment,{children:["A MinIO user consists of a unique access key (username) and corresponding secret key (password). Clients must authenticate their identity by specifying both a valid access key (username) and the corresponding secret key (password) of an existing MinIO user.",(0,A.jsx)("br",{}),"Groups provide a simplified method for managing shared permissions among users with common access patterns and workloads.",(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"Users inherit access permissions to data and resources through the groups they belong to.",(0,A.jsx)("br",{}),"MinIO uses Policy-Based Access Control (PBAC) to define the authorized actions and resources to which an authenticated user has access. Each policy describes one or more actions and conditions that outline the permissions of a user or group of users.",(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"Each user can access only those resources and operations which are explicitly granted by the built-in role. MinIO denies access to any other resource or action by default.",(0,A.jsxs)(j.s,{scopes:[x.Ft.ADMIN_CREATE_USER,x.Ft.ADMIN_LIST_USER_POLICIES,x.Ft.ADMIN_LIST_GROUPS],matchAll:!0,resource:x.C3,children:[(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"To get started,"," ",(0,A.jsx)(p.Z,{onClick:function(){t("".concat(x.gA.USER_ADD))},children:"Create a User"}),"."]})]})})})})]})]})})]})},w=s(83658),E=s(56028),k=function(e){var t=e.closeModalAndRefresh,s=e.selectedUser,r=e.open,i=(0,y.TL)(),c=(0,n.useState)(!1),l=(0,o.Z)(c,2),x=l[0],p=l[1],f=(0,n.useState)(""),m=(0,o.Z)(f,2),j=m[0],v=m[1],b=(0,n.useState)(""),S=(0,o.Z)(b,2),Z=S[0],C=S[1],I=(0,n.useState)(!1),k=(0,o.Z)(I,2),_=k[0],K=k[1],U=(0,n.useState)([]),F=(0,o.Z)(U,2),L=F[0],P=F[1],T=(0,n.useCallback)((function(){if(!s)return null;h.Z.invoke("GET","/api/v1/user/".concat((0,d.LL)(s))).then((function(e){p(!1),v(e.accessKey),P(e.memberOf||[]),K("enabled"===e.status)})).catch((function(e){p(!1),i((0,g.zb)(e))}))}),[s,i]);(0,n.useEffect)((function(){null===s?(v(""),C(""),P([])):T()}),[s,T]);var M=""!==j.trim()&&(""!==Z.trim()&&null===s||null!==s);return(0,A.jsx)(E.Z,{onClose:function(){t()},modalOpen:r,title:"Set Groups",titleIcon:(0,A.jsx)(a.ZmA,{}),children:(0,A.jsx)(n.Fragment,{children:(0,A.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),x||(p(!0),null!==s?h.Z.invoke("PUT","/api/v1/user/".concat((0,d.LL)(s)),{status:_?"enabled":"disabled",groups:L}).then((function(e){p(!1),t()})).catch((function(e){p(!1),i((0,g.zb)(e))})):h.Z.invoke("POST","/api/v1/users",{accessKey:j,secretKey:Z,groups:L}).then((function(e){p(!1),t()})).catch((function(e){p(!1),i((0,g.zb)(e))})))},children:[(0,A.jsx)(a.ltY,{withBorders:!1,containerPadding:!1,children:(0,A.jsx)(w.Z,{selectedGroups:L,setSelectedGroups:function(e){P(e)}})}),(0,A.jsxs)(a.xuv,{sx:u.ID.modalButtonBar,children:[(0,A.jsx)(a.zxk,{id:"clear-change-user-groups",type:"button",variant:"regular",onClick:function(){null===s?(v(""),C(""),P([])):P([])},label:"Clear"}),(0,A.jsx)(a.zxk,{id:"save-user-groups",type:"submit",variant:"callAction",disabled:x||!M,label:"Save"})]}),x&&(0,A.jsx)(a.rjZ,{item:!0,xs:12,children:(0,A.jsx)(a.kod,{})})]})})})},_=s(78687),K=s(61889),U=s(58400),F=s(74616),L=function(e){var t=e.closeModalAndRefresh,s=e.selectedUser,r=e.currentPolicies,i=e.open,c=(0,y.TL)(),l=(0,n.useState)(!1),d=(0,o.Z)(l,2),x=d[0],p=d[1],f=(0,n.useState)([]),m=(0,o.Z)(f,2),j=m[0],v=m[1],b=(0,_.v9)((function(e){return e.createUser.selectedPolicies}));return(0,n.useEffect)((function(){if(i){var e=r.map((function(e){return e.policy}));v(e),c((0,F.ue)(e))}}),[i,s]),(0,A.jsxs)(E.Z,{onClose:function(){t()},modalOpen:i,title:"Set Policies",titleIcon:(0,A.jsx)(a.v42,{}),children:[(0,A.jsx)(a.ltY,{withBorders:!1,containerPadding:!1,children:(0,A.jsx)(U.Z,{selectedPolicy:b})}),(0,A.jsxs)(a.xuv,{sx:u.ID.modalButtonBar,children:[(0,A.jsx)(a.zxk,{id:"reset-user-policies",type:"button",variant:"regular",color:"primary",onClick:function(){c((0,F.ue)(j))},label:"Reset"}),(0,A.jsx)(a.zxk,{id:"save-user-policy",type:"button",variant:"callAction",color:"primary",disabled:x,onClick:function(){var e=s;p(!0),h.Z.invoke("PUT","/api/v1/set-policy",{name:b,entityName:e,entityType:"user"}).then((function(){p(!1),c((0,F.ue)([])),t()})).catch((function(e){p(!1),c((0,g.zb)(e))}))},label:"Save"})]}),x&&(0,A.jsx)(K.ZP,{item:!0,xs:12,children:(0,A.jsx)(a.kod,{})})]})},P=s(23956),T=s(37798),M=s(18303),R=s(58493),O=s(14048),N=s(25643),D=function(e){var t=e.user,s=e.hasPolicy,i=(0,y.TL)(),c=(0,r.s0)(),u=(0,n.useState)([]),p=(0,o.Z)(u,2),f=p[0],m=p[1],b=(0,n.useState)(!1),S=(0,o.Z)(b,2),Z=S[0],C=S[1],I=(0,n.useState)(!1),w=(0,o.Z)(I,2),E=w[0],k=w[1],_=(0,n.useState)(null),K=(0,o.Z)(_,2),U=K[0],F=K[1],L=(0,n.useState)(!1),D=(0,o.Z)(L,2),z=D[0],B=D[1],G=(0,n.useState)(null),Y=(0,o.Z)(G,2),W=Y[0],V=Y[1],Q=(0,n.useState)([]),H=(0,o.Z)(Q,2),J=H[0],X=H[1],q=(0,n.useState)(!1),$=(0,o.Z)(q,2),ee=$[0],te=$[1],se=(0,n.useState)(!1),ne=(0,o.Z)(se,2),re=ne[0],ie=ne[1];(0,n.useEffect)((function(){ce()}),[]),(0,n.useEffect)((function(){Z&&h.Z.invoke("GET","/api/v1/user/".concat((0,d.LL)(t),"/service-accounts")).then((function(e){C(!1);var t=e.sort(l.LQ);m(t)})).catch((function(e){i((0,g.Ih)(e)),C(!1)}))}),[Z,C,m,t,i]);var ce=function(){C(!0)},oe=[{type:"view",onClick:function(e){e&&function(e){F(e),ie(!0)}(e.accessKey)}},{type:"delete",onClick:function(e){e&&function(e){F(e),k(!0)}(e.accessKey)}}];return(0,n.useEffect)((function(){i((0,g.Sc)("user_details_accounts"))}),[]),(0,A.jsxs)(n.Fragment,{children:[E&&(0,A.jsx)(P.default,{deleteOpen:E,selectedServiceAccount:U,closeDeleteModalAndRefresh:function(e){!function(e){k(!1),e&&ce()}(e)}}),ee&&(0,A.jsx)(M.Z,{deleteOpen:ee,selectedSAs:J,closeDeleteModalAndRefresh:function(e){te(!1),e&&(i((0,g.y1)("Access Keys deleted successfully.")),X([]),C(!0))}}),z&&(0,A.jsx)(T.Z,{newServiceAccount:W,open:z,closeModal:function(){B(!1),V(null)},entity:"Access Key"}),re&&(0,A.jsx)(O.Z,{open:re,selectedAccessKey:U,closeModalAndRefresh:function(){ie(!1),C(!0)}}),(0,A.jsx)(a.NZf,{separator:!0,sx:{marginBottom:15},actions:(0,A.jsxs)(a.xuv,{sx:{display:"flex",justifyContent:"flex-end",gap:10},children:[(0,A.jsx)(v.Z,{tooltip:"Delete Selected",children:(0,A.jsx)(a.zxk,{id:"delete-selected",onClick:function(){te(!0)},label:"Delete Selected",icon:(0,A.jsx)(a.pJl,{}),disabled:0===J.length,variant:"secondary"})}),(0,A.jsx)(j.s,{scopes:[x.Ft.ADMIN_CREATE_SERVICEACCOUNT,x.Ft.ADMIN_UPDATE_SERVICEACCOUNT,x.Ft.ADMIN_REMOVE_SERVICEACCOUNT,x.Ft.ADMIN_LIST_SERVICEACCOUNTS],resource:x.C3,matchAll:!0,errorProps:{disabled:!0},children:(0,A.jsx)(v.Z,{tooltip:"Create Access Key",children:(0,A.jsx)(a.zxk,{id:"create-service-account",label:"Create Access Key",variant:"callAction",icon:(0,A.jsx)(a.dtP,{}),onClick:function(){c("/identity/users/new-user-sa/".concat((0,d.LL)(t)))},disabled:!s})})})]}),children:"Access Keys"}),(0,A.jsx)(a.wQF,{itemActions:oe,entityName:"Access Keys",columns:N.r,onSelect:function(e){return(0,R._0)(e,X,J)},selectedItems:J,isLoading:Z,records:f,idField:"accessKey"})]})},z=s(74165),B=s(15861),G=s(31776),Y=s(82342),W=function(e){var t=e.open,s=e.userName,r=e.closeModal,i=(0,y.TL)(),c=(0,n.useState)(""),l=(0,o.Z)(c,2),d=l[0],x=l[1],h=(0,n.useState)(""),p=(0,o.Z)(h,2),f=p[0],m=p[1],j=(0,n.useState)(!1),v=(0,o.Z)(j,2),b=v[0],S=v[1];return t?(0,A.jsx)(E.Z,{title:"Change User Password",modalOpen:t,onClose:function(){x(""),m(""),r()},titleIcon:(0,A.jsx)(a.IaT,{}),children:(0,A.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){if(e.preventDefault(),!b){if(S(!0),d.length<8)return i((0,g.zb)({errorMessage:"Passwords must be at least 8 characters long",detailedError:""})),void S(!1);var t={selectedUser:s,newSecretKey:d};G.h.account.changeUserPassword(t).then((function(e){S(!1),x(""),m(""),i((0,g.y1)("Successfully updated the password for the user ".concat(s,"."))),r()})).catch(function(){var e=(0,B.Z)((0,z.Z)().mark((function e(t){var s;return(0,z.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return S(!1),x(""),m(""),e.next=5,t.json();case 5:s=e.sent,i((0,g.Ih)((0,Y.g)(s)));case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}())}}(e)},children:(0,A.jsxs)(a.ltY,{withBorders:!1,containerPadding:!1,children:[(0,A.jsxs)(a.xuv,{sx:{margin:"10px 0 20px"},children:["Change password for: ",(0,A.jsx)("strong",{children:s})]}),(0,A.jsx)(a.Wzg,{id:"new-password",name:"new-password",onChange:function(e){x(e.target.value)},label:"New Password",type:"password",value:d}),(0,A.jsx)(a.Wzg,{id:"re-new-password",name:"re-new-password",onChange:function(e){m(e.target.value)},label:"Type New Password Again",type:"password",value:f}),(0,A.jsx)(a.xuv,{sx:u.ID.modalButtonBar,children:(0,A.jsx)(a.zxk,{id:"save-user-password",type:"submit",variant:"callAction",color:"primary",disabled:b||!(f.length>0&&d===f),label:"Save"})}),b&&(0,A.jsx)(a.xuv,{children:(0,A.jsx)(a.kod,{})})]})})}):null},V=s(49076),Q=function(){var e=(0,y.TL)(),t=(0,r.UO)(),s=(0,r.s0)(),i=(0,n.useState)(!1),c=(0,o.Z)(i,2),u=c[0],p=c[1],f=(0,n.useState)(!1),m=(0,o.Z)(f,2),Z=m[0],C=m[1],I=(0,n.useState)(!1),w=(0,o.Z)(I,2),E=w[0],_=w[1],K=(0,n.useState)(!1),U=(0,o.Z)(K,2),F=U[0],P=U[1],T=(0,n.useState)(!1),M=(0,o.Z)(T,2),R=M[0],O=M[1],N=(0,n.useState)([]),z=(0,o.Z)(N,2),B=z[0],G=z[1],Y=(0,n.useState)([]),Q=(0,o.Z)(Y,2),H=Q[0],J=Q[1],X=(0,n.useState)([]),q=(0,o.Z)(X,2),$=q[0],ee=q[1],te=(0,n.useState)(!1),se=(0,o.Z)(te,2),ne=se[0],re=se[1],ie=(0,n.useState)(!1),ce=(0,o.Z)(ie,2),oe=ce[0],ae=ce[1],le=(0,n.useState)(!1),ue=(0,o.Z)(le,2),de=ue[0],xe=ue[1],he=(0,n.useState)("groups"),pe=(0,o.Z)(he,2),fe=pe[0],me=pe[1],je=(0,j.F)(x.C3,x.cI)&&!R,ge=(0,j.F)(x.C3,x.kZ)&&R,ye=(0,d.IO)(t.userName||""),ve=localStorage.getItem("userLoggedIn")||"",be=(0,j.F)(x.C3,x.W2,!0),Se=(0,j.F)(x.C3,x.ck,!0),Ae=(0,j.F)(x.C3,x.k_),Ze=(0,n.useCallback)((function(){if(""===ye)return null;p(!0),h.Z.invoke("GET","/api/v1/user/".concat((0,d.LL)(ye))).then((function(e){P(!1);var t=e.memberOf||[];G(t);var s=t.map((function(e){return{group:e}}));J(s);var n=e.policy.map((function(e){return{policy:e}}));n.sort(l.KE),ee(n),O("enabled"===e.status),xe(e.hasPolicy),p(!1)})).catch((function(t){P(!1),p(!1),e((0,g.zb)(t))}))}),[ye,e]);(0,n.useEffect)((function(){e((0,g.Sc)("user_details_groups"))}),[]),(0,n.useEffect)((function(){Ze()}),[Ze]);var Ce=[{type:"view",onClick:function(e){s("".concat(x.gA.GROUPS,"/").concat((0,d.LL)(e.group)))},disableButtonFunction:function(){return!Ae}}];return(0,A.jsxs)(n.Fragment,{children:[Z&&(0,A.jsx)(k,{open:Z,selectedUser:ye,closeModalAndRefresh:function(){C(!1),Ze()}}),E&&(0,A.jsx)(L,{open:E,selectedUser:ye,currentPolicies:$,closeModalAndRefresh:function(){_(!1),Ze()}}),oe&&(0,A.jsx)(V.default,{deleteOpen:oe,selectedUsers:[ye],closeDeleteModalAndRefresh:function(e){!function(e){ae(!1),e&&Ze()}(e)}}),ne&&(0,A.jsx)(W,{open:ne,userName:ye,closeModal:function(){return re(!1)}}),(0,A.jsx)(b.Z,{label:(0,A.jsx)(n.Fragment,{children:(0,A.jsx)(a.hbI,{label:"Users",onClick:function(){return s(x.gA.USERS)}})}),actions:(0,A.jsx)(S.Z,{})}),(0,A.jsx)(a.Xgh,{children:(0,A.jsxs)(a.rjZ,{container:!0,children:[(0,A.jsx)(a.rjZ,{item:!0,xs:12,children:(0,A.jsx)(a.UHn,{icon:(0,A.jsx)(a.oyc,{width:40}),title:ye,subTitle:"",actions:(0,A.jsxs)(n.Fragment,{children:[(0,A.jsx)("span",{style:{fontSize:".8rem",marginRight:".5rem"},children:"User Status:"}),(0,A.jsx)("span",{style:{fontWeight:"bold",fontSize:".9rem",marginRight:".5rem"},children:R?"Enabled":"Disabled"}),(0,A.jsx)(v.Z,{tooltip:je||ge?"":(0,j.F)(x.C3,x.cI)?(0,x.MK)(x.kZ,"disable users"):(0,j.F)(x.C3,x.kZ)?(0,x.MK)(x.cI,"enable users"):(0,x.MK)(x.xQ,"enable or disable users"),children:(0,A.jsx)(a.rsf,{indicatorLabels:["Enabled","Disabled"],checked:R,value:"group_enabled",id:"group-status",name:"group-status",onChange:function(){var t;O(!R),t=!R,F||(P(!0),h.Z.invoke("PUT","/api/v1/user/".concat((0,d.LL)(ye)),{status:t?"enabled":"disabled",groups:B}).then((function(e){P(!1)})).catch((function(t){P(!1),e((0,g.zb)(t))})))},switchOnly:!0,disabled:!je&&!ge})}),(0,A.jsx)(v.Z,{tooltip:(0,j.F)(x.C3,x.Yj)?ve===ye?"You cannot delete the currently logged in User":"Delete User":(0,x.MK)(x.Yj,"delete user"),children:(0,A.jsx)(a.zxk,{id:"delete-user",onClick:function(){ae(!0)},icon:(0,A.jsx)(a.XHJ,{}),variant:"secondary",disabled:!(0,j.F)(x.C3,x.Yj)||ve===ye})}),(0,A.jsx)(v.Z,{tooltip:"Change Password",children:(0,A.jsx)(a.zxk,{id:"change-user-password",onClick:function(){re(!0)},icon:(0,A.jsx)(a.tvm,{}),variant:"regular",disabled:ve===ye})})]}),sx:{marginBottom:15}})}),(0,A.jsx)(a.rjZ,{item:!0,xs:12,children:(0,A.jsx)(a.mQc,{currentTabOrPath:fe,onTabClick:me,options:[{tabConfig:{id:"groups",label:"Groups",disabled:!Se},content:(0,A.jsxs)(n.Fragment,{children:[(0,A.jsx)(a.xuv,{onMouseMove:function(){return e((0,g.Sc)("user_details_groups"))},children:(0,A.jsx)(a.NZf,{separator:!0,sx:{marginBottom:15},actions:(0,A.jsx)(v.Z,{tooltip:Se?"Assign groups":(0,x.MK)(x.ck,"add users to groups"),children:(0,A.jsx)(a.zxk,{id:"add-groups",label:"Add to Groups",onClick:function(){C(!0)},icon:(0,A.jsx)(a.dtP,{}),variant:"callAction",disabled:!Se})}),children:"Groups"})}),(0,A.jsx)(a.rjZ,{item:!0,xs:12,onMouseMove:function(){return e((0,g.Sc)("user_details_groups"))},children:(0,A.jsx)(a.wQF,{itemActions:Ce,columns:[{label:"Name",elementKey:"group"}],isLoading:u,records:H,entityName:"Groups",idField:"group"})})]})},{tabConfig:{id:"service_accounts",label:"Service Accounts",disabled:!(0,j.F)(x.C3,x.LE)},content:(0,A.jsx)(D,{user:ye,hasPolicy:de})},{tabConfig:{id:"policies",label:"Policies",disabled:!be},content:(0,A.jsxs)(n.Fragment,{children:[(0,A.jsx)(a.xuv,{onMouseMove:function(){return e((0,g.Sc)("user_details_policies"))},children:(0,A.jsx)(a.NZf,{separator:!0,sx:{marginBottom:15},actions:(0,A.jsx)(v.Z,{tooltip:be?"Assign Policies":(0,x.MK)(x.W2,"assign policies"),children:(0,A.jsx)(a.zxk,{id:"assign-policies",label:"Assign Policies",onClick:function(){_(!0)},icon:(0,A.jsx)(a.v42,{}),variant:"callAction",disabled:!be})}),children:"Policies"})}),(0,A.jsx)(a.xuv,{children:(0,A.jsx)(a.wQF,{itemActions:[{type:"view",onClick:function(e){s("".concat(x.gA.POLICIES,"/").concat((0,d.LL)(e.policy)))}}],columns:[{label:"Name",elementKey:"policy"}],isLoading:u,records:$,entityName:"Policies",idField:"policy"})})]})}]})})]})})]})},H=s(58429),J=s(64554),X=function(e){var t=e.icon,s=e.description;return(0,A.jsxs)(J.Z,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[t," ",(0,A.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:s})]})},q=function(){return(0,A.jsxs)(J.Z,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px",marginTop:{xs:"0px"}},children:[(0,A.jsxs)(J.Z,{sx:{fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center",marginBottom:"16px","& .min-icon":{height:"21px",width:"21px",marginRight:"15px"}},children:[(0,A.jsx)(a.M9A,{}),(0,A.jsx)("div",{children:"Learn more about the Users feature"})]}),(0,A.jsxs)(J.Z,{sx:{fontSize:"14px",marginBottom:"15px"},children:["A MinIO user consists of a unique access key (username) and corresponding secret key (password). Clients must authenticate their identity by specifying both a valid access key (username) and the corresponding secret key (password) of an existing MinIO user.",(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"Each user can have one or more assigned policies that explicitly list the actions and resources to which that user has access. Users can also inherit policies from the groups in which they have membership.",(0,A.jsx)("br",{})]}),(0,A.jsxs)(J.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,A.jsx)(X,{icon:(0,A.jsx)(a.oyc,{}),description:"Create Users"}),(0,A.jsx)(X,{icon:(0,A.jsx)(a.wws,{}),description:"Manage Groups"}),(0,A.jsx)(X,{icon:(0,A.jsx)(a.QXQ,{}),description:"Assign Policies"})]})]})},$=function(){var e=(0,y.TL)(),t=(0,_.v9)((function(e){return e.createUser.userName}));return(0,A.jsx)(a.Wzg,{id:"accesskey-input",name:"accesskey-input",label:"User Name",value:t,autoFocus:!0,onChange:function(t){e((0,F.b4)(t.target.value))}})},ee=s(20165),te=s(3579),se=function(){var e=(0,y.TL)(),t=(0,_.v9)((function(e){return e.createUser.showPassword})),s=(0,_.v9)((function(e){return e.createUser.secretKey}));return(0,A.jsx)(a.Wzg,{id:"standard-multiline-static",name:"standard-multiline-static",label:"Password",type:t?"text":"password",value:s,onChange:function(t){e((0,F.xz)(t.target.value))},autoComplete:"current-password",overlayIcon:t?(0,A.jsx)(ee.Z,{}):(0,A.jsx)(te.Z,{}),overlayAction:function(){return e((0,F.R5)(!t))}})},ne=function(){var e=(0,y.TL)(),t=(0,_.v9)((function(e){return e.createUser.selectedPolicies})),s=(0,_.v9)((function(e){return e.createUser.selectedGroups})),i=(0,_.v9)((function(e){return e.createUser.addLoading})),c=(0,_.v9)((function(e){return e.createUser.sendEnabled})),o=(0,_.v9)((function(e){return e.createUser.secretKeylength})),l=(0,r.s0)();e((0,F.B$)());return(0,n.useEffect)((function(){e((0,g.Sc)("add_user"))}),[]),(0,A.jsx)(n.Fragment,{children:(0,A.jsxs)(a.rjZ,{item:!0,xs:12,children:[(0,A.jsx)(b.Z,{label:(0,A.jsx)(a.hbI,{label:"Users",onClick:function(){return l(x.gA.USERS)}}),actions:(0,A.jsx)(S.Z,{})}),(0,A.jsx)(a.Xgh,{children:(0,A.jsx)(a.ltY,{title:"Create User",icon:(0,A.jsx)(a.P3B,{}),helpBox:(0,A.jsx)(q,{}),children:(0,A.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(t){!function(t){if(t.preventDefault(),o<8)return e((0,g.Ih)({errorMessage:"Passwords must be at least 8 characters long",detailedError:""})),void e((0,F.NV)(!1));i||(e((0,F.NV)(!0)),e((0,H.h)()).unwrap().then((function(){return l("".concat(x.gA.USERS))})))}(t)},children:[(0,A.jsx)($,{}),(0,A.jsx)(se,{}),(0,A.jsx)(U.Z,{selectedPolicy:t}),(0,A.jsx)(w.Z,{selectedGroups:s,setSelectedGroups:function(t){e((0,F.wY)(t))}}),i&&(0,A.jsx)(a.rjZ,{item:!0,xs:12,children:(0,A.jsx)(a.kod,{})}),(0,A.jsxs)(a.rjZ,{item:!0,xs:12,sx:u.ID.modalButtonBar,children:[(0,A.jsx)(a.zxk,{id:"clear-add-user",type:"button",variant:"regular",onClick:function(t){e((0,H.S)())},label:"Clear"}),(0,A.jsx)(a.zxk,{id:"save-user",type:"submit",variant:"callAction",color:"primary",disabled:i||!c,label:"Save"})]})]})})})]})})},re=s(1413),ie=s(92217),ce=function(e){var t=e.icon,s=e.description;return(0,A.jsxs)(J.Z,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[t," ",(0,A.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:s})]})},oe=function(){return(0,A.jsxs)(J.Z,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px",marginTop:{xs:"0px"}},children:[(0,A.jsxs)(J.Z,{sx:{fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center",marginBottom:"16px",paddingBottom:"20px","& .min-icon":{height:"21px",width:"21px",marginRight:"15px"}},children:[(0,A.jsx)(a.M9A,{}),(0,A.jsx)("div",{children:"Learn more about Access Keys"})]}),(0,A.jsxs)(J.Z,{sx:{fontSize:"14px",marginBottom:"15px"},children:[(0,A.jsxs)(J.Z,{sx:{paddingBottom:"20px"},children:[(0,A.jsx)(ce,{icon:(0,A.jsx)(a.nO6,{}),description:"Create Access Keys"}),(0,A.jsx)(J.Z,{sx:{paddingTop:"20px"},children:"Access Keys inherit the policies explicitly attached to the parent user, and the policies attached to each group in which the parent user has membership."})]}),(0,A.jsxs)(J.Z,{sx:{paddingBottom:"20px"},children:[(0,A.jsx)(ce,{icon:(0,A.jsx)(a.tvm,{}),description:"Assign Custom Credentials"}),(0,A.jsx)(J.Z,{sx:{paddingTop:"10px"},children:"Randomized access credentials are recommended, and provided by default. You may use your own custom Access Key and Secret Key by replacing the default values. After creation of any Access Key, you will be given the opportunity to view and download the account credentials."}),(0,A.jsx)(J.Z,{sx:{paddingTop:"10px"},children:"Access Keys support programmatic access by applications. You cannot use a Access Key to log into the MinIO Console."})]}),(0,A.jsxs)(J.Z,{sx:{paddingBottom:"20px"},children:[(0,A.jsx)(ce,{icon:(0,A.jsx)(a.v42,{}),description:"Assign Access Policies"}),(0,A.jsx)(J.Z,{sx:{paddingTop:"10px"},children:"You can specify an optional JSON-formatted IAM policy to further restrict Access Key access to a subset of the actions and resources explicitly allowed for the parent user. Additional access beyond that of the parent user cannot be implemented through these policies."}),(0,A.jsx)(J.Z,{sx:{paddingTop:"10px"},children:"You cannot modify the optional Access Key IAM policy after saving."})]})]}),(0,A.jsx)(J.Z,{sx:{display:"flex",flexFlow:"column"}})]})},ae=s(60680),le=function(){var e=(0,y.TL)(),t=(0,r.UO)(),s=(0,r.s0)(),i=(0,n.useState)(!1),c=(0,o.Z)(i,2),l=c[0],p=c[1],f=(0,n.useState)((0,d.zO)(20)),m=(0,o.Z)(f,2),j=m[0],v=m[1],Z=(0,n.useState)((0,d.zO)(40)),C=(0,o.Z)(Z,2),I=C[0],w=C[1],E=(0,n.useState)(!1),k=(0,o.Z)(E,2),_=k[0],K=k[1],U=(0,n.useState)(null),F=(0,o.Z)(U,2),L=F[0],P=F[1],M=(0,n.useState)(""),R=(0,o.Z)(M,2),O=R[0],N=R[1],D=(0,d.IO)(t.userName||"");(0,n.useEffect)((function(){l&&h.Z.invoke("POST","/api/v1/user/".concat((0,d.LL)(D),"/service-account-credentials"),{policy:O,accessKey:j,secretKey:I}).then((function(e){p(!1),P({accessKey:e.accessKey||"",secretKey:e.secretKey||"",url:e.url||""})})).catch((function(t){p(!1),e((0,g.Ih)(t))}))}),[l,p,e,O,D,j,I]),(0,n.useEffect)((function(){_&&h.Z.invoke("GET","/api/v1/user/".concat((0,d.LL)(D),"/policies")).then((function(e){N(JSON.stringify(JSON.parse(e.policy),null,4))})).catch((function(e){(0,g.Ih)(e)}))}),[_,D]);return(0,n.useEffect)((function(){e((0,g.Sc)("add_user_SA"))}),[]),(0,A.jsxs)(n.Fragment,{children:[L&&(0,A.jsx)(T.Z,{newServiceAccount:L,open:!0,closeModal:function(){P(null),s("".concat(x.gA.USERS,"/").concat((0,d.LL)(D)))},entity:"Access Key"}),(0,A.jsxs)(a.rjZ,{item:!0,xs:12,children:[(0,A.jsx)(b.Z,{label:(0,A.jsx)(a.hbI,{onClick:function(){return s("".concat(x.gA.USERS,"/").concat((0,d.LL)(D)))},label:"User Details - "+D}),actions:(0,A.jsx)(S.Z,{})}),(0,A.jsx)(a.Xgh,{children:(0,A.jsx)(a.ltY,{helpBox:(0,A.jsx)(oe,{}),icon:(0,A.jsx)(a.tVY,{}),title:"Create Access Key for ".concat(D),children:(0,A.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),function(e){e.preventDefault(),p(!0)}(e)},children:[(0,A.jsx)(a.Wzg,{value:j,label:"Access Key",id:"accessKey",name:"accessKey",placeholder:"Enter Access Key",onChange:function(e){v(e.target.value)},startIcon:(0,A.jsx)(a.nO6,{})}),(0,A.jsx)(a.Wzg,{value:I,label:"Secret Key",id:"secretKey",name:"secretKey",type:"password",placeholder:"Enter Secret Key",onChange:function(e){w(e.target.value)},startIcon:(0,A.jsx)(a.tvm,{})}),(0,A.jsx)(a.rsf,{value:"serviceAccountPolicy",id:"serviceAccountPolicy",name:"serviceAccountPolicy",checked:_,onChange:function(e){K(e.target.checked)},label:"Restrict beyond user policy",description:"You can specify an optional JSON-formatted IAM policy to further restrict Access Key access to a subset of the actions and resources explicitly allowed for the parent user. Additional access beyond that of the parent user cannot be implemented through these policies."}),_&&(0,A.jsxs)(a.rjZ,{item:!0,xs:12,children:[(0,A.jsx)(a.xuv,{children:(0,A.jsx)(ae.Z,{children:"Current User Policy - edit the JSON to remove permissions for this Access Key"})}),(0,A.jsx)(a.rjZ,{item:!0,xs:12,sx:(0,re.Z)({},u.ID.formScrollable),children:(0,A.jsx)(ie.Z,{value:O,onChange:function(e){N(e)},editorHeight:"350px"})})]}),(0,A.jsxs)(a.rjZ,{item:!0,xs:12,sx:(0,re.Z)({},u.ID.modalButtonBar),children:[(0,A.jsx)(a.zxk,{id:"clear",type:"button",variant:"regular",onClick:function(){P(null),v(""),w("")},label:"Clear"}),(0,A.jsx)(a.zxk,{id:"create-sa",type:"submit",variant:"callAction",color:"primary",label:"Create"})]})]})})})]})]})},ue=function(){return(0,A.jsxs)(r.Z5,{children:[(0,A.jsx)(r.AW,{path:"add-user",element:(0,A.jsx)(ne,{})}),(0,A.jsx)(r.AW,{path:":userName",element:(0,A.jsx)(Q,{})}),(0,A.jsx)(r.AW,{path:"new-user-sa/:userName",element:(0,A.jsx)(le,{})}),(0,A.jsx)(r.AW,{path:"/",element:(0,A.jsx)(I,{})}),(0,A.jsx)(r.AW,{element:(0,A.jsx)(i.Z,{})})]})}},3579:function(e,t,s){var n=s(64836);t.Z=void 0;var r=n(s(45649)),i=s(80184),c=(0,r.default)((0,i.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"}),"RemoveRedEye");t.Z=c},20165:function(e,t,s){var n=s(64836);t.Z=void 0;var r=n(s(45649)),i=s(80184),c=(0,r.default)((0,i.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}),"VisibilityOff");t.Z=c}}]); +//# sourceMappingURL=4563.be189475.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/4563.be189475.chunk.js.map b/portal-ui/build/static/js/4563.be189475.chunk.js.map new file mode 100644 index 0000000000..840721ba98 --- /dev/null +++ b/portal-ui/build/static/js/4563.be189475.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/4563.be189475.chunk.js","mappings":"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","sources":["screens/Console/Account/DeleteServiceAccount.tsx","screens/Console/Common/CredentialsPrompt/CredentialItem.tsx","screens/Console/Common/CredentialsPrompt/CredentialsPrompt.tsx","screens/Console/Common/PanelTitle/PanelTitle.tsx","screens/Console/Policies/PolicySelectors.tsx","screens/Console/Users/DeleteUser.tsx","screens/Console/Users/GroupsSelectors.tsx","screens/Console/Users/ListUsers.tsx","screens/Console/Users/ChangeUserGroups.tsx","screens/Console/Users/SetUserPolicies.tsx","screens/Console/Users/UserServiceAccountsPanel.tsx","screens/Console/Account/ChangeUserPasswordModal.tsx","screens/Console/Users/UserDetails.tsx","screens/Console/Users/AddUserHelpBox.tsx","screens/Console/Users/UserSelector.tsx","screens/Console/Users/PasswordSelector.tsx","screens/Console/Users/AddUserScreen.tsx","screens/Console/Users/AddUserServiceAccountHelpBox.tsx","screens/Console/Users/AddUserServiceAccountScreen.tsx","screens/Console/Users/Users.tsx","../node_modules/@mui/icons-material/RemoveRedEye.js","../node_modules/@mui/icons-material/VisibilityOff.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 } from \"react\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\n\ninterface IDeleteServiceAccountProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedServiceAccount: string | null;\n}\n\nconst DeleteServiceAccount = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedServiceAccount,\n}: IDeleteServiceAccountProps) => {\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\n if (!selectedServiceAccount) {\n return null;\n }\n\n const onConfirmDelete = () => {\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/service-accounts/${encodeURLString(selectedServiceAccount)}`,\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 Access Key{\" \"}\n \n {selectedServiceAccount}\n \n ?\n \n }\n />\n );\n};\n\nexport default DeleteServiceAccount;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Button, CopyIcon, InputLabel, ReadBox, Box } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface ICredentialsItem {\n label?: string;\n value?: string;\n}\n\nconst CredentialItem = ({ label = \"\", value = \"\" }: ICredentialsItem) => {\n const dispatch = useAppDispatch();\n\n return (\n \n {label}\n \n {\n dispatch(setModalSnackMessage(`${label} copied to clipboard`));\n }}\n style={{\n marginRight: \"5px\",\n width: \"28px\",\n height: \"28px\",\n padding: \"0px\",\n }}\n icon={}\n />\n \n }\n >\n {value}\n \n \n );\n};\n\nexport default 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, { Fragment } from \"react\";\nimport get from \"lodash/get\";\nimport styled from \"styled-components\";\nimport {\n Box,\n Button,\n DownloadIcon,\n ServiceAccountCredentialsIcon,\n WarnIcon,\n Grid,\n} from \"mds\";\nimport { NewServiceAccount } from \"./types\";\nimport ModalWrapper from \"../ModalWrapper/ModalWrapper\";\nimport CredentialItem from \"./CredentialItem\";\nimport TooltipWrapper from \"../TooltipWrapper/TooltipWrapper\";\nimport { modalStyleUtils } from \"../FormComponents/common/styleLibrary\";\n\nconst WarningBlock = styled.div(({ theme }) => ({\n color: \"red\", // TODO: Change this to themed color variant in mds\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\ninterface ICredentialsPromptProps {\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 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={`New ${entity} Created`}\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 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 { 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","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\n\nimport { Box, DataTable, Grid, ProgressBar } from \"mds\";\nimport { policySort } from \"../../../utils/sortFunctions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setSelectedPolicies } from \"../Users/AddUsersSlice\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"../../../api\";\n\ninterface ISelectPolicyProps {\n selectedPolicy?: string[];\n noTitle?: boolean;\n}\n\nconst PolicySelectors = ({ noTitle = false }: ISelectPolicyProps) => {\n const dispatch = useAppDispatch();\n // Local State\n const [records, setRecords] = useState([]);\n const [loading, isLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n\n const currentPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n\n const fetchPolicies = useCallback(() => {\n isLoading(true);\n\n api.policies\n .listPolicies()\n .then((res) => {\n const policies = res.data.policies ?? [];\n isLoading(false);\n setRecords(policies.sort(policySort));\n })\n .catch((err: ErrorResponseHandler) => {\n isLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }, [dispatch]);\n\n //Effects\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n if (loading) {\n fetchPolicies();\n }\n }, [loading, fetchPolicies]);\n\n const selectionChanged = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...currentPolicies]; // We clone the checkedUsers array\n\n if (checked) {\n // If the user has checked this field we need to push this to checkedUsersList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n // remove empty values\n elements = elements.filter((element) => element !== \"\");\n\n dispatch(setSelectedPolicies(elements));\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.name.includes(filter),\n );\n\n return (\n \n {loading && }\n {records.length > 0 ? (\n \n \n {\n setFilter(value);\n }}\n value={filter}\n label={!noTitle ? \"Assign Policies\" : \"\"}\n />\n \n\n \n \n ) : (\n \n No Policies Available\n \n )}\n \n );\n};\n\nexport default PolicySelectors;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { ConfirmDeleteIcon, Loader, DataTable } from \"mds\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport WarningMessage from \"../Common/WarningMessage/WarningMessage\";\nimport api from \"../../../common/api\";\nimport { useAppDispatch } from \"../../../store\";\n\ninterface IDeleteUserProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedUsers: string[] | null;\n}\n\nconst DeleteUser = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedUsers,\n}: IDeleteUserProps) => {\n const navigate = useNavigate();\n const dispatch = useAppDispatch();\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 const [loadingSA, setLoadingSA] = useState(true);\n const [hasSA, setHasSA] = useState(false);\n const [userSAList, setUserSAList] = useState([]);\n\n const userLoggedIn = localStorage.getItem(\"userLoggedIn\") || \"\";\n\n useEffect(() => {\n if (selectedUsers) {\n api\n .invoke(\"POST\", `/api/v1/users/service-accounts`, selectedUsers)\n .then((res) => {\n setUserSAList(res.userServiceAccountList);\n if (res.hasSA) {\n setHasSA(true);\n }\n setLoadingSA(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoadingSA(false);\n });\n }\n }, [selectedUsers, dispatch]);\n\n if (!selectedUsers) {\n return null;\n }\n const renderUsers = selectedUsers.map((user) => (\n
    \n {user}\n
    \n ));\n const viewAction = (selectionElement: any): void => {\n navigate(\n `${IAM_PAGES.USERS}/${encodeURLString(selectionElement.userName)}`,\n );\n onClose();\n };\n const tableActions = [\n {\n type: \"view\",\n onClick: viewAction,\n },\n ];\n\n const onConfirmDelete = () => {\n for (let user of selectedUsers) {\n if (user === userLoggedIn) {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Cannot delete currently logged in user\",\n detailedError: `Cannot delete currently logged in user ${userLoggedIn}`,\n }),\n );\n closeDeleteModalAndRefresh(true);\n } else {\n invokeDeleteApi(\"DELETE\", `/api/v1/user/${encodeURLString(user)}`);\n closeDeleteModalAndRefresh(true);\n navigate(`${IAM_PAGES.USERS}`);\n }\n }\n };\n\n interface userSACount {\n userName: string;\n numSAs: number;\n }\n\n const noSAtext =\n \"Are you sure you want to delete the following \" +\n selectedUsers.length +\n \" \" +\n \"user\" +\n (selectedUsers.length > 1 ? \"s?\" : \"?\");\n\n return (\n 1 ? \"s\" : \"\"}`}\n confirmText={\"Delete\"}\n isOpen={deleteOpen}\n titleIcon={}\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n loadingSA ? (\n \n ) : (\n \n {hasSA ? (\n \n \n \n \n ) : (\n \n {noSAtext}\n {renderUsers}\n \n )}\n \n )\n }\n />\n );\n};\n\nexport default DeleteUser;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useCallback, useEffect, useState, Fragment } from \"react\";\nimport get from \"lodash/get\";\n\nimport { Box, DataTable, Grid, ProgressBar } from \"mds\";\nimport { stringSort } from \"../../../utils/sortFunctions\";\nimport { GroupsList } from \"../Groups/types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport api from \"../../../common/api\";\nimport SearchBox from \"../Common/SearchBox\";\n\ninterface IGroupsProps {\n selectedGroups: string[];\n setSelectedGroups: any;\n}\n\nconst GroupsSelectors = ({\n selectedGroups,\n setSelectedGroups,\n}: IGroupsProps) => {\n const dispatch = useAppDispatch();\n // Local State\n const [records, setRecords] = useState([]);\n const [loading, isLoading] = useState(false);\n const [filter, setFilter] = useState(\"\");\n\n const fetchGroups = useCallback(() => {\n api\n .invoke(\"GET\", `/api/v1/groups`)\n .then((res: GroupsList) => {\n let groups = get(res, \"groups\", []);\n\n if (!groups) {\n groups = [];\n }\n setRecords(groups.sort(stringSort));\n isLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(err));\n isLoading(false);\n });\n }, [dispatch]);\n\n //Effects\n useEffect(() => {\n isLoading(true);\n }, []);\n\n useEffect(() => {\n if (loading) {\n fetchGroups();\n }\n }, [loading, fetchGroups]);\n\n const selGroups = !selectedGroups ? [] : selectedGroups;\n\n const selectionChanged = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selGroups]; // We clone the selectedGroups array\n\n if (checked) {\n // If the user has checked this field we need to push this to selectedGroupsList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedGroups(elements);\n\n return elements;\n };\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.includes(filter),\n );\n\n return (\n \n {loading && }\n {records !== null && records.length > 0 ? (\n \n \n \n \n \n \n ) : (\n \n No Groups Available\n \n )}\n \n );\n};\n\nexport default GroupsSelectors;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n AddIcon,\n Button,\n DeleteIcon,\n GroupsIcon,\n HelpBox,\n PageLayout,\n UsersIcon,\n DataTable,\n Grid,\n ProgressBar,\n} from \"mds\";\n\nimport { User, UsersList } from \"./types\";\nimport { usersSort } from \"../../../utils/sortFunctions\";\nimport { actionsTray } from \"../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport {\n addUserToGroupPermissions,\n CONSOLE_UI_RESOURCE,\n deleteUserPermissions,\n IAM_PAGES,\n IAM_SCOPES,\n listUsersPermissions,\n permissionTooltipHelper,\n S3_ALL_RESOURCES,\n viewUserPermissions,\n} from \"../../../common/SecureComponent/permissions\";\nimport api from \"../../../common/api\";\nimport AButton from \"../Common/AButton/AButton\";\nimport SearchBox from \"../Common/SearchBox\";\nimport withSuspense from \"../Common/Components/withSuspense\";\n\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../common/SecureComponent\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst DeleteUser = withSuspense(React.lazy(() => import(\"./DeleteUser\")));\nconst AddToGroup = withSuspense(React.lazy(() => import(\"./BulkAddToGroup\")));\n\nconst ListUsers = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [records, setRecords] = useState([]);\n const [loading, setLoading] = useState(true);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [addGroupOpen, setAddGroupOpen] = useState(false);\n const [filter, setFilter] = useState(\"\");\n const [checkedUsers, setCheckedUsers] = useState([]);\n\n const displayListUsers = hasPermission(\n CONSOLE_UI_RESOURCE,\n listUsersPermissions,\n );\n\n const viewUser = hasPermission(CONSOLE_UI_RESOURCE, viewUserPermissions);\n\n const addUserToGroup = hasPermission(\n CONSOLE_UI_RESOURCE,\n addUserToGroupPermissions,\n );\n\n const deleteUser = hasPermission(CONSOLE_UI_RESOURCE, deleteUserPermissions);\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n if (refresh) {\n setLoading(true);\n setCheckedUsers([]);\n }\n };\n\n const closeAddGroupBulk = (unCheckAll: boolean = false) => {\n setAddGroupOpen(false);\n if (unCheckAll) {\n setCheckedUsers([]);\n }\n };\n\n useEffect(() => {\n if (loading) {\n if (displayListUsers) {\n api\n .invoke(\"GET\", `/api/v1/users`)\n .then((res: UsersList) => {\n const users = res.users === null ? [] : res.users;\n\n setLoading(false);\n setRecords(users.sort(usersSort));\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setErrorSnackMessage(err));\n });\n } else {\n setLoading(false);\n }\n }\n }, [loading, dispatch, displayListUsers]);\n\n const filteredRecords = records.filter((elementItem) =>\n elementItem.accessKey.includes(filter),\n );\n\n const selectionChanged = (e: React.ChangeEvent) => {\n const { target: { value = \"\", checked = false } = {} } = e;\n\n let elements: string[] = [...checkedUsers]; // We clone the checkedUsers array\n\n if (checked) {\n // If the user has checked this field we need to push this to checkedUsersList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n\n setCheckedUsers(elements);\n\n return elements;\n };\n\n const viewAction = (selectionElement: any): void => {\n navigate(\n `${IAM_PAGES.USERS}/${encodeURLString(selectionElement.accessKey)}`,\n );\n };\n\n const tableActions = [\n {\n type: \"view\",\n onClick: viewAction,\n disableButtonFunction: () => !viewUser,\n },\n {\n type: \"edit\",\n onClick: viewAction,\n disableButtonFunction: () => !viewUser,\n },\n ];\n\n useEffect(() => {\n dispatch(setHelpName(\"list_users\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {deleteOpen && (\n {\n closeDeleteModalAndRefresh(refresh);\n }}\n />\n )}\n {addGroupOpen && (\n {\n closeAddGroupBulk(close);\n }}\n />\n )}\n } />\n\n \n \n \n \n \n \n {\n setDeleteOpen(true);\n }}\n label={\"Delete Selected\"}\n icon={}\n disabled={checkedUsers.length === 0}\n variant={\"secondary\"}\n aria-label=\"delete-selected-users\"\n />\n \n \n \n \n }\n disabled={checkedUsers.length <= 0}\n onClick={() => {\n if (checkedUsers.length > 0) {\n setAddGroupOpen(true);\n }\n }}\n variant={\"regular\"}\n />\n \n \n \n \n }\n onClick={() => {\n navigate(`${IAM_PAGES.USER_ADD}`);\n }}\n variant={\"callAction\"}\n disabled={\n !hasPermission(\n \"console\",\n [\n IAM_SCOPES.ADMIN_CREATE_USER,\n IAM_SCOPES.ADMIN_LIST_USER_POLICIES,\n IAM_SCOPES.ADMIN_LIST_GROUPS,\n IAM_SCOPES.ADMIN_ATTACH_USER_OR_GROUP_POLICY,\n ],\n true,\n )\n }\n />\n \n \n \n\n {loading && }\n {!loading && (\n \n {records.length > 0 && (\n \n \n \n \n \n \n }\n help={\n \n A MinIO user consists of a unique access key (username)\n and corresponding secret key (password). Clients must\n authenticate their identity by specifying both a valid\n access key (username) and the corresponding secret key\n (password) of an existing MinIO user.\n
    \n Groups provide a simplified method for managing shared\n permissions among users with common access patterns and\n workloads.\n
    \n
    \n Users inherit access permissions to data and resources\n through the groups they belong to.\n
    \n MinIO uses Policy-Based Access Control (PBAC) to define\n the authorized actions and resources to which an\n authenticated user has access. Each policy describes one\n or more actions and conditions that outline the\n permissions of a user or group of users.\n
    \n
    \n Each user can access only those resources and operations\n which are explicitly granted by the built-in role. MinIO\n denies access to any other resource or action by\n default.\n
    \n
    \n You can learn more at our{\" \"}\n \n documentation\n \n .\n
    \n }\n />\n
    \n )}\n {records.length === 0 && (\n \n \n }\n help={\n \n A MinIO user consists of a unique access key\n (username) and corresponding secret key (password).\n Clients must authenticate their identity by specifying\n both a valid access key (username) and the\n corresponding secret key (password) of an existing\n MinIO user.\n
    \n Groups provide a simplified method for managing shared\n permissions among users with common access patterns\n and workloads.\n
    \n
    \n Users inherit access permissions to data and resources\n through the groups they belong to.\n
    \n MinIO uses Policy-Based Access Control (PBAC) to\n define the authorized actions and resources to which\n an authenticated user has access. Each policy\n describes one or more actions and conditions that\n outline the permissions of a user or group of users.\n
    \n
    \n Each user can access only those resources and\n operations which are explicitly granted by the\n built-in role. MinIO denies access to any other\n resource or action by default.\n \n
    \n
    \n To get started,{\" \"}\n {\n navigate(`${IAM_PAGES.USER_ADD}`);\n }}\n >\n Create a User\n \n .\n \n
    \n }\n />\n
    \n
    \n )}\n
    \n )}\n
    \n
    \n
    \n );\n};\n\nexport default ListUsers;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useCallback, useEffect, useState, Fragment } from \"react\";\n\nimport {\n AddMembersToGroupIcon,\n Button,\n FormLayout,\n Grid,\n Box,\n ProgressBar,\n} from \"mds\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport api from \"../../../common/api\";\nimport GroupsSelectors from \"./GroupsSelectors\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\n\ninterface IChangeUserGroupsContentProps {\n closeModalAndRefresh: () => void;\n selectedUser: string;\n open: boolean;\n}\n\nconst ChangeUserGroups = ({\n closeModalAndRefresh,\n selectedUser,\n open,\n}: IChangeUserGroupsContentProps) => {\n const dispatch = useAppDispatch();\n const [addLoading, setAddLoading] = useState(false);\n const [accessKey, setAccessKey] = useState(\"\");\n const [secretKey, setSecretKey] = useState(\"\");\n const [enabled, setEnabled] = useState(false);\n const [selectedGroups, setSelectedGroups] = useState([]);\n\n const getUserInformation = useCallback(() => {\n if (!selectedUser) {\n return null;\n }\n\n api\n .invoke(\"GET\", `/api/v1/user/${encodeURLString(selectedUser)}`)\n .then((res) => {\n setAddLoading(false);\n setAccessKey(res.accessKey);\n setSelectedGroups(res.memberOf || []);\n setEnabled(res.status === \"enabled\");\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }, [selectedUser, dispatch]);\n\n useEffect(() => {\n if (selectedUser === null) {\n setAccessKey(\"\");\n setSecretKey(\"\");\n setSelectedGroups([]);\n } else {\n getUserInformation();\n }\n }, [selectedUser, getUserInformation]);\n\n const saveRecord = (event: React.FormEvent) => {\n event.preventDefault();\n\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n if (selectedUser !== null) {\n api\n .invoke(\"PUT\", `/api/v1/user/${encodeURLString(selectedUser)}`, {\n status: enabled ? \"enabled\" : \"disabled\",\n groups: selectedGroups,\n })\n .then((_) => {\n setAddLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n } else {\n api\n .invoke(\"POST\", \"/api/v1/users\", {\n accessKey,\n secretKey,\n groups: selectedGroups,\n })\n .then((_) => {\n setAddLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }\n };\n\n const resetForm = () => {\n if (selectedUser !== null) {\n setSelectedGroups([]);\n return;\n }\n setAccessKey(\"\");\n setSecretKey(\"\");\n setSelectedGroups([]);\n };\n\n const sendEnabled =\n accessKey.trim() !== \"\" &&\n ((secretKey.trim() !== \"\" && selectedUser === null) ||\n selectedUser !== null);\n return (\n {\n closeModalAndRefresh();\n }}\n modalOpen={open}\n title={\"Set Groups\"}\n titleIcon={}\n >\n \n ) => {\n saveRecord(e);\n }}\n >\n \n {\n setSelectedGroups(elements);\n }}\n />\n \n \n \n\n \n \n {addLoading && (\n \n \n \n )}\n \n \n \n );\n};\n\nexport default ChangeUserGroups;\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 { Box, Button, FormLayout, IAMPoliciesIcon, ProgressBar } from \"mds\";\n\nimport { useSelector } from \"react-redux\";\nimport Grid from \"@mui/material/Grid\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { IPolicyItem } from \"../Users/types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport api from \"../../../common/api\";\nimport PolicySelectors from \"../Policies/PolicySelectors\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setSelectedPolicies } from \"./AddUsersSlice\";\n\ninterface ISetUserPoliciesProps {\n closeModalAndRefresh: () => void;\n selectedUser: string;\n currentPolicies: IPolicyItem[];\n open: boolean;\n}\n\nconst SetUserPolicies = ({\n closeModalAndRefresh,\n selectedUser,\n currentPolicies,\n open,\n}: ISetUserPoliciesProps) => {\n const dispatch = useAppDispatch();\n //Local States\n const [loading, setLoading] = useState(false);\n const [actualPolicy, setActualPolicy] = useState([]);\n\n const statePolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n\n const SetUserPoliciesAction = () => {\n let entity = \"user\";\n let value = selectedUser;\n\n setLoading(true);\n\n api\n .invoke(\"PUT\", `/api/v1/set-policy`, {\n name: statePolicies,\n entityName: value,\n entityType: entity,\n })\n .then(() => {\n setLoading(false);\n dispatch(setSelectedPolicies([]));\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n };\n\n const resetSelection = () => {\n dispatch(setSelectedPolicies(actualPolicy));\n };\n\n useEffect(() => {\n if (open) {\n const userPolicy: string[] = currentPolicies.map((pol) => {\n return pol.policy;\n });\n setActualPolicy(userPolicy);\n dispatch(setSelectedPolicies(userPolicy));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, selectedUser]);\n\n return (\n {\n closeModalAndRefresh();\n }}\n modalOpen={open}\n title=\"Set Policies\"\n titleIcon={}\n >\n \n \n \n \n \n \n \n {loading && (\n \n \n \n )}\n \n );\n};\n\nexport default SetUserPolicies;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { AddIcon, Box, Button, DataTable, DeleteIcon, SectionTitle } from \"mds\";\nimport api from \"../../../common/api\";\nimport { NewServiceAccount } from \"../Common/CredentialsPrompt/types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport DeleteServiceAccount from \"../Account/DeleteServiceAccount\";\nimport CredentialsPrompt from \"../Common/CredentialsPrompt/CredentialsPrompt\";\n\nimport DeleteMultipleServiceAccounts from \"./DeleteMultipleServiceAccounts\";\nimport { selectSAs } from \"../Configurations/utils\";\nimport ServiceAccountPolicy from \"../Account/ServiceAccountPolicy\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_SCOPES,\n} from \"../../../common/SecureComponent/permissions\";\nimport { SecureComponent } from \"../../../common/SecureComponent\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport {\n setErrorSnackMessage,\n setHelpName,\n setSnackBarMessage,\n} from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport { ServiceAccounts } from \"../../../api/consoleApi\";\nimport { usersSort } from \"../../../utils/sortFunctions\";\nimport { ACCOUNT_TABLE_COLUMNS } from \"../Account/AccountUtils\";\n\ninterface IUserServiceAccountsProps {\n user: string;\n hasPolicy: boolean;\n}\n\nconst UserServiceAccountsPanel = ({\n user,\n hasPolicy,\n}: IUserServiceAccountsProps) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [records, setRecords] = useState([]);\n const [loading, setLoading] = useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedServiceAccount, setSelectedServiceAccount] = useState<\n string | null\n >(null);\n const [showNewCredentials, setShowNewCredentials] = useState(false);\n const [newServiceAccount, setNewServiceAccount] =\n useState(null);\n const [selectedSAs, setSelectedSAs] = useState([]);\n const [deleteMultipleOpen, setDeleteMultipleOpen] = useState(false);\n const [policyOpen, setPolicyOpen] = useState(false);\n\n useEffect(() => {\n fetchRecords();\n }, []);\n\n useEffect(() => {\n if (loading) {\n api\n .invoke(\"GET\", `/api/v1/user/${encodeURLString(user)}/service-accounts`)\n .then((res: ServiceAccounts) => {\n setLoading(false);\n const sortedRows = res.sort(usersSort);\n setRecords(sortedRows);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, setLoading, setRecords, user, dispatch]);\n\n const fetchRecords = () => {\n setLoading(true);\n };\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n\n if (refresh) {\n fetchRecords();\n }\n };\n\n const closeDeleteMultipleModalAndRefresh = (refresh: boolean) => {\n setDeleteMultipleOpen(false);\n if (refresh) {\n dispatch(setSnackBarMessage(`Access Keys deleted successfully.`));\n setSelectedSAs([]);\n setLoading(true);\n }\n };\n\n const closeCredentialsModal = () => {\n setShowNewCredentials(false);\n setNewServiceAccount(null);\n };\n\n const policyModalOpen = (selectedServiceAccount: string) => {\n setSelectedServiceAccount(selectedServiceAccount);\n setPolicyOpen(true);\n };\n\n const confirmDeleteServiceAccount = (selectedServiceAccount: string) => {\n setSelectedServiceAccount(selectedServiceAccount);\n setDeleteOpen(true);\n };\n\n const closePolicyModal = () => {\n setPolicyOpen(false);\n setLoading(true);\n };\n\n const tableActions = [\n {\n type: \"view\",\n onClick: (value: any) => {\n if (value) {\n policyModalOpen(value.accessKey);\n }\n },\n },\n {\n type: \"delete\",\n onClick: (value: any) => {\n if (value) {\n confirmDeleteServiceAccount(value.accessKey);\n }\n },\n },\n ];\n\n useEffect(() => {\n dispatch(setHelpName(\"user_details_accounts\"));\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return (\n \n {deleteOpen && (\n {\n closeDeleteModalAndRefresh(refresh);\n }}\n />\n )}\n {deleteMultipleOpen && (\n \n )}\n {showNewCredentials && (\n {\n closeCredentialsModal();\n }}\n entity=\"Access Key\"\n />\n )}\n {policyOpen && (\n \n )}\n\n \n \n {\n setDeleteMultipleOpen(true);\n }}\n label={\"Delete Selected\"}\n icon={}\n disabled={selectedSAs.length === 0}\n variant={\"secondary\"}\n />\n \n \n \n }\n onClick={() => {\n navigate(\n `/identity/users/new-user-sa/${encodeURLString(user)}`,\n );\n }}\n disabled={!hasPolicy}\n />\n \n \n \n }\n >\n Access Keys\n \n\n selectSAs(e, setSelectedSAs, selectedSAs)}\n selectedItems={selectedSAs}\n isLoading={loading}\n records={records}\n idField=\"accessKey\"\n />\n \n );\n};\n\nexport default UserServiceAccountsPanel;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport {\n Box,\n Button,\n ChangePasswordIcon,\n FormLayout,\n InputBox,\n ProgressBar,\n} from \"mds\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport {\n setErrorSnackMessage,\n setModalErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { api } from \"api\";\nimport { ApiError, ChangeUserPasswordRequest } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\n\ninterface IChangeUserPasswordProps {\n open: boolean;\n userName: string;\n closeModal: () => void;\n}\n\nconst ChangeUserPassword = ({\n open,\n userName,\n closeModal,\n}: IChangeUserPasswordProps) => {\n const dispatch = useAppDispatch();\n const [newPassword, setNewPassword] = useState(\"\");\n const [reNewPassword, setReNewPassword] = useState(\"\");\n const [loading, setLoading] = useState(false);\n\n const changeUserPassword = (event: React.FormEvent) => {\n event.preventDefault();\n\n if (loading) {\n return;\n }\n setLoading(true);\n\n if (newPassword.length < 8) {\n dispatch(\n setModalErrorSnackMessage({\n errorMessage: \"Passwords must be at least 8 characters long\",\n detailedError: \"\",\n }),\n );\n setLoading(false);\n return;\n }\n\n let request: ChangeUserPasswordRequest = {\n selectedUser: userName,\n newSecretKey: newPassword,\n };\n\n api.account\n .changeUserPassword(request)\n .then((res) => {\n setLoading(false);\n setNewPassword(\"\");\n setReNewPassword(\"\");\n dispatch(\n setSnackBarMessage(\n `Successfully updated the password for the user ${userName}.`,\n ),\n );\n closeModal();\n })\n .catch(async (res) => {\n setLoading(false);\n setNewPassword(\"\");\n setReNewPassword(\"\");\n const err = (await res.json()) as ApiError;\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n });\n };\n\n return open ? (\n {\n setNewPassword(\"\");\n setReNewPassword(\"\");\n closeModal();\n }}\n titleIcon={}\n >\n ) => {\n changeUserPassword(e);\n }}\n >\n \n \n Change password for: {userName}\n \n ) => {\n setNewPassword(event.target.value);\n }}\n label=\"New Password\"\n type=\"password\"\n value={newPassword}\n />\n ) => {\n setReNewPassword(event.target.value);\n }}\n label=\"Type New Password Again\"\n type=\"password\"\n value={reNewPassword}\n />\n \n 0 && newPassword === reNewPassword)\n }\n label={\"Save\"}\n />\n \n {loading && (\n \n \n \n )}\n \n \n \n ) : null;\n};\n\nexport default ChangeUserPassword;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { useNavigate, useParams } from \"react-router-dom\";\nimport {\n AddIcon,\n BackLink,\n Box,\n Button,\n DataTable,\n Grid,\n IAMPoliciesIcon,\n PageLayout,\n PasswordKeyIcon,\n ScreenTitle,\n SectionTitle,\n Switch,\n Tabs,\n TrashIcon,\n UsersIcon,\n} from \"mds\";\nimport { IPolicyItem } from \"./types\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { decodeURLString, encodeURLString } from \"../../../common/utils\";\nimport { setHelpName, setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport {\n assignGroupPermissions,\n assignIAMPolicyPermissions,\n CONSOLE_UI_RESOURCE,\n deleteUserPermissions,\n disableUserPermissions,\n editServiceAccountPermissions,\n enableDisableUserPermissions,\n enableUserPermissions,\n getGroupPermissions,\n IAM_PAGES,\n permissionTooltipHelper,\n} from \"../../../common/SecureComponent/permissions\";\nimport { hasPermission } from \"../../../common/SecureComponent\";\nimport { useAppDispatch } from \"../../../store\";\nimport { policyDetailsSort } from \"../../../utils/sortFunctions\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport api from \"../../../common/api\";\nimport ChangeUserGroups from \"./ChangeUserGroups\";\nimport SetUserPolicies from \"./SetUserPolicies\";\nimport UserServiceAccountsPanel from \"./UserServiceAccountsPanel\";\nimport ChangeUserPasswordModal from \"../Account/ChangeUserPasswordModal\";\nimport DeleteUser from \"./DeleteUser\";\n\ninterface IGroupItem {\n group: string;\n}\n\nconst UserDetails = () => {\n const dispatch = useAppDispatch();\n const params = useParams();\n const navigate = useNavigate();\n\n const [loading, setLoading] = useState(false);\n const [addGroupOpen, setAddGroupOpen] = useState(false);\n const [policyOpen, setPolicyOpen] = useState(false);\n const [addLoading, setAddLoading] = useState(false);\n const [enabled, setEnabled] = useState(false);\n const [selectedGroups, setSelectedGroups] = useState([]);\n const [currentGroups, setCurrentGroups] = useState([]);\n const [currentPolicies, setCurrentPolicies] = useState([]);\n const [changeUserPasswordModalOpen, setChangeUserPasswordModalOpen] =\n useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [hasPolicy, setHasPolicy] = useState(false);\n const [selectedTab, setSelectedTab] = useState(\"groups\");\n\n const enableEnabled =\n hasPermission(CONSOLE_UI_RESOURCE, enableUserPermissions) && !enabled;\n const disableEnabled =\n hasPermission(CONSOLE_UI_RESOURCE, disableUserPermissions) && enabled;\n\n const userName = decodeURLString(params.userName || \"\");\n\n const changeUserPassword = () => {\n setChangeUserPasswordModalOpen(true);\n };\n\n const deleteUser = () => {\n setDeleteOpen(true);\n };\n\n const userLoggedIn = localStorage.getItem(\"userLoggedIn\") || \"\";\n const canAssignPolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n assignIAMPolicyPermissions,\n true,\n );\n const canAssignGroup = hasPermission(\n CONSOLE_UI_RESOURCE,\n assignGroupPermissions,\n true,\n );\n\n const viewGroup = hasPermission(CONSOLE_UI_RESOURCE, getGroupPermissions);\n\n const getUserInformation = useCallback(() => {\n if (userName === \"\") {\n return null;\n }\n setLoading(true);\n api\n .invoke(\"GET\", `/api/v1/user/${encodeURLString(userName)}`)\n .then((res) => {\n setAddLoading(false);\n const memberOf = res.memberOf || [];\n setSelectedGroups(memberOf);\n\n const currentGroups: IGroupItem[] = memberOf.map((group: string) => {\n return {\n group: group,\n };\n });\n\n setCurrentGroups(currentGroups);\n const currentPolicies: IPolicyItem[] = res.policy.map(\n (policy: string) => {\n return {\n policy: policy,\n };\n },\n );\n\n currentPolicies.sort(policyDetailsSort);\n\n setCurrentPolicies(currentPolicies);\n setEnabled(res.status === \"enabled\");\n setHasPolicy(res.hasPolicy);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n setLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }, [userName, dispatch]);\n\n const saveRecord = (isEnabled: boolean) => {\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n api\n .invoke(\"PUT\", `/api/v1/user/${encodeURLString(userName)}`, {\n status: isEnabled ? \"enabled\" : \"disabled\",\n groups: selectedGroups,\n })\n .then((_) => {\n setAddLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"user_details_groups\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n getUserInformation();\n }, [getUserInformation]);\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n if (refresh) {\n getUserInformation();\n }\n };\n\n const groupViewAction = (group: any) => {\n navigate(`${IAM_PAGES.GROUPS}/${encodeURLString(group.group)}`);\n };\n\n const groupTableActions = [\n {\n type: \"view\",\n onClick: groupViewAction,\n disableButtonFunction: () => !viewGroup,\n },\n ];\n\n return (\n \n {addGroupOpen && (\n {\n setAddGroupOpen(false);\n getUserInformation();\n }}\n />\n )}\n {policyOpen && (\n {\n setPolicyOpen(false);\n getUserInformation();\n }}\n />\n )}\n {deleteOpen && (\n {\n closeDeleteModalAndRefresh(refresh);\n }}\n />\n )}\n {changeUserPasswordModalOpen && (\n setChangeUserPasswordModalOpen(false)}\n />\n )}\n \n navigate(IAM_PAGES.USERS)}\n />\n \n }\n actions={}\n />\n \n \n \n }\n title={userName}\n subTitle={\"\"}\n actions={\n \n \n User Status:\n \n \n {enabled ? \"Enabled\" : \"Disabled\"}\n \n \n {\n setEnabled(!enabled);\n saveRecord(!enabled);\n }}\n switchOnly\n disabled={!enableEnabled && !disableEnabled}\n />\n \n \n }\n variant={\"secondary\"}\n disabled={\n !hasPermission(\n CONSOLE_UI_RESOURCE,\n deleteUserPermissions,\n ) || userLoggedIn === userName\n }\n />\n \n\n \n }\n variant={\"regular\"}\n disabled={userLoggedIn === userName}\n />\n \n \n }\n sx={{ marginBottom: 15 }}\n />\n \n\n \n \n \n dispatch(setHelpName(\"user_details_groups\"))\n }\n >\n \n {\n setAddGroupOpen(true);\n }}\n icon={}\n variant={\"callAction\"}\n disabled={!canAssignGroup}\n />\n \n }\n >\n Groups\n \n \n \n dispatch(setHelpName(\"user_details_groups\"))\n }\n >\n \n \n \n ),\n },\n {\n tabConfig: {\n id: \"service_accounts\",\n label: \"Service Accounts\",\n disabled: !hasPermission(\n CONSOLE_UI_RESOURCE,\n editServiceAccountPermissions,\n ),\n },\n content: (\n \n ),\n },\n {\n tabConfig: {\n id: \"policies\",\n label: \"Policies\",\n disabled: !canAssignPolicy,\n },\n content: (\n \n \n dispatch(setHelpName(\"user_details_policies\"))\n }\n >\n \n {\n setPolicyOpen(true);\n }}\n icon={}\n variant={\"callAction\"}\n disabled={!canAssignPolicy}\n />\n \n }\n >\n Policies\n \n \n \n {\n navigate(\n `${IAM_PAGES.POLICIES}/${encodeURLString(\n policy.policy,\n )}`,\n );\n },\n },\n ]}\n columns={[{ label: \"Name\", elementKey: \"policy\" }]}\n isLoading={loading}\n records={currentPolicies}\n entityName=\"Policies\"\n idField=\"policy\"\n />\n \n \n ),\n },\n ]}\n />\n \n \n \n \n );\n};\n\nexport default UserDetails;\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 { Box } from \"@mui/material\";\nimport {\n ChangeAccessPolicyIcon,\n GroupsIcon,\n HelpIconFilled,\n UsersIcon,\n} from \"mds\";\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 AddUserHelpBox = () => {\n return (\n \n \n \n
    Learn more about the Users feature
    \n \n \n A MinIO user consists of a unique access key (username) and\n corresponding secret key (password). Clients must authenticate their\n identity by specifying both a valid access key (username) and the\n corresponding secret key (password) of an existing MinIO user.\n
    \n
    \n Each user can have one or more assigned policies that explicitly list\n the actions and resources to which that user has access. Users can also\n inherit policies from the groups in which they have membership.\n
    \n
    \n\n \n } description={`Create Users`} />\n } description={`Manage Groups`} />\n }\n description={`Assign Policies`}\n />\n \n \n );\n};\n\nexport default AddUserHelpBox;\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 { setUserName } from \"./AddUsersSlice\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { InputBox } from \"mds\";\n\nconst UserSelector = () => {\n const dispatch = useAppDispatch();\n const userName = useSelector((state: AppState) => state.createUser.userName);\n return (\n ) => {\n dispatch(setUserName(e.target.value));\n }}\n />\n );\n};\nexport default UserSelector;\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 { InputBox } from \"mds\";\nimport { setSecretKey, setShowPassword } from \"./AddUsersSlice\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\n\nconst PasswordSelector = () => {\n const dispatch = useAppDispatch();\n const showPassword = useSelector(\n (state: AppState) => state.createUser.showPassword,\n );\n const secretKey = useSelector(\n (state: AppState) => state.createUser.secretKey,\n );\n return (\n ) => {\n dispatch(setSecretKey(e.target.value));\n }}\n autoComplete=\"current-password\"\n overlayIcon={showPassword ? : }\n overlayAction={() => dispatch(setShowPassword(!showPassword))}\n />\n );\n};\nexport default PasswordSelector;\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 } from \"react\";\nimport {\n BackLink,\n Button,\n CreateUserIcon,\n FormLayout,\n Grid,\n PageLayout,\n ProgressBar,\n} from \"mds\";\nimport { createUserAsync, resetFormAsync } from \"./thunk/AddUsersThunk\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\n\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport { useNavigate } from \"react-router-dom\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { useSelector } from \"react-redux\";\nimport {\n setAddLoading,\n setSelectedGroups,\n setSendEnabled,\n} from \"./AddUsersSlice\";\nimport AddUserHelpBox from \"./AddUserHelpBox\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport PolicySelectors from \"../Policies/PolicySelectors\";\nimport UserSelector from \"./UserSelector\";\nimport PasswordSelector from \"./PasswordSelector\";\nimport GroupsSelectors from \"./GroupsSelectors\";\n\nconst AddUser = () => {\n const dispatch = useAppDispatch();\n const selectedPolicies = useSelector(\n (state: AppState) => state.createUser.selectedPolicies,\n );\n const selectedGroups = useSelector(\n (state: AppState) => state.createUser.selectedGroups,\n );\n const addLoading = useSelector(\n (state: AppState) => state.createUser.addLoading,\n );\n const sendEnabled = useSelector(\n (state: AppState) => state.createUser.sendEnabled,\n );\n const secretKeylength = useSelector(\n (state: AppState) => state.createUser.secretKeylength,\n );\n const navigate = useNavigate();\n dispatch(setSendEnabled());\n\n const saveRecord = (event: React.FormEvent) => {\n event.preventDefault();\n if (secretKeylength < 8) {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Passwords must be at least 8 characters long\",\n detailedError: \"\",\n }),\n );\n dispatch(setAddLoading(false));\n return;\n }\n if (addLoading) {\n return;\n }\n dispatch(setAddLoading(true));\n dispatch(createUserAsync())\n .unwrap() // <-- async Thunk returns a promise, that can be 'unwrapped')\n .then(() => navigate(`${IAM_PAGES.USERS}`));\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"add_user\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n \n navigate(IAM_PAGES.USERS)}\n />\n }\n actions={}\n />\n \n }\n helpBox={}\n >\n ) => {\n saveRecord(e);\n }}\n >\n \n \n \n {\n dispatch(setSelectedGroups(elements));\n }}\n />\n {addLoading && (\n \n \n \n )}\n\n \n {\n dispatch(resetFormAsync());\n }}\n label={\"Clear\"}\n />\n\n \n \n \n \n \n \n \n );\n};\n\nexport default AddUser;\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 { Box } from \"@mui/material\";\nimport {\n HelpIconFilled,\n IAMPoliciesIcon,\n PasswordKeyIcon,\n ServiceAccountIcon,\n} from \"mds\";\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 AddUserServiceAccountHelpBox = () => {\n return (\n \n \n \n
    Learn more about Access Keys
    \n \n \n \n }\n description={`Create Access Keys`}\n />\n \n Access Keys inherit the policies explicitly attached to the parent\n user, and the policies attached to each group in which the parent\n user has membership.\n \n \n \n }\n description={`Assign Custom Credentials`}\n />\n \n Randomized access credentials are recommended, and provided by\n default. You may use your own custom Access Key and Secret Key by\n replacing the default values. After creation of any Access Key, you\n will be given the opportunity to view and download the account\n credentials.\n \n \n Access Keys support programmatic access by applications. You cannot\n use a Access Key to log into the MinIO Console.\n \n \n \n }\n description={`Assign Access Policies`}\n />\n \n You can specify an optional JSON-formatted IAM policy to further\n restrict Access Key access to a subset of the actions and resources\n explicitly allowed for the parent user. Additional access beyond\n that of the parent user cannot be implemented through these\n policies.\n \n \n You cannot modify the optional Access Key IAM policy after saving.\n \n \n \n \n \n );\n};\n\nexport default AddUserServiceAccountHelpBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport {\n BackLink,\n Box,\n Button,\n FormLayout,\n Grid,\n InputBox,\n PageLayout,\n PasswordKeyIcon,\n ServiceAccountCredentialsIcon,\n ServiceAccountIcon,\n Switch,\n} from \"mds\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { NewServiceAccount } from \"../Common/CredentialsPrompt/types\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport {\n decodeURLString,\n encodeURLString,\n getRandomString,\n} from \"../../../common/utils\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport api from \"../../../../src/common/api\";\nimport CredentialsPrompt from \"../Common/CredentialsPrompt/CredentialsPrompt\";\nimport AddUserServiceAccountHelpBox from \"./AddUserServiceAccountHelpBox\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport PanelTitle from \"../Common/PanelTitle/PanelTitle\";\n\nconst AddServiceAccount = () => {\n const dispatch = useAppDispatch();\n const params = useParams();\n const navigate = useNavigate();\n\n const [addSending, setAddSending] = useState(false);\n const [accessKey, setAccessKey] = useState(getRandomString(20));\n const [secretKey, setSecretKey] = useState(getRandomString(40));\n const [isRestrictedByPolicy, setIsRestrictedByPolicy] =\n useState(false);\n const [newServiceAccount, setNewServiceAccount] =\n useState(null);\n const [policyJSON, setPolicyJSON] = useState(\"\");\n\n const userName = decodeURLString(params.userName || \"\");\n\n useEffect(() => {\n if (addSending) {\n api\n .invoke(\n \"POST\",\n `/api/v1/user/${encodeURLString(\n userName,\n )}/service-account-credentials`,\n {\n policy: policyJSON,\n accessKey: accessKey,\n secretKey: secretKey,\n },\n )\n .then((res) => {\n setAddSending(false);\n setNewServiceAccount({\n accessKey: res.accessKey || \"\",\n secretKey: res.secretKey || \"\",\n url: res.url || \"\",\n });\n })\n .catch((err: ErrorResponseHandler) => {\n setAddSending(false);\n dispatch(setErrorSnackMessage(err));\n });\n }\n }, [\n addSending,\n setAddSending,\n dispatch,\n policyJSON,\n userName,\n accessKey,\n secretKey,\n ]);\n\n useEffect(() => {\n if (isRestrictedByPolicy) {\n api\n .invoke(\"GET\", `/api/v1/user/${encodeURLString(userName)}/policies`)\n\n .then((res) => {\n setPolicyJSON(JSON.stringify(JSON.parse(res.policy), null, 4));\n })\n .catch((err: ErrorResponseHandler) => {\n setErrorSnackMessage(err);\n });\n }\n }, [isRestrictedByPolicy, userName]);\n\n const addUserServiceAccount = (e: React.FormEvent) => {\n e.preventDefault();\n setAddSending(true);\n };\n\n const resetForm = () => {\n setNewServiceAccount(null);\n setAccessKey(\"\");\n setSecretKey(\"\");\n };\n\n const closeCredentialsModal = () => {\n setNewServiceAccount(null);\n navigate(`${IAM_PAGES.USERS}/${encodeURLString(userName)}`);\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"add_user_SA\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {newServiceAccount && (\n {\n closeCredentialsModal();\n }}\n entity=\"Access Key\"\n />\n )}\n \n \n navigate(`${IAM_PAGES.USERS}/${encodeURLString(userName)}`)\n }\n label={\"User Details - \" + userName}\n />\n }\n actions={}\n />\n \n }\n icon={}\n title={`Create Access Key for ${userName}`}\n >\n ) => {\n e.preventDefault();\n addUserServiceAccount(e);\n }}\n >\n {\n setAccessKey(e.target.value);\n }}\n startIcon={}\n />\n {\n setSecretKey(e.target.value);\n }}\n startIcon={}\n />\n ) => {\n setIsRestrictedByPolicy(event.target.checked);\n }}\n label={\"Restrict beyond user policy\"}\n description={\n \"You can specify an optional JSON-formatted IAM policy to further restrict Access Key access to a subset of the actions and resources explicitly allowed for the parent user. Additional access beyond that of the parent user cannot be implemented through these policies.\"\n }\n />\n {isRestrictedByPolicy && (\n \n \n \n Current User Policy - edit the JSON to remove permissions\n for this Access Key\n \n \n \n {\n setPolicyJSON(value);\n }}\n editorHeight={\"350px\"}\n />\n \n \n )}\n \n \n\n \n \n \n \n \n \n \n );\n};\n\nexport default AddServiceAccount;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Route, Routes } from \"react-router-dom\";\nimport NotFoundPage from \"../../NotFoundPage\";\nimport ListUsers from \"./ListUsers\";\nimport UserDetails from \"./UserDetails\";\nimport AddUserScreen from \"./AddUserScreen\";\nimport AddUserServiceAccountScreen from \"./AddUserServiceAccountScreen\";\n\nconst Users = () => {\n return (\n \n } />\n } />\n }\n />\n } />\n } />\n \n );\n};\n\nexport default Users;\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'RemoveRedEye');\nexports.default = _default;","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\nexports.default = _default;"],"names":["_ref","closeDeleteModalAndRefresh","deleteOpen","selectedServiceAccount","dispatch","useAppDispatch","_useApi","useApi","err","setErrorSnackMessage","_useApi2","_slicedToArray","deleteLoading","invokeDeleteApi","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","concat","encodeURLString","onClose","confirmationContent","_jsxs","Fragment","children","style","maxWidth","whiteSpace","wordWrap","_ref$label","label","_ref$value","value","Box","sx","marginTop","InputLabel","ReadBox","actionButton","CopyToClipboard","text","Button","id","variant","onClick","setModalSnackMessage","marginRight","width","height","padding","icon","CopyIcon","WarningBlock","styled","div","theme","color","fontSize","margin","display","alignItems","download","filename","element","document","createElement","setAttribute","body","appendChild","click","removeChild","_ref2","newServiceAccount","open","closeModal","entity","consoleCreds","get","idp","ModalWrapper","modalOpen","ServiceAccountCredentialsIcon","Grid","container","item","xs","overflowY","maxHeight","fontWeight","Array","isArray","map","credentialsPair","index","CredentialItem","accessKey","secretKey","undefined","_Fragment","WarnIcon","_objectSpread","modalStyleUtils","modalButtonBar","TooltipWrapper","tooltip","consoleExtras","itemMap","url","api","path","JSON","stringify","DownloadIcon","length","allCredentials","withStyles","createStyles","root","classes","className","_ref$noTitle","noTitle","_useState","useState","_useState2","records","setRecords","_useState3","_useState4","loading","_useState5","_useState6","filter","setFilter","currentPolicies","useSelector","state","createUser","selectedPolicies","fetchPolicies","useCallback","policies","listPolicies","then","res","_res$data$policies","data","sort","policySort","catch","setModalErrorSnackMessage","useEffect","filteredRecords","elementItem","name","includes","ProgressBar","SearchBox","placeholder","onChange","DataTable","columns","elementKey","onSelect","e","targetD","target","checked","elements","_toConsumableArray","push","setSelectedPolicies","selectedItems","entityName","idField","customPaperHeight","textAlign","selectedUsers","navigate","useNavigate","loadingSA","setLoadingSA","hasSA","setHasSA","userSAList","setUserSAList","userLoggedIn","localStorage","getItem","invoke","userServiceAccountList","renderUsers","user","tableActions","type","selectionElement","IAM_PAGES","USERS","userName","noSAtext","_step","_iterator","_createForOfIteratorHelper","s","n","done","errorMessage","detailedError","f","Loader","WarningMessage","itemActions","selectedGroups","setSelectedGroups","fetchGroups","groups","stringSort","selGroups","DeleteUser","withSuspense","React","AddToGroup","setLoading","setDeleteOpen","_useState7","_useState8","addGroupOpen","setAddGroupOpen","_useState9","_useState10","_useState11","_useState12","checkedUsers","setCheckedUsers","displayListUsers","hasPermission","CONSOLE_UI_RESOURCE","listUsersPermissions","viewUser","viewUserPermissions","addUserToGroup","addUserToGroupPermissions","deleteUser","deleteUserPermissions","users","usersSort","viewAction","disableButtonFunction","setHelpName","refresh","closeModalAndRefresh","close","unCheckAll","arguments","closeAddGroupBulk","PageHeaderWrapper","actions","HelpMenu","PageLayout","actionsTray","SecureComponent","resource","scopes","IAM_SCOPES","ADMIN_DELETE_USER","matchAll","errorProps","disabled","permissionTooltipHelper","DeleteIcon","ADMIN_ADD_USER_TO_GROUP","GroupsIcon","ADMIN_CREATE_USER","ADMIN_LIST_USER_POLICIES","ADMIN_LIST_GROUPS","S3_ALL_RESOURCES","ADMIN_ATTACH_USER_OR_GROUP_POLICY","AddIcon","USER_ADD","marginBottom","ADMIN_LIST_USERS","_e$target","_e$target2","_e$target2$value","_e$target2$checked","HelpBox","iconComponent","UsersIcon","help","href","rel","AButton","selectedUser","addLoading","setAddLoading","setAccessKey","setSecretKey","enabled","setEnabled","getUserInformation","memberOf","status","sendEnabled","trim","AddMembersToGroupIcon","noValidate","autoComplete","onSubmit","preventDefault","_","FormLayout","withBorders","containerPadding","GroupsSelectors","actualPolicy","setActualPolicy","statePolicies","userPolicy","pol","policy","IAMPoliciesIcon","PolicySelectors","selectedPolicy","entityType","hasPolicy","setSelectedServiceAccount","showNewCredentials","setShowNewCredentials","setNewServiceAccount","_useState13","_useState14","selectedSAs","setSelectedSAs","_useState15","_useState16","deleteMultipleOpen","setDeleteMultipleOpen","_useState17","_useState18","policyOpen","setPolicyOpen","fetchRecords","sortedRows","policyModalOpen","confirmDeleteServiceAccount","DeleteServiceAccount","DeleteMultipleServiceAccounts","setSnackBarMessage","CredentialsPrompt","ServiceAccountPolicy","selectedAccessKey","SectionTitle","separator","justifyContent","gap","ADMIN_CREATE_SERVICEACCOUNT","ADMIN_UPDATE_SERVICEACCOUNT","ADMIN_REMOVE_SERVICEACCOUNT","ADMIN_LIST_SERVICEACCOUNTS","ACCOUNT_TABLE_COLUMNS","selectSAs","newPassword","setNewPassword","reNewPassword","setReNewPassword","ChangePasswordIcon","event","request","newSecretKey","account","changeUserPassword","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","json","sent","errorToHandler","stop","_x","apply","InputBox","params","useParams","currentGroups","setCurrentGroups","setCurrentPolicies","changeUserPasswordModalOpen","setChangeUserPasswordModalOpen","_useState19","_useState20","_useState21","_useState22","setHasPolicy","_useState23","_useState24","selectedTab","setSelectedTab","enableEnabled","enableUserPermissions","disableEnabled","disableUserPermissions","decodeURLString","canAssignPolicy","assignIAMPolicyPermissions","canAssignGroup","assignGroupPermissions","viewGroup","getGroupPermissions","group","policyDetailsSort","groupTableActions","GROUPS","ChangeUserGroups","SetUserPolicies","ChangeUserPasswordModal","BackLink","ScreenTitle","subTitle","enableDisableUserPermissions","Switch","indicatorLabels","isEnabled","switchOnly","TrashIcon","PasswordKeyIcon","Tabs","currentTabOrPath","onTabClick","options","tabConfig","content","onMouseMove","editServiceAccountPermissions","UserServiceAccountsPanel","POLICIES","FeatureItem","description","fontStyle","flex","border","borderRadius","flexFlow","HelpIconFilled","ChangeAccessPolicyIcon","autoFocus","setUserName","showPassword","overlayIcon","VisibilityOffIcon","RemoveRedEyeIcon","overlayAction","setShowPassword","secretKeylength","setSendEnabled","CreateUserIcon","helpBox","AddUserHelpBox","createUserAsync","unwrap","saveRecord","UserSelector","PasswordSelector","resetFormAsync","paddingBottom","ServiceAccountIcon","paddingTop","addSending","setAddSending","getRandomString","isRestrictedByPolicy","setIsRestrictedByPolicy","policyJSON","setPolicyJSON","parse","AddUserServiceAccountHelpBox","addUserServiceAccount","startIcon","PanelTitle","formScrollable","CodeMirrorWrapper","editorHeight","Routes","Route","AddUserScreen","UserDetails","AddUserServiceAccountScreen","ListUsers","NotFoundPage","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/4619.8811b76a.chunk.js b/portal-ui/build/static/js/4619.471aee8b.chunk.js similarity index 94% rename from portal-ui/build/static/js/4619.8811b76a.chunk.js rename to portal-ui/build/static/js/4619.471aee8b.chunk.js index bba20e67fa..c3b32530b1 100644 --- a/portal-ui/build/static/js/4619.8811b76a.chunk.js +++ b/portal-ui/build/static/js/4619.471aee8b.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[4619],{94619:function(e,t,a){a.r(t);var l=a(29439),n=a(72791),s=a(56028),i=a(29945),o=a(31776),r=a(82342),c=a(23814),u=a(87995),d=a(81551),p=a(80184);t.default=function(e){var t=e.modalOpen,a=e.onClose,f=e.bucket,h=e.prefilledRoute,x=(0,d.TL)(),b=(0,n.useState)(""),k=(0,l.Z)(b,2),y=k[0],v=k[1],m=(0,n.useState)("readonly"),j=(0,l.Z)(m,2),C=j[0],A=j[1];(0,n.useEffect)((function(){h&&v(h)}),[h]);return(0,p.jsx)(s.Z,{modalOpen:t,title:"Add Anonymous Access Rule",onClose:a,titleIcon:(0,p.jsx)(i.sR0,{}),children:(0,p.jsxs)(i.ltY,{withBorders:!1,containerPadding:!1,children:[(0,p.jsx)(i.Wzg,{value:y,label:"Prefix",id:"prefix",name:"prefix",placeholder:"Enter Prefix",onChange:function(e){v(e.target.value)},tooltip:"Enter '/' to apply the rule to all prefixes and objects at the bucket root. Do not include the wildcard asterisk '*' as part of the prefix *unless* it is an explicit part of the prefix name. The Console automatically appends an asterisk to the appropriate sections of the resulting IAM policy."}),(0,p.jsx)(i.PhF,{id:"access",name:"Access",onChange:function(e){A(e)},label:"Access",value:C,options:[{label:"readonly",value:"readonly"},{label:"writeonly",value:"writeonly"},{label:"readwrite",value:"readwrite"}],disabled:!1}),(0,p.jsxs)(i.rjZ,{item:!0,xs:12,sx:c.ID.modalButtonBar,children:[(0,p.jsx)(i.zxk,{id:"clear",type:"button",variant:"regular",onClick:function(){v(""),A("readonly")},label:"Clear"}),(0,p.jsx)(i.zxk,{id:"add-access-save",type:"submit",variant:"callAction",disabled:""===y.trim(),onClick:function(){o.h.bucket.setAccessRuleWithBucket(f,{prefix:y,access:C}).then((function(e){x((0,u.y1)("Access Rule added successfully")),a()})).catch((function(e){x((0,u.Ih)((0,r.g)(e.error))),a()}))},label:"Save"})]})]})})}}}]); -//# sourceMappingURL=4619.8811b76a.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[4619],{94619:function(e,t,a){a.r(t);var l=a(29439),n=a(72791),s=a(56028),i=a(29945),o=a(31776),r=a(82342),c=a(23814),u=a(87995),d=a(44690),p=a(80184);t.default=function(e){var t=e.modalOpen,a=e.onClose,f=e.bucket,h=e.prefilledRoute,x=(0,d.TL)(),b=(0,n.useState)(""),k=(0,l.Z)(b,2),y=k[0],v=k[1],m=(0,n.useState)("readonly"),j=(0,l.Z)(m,2),C=j[0],A=j[1];(0,n.useEffect)((function(){h&&v(h)}),[h]);return(0,p.jsx)(s.Z,{modalOpen:t,title:"Add Anonymous Access Rule",onClose:a,titleIcon:(0,p.jsx)(i.sR0,{}),children:(0,p.jsxs)(i.ltY,{withBorders:!1,containerPadding:!1,children:[(0,p.jsx)(i.Wzg,{value:y,label:"Prefix",id:"prefix",name:"prefix",placeholder:"Enter Prefix",onChange:function(e){v(e.target.value)},tooltip:"Enter '/' to apply the rule to all prefixes and objects at the bucket root. Do not include the wildcard asterisk '*' as part of the prefix *unless* it is an explicit part of the prefix name. The Console automatically appends an asterisk to the appropriate sections of the resulting IAM policy."}),(0,p.jsx)(i.PhF,{id:"access",name:"Access",onChange:function(e){A(e)},label:"Access",value:C,options:[{label:"readonly",value:"readonly"},{label:"writeonly",value:"writeonly"},{label:"readwrite",value:"readwrite"}],disabled:!1}),(0,p.jsxs)(i.rjZ,{item:!0,xs:12,sx:c.ID.modalButtonBar,children:[(0,p.jsx)(i.zxk,{id:"clear",type:"button",variant:"regular",onClick:function(){v(""),A("readonly")},label:"Clear"}),(0,p.jsx)(i.zxk,{id:"add-access-save",type:"submit",variant:"callAction",disabled:""===y.trim(),onClick:function(){o.h.bucket.setAccessRuleWithBucket(f,{prefix:y,access:C}).then((function(e){x((0,u.y1)("Access Rule added successfully")),a()})).catch((function(e){x((0,u.Ih)((0,r.g)(e.error))),a()}))},label:"Save"})]})]})})}}}]); +//# sourceMappingURL=4619.471aee8b.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/4619.8811b76a.chunk.js.map b/portal-ui/build/static/js/4619.471aee8b.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/4619.8811b76a.chunk.js.map rename to portal-ui/build/static/js/4619.471aee8b.chunk.js.map index 9134a6e0ad..5e32128502 100644 --- a/portal-ui/build/static/js/4619.8811b76a.chunk.js.map +++ b/portal-ui/build/static/js/4619.471aee8b.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/4619.8811b76a.chunk.js","mappings":"sOA6IA,UAnGsB,SAAHA,GAKI,IAJrBC,EAASD,EAATC,UACAC,EAAOF,EAAPE,QACAC,EAAMH,EAANG,OACAC,EAAcJ,EAAdI,eAEMC,GAAWC,EAAAA,EAAAA,MAEjBC,GAA4BC,EAAAA,EAAAA,UAAS,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAjCI,EAAMF,EAAA,GAAEG,EAASH,EAAA,GACxBI,GAA4CL,EAAAA,EAAAA,UAAc,YAAWM,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAA9DE,EAAcD,EAAA,GAAEE,EAAiBF,EAAA,IAExCG,EAAAA,EAAAA,YAAU,WACJb,GACFQ,EAAUR,EAEd,GAAG,CAACA,IA6BJ,OACEc,EAAAA,EAAAA,KAACC,EAAAA,EAAY,CACXlB,UAAWA,EACXmB,MAAM,4BACNlB,QAASA,EACTmB,WAAWH,EAAAA,EAAAA,KAACI,EAAAA,IAAiB,IAAIC,UAEjCC,EAAAA,EAAAA,MAACC,EAAAA,IAAU,CAACC,aAAa,EAAOC,kBAAkB,EAAMJ,SAAA,EACtDL,EAAAA,EAAAA,KAACU,EAAAA,IAAQ,CACPC,MAAOlB,EACPmB,MAAO,SACPC,GAAI,SACJC,KAAM,SACNC,YAAa,eACbC,SAAU,SAACC,GACTvB,EAAUuB,EAAEC,OAAOP,MACrB,EACAQ,QACE,2SAGJnB,EAAAA,EAAAA,KAACoB,EAAAA,IAAM,CACLP,GAAG,SACHC,KAAK,SACLE,SAAU,SAACL,GACTb,EAAkBa,EACpB,EACAC,MAAM,SACND,MAAOd,EACPwB,QAxDc,CACpB,CAAET,MAAO,WAAYD,MAAO,YAC5B,CAAEC,MAAO,YAAaD,MAAO,aAC7B,CAAEC,MAAO,YAAaD,MAAO,cAsDvBW,UAAU,KAEZhB,EAAAA,EAAAA,MAACiB,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAIC,GAAIC,EAAAA,GAAgBC,eAAevB,SAAA,EACpDL,EAAAA,EAAAA,KAAC6B,EAAAA,IAAM,CACLhB,GAAI,QACJiB,KAAK,SACLC,QAAQ,UACRC,QA1DQ,WAChBtC,EAAU,IACVI,EAAkB,WACpB,EAwDUc,MAAO,WAGTZ,EAAAA,EAAAA,KAAC6B,EAAAA,IAAM,CACLhB,GAAI,kBACJiB,KAAK,SACLC,QAAQ,aACRT,SAA4B,KAAlB7B,EAAOwC,OACjBD,QA9DY,WACpBE,EAAAA,EAAIjD,OACDkD,wBAAwBlD,EAAQ,CAC/BQ,OAAQA,EACR2C,OAAQvC,IAETwC,MAAK,SAACC,GACLnD,GAASoD,EAAAA,EAAAA,IAAmB,mCAC5BvD,GACF,IACCwD,OAAM,SAACF,GACNnD,GAASsD,EAAAA,EAAAA,KAAqBC,EAAAA,EAAAA,GAAeJ,EAAIK,SACjD3D,GACF,GACJ,EAiDU4B,MAAO,gBAMnB,C","sources":["screens/Console/Buckets/BucketDetails/AddAccessRule.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 ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport {\n AddAccessRuleIcon,\n Button,\n FormLayout,\n Grid,\n InputBox,\n Select,\n} from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport {\n setErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IAddAccessRule {\n modalOpen: boolean;\n onClose: () => any;\n bucket: string;\n prefilledRoute?: string;\n}\n\nconst AddAccessRule = ({\n modalOpen,\n onClose,\n bucket,\n prefilledRoute,\n}: IAddAccessRule) => {\n const dispatch = useAppDispatch();\n\n const [prefix, setPrefix] = useState(\"\");\n const [selectedAccess, setSelectedAccess] = useState(\"readonly\");\n\n useEffect(() => {\n if (prefilledRoute) {\n setPrefix(prefilledRoute);\n }\n }, [prefilledRoute]);\n\n const accessOptions = [\n { label: \"readonly\", value: \"readonly\" },\n { label: \"writeonly\", value: \"writeonly\" },\n { label: \"readwrite\", value: \"readwrite\" },\n ];\n\n const resetForm = () => {\n setPrefix(\"\");\n setSelectedAccess(\"readonly\");\n };\n\n const createProcess = () => {\n api.bucket\n .setAccessRuleWithBucket(bucket, {\n prefix: prefix,\n access: selectedAccess,\n })\n .then((res: any) => {\n dispatch(setSnackBarMessage(\"Access Rule added successfully\"));\n onClose();\n })\n .catch((res) => {\n dispatch(setErrorSnackMessage(errorToHandler(res.error)));\n onClose();\n });\n };\n\n return (\n }\n >\n \n {\n setPrefix(e.target.value);\n }}\n tooltip={\n \"Enter '/' to apply the rule to all prefixes and objects at the bucket root. Do not include the wildcard asterisk '*' as part of the prefix *unless* it is an explicit part of the prefix name. The Console automatically appends an asterisk to the appropriate sections of the resulting IAM policy.\"\n }\n />\n {\n setSelectedAccess(value);\n }}\n label=\"Access\"\n value={selectedAccess}\n options={accessOptions}\n disabled={false}\n />\n \n \n\n \n \n \n \n );\n};\n\nexport default AddAccessRule;\n"],"names":["_ref","modalOpen","onClose","bucket","prefilledRoute","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","prefix","setPrefix","_useState3","_useState4","selectedAccess","setSelectedAccess","useEffect","_jsx","ModalWrapper","title","titleIcon","AddAccessRuleIcon","children","_jsxs","FormLayout","withBorders","containerPadding","InputBox","value","label","id","name","placeholder","onChange","e","target","tooltip","Select","options","disabled","Grid","item","xs","sx","modalStyleUtils","modalButtonBar","Button","type","variant","onClick","trim","api","setAccessRuleWithBucket","access","then","res","setSnackBarMessage","catch","setErrorSnackMessage","errorToHandler","error"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/4619.471aee8b.chunk.js","mappings":"sOA6IA,UAnGsB,SAAHA,GAKI,IAJrBC,EAASD,EAATC,UACAC,EAAOF,EAAPE,QACAC,EAAMH,EAANG,OACAC,EAAcJ,EAAdI,eAEMC,GAAWC,EAAAA,EAAAA,MAEjBC,GAA4BC,EAAAA,EAAAA,UAAS,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAjCI,EAAMF,EAAA,GAAEG,EAASH,EAAA,GACxBI,GAA4CL,EAAAA,EAAAA,UAAc,YAAWM,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAA9DE,EAAcD,EAAA,GAAEE,EAAiBF,EAAA,IAExCG,EAAAA,EAAAA,YAAU,WACJb,GACFQ,EAAUR,EAEd,GAAG,CAACA,IA6BJ,OACEc,EAAAA,EAAAA,KAACC,EAAAA,EAAY,CACXlB,UAAWA,EACXmB,MAAM,4BACNlB,QAASA,EACTmB,WAAWH,EAAAA,EAAAA,KAACI,EAAAA,IAAiB,IAAIC,UAEjCC,EAAAA,EAAAA,MAACC,EAAAA,IAAU,CAACC,aAAa,EAAOC,kBAAkB,EAAMJ,SAAA,EACtDL,EAAAA,EAAAA,KAACU,EAAAA,IAAQ,CACPC,MAAOlB,EACPmB,MAAO,SACPC,GAAI,SACJC,KAAM,SACNC,YAAa,eACbC,SAAU,SAACC,GACTvB,EAAUuB,EAAEC,OAAOP,MACrB,EACAQ,QACE,2SAGJnB,EAAAA,EAAAA,KAACoB,EAAAA,IAAM,CACLP,GAAG,SACHC,KAAK,SACLE,SAAU,SAACL,GACTb,EAAkBa,EACpB,EACAC,MAAM,SACND,MAAOd,EACPwB,QAxDc,CACpB,CAAET,MAAO,WAAYD,MAAO,YAC5B,CAAEC,MAAO,YAAaD,MAAO,aAC7B,CAAEC,MAAO,YAAaD,MAAO,cAsDvBW,UAAU,KAEZhB,EAAAA,EAAAA,MAACiB,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAIC,GAAIC,EAAAA,GAAgBC,eAAevB,SAAA,EACpDL,EAAAA,EAAAA,KAAC6B,EAAAA,IAAM,CACLhB,GAAI,QACJiB,KAAK,SACLC,QAAQ,UACRC,QA1DQ,WAChBtC,EAAU,IACVI,EAAkB,WACpB,EAwDUc,MAAO,WAGTZ,EAAAA,EAAAA,KAAC6B,EAAAA,IAAM,CACLhB,GAAI,kBACJiB,KAAK,SACLC,QAAQ,aACRT,SAA4B,KAAlB7B,EAAOwC,OACjBD,QA9DY,WACpBE,EAAAA,EAAIjD,OACDkD,wBAAwBlD,EAAQ,CAC/BQ,OAAQA,EACR2C,OAAQvC,IAETwC,MAAK,SAACC,GACLnD,GAASoD,EAAAA,EAAAA,IAAmB,mCAC5BvD,GACF,IACCwD,OAAM,SAACF,GACNnD,GAASsD,EAAAA,EAAAA,KAAqBC,EAAAA,EAAAA,GAAeJ,EAAIK,SACjD3D,GACF,GACJ,EAiDU4B,MAAO,gBAMnB,C","sources":["screens/Console/Buckets/BucketDetails/AddAccessRule.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 ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport {\n AddAccessRuleIcon,\n Button,\n FormLayout,\n Grid,\n InputBox,\n Select,\n} from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport {\n setErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IAddAccessRule {\n modalOpen: boolean;\n onClose: () => any;\n bucket: string;\n prefilledRoute?: string;\n}\n\nconst AddAccessRule = ({\n modalOpen,\n onClose,\n bucket,\n prefilledRoute,\n}: IAddAccessRule) => {\n const dispatch = useAppDispatch();\n\n const [prefix, setPrefix] = useState(\"\");\n const [selectedAccess, setSelectedAccess] = useState(\"readonly\");\n\n useEffect(() => {\n if (prefilledRoute) {\n setPrefix(prefilledRoute);\n }\n }, [prefilledRoute]);\n\n const accessOptions = [\n { label: \"readonly\", value: \"readonly\" },\n { label: \"writeonly\", value: \"writeonly\" },\n { label: \"readwrite\", value: \"readwrite\" },\n ];\n\n const resetForm = () => {\n setPrefix(\"\");\n setSelectedAccess(\"readonly\");\n };\n\n const createProcess = () => {\n api.bucket\n .setAccessRuleWithBucket(bucket, {\n prefix: prefix,\n access: selectedAccess,\n })\n .then((res: any) => {\n dispatch(setSnackBarMessage(\"Access Rule added successfully\"));\n onClose();\n })\n .catch((res) => {\n dispatch(setErrorSnackMessage(errorToHandler(res.error)));\n onClose();\n });\n };\n\n return (\n }\n >\n \n {\n setPrefix(e.target.value);\n }}\n tooltip={\n \"Enter '/' to apply the rule to all prefixes and objects at the bucket root. Do not include the wildcard asterisk '*' as part of the prefix *unless* it is an explicit part of the prefix name. The Console automatically appends an asterisk to the appropriate sections of the resulting IAM policy.\"\n }\n />\n {\n setSelectedAccess(value);\n }}\n label=\"Access\"\n value={selectedAccess}\n options={accessOptions}\n disabled={false}\n />\n \n \n\n \n \n \n \n );\n};\n\nexport default AddAccessRule;\n"],"names":["_ref","modalOpen","onClose","bucket","prefilledRoute","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","prefix","setPrefix","_useState3","_useState4","selectedAccess","setSelectedAccess","useEffect","_jsx","ModalWrapper","title","titleIcon","AddAccessRuleIcon","children","_jsxs","FormLayout","withBorders","containerPadding","InputBox","value","label","id","name","placeholder","onChange","e","target","tooltip","Select","options","disabled","Grid","item","xs","sx","modalStyleUtils","modalButtonBar","Button","type","variant","onClick","trim","api","setAccessRuleWithBucket","access","then","res","setSnackBarMessage","catch","setErrorSnackMessage","errorToHandler","error"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/4738.0bbac05c.chunk.js b/portal-ui/build/static/js/4738.c8ae5b4a.chunk.js similarity index 93% rename from portal-ui/build/static/js/4738.0bbac05c.chunk.js rename to portal-ui/build/static/js/4738.c8ae5b4a.chunk.js index d8babeb125..22a6524373 100644 --- a/portal-ui/build/static/js/4738.0bbac05c.chunk.js +++ b/portal-ui/build/static/js/4738.c8ae5b4a.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[4738],{84738:function(e,t,c){c.r(t);var n=c(29439),s=c(72791),i=c(78687),o=c(57689),a=c(29945),u=c(31776),r=c(82342),l=c(56087),I=c(38442),S=c(45248),_=c(87995),f=c(9859),d=c(81551),F=c(80184);t.default=function(){var e=(0,d.TL)(),t=(0,o.s0)(),c=(0,o.UO)(),b=(0,i.v9)(f.HQ),L=(0,s.useState)("simple-tab-0"),h=(0,n.Z)(L,2),A=h[0],m=h[1],E=(0,s.useState)(!0),p=(0,n.Z)(E,2),N=p[0],P=p[1],T=(0,s.useState)([]),U=(0,n.Z)(T,2),k=U[0],C=U[1],D=(0,s.useState)(!0),M=(0,n.Z)(D,2),g=M[0],O=M[1],R=(0,s.useState)([]),y=(0,n.Z)(R,2),j=y[0],x=y[1],G=c.bucketName||"",v=(0,I.F)(G,[l.Ft.ADMIN_LIST_USER_POLICIES]),w=(0,I.F)(G,[l.Ft.ADMIN_GET_POLICY,l.Ft.ADMIN_LIST_USERS,l.Ft.ADMIN_LIST_GROUPS],!0),B=(0,I.F)(l.C3,[l.Ft.ADMIN_GET_USER]),Z=(0,I.F)(l.C3,[l.Ft.ADMIN_GET_POLICY,l.Ft.ADMIN_LIST_USERS,l.Ft.ADMIN_LIST_GROUPS]);(0,s.useEffect)((function(){b&&(O(!0),P(!0))}),[b,O,P]);var K=[{type:"view",disableButtonFunction:function(){return!Z},onClick:function(e){t("".concat(l.gA.POLICIES,"/").concat((0,S.LL)(e.name)))}}],Q=[{type:"view",disableButtonFunction:function(){return!B},onClick:function(e){t("".concat(l.gA.USERS,"/").concat((0,S.LL)(e)))}}];return(0,s.useEffect)((function(){g&&(w?u.h.bucketUsers.listUsersWithAccessToBucket(G).then((function(e){x(e.data),O(!1)})).catch((function(t){e((0,_.Ih)((0,r.g)(t))),O(!1)})):O(!1))}),[g,e,G,w]),(0,s.useEffect)((function(){e((0,_.Sc)("bucket_detail_access"))}),[]),(0,s.useEffect)((function(){N&&(v?u.h.bucketPolicy.listPoliciesWithBucket(G).then((function(e){C(e.data.policies),P(!1)})).catch((function(t){e((0,_.Ih)((0,r.g)(t))),P(!1)})):P(!1))}),[N,e,G,v]),(0,F.jsxs)(s.Fragment,{children:[(0,F.jsx)(a.NZf,{separator:!0,children:"Access Audit"}),(0,F.jsx)(a.mQc,{currentTabOrPath:A,onTabClick:function(e){m(e)},horizontal:!0,options:[{tabConfig:{label:"Policies",id:"simple-tab-0"},content:(0,F.jsx)(I.s,{scopes:[l.Ft.ADMIN_LIST_USER_POLICIES],resource:G,errorProps:{disabled:!0},children:k&&(0,F.jsx)(a.wQF,{noBackground:!0,itemActions:K,columns:[{label:"Name",elementKey:"name"}],isLoading:N,records:k,entityName:"Policies",idField:"name"})})},{tabConfig:{label:"Users",id:"simple-tab-1"},content:(0,F.jsx)(I.s,{scopes:[l.Ft.ADMIN_GET_POLICY,l.Ft.ADMIN_LIST_USERS,l.Ft.ADMIN_LIST_GROUPS],resource:G,matchAll:!0,errorProps:{disabled:!0},children:(0,F.jsx)(a.wQF,{noBackground:!0,itemActions:Q,columns:[{label:"User",elementKey:"accessKey"}],isLoading:g,records:j,entityName:"Users",idField:"accessKey"})})}]})]})}}}]); -//# sourceMappingURL=4738.0bbac05c.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[4738],{84738:function(e,t,c){c.r(t);var n=c(29439),s=c(72791),i=c(78687),o=c(57689),a=c(29945),u=c(31776),r=c(82342),l=c(56087),I=c(38442),S=c(45248),_=c(87995),f=c(9859),d=c(44690),F=c(80184);t.default=function(){var e=(0,d.TL)(),t=(0,o.s0)(),c=(0,o.UO)(),b=(0,i.v9)(f.HQ),L=(0,s.useState)("simple-tab-0"),h=(0,n.Z)(L,2),A=h[0],m=h[1],E=(0,s.useState)(!0),p=(0,n.Z)(E,2),N=p[0],P=p[1],T=(0,s.useState)([]),U=(0,n.Z)(T,2),k=U[0],C=U[1],D=(0,s.useState)(!0),M=(0,n.Z)(D,2),g=M[0],O=M[1],R=(0,s.useState)([]),y=(0,n.Z)(R,2),j=y[0],x=y[1],G=c.bucketName||"",v=(0,I.F)(G,[l.Ft.ADMIN_LIST_USER_POLICIES]),w=(0,I.F)(G,[l.Ft.ADMIN_GET_POLICY,l.Ft.ADMIN_LIST_USERS,l.Ft.ADMIN_LIST_GROUPS],!0),B=(0,I.F)(l.C3,[l.Ft.ADMIN_GET_USER]),Z=(0,I.F)(l.C3,[l.Ft.ADMIN_GET_POLICY,l.Ft.ADMIN_LIST_USERS,l.Ft.ADMIN_LIST_GROUPS]);(0,s.useEffect)((function(){b&&(O(!0),P(!0))}),[b,O,P]);var K=[{type:"view",disableButtonFunction:function(){return!Z},onClick:function(e){t("".concat(l.gA.POLICIES,"/").concat((0,S.LL)(e.name)))}}],Q=[{type:"view",disableButtonFunction:function(){return!B},onClick:function(e){t("".concat(l.gA.USERS,"/").concat((0,S.LL)(e)))}}];return(0,s.useEffect)((function(){g&&(w?u.h.bucketUsers.listUsersWithAccessToBucket(G).then((function(e){x(e.data),O(!1)})).catch((function(t){e((0,_.Ih)((0,r.g)(t))),O(!1)})):O(!1))}),[g,e,G,w]),(0,s.useEffect)((function(){e((0,_.Sc)("bucket_detail_access"))}),[]),(0,s.useEffect)((function(){N&&(v?u.h.bucketPolicy.listPoliciesWithBucket(G).then((function(e){C(e.data.policies),P(!1)})).catch((function(t){e((0,_.Ih)((0,r.g)(t))),P(!1)})):P(!1))}),[N,e,G,v]),(0,F.jsxs)(s.Fragment,{children:[(0,F.jsx)(a.NZf,{separator:!0,children:"Access Audit"}),(0,F.jsx)(a.mQc,{currentTabOrPath:A,onTabClick:function(e){m(e)},horizontal:!0,options:[{tabConfig:{label:"Policies",id:"simple-tab-0"},content:(0,F.jsx)(I.s,{scopes:[l.Ft.ADMIN_LIST_USER_POLICIES],resource:G,errorProps:{disabled:!0},children:k&&(0,F.jsx)(a.wQF,{noBackground:!0,itemActions:K,columns:[{label:"Name",elementKey:"name"}],isLoading:N,records:k,entityName:"Policies",idField:"name"})})},{tabConfig:{label:"Users",id:"simple-tab-1"},content:(0,F.jsx)(I.s,{scopes:[l.Ft.ADMIN_GET_POLICY,l.Ft.ADMIN_LIST_USERS,l.Ft.ADMIN_LIST_GROUPS],resource:G,matchAll:!0,errorProps:{disabled:!0},children:(0,F.jsx)(a.wQF,{noBackground:!0,itemActions:Q,columns:[{label:"User",elementKey:"accessKey"}],isLoading:g,records:j,entityName:"Users",idField:"accessKey"})})}]})]})}}}]); +//# sourceMappingURL=4738.c8ae5b4a.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/4738.0bbac05c.chunk.js.map b/portal-ui/build/static/js/4738.c8ae5b4a.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/4738.0bbac05c.chunk.js.map rename to portal-ui/build/static/js/4738.c8ae5b4a.chunk.js.map index 1287d8b5b3..d2528fd7dc 100644 --- a/portal-ui/build/static/js/4738.0bbac05c.chunk.js.map +++ b/portal-ui/build/static/js/4738.c8ae5b4a.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/4738.0bbac05c.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/AccessDetailsPanel.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport { DataTable, SectionTitle, Tabs } from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_PAGES,\n IAM_SCOPES,\n} from \"../../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../common/SecureComponent\";\nimport { encodeURLString } from \"../../../../common/utils\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../../systemSlice\";\nimport { selBucketDetailsLoading } from \"./bucketDetailsSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { Policy } from \"../../../../api/consoleApi\";\n\nconst AccessDetails = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const params = useParams();\n\n const loadingBucket = useSelector(selBucketDetailsLoading);\n\n const [curTab, setCurTab] = useState(\"simple-tab-0\");\n const [loadingPolicies, setLoadingPolicies] = useState(true);\n const [bucketPolicy, setBucketPolicy] = useState([]);\n const [loadingUsers, setLoadingUsers] = useState(true);\n const [bucketUsers, setBucketUsers] = useState([]);\n\n const bucketName = params.bucketName || \"\";\n\n const displayPoliciesList = hasPermission(bucketName, [\n IAM_SCOPES.ADMIN_LIST_USER_POLICIES,\n ]);\n\n const displayUsersList = hasPermission(\n bucketName,\n [\n IAM_SCOPES.ADMIN_GET_POLICY,\n IAM_SCOPES.ADMIN_LIST_USERS,\n IAM_SCOPES.ADMIN_LIST_GROUPS,\n ],\n true,\n );\n\n const viewUser = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.ADMIN_GET_USER,\n ]);\n const viewPolicy = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.ADMIN_GET_POLICY,\n IAM_SCOPES.ADMIN_LIST_USERS,\n IAM_SCOPES.ADMIN_LIST_GROUPS,\n ]);\n\n useEffect(() => {\n if (loadingBucket) {\n setLoadingUsers(true);\n setLoadingPolicies(true);\n }\n }, [loadingBucket, setLoadingUsers, setLoadingPolicies]);\n\n const PolicyActions = [\n {\n type: \"view\",\n disableButtonFunction: () => !viewPolicy,\n onClick: (policy: any) => {\n navigate(`${IAM_PAGES.POLICIES}/${encodeURLString(policy.name)}`);\n },\n },\n ];\n\n const userTableActions = [\n {\n type: \"view\",\n disableButtonFunction: () => !viewUser,\n onClick: (user: any) => {\n navigate(`${IAM_PAGES.USERS}/${encodeURLString(user)}`);\n },\n },\n ];\n\n useEffect(() => {\n if (loadingUsers) {\n if (displayUsersList) {\n api.bucketUsers\n .listUsersWithAccessToBucket(bucketName)\n .then((res) => {\n setBucketUsers(res.data);\n setLoadingUsers(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n setLoadingUsers(false);\n });\n } else {\n setLoadingUsers(false);\n }\n }\n }, [loadingUsers, dispatch, bucketName, displayUsersList]);\n\n useEffect(() => {\n dispatch(setHelpName(\"bucket_detail_access\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (loadingPolicies) {\n if (displayPoliciesList) {\n api.bucketPolicy\n .listPoliciesWithBucket(bucketName)\n .then((res) => {\n setBucketPolicy(res.data.policies);\n setLoadingPolicies(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n setLoadingPolicies(false);\n });\n } else {\n setLoadingPolicies(false);\n }\n }\n }, [loadingPolicies, dispatch, bucketName, displayPoliciesList]);\n\n return (\n \n Access Audit\n {\n setCurTab(newValue);\n }}\n horizontal\n options={[\n {\n tabConfig: { label: \"Policies\", id: \"simple-tab-0\" },\n content: (\n \n {bucketPolicy && (\n \n )}\n \n ),\n },\n {\n tabConfig: { label: \"Users\", id: \"simple-tab-1\" },\n content: (\n \n \n \n ),\n },\n ]}\n />\n \n );\n};\n\nexport default AccessDetails;\n"],"names":["dispatch","useAppDispatch","navigate","useNavigate","params","useParams","loadingBucket","useSelector","selBucketDetailsLoading","_useState","useState","_useState2","_slicedToArray","curTab","setCurTab","_useState3","_useState4","loadingPolicies","setLoadingPolicies","_useState5","_useState6","bucketPolicy","setBucketPolicy","_useState7","_useState8","loadingUsers","setLoadingUsers","_useState9","_useState10","bucketUsers","setBucketUsers","bucketName","displayPoliciesList","hasPermission","IAM_SCOPES","ADMIN_LIST_USER_POLICIES","displayUsersList","ADMIN_GET_POLICY","ADMIN_LIST_USERS","ADMIN_LIST_GROUPS","viewUser","CONSOLE_UI_RESOURCE","ADMIN_GET_USER","viewPolicy","useEffect","PolicyActions","type","disableButtonFunction","onClick","policy","concat","IAM_PAGES","POLICIES","encodeURLString","name","userTableActions","user","USERS","api","listUsersWithAccessToBucket","then","res","data","catch","err","setErrorSnackMessage","errorToHandler","setHelpName","listPoliciesWithBucket","policies","_jsxs","Fragment","children","_jsx","SectionTitle","separator","Tabs","currentTabOrPath","onTabClick","newValue","horizontal","options","tabConfig","label","id","content","SecureComponent","scopes","resource","errorProps","disabled","DataTable","noBackground","itemActions","columns","elementKey","isLoading","records","entityName","idField","matchAll"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/4738.c8ae5b4a.chunk.js","mappings":"iRAgNA,UA3KsB,WACpB,IAAMA,GAAWC,EAAAA,EAAAA,MACXC,GAAWC,EAAAA,EAAAA,MACXC,GAASC,EAAAA,EAAAA,MAETC,GAAgBC,EAAAA,EAAAA,IAAYC,EAAAA,IAElCC,GAA4BC,EAAAA,EAAAA,UAAiB,gBAAeC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAArDI,EAAMF,EAAA,GAAEG,EAASH,EAAA,GACxBI,GAA8CL,EAAAA,EAAAA,WAAkB,GAAKM,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAA9DE,EAAeD,EAAA,GAAEE,EAAkBF,EAAA,GAC1CG,GAAwCT,EAAAA,EAAAA,UAA+B,IAAGU,GAAAR,EAAAA,EAAAA,GAAAO,EAAA,GAAnEE,EAAYD,EAAA,GAAEE,EAAeF,EAAA,GACpCG,GAAwCb,EAAAA,EAAAA,WAAkB,GAAKc,GAAAZ,EAAAA,EAAAA,GAAAW,EAAA,GAAxDE,EAAYD,EAAA,GAAEE,EAAeF,EAAA,GACpCG,GAAsCjB,EAAAA,EAAAA,UAAmB,IAAGkB,GAAAhB,EAAAA,EAAAA,GAAAe,EAAA,GAArDE,EAAWD,EAAA,GAAEE,EAAcF,EAAA,GAE5BG,EAAa3B,EAAO2B,YAAc,GAElCC,GAAsBC,EAAAA,EAAAA,GAAcF,EAAY,CACpDG,EAAAA,GAAWC,2BAGPC,GAAmBH,EAAAA,EAAAA,GACvBF,EACA,CACEG,EAAAA,GAAWG,iBACXH,EAAAA,GAAWI,iBACXJ,EAAAA,GAAWK,oBAEb,GAGIC,GAAWP,EAAAA,EAAAA,GAAcQ,EAAAA,GAAqB,CAClDP,EAAAA,GAAWQ,iBAEPC,GAAaV,EAAAA,EAAAA,GAAcQ,EAAAA,GAAqB,CACpDP,EAAAA,GAAWG,iBACXH,EAAAA,GAAWI,iBACXJ,EAAAA,GAAWK,qBAGbK,EAAAA,EAAAA,YAAU,WACJtC,IACFoB,GAAgB,GAChBR,GAAmB,GAEvB,GAAG,CAACZ,EAAeoB,EAAiBR,IAEpC,IAAM2B,EAAgB,CACpB,CACEC,KAAM,OACNC,sBAAuB,kBAAOJ,CAAU,EACxCK,QAAS,SAACC,GACR/C,EAAS,GAADgD,OAAIC,EAAAA,GAAUC,SAAQ,KAAAF,QAAIG,EAAAA,EAAAA,IAAgBJ,EAAOK,OAC3D,IAIEC,EAAmB,CACvB,CACET,KAAM,OACNC,sBAAuB,kBAAOP,CAAQ,EACtCQ,QAAS,SAACQ,GACRtD,EAAS,GAADgD,OAAIC,EAAAA,GAAUM,MAAK,KAAAP,QAAIG,EAAAA,EAAAA,IAAgBG,IACjD,IA+CJ,OA3CAZ,EAAAA,EAAAA,YAAU,WACJnB,IACEW,EACFsB,EAAAA,EAAI7B,YACD8B,4BAA4B5B,GAC5B6B,MAAK,SAACC,GACL/B,EAAe+B,EAAIC,MACnBpC,GAAgB,EAClB,IACCqC,OAAM,SAACC,GACNhE,GAASiE,EAAAA,EAAAA,KAAqBC,EAAAA,EAAAA,GAAeF,KAC7CtC,GAAgB,EAClB,IAEFA,GAAgB,GAGtB,GAAG,CAACD,EAAczB,EAAU+B,EAAYK,KAExCQ,EAAAA,EAAAA,YAAU,WACR5C,GAASmE,EAAAA,EAAAA,IAAY,wBAEvB,GAAG,KAEHvB,EAAAA,EAAAA,YAAU,WACJ3B,IACEe,EACF0B,EAAAA,EAAIrC,aACD+C,uBAAuBrC,GACvB6B,MAAK,SAACC,GACLvC,EAAgBuC,EAAIC,KAAKO,UACzBnD,GAAmB,EACrB,IACC6C,OAAM,SAACC,GACNhE,GAASiE,EAAAA,EAAAA,KAAqBC,EAAAA,EAAAA,GAAeF,KAC7C9C,GAAmB,EACrB,IAEFA,GAAmB,GAGzB,GAAG,CAACD,EAAiBjB,EAAU+B,EAAYC,KAGzCsC,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,EACPC,EAAAA,EAAAA,KAACC,EAAAA,IAAY,CAACC,WAAS,EAAAH,SAAC,kBACxBC,EAAAA,EAAAA,KAACG,EAAAA,IAAI,CACHC,iBAAkBhE,EAClBiE,WAAY,SAACC,GACXjE,EAAUiE,EACZ,EACAC,YAAU,EACVC,QAAS,CACP,CACEC,UAAW,CAAEC,MAAO,WAAYC,GAAI,gBACpCC,SACEZ,EAAAA,EAAAA,KAACa,EAAAA,EAAe,CACdC,OAAQ,CAACrD,EAAAA,GAAWC,0BACpBqD,SAAUzD,EACV0D,WAAY,CAAEC,UAAU,GAAOlB,SAE9BnD,IACCoD,EAAAA,EAAAA,KAACkB,EAAAA,IAAS,CACRC,cAAc,EACdC,YAAahD,EACbiD,QAAS,CAAC,CAAEX,MAAO,OAAQY,WAAY,SACvCC,UAAW/E,EACXgF,QAAS5E,EACT6E,WAAW,WACXC,QAAQ,YAMlB,CACEjB,UAAW,CAAEC,MAAO,QAASC,GAAI,gBACjCC,SACEZ,EAAAA,EAAAA,KAACa,EAAAA,EAAe,CACdC,OAAQ,CACNrD,EAAAA,GAAWG,iBACXH,EAAAA,GAAWI,iBACXJ,EAAAA,GAAWK,mBAEbiD,SAAUzD,EACVqE,UAAQ,EACRX,WAAY,CAAEC,UAAU,GAAOlB,UAE/BC,EAAAA,EAAAA,KAACkB,EAAAA,IAAS,CACRC,cAAc,EACdC,YAAatC,EACbuC,QAAS,CAAC,CAAEX,MAAO,OAAQY,WAAY,cACvCC,UAAWvE,EACXwE,QAASpE,EACTqE,WAAW,QACXC,QAAQ,sBAS1B,C","sources":["screens/Console/Buckets/BucketDetails/AccessDetailsPanel.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport { DataTable, SectionTitle, Tabs } from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_PAGES,\n IAM_SCOPES,\n} from \"../../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../common/SecureComponent\";\nimport { encodeURLString } from \"../../../../common/utils\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../../systemSlice\";\nimport { selBucketDetailsLoading } from \"./bucketDetailsSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { Policy } from \"../../../../api/consoleApi\";\n\nconst AccessDetails = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const params = useParams();\n\n const loadingBucket = useSelector(selBucketDetailsLoading);\n\n const [curTab, setCurTab] = useState(\"simple-tab-0\");\n const [loadingPolicies, setLoadingPolicies] = useState(true);\n const [bucketPolicy, setBucketPolicy] = useState([]);\n const [loadingUsers, setLoadingUsers] = useState(true);\n const [bucketUsers, setBucketUsers] = useState([]);\n\n const bucketName = params.bucketName || \"\";\n\n const displayPoliciesList = hasPermission(bucketName, [\n IAM_SCOPES.ADMIN_LIST_USER_POLICIES,\n ]);\n\n const displayUsersList = hasPermission(\n bucketName,\n [\n IAM_SCOPES.ADMIN_GET_POLICY,\n IAM_SCOPES.ADMIN_LIST_USERS,\n IAM_SCOPES.ADMIN_LIST_GROUPS,\n ],\n true,\n );\n\n const viewUser = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.ADMIN_GET_USER,\n ]);\n const viewPolicy = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.ADMIN_GET_POLICY,\n IAM_SCOPES.ADMIN_LIST_USERS,\n IAM_SCOPES.ADMIN_LIST_GROUPS,\n ]);\n\n useEffect(() => {\n if (loadingBucket) {\n setLoadingUsers(true);\n setLoadingPolicies(true);\n }\n }, [loadingBucket, setLoadingUsers, setLoadingPolicies]);\n\n const PolicyActions = [\n {\n type: \"view\",\n disableButtonFunction: () => !viewPolicy,\n onClick: (policy: any) => {\n navigate(`${IAM_PAGES.POLICIES}/${encodeURLString(policy.name)}`);\n },\n },\n ];\n\n const userTableActions = [\n {\n type: \"view\",\n disableButtonFunction: () => !viewUser,\n onClick: (user: any) => {\n navigate(`${IAM_PAGES.USERS}/${encodeURLString(user)}`);\n },\n },\n ];\n\n useEffect(() => {\n if (loadingUsers) {\n if (displayUsersList) {\n api.bucketUsers\n .listUsersWithAccessToBucket(bucketName)\n .then((res) => {\n setBucketUsers(res.data);\n setLoadingUsers(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n setLoadingUsers(false);\n });\n } else {\n setLoadingUsers(false);\n }\n }\n }, [loadingUsers, dispatch, bucketName, displayUsersList]);\n\n useEffect(() => {\n dispatch(setHelpName(\"bucket_detail_access\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (loadingPolicies) {\n if (displayPoliciesList) {\n api.bucketPolicy\n .listPoliciesWithBucket(bucketName)\n .then((res) => {\n setBucketPolicy(res.data.policies);\n setLoadingPolicies(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n setLoadingPolicies(false);\n });\n } else {\n setLoadingPolicies(false);\n }\n }\n }, [loadingPolicies, dispatch, bucketName, displayPoliciesList]);\n\n return (\n \n Access Audit\n {\n setCurTab(newValue);\n }}\n horizontal\n options={[\n {\n tabConfig: { label: \"Policies\", id: \"simple-tab-0\" },\n content: (\n \n {bucketPolicy && (\n \n )}\n \n ),\n },\n {\n tabConfig: { label: \"Users\", id: \"simple-tab-1\" },\n content: (\n \n \n \n ),\n },\n ]}\n />\n \n );\n};\n\nexport default AccessDetails;\n"],"names":["dispatch","useAppDispatch","navigate","useNavigate","params","useParams","loadingBucket","useSelector","selBucketDetailsLoading","_useState","useState","_useState2","_slicedToArray","curTab","setCurTab","_useState3","_useState4","loadingPolicies","setLoadingPolicies","_useState5","_useState6","bucketPolicy","setBucketPolicy","_useState7","_useState8","loadingUsers","setLoadingUsers","_useState9","_useState10","bucketUsers","setBucketUsers","bucketName","displayPoliciesList","hasPermission","IAM_SCOPES","ADMIN_LIST_USER_POLICIES","displayUsersList","ADMIN_GET_POLICY","ADMIN_LIST_USERS","ADMIN_LIST_GROUPS","viewUser","CONSOLE_UI_RESOURCE","ADMIN_GET_USER","viewPolicy","useEffect","PolicyActions","type","disableButtonFunction","onClick","policy","concat","IAM_PAGES","POLICIES","encodeURLString","name","userTableActions","user","USERS","api","listUsersWithAccessToBucket","then","res","data","catch","err","setErrorSnackMessage","errorToHandler","setHelpName","listPoliciesWithBucket","policies","_jsxs","Fragment","children","_jsx","SectionTitle","separator","Tabs","currentTabOrPath","onTabClick","newValue","horizontal","options","tabConfig","label","id","content","SecureComponent","scopes","resource","errorProps","disabled","DataTable","noBackground","itemActions","columns","elementKey","isLoading","records","entityName","idField","matchAll"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/483.8c83b198.chunk.js b/portal-ui/build/static/js/483.8c83b198.chunk.js new file mode 100644 index 0000000000..e216164569 --- /dev/null +++ b/portal-ui/build/static/js/483.8c83b198.chunk.js @@ -0,0 +1,2 @@ +(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[483],{70483:function(e,t,o){"use strict";o.r(t);var n=o(93433),l=o(29439),i=o(72791),c=o(95087),r=o(29945),a=o(26824),s=o(57689),u=o(9478),f=o(44690),p=o(87995),b=o(31460),d=o(47974),h=o(99670),g=o(80184),x=null;t.default=function(){var e=(0,s.s0)(),t=(0,i.useState)(!1),o=(0,l.Z)(t,2),w=o[0],v=o[1],m=(0,i.useState)(["cpu","mem","block","mutex","goroutines"]),y=(0,l.Z)(m,2),j=y[0],k=y[1],_=(0,u.Yc)(),C=function(e){var t=[];t=j.indexOf(e.target.value)>-1?j.filter((function(t){return t!==e.target.value})):[].concat((0,n.Z)(j),[e.target.value]),k(t)},O=(0,f.TL)();return(0,i.useEffect)((function(){O((0,p.Sc)("profile"))}),[]),(0,g.jsxs)(i.Fragment,{children:[(0,g.jsx)(d.Z,{label:"Profile",actions:(0,g.jsx)(h.Z,{})}),(0,g.jsxs)(r.Xgh,{children:[!_&&(0,g.jsx)(b.Z,{compactMode:!0}),(0,g.jsxs)(r.ltY,{children:[(0,g.jsxs)(r.xuv,{sx:{display:"flex",gap:10,"& div":{width:"initial"},"& .inputItem:not(:last-of-type)":{marginBottom:0}},children:[(0,g.jsx)(r.AZs,{noMinWidth:!0,children:"Types to profile:"}),[{label:"cpu",value:"cpu"},{label:"mem",value:"mem"},{label:"block",value:"block"},{label:"mutex",value:"mutex"},{label:"goroutines",value:"goroutines"}].map((function(e){return(0,g.jsx)(r.XZJ,{checked:j.indexOf(e.value)>-1,disabled:w||!_,id:"checkbox-".concat(e.label),label:e.label,name:"checkbox-".concat(e.label),onChange:C,value:e.value},"checkbox-".concat(e.label))}))]}),(0,g.jsxs)(r.xuv,{sx:{display:"flex",justifyContent:"flex-end",marginTop:24,gap:10},children:[(0,g.jsx)(r.zxk,{id:"start-profiling",type:"submit",variant:_?"callAction":"regular",disabled:w||j.length<1||!_,onClick:function(){_?function(){var e=j.join(","),t=new URL(window.location.toString()),o=t.port,n=new URL(document.baseURI).pathname,l=(0,a.x2)(t.protocol);if(null!==(x=new c.w3cwebsocket("".concat(l,"://").concat(t.hostname,":").concat(o).concat(n,"ws/profile?types=").concat(e))))x.onopen=function(){v(!0),x.send("ok")},x.onmessage=function(e){var t=new Blob([e.data],{type:"application/zip"});v(!1);var o=document.createElement("a");o.href=window.URL.createObjectURL(t),o.download="profile.zip",document.body.appendChild(o),o.click(),document.body.removeChild(o)},x.onclose=function(){console.log("connection closed by server"),v(!1)}}():e("/support/register")},label:"Start Profiling"}),(0,g.jsx)(r.zxk,{id:"stop-profiling",type:"submit",variant:"callAction",color:"primary",disabled:!w||!_,onClick:function(){x.close(1e3),v(!1)},label:"Stop Profiling"})]})]})]})]})}},94210:function(e){var t=function(){if("object"===typeof self&&self)return self;if("object"===typeof window&&window)return window;throw new Error("Unable to resolve global `this`")};e.exports=function(){if(this)return this;if("object"===typeof globalThis&&globalThis)return globalThis;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch(e){return t()}try{return __global__||t()}finally{delete Object.prototype.__global__}}()},95087:function(e,t,o){var n;if("object"===typeof globalThis)n=globalThis;else try{n=o(94210)}catch(r){}finally{if(n||"undefined"===typeof window||(n=window),!n)throw new Error("Could not determine global this")}var l=n.WebSocket||n.MozWebSocket,i=o(51496);function c(e,t){return t?new l(e,t):new l(e)}l&&["CONNECTING","OPEN","CLOSING","CLOSED"].forEach((function(e){Object.defineProperty(c,e,{get:function(){return l[e]}})})),e.exports={w3cwebsocket:l?c:null,version:i}},51496:function(e,t,o){e.exports=o(19794).version},19794:function(e){"use strict";e.exports={version:"1.0.34"}}}]); +//# sourceMappingURL=483.8c83b198.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/483.8c83b198.chunk.js.map b/portal-ui/build/static/js/483.8c83b198.chunk.js.map new file mode 100644 index 0000000000..5b3835f543 --- /dev/null +++ b/portal-ui/build/static/js/483.8c83b198.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/483.8c83b198.chunk.js","mappings":"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","sources":["screens/Console/Support/Profile.tsx","../node_modules/es5-ext/global.js","../node_modules/websocket/lib/browser.js","../node_modules/websocket/lib/version.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 .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { IMessageEvent, w3cwebsocket as W3CWebSocket } from \"websocket\";\nimport { Button, PageLayout, FormLayout, Box, Checkbox, InputLabel } from \"mds\";\nimport { wsProtocol } from \"../../../utils/wsUtils\";\nimport { useNavigate } from \"react-router-dom\";\nimport { registeredCluster } from \"../../../config\";\nimport { useAppDispatch } from \"../../../store\";\nimport { setHelpName } from \"../../../systemSlice\";\nimport RegisterCluster from \"./RegisterCluster\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nvar c: any = null;\n\nconst Profile = () => {\n const navigate = useNavigate();\n\n const [profilingStarted, setProfilingStarted] = useState(false);\n const [types, setTypes] = useState([\n \"cpu\",\n \"mem\",\n \"block\",\n \"mutex\",\n \"goroutines\",\n ]);\n const clusterRegistered = registeredCluster();\n const typesList = [\n { label: \"cpu\", value: \"cpu\" },\n { label: \"mem\", value: \"mem\" },\n { label: \"block\", value: \"block\" },\n { label: \"mutex\", value: \"mutex\" },\n { label: \"goroutines\", value: \"goroutines\" },\n ];\n\n const onCheckboxClick = (e: React.ChangeEvent) => {\n let newArr: string[] = [];\n if (types.indexOf(e.target.value) > -1) {\n newArr = types.filter((type) => type !== e.target.value);\n } else {\n newArr = [...types, e.target.value];\n }\n setTypes(newArr);\n };\n\n const startProfiling = () => {\n const typeString = types.join(\",\");\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 c = new W3CWebSocket(\n `${wsProt}://${url.hostname}:${port}${baseUrl}ws/profile?types=${typeString}`,\n );\n\n if (c !== null) {\n c.onopen = () => {\n setProfilingStarted(true);\n c.send(\"ok\");\n };\n c.onmessage = (message: IMessageEvent) => {\n // process received message\n let response = new Blob([message.data], { type: \"application/zip\" });\n let filename = \"profile.zip\";\n setProfilingStarted(false);\n var link = document.createElement(\"a\");\n link.href = window.URL.createObjectURL(response);\n link.download = filename;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n };\n c.onclose = () => {\n console.log(\"connection closed by server\");\n setProfilingStarted(false);\n };\n return () => {\n c.close(1000);\n console.log(\"closing websockets\");\n setProfilingStarted(false);\n };\n }\n };\n\n const stopProfiling = () => {\n c.close(1000);\n setProfilingStarted(false);\n };\n\n const dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(setHelpName(\"profile\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n } />\n \n {!clusterRegistered && }\n \n \n Types to profile:\n {typesList.map((t) => (\n -1}\n disabled={profilingStarted || !clusterRegistered}\n key={`checkbox-${t.label}`}\n id={`checkbox-${t.label}`}\n label={t.label}\n name={`checkbox-${t.label}`}\n onChange={onCheckboxClick}\n value={t.value}\n />\n ))}\n \n \n {\n if (!clusterRegistered) {\n navigate(\"/support/register\");\n return;\n }\n startProfiling();\n }}\n label={\"Start Profiling\"}\n />\n {\n stopProfiling();\n }}\n label={\"Stop Profiling\"}\n />\n \n \n \n \n );\n};\n\nexport default Profile;\n","var naiveFallback = function () {\n\tif (typeof self === \"object\" && self) return self;\n\tif (typeof window === \"object\" && window) return window;\n\tthrow new Error(\"Unable to resolve global `this`\");\n};\n\nmodule.exports = (function () {\n\tif (this) return this;\n\n\t// Unexpected strict mode (may happen if e.g. bundled into ESM module)\n\n\t// Fallback to standard globalThis if available\n\tif (typeof globalThis === \"object\" && globalThis) return globalThis;\n\n\t// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis\n\t// In all ES5+ engines global object inherits from Object.prototype\n\t// (if you approached one that doesn't please report)\n\ttry {\n\t\tObject.defineProperty(Object.prototype, \"__global__\", {\n\t\t\tget: function () { return this; },\n\t\t\tconfigurable: true\n\t\t});\n\t} catch (error) {\n\t\t// Unfortunate case of updates to Object.prototype being restricted\n\t\t// via preventExtensions, seal or freeze\n\t\treturn naiveFallback();\n\t}\n\ttry {\n\t\t// Safari case (window.__global__ works, but __global__ does not)\n\t\tif (!__global__) return naiveFallback();\n\t\treturn __global__;\n\t} finally {\n\t\tdelete Object.prototype.__global__;\n\t}\n})();\n","var _globalThis;\nif (typeof globalThis === 'object') {\n\t_globalThis = globalThis;\n} else {\n\ttry {\n\t\t_globalThis = require('es5-ext/global');\n\t} catch (error) {\n\t} finally {\n\t\tif (!_globalThis && typeof window !== 'undefined') { _globalThis = window; }\n\t\tif (!_globalThis) { throw new Error('Could not determine global this'); }\n\t}\n}\n\nvar NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;\nvar websocket_version = require('./version');\n\n\n/**\n * Expose a W3C WebSocket class with just one or two arguments.\n */\nfunction W3CWebSocket(uri, protocols) {\n\tvar native_instance;\n\n\tif (protocols) {\n\t\tnative_instance = new NativeWebSocket(uri, protocols);\n\t}\n\telse {\n\t\tnative_instance = new NativeWebSocket(uri);\n\t}\n\n\t/**\n\t * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket\n\t * class). Since it is an Object it will be returned as it is when creating an\n\t * instance of W3CWebSocket via 'new W3CWebSocket()'.\n\t *\n\t * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2\n\t */\n\treturn native_instance;\n}\nif (NativeWebSocket) {\n\t['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) {\n\t\tObject.defineProperty(W3CWebSocket, prop, {\n\t\t\tget: function() { return NativeWebSocket[prop]; }\n\t\t});\n\t});\n}\n\n/**\n * Module exports.\n */\nmodule.exports = {\n 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null,\n 'version' : websocket_version\n};\n","module.exports = require('../package.json').version;\n"],"names":["c","navigate","useNavigate","_useState","useState","_useState2","_slicedToArray","profilingStarted","setProfilingStarted","_useState3","_useState4","types","setTypes","clusterRegistered","registeredCluster","onCheckboxClick","e","newArr","indexOf","target","value","filter","type","concat","_toConsumableArray","dispatch","useAppDispatch","useEffect","setHelpName","_jsxs","Fragment","children","_jsx","PageHeaderWrapper","label","actions","HelpMenu","PageLayout","RegisterCluster","compactMode","FormLayout","Box","sx","display","gap","width","marginBottom","InputLabel","noMinWidth","map","t","Checkbox","checked","disabled","id","name","onChange","justifyContent","marginTop","Button","variant","length","onClick","typeString","join","url","URL","window","location","toString","port","baseUrl","document","baseURI","pathname","wsProt","wsProtocol","protocol","W3CWebSocket","hostname","onopen","send","onmessage","message","response","Blob","data","link","createElement","href","createObjectURL","download","body","appendChild","click","removeChild","onclose","console","log","startProfiling","color","close","naiveFallback","self","Error","module","exports","this","globalThis","Object","defineProperty","prototype","get","configurable","error","__global__","_globalThis","require","NativeWebSocket","WebSocket","MozWebSocket","websocket_version","uri","protocols","forEach","prop"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/483.c4ee886e.chunk.js b/portal-ui/build/static/js/483.c4ee886e.chunk.js deleted file mode 100644 index 45224bea98..0000000000 --- a/portal-ui/build/static/js/483.c4ee886e.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[483],{70483:function(e,t,n){"use strict";n.r(t);var o=n(93433),i=n(29439),l=n(72791),r=n(95087),c=n(29945),a=n(26824),u=n(57689),s=n(9478),f=n(81551),p=n(87995),b=n(31460),d=n(47974),h=n(99670),g=n(80184),w=null;t.default=function(){var e=(0,u.s0)(),t=(0,l.useState)(!1),n=(0,i.Z)(t,2),x=n[0],v=n[1],m=(0,l.useState)(["cpu","mem","block","mutex","goroutines"]),y=(0,i.Z)(m,2),j=y[0],k=y[1],_=(0,s.Yc)(),C=function(e){var t=[];t=j.indexOf(e.target.value)>-1?j.filter((function(t){return t!==e.target.value})):[].concat((0,o.Z)(j),[e.target.value]),k(t)},O=(0,f.TL)();return(0,l.useEffect)((function(){O((0,p.Sc)("profile"))}),[]),(0,g.jsxs)(l.Fragment,{children:[(0,g.jsx)(d.Z,{label:"Profile",actions:(0,g.jsx)(h.Z,{})}),(0,g.jsxs)(c.Xgh,{children:[!_&&(0,g.jsx)(b.Z,{compactMode:!0}),(0,g.jsxs)(c.ltY,{children:[(0,g.jsxs)(c.xuv,{sx:{display:"flex",gap:10,"& div":{width:"initial"},"& .inputItem:not(:last-of-type)":{marginBottom:0}},children:[(0,g.jsx)(c.AZs,{noMinWidth:!0,children:"Types to profile:"}),[{label:"cpu",value:"cpu"},{label:"mem",value:"mem"},{label:"block",value:"block"},{label:"mutex",value:"mutex"},{label:"goroutines",value:"goroutines"}].map((function(e){return(0,g.jsx)(c.XZJ,{checked:j.indexOf(e.value)>-1,disabled:x||!_,id:"checkbox-".concat(e.label),label:e.label,name:"checkbox-".concat(e.label),onChange:C,value:e.value},"checkbox-".concat(e.label))}))]}),(0,g.jsxs)(c.xuv,{sx:{display:"flex",justifyContent:"flex-end",marginTop:24,gap:10},children:[(0,g.jsx)(c.zxk,{id:"start-profiling",type:"submit",variant:_?"callAction":"regular",disabled:x||j.length<1||!_,onClick:function(){_?function(){var e=j.join(","),t=new URL(window.location.toString()),n=t.port,o=new URL(document.baseURI).pathname,i=(0,a.x2)(t.protocol);if(null!==(w=new r.w3cwebsocket("".concat(i,"://").concat(t.hostname,":").concat(n).concat(o,"ws/profile?types=").concat(e))))w.onopen=function(){v(!0),w.send("ok")},w.onmessage=function(e){var t=new Blob([e.data],{type:"application/zip"});v(!1);var n=document.createElement("a");n.href=window.URL.createObjectURL(t),n.download="profile.zip",document.body.appendChild(n),n.click(),document.body.removeChild(n)},w.onclose=function(){console.log("connection closed by server"),v(!1)}}():e("/support/register")},label:"Start Profiling"}),(0,g.jsx)(c.zxk,{id:"stop-profiling",type:"submit",variant:"callAction",color:"primary",disabled:!x||!_,onClick:function(){w.close(1e3),v(!1)},label:"Stop Profiling"})]})]})]})]})}},26824:function(e,t,n){"use strict";n.d(t,{HE:function(){return l},V9:function(){return o},ci:function(){return i},x2:function(){return r}});var o=1006,i=1008,l=1011,r=function(e){var t="ws";return"https:"===e&&(t="wss"),t}},94210:function(e){var t=function(){if("object"===typeof self&&self)return self;if("object"===typeof window&&window)return window;throw new Error("Unable to resolve global `this`")};e.exports=function(){if(this)return this;if("object"===typeof globalThis&&globalThis)return globalThis;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch(e){return t()}try{return __global__||t()}finally{delete Object.prototype.__global__}}()},95087:function(e,t,n){var o;if("object"===typeof globalThis)o=globalThis;else try{o=n(94210)}catch(c){}finally{if(o||"undefined"===typeof window||(o=window),!o)throw new Error("Could not determine global this")}var i=o.WebSocket||o.MozWebSocket,l=n(51496);function r(e,t){return t?new i(e,t):new i(e)}i&&["CONNECTING","OPEN","CLOSING","CLOSED"].forEach((function(e){Object.defineProperty(r,e,{get:function(){return i[e]}})})),e.exports={w3cwebsocket:i?r:null,version:l}},51496:function(e,t,n){e.exports=n(19794).version},19794:function(e){"use strict";e.exports={version:"1.0.34"}}}]); -//# sourceMappingURL=483.c4ee886e.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/483.c4ee886e.chunk.js.map b/portal-ui/build/static/js/483.c4ee886e.chunk.js.map deleted file mode 100644 index eb403aadf5..0000000000 --- a/portal-ui/build/static/js/483.c4ee886e.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/483.c4ee886e.chunk.js","mappings":"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","sources":["screens/Console/Support/Profile.tsx","utils/wsUtils.ts","../node_modules/es5-ext/global.js","../node_modules/websocket/lib/browser.js","../node_modules/websocket/lib/version.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 .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { IMessageEvent, w3cwebsocket as W3CWebSocket } from \"websocket\";\nimport { Button, PageLayout, FormLayout, Box, Checkbox, InputLabel } from \"mds\";\nimport { wsProtocol } from \"../../../utils/wsUtils\";\nimport { useNavigate } from \"react-router-dom\";\nimport { registeredCluster } from \"../../../config\";\nimport { useAppDispatch } from \"../../../store\";\nimport { setHelpName } from \"../../../systemSlice\";\nimport RegisterCluster from \"./RegisterCluster\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nvar c: any = null;\n\nconst Profile = () => {\n const navigate = useNavigate();\n\n const [profilingStarted, setProfilingStarted] = useState(false);\n const [types, setTypes] = useState([\n \"cpu\",\n \"mem\",\n \"block\",\n \"mutex\",\n \"goroutines\",\n ]);\n const clusterRegistered = registeredCluster();\n const typesList = [\n { label: \"cpu\", value: \"cpu\" },\n { label: \"mem\", value: \"mem\" },\n { label: \"block\", value: \"block\" },\n { label: \"mutex\", value: \"mutex\" },\n { label: \"goroutines\", value: \"goroutines\" },\n ];\n\n const onCheckboxClick = (e: React.ChangeEvent) => {\n let newArr: string[] = [];\n if (types.indexOf(e.target.value) > -1) {\n newArr = types.filter((type) => type !== e.target.value);\n } else {\n newArr = [...types, e.target.value];\n }\n setTypes(newArr);\n };\n\n const startProfiling = () => {\n const typeString = types.join(\",\");\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 c = new W3CWebSocket(\n `${wsProt}://${url.hostname}:${port}${baseUrl}ws/profile?types=${typeString}`,\n );\n\n if (c !== null) {\n c.onopen = () => {\n setProfilingStarted(true);\n c.send(\"ok\");\n };\n c.onmessage = (message: IMessageEvent) => {\n // process received message\n let response = new Blob([message.data], { type: \"application/zip\" });\n let filename = \"profile.zip\";\n setProfilingStarted(false);\n var link = document.createElement(\"a\");\n link.href = window.URL.createObjectURL(response);\n link.download = filename;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n };\n c.onclose = () => {\n console.log(\"connection closed by server\");\n setProfilingStarted(false);\n };\n return () => {\n c.close(1000);\n console.log(\"closing websockets\");\n setProfilingStarted(false);\n };\n }\n };\n\n const stopProfiling = () => {\n c.close(1000);\n setProfilingStarted(false);\n };\n\n const dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(setHelpName(\"profile\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n } />\n \n {!clusterRegistered && }\n \n \n Types to profile:\n {typesList.map((t) => (\n -1}\n disabled={profilingStarted || !clusterRegistered}\n key={`checkbox-${t.label}`}\n id={`checkbox-${t.label}`}\n label={t.label}\n name={`checkbox-${t.label}`}\n onChange={onCheckboxClick}\n value={t.value}\n />\n ))}\n \n \n {\n if (!clusterRegistered) {\n navigate(\"/support/register\");\n return;\n }\n startProfiling();\n }}\n label={\"Start Profiling\"}\n />\n {\n stopProfiling();\n }}\n label={\"Stop Profiling\"}\n />\n \n \n \n \n );\n};\n\nexport default Profile;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\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 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","var naiveFallback = function () {\n\tif (typeof self === \"object\" && self) return self;\n\tif (typeof window === \"object\" && window) return window;\n\tthrow new Error(\"Unable to resolve global `this`\");\n};\n\nmodule.exports = (function () {\n\tif (this) return this;\n\n\t// Unexpected strict mode (may happen if e.g. bundled into ESM module)\n\n\t// Fallback to standard globalThis if available\n\tif (typeof globalThis === \"object\" && globalThis) return globalThis;\n\n\t// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis\n\t// In all ES5+ engines global object inherits from Object.prototype\n\t// (if you approached one that doesn't please report)\n\ttry {\n\t\tObject.defineProperty(Object.prototype, \"__global__\", {\n\t\t\tget: function () { return this; },\n\t\t\tconfigurable: true\n\t\t});\n\t} catch (error) {\n\t\t// Unfortunate case of updates to Object.prototype being restricted\n\t\t// via preventExtensions, seal or freeze\n\t\treturn naiveFallback();\n\t}\n\ttry {\n\t\t// Safari case (window.__global__ works, but __global__ does not)\n\t\tif (!__global__) return naiveFallback();\n\t\treturn __global__;\n\t} finally {\n\t\tdelete Object.prototype.__global__;\n\t}\n})();\n","var _globalThis;\nif (typeof globalThis === 'object') {\n\t_globalThis = globalThis;\n} else {\n\ttry {\n\t\t_globalThis = require('es5-ext/global');\n\t} catch (error) {\n\t} finally {\n\t\tif (!_globalThis && typeof window !== 'undefined') { _globalThis = window; }\n\t\tif (!_globalThis) { throw new Error('Could not determine global this'); }\n\t}\n}\n\nvar NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;\nvar websocket_version = require('./version');\n\n\n/**\n * Expose a W3C WebSocket class with just one or two arguments.\n */\nfunction W3CWebSocket(uri, protocols) {\n\tvar native_instance;\n\n\tif (protocols) {\n\t\tnative_instance = new NativeWebSocket(uri, protocols);\n\t}\n\telse {\n\t\tnative_instance = new NativeWebSocket(uri);\n\t}\n\n\t/**\n\t * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket\n\t * class). Since it is an Object it will be returned as it is when creating an\n\t * instance of W3CWebSocket via 'new W3CWebSocket()'.\n\t *\n\t * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2\n\t */\n\treturn native_instance;\n}\nif (NativeWebSocket) {\n\t['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) {\n\t\tObject.defineProperty(W3CWebSocket, prop, {\n\t\t\tget: function() { return NativeWebSocket[prop]; }\n\t\t});\n\t});\n}\n\n/**\n * Module exports.\n */\nmodule.exports = {\n 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null,\n 'version' : websocket_version\n};\n","module.exports = require('../package.json').version;\n"],"names":["c","navigate","useNavigate","_useState","useState","_useState2","_slicedToArray","profilingStarted","setProfilingStarted","_useState3","_useState4","types","setTypes","clusterRegistered","registeredCluster","onCheckboxClick","e","newArr","indexOf","target","value","filter","type","concat","_toConsumableArray","dispatch","useAppDispatch","useEffect","setHelpName","_jsxs","Fragment","children","_jsx","PageHeaderWrapper","label","actions","HelpMenu","PageLayout","RegisterCluster","compactMode","FormLayout","Box","sx","display","gap","width","marginBottom","InputLabel","noMinWidth","map","t","Checkbox","checked","disabled","id","name","onChange","justifyContent","marginTop","Button","variant","length","onClick","typeString","join","url","URL","window","location","toString","port","baseUrl","document","baseURI","pathname","wsProt","wsProtocol","protocol","W3CWebSocket","hostname","onopen","send","onmessage","message","response","Blob","data","link","createElement","href","createObjectURL","download","body","appendChild","click","removeChild","onclose","console","log","startProfiling","color","close","WSCloseAbnormalClosure","WSClosePolicyViolation","WSCloseInternalServerErr","naiveFallback","self","Error","module","exports","this","globalThis","Object","defineProperty","prototype","get","configurable","error","__global__","_globalThis","require","NativeWebSocket","WebSocket","MozWebSocket","websocket_version","uri","protocols","forEach","prop"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/4874.157a2b95.chunk.js b/portal-ui/build/static/js/4874.5e5b3042.chunk.js similarity index 97% rename from portal-ui/build/static/js/4874.157a2b95.chunk.js rename to portal-ui/build/static/js/4874.5e5b3042.chunk.js index bcc3cd0ae2..ef430e024e 100644 --- a/portal-ui/build/static/js/4874.157a2b95.chunk.js +++ b/portal-ui/build/static/js/4874.5e5b3042.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[4874],{94874:function(e,n,t){t.r(n);var i=t(29439),o=t(72791),s=t(29945),c=t(57689),a=t(23814),r=t(56087),l=t(38442),u=t(45248),d=t(87995),h=t(81551),f=t(31776),m=t(59114),x=t(75578),p=t(27454),j=t(47974),C=t(99670),b=t(80184),I=(0,x.Z)(o.lazy((function(){return t.e(312).then(t.bind(t,312))})));n.default=function(){var e=(0,h.TL)(),n=(0,c.s0)(),t=(0,o.useState)([]),x=(0,i.Z)(t,2),A=x[0],P=x[1],y=(0,o.useState)(!1),M=(0,i.Z)(y,2),v=M[0],Z=M[1],F=(0,o.useState)(!1),S=(0,i.Z)(F,2),g=S[0],E=S[1],L=(0,o.useState)(""),O=(0,i.Z)(L,2),_=O[0],k=O[1],D=(0,o.useState)(""),w=(0,i.Z)(D,2),T=w[0],B=w[1],K=(0,l.F)(r.C3,[r.Ft.ADMIN_GET_POLICY]),N=(0,l.F)(r.C3,r.bE),R=(0,l.F)(r.C3,r.K$),X=(0,l.F)(r.C3,r.XM),Y=(0,l.F)(r.C3,r.GD);(0,o.useEffect)((function(){z()}),[]),(0,o.useEffect)((function(){v&&(R?f.h.policies.listPolicies().then((function(e){var n,t=null!==(n=e.data.policies)&&void 0!==n?n:[];t.sort((function(e,n){return e.name>n.name?1:e.namen.name?1:e.name.\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport {\n AddIcon,\n Button,\n DataTable,\n Grid,\n HelpBox,\n IAMPoliciesIcon,\n PageLayout,\n} from \"mds\";\nimport { useNavigate } from \"react-router-dom\";\nimport { actionsTray } from \"../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport {\n CONSOLE_UI_RESOURCE,\n createPolicyPermissions,\n deletePolicyPermissions,\n IAM_PAGES,\n IAM_SCOPES,\n listPolicyPermissions,\n permissionTooltipHelper,\n viewPolicyPermissions,\n} from \"../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../common/SecureComponent\";\nimport { Policy } from \"../../../api/consoleApi\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { api } from \"../../../api\";\nimport SearchBox from \"../Common/SearchBox\";\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst DeletePolicy = withSuspense(React.lazy(() => import(\"./DeletePolicy\")));\n\nconst ListPolicies = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [records, setRecords] = useState([]);\n const [loading, setLoading] = useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedPolicy, setSelectedPolicy] = useState(\"\");\n const [filterPolicies, setFilterPolicies] = useState(\"\");\n const viewPolicy = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.ADMIN_GET_POLICY,\n ]);\n\n const canDeletePolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n deletePolicyPermissions,\n );\n\n const canDisplayPolicies = hasPermission(\n CONSOLE_UI_RESOURCE,\n listPolicyPermissions,\n );\n\n const canCreatePolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n createPolicyPermissions,\n );\n\n const canViewPolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n viewPolicyPermissions,\n );\n\n useEffect(() => {\n fetchRecords();\n }, []);\n\n useEffect(() => {\n if (loading) {\n if (canDisplayPolicies) {\n api.policies\n .listPolicies()\n .then((res) => {\n const policies = res.data.policies ?? [];\n\n policies.sort((pa, pb) => {\n if (pa.name! > pb.name!) {\n return 1;\n }\n\n if (pa.name! < pb.name!) {\n return -1;\n }\n\n return 0;\n });\n\n setLoading(false);\n setRecords(policies);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setErrorSnackMessage(err));\n });\n } else {\n setLoading(false);\n }\n }\n }, [loading, setLoading, setRecords, dispatch, canDisplayPolicies]);\n\n const fetchRecords = () => {\n setLoading(true);\n };\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n\n if (refresh) {\n fetchRecords();\n }\n };\n\n const confirmDeletePolicy = (policy: string) => {\n setDeleteOpen(true);\n setSelectedPolicy(policy);\n };\n\n const viewAction = (policy: any) => {\n navigate(`${IAM_PAGES.POLICIES}/${encodeURLString(policy.name)}`);\n };\n\n const tableActions = [\n {\n type: \"view\",\n onClick: viewAction,\n disableButtonFunction: () => !viewPolicy,\n },\n {\n type: \"delete\",\n onClick: confirmDeletePolicy,\n sendOnlyId: true,\n disableButtonFunction: () => !canDeletePolicy,\n },\n ];\n\n const filteredRecords = records.filter(\n (elementItem) => elementItem.name?.includes(filterPolicies),\n );\n\n useEffect(() => {\n dispatch(setHelpName(\"list_policies\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {deleteOpen && (\n \n )}\n } />\n\n \n \n \n \n\n \n \n }\n onClick={() => {\n navigate(`${IAM_PAGES.POLICY_ADD}`);\n }}\n disabled={!canCreatePolicy}\n />\n \n \n \n \n \n \n \n \n \n \n \n }\n help={\n \n MinIO uses Policy-Based Access Control (PBAC) to define the\n authorized actions and resources to which an authenticated\n user has access. Each policy describes one or more actions and\n conditions that outline the permissions of a user or group of\n users.\n
    \n
    \n MinIO PBAC is built for compatibility with AWS IAM policy\n syntax, structure, and behavior. The MinIO documentation makes\n a best-effort to cover IAM-specific behavior and\n functionality. Consider deferring to the IAM documentation for\n more complete documentation on AWS IAM-specific topics.\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 ListPolicies;\n"],"names":["DeletePolicy","withSuspense","React","dispatch","useAppDispatch","navigate","useNavigate","_useState","useState","_useState2","_slicedToArray","records","setRecords","_useState3","_useState4","loading","setLoading","_useState5","_useState6","deleteOpen","setDeleteOpen","_useState7","_useState8","selectedPolicy","setSelectedPolicy","_useState9","_useState10","filterPolicies","setFilterPolicies","viewPolicy","hasPermission","CONSOLE_UI_RESOURCE","IAM_SCOPES","ADMIN_GET_POLICY","canDeletePolicy","deletePolicyPermissions","canDisplayPolicies","listPolicyPermissions","canCreatePolicy","createPolicyPermissions","canViewPolicy","viewPolicyPermissions","useEffect","fetchRecords","api","policies","listPolicies","then","res","_res$data$policies","data","sort","pa","pb","name","catch","err","setErrorSnackMessage","tableActions","type","onClick","policy","concat","IAM_PAGES","POLICIES","encodeURLString","disableButtonFunction","sendOnlyId","filteredRecords","filter","elementItem","_elementItem$name","includes","setHelpName","_jsxs","Fragment","children","_jsx","closeDeleteModalAndRefresh","refresh","PageHeaderWrapper","label","actions","HelpMenu","PageLayout","Grid","container","item","xs","sx","actionsTray","SearchBox","onChange","placeholder","value","maxWidth","SecureComponent","scopes","ADMIN_CREATE_POLICY","resource","errorProps","disabled","TooltipWrapper","tooltip","permissionTooltipHelper","Button","id","variant","icon","AddIcon","POLICY_ADD","ADMIN_LIST_USER_POLICIES","DataTable","itemActions","columns","elementKey","isLoading","entityName","idField","marginTop","HelpBox","title","iconComponent","IAMPoliciesIcon","help","href","target","rel"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/4874.5e5b3042.chunk.js","mappings":"mTAsDMA,GAAeC,EAAAA,EAAAA,GAAaC,EAAAA,MAAW,kBAAM,4BAAwB,KAuO3E,UArOqB,WACnB,IAAMC,GAAWC,EAAAA,EAAAA,MACXC,GAAWC,EAAAA,EAAAA,MAEjBC,GAA8BC,EAAAA,EAAAA,UAAmB,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA7CI,EAAOF,EAAA,GAAEG,EAAUH,EAAA,GAC1BI,GAA8BL,EAAAA,EAAAA,WAAkB,GAAMM,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAA/CE,EAAOD,EAAA,GAAEE,EAAUF,EAAA,GAC1BG,GAAoCT,EAAAA,EAAAA,WAAkB,GAAMU,GAAAR,EAAAA,EAAAA,GAAAO,EAAA,GAArDE,EAAUD,EAAA,GAAEE,EAAaF,EAAA,GAChCG,GAA4Cb,EAAAA,EAAAA,UAAiB,IAAGc,GAAAZ,EAAAA,EAAAA,GAAAW,EAAA,GAAzDE,EAAcD,EAAA,GAAEE,EAAiBF,EAAA,GACxCG,GAA4CjB,EAAAA,EAAAA,UAAiB,IAAGkB,GAAAhB,EAAAA,EAAAA,GAAAe,EAAA,GAAzDE,EAAcD,EAAA,GAAEE,EAAiBF,EAAA,GAClCG,GAAaC,EAAAA,EAAAA,GAAcC,EAAAA,GAAqB,CACpDC,EAAAA,GAAWC,mBAGPC,GAAkBJ,EAAAA,EAAAA,GACtBC,EAAAA,GACAI,EAAAA,IAGIC,GAAqBN,EAAAA,EAAAA,GACzBC,EAAAA,GACAM,EAAAA,IAGIC,GAAkBR,EAAAA,EAAAA,GACtBC,EAAAA,GACAQ,EAAAA,IAGIC,GAAgBV,EAAAA,EAAAA,GACpBC,EAAAA,GACAU,EAAAA,KAGFC,EAAAA,EAAAA,YAAU,WACRC,GACF,GAAG,KAEHD,EAAAA,EAAAA,YAAU,WACJ3B,IACEqB,EACFQ,EAAAA,EAAIC,SACDC,eACAC,MAAK,SAACC,GAAS,IAADC,EACPJ,EAA4B,QAApBI,EAAGD,EAAIE,KAAKL,gBAAQ,IAAAI,EAAAA,EAAI,GAEtCJ,EAASM,MAAK,SAACC,EAAIC,GACjB,OAAID,EAAGE,KAAQD,EAAGC,KACT,EAGLF,EAAGE,KAAQD,EAAGC,MACR,EAGH,CACT,IAEAtC,GAAW,GACXJ,EAAWiC,EACb,IACCU,OAAM,SAACC,GACNxC,GAAW,GACXb,GAASsD,EAAAA,EAAAA,IAAqBD,GAChC,IAEFxC,GAAW,GAGjB,GAAG,CAACD,EAASC,EAAYJ,EAAYT,EAAUiC,IAE/C,IAAMO,EAAe,WACnB3B,GAAW,EACb,EAmBM0C,EAAe,CACnB,CACEC,KAAM,OACNC,QAPe,SAACC,GAClBxD,EAAS,GAADyD,OAAIC,EAAAA,GAAUC,SAAQ,KAAAF,QAAIG,EAAAA,EAAAA,IAAgBJ,EAAOP,OAC3D,EAMIY,sBAAuB,kBAAOrC,CAAU,GAE1C,CACE8B,KAAM,SACNC,QAjBwB,SAACC,GAC3BzC,GAAc,GACdI,EAAkBqC,EACpB,EAeIM,YAAY,EACZD,sBAAuB,kBAAOhC,CAAe,IAI3CkC,EAAkBzD,EAAQ0D,QAC9B,SAACC,GAAW,IAAAC,EAAA,OAAqB,QAArBA,EAAKD,EAAYhB,YAAI,IAAAiB,OAAA,EAAhBA,EAAkBC,SAAS7C,EAAe,IAQ7D,OALAe,EAAAA,EAAAA,YAAU,WACRvC,GAASsE,EAAAA,EAAAA,IAAY,iBAEvB,GAAG,KAGDC,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CACNzD,IACC0D,EAAAA,EAAAA,KAAC7E,EAAY,CACXmB,WAAYA,EACZI,eAAgBA,EAChBuD,2BA9C2B,SAACC,GAClC3D,GAAc,GAEV2D,GACFpC,GAEJ,KA2CIkC,EAAAA,EAAAA,KAACG,EAAAA,EAAiB,CAACC,MAAM,eAAeC,SAASL,EAAAA,EAAAA,KAACM,EAAAA,EAAQ,OAE1DN,EAAAA,EAAAA,KAACO,EAAAA,IAAU,CAAAR,UACTF,EAAAA,EAAAA,MAACW,EAAAA,IAAI,CAACC,WAAS,EAAAV,SAAA,EACbF,EAAAA,EAAAA,MAACW,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAIC,GAAIC,EAAAA,GAAYA,YAAYd,SAAA,EAC7CC,EAAAA,EAAAA,KAACc,EAAAA,EAAS,CACRC,SAAUhE,EACViE,YAAY,kBACZC,MAAOnE,EACP8D,GAAI,CAAEM,SAAU,QAGlBlB,EAAAA,EAAAA,KAACmB,EAAAA,EAAe,CACdC,OAAQ,CAACjE,EAAAA,GAAWkE,qBACpBC,SAAUpE,EAAAA,GACVqE,WAAY,CAAEC,UAAU,GAAOzB,UAE/BC,EAAAA,EAAAA,KAACyB,EAAAA,EAAc,CACbC,QACEjE,EACI,IACAkE,EAAAA,EAAAA,IACEjE,EAAAA,GACA,mBAEPqC,UAEDC,EAAAA,EAAAA,KAAC4B,EAAAA,IAAM,CACLC,GAAI,gBACJzB,MAAO,gBACP0B,QAAQ,aACRC,MAAM/B,EAAAA,EAAAA,KAACgC,EAAAA,IAAO,IACdjD,QAAS,WACPvD,EAAS,GAADyD,OAAIC,EAAAA,GAAU+C,YACxB,EACAT,UAAW/D,YAKnBuC,EAAAA,EAAAA,KAACQ,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAGZ,UAChBC,EAAAA,EAAAA,KAACmB,EAAAA,EAAe,CACdC,OAAQ,CAACjE,EAAAA,GAAW+E,0BACpBZ,SAAUpE,EAAAA,GACVqE,WAAY,CAAEC,UAAU,GAAOzB,UAE/BC,EAAAA,EAAAA,KAACyB,EAAAA,EAAc,CACbC,QACE/D,EACI,IACAgE,EAAAA,EAAAA,IACE/D,EAAAA,GACA,uBAEPmC,UAEDC,EAAAA,EAAAA,KAACmC,EAAAA,IAAS,CACRC,YAAavD,EACbwD,QAAS,CAAC,CAAEjC,MAAO,OAAQkC,WAAY,SACvCC,UAAWrG,EACXJ,QAASyD,EACTiD,WAAW,WACXC,QAAQ,gBAKhBzC,EAAAA,EAAAA,KAACQ,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAIC,GAAI,CAAE8B,UAAW,IAAK3C,UACvCC,EAAAA,EAAAA,KAAC2C,EAAAA,IAAO,CACNC,MAAO,gCACPC,eAAe7C,EAAAA,EAAAA,KAAC8C,EAAAA,IAAe,IAC/BC,MACElD,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CAAC,8PAMRC,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,SAAM,oSAMNA,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,SAAM,4BACoB,KAC1BA,EAAAA,EAAAA,KAAA,KACEgD,KAAK,2GACLC,OAAO,SACPC,IAAI,WAAUnD,SACf,kBAEG,kBAUtB,C","sources":["screens/Console/Policies/ListPolicies.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport {\n AddIcon,\n Button,\n DataTable,\n Grid,\n HelpBox,\n IAMPoliciesIcon,\n PageLayout,\n} from \"mds\";\nimport { useNavigate } from \"react-router-dom\";\nimport { actionsTray } from \"../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport {\n CONSOLE_UI_RESOURCE,\n createPolicyPermissions,\n deletePolicyPermissions,\n IAM_PAGES,\n IAM_SCOPES,\n listPolicyPermissions,\n permissionTooltipHelper,\n viewPolicyPermissions,\n} from \"../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../common/SecureComponent\";\nimport { Policy } from \"../../../api/consoleApi\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { api } from \"../../../api\";\nimport SearchBox from \"../Common/SearchBox\";\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst DeletePolicy = withSuspense(React.lazy(() => import(\"./DeletePolicy\")));\n\nconst ListPolicies = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [records, setRecords] = useState([]);\n const [loading, setLoading] = useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedPolicy, setSelectedPolicy] = useState(\"\");\n const [filterPolicies, setFilterPolicies] = useState(\"\");\n const viewPolicy = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.ADMIN_GET_POLICY,\n ]);\n\n const canDeletePolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n deletePolicyPermissions,\n );\n\n const canDisplayPolicies = hasPermission(\n CONSOLE_UI_RESOURCE,\n listPolicyPermissions,\n );\n\n const canCreatePolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n createPolicyPermissions,\n );\n\n const canViewPolicy = hasPermission(\n CONSOLE_UI_RESOURCE,\n viewPolicyPermissions,\n );\n\n useEffect(() => {\n fetchRecords();\n }, []);\n\n useEffect(() => {\n if (loading) {\n if (canDisplayPolicies) {\n api.policies\n .listPolicies()\n .then((res) => {\n const policies = res.data.policies ?? [];\n\n policies.sort((pa, pb) => {\n if (pa.name! > pb.name!) {\n return 1;\n }\n\n if (pa.name! < pb.name!) {\n return -1;\n }\n\n return 0;\n });\n\n setLoading(false);\n setRecords(policies);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setErrorSnackMessage(err));\n });\n } else {\n setLoading(false);\n }\n }\n }, [loading, setLoading, setRecords, dispatch, canDisplayPolicies]);\n\n const fetchRecords = () => {\n setLoading(true);\n };\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n\n if (refresh) {\n fetchRecords();\n }\n };\n\n const confirmDeletePolicy = (policy: string) => {\n setDeleteOpen(true);\n setSelectedPolicy(policy);\n };\n\n const viewAction = (policy: any) => {\n navigate(`${IAM_PAGES.POLICIES}/${encodeURLString(policy.name)}`);\n };\n\n const tableActions = [\n {\n type: \"view\",\n onClick: viewAction,\n disableButtonFunction: () => !viewPolicy,\n },\n {\n type: \"delete\",\n onClick: confirmDeletePolicy,\n sendOnlyId: true,\n disableButtonFunction: () => !canDeletePolicy,\n },\n ];\n\n const filteredRecords = records.filter(\n (elementItem) => elementItem.name?.includes(filterPolicies),\n );\n\n useEffect(() => {\n dispatch(setHelpName(\"list_policies\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {deleteOpen && (\n \n )}\n } />\n\n \n \n \n \n\n \n \n }\n onClick={() => {\n navigate(`${IAM_PAGES.POLICY_ADD}`);\n }}\n disabled={!canCreatePolicy}\n />\n \n \n \n \n \n \n \n \n \n \n \n }\n help={\n \n MinIO uses Policy-Based Access Control (PBAC) to define the\n authorized actions and resources to which an authenticated\n user has access. Each policy describes one or more actions and\n conditions that outline the permissions of a user or group of\n users.\n
    \n
    \n MinIO PBAC is built for compatibility with AWS IAM policy\n syntax, structure, and behavior. The MinIO documentation makes\n a best-effort to cover IAM-specific behavior and\n functionality. Consider deferring to the IAM documentation for\n more complete documentation on AWS IAM-specific topics.\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 ListPolicies;\n"],"names":["DeletePolicy","withSuspense","React","dispatch","useAppDispatch","navigate","useNavigate","_useState","useState","_useState2","_slicedToArray","records","setRecords","_useState3","_useState4","loading","setLoading","_useState5","_useState6","deleteOpen","setDeleteOpen","_useState7","_useState8","selectedPolicy","setSelectedPolicy","_useState9","_useState10","filterPolicies","setFilterPolicies","viewPolicy","hasPermission","CONSOLE_UI_RESOURCE","IAM_SCOPES","ADMIN_GET_POLICY","canDeletePolicy","deletePolicyPermissions","canDisplayPolicies","listPolicyPermissions","canCreatePolicy","createPolicyPermissions","canViewPolicy","viewPolicyPermissions","useEffect","fetchRecords","api","policies","listPolicies","then","res","_res$data$policies","data","sort","pa","pb","name","catch","err","setErrorSnackMessage","tableActions","type","onClick","policy","concat","IAM_PAGES","POLICIES","encodeURLString","disableButtonFunction","sendOnlyId","filteredRecords","filter","elementItem","_elementItem$name","includes","setHelpName","_jsxs","Fragment","children","_jsx","closeDeleteModalAndRefresh","refresh","PageHeaderWrapper","label","actions","HelpMenu","PageLayout","Grid","container","item","xs","sx","actionsTray","SearchBox","onChange","placeholder","value","maxWidth","SecureComponent","scopes","ADMIN_CREATE_POLICY","resource","errorProps","disabled","TooltipWrapper","tooltip","permissionTooltipHelper","Button","id","variant","icon","AddIcon","POLICY_ADD","ADMIN_LIST_USER_POLICIES","DataTable","itemActions","columns","elementKey","isLoading","entityName","idField","marginTop","HelpBox","title","iconComponent","IAMPoliciesIcon","help","href","target","rel"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/4902.7e038ea1.chunk.js.map b/portal-ui/build/static/js/4902.7e038ea1.chunk.js.map deleted file mode 100644 index 293d728fc2..0000000000 --- a/portal-ui/build/static/js/4902.7e038ea1.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/4902.7e038ea1.chunk.js","mappings":"iJAiCA,IAfA,SACEA,GAEC,IADDC,EAAmCC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KAUtC,OARA,SAA+BG,GAC7B,OACEC,EAAAA,EAAAA,KAACC,EAAAA,SAAQ,CAACN,SAAUA,EAASO,UAC3BF,EAAAA,EAAAA,KAACN,GAAgBS,EAAAA,EAAAA,GAAA,GAAMJ,KAG7B,CAGF,C,+OCiBMK,EAAa,SAAHC,GAaT,IAZLC,EAAQD,EAARC,SACAC,EAAcF,EAAdE,eACAC,EAAKH,EAALG,MACAC,EAAOJ,EAAPI,QACAP,EAAQG,EAARH,SASMQ,EAAOF,EAAMG,cACnB,OACEX,EAAAA,EAAAA,KAACY,EAAAA,EAAG,CACFC,WAAWC,EAAAA,EAAAA,IAAIC,EAAAA,EAAAA,GAAC,CACd,eAAe,EACfC,OAAQV,GAAQ,YACDC,IAEjBE,QAAS,WACPA,GAAWA,EAAQC,EACrB,EACAO,GAAI,CACFC,QAAS,OACTC,WAAY,aACZC,eAAgB,SAChBC,SAAU,SACVC,WAAY,oBACZC,aAAc,iBACd,iBAAkB,CAChBL,QAAS,OACTC,WAAY,SACZC,eAAgB,SAChBC,SAAU,UAGZ,iBAAkB,CAChBH,QAAS,OACTC,WAAY,SACZE,SAAU,SACVG,MAAO,OACP,gBAAiB,CACfN,QAAS,OACTC,WAAY,SACZC,eAAgB,SAChBK,KAAM,GAER,mBAAoB,CAClB,cAAe,CACbC,SAAU,IACVF,MAAO,OACPG,UAAW,GACXC,OAAQ,UAKd,iBAAkB,CAChBC,SAAU,OACVX,QAAS,OACTY,aAAc,MACdX,WAAY,SACZ,cAAe,CACbY,YAAa,MACbH,OAAQ,OACRJ,MAAO,SAIX,mBAAoB,CAClBK,SAAU,OACVG,cAAe,aAGjB,4BAA6B,CAC3BC,OAAQ,UACR,iBAAkB,CAChB,WAAY,CACVJ,SAAU,OACVK,WAAY,OAKlB,+BAAgC,CAC9BC,MAAO,UACPC,SAAU,WAEV,cAAe,CACbC,KAAM,WAGR,WAAY,CACVC,QAAS,MACTF,SAAU,WACVZ,MAAO,OACPI,OAAQ,OACRW,gBAAiB,UACjBrB,QAAS,QACTsB,KAAM,IAER,mBAAoB,CAClB,cAAe,CACbC,UAAW,WAIjB,WAAY,CACVC,WAAY,UACZP,MAAO,WAET,cAAe,CACbO,WAAY,YAEdxC,SAEDA,GAGP,EAEMyC,EAAqB,SAAC5C,GAC1B,OACEC,EAAAA,EAAAA,KAACY,EAAAA,EAAG,CAACC,UAAU,gBAAeX,UAC5BF,EAAAA,EAAAA,KAACY,EAAAA,EAAG,CAACC,UAAU,qBAAoBX,UACjC0C,EAAAA,EAAAA,MAAA,OAAK/B,UAAU,UAASX,SAAA,CAAEH,EAAM8C,aAAa,UAIrD,EAEMC,EAAqB,SAAC/C,GAO1B,OACEC,EAAAA,EAAAA,KAACY,EAAAA,EAAG,CAACC,UAAU,eAAekC,MAAOhD,EAAMgD,MAAM7C,UAC/C0C,EAAAA,EAAAA,MAAChC,EAAAA,EAAG,CAACC,UAAU,oBAAmBX,SAAA,EAChCF,EAAAA,EAAAA,KAAA,OAAKa,UAAU,UAASX,UACrB8C,EAAAA,EAAAA,IAAejD,EAAM8C,cAAgB,OAExCD,EAAAA,EAAAA,MAAChC,EAAAA,EAAG,CAACC,UAAU,eAAcX,SAAA,EAC3BF,EAAAA,EAAAA,KAAA,OAAAE,UAAM8C,EAAAA,EAAAA,IAAejD,EAAMkD,OAAS,OACnCD,EAAAA,EAAAA,IAAejD,EAAMmD,SAEtBN,EAAAA,EAAAA,MAAA,OAAK/B,UAAU,UAASX,SAAA,CAAEH,EAAMoD,QAAQ,cAKlD,EAugBA,EArgBqB,SAAHC,GAA0C,IAADC,EAAnCC,EAAWF,EAAXE,YAChBC,GAAQC,EAAAA,EAAAA,KACRC,GAAgBC,EAAAA,EAAAA,GAAcH,EAAMI,YAAYC,KAAK,OAEvDC,EAAeP,EAEJ,OAAXA,QAAW,IAAXA,GAAiB,QAAND,EAAXC,EAAa5C,YAAI,IAAA2C,OAAN,EAAXA,EAAmB1C,cADnB,YAGEmD,EAAkBD,IAAgBE,EAAAA,GAAcC,UAChDC,EAAiBJ,IAAgBE,EAAAA,GAAcG,SAC/CC,EAAmBN,IAAgBE,EAAAA,GAAcK,WAEjDC,EAAaC,EAAAA,GAAWC,SAASV,GAGvCW,GAAoCC,EAAAA,EAAAA,UAAS,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAzCI,EAAUF,EAAA,GAAEG,EAAaH,EAAA,GAC5BI,EAAoBF,IAAeb,EAAAA,GAAcC,UACjDe,EAAmBH,IAAeb,EAAAA,GAAcG,SAChDc,EAAqBJ,IAAeb,EAAAA,GAAcK,WA8DhDa,EAAY,SAChBC,EACAC,EACAC,EACA1E,GAEA,IAAI2E,EACc,cAAhBxB,EAA8B,wBAA0BqB,EAC1D,OACElF,EAAAA,EAAAA,KAACsF,EAAAA,IAAM,CACLC,GAAE,kBAAAC,OAAoBN,GACtBE,QAASA,EACTrC,MAAO,CACLN,UAAW,OACXjB,MAAO,OAETiE,SACE5B,IAAgBE,EAAAA,GAAcC,WAAaH,IAAgBnD,EAE7DD,QAAS,SAACiF,GACRA,EAAEC,iBAEFC,OAAOC,KAAK,GAADL,OAAIH,EAAS,YAAY,SACtC,EACApC,MAAOkC,GAGb,EAEMW,EAAc,SAACpF,GACnBmE,EAAcnE,EAChB,GAEAqF,EAAAA,EAAAA,YAAU,WAENlB,EADEpB,EACYI,GAAe,YAEf,GAElB,GAAG,CAACJ,EAAeI,IAEnB,IAAMmC,EAAcC,EAAAA,GACpB,OACEjG,EAAAA,EAAAA,KAACkG,EAAAA,SAAQ,CAAAhG,UACP0C,EAAAA,EAAAA,MAAChC,EAAAA,EAAG,CACFK,GAAI,CACFkF,OAAQ,oBACRC,UAAW,MACXtE,aAAc,OACd,uBAAwB,CACtBN,MAAO,MACPI,OAAQ,OAEV,6BAA8B,CAC5Bc,WAAY,UACZ2D,aAAc,EACdC,UAAW,iCAEb,6BAA8B,CAC5B5D,WAAY,UACZ2D,aAAc,GAEhB,mCAAoC,CAClC3D,WAAY,YAEdxC,SAAA,EAEFF,EAAAA,EAAAA,KAACY,EAAAA,EAAG,CACFC,UAAW,iBACXI,GAAI,CACFW,OAAQ,MACRL,aAAc,6BAGlBqB,EAAAA,EAAAA,MAAChC,EAAAA,EAAG,CACFC,UAAWwD,EAAa,kBAAoB,GAC5CpD,GAAI,CACFC,QAAS,OAETqF,OAAQ,oBAERC,oBAAqB,CACnBC,GAAI,kBACJC,GAAI,eAGN,oBAAqB,CACnBxF,QAAS,OACTsF,oBAAqB,eAGvB,kBAAmB,CACjB/E,KAAM,EACNC,SAAU,QAEV,4BAA6B,CAC3BR,QAAS,SAIb,aAAc,CACZA,QAAS,QAGX,gBAAiB,CACfA,QAAS,OACTC,WAAY,SACZC,eAAgB,SAChBuF,QAAS,mBACTrF,WAAY,qBAEd,iBAAkB,CAChBM,OAAQ,OACRL,aAAc,qBAEhB,mBAAoB,CAClBK,OAAQ,OACRgF,YAAa,OACb/E,SAAU,OAEVa,WAAY,UAEZ,4BAA6B,CAC3B,iCAAkC,CAChCxB,QAAS,WAIf,kBAAmB,CACjB2F,UAAW,OACXF,QAAS,MACTpF,aAAc,oBACdL,QAAS,OACTC,WAAY,SACZyF,YAAa,OACb/E,SAAU,QAEZ,kBAAmB,CACjBX,QAAS,OACTG,SAAU,SACVF,WAAY,SACZC,eAAgB,SAChByF,UAAW,OACXF,QAAS,gBACTpF,aAAc,oBACdD,WAAY,qBACZO,SAAU,OACV,eAAgB,CACdM,MAAO,UACPF,OAAQ,UACR6E,eAAgB,aAGlB,aAAc,CACZtF,MAAO,OACPI,OAAQ,SAIZ,uBAAwB,CACtBH,KAAM,EACNP,QAAS,OACTG,SAAU,SACVF,WAAY,SACZC,eAAgB,eAChB2F,UAAW,SAEX,4BAA6B,CAC3B3F,eAAgB,eAChBI,MAAO,OACP,aAAc,CACZN,QAAS,SAEX,kBAAmB,CACjB6F,UAAW,SACXC,aAAc,UAKpB,cAAe,CACbtF,SAAU,QACVD,KAAM,GAGR,qBAAsB,CACpBiB,WAAY,sCACZ4D,UAAW,0BAEX,iBAAkB,CAChB/D,gBAAiB,WAGnB,mBAAoB,CAClBG,WAAY,aAGhBxC,SAAA,EAEFF,EAAAA,EAAAA,KAACY,EAAAA,EAAG,CAACC,UAAU,eAAcX,SAC1B8F,EAAYiB,KAAI,SAACC,GAChB,IAAMC,EAAkBD,EAAGC,gBAG3B,OAFiBD,EAAGE,SAGd/C,GAEAzB,EAAAA,EAAAA,MAAChC,EAAAA,EAAG,CAEFC,UAAU,cACVI,GAAI,CACFY,SAAU,OACV+E,YAAa,OACb1F,QAAS,OACTC,WAAY,SACZC,eAAgB,aAChBG,aAAc,iBAEd,eAAgB,CACdY,MAAO,UACPF,OAAQ,UACR6E,eAAgB,aAGlB,cAAe,CACb/E,YAAa,OACbI,MAAO,UACPE,KAAM,YAERnC,SAAA,EAEFF,EAAAA,EAAAA,KAACqH,EAAAA,IAAc,KACfzE,EAAAA,EAAAA,MAAA,KACE0E,KAAI,8CAAA9B,OAAgD3B,GACpD0D,IAAI,WACJ1G,UAAW,YAAYX,SAAA,CACxB,2BACwBF,EAAAA,EAAAA,KAAA,SAAM,gCAE3B,eAAAwF,OA/BgB0B,EAAGM,QAqC3BxH,EAAAA,EAAAA,KAACY,EAAAA,EAAG,CAEFC,UAAS,cACTI,GAAI,CACFY,SAAU,OACV+E,YAAa,OACb1F,QAAS,OACTC,WAAY,SACZC,eAAgB,aAChBG,aAAc,kBACdrB,SAEDgH,EAAGjE,OAAK,qBAAAuC,OAXiB0B,EAAGM,OAe/BL,GAEAnH,EAAAA,EAAAA,KAACY,EAAAA,EAAG,CAEFC,UAAU,gBACVI,GAAI,CACFY,SAAU,OACVK,WAAY,IACZF,cAAe,aACf9B,UAEF0C,EAAAA,EAAAA,MAAA,OAAA1C,SAAA,EAAM8C,EAAAA,EAAAA,IAAekE,EAAGM,MAAM,QAAO,iBAAAhC,OARf0B,EAAGM,QAa7BxH,EAAAA,EAAAA,KAACY,EAAAA,EAAG,CAEFC,UAAU,eACVkC,MAAOmE,EAAGnE,MAAM7C,UAEhB0C,EAAAA,EAAAA,MAAA,OAAA1C,SAAA,EAAM8C,EAAAA,EAAAA,IAAekE,EAAGM,MAAM,QAAO,qBAAAhC,OAJX0B,EAAGM,MAOnC,MAEAnD,EA2CE,MA1CFzB,EAAAA,EAAAA,MAAChC,EAAAA,EAAG,CACFC,UAAS,YAAA2E,OACP1B,EAAkB,kBAAoB,uBACrC5D,SAAA,CAEFuH,EAAAA,GAAwBR,KAAI,SAACC,EAAIQ,GAChC,IAAM7E,EAAemD,EAAY0B,GAAKF,KAC9BL,EAA8BD,EAA9BC,gBAER,OAFsCD,EAAbE,UAjWnCpH,EAAAA,EAAAA,KAACI,EAAU,CAETE,SAAUwD,EACVvD,eAAgBuE,EAChBtE,MAAO,YACPC,QAASgD,EAAgBqC,EAAc,KAAK5F,UAE5CF,EAAAA,EAAAA,KAACY,EAAAA,EAAG,CAACC,UAAU,cAAaX,UAC1BF,EAAAA,EAAAA,KAACY,EAAAA,EAAG,CAACC,UAAU,aAAYX,UACzBF,EAAAA,EAAAA,KAAA,OAAKa,UAAU,gBAAeX,UAC5BF,EAAAA,EAAAA,KAAC2H,EAAAA,IAAU,CAAC5E,MAAO,CAAEvB,MAAO,cAT7B,oBAsWO2F,GAEAnH,EAAAA,EAAAA,KAAC2C,EAAkB,CAEjBE,aAAcA,GAAa,aAAA2C,OADT0B,EAAG3B,MAOzBvF,EAAAA,EAAAA,KAAC8C,EAAkB,CAEjBD,aAAcA,EACdI,MAAOiE,EAAGjE,MACVC,OAAQgE,EAAGhE,OACXC,QAAS+D,EAAG/D,QACZJ,MAAOmE,EAAGnE,OAAM,mBAAAyC,OALQ0B,EAAG3B,IAQjC,KACAvF,EAAAA,EAAAA,KAACY,EAAAA,EAAG,CAACC,UAAU,aAAYX,SACxB+E,EAAU,uBAET,aACA,UACAlB,EAAAA,GAAcC,iBAKtBpB,EAAAA,EAAAA,MAAChC,EAAAA,EAAG,CACFC,UAAS,YAAA2E,OACPvB,EAAiB,kBAAoB,uBACpC/D,SAAA,CAEF0H,EAAAA,GAAuBX,KAAI,SAACC,EAAIQ,GAC/B,IAAM7E,EAAemD,EAAY0B,GAAKF,KAChCL,EAAkBD,EAAGC,gBAG3B,OAFiBD,EAAGE,UAzX5BpH,EAAAA,EAAAA,KAACI,EAAU,CAETE,SAAU2D,EACV1D,eAAgBwE,EAChBvE,MAAO,WACPC,QAASgD,EAAgBqC,EAAc,KAAK5F,UAE5CF,EAAAA,EAAAA,KAACY,EAAAA,EAAG,CAACC,UAAU,cAAaX,UAC1BF,EAAAA,EAAAA,KAACY,EAAAA,EAAG,CAACC,UAAU,aAAYX,UACzBF,EAAAA,EAAAA,KAAA,OAAKa,UAAU,gBAAeX,UAC5BF,EAAAA,EAAAA,KAAC6H,EAAAA,IAAe,WATjB,mBA8XKV,GAEAnH,EAAAA,EAAAA,KAAC2C,EAAkB,CAEjBE,aAAcA,GAAa,qBAAA2C,OADD0B,EAAG3B,MAMjCvF,EAAAA,EAAAA,KAAC8C,EAAkB,CAEjBD,aAAcA,EACdI,MAAOiE,EAAGjE,MACVC,OAAQgE,EAAGhE,OACXC,QAAS+D,EAAG/D,QACZJ,MAAOmE,EAAGnE,OAAM,gBAAAyC,OALK0B,EAAG3B,IAQ9B,KAEAvF,EAAAA,EAAAA,KAACY,EAAAA,EAAG,CAACC,UAAU,aAAYX,SACxB+E,EAAU,wBAERX,EAAAA,GAAWC,SAASV,GAEjB,kBADA,YAEJ,aACAE,EAAAA,GAAcG,gBAIpBtB,EAAAA,EAAAA,MAAChC,EAAAA,EAAG,CACFC,UAAS,YAAA2E,OACPrB,EAAmB,kBAAoB,uBACtCjE,SAAA,CAEF4H,EAAAA,GAAyBb,KAAI,SAACC,EAAIQ,GACjC,IAAM7E,EAAemD,EAAY0B,GAAKF,KAC9BL,EAAuCD,EAAvCC,gBAAiBC,EAAsBF,EAAtBE,SAAUW,EAAYb,EAAZa,QAEnC,OAAIX,GAnZZpH,EAAAA,EAAAA,KAACI,EAAU,CAETE,SAAU6D,EACV5D,eAAgByE,EAChBxE,MAAO,aACPC,QAASgD,EAAgBqC,EAAc,KAAK5F,UAE5CF,EAAAA,EAAAA,KAACY,EAAAA,EAAG,CAACC,UAAU,cAAaX,UAC1BF,EAAAA,EAAAA,KAACY,EAAAA,EAAG,CAACC,UAAU,aAAYX,UACzBF,EAAAA,EAAAA,KAAA,OAAKa,UAAU,gBAAeX,UAC5BF,EAAAA,EAAAA,KAACgI,EAAAA,IAAiB,WATnB,qBAsZKb,GAEAnH,EAAAA,EAAAA,KAAC2C,EAAkB,CAEjBE,aAAcA,GAAa,sBAAA2C,OADA0B,EAAG3B,KAMhCwC,GAEA/H,EAAAA,EAAAA,KAACY,EAAAA,EAAG,CAACC,UAAU,eAAcX,UAC3B0C,EAAAA,EAAAA,MAAChC,EAAAA,EAAG,CAACC,UAAU,oBAAmBX,SAAA,EAChCF,EAAAA,EAAAA,KAAA,OAAKa,UAAU,aACfb,EAAAA,EAAAA,KAACY,EAAAA,EAAG,CAACC,UAAU,eAAcX,UAC3BF,EAAAA,EAAAA,KAACiI,EAAAA,EAAe,UAEd,kBAAAzC,OAN6C0B,EAAG3B,MAW1DvF,EAAAA,EAAAA,KAAC8C,EAAkB,CAEjBD,aAAcA,EACdI,MAAOiE,EAAGjE,MACVC,OAAQgE,EAAGhE,OACXH,MAAOmE,EAAGnE,OAAM,wBAAAyC,OAJa0B,EAAG3B,IAOtC,KACAvF,EAAAA,EAAAA,KAACY,EAAAA,EAAG,CAACC,UAAU,aAAYX,SACxB+E,EAAU,wBAERX,EAAAA,GAAWC,SAASV,GAEjB,kBADA,YAEJ,aACAE,EAAAA,GAAcK,wBAQ9B,E,6EChrBM8D,GAAsBC,EAAAA,EAAAA,GAC1BC,EAAAA,MAAW,kBAAM,+BAA+B,KA+IlD,EA5IgB,WACd,IAAMC,GAAWC,EAAAA,EAAAA,MACjB9D,GACEC,EAAAA,EAAAA,WAAkB,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GADnB+D,EAAoB7D,EAAA,GAAE8D,EAAuB9D,EAAA,GAGpD+D,GAAsChE,EAAAA,EAAAA,YAAsBiE,GAAA/D,EAAAA,EAAAA,GAAA8D,EAAA,GAArDnF,EAAWoF,EAAA,GAAEC,EAAcD,EAAA,GAClCE,GAA0CnE,EAAAA,EAAAA,UAAiB,GAAEoE,GAAAlE,EAAAA,EAAAA,GAAAiE,EAAA,GAAtDE,EAAaD,EAAA,GAAEE,EAAgBF,EAAA,GACtCG,GAAoDvE,EAAAA,EAAAA,WAAkB,GAAMwE,GAAAtE,EAAAA,EAAAA,GAAAqE,EAAA,GAArEE,EAAkBD,EAAA,GAAEE,EAAqBF,EAAA,GAChDG,GACE3E,EAAAA,EAAAA,WAAkB,GAAK4E,GAAA1E,EAAAA,EAAAA,GAAAyE,EAAA,GADlBE,EAAqBD,EAAA,GAAEE,EAAwBF,EAAA,IAEtD5E,EAAAA,EAAAA,WAAkB,GAClB,IAAA+E,GAAkD/E,EAAAA,EAAAA,WAAkB,GAAMgF,GAAA9E,EAAAA,EAAAA,GAAA6E,EAAA,GAAnEE,EAAiBD,EAAA,GAAEE,EAAoBF,EAAA,GAE9CG,GACEnF,EAAAA,EAAAA,WAAkB,GAAMoF,GAAAlF,EAAAA,EAAAA,GAAAiF,EAAA,GADnBE,EAAoBD,EAAA,GAAEE,EAAuBF,EAAA,GAQ9CG,GAAWC,EAAAA,EAAAA,OACjBlE,EAAAA,EAAAA,YAAU,WACRiE,GAASE,EAAAA,EAAAA,IAAY,WAEvB,GAAG,IAEH,IAAMC,EAAe7G,GAAeoG,EAE9BU,GAAoBC,EAAAA,EAAAA,OAE1BtE,EAAAA,EAAAA,YAAU,YAELoE,IAAiBC,IAAsBd,IAEpBJ,GACpBa,GAAwB,EAE5B,GAAG,CACDI,EACAC,EACAd,EACAJ,IAGF,IAAMoB,GAAmBC,EAAAA,EAAAA,cAAY,WAC/BrB,IAGJC,GAAsB,GACtBqB,EAAAA,EACGC,OAAO,MAAM,uBACbC,MAAK,SAACC,GACDA,IACe,aAAbA,EAAIjK,KACNqI,EAAiB,GACK,eAAb4B,EAAIjK,KACbqI,EAAiB,GAEjBA,EAAiB,GAEnBJ,EAAegC,IAEjBhB,GAAqB,GACrBR,GAAsB,EACxB,IACCyB,OAAM,WACLjB,GAAqB,GACrBR,GAAsB,EACxB,IACJ,GAAG,CAACD,IASJ,OAPAnD,EAAAA,EAAAA,YAAU,WACJuD,IACFgB,IACAf,GAAyB,GAE7B,GAAG,CAACe,EAAkBhB,EAAuBC,IAEzCL,GAEAlJ,EAAAA,EAAAA,KAAC6K,EAAAA,GAAI,CAACC,MAAI,EAACpE,GAAI,GAAGxG,UAChBF,EAAAA,EAAAA,KAAC+K,EAAAA,IAAW,OAMhBnI,EAAAA,EAAAA,MAACsD,EAAAA,SAAQ,CAAAhG,SAAA,EACPF,EAAAA,EAAAA,KAACgL,EAAAA,EAAiB,CAChB/H,MAAM,kCACNgI,SACErI,EAAAA,EAAAA,MAACsD,EAAAA,SAAQ,CAAAhG,SAAA,EACLiK,IACAnK,EAAAA,EAAAA,KAACsF,EAAAA,IAAM,CACLC,GAAI,oBACJ9E,QAAS,kBAAM4H,EAAS6C,EAAAA,GAAUC,iBAAiB,EACnDpI,MAAO,CACLlB,SAAU,OACVX,QAAS,OACTC,WAAY,SACZ2F,eAAgB,QAElBsE,MAAMpL,EAAAA,EAAAA,KAACqL,EAAAA,IAAS,IAChBjG,QAAS,aAAalF,SACvB,2BAIHF,EAAAA,EAAAA,KAACsL,EAAAA,EAAQ,UAKf1I,EAAAA,EAAAA,MAAC2I,EAAAA,IAAU,CAAArL,SAAA,EACTF,EAAAA,EAAAA,KAAC6K,EAAAA,GAAI,CAACC,MAAI,EAACpE,GAAI,GAAGxG,SACfiK,IACCnK,EAAAA,EAAAA,KAACwL,EAAAA,EAAwB,CAACC,MAAkB,OAAXnI,QAAW,IAAXA,OAAW,EAAXA,EAAamI,WAIlDzL,EAAAA,EAAAA,KAAC0L,EAAY,CACXnD,qBAAsBA,EACtBoD,8BA3G8B,WACpCnD,GAAwB,GACxB8B,GACF,EAyGQhH,YAAaA,EACbwF,cAAeA,EACfN,wBAAyBA,KAG3BxI,EAAAA,EAAAA,KAACkI,EAAmB,CAClB0D,OAAQ9B,EACR+B,QAAS,WACP9B,GAAwB,EAC1B,SAKV,C,oFC/FA,IA7DiC,SAAH1J,GAA4C,IAADyL,EAAAzL,EAArCoL,MAAAA,OAAK,IAAAK,EAAG,GAAEA,EAC5C,OACElJ,EAAAA,EAAAA,MAAChC,EAAAA,IAAG,CACFK,GAAI,CACFW,OAAQ,GACRO,MAAO,UACPjB,QAAS,OACTkB,SAAU,WACVI,KAAM,GACNuJ,MAAO,GACPvK,MAAO,oBACPL,WAAY,SACZC,eAAgB,gBAChBmB,gBAAiB,UACjBoE,QAAS,gBACT,oCAAqC,CACnCzF,QAAS,OACTC,WAAY,SACZC,eAAgB,cAGlB,mBAAoB,CAClB4K,WAAY,OAEZ,cAAe,CACb3J,KAAM,aAGVnC,SAAA,EAEF0C,EAAAA,EAAAA,MAAChC,EAAAA,IAAG,CAACC,UAAU,iBAAgBX,SAAA,EAC7BF,EAAAA,EAAAA,KAACY,EAAAA,IAAG,CAACK,GAAI,CAAEY,SAAU,OAAQK,WAAY,KAAMhC,SAAC,sBAChD0C,EAAAA,EAAAA,MAAChC,EAAAA,IAAG,CAACC,UAAU,gBAAeX,SAAA,EAC5BF,EAAAA,EAAAA,KAACiM,EAAAA,GAAY,KACbjM,EAAAA,EAAAA,KAACY,EAAAA,IAAG,CACFK,GAAI,CACFiB,WAAY,KACZhC,SACH,sBAML0C,EAAAA,EAAAA,MAAChC,EAAAA,IAAG,CACFC,UAAU,qBACVI,IAAEF,EAAAA,EAAAA,GAAA,CACAI,WAAY,SACZC,eAAgB,aAChBF,QAAS,QAAM,sBAAAsE,OACQ0G,EAAAA,IAAYzF,GAAE,OAAQ,CAC3CvF,QAAS,SAEXhB,SAAA,EAEFF,EAAAA,EAAAA,KAACY,EAAAA,IAAG,CAACK,GAAI,CAAEY,SAAU,OAAQK,WAAY,KAAMhC,SAAC,oBAChDF,EAAAA,EAAAA,KAACY,EAAAA,IAAG,CAACK,GAAI,CAAE+K,WAAY,MAAO9J,WAAY,KAAMhC,SAAEuL,SAI1D,C,yCC5EIU,EAAyBC,EAAQ,OAIrCC,EAAQ,OAAU,EAClB,IAAIC,EAAiBH,EAAuBC,EAAQ,QAChDG,EAAcH,EAAQ,OACtBI,GAAW,EAAIF,EAAeG,UAAuB,EAAIF,EAAYG,KAAK,OAAQ,CACpFC,EAAG,yHACD,eACJN,EAAQ,EAAUG,C,qCCVlBI,OAAOC,eAAeR,EAAS,aAAc,CAC3CS,OAAO,IAETF,OAAOC,eAAeR,EAAS,UAAW,CACxCU,YAAY,EACZC,IAAK,WACH,OAAOC,EAAOC,aAChB,IAEF,IAAID,EAASb,EAAQ,M,sICMrB,SAASe,EAAiBC,EAAOC,EAAgBC,EAAYC,EAAeC,GAC1E,IAAAC,EAA0BrF,EAAAA,UAAe,WACvC,OAAIoF,GAASF,EACJA,EAAWF,GAAOM,QAEvBH,EACKA,EAAcH,GAAOM,QAKvBL,CACT,IAAEM,GAAAhJ,EAAAA,EAAAA,GAAA8I,EAAA,GAXKG,EAAKD,EAAA,GAAEE,EAAQF,EAAA,GAkCtB,OAtBAG,EAAAA,EAAAA,IAAkB,WAChB,IAAI9M,GAAS,EACb,GAAKsM,EAAL,CAGA,IAAMS,EAAYT,EAAWF,GACvBY,EAAc,WAIdhN,GACF6M,EAASE,EAAUL,QAEvB,EAIA,OAHAM,IAEAD,EAAUE,YAAYD,GACf,WACLhN,GAAS,EACT+M,EAAUG,eAAeF,EAC3B,CAhBA,CAiBF,GAAG,CAACZ,EAAOE,IACJM,CACT,CAGA,IAAMO,GAAiC/F,IAAAA,EAAAA,EAAAA,EAAAA,EAAAA,KAAiC,qBACxE,SAASgG,EAAiBhB,EAAOC,EAAgBC,EAAYC,EAAeC,GAC1E,IAAMa,EAAqBjG,EAAAA,aAAkB,kBAAMiF,CAAc,GAAE,CAACA,IAC9DiB,EAAoBlG,EAAAA,SAAc,WACtC,GAAIoF,GAASF,EACX,OAAO,kBAAMA,EAAWF,GAAOM,OAAO,EAExC,GAAsB,OAAlBH,EAAwB,CAC1B,IACEG,EACEH,EAAcH,GADhBM,QAEF,OAAO,kBAAMA,CAAO,CACtB,CACA,OAAOW,CACT,GAAG,CAACA,EAAoBjB,EAAOG,EAAeC,EAAOF,IACrDiB,EAAiCnG,EAAAA,SAAc,WAC7C,GAAmB,OAAfkF,EACF,MAAO,CAACe,EAAoB,kBAAM,WAAO,CAAC,GAE5C,IAAMG,EAAiBlB,EAAWF,GAClC,MAAO,CAAC,kBAAMoB,EAAed,OAAO,EAAE,SAAAe,GAGpC,OADAD,EAAeP,YAAYQ,GACpB,WACLD,EAAeN,eAAeO,EAChC,CACF,EACF,GAAG,CAACJ,EAAoBf,EAAYF,IAAOsB,GAAA/J,EAAAA,EAAAA,GAAA4J,EAAA,GAZpCI,EAAWD,EAAA,GAAEE,EAASF,EAAA,GAc7B,OADcP,EAA+BS,EAAWD,EAAaL,EAEvE,CACe,SAAS5K,EAAcmL,GAA0B,IAAdC,EAAOlP,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EACrD2D,GAAQC,EAAAA,EAAAA,KAKRuL,EAAsC,qBAAXnJ,QAAuD,qBAAtBA,OAAO0H,WACzE0B,GAKIC,EAAAA,EAAAA,GAAc,CAChBC,KAAM,mBACNnP,MAAO+O,EACPvL,MAAAA,IACA4L,EAAAH,EARA3B,eAAAA,OAAc,IAAA8B,GAAQA,EAAAC,EAAAJ,EACtB1B,WAAAA,OAAU,IAAA8B,EAAGL,EAAoBnJ,OAAO0H,WAAa,KAAI8B,EAAAC,EAAAL,EACzDzB,cAAAA,OAAa,IAAA8B,EAAG,KAAIA,EAAAC,EAAAN,EACpBxB,MAAAA,OAAK,IAAA8B,GAAQA,EAWf,IAAIlC,EAA8B,oBAAfyB,EAA4BA,EAAWtL,GAASsL,EAanE,OAZAzB,EAAQA,EAAMmC,QAAQ,eAAgB,UAGiCzP,IAAnCqO,EAA+CC,EAAmBjB,GAC5DC,EAAOC,EAAgBC,EAAYC,EAAeC,EAS9F,C,oDC3HA,IAAegC,EAAqB,C,kyBCApC,MCDe,SAA4BC,EAAWC,GAElD,OAAO,kBAAM,IAAI,CAUrB,E,0CCXA,MCAe,SAA4BC,EAAsBC,GAE7D,OAAO,kBAAM,IAAI,CAoBrB,ECtBA,E,SAAqB,E,sBCArB,MCDe,SAAyB7P,EAAO8P,EAAUC,EAAeC,EAAUC,GAE9E,OAAO,IAOX,E,4CCaaC,EAA8B,CACzCC,UAAW,SAAAC,GAITC,EAAAA,EAAmBF,UAAUC,EAC/B,E,oFC3BF,MCAe,SAAsBE,EAASC,GAC5C,OAAoBlI,EAAAA,eAAqBiI,KAAwD,IAA5CC,EAASC,QAAQF,EAAQG,KAAKC,QACrF,C,qCCGe,SAASjB,IAAgC,QAAAkB,EAAA9Q,UAAAC,OAAP8Q,EAAK,IAAAC,MAAAF,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAALF,EAAKE,GAAAjR,UAAAiR,GACpD,OAAOF,EAAMG,QAAO,SAACC,EAAKC,GACxB,OAAY,MAARA,EACKD,EAEF,WAAkC,QAAAE,EAAArR,UAAAC,OAANqR,EAAI,IAAAN,MAAAK,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAvR,UAAAuR,GACrCJ,EAAIK,MAAMC,KAAMH,GAChBF,EAAKI,MAAMC,KAAMH,EACnB,CACF,IAAG,WAAO,GACZ,C,mDCXAI,EAAOjF,QALP,SAAgCkF,GAC9B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACnC,QAAWA,EAEf,EACyCD,EAAOjF,QAAQmF,YAAa,EAAMF,EAAOjF,QAAiB,QAAIiF,EAAOjF,O","sources":["screens/Console/Common/Components/withSuspense.tsx","screens/Console/License/LicensePlans.tsx","screens/Console/License/License.tsx","screens/Console/Support/RegistrationStatusBanner.tsx","../node_modules/@mui/icons-material/CheckCircle.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/useMediaQuery/useMediaQuery.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/esm/deprecatedPropType.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/esm/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/esm/unsupportedProp.js","../node_modules/@mui/material/utils/index.js","../node_modules/@mui/material/utils/isMuiElement.js","../node_modules/@mui/utils/esm/isMuiElement.js","../node_modules/@mui/utils/esm/createChainedFunction.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

    (\n WrappedComponent: ComponentType

    ,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// 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 clsx from \"clsx\";\nimport CheckCircleIcon from \"@mui/icons-material/CheckCircle\";\nimport {\n AGPLV3Logo,\n Button,\n ConsoleEnterprise,\n ConsoleStandard,\n LicenseDocIcon,\n} from \"mds\";\nimport { useTheme } from \"@mui/material/styles\";\nimport { SubnetInfo } from \"./types\";\nimport { Box } from \"@mui/material\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport {\n COMMUNITY_PLAN_FEATURES,\n ENTERPRISE_PLAN_FEATURES,\n FEATURE_ITEMS,\n getRenderValue,\n LICENSE_PLANS,\n PAID_PLANS,\n STANDARD_PLAN_FEATURES,\n} from \"./utils\";\n\ninterface IRegisterStatus {\n activateProductModal: any;\n closeModalAndFetchLicenseInfo: any;\n licenseInfo: SubnetInfo | undefined;\n currentPlanID: number;\n setActivateProductModal: any;\n}\n\nconst PlanHeader = ({\n isActive,\n isXsViewActive,\n title,\n onClick,\n children,\n}: {\n isActive: boolean;\n isXsViewActive: boolean;\n title: string;\n price?: string;\n onClick: any;\n children: any;\n}) => {\n const plan = title.toLowerCase();\n return (\n {\n onClick && onClick(plan);\n }}\n sx={{\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"center\",\n flexFlow: \"column\",\n borderLeft: \"1px solid #eaeaea\",\n borderBottom: \"0px !important\",\n \"& .plan-header\": {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexFlow: \"column\",\n },\n\n \"& .title-block\": {\n display: \"flex\",\n alignItems: \"center\",\n flexFlow: \"column\",\n width: \"100%\",\n \"& .title-main\": {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flex: 1,\n },\n \"& .iconContainer\": {\n \"& .min-icon\": {\n minWidth: 140,\n width: \"100%\",\n maxHeight: 55,\n height: \"100%\",\n },\n },\n },\n\n \"& .open-source\": {\n fontSize: \"14px\",\n display: \"flex\",\n marginBottom: \"5px\",\n alignItems: \"center\",\n \"& .min-icon\": {\n marginRight: \"8px\",\n height: \"12px\",\n width: \"12px\",\n },\n },\n\n \"& .cur-plan-text\": {\n fontSize: \"12px\",\n textTransform: \"uppercase\",\n },\n\n \"@media (max-width: 600px)\": {\n cursor: \"pointer\",\n \"& .title-block\": {\n \"& .title\": {\n fontSize: \"14px\",\n fontWeight: 600,\n },\n },\n },\n\n \"&.active, &.active.xs-active\": {\n color: \"#ffffff\",\n position: \"relative\",\n\n \"& .min-icon\": {\n fill: \"#ffffff\",\n },\n\n \"&:before\": {\n content: \"' '\",\n position: \"absolute\",\n width: \"100%\",\n height: \"18px\",\n backgroundColor: \"#2781B0\",\n display: \"block\",\n top: -16,\n },\n \"& .iconContainer\": {\n \"& .min-icon\": {\n marginTop: \"-12px\",\n },\n },\n },\n \"&.active\": {\n background: \"#2781B0\",\n color: \"#ffffff\",\n },\n \"&.xs-active\": {\n background: \"#eaeaea\",\n },\n }}\n >\n {children}\n \n );\n};\n\nconst FeatureTitleRowCmp = (props: { featureLabel: any }) => {\n return (\n \n \n

    {props.featureLabel}
    \n \n \n );\n};\n\nconst PricingFeatureItem = (props: {\n featureLabel: any;\n label?: any;\n detail?: any;\n xsLabel?: string;\n style?: any;\n}) => {\n return (\n \n \n
    \n {getRenderValue(props.featureLabel || \"\")}\n
    \n \n
    {getRenderValue(props.label || \"\")}
    \n {getRenderValue(props.detail)}\n\n
    {props.xsLabel}
    \n
    \n
    \n
    \n );\n};\n\nconst LicensePlans = ({ licenseInfo }: IRegisterStatus) => {\n const theme = useTheme();\n const isSmallScreen = useMediaQuery(theme.breakpoints.down(\"sm\"));\n\n let currentPlan = !licenseInfo\n ? \"community\"\n : licenseInfo?.plan?.toLowerCase();\n\n const isCommunityPlan = currentPlan === LICENSE_PLANS.COMMUNITY;\n const isStandardPlan = currentPlan === LICENSE_PLANS.STANDARD;\n const isEnterprisePlan = currentPlan === LICENSE_PLANS.ENTERPRISE;\n\n const isPaidPlan = PAID_PLANS.includes(currentPlan);\n\n /*In smaller screen use tabbed view to show features*/\n const [xsPlanView, setXsPlanView] = useState(\"\");\n let isXsViewCommunity = xsPlanView === LICENSE_PLANS.COMMUNITY;\n let isXsViewStandard = xsPlanView === LICENSE_PLANS.STANDARD;\n let isXsViewEnterprise = xsPlanView === LICENSE_PLANS.ENTERPRISE;\n\n const getCommunityPlanHeader = () => {\n return (\n \n \n \n
    \n \n
    \n
    \n
    \n \n );\n };\n\n const getStandardPlanHeader = () => {\n return (\n \n \n \n
    \n \n
    \n
    \n
    \n \n );\n };\n\n const getEnterpriseHeader = () => {\n return (\n \n \n \n
    \n \n
    \n
    \n
    \n \n );\n };\n\n const getButton = (\n link: string,\n btnText: string,\n variant: any,\n plan: string,\n ) => {\n let linkToNav =\n currentPlan !== \"community\" ? \"https://subnet.min.io\" : link;\n return (\n {\n e.preventDefault();\n\n window.open(`${linkToNav}?ref=con`, \"_blank\");\n }}\n label={btnText}\n />\n );\n };\n\n const onPlanClick = (plan: string) => {\n setXsPlanView(plan);\n };\n\n useEffect(() => {\n if (isSmallScreen) {\n setXsPlanView(currentPlan || \"community\");\n } else {\n setXsPlanView(\"\");\n }\n }, [isSmallScreen, currentPlan]);\n\n const featureList = FEATURE_ITEMS;\n return (\n \n \n \n \n \n {featureList.map((fi) => {\n const featureTitleRow = fi.featureTitleRow;\n const isHeader = fi.isHeader;\n\n if (isHeader) {\n if (isPaidPlan) {\n return (\n \n \n \n View License agreement
    \n for the registered plan.\n \n
    \n );\n }\n\n return (\n \n {fi.label}\n \n );\n }\n if (featureTitleRow) {\n return (\n \n
    {getRenderValue(fi.desc)}
    \n \n );\n }\n return (\n \n
    {getRenderValue(fi.desc)}
    \n \n );\n })}\n \n {!isPaidPlan ? (\n \n {COMMUNITY_PLAN_FEATURES.map((fi, idx) => {\n const featureLabel = featureList[idx].desc;\n const { featureTitleRow, isHeader } = fi;\n\n if (isHeader) {\n return getCommunityPlanHeader();\n }\n\n if (featureTitleRow) {\n return (\n \n );\n }\n\n return (\n \n );\n })}\n \n {getButton(\n `https://slack.min.io`,\n \"Join Slack\",\n \"regular\",\n LICENSE_PLANS.COMMUNITY,\n )}\n \n \n ) : null}\n \n {STANDARD_PLAN_FEATURES.map((fi, idx) => {\n const featureLabel = featureList[idx].desc;\n const featureTitleRow = fi.featureTitleRow;\n const isHeader = fi.isHeader;\n\n if (isHeader) {\n return getStandardPlanHeader();\n }\n\n if (featureTitleRow) {\n return (\n \n );\n }\n return (\n \n );\n })}\n\n \n {getButton(\n `https://min.io/signup`,\n !PAID_PLANS.includes(currentPlan)\n ? \"Subscribe\"\n : \"Login to SUBNET\",\n \"callAction\",\n LICENSE_PLANS.STANDARD,\n )}\n \n \n \n {ENTERPRISE_PLAN_FEATURES.map((fi, idx) => {\n const featureLabel = featureList[idx].desc;\n const { featureTitleRow, isHeader, yesIcon } = fi;\n\n if (isHeader) {\n return getEnterpriseHeader();\n }\n\n if (featureTitleRow) {\n return (\n \n );\n }\n\n if (yesIcon) {\n return (\n \n \n
    \n \n \n \n
    \n
    \n );\n }\n return (\n \n );\n })}\n \n {getButton(\n `https://min.io/signup`,\n !PAID_PLANS.includes(currentPlan)\n ? \"Subscribe\"\n : \"Login to SUBNET\",\n \"callAction\",\n LICENSE_PLANS.ENTERPRISE,\n )}\n \n \n \n \n
    \n );\n};\n\nexport default LicensePlans;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\n\nimport Grid from \"@mui/material/Grid\";\nimport { SubnetInfo } from \"./types\";\nimport api from \"../../../common/api\";\nimport { ArrowIcon, Button, PageLayout, ProgressBar } from \"mds\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport LicensePlans from \"./LicensePlans\";\nimport { useNavigate } from \"react-router-dom\";\nimport RegistrationStatusBanner from \"../Support/RegistrationStatusBanner\";\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport { getLicenseConsent } from \"./utils\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport { setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\n\nconst LicenseConsentModal = withSuspense(\n React.lazy(() => import(\"./LicenseConsentModal\")),\n);\n\nconst License = () => {\n const navigate = useNavigate();\n const [activateProductModal, setActivateProductModal] =\n useState(false);\n\n const [licenseInfo, setLicenseInfo] = useState();\n const [currentPlanID, setCurrentPlanID] = useState(0);\n const [loadingLicenseInfo, setLoadingLicenseInfo] = useState(false);\n const [initialLicenseLoading, setInitialLicenseLoading] =\n useState(true);\n useState(false);\n const [clusterRegistered, setClusterRegistered] = useState(false);\n\n const [isLicenseConsentOpen, setIsLicenseConsentOpen] =\n useState(false);\n\n const closeModalAndFetchLicenseInfo = () => {\n setActivateProductModal(false);\n fetchLicenseInfo();\n };\n\n const dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(setHelpName(\"license\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const isRegistered = licenseInfo && clusterRegistered;\n\n const isAgplConsentDone = getLicenseConsent();\n\n useEffect(() => {\n const shouldConsent =\n !isRegistered && !isAgplConsentDone && !initialLicenseLoading;\n\n if (shouldConsent && !loadingLicenseInfo) {\n setIsLicenseConsentOpen(true);\n }\n }, [\n isRegistered,\n isAgplConsentDone,\n initialLicenseLoading,\n loadingLicenseInfo,\n ]);\n\n const fetchLicenseInfo = useCallback(() => {\n if (loadingLicenseInfo) {\n return;\n }\n setLoadingLicenseInfo(true);\n api\n .invoke(\"GET\", `/api/v1/subnet/info`)\n .then((res: SubnetInfo) => {\n if (res) {\n if (res.plan === \"STANDARD\") {\n setCurrentPlanID(1);\n } else if (res.plan === \"ENTERPRISE\") {\n setCurrentPlanID(2);\n } else {\n setCurrentPlanID(1);\n }\n setLicenseInfo(res);\n }\n setClusterRegistered(true);\n setLoadingLicenseInfo(false);\n })\n .catch(() => {\n setClusterRegistered(false);\n setLoadingLicenseInfo(false);\n });\n }, [loadingLicenseInfo]);\n\n useEffect(() => {\n if (initialLicenseLoading) {\n fetchLicenseInfo();\n setInitialLicenseLoading(false);\n }\n }, [fetchLicenseInfo, initialLicenseLoading, setInitialLicenseLoading]);\n\n if (loadingLicenseInfo) {\n return (\n \n \n \n );\n }\n\n return (\n \n \n {!isRegistered && (\n navigate(IAM_PAGES.REGISTER_SUPPORT)}\n style={{\n fontSize: \"14px\",\n display: \"flex\",\n alignItems: \"center\",\n textDecoration: \"none\",\n }}\n icon={}\n variant={\"callAction\"}\n >\n Register your cluster\n \n )}\n \n \n }\n />\n\n \n \n {isRegistered && (\n \n )}\n \n\n \n\n {\n setIsLicenseConsentOpen(false);\n }}\n />\n \n \n );\n};\n\nexport default License;\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 { VerifiedIcon, Box, breakPoints } from \"mds\";\n\nconst RegistrationStatusBanner = ({ email = \"\" }: { email?: string }) => {\n return (\n \n \n Register status:\n \n \n \n Registered\n \n \n \n\n \n Registered to:\n {email}\n \n \n );\n};\nexport default RegistrationStatusBanner;\n","\"use strict\";\n\"use client\";\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.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n}), 'CheckCircle');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","'use client';\n\nimport * 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\n/**\n * @deprecated Not used internally. Use `MediaQueryList` from lib.dom.d.ts instead.\n */\n\n/**\n * @deprecated Not used internally. Use `(event: MediaQueryListEvent) => void` instead.\n */\n\nfunction useMediaQueryOld(query, defaultMatches, matchMedia, ssrMatchMedia, noSsr) {\n const [match, setMatch] = React.useState(() => {\n if (noSsr && matchMedia) {\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 (!matchMedia) {\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]);\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, noSsr) {\n const getDefaultSnapshot = React.useCallback(() => defaultMatches, [defaultMatches]);\n const getServerSnapshot = React.useMemo(() => {\n if (noSsr && matchMedia) {\n return () => matchMedia(query).matches;\n }\n if (ssrMatchMedia !== null) {\n const {\n matches\n } = ssrMatchMedia(query);\n return () => matches;\n }\n return getDefaultSnapshot;\n }, [getDefaultSnapshot, query, ssrMatchMedia, noSsr, matchMedia]);\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 = false\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}","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1;\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["WrappedComponent","fallback","arguments","length","undefined","props","_jsx","Suspense","children","_objectSpread","PlanHeader","_ref","isActive","isXsViewActive","title","onClick","plan","toLowerCase","Box","className","clsx","_defineProperty","active","sx","display","alignItems","justifyContent","flexFlow","borderLeft","borderBottom","width","flex","minWidth","maxHeight","height","fontSize","marginBottom","marginRight","textTransform","cursor","fontWeight","color","position","fill","content","backgroundColor","top","marginTop","background","FeatureTitleRowCmp","_jsxs","featureLabel","PricingFeatureItem","style","getRenderValue","label","detail","xsLabel","_ref2","_licenseInfo$plan","licenseInfo","theme","useTheme","isSmallScreen","useMediaQuery","breakpoints","down","currentPlan","isCommunityPlan","LICENSE_PLANS","COMMUNITY","isStandardPlan","STANDARD","isEnterprisePlan","ENTERPRISE","isPaidPlan","PAID_PLANS","includes","_useState","useState","_useState2","_slicedToArray","xsPlanView","setXsPlanView","isXsViewCommunity","isXsViewStandard","isXsViewEnterprise","getButton","link","btnText","variant","linkToNav","Button","id","concat","disabled","e","preventDefault","window","open","onPlanClick","useEffect","featureList","FEATURE_ITEMS","Fragment","border","borderTop","borderRadius","boxShadow","margin","gridTemplateColumns","sm","xs","padding","paddingLeft","minHeight","textDecoration","textAlign","paddingRight","map","fi","featureTitleRow","isHeader","LicenseDocIcon","href","rel","desc","COMMUNITY_PLAN_FEATURES","idx","AGPLV3Logo","STANDARD_PLAN_FEATURES","ConsoleStandard","ENTERPRISE_PLAN_FEATURES","yesIcon","ConsoleEnterprise","CheckCircleIcon","LicenseConsentModal","withSuspense","React","navigate","useNavigate","activateProductModal","setActivateProductModal","_useState3","_useState4","setLicenseInfo","_useState5","_useState6","currentPlanID","setCurrentPlanID","_useState7","_useState8","loadingLicenseInfo","setLoadingLicenseInfo","_useState9","_useState10","initialLicenseLoading","setInitialLicenseLoading","_useState11","_useState12","clusterRegistered","setClusterRegistered","_useState13","_useState14","isLicenseConsentOpen","setIsLicenseConsentOpen","dispatch","useAppDispatch","setHelpName","isRegistered","isAgplConsentDone","getLicenseConsent","fetchLicenseInfo","useCallback","api","invoke","then","res","catch","Grid","item","ProgressBar","PageHeaderWrapper","actions","IAM_PAGES","REGISTER_SUPPORT","icon","ArrowIcon","HelpMenu","PageLayout","RegistrationStatusBanner","email","LicensePlans","closeModalAndFetchLicenseInfo","isOpen","onClose","_ref$email","left","marginLeft","VerifiedIcon","breakPoints","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Object","defineProperty","value","enumerable","get","_utils","createSvgIcon","useMediaQueryOld","query","defaultMatches","matchMedia","ssrMatchMedia","noSsr","_React$useState","matches","_React$useState2","match","setMatch","useEnhancedEffect","queryList","updateMatch","addListener","removeListener","maybeReactUseSyncExternalStore","useMediaQueryNew","getDefaultSnapshot","getServerSnapshot","_React$useMemo","mediaQueryList","notify","_React$useMemo2","getSnapshot","subscribe","queryInput","options","supportMatchMedia","_getThemeProps","getThemeProps","name","_getThemeProps$defaul","_getThemeProps$matchM","_getThemeProps$ssrMat","_getThemeProps$noSsr","replace","createChainedFunction","validator","reason","componentNameInError","Component","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","element","muiNames","indexOf","type","muiName","_len","funcs","Array","_key","reduce","acc","func","_len2","args","_key2","apply","this","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/4902.7e038ea1.chunk.js b/portal-ui/build/static/js/4902.89f3e9e1.chunk.js similarity index 75% rename from portal-ui/build/static/js/4902.7e038ea1.chunk.js rename to portal-ui/build/static/js/4902.89f3e9e1.chunk.js index ef267fa400..90f473f8a1 100644 --- a/portal-ui/build/static/js/4902.7e038ea1.chunk.js +++ b/portal-ui/build/static/js/4902.89f3e9e1.chunk.js @@ -1,2 +1,2 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[4902],{75578:function(e,t,n){"use strict";var i=n(1413),a=n(72791),r=n(80184);t.Z=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(n){return(0,r.jsx)(a.Suspense,{fallback:t,children:(0,r.jsx)(e,(0,i.Z)({},n))})}}},74902:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return I}});var i=n(29439),a=n(72791),r=n(61889),s=n(81207),l=n(29945),o=n(56087),c=n(4942),u=n(63733),d=n(18384),f=n(13967),x=n(64554),p=n(95193),m=n(78290),h=n(80184),b=function(e){var t=e.isActive,n=e.isXsViewActive,i=e.title,a=e.onClick,r=e.children,s=i.toLowerCase();return(0,h.jsx)(x.Z,{className:(0,u.Z)((0,c.Z)({"plan-header":!0,active:t},"xs-active",n)),onClick:function(){a&&a(s)},sx:{display:"flex",alignItems:"flex-start",justifyContent:"center",flexFlow:"column",borderLeft:"1px solid #eaeaea",borderBottom:"0px !important","& .plan-header":{display:"flex",alignItems:"center",justifyContent:"center",flexFlow:"column"},"& .title-block":{display:"flex",alignItems:"center",flexFlow:"column",width:"100%","& .title-main":{display:"flex",alignItems:"center",justifyContent:"center",flex:1},"& .iconContainer":{"& .min-icon":{minWidth:140,width:"100%",maxHeight:55,height:"100%"}}},"& .open-source":{fontSize:"14px",display:"flex",marginBottom:"5px",alignItems:"center","& .min-icon":{marginRight:"8px",height:"12px",width:"12px"}},"& .cur-plan-text":{fontSize:"12px",textTransform:"uppercase"},"@media (max-width: 600px)":{cursor:"pointer","& .title-block":{"& .title":{fontSize:"14px",fontWeight:600}}},"&.active, &.active.xs-active":{color:"#ffffff",position:"relative","& .min-icon":{fill:"#ffffff"},"&:before":{content:"' '",position:"absolute",width:"100%",height:"18px",backgroundColor:"#2781B0",display:"block",top:-16},"& .iconContainer":{"& .min-icon":{marginTop:"-12px"}}},"&.active":{background:"#2781B0",color:"#ffffff"},"&.xs-active":{background:"#eaeaea"}},children:r})},g=function(e){return(0,h.jsx)(x.Z,{className:"feature-title",children:(0,h.jsx)(x.Z,{className:"feature-title-info",children:(0,h.jsxs)("div",{className:"xs-only",children:[e.featureLabel," "]})})})},v=function(e){return(0,h.jsx)(x.Z,{className:"feature-item",style:e.style,children:(0,h.jsxs)(x.Z,{className:"feature-item-info",children:[(0,h.jsx)("div",{className:"xs-only",children:(0,m.BK)(e.featureLabel||"")}),(0,h.jsxs)(x.Z,{className:"plan-feature",children:[(0,h.jsx)("div",{children:(0,m.BK)(e.label||"")}),(0,m.BK)(e.detail),(0,h.jsxs)("div",{className:"xs-only",children:[e.xsLabel," "]})]})]})})},j=function(e){var t,n=e.licenseInfo,r=(0,f.Z)(),s=(0,p.Z)(r.breakpoints.down("sm")),o=n?null===n||void 0===n||null===(t=n.plan)||void 0===t?void 0:t.toLowerCase():"community",c=o===m.a6.COMMUNITY,u=o===m.a6.STANDARD,j=o===m.a6.ENTERPRISE,y=m.eo.includes(o),Z=(0,a.useState)(""),w=(0,i.Z)(Z,2),N=w[0],k=w[1],S=N===m.a6.COMMUNITY,C=N===m.a6.STANDARD,L=N===m.a6.ENTERPRISE,I=function(e,t,n,i){var a="community"!==o?"https://subnet.min.io":e;return(0,h.jsx)(l.zxk,{id:"license-action-".concat(e),variant:n,style:{marginTop:"12px",width:"80%"},disabled:o!==m.a6.COMMUNITY&&o!==i,onClick:function(e){e.preventDefault(),window.open("".concat(a,"?ref=con"),"_blank")},label:t})},R=function(e){k(e)};(0,a.useEffect)((function(){k(s?o||"community":"")}),[s,o]);var E=m.Of;return(0,h.jsx)(a.Fragment,{children:(0,h.jsxs)(x.Z,{sx:{border:"1px solid #eaeaea",borderTop:"0px",marginBottom:"45px","&::-webkit-scrollbar":{width:"5px",height:"5px"},"&::-webkit-scrollbar-track":{background:"#F0F0F0",borderRadius:0,boxShadow:"inset 0px 0px 0px 0px #F0F0F0"},"&::-webkit-scrollbar-thumb":{background:"#777474",borderRadius:0},"&::-webkit-scrollbar-thumb:hover":{background:"#5A6375"}},children:[(0,h.jsx)(x.Z,{className:"title-blue-bar",sx:{height:"8px",borderBottom:"8px solid rgb(6 48 83)"}}),(0,h.jsxs)(x.Z,{className:y?"paid-plans-only":"",sx:{display:"grid",margin:"0 1.5rem 0 1.5rem",gridTemplateColumns:{sm:"1fr 1fr 1fr 1fr",xs:"1fr 1fr 1fr"},"&.paid-plans-only":{display:"grid",gridTemplateColumns:"1fr 1fr 1fr"},"& .features-col":{flex:1,minWidth:"260px","@media (max-width: 600px)":{display:"none"}},"& .xs-only":{display:"none"},"& .button-box":{display:"flex",alignItems:"center",justifyContent:"center",padding:"5px 0px 25px 0px",borderLeft:"1px solid #eaeaea"},"& .plan-header":{height:"99px",borderBottom:"1px solid #eaeaea"},"& .feature-title":{height:"25px",paddingLeft:"26px",fontSize:"14px",background:"#E5E5E5","@media (max-width: 600px)":{"& .feature-title-info .xs-only":{display:"block"}}},"& .feature-name":{minHeight:"60px",padding:"5px",borderBottom:"1px solid #eaeaea",display:"flex",alignItems:"center",paddingLeft:"26px",fontSize:"14px"},"& .feature-item":{display:"flex",flexFlow:"column",alignItems:"center",justifyContent:"center",minHeight:"60px",padding:"0 15px 0 15px",borderBottom:"1px solid #eaeaea",borderLeft:" 1px solid #eaeaea",fontSize:"14px","& .link-text":{color:"#2781B0",cursor:"pointer",textDecoration:"underline"},"&.icon-yes":{width:"15px",height:"15px"}},"& .feature-item-info":{flex:1,display:"flex",flexFlow:"column",alignItems:"center",justifyContent:"space-around",textAlign:"center","@media (max-width: 600px)":{justifyContent:"space-evenly",width:"100%","& .xs-only":{display:"block"},"& .plan-feature":{textAlign:"center",paddingRight:"10px"}}},"& .plan-col":{minWidth:"260px",flex:1},"& .active-plan-col":{background:"#FDFDFD 0% 0% no-repeat padding-box",boxShadow:" 0px 3px 20px #00000038","& .plan-header":{backgroundColor:"#2781B0"},"& .feature-title":{background:"#F7F7F7"}}},children:[(0,h.jsx)(x.Z,{className:"features-col",children:E.map((function(e){var t=e.featureTitleRow;return e.isHeader?y?(0,h.jsxs)(x.Z,{className:"plan-header",sx:{fontSize:"14px",paddingLeft:"26px",display:"flex",alignItems:"center",justifyContent:"flex-start",borderBottom:"0px !important","& .link-text":{color:"#2781B0",cursor:"pointer",textDecoration:"underline"},"& .min-icon":{marginRight:"10px",color:"#2781B0",fill:"#2781B0"}},children:[(0,h.jsx)(l.jR_,{}),(0,h.jsxs)("a",{href:"https://subnet.min.io/terms-and-conditions/".concat(o),rel:"noopener",className:"link-text",children:["View License agreement ",(0,h.jsx)("br",{}),"for the registered plan."]})]},"plan-header-".concat(e.desc)):(0,h.jsx)(x.Z,{className:"plan-header",sx:{fontSize:"14px",paddingLeft:"26px",display:"flex",alignItems:"center",justifyContent:"flex-start",borderBottom:"0px !important"},children:e.label},"plan-header-label-".concat(e.desc)):t?(0,h.jsx)(x.Z,{className:"feature-title",sx:{fontSize:"14px",fontWeight:600,textTransform:"uppercase"},children:(0,h.jsxs)("div",{children:[(0,m.BK)(e.desc)," "]})},"plan-descript-".concat(e.desc)):(0,h.jsx)(x.Z,{className:"feature-name",style:e.style,children:(0,h.jsxs)("div",{children:[(0,m.BK)(e.desc)," "]})},"plan-feature-name-".concat(e.desc))}))}),y?null:(0,h.jsxs)(x.Z,{className:"plan-col ".concat(c?"active-plan-col":"non-active-plan-col"),children:[m.RY.map((function(e,t){var n=E[t].desc,i=e.featureTitleRow;return e.isHeader?(0,h.jsx)(b,{isActive:c,isXsViewActive:S,title:"community",onClick:s?R:null,children:(0,h.jsx)(x.Z,{className:"title-block",children:(0,h.jsx)(x.Z,{className:"title-main",children:(0,h.jsx)("div",{className:"iconContainer",children:(0,h.jsx)(l.H_l,{style:{width:117}})})})})},"community-header"):i?(0,h.jsx)(g,{featureLabel:n},"title-row-".concat(e.id)):(0,h.jsx)(v,{featureLabel:n,label:e.label,detail:e.detail,xsLabel:e.xsLabel,style:e.style},"pricing-feature-".concat(e.id))})),(0,h.jsx)(x.Z,{className:"button-box",children:I("https://slack.min.io","Join Slack","regular",m.a6.COMMUNITY)})]}),(0,h.jsxs)(x.Z,{className:"plan-col ".concat(u?"active-plan-col":"non-active-plan-col"),children:[m.zR.map((function(e,t){var n=E[t].desc,i=e.featureTitleRow;return e.isHeader?(0,h.jsx)(b,{isActive:u,isXsViewActive:C,title:"Standard",onClick:s?R:null,children:(0,h.jsx)(x.Z,{className:"title-block",children:(0,h.jsx)(x.Z,{className:"title-main",children:(0,h.jsx)("div",{className:"iconContainer",children:(0,h.jsx)(l.tKS,{})})})})},"standard-header"):i?(0,h.jsx)(g,{featureLabel:n},"feature-title-row-".concat(e.id)):(0,h.jsx)(v,{featureLabel:n,label:e.label,detail:e.detail,xsLabel:e.xsLabel,style:e.style},"feature-item-".concat(e.id))})),(0,h.jsx)(x.Z,{className:"button-box",children:I("https://min.io/signup",m.eo.includes(o)?"Login to SUBNET":"Subscribe","callAction",m.a6.STANDARD)})]}),(0,h.jsxs)(x.Z,{className:"plan-col ".concat(j?"active-plan-col":"non-active-plan-col"),children:[m.u9.map((function(e,t){var n=E[t].desc,i=e.featureTitleRow,a=e.isHeader,r=e.yesIcon;return a?(0,h.jsx)(b,{isActive:j,isXsViewActive:L,title:"Enterprise",onClick:s?R:null,children:(0,h.jsx)(x.Z,{className:"title-block",children:(0,h.jsx)(x.Z,{className:"title-main",children:(0,h.jsx)("div",{className:"iconContainer",children:(0,h.jsx)(l.cSV,{})})})})},"enterprise-header"):i?(0,h.jsx)(g,{featureLabel:n},"feature-title-row2-".concat(e.id)):r?(0,h.jsx)(x.Z,{className:"feature-item",children:(0,h.jsxs)(x.Z,{className:"feature-item-info",children:[(0,h.jsx)("div",{className:"xs-only"}),(0,h.jsx)(x.Z,{className:"plan-feature",children:(0,h.jsx)(d.Z,{})})]})},"ent-feature-yes".concat(e.id)):(0,h.jsx)(v,{featureLabel:n,label:e.label,detail:e.detail,style:e.style},"pricing-feature-item-".concat(e.id))})),(0,h.jsx)(x.Z,{className:"button-box",children:I("https://min.io/signup",m.eo.includes(o)?"Login to SUBNET":"Subscribe","callAction",m.a6.ENTERPRISE)})]})]})]})})},y=n(57689),Z=n(74440),w=n(75578),N=n(47974),k=n(99670),S=n(87995),C=n(81551),L=(0,w.Z)(a.lazy((function(){return n.e(5223).then(n.bind(n,75223))}))),I=function(){var e=(0,y.s0)(),t=(0,a.useState)(!1),n=(0,i.Z)(t,2),c=n[0],u=n[1],d=(0,a.useState)(),f=(0,i.Z)(d,2),x=f[0],p=f[1],b=(0,a.useState)(0),g=(0,i.Z)(b,2),v=g[0],w=g[1],I=(0,a.useState)(!1),R=(0,i.Z)(I,2),E=R[0],T=R[1],A=(0,a.useState)(!0),M=(0,i.Z)(A,2),B=M[0],F=M[1];(0,a.useState)(!1);var z=(0,a.useState)(!1),D=(0,i.Z)(z,2),P=D[0],_=D[1],O=(0,a.useState)(!1),W=(0,i.Z)(O,2),H=W[0],U=W[1],V=(0,C.TL)();(0,a.useEffect)((function(){V((0,S.Sc)("license"))}),[]);var K=x&&P,Y=(0,m.Y0)();(0,a.useEffect)((function(){!K&&!Y&&!B&&!E&&U(!0)}),[K,Y,B,E]);var X=(0,a.useCallback)((function(){E||(T(!0),s.Z.invoke("GET","/api/v1/subnet/info").then((function(e){e&&("STANDARD"===e.plan?w(1):"ENTERPRISE"===e.plan?w(2):w(1),p(e)),_(!0),T(!1)})).catch((function(){_(!1),T(!1)})))}),[E]);return(0,a.useEffect)((function(){B&&(X(),F(!1))}),[X,B,F]),E?(0,h.jsx)(r.ZP,{item:!0,xs:12,children:(0,h.jsx)(l.kod,{})}):(0,h.jsxs)(a.Fragment,{children:[(0,h.jsx)(N.Z,{label:"MinIO License and Support plans",actions:(0,h.jsxs)(a.Fragment,{children:[!K&&(0,h.jsx)(l.zxk,{id:"login-with-subnet",onClick:function(){return e(o.gA.REGISTER_SUPPORT)},style:{fontSize:"14px",display:"flex",alignItems:"center",textDecoration:"none"},icon:(0,h.jsx)(l.e0j,{}),variant:"callAction",children:"Register your cluster"}),(0,h.jsx)(k.Z,{})]})}),(0,h.jsxs)(l.Xgh,{children:[(0,h.jsx)(r.ZP,{item:!0,xs:12,children:K&&(0,h.jsx)(Z.Z,{email:null===x||void 0===x?void 0:x.email})}),(0,h.jsx)(j,{activateProductModal:c,closeModalAndFetchLicenseInfo:function(){u(!1),X()},licenseInfo:x,currentPlanID:v,setActivateProductModal:u}),(0,h.jsx)(L,{isOpen:H,onClose:function(){U(!1)}})]})]})}},74440:function(e,t,n){"use strict";var i=n(4942),a=(n(72791),n(29945)),r=n(80184);t.Z=function(e){var t=e.email,n=void 0===t?"":t;return(0,r.jsxs)(a.xuv,{sx:{height:67,color:"#ffffff",display:"flex",position:"relative",top:-30,left:-32,width:"calc(100% + 64px)",alignItems:"center",justifyContent:"space-between",backgroundColor:"#2781B0",padding:"0 25px 0 25px","& .registered-box, .reg-badge-box":{display:"flex",alignItems:"center",justifyContent:"flex-start"},"& .reg-badge-box":{marginLeft:"20px","& .min-icon":{fill:"#2781B0"}}},children:[(0,r.jsxs)(a.xuv,{className:"registered-box",children:[(0,r.jsx)(a.xuv,{sx:{fontSize:"16px",fontWeight:400},children:"Register status:"}),(0,r.jsxs)(a.xuv,{className:"reg-badge-box",children:[(0,r.jsx)(a.SA,{}),(0,r.jsx)(a.xuv,{sx:{fontWeight:600},children:"Registered"})]})]}),(0,r.jsxs)(a.xuv,{className:"registered-acc-box",sx:(0,i.Z)({alignItems:"center",justifyContent:"flex-start",display:"flex"},"@media (max-width: ".concat(a.Egj.sm,"px)"),{display:"none"}),children:[(0,r.jsx)(a.xuv,{sx:{fontSize:"16px",fontWeight:400},children:"Registered to:"}),(0,r.jsx)(a.xuv,{sx:{marginLeft:"8px",fontWeight:600},children:n})]})]})}},18384:function(e,t,n){"use strict";var i=n(64836);t.Z=void 0;var a=i(n(45649)),r=n(80184),s=(0,a.default)((0,r.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"}),"CheckCircle");t.Z=s},45649:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return i.createSvgIcon}});var i=n(28610)},95193:function(e,t,n){"use strict";var i;n.d(t,{Z:function(){return f}});var a=n(29439),r=n(72791),s=n(69120),l=n(33073),o=n(40162);function c(e,t,n,i,s){var l=r.useState((function(){return s&&n?n(e).matches:i?i(e).matches:t})),c=(0,a.Z)(l,2),u=c[0],d=c[1];return(0,o.Z)((function(){var t=!0;if(n){var i=n(e),a=function(){t&&d(i.matches)};return a(),i.addListener(a),function(){t=!1,i.removeListener(a)}}}),[e,n]),u}var u=(i||(i=n.t(r,2))).useSyncExternalStore;function d(e,t,n,i,s){var l=r.useCallback((function(){return t}),[t]),o=r.useMemo((function(){if(s&&n)return function(){return n(e).matches};if(null!==i){var t=i(e).matches;return function(){return t}}return l}),[l,e,i,s,n]),c=r.useMemo((function(){if(null===n)return[l,function(){return function(){}}];var t=n(e);return[function(){return t.matches},function(e){return t.addListener(e),function(){t.removeListener(e)}}]}),[l,n,e]),d=(0,a.Z)(c,2),f=d[0],x=d[1];return u(x,f,o)}function f(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=(0,s.Z)(),i="undefined"!==typeof window&&"undefined"!==typeof window.matchMedia,a=(0,l.Z)({name:"MuiUseMediaQuery",props:t,theme:n}),r=a.defaultMatches,o=void 0!==r&&r,f=a.matchMedia,x=void 0===f?i?window.matchMedia:null:f,p=a.ssrMatchMedia,m=void 0===p?null:p,h=a.noSsr,b=void 0!==h&&h;var g="function"===typeof e?e(n):e;return g=g.replace(/^@media( ?)/m,""),(void 0!==u?d:c)(g,o,x,m,b)}},31260:function(e,t,n){"use strict";var i=n(78949);t.Z=i.Z},28610:function(e,t,n){"use strict";n.r(t),n.d(t,{capitalize:function(){return a.Z},createChainedFunction:function(){return r.Z},createSvgIcon:function(){return s.Z},debounce:function(){return l.Z},deprecatedPropType:function(){return o},isMuiElement:function(){return c.Z},ownerDocument:function(){return u.Z},ownerWindow:function(){return d.Z},requirePropFactory:function(){return f},setRef:function(){return x},unstable_ClassNameGenerator:function(){return y},unstable_useEnhancedEffect:function(){return p.Z},unstable_useId:function(){return m.Z},unsupportedProp:function(){return h},useControlled:function(){return b.Z},useEventCallback:function(){return g.Z},useForkRef:function(){return v.Z},useIsFocusVisible:function(){return j.Z}});var i=n(55902),a=n(14036),r=n(31260),s=n(76189),l=n(83199);var o=function(e,t){return function(){return null}},c=n(19103),u=n(98301),d=n(17602);n(87462);var f=function(e,t){return function(){return null}},x=n(62971).Z,p=n(40162),m=n(67384);var h=function(e,t,n,i,a){return null},b=n(98278),g=n(89683),v=n(42071),j=n(23031),y={configure:function(e){i.Z.configure(e)}}},19103:function(e,t,n){"use strict";n.d(t,{Z:function(){return a}});var i=n(72791);var a=function(e,t){return i.isValidElement(e)&&-1!==t.indexOf(e.type.muiName)}},78949:function(e,t,n){"use strict";function i(){for(var e=arguments.length,t=new Array(e),n=0;n1&&void 0!==arguments[1]?arguments[1]:null;return function(n){return(0,r.jsx)(a.Suspense,{fallback:t,children:(0,r.jsx)(e,(0,i.Z)({},n))})}}},74902:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return I}});var i=n(29439),a=n(72791),r=n(61889),l=n(81207),s=n(29945),o=n(56087),c=n(4942),u=n(63733),d=n(18384),f=n(13967),x=n(64554),p=n(95193),m=n(78290),h=n(80184),b=function(e){var t=e.isActive,n=e.isXsViewActive,i=e.title,a=e.onClick,r=e.children,l=i.toLowerCase();return(0,h.jsx)(x.Z,{className:(0,u.Z)((0,c.Z)({"plan-header":!0,active:t},"xs-active",n)),onClick:function(){a&&a(l)},sx:{display:"flex",alignItems:"flex-start",justifyContent:"center",flexFlow:"column",borderLeft:"1px solid #eaeaea",borderBottom:"0px !important","& .plan-header":{display:"flex",alignItems:"center",justifyContent:"center",flexFlow:"column"},"& .title-block":{display:"flex",alignItems:"center",flexFlow:"column",width:"100%","& .title-main":{display:"flex",alignItems:"center",justifyContent:"center",flex:1},"& .iconContainer":{"& .min-icon":{minWidth:140,width:"100%",maxHeight:55,height:"100%"}}},"& .open-source":{fontSize:"14px",display:"flex",marginBottom:"5px",alignItems:"center","& .min-icon":{marginRight:"8px",height:"12px",width:"12px"}},"& .cur-plan-text":{fontSize:"12px",textTransform:"uppercase"},"@media (max-width: 600px)":{cursor:"pointer","& .title-block":{"& .title":{fontSize:"14px",fontWeight:600}}},"&.active, &.active.xs-active":{color:"#ffffff",position:"relative","& .min-icon":{fill:"#ffffff"},"&:before":{content:"' '",position:"absolute",width:"100%",height:"18px",backgroundColor:"#2781B0",display:"block",top:-16},"& .iconContainer":{"& .min-icon":{marginTop:"-12px"}}},"&.active":{background:"#2781B0",color:"#ffffff"},"&.xs-active":{background:"#eaeaea"}},children:r})},v=function(e){return(0,h.jsx)(x.Z,{className:"feature-title",children:(0,h.jsx)(x.Z,{className:"feature-title-info",children:(0,h.jsxs)("div",{className:"xs-only",children:[e.featureLabel," "]})})})},g=function(e){return(0,h.jsx)(x.Z,{className:"feature-item",style:e.style,children:(0,h.jsxs)(x.Z,{className:"feature-item-info",children:[(0,h.jsx)("div",{className:"xs-only",children:(0,m.BK)(e.featureLabel||"")}),(0,h.jsxs)(x.Z,{className:"plan-feature",children:[(0,h.jsx)("div",{children:(0,m.BK)(e.label||"")}),(0,m.BK)(e.detail),(0,h.jsxs)("div",{className:"xs-only",children:[e.xsLabel," "]})]})]})})},j=function(e){var t,n=e.licenseInfo,r=(0,f.Z)(),l=(0,p.Z)(r.breakpoints.down("sm")),o=n?null===n||void 0===n||null===(t=n.plan)||void 0===t?void 0:t.toLowerCase():"community",c=o===m.a6.COMMUNITY,u=o===m.a6.STANDARD,j=o===m.a6.ENTERPRISE,y=m.eo.includes(o),Z=(0,a.useState)(""),w=(0,i.Z)(Z,2),N=w[0],k=w[1],S=N===m.a6.COMMUNITY,C=N===m.a6.STANDARD,L=N===m.a6.ENTERPRISE,I=function(e,t,n,i){var a="community"!==o?"https://subnet.min.io":e;return(0,h.jsx)(s.zxk,{id:"license-action-".concat(e),variant:n,style:{marginTop:"12px",width:"80%"},disabled:o!==m.a6.COMMUNITY&&o!==i,onClick:function(e){e.preventDefault(),window.open("".concat(a,"?ref=con"),"_blank")},label:t})},R=function(e){k(e)};(0,a.useEffect)((function(){k(l?o||"community":"")}),[l,o]);var E=m.Of;return(0,h.jsx)(a.Fragment,{children:(0,h.jsxs)(x.Z,{sx:{border:"1px solid #eaeaea",borderTop:"0px",marginBottom:"45px","&::-webkit-scrollbar":{width:"5px",height:"5px"},"&::-webkit-scrollbar-track":{background:"#F0F0F0",borderRadius:0,boxShadow:"inset 0px 0px 0px 0px #F0F0F0"},"&::-webkit-scrollbar-thumb":{background:"#777474",borderRadius:0},"&::-webkit-scrollbar-thumb:hover":{background:"#5A6375"}},children:[(0,h.jsx)(x.Z,{className:"title-blue-bar",sx:{height:"8px",borderBottom:"8px solid rgb(6 48 83)"}}),(0,h.jsxs)(x.Z,{className:y?"paid-plans-only":"",sx:{display:"grid",margin:"0 1.5rem 0 1.5rem",gridTemplateColumns:{sm:"1fr 1fr 1fr 1fr",xs:"1fr 1fr 1fr"},"&.paid-plans-only":{display:"grid",gridTemplateColumns:"1fr 1fr 1fr"},"& .features-col":{flex:1,minWidth:"260px","@media (max-width: 600px)":{display:"none"}},"& .xs-only":{display:"none"},"& .button-box":{display:"flex",alignItems:"center",justifyContent:"center",padding:"5px 0px 25px 0px",borderLeft:"1px solid #eaeaea"},"& .plan-header":{height:"99px",borderBottom:"1px solid #eaeaea"},"& .feature-title":{height:"25px",paddingLeft:"26px",fontSize:"14px",background:"#E5E5E5","@media (max-width: 600px)":{"& .feature-title-info .xs-only":{display:"block"}}},"& .feature-name":{minHeight:"60px",padding:"5px",borderBottom:"1px solid #eaeaea",display:"flex",alignItems:"center",paddingLeft:"26px",fontSize:"14px"},"& .feature-item":{display:"flex",flexFlow:"column",alignItems:"center",justifyContent:"center",minHeight:"60px",padding:"0 15px 0 15px",borderBottom:"1px solid #eaeaea",borderLeft:" 1px solid #eaeaea",fontSize:"14px","& .link-text":{color:"#2781B0",cursor:"pointer",textDecoration:"underline"},"&.icon-yes":{width:"15px",height:"15px"}},"& .feature-item-info":{flex:1,display:"flex",flexFlow:"column",alignItems:"center",justifyContent:"space-around",textAlign:"center","@media (max-width: 600px)":{justifyContent:"space-evenly",width:"100%","& .xs-only":{display:"block"},"& .plan-feature":{textAlign:"center",paddingRight:"10px"}}},"& .plan-col":{minWidth:"260px",flex:1},"& .active-plan-col":{background:"#FDFDFD 0% 0% no-repeat padding-box",boxShadow:" 0px 3px 20px #00000038","& .plan-header":{backgroundColor:"#2781B0"},"& .feature-title":{background:"#F7F7F7"}}},children:[(0,h.jsx)(x.Z,{className:"features-col",children:E.map((function(e){var t=e.featureTitleRow;return e.isHeader?y?(0,h.jsxs)(x.Z,{className:"plan-header",sx:{fontSize:"14px",paddingLeft:"26px",display:"flex",alignItems:"center",justifyContent:"flex-start",borderBottom:"0px !important","& .link-text":{color:"#2781B0",cursor:"pointer",textDecoration:"underline"},"& .min-icon":{marginRight:"10px",color:"#2781B0",fill:"#2781B0"}},children:[(0,h.jsx)(s.jR_,{}),(0,h.jsxs)("a",{href:"https://subnet.min.io/terms-and-conditions/".concat(o),rel:"noopener",className:"link-text",children:["View License agreement ",(0,h.jsx)("br",{}),"for the registered plan."]})]},"plan-header-".concat(e.desc)):(0,h.jsx)(x.Z,{className:"plan-header",sx:{fontSize:"14px",paddingLeft:"26px",display:"flex",alignItems:"center",justifyContent:"flex-start",borderBottom:"0px !important"},children:e.label},"plan-header-label-".concat(e.desc)):t?(0,h.jsx)(x.Z,{className:"feature-title",sx:{fontSize:"14px",fontWeight:600,textTransform:"uppercase"},children:(0,h.jsxs)("div",{children:[(0,m.BK)(e.desc)," "]})},"plan-descript-".concat(e.desc)):(0,h.jsx)(x.Z,{className:"feature-name",style:e.style,children:(0,h.jsxs)("div",{children:[(0,m.BK)(e.desc)," "]})},"plan-feature-name-".concat(e.desc))}))}),y?null:(0,h.jsxs)(x.Z,{className:"plan-col ".concat(c?"active-plan-col":"non-active-plan-col"),children:[m.RY.map((function(e,t){var n=E[t].desc,i=e.featureTitleRow;return e.isHeader?(0,h.jsx)(b,{isActive:c,isXsViewActive:S,title:"community",onClick:l?R:null,children:(0,h.jsx)(x.Z,{className:"title-block",children:(0,h.jsx)(x.Z,{className:"title-main",children:(0,h.jsx)("div",{className:"iconContainer",children:(0,h.jsx)(s.H_l,{style:{width:117}})})})})},"community-header"):i?(0,h.jsx)(v,{featureLabel:n},"title-row-".concat(e.id)):(0,h.jsx)(g,{featureLabel:n,label:e.label,detail:e.detail,xsLabel:e.xsLabel,style:e.style},"pricing-feature-".concat(e.id))})),(0,h.jsx)(x.Z,{className:"button-box",children:I("https://slack.min.io","Join Slack","regular",m.a6.COMMUNITY)})]}),(0,h.jsxs)(x.Z,{className:"plan-col ".concat(u?"active-plan-col":"non-active-plan-col"),children:[m.zR.map((function(e,t){var n=E[t].desc,i=e.featureTitleRow;return e.isHeader?(0,h.jsx)(b,{isActive:u,isXsViewActive:C,title:"Standard",onClick:l?R:null,children:(0,h.jsx)(x.Z,{className:"title-block",children:(0,h.jsx)(x.Z,{className:"title-main",children:(0,h.jsx)("div",{className:"iconContainer",children:(0,h.jsx)(s.tKS,{})})})})},"standard-header"):i?(0,h.jsx)(v,{featureLabel:n},"feature-title-row-".concat(e.id)):(0,h.jsx)(g,{featureLabel:n,label:e.label,detail:e.detail,xsLabel:e.xsLabel,style:e.style},"feature-item-".concat(e.id))})),(0,h.jsx)(x.Z,{className:"button-box",children:I("https://min.io/signup",m.eo.includes(o)?"Login to SUBNET":"Subscribe","callAction",m.a6.STANDARD)})]}),(0,h.jsxs)(x.Z,{className:"plan-col ".concat(j?"active-plan-col":"non-active-plan-col"),children:[m.u9.map((function(e,t){var n=E[t].desc,i=e.featureTitleRow,a=e.isHeader,r=e.yesIcon;return a?(0,h.jsx)(b,{isActive:j,isXsViewActive:L,title:"Enterprise",onClick:l?R:null,children:(0,h.jsx)(x.Z,{className:"title-block",children:(0,h.jsx)(x.Z,{className:"title-main",children:(0,h.jsx)("div",{className:"iconContainer",children:(0,h.jsx)(s.cSV,{})})})})},"enterprise-header"):i?(0,h.jsx)(v,{featureLabel:n},"feature-title-row2-".concat(e.id)):r?(0,h.jsx)(x.Z,{className:"feature-item",children:(0,h.jsxs)(x.Z,{className:"feature-item-info",children:[(0,h.jsx)("div",{className:"xs-only"}),(0,h.jsx)(x.Z,{className:"plan-feature",children:(0,h.jsx)(d.Z,{})})]})},"ent-feature-yes".concat(e.id)):(0,h.jsx)(g,{featureLabel:n,label:e.label,detail:e.detail,style:e.style},"pricing-feature-item-".concat(e.id))})),(0,h.jsx)(x.Z,{className:"button-box",children:I("https://min.io/signup",m.eo.includes(o)?"Login to SUBNET":"Subscribe","callAction",m.a6.ENTERPRISE)})]})]})]})})},y=n(57689),Z=n(74440),w=n(75578),N=n(47974),k=n(99670),S=n(87995),C=n(44690),L=(0,w.Z)(a.lazy((function(){return n.e(5223).then(n.bind(n,75223))}))),I=function(){var e=(0,y.s0)(),t=(0,a.useState)(!1),n=(0,i.Z)(t,2),c=n[0],u=n[1],d=(0,a.useState)(),f=(0,i.Z)(d,2),x=f[0],p=f[1],b=(0,a.useState)(0),v=(0,i.Z)(b,2),g=v[0],w=v[1],I=(0,a.useState)(!1),R=(0,i.Z)(I,2),E=R[0],T=R[1],A=(0,a.useState)(!0),M=(0,i.Z)(A,2),B=M[0],F=M[1];(0,a.useState)(!1);var z=(0,a.useState)(!1),D=(0,i.Z)(z,2),P=D[0],_=D[1],O=(0,a.useState)(!1),W=(0,i.Z)(O,2),H=W[0],U=W[1],V=(0,C.TL)();(0,a.useEffect)((function(){V((0,S.Sc)("license"))}),[]);var K=x&&P,Y=(0,m.Y0)();(0,a.useEffect)((function(){!K&&!Y&&!B&&!E&&U(!0)}),[K,Y,B,E]);var X=(0,a.useCallback)((function(){E||(T(!0),l.Z.invoke("GET","/api/v1/subnet/info").then((function(e){e&&("STANDARD"===e.plan?w(1):"ENTERPRISE"===e.plan?w(2):w(1),p(e)),_(!0),T(!1)})).catch((function(){_(!1),T(!1)})))}),[E]);return(0,a.useEffect)((function(){B&&(X(),F(!1))}),[X,B,F]),E?(0,h.jsx)(r.ZP,{item:!0,xs:12,children:(0,h.jsx)(s.kod,{})}):(0,h.jsxs)(a.Fragment,{children:[(0,h.jsx)(N.Z,{label:"MinIO License and Support plans",actions:(0,h.jsxs)(a.Fragment,{children:[!K&&(0,h.jsx)(s.zxk,{id:"login-with-subnet",onClick:function(){return e(o.gA.REGISTER_SUPPORT)},style:{fontSize:"14px",display:"flex",alignItems:"center",textDecoration:"none"},icon:(0,h.jsx)(s.e0j,{}),variant:"callAction",children:"Register your cluster"}),(0,h.jsx)(k.Z,{})]})}),(0,h.jsxs)(s.Xgh,{children:[(0,h.jsx)(r.ZP,{item:!0,xs:12,children:K&&(0,h.jsx)(Z.Z,{email:null===x||void 0===x?void 0:x.email})}),(0,h.jsx)(j,{activateProductModal:c,closeModalAndFetchLicenseInfo:function(){u(!1),X()},licenseInfo:x,currentPlanID:g,setActivateProductModal:u}),(0,h.jsx)(L,{isOpen:H,onClose:function(){U(!1)}})]})]})}},74440:function(e,t,n){"use strict";var i=n(4942),a=(n(72791),n(29945)),r=n(80184);t.Z=function(e){var t=e.email,n=void 0===t?"":t;return(0,r.jsxs)(a.xuv,{sx:{height:67,color:"#ffffff",display:"flex",position:"relative",top:-30,left:-32,width:"calc(100% + 64px)",alignItems:"center",justifyContent:"space-between",backgroundColor:"#2781B0",padding:"0 25px 0 25px","& .registered-box, .reg-badge-box":{display:"flex",alignItems:"center",justifyContent:"flex-start"},"& .reg-badge-box":{marginLeft:"20px","& .min-icon":{fill:"#2781B0"}}},children:[(0,r.jsxs)(a.xuv,{className:"registered-box",children:[(0,r.jsx)(a.xuv,{sx:{fontSize:"16px",fontWeight:400},children:"Register status:"}),(0,r.jsxs)(a.xuv,{className:"reg-badge-box",children:[(0,r.jsx)(a.SA,{}),(0,r.jsx)(a.xuv,{sx:{fontWeight:600},children:"Registered"})]})]}),(0,r.jsxs)(a.xuv,{className:"registered-acc-box",sx:(0,i.Z)({alignItems:"center",justifyContent:"flex-start",display:"flex"},"@media (max-width: ".concat(a.Egj.sm,"px)"),{display:"none"}),children:[(0,r.jsx)(a.xuv,{sx:{fontSize:"16px",fontWeight:400},children:"Registered to:"}),(0,r.jsx)(a.xuv,{sx:{marginLeft:"8px",fontWeight:600},children:n})]})]})}},18384:function(e,t,n){"use strict";var i=n(64836);t.Z=void 0;var a=i(n(45649)),r=n(80184),l=(0,a.default)((0,r.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"}),"CheckCircle");t.Z=l},45649:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return i.createSvgIcon}});var i=n(28610)},95193:function(e,t,n){"use strict";var i;n.d(t,{Z:function(){return f}});var a=n(29439),r=n(72791),l=n(69120),s=n(33073),o=n(40162);function c(e,t,n,i,l){var s=r.useState((function(){return l&&n?n(e).matches:i?i(e).matches:t})),c=(0,a.Z)(s,2),u=c[0],d=c[1];return(0,o.Z)((function(){var t=!0;if(n){var i=n(e),a=function(){t&&d(i.matches)};return a(),i.addListener(a),function(){t=!1,i.removeListener(a)}}}),[e,n]),u}var u=(i||(i=n.t(r,2))).useSyncExternalStore;function d(e,t,n,i,l){var s=r.useCallback((function(){return t}),[t]),o=r.useMemo((function(){if(l&&n)return function(){return n(e).matches};if(null!==i){var t=i(e).matches;return function(){return t}}return s}),[s,e,i,l,n]),c=r.useMemo((function(){if(null===n)return[s,function(){return function(){}}];var t=n(e);return[function(){return t.matches},function(e){return t.addListener(e),function(){t.removeListener(e)}}]}),[s,n,e]),d=(0,a.Z)(c,2),f=d[0],x=d[1];return u(x,f,o)}function f(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=(0,l.Z)(),i="undefined"!==typeof window&&"undefined"!==typeof window.matchMedia,a=(0,s.Z)({name:"MuiUseMediaQuery",props:t,theme:n}),r=a.defaultMatches,o=void 0!==r&&r,f=a.matchMedia,x=void 0===f?i?window.matchMedia:null:f,p=a.ssrMatchMedia,m=void 0===p?null:p,h=a.noSsr,b=void 0!==h&&h;var v="function"===typeof e?e(n):e;return v=v.replace(/^@media( ?)/m,""),(void 0!==u?d:c)(v,o,x,m,b)}},31260:function(e,t,n){"use strict";var i=n(78949);t.Z=i.Z},28610:function(e,t,n){"use strict";n.r(t),n.d(t,{capitalize:function(){return a.Z},createChainedFunction:function(){return r.Z},createSvgIcon:function(){return l.Z},debounce:function(){return s.Z},deprecatedPropType:function(){return o},isMuiElement:function(){return c.Z},ownerDocument:function(){return u.Z},ownerWindow:function(){return d.Z},requirePropFactory:function(){return f},setRef:function(){return x},unstable_ClassNameGenerator:function(){return y},unstable_useEnhancedEffect:function(){return p.Z},unstable_useId:function(){return m.Z},unsupportedProp:function(){return h},useControlled:function(){return b.Z},useEventCallback:function(){return v.Z},useForkRef:function(){return g.Z},useIsFocusVisible:function(){return j.Z}});var i=n(55902),a=n(14036),r=n(31260),l=n(76189),s=n(83199);var o=function(e,t){return function(){return null}},c=n(19103),u=n(98301),d=n(17602);n(87462);var f=function(e,t){return function(){return null}},x=n(62971).Z,p=n(40162),m=n(67384);var h=function(e,t,n,i,a){return null},b=n(98278),v=n(89683),g=n(42071),j=n(23031),y={configure:function(e){i.Z.configure(e)}}},19103:function(e,t,n){"use strict";n.d(t,{Z:function(){return a}});var i=n(72791);var a=function(e,t){var n,a;return i.isValidElement(e)&&-1!==t.indexOf(null!=(n=e.type.muiName)?n:null==(a=e.type)||null==(a=a._payload)||null==(a=a.value)?void 0:a.muiName)}},78949:function(e,t,n){"use strict";function i(){for(var e=arguments.length,t=new Array(e),n=0;n.\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

    (\n WrappedComponent: ComponentType

    ,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// 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 clsx from \"clsx\";\nimport CheckCircleIcon from \"@mui/icons-material/CheckCircle\";\nimport {\n AGPLV3Logo,\n Button,\n ConsoleEnterprise,\n ConsoleStandard,\n LicenseDocIcon,\n} from \"mds\";\nimport { useTheme } from \"@mui/material/styles\";\nimport { SubnetInfo } from \"./types\";\nimport { Box } from \"@mui/material\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport {\n COMMUNITY_PLAN_FEATURES,\n ENTERPRISE_PLAN_FEATURES,\n FEATURE_ITEMS,\n getRenderValue,\n LICENSE_PLANS,\n PAID_PLANS,\n STANDARD_PLAN_FEATURES,\n} from \"./utils\";\n\ninterface IRegisterStatus {\n activateProductModal: any;\n closeModalAndFetchLicenseInfo: any;\n licenseInfo: SubnetInfo | undefined;\n currentPlanID: number;\n setActivateProductModal: any;\n}\n\nconst PlanHeader = ({\n isActive,\n isXsViewActive,\n title,\n onClick,\n children,\n}: {\n isActive: boolean;\n isXsViewActive: boolean;\n title: string;\n price?: string;\n onClick: any;\n children: any;\n}) => {\n const plan = title.toLowerCase();\n return (\n {\n onClick && onClick(plan);\n }}\n sx={{\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"center\",\n flexFlow: \"column\",\n borderLeft: \"1px solid #eaeaea\",\n borderBottom: \"0px !important\",\n \"& .plan-header\": {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexFlow: \"column\",\n },\n\n \"& .title-block\": {\n display: \"flex\",\n alignItems: \"center\",\n flexFlow: \"column\",\n width: \"100%\",\n \"& .title-main\": {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flex: 1,\n },\n \"& .iconContainer\": {\n \"& .min-icon\": {\n minWidth: 140,\n width: \"100%\",\n maxHeight: 55,\n height: \"100%\",\n },\n },\n },\n\n \"& .open-source\": {\n fontSize: \"14px\",\n display: \"flex\",\n marginBottom: \"5px\",\n alignItems: \"center\",\n \"& .min-icon\": {\n marginRight: \"8px\",\n height: \"12px\",\n width: \"12px\",\n },\n },\n\n \"& .cur-plan-text\": {\n fontSize: \"12px\",\n textTransform: \"uppercase\",\n },\n\n \"@media (max-width: 600px)\": {\n cursor: \"pointer\",\n \"& .title-block\": {\n \"& .title\": {\n fontSize: \"14px\",\n fontWeight: 600,\n },\n },\n },\n\n \"&.active, &.active.xs-active\": {\n color: \"#ffffff\",\n position: \"relative\",\n\n \"& .min-icon\": {\n fill: \"#ffffff\",\n },\n\n \"&:before\": {\n content: \"' '\",\n position: \"absolute\",\n width: \"100%\",\n height: \"18px\",\n backgroundColor: \"#2781B0\",\n display: \"block\",\n top: -16,\n },\n \"& .iconContainer\": {\n \"& .min-icon\": {\n marginTop: \"-12px\",\n },\n },\n },\n \"&.active\": {\n background: \"#2781B0\",\n color: \"#ffffff\",\n },\n \"&.xs-active\": {\n background: \"#eaeaea\",\n },\n }}\n >\n {children}\n \n );\n};\n\nconst FeatureTitleRowCmp = (props: { featureLabel: any }) => {\n return (\n \n \n

    {props.featureLabel}
    \n \n \n );\n};\n\nconst PricingFeatureItem = (props: {\n featureLabel: any;\n label?: any;\n detail?: any;\n xsLabel?: string;\n style?: any;\n}) => {\n return (\n \n \n
    \n {getRenderValue(props.featureLabel || \"\")}\n
    \n \n
    {getRenderValue(props.label || \"\")}
    \n {getRenderValue(props.detail)}\n\n
    {props.xsLabel}
    \n
    \n
    \n
    \n );\n};\n\nconst LicensePlans = ({ licenseInfo }: IRegisterStatus) => {\n const theme = useTheme();\n const isSmallScreen = useMediaQuery(theme.breakpoints.down(\"sm\"));\n\n let currentPlan = !licenseInfo\n ? \"community\"\n : licenseInfo?.plan?.toLowerCase();\n\n const isCommunityPlan = currentPlan === LICENSE_PLANS.COMMUNITY;\n const isStandardPlan = currentPlan === LICENSE_PLANS.STANDARD;\n const isEnterprisePlan = currentPlan === LICENSE_PLANS.ENTERPRISE;\n\n const isPaidPlan = PAID_PLANS.includes(currentPlan);\n\n /*In smaller screen use tabbed view to show features*/\n const [xsPlanView, setXsPlanView] = useState(\"\");\n let isXsViewCommunity = xsPlanView === LICENSE_PLANS.COMMUNITY;\n let isXsViewStandard = xsPlanView === LICENSE_PLANS.STANDARD;\n let isXsViewEnterprise = xsPlanView === LICENSE_PLANS.ENTERPRISE;\n\n const getCommunityPlanHeader = () => {\n return (\n \n \n \n
    \n \n
    \n
    \n
    \n \n );\n };\n\n const getStandardPlanHeader = () => {\n return (\n \n \n \n
    \n \n
    \n
    \n
    \n \n );\n };\n\n const getEnterpriseHeader = () => {\n return (\n \n \n \n
    \n \n
    \n
    \n
    \n \n );\n };\n\n const getButton = (\n link: string,\n btnText: string,\n variant: any,\n plan: string,\n ) => {\n let linkToNav =\n currentPlan !== \"community\" ? \"https://subnet.min.io\" : link;\n return (\n {\n e.preventDefault();\n\n window.open(`${linkToNav}?ref=con`, \"_blank\");\n }}\n label={btnText}\n />\n );\n };\n\n const onPlanClick = (plan: string) => {\n setXsPlanView(plan);\n };\n\n useEffect(() => {\n if (isSmallScreen) {\n setXsPlanView(currentPlan || \"community\");\n } else {\n setXsPlanView(\"\");\n }\n }, [isSmallScreen, currentPlan]);\n\n const featureList = FEATURE_ITEMS;\n return (\n \n \n \n \n \n {featureList.map((fi) => {\n const featureTitleRow = fi.featureTitleRow;\n const isHeader = fi.isHeader;\n\n if (isHeader) {\n if (isPaidPlan) {\n return (\n \n \n \n View License agreement
    \n for the registered plan.\n \n
    \n );\n }\n\n return (\n \n {fi.label}\n \n );\n }\n if (featureTitleRow) {\n return (\n \n
    {getRenderValue(fi.desc)}
    \n \n );\n }\n return (\n \n
    {getRenderValue(fi.desc)}
    \n \n );\n })}\n \n {!isPaidPlan ? (\n \n {COMMUNITY_PLAN_FEATURES.map((fi, idx) => {\n const featureLabel = featureList[idx].desc;\n const { featureTitleRow, isHeader } = fi;\n\n if (isHeader) {\n return getCommunityPlanHeader();\n }\n\n if (featureTitleRow) {\n return (\n \n );\n }\n\n return (\n \n );\n })}\n \n {getButton(\n `https://slack.min.io`,\n \"Join Slack\",\n \"regular\",\n LICENSE_PLANS.COMMUNITY,\n )}\n \n \n ) : null}\n \n {STANDARD_PLAN_FEATURES.map((fi, idx) => {\n const featureLabel = featureList[idx].desc;\n const featureTitleRow = fi.featureTitleRow;\n const isHeader = fi.isHeader;\n\n if (isHeader) {\n return getStandardPlanHeader();\n }\n\n if (featureTitleRow) {\n return (\n \n );\n }\n return (\n \n );\n })}\n\n \n {getButton(\n `https://min.io/signup`,\n !PAID_PLANS.includes(currentPlan)\n ? \"Subscribe\"\n : \"Login to SUBNET\",\n \"callAction\",\n LICENSE_PLANS.STANDARD,\n )}\n \n \n \n {ENTERPRISE_PLAN_FEATURES.map((fi, idx) => {\n const featureLabel = featureList[idx].desc;\n const { featureTitleRow, isHeader, yesIcon } = fi;\n\n if (isHeader) {\n return getEnterpriseHeader();\n }\n\n if (featureTitleRow) {\n return (\n \n );\n }\n\n if (yesIcon) {\n return (\n \n \n
    \n \n \n \n
    \n
    \n );\n }\n return (\n \n );\n })}\n \n {getButton(\n `https://min.io/signup`,\n !PAID_PLANS.includes(currentPlan)\n ? \"Subscribe\"\n : \"Login to SUBNET\",\n \"callAction\",\n LICENSE_PLANS.ENTERPRISE,\n )}\n \n \n \n \n
    \n );\n};\n\nexport default LicensePlans;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\n\nimport Grid from \"@mui/material/Grid\";\nimport { SubnetInfo } from \"./types\";\nimport api from \"../../../common/api\";\nimport { ArrowIcon, Button, PageLayout, ProgressBar } from \"mds\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport LicensePlans from \"./LicensePlans\";\nimport { useNavigate } from \"react-router-dom\";\nimport RegistrationStatusBanner from \"../Support/RegistrationStatusBanner\";\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport { getLicenseConsent } from \"./utils\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport { setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\n\nconst LicenseConsentModal = withSuspense(\n React.lazy(() => import(\"./LicenseConsentModal\")),\n);\n\nconst License = () => {\n const navigate = useNavigate();\n const [activateProductModal, setActivateProductModal] =\n useState(false);\n\n const [licenseInfo, setLicenseInfo] = useState();\n const [currentPlanID, setCurrentPlanID] = useState(0);\n const [loadingLicenseInfo, setLoadingLicenseInfo] = useState(false);\n const [initialLicenseLoading, setInitialLicenseLoading] =\n useState(true);\n useState(false);\n const [clusterRegistered, setClusterRegistered] = useState(false);\n\n const [isLicenseConsentOpen, setIsLicenseConsentOpen] =\n useState(false);\n\n const closeModalAndFetchLicenseInfo = () => {\n setActivateProductModal(false);\n fetchLicenseInfo();\n };\n\n const dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(setHelpName(\"license\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const isRegistered = licenseInfo && clusterRegistered;\n\n const isAgplConsentDone = getLicenseConsent();\n\n useEffect(() => {\n const shouldConsent =\n !isRegistered && !isAgplConsentDone && !initialLicenseLoading;\n\n if (shouldConsent && !loadingLicenseInfo) {\n setIsLicenseConsentOpen(true);\n }\n }, [\n isRegistered,\n isAgplConsentDone,\n initialLicenseLoading,\n loadingLicenseInfo,\n ]);\n\n const fetchLicenseInfo = useCallback(() => {\n if (loadingLicenseInfo) {\n return;\n }\n setLoadingLicenseInfo(true);\n api\n .invoke(\"GET\", `/api/v1/subnet/info`)\n .then((res: SubnetInfo) => {\n if (res) {\n if (res.plan === \"STANDARD\") {\n setCurrentPlanID(1);\n } else if (res.plan === \"ENTERPRISE\") {\n setCurrentPlanID(2);\n } else {\n setCurrentPlanID(1);\n }\n setLicenseInfo(res);\n }\n setClusterRegistered(true);\n setLoadingLicenseInfo(false);\n })\n .catch(() => {\n setClusterRegistered(false);\n setLoadingLicenseInfo(false);\n });\n }, [loadingLicenseInfo]);\n\n useEffect(() => {\n if (initialLicenseLoading) {\n fetchLicenseInfo();\n setInitialLicenseLoading(false);\n }\n }, [fetchLicenseInfo, initialLicenseLoading, setInitialLicenseLoading]);\n\n if (loadingLicenseInfo) {\n return (\n \n \n \n );\n }\n\n return (\n \n \n {!isRegistered && (\n navigate(IAM_PAGES.REGISTER_SUPPORT)}\n style={{\n fontSize: \"14px\",\n display: \"flex\",\n alignItems: \"center\",\n textDecoration: \"none\",\n }}\n icon={}\n variant={\"callAction\"}\n >\n Register your cluster\n \n )}\n \n \n }\n />\n\n \n \n {isRegistered && (\n \n )}\n \n\n \n\n {\n setIsLicenseConsentOpen(false);\n }}\n />\n \n \n );\n};\n\nexport default License;\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 { VerifiedIcon, Box, breakPoints } from \"mds\";\n\nconst RegistrationStatusBanner = ({ email = \"\" }: { email?: string }) => {\n return (\n \n \n Register status:\n \n \n \n Registered\n \n \n \n\n \n Registered to:\n {email}\n \n \n );\n};\nexport default RegistrationStatusBanner;\n","\"use strict\";\n\"use client\";\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.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n}), 'CheckCircle');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","'use client';\n\nimport * 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\n/**\n * @deprecated Not used internally. Use `MediaQueryList` from lib.dom.d.ts instead.\n */\n\n/**\n * @deprecated Not used internally. Use `(event: MediaQueryListEvent) => void` instead.\n */\n\nfunction useMediaQueryOld(query, defaultMatches, matchMedia, ssrMatchMedia, noSsr) {\n const [match, setMatch] = React.useState(() => {\n if (noSsr && matchMedia) {\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 (!matchMedia) {\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]);\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, noSsr) {\n const getDefaultSnapshot = React.useCallback(() => defaultMatches, [defaultMatches]);\n const getServerSnapshot = React.useMemo(() => {\n if (noSsr && matchMedia) {\n return () => matchMedia(query).matches;\n }\n if (ssrMatchMedia !== null) {\n const {\n matches\n } = ssrMatchMedia(query);\n return () => matches;\n }\n return getDefaultSnapshot;\n }, [getDefaultSnapshot, query, ssrMatchMedia, noSsr, matchMedia]);\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 = false\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}","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n var _muiName, _element$type;\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf( // For server components `muiName` is avaialble in element.type._payload.value.muiName\n // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45\n // eslint-disable-next-line no-underscore-dangle\n (_muiName = element.type.muiName) != null ? _muiName : (_element$type = element.type) == null || (_element$type = _element$type._payload) == null || (_element$type = _element$type.value) == null ? void 0 : _element$type.muiName) !== -1;\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["WrappedComponent","fallback","arguments","length","undefined","props","_jsx","Suspense","children","_objectSpread","PlanHeader","_ref","isActive","isXsViewActive","title","onClick","plan","toLowerCase","Box","className","clsx","_defineProperty","active","sx","display","alignItems","justifyContent","flexFlow","borderLeft","borderBottom","width","flex","minWidth","maxHeight","height","fontSize","marginBottom","marginRight","textTransform","cursor","fontWeight","color","position","fill","content","backgroundColor","top","marginTop","background","FeatureTitleRowCmp","_jsxs","featureLabel","PricingFeatureItem","style","getRenderValue","label","detail","xsLabel","_ref2","_licenseInfo$plan","licenseInfo","theme","useTheme","isSmallScreen","useMediaQuery","breakpoints","down","currentPlan","isCommunityPlan","LICENSE_PLANS","COMMUNITY","isStandardPlan","STANDARD","isEnterprisePlan","ENTERPRISE","isPaidPlan","PAID_PLANS","includes","_useState","useState","_useState2","_slicedToArray","xsPlanView","setXsPlanView","isXsViewCommunity","isXsViewStandard","isXsViewEnterprise","getButton","link","btnText","variant","linkToNav","Button","id","concat","disabled","e","preventDefault","window","open","onPlanClick","useEffect","featureList","FEATURE_ITEMS","Fragment","border","borderTop","borderRadius","boxShadow","margin","gridTemplateColumns","sm","xs","padding","paddingLeft","minHeight","textDecoration","textAlign","paddingRight","map","fi","featureTitleRow","isHeader","LicenseDocIcon","href","rel","desc","COMMUNITY_PLAN_FEATURES","idx","AGPLV3Logo","STANDARD_PLAN_FEATURES","ConsoleStandard","ENTERPRISE_PLAN_FEATURES","yesIcon","ConsoleEnterprise","CheckCircleIcon","LicenseConsentModal","withSuspense","React","navigate","useNavigate","activateProductModal","setActivateProductModal","_useState3","_useState4","setLicenseInfo","_useState5","_useState6","currentPlanID","setCurrentPlanID","_useState7","_useState8","loadingLicenseInfo","setLoadingLicenseInfo","_useState9","_useState10","initialLicenseLoading","setInitialLicenseLoading","_useState11","_useState12","clusterRegistered","setClusterRegistered","_useState13","_useState14","isLicenseConsentOpen","setIsLicenseConsentOpen","dispatch","useAppDispatch","setHelpName","isRegistered","isAgplConsentDone","getLicenseConsent","fetchLicenseInfo","useCallback","api","invoke","then","res","catch","Grid","item","ProgressBar","PageHeaderWrapper","actions","IAM_PAGES","REGISTER_SUPPORT","icon","ArrowIcon","HelpMenu","PageLayout","RegistrationStatusBanner","email","LicensePlans","closeModalAndFetchLicenseInfo","isOpen","onClose","_ref$email","left","marginLeft","VerifiedIcon","breakPoints","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Object","defineProperty","value","enumerable","get","_utils","createSvgIcon","useMediaQueryOld","query","defaultMatches","matchMedia","ssrMatchMedia","noSsr","_React$useState","matches","_React$useState2","match","setMatch","useEnhancedEffect","queryList","updateMatch","addListener","removeListener","maybeReactUseSyncExternalStore","useMediaQueryNew","getDefaultSnapshot","getServerSnapshot","_React$useMemo","mediaQueryList","notify","_React$useMemo2","getSnapshot","subscribe","queryInput","options","supportMatchMedia","_getThemeProps","getThemeProps","name","_getThemeProps$defaul","_getThemeProps$matchM","_getThemeProps$ssrMat","_getThemeProps$noSsr","replace","createChainedFunction","validator","reason","componentNameInError","Component","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","element","muiNames","_muiName","_element$type","indexOf","type","muiName","_payload","_len","funcs","Array","_key","reduce","acc","func","_len2","args","_key2","apply","this","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/5088.f16e9fb3.chunk.js b/portal-ui/build/static/js/5088.b53be05e.chunk.js similarity index 74% rename from portal-ui/build/static/js/5088.f16e9fb3.chunk.js rename to portal-ui/build/static/js/5088.b53be05e.chunk.js index fd724f3542..49a05aca3d 100644 --- a/portal-ui/build/static/js/5088.f16e9fb3.chunk.js +++ b/portal-ui/build/static/js/5088.b53be05e.chunk.js @@ -1,2 +1,2 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[5088],{75088:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return S}});var r=n(29439),s=n(72791),i=n(95087),o=n(78687),l=n(57689),a=n(29945),c="error",d="success",u="inProgress",x=n(81551),f=n(26824),h=n(87995),g=n(12808),p=n(9478),j=n(31776),m=n(80184),w=function(e){var t=e.title,n=e.children,i=(0,s.useState)("N/A"),o=(0,r.Z)(i,2),l=o[0],c=o[1],d=(0,s.useState)(0),u=(0,r.Z)(d,2),x=u[0],f=u[1],h=(0,s.useState)(0),g=(0,r.Z)(h,2),p=g[0],w=g[1],v=(0,s.useState)(!0),b=(0,r.Z)(v,2),y=b[0],S=b[1];return(0,s.useEffect)((function(){y&&j.h.admin.adminInfo({defaultOnly:!0}).then((function(e){var t,n=null===(t=e.data.servers)||void 0===t?void 0:t.length;if(f(n||0),e.data.servers&&e.data.servers.length>0){c(e.data.servers[0].version||"N/A");var r=e.data.servers.reduce((function(e,t){return e+(t.drives?t.drives.length:0)}),0);w(r)}S(!1)})).catch((function(){S(!1)}))}),[y]),(0,m.jsxs)(a.rjZ,{item:!0,xs:12,children:[(0,m.jsx)(a.NZf,{separator:!0,children:t}),(0,m.jsxs)(a.rjZ,{item:!0,xs:12,children:[(0,m.jsx)(a.rjZ,{item:!0,xs:12,sx:{padding:0,marginBottom:25},children:(0,m.jsx)(a.rjZ,{container:!0,sx:{padding:25},children:y?(0,m.jsx)(s.Fragment,{children:(0,m.jsx)(a.rjZ,{item:!0,xs:12,sx:{textAlign:"center"},children:(0,m.jsx)(a.aNw,{style:{width:25,height:25}})})}):(0,m.jsxs)(s.Fragment,{children:[(0,m.jsxs)(a.rjZ,{item:!0,xs:12,md:4,sx:{fontSize:18,display:"flex",alignItems:"center","& svg":{marginRight:10}},children:[(0,m.jsx)(a.FU8,{})," ",(0,m.jsx)("strong",{children:x}),"\xa0nodes,\xa0",(0,m.jsx)("strong",{children:p}),"\xa0 drives"]}),(0,m.jsxs)(a.rjZ,{item:!0,xs:12,md:4,sx:{fontSize:12,justifyContent:"center",alignSelf:"center",alignItems:"center",display:"flex"},children:[(0,m.jsx)("span",{style:{marginRight:20},children:(0,m.jsx)(a.Dbk,{})})," ","MinIO VERSION\xa0",(0,m.jsx)("strong",{children:l})]})]})})}),n]})]})},v=n(31460),b=n(47974),y=n(99670),S=function(){var e=(0,x.TL)(),t=(0,l.s0)(),n=(0,o.v9)((function(e){return e.healthInfo.message})),j=(0,o.v9)((function(e){return e.system.serverDiagnosticStatus})),S=(0,s.useState)(!1),Z=(0,r.Z)(S,2),C=Z[0],E=Z[1],I=(0,s.useState)(!0),k=(0,r.Z)(I,2),N=k[0],D=k[1],T=(0,s.useState)(""),_=(0,r.Z)(T,2),R=_[0],A=_[1],B=(0,s.useState)("Start Diagnostic"),F=(0,r.Z)(B,2),O=F[0],H=F[1],z=(0,s.useState)("New Diagnostic"),U=(0,r.Z)(z,2),L=U[0],P=U[1],K=(0,s.useState)(""),M=(0,r.Z)(K,2),Y=M[0],W=M[1],X=(0,s.useState)(""),G=(0,r.Z)(X,2),V=G[0],J=G[1],q=(0,p.Yc)();(0,s.useEffect)((function(){return j===u?(P("Diagnostic in progress..."),void A("Diagnostic started. Please do not refresh page during diagnosis.")):j===d?(P("Diagnostic complete"),A("Diagnostic file is ready to be downloaded."),void H("Start New Diagnostic")):j===c?(P("Error"),A("An error occurred while getting the Diagnostic file."),void H("Retry Diagnostic")):void 0}),[j,C]),(0,s.useEffect)((function(){j===d&&n!=={}&&D(!1),j===u&&D(!0),E(!1)}),[j,n]),(0,s.useEffect)((function(){if(C){e((0,g.Xp)()),W("");var t=new URL(window.location.toString()),n=t.port,r=(0,f.x2)(t.protocol),s=new URL(document.baseURI).pathname,o=new i.w3cwebsocket("".concat(r,"://").concat(t.hostname,":").concat(n).concat(s,"ws/health-info?deadline=1h")),l=null;null!==o&&(o.onopen=function(){console.log("WebSocket Client Connected"),o.send("ok"),l=setInterval((function(){o.send("ok")}),1e4),A("Diagnostic started. Please do not refresh page during diagnosis."),e((0,h.KY)(u))},o.onmessage=function(t){var n=JSON.parse(t.data.toString());n.serverHealthInfo&&(n.serverHealthInfo.timestamp=new Date(n.serverHealthInfo.timestamp.toString()),e((0,g.ec)(n.serverHealthInfo))),""!==n.encoded&&W(n.encoded),n.subnetResponse&&J(n.subnetResponse)},o.onerror=function(t){console.log("error closing websocket:",t.message),o.close(1e3),clearInterval(l),e((0,h.KY)(c))},o.onclose=function(t){clearInterval(l),t.code===f.HE||t.code===f.ci||t.code===f.V9?(console.log("connection closed by server with code:",t.code),A("An error occurred while getting the Diagnostic file."),e((0,h.KY)(c))):(console.log("connection closed by server"),A("Diagnostic file is ready to be downloaded."),e((0,h.KY)(d)))})}else E(!1)}),[C,e]);return(0,s.useEffect)((function(){e((0,h.Sc)("health_info"))}),[e]),(0,m.jsxs)(s.Fragment,{children:[(0,m.jsx)(b.Z,{label:"Health",actions:(0,m.jsx)(y.Z,{})}),(0,m.jsxs)(a.Xgh,{children:[!q&&(0,m.jsx)(v.Z,{compactMode:!0}),(0,m.jsx)(a.xuv,{withBorders:!0,children:(0,m.jsx)(w,{title:L,children:(0,m.jsx)(a.rjZ,{container:!0,sx:{justifyContent:"flex-start",gap:20},children:(0,m.jsxs)(a.rjZ,{item:!0,xs:12,sx:{textAlign:"center",marginBottom:25},children:[(0,m.jsx)("h2",{children:R}),(0,m.jsxs)(a.xuv,{sx:{textAlign:"center",marginBottom:25},children:[" ",""!==V&&!V.toLowerCase().includes("error")&&(0,m.jsxs)(a.rjZ,{item:!0,xs:12,children:[(0,m.jsx)("strong",{children:"Health report uploaded to SUBNET successfully!"}),"\xa0"," ",(0,m.jsxs)("strong",{children:["See the results on your"," ",(0,m.jsx)("a",{href:V,children:"SUBNET Dashboard"})," "]})]}),(""===V||V.toLowerCase().includes("error"))&&j===d&&(0,m.jsxs)(a.rjZ,{item:!0,xs:12,children:[(0,m.jsx)("strong",{children:"Something went wrong uploading your Health report to SUBNET."}),"\xa0"," ",(0,m.jsxs)("strong",{children:["Log into your"," ",(0,m.jsx)("a",{href:"https://subnet.min.io",children:"SUBNET Account"})," to manually upload your Health report."]})]})]}),j===u?(0,m.jsx)(a.xuv,{sx:{paddingTop:8,paddingLeft:40},children:(0,m.jsx)(a.aNw,{style:{width:25,height:25}})}):(0,m.jsx)(s.Fragment,{children:(0,m.jsxs)(a.xuv,{sx:{display:"flex",gap:10,alignItems:"center",justifyContent:"center"},children:[(0,m.jsx)(a.xuv,{children:j!==c&&!N&&(0,m.jsx)(a.zxk,{id:"download",type:"submit",variant:"callAction",onClick:function(){return function(){var e=document.createElement("a");e.setAttribute("href","data:application/gzip;base64,".concat(Y)),e.setAttribute("download","diagnostic.json.gz"),e.style.display="none",document.body.appendChild(e),e.click(),document.body.removeChild(e)}()},disabled:N,label:"Download"})}),(0,m.jsx)(a.xuv,{children:(0,m.jsx)(a.zxk,{id:"start-new-diagnostic",type:"submit",variant:q?"callAction":"regular",disabled:C||!q,onClick:function(){q?E(!0):t("/support/register")},label:O})})]})})]},"start-download")})})}),!C&&q&&(0,m.jsxs)(s.Fragment,{children:[(0,m.jsx)("br",{}),(0,m.jsx)(a.KfX,{title:"Cluster Health Report will be uploaded to SUBNET, and is viewable from your SUBNET Diagnostics dashboard.",iconComponent:(0,m.jsx)(a.szr,{}),help:"If the Health report cannot be generated at this time, please wait a moment and try again."})]})]})]})}},31460:function(e,t,n){"use strict";var r=n(4942),s=n(72791),i=n(57689),o=n(29945),l=n(80184);t.Z=function(e){var t=e.compactMode,n=void 0!==t&&t,a=(0,i.s0)(),c=(0,l.jsx)(o.zxk,{id:"go-to-register",type:"submit",variant:"callAction",color:"primary",onClick:function(){return a("/support/register")},children:"Register your Cluster"}),d="Please use your MinIO Subscription Network login credentials to register this cluster and enable this feature.";return n?(0,l.jsxs)(s.Fragment,{children:[(0,l.jsx)(o.rjZ,{sx:{"& div.leftItems":{marginBottom:0}},children:(0,l.jsx)(o.KfX,{title:(0,l.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",flexGrow:1},children:[(0,l.jsx)("span",{children:d})," ",c]}),iconComponent:(0,l.jsx)(o.e6P,{}),help:null})}),(0,l.jsx)("br",{})]}):(0,l.jsx)(o.xuv,{sx:(0,r.Z)({padding:"25px",border:"1px solid #eaeaea",display:"flex",alignItems:"center",justifyContent:"center",flexFlow:"row",marginBottom:"15px"},"@media (max-width: ".concat(o.Egj.sm,"px)"),{flexFlow:"column"}),children:(0,l.jsxs)(o.rjZ,{container:!0,children:[(0,l.jsx)(o.rjZ,{item:!0,xs:12,children:(0,l.jsx)(o.xuv,{sx:{marginRight:"8px",fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center","& .min-icon":{width:"83px",height:"14px",marginLeft:"5px",marginRight:"5px"}},children:"Register your cluster"})}),(0,l.jsx)(o.rjZ,{item:!0,xs:12,children:(0,l.jsx)(o.xuv,{sx:(0,r.Z)({display:"flex",flexFlow:"row"},"@media (max-width: ".concat(o.Egj.sm,"px)"),{flexFlow:"column"}),children:(0,l.jsxs)(o.xuv,{sx:{display:"flex",flexFlow:"column",flex:"2"},children:[(0,l.jsx)(o.xuv,{sx:{fontSize:"16px",display:"flex",flexFlow:"column",marginTop:"15px",marginBottom:"15px"},children:d}),(0,l.jsx)(o.xuv,{sx:{flex:"1"},children:(0,l.jsx)(o.xuv,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end"},children:c})})]})})})]})})}},26824:function(e,t,n){"use strict";n.d(t,{HE:function(){return i},V9:function(){return r},ci:function(){return s},x2:function(){return o}});var r=1006,s=1008,i=1011,o=function(e){var t="ws";return"https:"===e&&(t="wss"),t}},94210:function(e){var t=function(){if("object"===typeof self&&self)return self;if("object"===typeof window&&window)return window;throw new Error("Unable to resolve global `this`")};e.exports=function(){if(this)return this;if("object"===typeof globalThis&&globalThis)return globalThis;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch(e){return t()}try{return __global__||t()}finally{delete Object.prototype.__global__}}()},95087:function(e,t,n){var r;if("object"===typeof globalThis)r=globalThis;else try{r=n(94210)}catch(l){}finally{if(r||"undefined"===typeof window||(r=window),!r)throw new Error("Could not determine global this")}var s=r.WebSocket||r.MozWebSocket,i=n(51496);function o(e,t){return t?new s(e,t):new s(e)}s&&["CONNECTING","OPEN","CLOSING","CLOSED"].forEach((function(e){Object.defineProperty(o,e,{get:function(){return s[e]}})})),e.exports={w3cwebsocket:s?o:null,version:i}},51496:function(e,t,n){e.exports=n(19794).version},19794:function(e){"use strict";e.exports={version:"1.0.34"}}}]); -//# sourceMappingURL=5088.f16e9fb3.chunk.js.map \ No newline at end of file +(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[5088],{75088:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return S}});var r=n(29439),s=n(72791),i=n(95087),o=n(78687),l=n(57689),a=n(29945),c="error",d="success",u="inProgress",x=n(44690),h=n(26824),f=n(87995),g=n(12808),p=n(9478),j=n(31776),m=n(80184),w=function(e){var t=e.title,n=e.children,i=(0,s.useState)("N/A"),o=(0,r.Z)(i,2),l=o[0],c=o[1],d=(0,s.useState)(0),u=(0,r.Z)(d,2),x=u[0],h=u[1],f=(0,s.useState)(0),g=(0,r.Z)(f,2),p=g[0],w=g[1],v=(0,s.useState)(!0),b=(0,r.Z)(v,2),y=b[0],S=b[1];return(0,s.useEffect)((function(){y&&j.h.admin.adminInfo({defaultOnly:!0}).then((function(e){var t,n=null===(t=e.data.servers)||void 0===t?void 0:t.length;if(h(n||0),e.data.servers&&e.data.servers.length>0){c(e.data.servers[0].version||"N/A");var r=e.data.servers.reduce((function(e,t){return e+(t.drives?t.drives.length:0)}),0);w(r)}S(!1)})).catch((function(){S(!1)}))}),[y]),(0,m.jsxs)(a.rjZ,{item:!0,xs:12,children:[(0,m.jsx)(a.NZf,{separator:!0,children:t}),(0,m.jsxs)(a.rjZ,{item:!0,xs:12,children:[(0,m.jsx)(a.rjZ,{item:!0,xs:12,sx:{padding:0,marginBottom:25},children:(0,m.jsx)(a.rjZ,{container:!0,sx:{padding:25},children:y?(0,m.jsx)(s.Fragment,{children:(0,m.jsx)(a.rjZ,{item:!0,xs:12,sx:{textAlign:"center"},children:(0,m.jsx)(a.aNw,{style:{width:25,height:25}})})}):(0,m.jsxs)(s.Fragment,{children:[(0,m.jsxs)(a.rjZ,{item:!0,xs:12,md:4,sx:{fontSize:18,display:"flex",alignItems:"center","& svg":{marginRight:10}},children:[(0,m.jsx)(a.FU8,{})," ",(0,m.jsx)("strong",{children:x}),"\xa0nodes,\xa0",(0,m.jsx)("strong",{children:p}),"\xa0 drives"]}),(0,m.jsxs)(a.rjZ,{item:!0,xs:12,md:4,sx:{fontSize:12,justifyContent:"center",alignSelf:"center",alignItems:"center",display:"flex"},children:[(0,m.jsx)("span",{style:{marginRight:20},children:(0,m.jsx)(a.Dbk,{})})," ","MinIO VERSION\xa0",(0,m.jsx)("strong",{children:l})]})]})})}),n]})]})},v=n(31460),b=n(47974),y=n(99670),S=function(){var e=(0,x.TL)(),t=(0,l.s0)(),n=(0,o.v9)((function(e){return e.healthInfo.message})),j=(0,o.v9)((function(e){return e.system.serverDiagnosticStatus})),S=(0,s.useState)(!1),Z=(0,r.Z)(S,2),C=Z[0],I=Z[1],E=(0,s.useState)(!0),k=(0,r.Z)(E,2),N=k[0],D=k[1],T=(0,s.useState)(""),_=(0,r.Z)(T,2),R=_[0],A=_[1],B=(0,s.useState)("Start Diagnostic"),F=(0,r.Z)(B,2),O=F[0],z=F[1],H=(0,s.useState)("New Diagnostic"),U=(0,r.Z)(H,2),L=U[0],P=U[1],K=(0,s.useState)(""),M=(0,r.Z)(K,2),Y=M[0],W=M[1],X=(0,s.useState)(""),G=(0,r.Z)(X,2),V=G[0],J=G[1],q=(0,p.Yc)();(0,s.useEffect)((function(){return j===u?(P("Diagnostic in progress..."),void A("Diagnostic started. Please do not refresh page during diagnosis.")):j===d?(P("Diagnostic complete"),A("Diagnostic file is ready to be downloaded."),void z("Start New Diagnostic")):j===c?(P("Error"),A("An error occurred while getting the Diagnostic file."),void z("Retry Diagnostic")):void 0}),[j,C]),(0,s.useEffect)((function(){j===d&&n!=={}&&D(!1),j===u&&D(!0),I(!1)}),[j,n]),(0,s.useEffect)((function(){if(C){e((0,g.Xp)()),W("");var t=new URL(window.location.toString()),n=t.port,r=(0,h.x2)(t.protocol),s=new URL(document.baseURI).pathname,o=new i.w3cwebsocket("".concat(r,"://").concat(t.hostname,":").concat(n).concat(s,"ws/health-info?deadline=1h")),l=null;null!==o&&(o.onopen=function(){console.log("WebSocket Client Connected"),o.send("ok"),l=setInterval((function(){o.send("ok")}),1e4),A("Diagnostic started. Please do not refresh page during diagnosis."),e((0,f.KY)(u))},o.onmessage=function(t){var n=JSON.parse(t.data.toString());n.serverHealthInfo&&(n.serverHealthInfo.timestamp=new Date(n.serverHealthInfo.timestamp.toString()),e((0,g.ec)(n.serverHealthInfo))),""!==n.encoded&&W(n.encoded),n.subnetResponse&&J(n.subnetResponse)},o.onerror=function(t){console.log("error closing websocket:",t.message),o.close(1e3),clearInterval(l),e((0,f.KY)(c))},o.onclose=function(t){clearInterval(l),t.code===h.HE||t.code===h.ci||t.code===h.V9?(console.log("connection closed by server with code:",t.code),A("An error occurred while getting the Diagnostic file."),e((0,f.KY)(c))):(console.log("connection closed by server"),A("Diagnostic file is ready to be downloaded."),e((0,f.KY)(d)))})}else I(!1)}),[C,e]);return(0,s.useEffect)((function(){e((0,f.Sc)("health_info"))}),[e]),(0,m.jsxs)(s.Fragment,{children:[(0,m.jsx)(b.Z,{label:"Health",actions:(0,m.jsx)(y.Z,{})}),(0,m.jsxs)(a.Xgh,{children:[!q&&(0,m.jsx)(v.Z,{compactMode:!0}),(0,m.jsx)(a.xuv,{withBorders:!0,children:(0,m.jsx)(w,{title:L,children:(0,m.jsx)(a.rjZ,{container:!0,sx:{justifyContent:"flex-start",gap:20},children:(0,m.jsxs)(a.rjZ,{item:!0,xs:12,sx:{textAlign:"center",marginBottom:25},children:[(0,m.jsx)("h2",{children:R}),(0,m.jsxs)(a.xuv,{sx:{textAlign:"center",marginBottom:25},children:[" ",""!==V&&!V.toLowerCase().includes("error")&&(0,m.jsxs)(a.rjZ,{item:!0,xs:12,children:[(0,m.jsx)("strong",{children:"Health report uploaded to SUBNET successfully!"}),"\xa0"," ",(0,m.jsxs)("strong",{children:["See the results on your"," ",(0,m.jsx)("a",{href:V,children:"SUBNET Dashboard"})," "]})]}),(""===V||V.toLowerCase().includes("error"))&&j===d&&(0,m.jsxs)(a.rjZ,{item:!0,xs:12,children:[(0,m.jsx)("strong",{children:"Something went wrong uploading your Health report to SUBNET."}),"\xa0"," ",(0,m.jsxs)("strong",{children:["Log into your"," ",(0,m.jsx)("a",{href:"https://subnet.min.io",children:"SUBNET Account"})," to manually upload your Health report."]})]})]}),j===u?(0,m.jsx)(a.xuv,{sx:{paddingTop:8,paddingLeft:40},children:(0,m.jsx)(a.aNw,{style:{width:25,height:25}})}):(0,m.jsx)(s.Fragment,{children:(0,m.jsxs)(a.xuv,{sx:{display:"flex",gap:10,alignItems:"center",justifyContent:"center"},children:[(0,m.jsx)(a.xuv,{children:j!==c&&!N&&(0,m.jsx)(a.zxk,{id:"download",type:"submit",variant:"callAction",onClick:function(){return function(){var e=document.createElement("a");e.setAttribute("href","data:application/gzip;base64,".concat(Y)),e.setAttribute("download","diagnostic.json.gz"),e.style.display="none",document.body.appendChild(e),e.click(),document.body.removeChild(e)}()},disabled:N,label:"Download"})}),(0,m.jsx)(a.xuv,{children:(0,m.jsx)(a.zxk,{id:"start-new-diagnostic",type:"submit",variant:q?"callAction":"regular",disabled:C||!q,onClick:function(){q?I(!0):t("/support/register")},label:O})})]})})]},"start-download")})})}),!C&&q&&(0,m.jsxs)(s.Fragment,{children:[(0,m.jsx)("br",{}),(0,m.jsx)(a.KfX,{title:"Cluster Health Report will be uploaded to SUBNET, and is viewable from your SUBNET Diagnostics dashboard.",iconComponent:(0,m.jsx)(a.szr,{}),help:"If the Health report cannot be generated at this time, please wait a moment and try again."})]})]})]})}},31460:function(e,t,n){"use strict";var r=n(4942),s=n(72791),i=n(57689),o=n(29945),l=n(80184);t.Z=function(e){var t=e.compactMode,n=void 0!==t&&t,a=(0,i.s0)(),c=(0,l.jsx)(o.zxk,{id:"go-to-register",type:"submit",variant:"callAction",color:"primary",onClick:function(){return a("/support/register")},children:"Register your Cluster"}),d="Please use your MinIO Subscription Network login credentials to register this cluster and enable this feature.";return n?(0,l.jsxs)(s.Fragment,{children:[(0,l.jsx)(o.rjZ,{sx:{"& div.leftItems":{marginBottom:0}},children:(0,l.jsx)(o.KfX,{title:(0,l.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",flexGrow:1},children:[(0,l.jsx)("span",{children:d})," ",c]}),iconComponent:(0,l.jsx)(o.e6P,{}),help:null})}),(0,l.jsx)("br",{})]}):(0,l.jsx)(o.xuv,{sx:(0,r.Z)({padding:"25px",border:"1px solid #eaeaea",display:"flex",alignItems:"center",justifyContent:"center",flexFlow:"row",marginBottom:"15px"},"@media (max-width: ".concat(o.Egj.sm,"px)"),{flexFlow:"column"}),children:(0,l.jsxs)(o.rjZ,{container:!0,children:[(0,l.jsx)(o.rjZ,{item:!0,xs:12,children:(0,l.jsx)(o.xuv,{sx:{marginRight:"8px",fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center","& .min-icon":{width:"83px",height:"14px",marginLeft:"5px",marginRight:"5px"}},children:"Register your cluster"})}),(0,l.jsx)(o.rjZ,{item:!0,xs:12,children:(0,l.jsx)(o.xuv,{sx:(0,r.Z)({display:"flex",flexFlow:"row"},"@media (max-width: ".concat(o.Egj.sm,"px)"),{flexFlow:"column"}),children:(0,l.jsxs)(o.xuv,{sx:{display:"flex",flexFlow:"column",flex:"2"},children:[(0,l.jsx)(o.xuv,{sx:{fontSize:"16px",display:"flex",flexFlow:"column",marginTop:"15px",marginBottom:"15px"},children:d}),(0,l.jsx)(o.xuv,{sx:{flex:"1"},children:(0,l.jsx)(o.xuv,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end"},children:c})})]})})})]})})}},94210:function(e){var t=function(){if("object"===typeof self&&self)return self;if("object"===typeof window&&window)return window;throw new Error("Unable to resolve global `this`")};e.exports=function(){if(this)return this;if("object"===typeof globalThis&&globalThis)return globalThis;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch(e){return t()}try{return __global__||t()}finally{delete Object.prototype.__global__}}()},95087:function(e,t,n){var r;if("object"===typeof globalThis)r=globalThis;else try{r=n(94210)}catch(l){}finally{if(r||"undefined"===typeof window||(r=window),!r)throw new Error("Could not determine global this")}var s=r.WebSocket||r.MozWebSocket,i=n(51496);function o(e,t){return t?new s(e,t):new s(e)}s&&["CONNECTING","OPEN","CLOSING","CLOSED"].forEach((function(e){Object.defineProperty(o,e,{get:function(){return s[e]}})})),e.exports={w3cwebsocket:s?o:null,version:i}},51496:function(e,t,n){e.exports=n(19794).version},19794:function(e){"use strict";e.exports={version:"1.0.34"}}}]); +//# sourceMappingURL=5088.b53be05e.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/5088.b53be05e.chunk.js.map b/portal-ui/build/static/js/5088.b53be05e.chunk.js.map new file mode 100644 index 0000000000..a6cb7e68cf --- /dev/null +++ b/portal-ui/build/static/js/5088.b53be05e.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/5088.b53be05e.chunk.js","mappings":"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","sources":["screens/Console/HealthInfo/types.ts","screens/Console/Common/TestWrapper/TestWrapper.tsx","screens/Console/HealthInfo/HealthInfo.tsx","screens/Console/Support/RegisterCluster.tsx","../node_modules/es5-ext/global.js","../node_modules/websocket/lib/browser.js","../node_modules/websocket/lib/version.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\nexport const DiagStatError = \"error\";\nexport const DiagStatSuccess = \"success\";\nexport const DiagStatInProgress = \"inProgress\";\n\nexport interface HealthInfoMessage {\n timestamp: Date;\n error: string;\n perf: perfInfo;\n minio: minioHealthInfo;\n sys: sysHealthInfo;\n}\n\nexport interface ReportMessage {\n encoded: string;\n serverHealthInfo: HealthInfoMessage;\n subnetResponse: string;\n}\n\nexport interface perfInfo {\n drives: serverDrivesInfo[];\n net: serverNetHealthInfo[];\n net_parallel: serverNetHealthInfo;\n error: string;\n}\n\nexport interface serverDrivesInfo {\n addr: string;\n serial: drivePerfInfo[];\n parallel: drivePerfInfo[];\n error: string;\n}\n\nexport interface drivePerfInfo {\n endpoint: string;\n latency: diskLatency;\n throughput: diskThroughput;\n error: string;\n}\n\nexport interface diskLatency {\n avg_secs: number;\n percentile50_secs: number;\n percentile90_secs: number;\n percentile99_secs: number;\n min_secs: number;\n max_secs: number;\n}\n\nexport interface diskThroughput {\n avg_bytes_per_sec: number;\n percentile50_bytes_per_sec: number;\n percentile90_bytes_per_sec: number;\n percentile99_bytes_per_sec: number;\n min_bytes_per_sec: number;\n max_bytes_per_sec: number;\n}\n\nexport interface serverNetHealthInfo {\n addr: string;\n net: netPerfInfo[];\n error: string;\n}\n\nexport interface netPerfInfo {\n remote: string;\n latency: netLatency;\n throughput: netThroughput;\n error: string;\n}\n\nexport interface netLatency {\n avg_secs: number;\n percentile50_secs: number;\n percentile90_secs: number;\n percentile99_secs: number;\n min_secs: number;\n max_secs: number;\n}\n\nexport interface netThroughput {\n avg_bytes_per_sec: number;\n percentile50_bytes_per_sec: number;\n percentile90_bytes_per_sec: number;\n percentile99_bytes_per_sec: number;\n min_bytes_per_sec: number;\n max_bytes_per_sec: number;\n}\n\nexport interface minioHealthInfo {\n info: infoMessage;\n config: any;\n error: string;\n}\n\nexport interface infoMessage {\n mode: string;\n domain: string[];\n region: string;\n sqsARN: string[];\n deploymentID: string;\n buckets: buckets;\n objects: objects;\n usage: usage;\n services: services;\n backend: any;\n servers: serverProperties[];\n}\n\nexport interface buckets {\n count: number;\n}\n\nexport interface objects {\n count: number;\n}\n\nexport interface usage {\n size: number;\n}\n\nexport interface services {\n vault: vault;\n ldap: ldap;\n logger: Map[];\n audit: Map[];\n notifications: Map[]>;\n}\n\nexport interface vault {\n status: string;\n encrypt: string;\n decrypt: string;\n}\n\nexport interface ldap {\n status: string;\n}\n\nexport interface status {\n status: string;\n}\n\nexport interface serverProperties {\n state: string;\n endpoint: string;\n uptime: number;\n version: string;\n commitID: string;\n network: Map;\n drives: disk[];\n}\n\nexport interface disk {\n endpoint: string;\n rootDisk: boolean;\n path: string;\n healing: boolean;\n state: string;\n uuid: string;\n model: string;\n totalspace: number;\n usedspace: number;\n availspace: number;\n readthroughput: number;\n writethroughput: number;\n readlatency: number;\n writelatency: number;\n utilization: number;\n}\n\nexport interface sysHealthInfo {\n cpus: serverCpuInfo[];\n drives: serverDiskHwInfo[];\n osinfos: serverOsInfo[];\n meminfos: serverMemInfo[];\n procinfos: serverProcInfo[];\n error: string;\n}\n\nexport interface serverCpuInfo {\n addr: string;\n cpu: cpuInfoStat[];\n time: cpuTimeStat[];\n error: string;\n}\n\nexport interface cpuInfoStat {\n cpu: number;\n vendorId: string;\n family: string;\n model: string;\n stepping: number;\n physicalId: string;\n coreId: string;\n cores: number;\n modelName: string;\n mhz: number;\n cacheSize: number;\n flags: string[];\n microcode: string;\n}\n\nexport interface cpuTimeStat {\n cpu: string;\n user: number;\n system: number;\n idle: number;\n nice: number;\n iowait: number;\n irq: number;\n softirq: number;\n steal: number;\n guest: number;\n guestNice: number;\n}\n\nexport interface serverDiskHwInfo {\n addr: string;\n usages: diskUsageStat[];\n partitions: partitionStat[];\n counters: Map;\n error: string;\n}\n\nexport interface diskUsageStat {\n path: string;\n fstype: string;\n total: number;\n free: number;\n used: number;\n usedPercent: number;\n inodesTotal: number;\n inodesUsed: number;\n inodesFree: number;\n inodesUsedPercent: number;\n}\n\nexport interface partitionStat {\n device: string;\n mountpoint: string;\n fstype: string;\n opts: string;\n smartInfo: smartInfo;\n}\n\nexport interface smartInfo {\n device: string;\n scsi: scsiInfo;\n nvme: nvmeInfo;\n ata: ataInfo;\n error: string;\n}\n\nexport interface scsiInfo {\n scsiCapacityBytes: number;\n scsiModeSenseBuf: string;\n scsirespLen: number;\n scsiBdLen: number;\n scsiOffset: number;\n sciRpm: number;\n}\n\nexport interface nvmeInfo {\n serialNum: string;\n vendorId: string;\n firmwareVersion: string;\n modelNum: string;\n spareAvailable: string;\n spareThreshold: string;\n temperature: string;\n criticalWarning: string;\n maxDataTransferPages: number;\n controllerBusyTime: number;\n powerOnHours: number;\n powerCycles: number;\n unsafeShutdowns: number;\n mediaAndDataIntgerityErrors: number;\n dataUnitsReadBytes: number;\n dataUnitsWrittenBytes: number;\n hostReadCommands: number;\n hostWriteCommands: number;\n}\n\nexport interface ataInfo {\n scsiLuWWNDeviceID: string;\n serialNum: string;\n modelNum: string;\n firmwareRevision: string;\n RotationRate: string;\n MajorVersion: string;\n MinorVersion: string;\n smartSupportAvailable: boolean;\n smartSupportEnabled: boolean;\n smartErrorLog: string;\n transport: string;\n}\n\nexport interface diskIOCountersStat {\n readCount: number;\n mergedReadCount: number;\n DriteCount: number;\n mergedWriteCount: number;\n readBytes: number;\n writeBytes: number;\n readTime: number;\n writeTime: number;\n iopsInProgress: number;\n ioTime: number;\n weightedIO: number;\n name: string;\n serialNumber: string;\n label: string;\n}\n\nexport interface serverOsInfo {\n addr: string;\n info: infoStat;\n sensors: temperatureStat[];\n users: userStat[];\n error: string;\n}\n\nexport interface infoStat {\n hostname: string;\n uptime: number;\n bootTime: number;\n procs: number;\n os: string;\n platform: string;\n platformFamily: string;\n platformVersion: string;\n kernelVersion: string;\n kernelArch: string;\n virtualizationSystem: string;\n virtualizationRole: string;\n hostid: string;\n}\n\nexport interface temperatureStat {\n sensorKey: string;\n sensorTemperature: number;\n}\n\nexport interface userStat {\n user: string;\n terminal: string;\n host: string;\n started: number;\n}\n\nexport interface serverMemInfo {\n addr: string;\n swap: swapMemoryStat;\n virtualmem: virtualMemoryStat;\n error: string;\n}\n\nexport interface swapMemoryStat {\n total: number;\n used: number;\n free: number;\n usedPercent: number;\n sin: number;\n sout: number;\n pgin: number;\n pgout: number;\n pgfault: number;\n pgmajfault: number;\n}\n\nexport interface virtualMemoryStat {\n total: number;\n available: number;\n used: number;\n usedPercent: number;\n free: number;\n active: number;\n inactive: number;\n wired: number;\n laundry: number;\n buffers: number;\n cached: number;\n writeback: number;\n dirty: number;\n writebacktmp: number;\n shared: number;\n slab: number;\n sreclaimable: number;\n sunreclaim: number;\n pagetables: number;\n swapcached: number;\n commitlimit: number;\n committedas: number;\n hightotal: number;\n highfree: number;\n lowtotal: number;\n lowfree: number;\n swaptotal: number;\n swapfree: number;\n mapped: number;\n vmalloctotal: number;\n vmallocused: number;\n vmallocchunk: number;\n hugepagestotal: number;\n hugepagesfree: number;\n hugepagesize: number;\n}\n\nexport interface serverProcInfo {\n addr: string;\n processes: sysProcess[];\n error: string;\n}\n\nexport interface sysProcess {\n pid: number;\n background: boolean;\n cpupercent: number;\n children: number[];\n cmd: string;\n connections: nethwConnectionStat[];\n createtime: number;\n cwd: string;\n exe: string;\n gids: number[];\n iocounters: processIOCountersStat;\n isrunning: boolean;\n meminfo: memoryInfoStat;\n memmaps: any[];\n mempercent: number;\n name: string;\n netiocounters: nethwIOCounterStat[];\n nice: number;\n numctxswitches: processNmCtxSwitchesStat;\n numfds: number;\n numthreads: number;\n pagefaults: processPageFaultsStat;\n parent: number;\n ppid: number;\n rlimit: processRLimitStat[];\n status: string;\n tgid: number;\n cputimes: cpuTimeStat;\n uids: number[];\n username: string;\n}\n\nexport interface nethwConnectionStat {\n fd: number;\n family: number;\n type: number;\n localaddr: netAddr;\n remoteaddr: netAddr;\n status: string;\n uids: number[];\n pid: number;\n}\n\nexport interface netAddr {\n ip: string;\n port: number;\n}\n\nexport interface processIOCountersStat {\n readCount: number;\n writeCount: number;\n readBytes: number;\n writeBytes: number;\n}\n\nexport interface memoryInfoStat {\n rss: number;\n vms: number;\n hwm: number;\n data: number;\n stack: number;\n locked: number;\n swap: number;\n}\n\nexport interface nethwIOCounterStat {\n name: string;\n bytesSent: number;\n bytesRecv: number;\n packetsSent: number;\n packetsRecv: number;\n errin: number;\n errout: number;\n dropin: number;\n dropout: number;\n fifoin: number;\n fifoout: number;\n}\n\nexport interface processNmCtxSwitchesStat {\n voluntary: number;\n involuntary: number;\n}\n\nexport interface processPageFaultsStat {\n minorFaults: number;\n majorFaults: number;\n childMinorFaults: number;\n childMajorFaults: number;\n}\n\nexport interface processRLimitStat {\n resource: number;\n soft: number;\n hard: number;\n used: number;\n}\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { DrivesIcon, Loader, SectionTitle, VersionIcon, Grid } from \"mds\";\nimport { api } from \"api\";\nimport { ServerProperties } from \"api/consoleApi\";\n\ninterface ITestWrapper {\n title: any;\n children: any;\n}\n\nconst TestWrapper = ({ title, children }: ITestWrapper) => {\n const [version, setVersion] = useState(\"N/A\");\n const [totalNodes, setTotalNodes] = useState(0);\n const [totalDrives, setTotalDrives] = useState(0);\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n if (loading) {\n api.admin\n .adminInfo({\n defaultOnly: true,\n })\n .then((res) => {\n const totalServers = res.data.servers?.length;\n setTotalNodes(totalServers || 0);\n\n if (res.data.servers && res.data.servers.length > 0) {\n setVersion(res.data.servers[0].version || \"N/A\");\n\n const totalServers = res.data.servers.reduce(\n (prevTotal: number, currentElement: ServerProperties) => {\n let c = currentElement.drives\n ? currentElement.drives.length\n : 0;\n return prevTotal + c;\n },\n 0,\n );\n setTotalDrives(totalServers);\n }\n\n setLoading(false);\n })\n .catch(() => {\n setLoading(false);\n });\n }\n }, [loading]);\n\n return (\n \n {title}\n \n \n \n {!loading ? (\n \n \n {totalNodes}\n  nodes, \n {totalDrives}  drives\n \n \n \n \n {\" \"}\n MinIO VERSION {version}\n \n \n ) : (\n \n \n \n \n \n )}\n \n \n {children}\n \n \n );\n};\n\nexport default TestWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more 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, { Fragment, useEffect, useState } from \"react\";\nimport {\n ICloseEvent,\n IMessageEvent,\n w3cwebsocket as W3CWebSocket,\n} from \"websocket\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate } from \"react-router-dom\";\nimport { Box, Button, Grid, HelpBox, InfoIcon, Loader, PageLayout } from \"mds\";\nimport {\n DiagStatError,\n DiagStatInProgress,\n DiagStatSuccess,\n HealthInfoMessage,\n ReportMessage,\n} from \"./types\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport {\n WSCloseAbnormalClosure,\n WSCloseInternalServerErr,\n WSClosePolicyViolation,\n wsProtocol,\n} from \"../../../utils/wsUtils\";\nimport { setHelpName, setServerDiagStat } from \"../../../systemSlice\";\nimport {\n healthInfoMessageReceived,\n healthInfoResetMessage,\n} from \"./healthInfoSlice\";\nimport { registeredCluster } from \"../../../config\";\nimport TestWrapper from \"../Common/TestWrapper/TestWrapper\";\nimport RegisterCluster from \"../Support/RegisterCluster\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst HealthInfo = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const message = useSelector((state: AppState) => state.healthInfo.message);\n\n const serverDiagnosticStatus = useSelector(\n (state: AppState) => state.system.serverDiagnosticStatus,\n );\n const [startDiagnostic, setStartDiagnostic] = useState(false);\n\n const [downloadDisabled, setDownloadDisabled] = useState(true);\n const [localMessage, setMessage] = useState(\"\");\n const [buttonStartText, setButtonStartText] =\n useState(\"Start Diagnostic\");\n const [title, setTitle] = useState(\"New Diagnostic\");\n const [diagFileContent, setDiagFileContent] = useState(\"\");\n const [subnetResponse, setSubnetResponse] = useState(\"\");\n const clusterRegistered = registeredCluster();\n\n const download = () => {\n let element = document.createElement(\"a\");\n element.setAttribute(\n \"href\",\n `data:application/gzip;base64,${diagFileContent}`,\n );\n element.setAttribute(\"download\", \"diagnostic.json.gz\");\n\n element.style.display = \"none\";\n document.body.appendChild(element);\n\n element.click();\n\n document.body.removeChild(element);\n };\n\n useEffect(() => {\n if (serverDiagnosticStatus === DiagStatInProgress) {\n setTitle(\"Diagnostic in progress...\");\n setMessage(\n \"Diagnostic started. Please do not refresh page during diagnosis.\",\n );\n return;\n }\n\n if (serverDiagnosticStatus === DiagStatSuccess) {\n setTitle(\"Diagnostic complete\");\n setMessage(\"Diagnostic file is ready to be downloaded.\");\n setButtonStartText(\"Start New Diagnostic\");\n return;\n }\n\n if (serverDiagnosticStatus === DiagStatError) {\n setTitle(\"Error\");\n setMessage(\"An error occurred while getting the Diagnostic file.\");\n setButtonStartText(\"Retry Diagnostic\");\n return;\n }\n }, [serverDiagnosticStatus, startDiagnostic]);\n\n useEffect(() => {\n if (\n serverDiagnosticStatus === DiagStatSuccess &&\n message !== ({} as HealthInfoMessage)\n ) {\n // Allow download of diagnostics file only when\n // it succeded fetching all the results and info is not empty.\n setDownloadDisabled(false);\n }\n if (serverDiagnosticStatus === DiagStatInProgress) {\n // Disable Start Diagnotic and Disable Download buttons\n // if a Diagnosis is in progress.\n setDownloadDisabled(true);\n }\n setStartDiagnostic(false);\n }, [serverDiagnosticStatus, message]);\n\n useEffect(() => {\n if (startDiagnostic) {\n dispatch(healthInfoResetMessage());\n setDiagFileContent(\"\");\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 const wsProt = wsProtocol(url.protocol);\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 c = new W3CWebSocket(\n `${wsProt}://${url.hostname}:${port}${baseUrl}ws/health-info?deadline=1h`,\n );\n let interval: any | null = null;\n if (c !== null) {\n c.onopen = () => {\n console.log(\"WebSocket Client Connected\");\n c.send(\"ok\");\n interval = setInterval(() => {\n c.send(\"ok\");\n }, 10 * 1000);\n setMessage(\n \"Diagnostic started. Please do not refresh page during diagnosis.\",\n );\n dispatch(setServerDiagStat(DiagStatInProgress));\n };\n c.onmessage = (message: IMessageEvent) => {\n let m: ReportMessage = JSON.parse(message.data.toString());\n if (m.serverHealthInfo) {\n m.serverHealthInfo.timestamp = new Date(\n m.serverHealthInfo.timestamp.toString(),\n );\n dispatch(healthInfoMessageReceived(m.serverHealthInfo));\n }\n if (m.encoded !== \"\") {\n setDiagFileContent(m.encoded);\n }\n if (m.subnetResponse) {\n setSubnetResponse(m.subnetResponse);\n }\n };\n c.onerror = (error: Error) => {\n console.log(\"error closing websocket:\", error.message);\n c.close(1000);\n clearInterval(interval);\n dispatch(setServerDiagStat(DiagStatError));\n };\n c.onclose = (event: ICloseEvent) => {\n clearInterval(interval);\n if (\n event.code === WSCloseInternalServerErr ||\n event.code === WSClosePolicyViolation ||\n event.code === WSCloseAbnormalClosure\n ) {\n // handle close with error\n console.log(\"connection closed by server with code:\", event.code);\n setMessage(\"An error occurred while getting the Diagnostic file.\");\n dispatch(setServerDiagStat(DiagStatError));\n } else {\n console.log(\"connection closed by server\");\n\n setMessage(\"Diagnostic file is ready to be downloaded.\");\n dispatch(setServerDiagStat(DiagStatSuccess));\n }\n };\n }\n } else {\n // reset start status\n setStartDiagnostic(false);\n }\n }, [startDiagnostic, dispatch]);\n\n const startDiagnosticAction = () => {\n if (!clusterRegistered) {\n navigate(\"/support/register\");\n return;\n }\n setStartDiagnostic(true);\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"health_info\"));\n }, [dispatch]);\n\n return (\n \n } />\n\n \n {!clusterRegistered && }\n \n \n \n \n

    {localMessage}

    \n \n {\" \"}\n {subnetResponse !== \"\" &&\n !subnetResponse.toLowerCase().includes(\"error\") && (\n \n \n Health report uploaded to SUBNET successfully!\n \n  {\" \"}\n \n See the results on your{\" \"}\n SUBNET Dashboard{\" \"}\n \n \n )}\n {(subnetResponse === \"\" ||\n subnetResponse.toLowerCase().includes(\"error\")) &&\n serverDiagnosticStatus === DiagStatSuccess && (\n \n \n Something went wrong uploading your Health report to\n SUBNET.\n \n  {\" \"}\n \n Log into your{\" \"}\n SUBNET Account to\n manually upload your Health report.\n \n \n )}\n
    \n {serverDiagnosticStatus === DiagStatInProgress ? (\n \n \n \n ) : (\n \n \n \n {serverDiagnosticStatus !== DiagStatError &&\n !downloadDisabled && (\n download()}\n disabled={downloadDisabled}\n label={\"Download\"}\n />\n )}\n \n \n \n \n \n \n )}\n \n \n \n \n {!startDiagnostic && clusterRegistered && (\n \n
    \n }\n help={\n \"If the Health report cannot be generated at this time, please wait a moment and try again.\"\n }\n />\n
    \n )}\n
    \n
    \n );\n};\n\nexport default HealthInfo;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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, breakPoints, Button, Grid, HelpBox, WarnIcon } from \"mds\";\n\ninterface IRegisterCluster {\n compactMode?: boolean;\n}\n\nconst RegisterCluster = ({ compactMode = false }: IRegisterCluster) => {\n const navigate = useNavigate();\n\n const redirectButton = (\n navigate(\"/support/register\")}\n >\n Register your Cluster\n \n );\n\n const registerMessage =\n \"Please use your MinIO Subscription Network login credentials to register this cluster and enable this feature.\";\n\n if (compactMode) {\n return (\n \n \n \n {registerMessage} {redirectButton}\n \n }\n iconComponent={}\n help={null}\n />\n \n
    \n
    \n );\n }\n\n return (\n \n \n \n \n Register your cluster\n \n \n \n \n \n \n {registerMessage}\n \n \n \n {redirectButton}\n \n \n \n \n \n \n \n );\n};\n\nexport default RegisterCluster;\n","var naiveFallback = function () {\n\tif (typeof self === \"object\" && self) return self;\n\tif (typeof window === \"object\" && window) return window;\n\tthrow new Error(\"Unable to resolve global `this`\");\n};\n\nmodule.exports = (function () {\n\tif (this) return this;\n\n\t// Unexpected strict mode (may happen if e.g. bundled into ESM module)\n\n\t// Fallback to standard globalThis if available\n\tif (typeof globalThis === \"object\" && globalThis) return globalThis;\n\n\t// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis\n\t// In all ES5+ engines global object inherits from Object.prototype\n\t// (if you approached one that doesn't please report)\n\ttry {\n\t\tObject.defineProperty(Object.prototype, \"__global__\", {\n\t\t\tget: function () { return this; },\n\t\t\tconfigurable: true\n\t\t});\n\t} catch (error) {\n\t\t// Unfortunate case of updates to Object.prototype being restricted\n\t\t// via preventExtensions, seal or freeze\n\t\treturn naiveFallback();\n\t}\n\ttry {\n\t\t// Safari case (window.__global__ works, but __global__ does not)\n\t\tif (!__global__) return naiveFallback();\n\t\treturn __global__;\n\t} finally {\n\t\tdelete Object.prototype.__global__;\n\t}\n})();\n","var _globalThis;\nif (typeof globalThis === 'object') {\n\t_globalThis = globalThis;\n} else {\n\ttry {\n\t\t_globalThis = require('es5-ext/global');\n\t} catch (error) {\n\t} finally {\n\t\tif (!_globalThis && typeof window !== 'undefined') { _globalThis = window; }\n\t\tif (!_globalThis) { throw new Error('Could not determine global this'); }\n\t}\n}\n\nvar NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;\nvar websocket_version = require('./version');\n\n\n/**\n * Expose a W3C WebSocket class with just one or two arguments.\n */\nfunction W3CWebSocket(uri, protocols) {\n\tvar native_instance;\n\n\tif (protocols) {\n\t\tnative_instance = new NativeWebSocket(uri, protocols);\n\t}\n\telse {\n\t\tnative_instance = new NativeWebSocket(uri);\n\t}\n\n\t/**\n\t * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket\n\t * class). Since it is an Object it will be returned as it is when creating an\n\t * instance of W3CWebSocket via 'new W3CWebSocket()'.\n\t *\n\t * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2\n\t */\n\treturn native_instance;\n}\nif (NativeWebSocket) {\n\t['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) {\n\t\tObject.defineProperty(W3CWebSocket, prop, {\n\t\t\tget: function() { return NativeWebSocket[prop]; }\n\t\t});\n\t});\n}\n\n/**\n * Module exports.\n */\nmodule.exports = {\n 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null,\n 'version' : websocket_version\n};\n","module.exports = require('../package.json').version;\n"],"names":["DiagStatError","DiagStatSuccess","DiagStatInProgress","_ref","title","children","_useState","useState","_useState2","_slicedToArray","version","setVersion","_useState3","_useState4","totalNodes","setTotalNodes","_useState5","_useState6","totalDrives","setTotalDrives","_useState7","_useState8","loading","setLoading","useEffect","api","admin","adminInfo","defaultOnly","then","res","_res$data$servers","totalServers","data","servers","length","reduce","prevTotal","currentElement","drives","catch","_jsxs","Grid","item","xs","_jsx","SectionTitle","separator","sx","padding","marginBottom","container","Fragment","textAlign","Loader","style","width","height","md","fontSize","display","alignItems","marginRight","DrivesIcon","justifyContent","alignSelf","VersionIcon","dispatch","useAppDispatch","navigate","useNavigate","message","useSelector","state","healthInfo","serverDiagnosticStatus","system","startDiagnostic","setStartDiagnostic","downloadDisabled","setDownloadDisabled","localMessage","setMessage","buttonStartText","setButtonStartText","_useState9","_useState10","setTitle","_useState11","_useState12","diagFileContent","setDiagFileContent","_useState13","_useState14","subnetResponse","setSubnetResponse","clusterRegistered","registeredCluster","healthInfoResetMessage","url","URL","window","location","toString","port","wsProt","wsProtocol","protocol","baseUrl","document","baseURI","pathname","c","W3CWebSocket","concat","hostname","interval","onopen","console","log","send","setInterval","setServerDiagStat","onmessage","m","JSON","parse","serverHealthInfo","timestamp","Date","healthInfoMessageReceived","encoded","onerror","error","close","clearInterval","onclose","event","code","WSCloseInternalServerErr","WSClosePolicyViolation","WSCloseAbnormalClosure","setHelpName","PageHeaderWrapper","label","actions","HelpMenu","PageLayout","RegisterCluster","compactMode","Box","withBorders","TestWrapper","gap","toLowerCase","includes","href","paddingTop","paddingLeft","Button","id","type","variant","onClick","element","createElement","setAttribute","body","appendChild","click","removeChild","download","disabled","HelpBox","iconComponent","InfoIcon","help","_ref$compactMode","redirectButton","color","registerMessage","flexGrow","WarnIcon","_defineProperty","border","flexFlow","breakPoints","sm","fontWeight","marginLeft","flex","marginTop","naiveFallback","self","Error","module","exports","this","globalThis","Object","defineProperty","prototype","get","configurable","__global__","_globalThis","require","NativeWebSocket","WebSocket","MozWebSocket","websocket_version","uri","protocols","forEach","prop"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/5088.f16e9fb3.chunk.js.map b/portal-ui/build/static/js/5088.f16e9fb3.chunk.js.map deleted file mode 100644 index e3b30e8120..0000000000 --- a/portal-ui/build/static/js/5088.f16e9fb3.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/5088.f16e9fb3.chunk.js","mappings":"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","sources":["screens/Console/HealthInfo/types.ts","screens/Console/Common/TestWrapper/TestWrapper.tsx","screens/Console/HealthInfo/HealthInfo.tsx","screens/Console/Support/RegisterCluster.tsx","utils/wsUtils.ts","../node_modules/es5-ext/global.js","../node_modules/websocket/lib/browser.js","../node_modules/websocket/lib/version.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\nexport const DiagStatError = \"error\";\nexport const DiagStatSuccess = \"success\";\nexport const DiagStatInProgress = \"inProgress\";\n\nexport interface HealthInfoMessage {\n timestamp: Date;\n error: string;\n perf: perfInfo;\n minio: minioHealthInfo;\n sys: sysHealthInfo;\n}\n\nexport interface ReportMessage {\n encoded: string;\n serverHealthInfo: HealthInfoMessage;\n subnetResponse: string;\n}\n\nexport interface perfInfo {\n drives: serverDrivesInfo[];\n net: serverNetHealthInfo[];\n net_parallel: serverNetHealthInfo;\n error: string;\n}\n\nexport interface serverDrivesInfo {\n addr: string;\n serial: drivePerfInfo[];\n parallel: drivePerfInfo[];\n error: string;\n}\n\nexport interface drivePerfInfo {\n endpoint: string;\n latency: diskLatency;\n throughput: diskThroughput;\n error: string;\n}\n\nexport interface diskLatency {\n avg_secs: number;\n percentile50_secs: number;\n percentile90_secs: number;\n percentile99_secs: number;\n min_secs: number;\n max_secs: number;\n}\n\nexport interface diskThroughput {\n avg_bytes_per_sec: number;\n percentile50_bytes_per_sec: number;\n percentile90_bytes_per_sec: number;\n percentile99_bytes_per_sec: number;\n min_bytes_per_sec: number;\n max_bytes_per_sec: number;\n}\n\nexport interface serverNetHealthInfo {\n addr: string;\n net: netPerfInfo[];\n error: string;\n}\n\nexport interface netPerfInfo {\n remote: string;\n latency: netLatency;\n throughput: netThroughput;\n error: string;\n}\n\nexport interface netLatency {\n avg_secs: number;\n percentile50_secs: number;\n percentile90_secs: number;\n percentile99_secs: number;\n min_secs: number;\n max_secs: number;\n}\n\nexport interface netThroughput {\n avg_bytes_per_sec: number;\n percentile50_bytes_per_sec: number;\n percentile90_bytes_per_sec: number;\n percentile99_bytes_per_sec: number;\n min_bytes_per_sec: number;\n max_bytes_per_sec: number;\n}\n\nexport interface minioHealthInfo {\n info: infoMessage;\n config: any;\n error: string;\n}\n\nexport interface infoMessage {\n mode: string;\n domain: string[];\n region: string;\n sqsARN: string[];\n deploymentID: string;\n buckets: buckets;\n objects: objects;\n usage: usage;\n services: services;\n backend: any;\n servers: serverProperties[];\n}\n\nexport interface buckets {\n count: number;\n}\n\nexport interface objects {\n count: number;\n}\n\nexport interface usage {\n size: number;\n}\n\nexport interface services {\n vault: vault;\n ldap: ldap;\n logger: Map[];\n audit: Map[];\n notifications: Map[]>;\n}\n\nexport interface vault {\n status: string;\n encrypt: string;\n decrypt: string;\n}\n\nexport interface ldap {\n status: string;\n}\n\nexport interface status {\n status: string;\n}\n\nexport interface serverProperties {\n state: string;\n endpoint: string;\n uptime: number;\n version: string;\n commitID: string;\n network: Map;\n drives: disk[];\n}\n\nexport interface disk {\n endpoint: string;\n rootDisk: boolean;\n path: string;\n healing: boolean;\n state: string;\n uuid: string;\n model: string;\n totalspace: number;\n usedspace: number;\n availspace: number;\n readthroughput: number;\n writethroughput: number;\n readlatency: number;\n writelatency: number;\n utilization: number;\n}\n\nexport interface sysHealthInfo {\n cpus: serverCpuInfo[];\n drives: serverDiskHwInfo[];\n osinfos: serverOsInfo[];\n meminfos: serverMemInfo[];\n procinfos: serverProcInfo[];\n error: string;\n}\n\nexport interface serverCpuInfo {\n addr: string;\n cpu: cpuInfoStat[];\n time: cpuTimeStat[];\n error: string;\n}\n\nexport interface cpuInfoStat {\n cpu: number;\n vendorId: string;\n family: string;\n model: string;\n stepping: number;\n physicalId: string;\n coreId: string;\n cores: number;\n modelName: string;\n mhz: number;\n cacheSize: number;\n flags: string[];\n microcode: string;\n}\n\nexport interface cpuTimeStat {\n cpu: string;\n user: number;\n system: number;\n idle: number;\n nice: number;\n iowait: number;\n irq: number;\n softirq: number;\n steal: number;\n guest: number;\n guestNice: number;\n}\n\nexport interface serverDiskHwInfo {\n addr: string;\n usages: diskUsageStat[];\n partitions: partitionStat[];\n counters: Map;\n error: string;\n}\n\nexport interface diskUsageStat {\n path: string;\n fstype: string;\n total: number;\n free: number;\n used: number;\n usedPercent: number;\n inodesTotal: number;\n inodesUsed: number;\n inodesFree: number;\n inodesUsedPercent: number;\n}\n\nexport interface partitionStat {\n device: string;\n mountpoint: string;\n fstype: string;\n opts: string;\n smartInfo: smartInfo;\n}\n\nexport interface smartInfo {\n device: string;\n scsi: scsiInfo;\n nvme: nvmeInfo;\n ata: ataInfo;\n error: string;\n}\n\nexport interface scsiInfo {\n scsiCapacityBytes: number;\n scsiModeSenseBuf: string;\n scsirespLen: number;\n scsiBdLen: number;\n scsiOffset: number;\n sciRpm: number;\n}\n\nexport interface nvmeInfo {\n serialNum: string;\n vendorId: string;\n firmwareVersion: string;\n modelNum: string;\n spareAvailable: string;\n spareThreshold: string;\n temperature: string;\n criticalWarning: string;\n maxDataTransferPages: number;\n controllerBusyTime: number;\n powerOnHours: number;\n powerCycles: number;\n unsafeShutdowns: number;\n mediaAndDataIntgerityErrors: number;\n dataUnitsReadBytes: number;\n dataUnitsWrittenBytes: number;\n hostReadCommands: number;\n hostWriteCommands: number;\n}\n\nexport interface ataInfo {\n scsiLuWWNDeviceID: string;\n serialNum: string;\n modelNum: string;\n firmwareRevision: string;\n RotationRate: string;\n MajorVersion: string;\n MinorVersion: string;\n smartSupportAvailable: boolean;\n smartSupportEnabled: boolean;\n smartErrorLog: string;\n transport: string;\n}\n\nexport interface diskIOCountersStat {\n readCount: number;\n mergedReadCount: number;\n DriteCount: number;\n mergedWriteCount: number;\n readBytes: number;\n writeBytes: number;\n readTime: number;\n writeTime: number;\n iopsInProgress: number;\n ioTime: number;\n weightedIO: number;\n name: string;\n serialNumber: string;\n label: string;\n}\n\nexport interface serverOsInfo {\n addr: string;\n info: infoStat;\n sensors: temperatureStat[];\n users: userStat[];\n error: string;\n}\n\nexport interface infoStat {\n hostname: string;\n uptime: number;\n bootTime: number;\n procs: number;\n os: string;\n platform: string;\n platformFamily: string;\n platformVersion: string;\n kernelVersion: string;\n kernelArch: string;\n virtualizationSystem: string;\n virtualizationRole: string;\n hostid: string;\n}\n\nexport interface temperatureStat {\n sensorKey: string;\n sensorTemperature: number;\n}\n\nexport interface userStat {\n user: string;\n terminal: string;\n host: string;\n started: number;\n}\n\nexport interface serverMemInfo {\n addr: string;\n swap: swapMemoryStat;\n virtualmem: virtualMemoryStat;\n error: string;\n}\n\nexport interface swapMemoryStat {\n total: number;\n used: number;\n free: number;\n usedPercent: number;\n sin: number;\n sout: number;\n pgin: number;\n pgout: number;\n pgfault: number;\n pgmajfault: number;\n}\n\nexport interface virtualMemoryStat {\n total: number;\n available: number;\n used: number;\n usedPercent: number;\n free: number;\n active: number;\n inactive: number;\n wired: number;\n laundry: number;\n buffers: number;\n cached: number;\n writeback: number;\n dirty: number;\n writebacktmp: number;\n shared: number;\n slab: number;\n sreclaimable: number;\n sunreclaim: number;\n pagetables: number;\n swapcached: number;\n commitlimit: number;\n committedas: number;\n hightotal: number;\n highfree: number;\n lowtotal: number;\n lowfree: number;\n swaptotal: number;\n swapfree: number;\n mapped: number;\n vmalloctotal: number;\n vmallocused: number;\n vmallocchunk: number;\n hugepagestotal: number;\n hugepagesfree: number;\n hugepagesize: number;\n}\n\nexport interface serverProcInfo {\n addr: string;\n processes: sysProcess[];\n error: string;\n}\n\nexport interface sysProcess {\n pid: number;\n background: boolean;\n cpupercent: number;\n children: number[];\n cmd: string;\n connections: nethwConnectionStat[];\n createtime: number;\n cwd: string;\n exe: string;\n gids: number[];\n iocounters: processIOCountersStat;\n isrunning: boolean;\n meminfo: memoryInfoStat;\n memmaps: any[];\n mempercent: number;\n name: string;\n netiocounters: nethwIOCounterStat[];\n nice: number;\n numctxswitches: processNmCtxSwitchesStat;\n numfds: number;\n numthreads: number;\n pagefaults: processPageFaultsStat;\n parent: number;\n ppid: number;\n rlimit: processRLimitStat[];\n status: string;\n tgid: number;\n cputimes: cpuTimeStat;\n uids: number[];\n username: string;\n}\n\nexport interface nethwConnectionStat {\n fd: number;\n family: number;\n type: number;\n localaddr: netAddr;\n remoteaddr: netAddr;\n status: string;\n uids: number[];\n pid: number;\n}\n\nexport interface netAddr {\n ip: string;\n port: number;\n}\n\nexport interface processIOCountersStat {\n readCount: number;\n writeCount: number;\n readBytes: number;\n writeBytes: number;\n}\n\nexport interface memoryInfoStat {\n rss: number;\n vms: number;\n hwm: number;\n data: number;\n stack: number;\n locked: number;\n swap: number;\n}\n\nexport interface nethwIOCounterStat {\n name: string;\n bytesSent: number;\n bytesRecv: number;\n packetsSent: number;\n packetsRecv: number;\n errin: number;\n errout: number;\n dropin: number;\n dropout: number;\n fifoin: number;\n fifoout: number;\n}\n\nexport interface processNmCtxSwitchesStat {\n voluntary: number;\n involuntary: number;\n}\n\nexport interface processPageFaultsStat {\n minorFaults: number;\n majorFaults: number;\n childMinorFaults: number;\n childMajorFaults: number;\n}\n\nexport interface processRLimitStat {\n resource: number;\n soft: number;\n hard: number;\n used: number;\n}\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { DrivesIcon, Loader, SectionTitle, VersionIcon, Grid } from \"mds\";\nimport { api } from \"api\";\nimport { ServerProperties } from \"api/consoleApi\";\n\ninterface ITestWrapper {\n title: any;\n children: any;\n}\n\nconst TestWrapper = ({ title, children }: ITestWrapper) => {\n const [version, setVersion] = useState(\"N/A\");\n const [totalNodes, setTotalNodes] = useState(0);\n const [totalDrives, setTotalDrives] = useState(0);\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n if (loading) {\n api.admin\n .adminInfo({\n defaultOnly: true,\n })\n .then((res) => {\n const totalServers = res.data.servers?.length;\n setTotalNodes(totalServers || 0);\n\n if (res.data.servers && res.data.servers.length > 0) {\n setVersion(res.data.servers[0].version || \"N/A\");\n\n const totalServers = res.data.servers.reduce(\n (prevTotal: number, currentElement: ServerProperties) => {\n let c = currentElement.drives\n ? currentElement.drives.length\n : 0;\n return prevTotal + c;\n },\n 0,\n );\n setTotalDrives(totalServers);\n }\n\n setLoading(false);\n })\n .catch(() => {\n setLoading(false);\n });\n }\n }, [loading]);\n\n return (\n \n {title}\n \n \n \n {!loading ? (\n \n \n {totalNodes}\n  nodes, \n {totalDrives}  drives\n \n \n \n \n {\" \"}\n MinIO VERSION {version}\n \n \n ) : (\n \n \n \n \n \n )}\n \n \n {children}\n \n \n );\n};\n\nexport default TestWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more 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, { Fragment, useEffect, useState } from \"react\";\nimport {\n ICloseEvent,\n IMessageEvent,\n w3cwebsocket as W3CWebSocket,\n} from \"websocket\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate } from \"react-router-dom\";\nimport { Box, Button, Grid, HelpBox, InfoIcon, Loader, PageLayout } from \"mds\";\nimport {\n DiagStatError,\n DiagStatInProgress,\n DiagStatSuccess,\n HealthInfoMessage,\n ReportMessage,\n} from \"./types\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport {\n WSCloseAbnormalClosure,\n WSCloseInternalServerErr,\n WSClosePolicyViolation,\n wsProtocol,\n} from \"../../../utils/wsUtils\";\nimport { setHelpName, setServerDiagStat } from \"../../../systemSlice\";\nimport {\n healthInfoMessageReceived,\n healthInfoResetMessage,\n} from \"./healthInfoSlice\";\nimport { registeredCluster } from \"../../../config\";\nimport TestWrapper from \"../Common/TestWrapper/TestWrapper\";\nimport RegisterCluster from \"../Support/RegisterCluster\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst HealthInfo = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const message = useSelector((state: AppState) => state.healthInfo.message);\n\n const serverDiagnosticStatus = useSelector(\n (state: AppState) => state.system.serverDiagnosticStatus,\n );\n const [startDiagnostic, setStartDiagnostic] = useState(false);\n\n const [downloadDisabled, setDownloadDisabled] = useState(true);\n const [localMessage, setMessage] = useState(\"\");\n const [buttonStartText, setButtonStartText] =\n useState(\"Start Diagnostic\");\n const [title, setTitle] = useState(\"New Diagnostic\");\n const [diagFileContent, setDiagFileContent] = useState(\"\");\n const [subnetResponse, setSubnetResponse] = useState(\"\");\n const clusterRegistered = registeredCluster();\n\n const download = () => {\n let element = document.createElement(\"a\");\n element.setAttribute(\n \"href\",\n `data:application/gzip;base64,${diagFileContent}`,\n );\n element.setAttribute(\"download\", \"diagnostic.json.gz\");\n\n element.style.display = \"none\";\n document.body.appendChild(element);\n\n element.click();\n\n document.body.removeChild(element);\n };\n\n useEffect(() => {\n if (serverDiagnosticStatus === DiagStatInProgress) {\n setTitle(\"Diagnostic in progress...\");\n setMessage(\n \"Diagnostic started. Please do not refresh page during diagnosis.\",\n );\n return;\n }\n\n if (serverDiagnosticStatus === DiagStatSuccess) {\n setTitle(\"Diagnostic complete\");\n setMessage(\"Diagnostic file is ready to be downloaded.\");\n setButtonStartText(\"Start New Diagnostic\");\n return;\n }\n\n if (serverDiagnosticStatus === DiagStatError) {\n setTitle(\"Error\");\n setMessage(\"An error occurred while getting the Diagnostic file.\");\n setButtonStartText(\"Retry Diagnostic\");\n return;\n }\n }, [serverDiagnosticStatus, startDiagnostic]);\n\n useEffect(() => {\n if (\n serverDiagnosticStatus === DiagStatSuccess &&\n message !== ({} as HealthInfoMessage)\n ) {\n // Allow download of diagnostics file only when\n // it succeded fetching all the results and info is not empty.\n setDownloadDisabled(false);\n }\n if (serverDiagnosticStatus === DiagStatInProgress) {\n // Disable Start Diagnotic and Disable Download buttons\n // if a Diagnosis is in progress.\n setDownloadDisabled(true);\n }\n setStartDiagnostic(false);\n }, [serverDiagnosticStatus, message]);\n\n useEffect(() => {\n if (startDiagnostic) {\n dispatch(healthInfoResetMessage());\n setDiagFileContent(\"\");\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 const wsProt = wsProtocol(url.protocol);\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 c = new W3CWebSocket(\n `${wsProt}://${url.hostname}:${port}${baseUrl}ws/health-info?deadline=1h`,\n );\n let interval: any | null = null;\n if (c !== null) {\n c.onopen = () => {\n console.log(\"WebSocket Client Connected\");\n c.send(\"ok\");\n interval = setInterval(() => {\n c.send(\"ok\");\n }, 10 * 1000);\n setMessage(\n \"Diagnostic started. Please do not refresh page during diagnosis.\",\n );\n dispatch(setServerDiagStat(DiagStatInProgress));\n };\n c.onmessage = (message: IMessageEvent) => {\n let m: ReportMessage = JSON.parse(message.data.toString());\n if (m.serverHealthInfo) {\n m.serverHealthInfo.timestamp = new Date(\n m.serverHealthInfo.timestamp.toString(),\n );\n dispatch(healthInfoMessageReceived(m.serverHealthInfo));\n }\n if (m.encoded !== \"\") {\n setDiagFileContent(m.encoded);\n }\n if (m.subnetResponse) {\n setSubnetResponse(m.subnetResponse);\n }\n };\n c.onerror = (error: Error) => {\n console.log(\"error closing websocket:\", error.message);\n c.close(1000);\n clearInterval(interval);\n dispatch(setServerDiagStat(DiagStatError));\n };\n c.onclose = (event: ICloseEvent) => {\n clearInterval(interval);\n if (\n event.code === WSCloseInternalServerErr ||\n event.code === WSClosePolicyViolation ||\n event.code === WSCloseAbnormalClosure\n ) {\n // handle close with error\n console.log(\"connection closed by server with code:\", event.code);\n setMessage(\"An error occurred while getting the Diagnostic file.\");\n dispatch(setServerDiagStat(DiagStatError));\n } else {\n console.log(\"connection closed by server\");\n\n setMessage(\"Diagnostic file is ready to be downloaded.\");\n dispatch(setServerDiagStat(DiagStatSuccess));\n }\n };\n }\n } else {\n // reset start status\n setStartDiagnostic(false);\n }\n }, [startDiagnostic, dispatch]);\n\n const startDiagnosticAction = () => {\n if (!clusterRegistered) {\n navigate(\"/support/register\");\n return;\n }\n setStartDiagnostic(true);\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"health_info\"));\n }, [dispatch]);\n\n return (\n \n } />\n\n \n {!clusterRegistered && }\n \n \n \n \n

    {localMessage}

    \n \n {\" \"}\n {subnetResponse !== \"\" &&\n !subnetResponse.toLowerCase().includes(\"error\") && (\n \n \n Health report uploaded to SUBNET successfully!\n \n  {\" \"}\n \n See the results on your{\" \"}\n SUBNET Dashboard{\" \"}\n \n \n )}\n {(subnetResponse === \"\" ||\n subnetResponse.toLowerCase().includes(\"error\")) &&\n serverDiagnosticStatus === DiagStatSuccess && (\n \n \n Something went wrong uploading your Health report to\n SUBNET.\n \n  {\" \"}\n \n Log into your{\" \"}\n SUBNET Account to\n manually upload your Health report.\n \n \n )}\n
    \n {serverDiagnosticStatus === DiagStatInProgress ? (\n \n \n \n ) : (\n \n \n \n {serverDiagnosticStatus !== DiagStatError &&\n !downloadDisabled && (\n download()}\n disabled={downloadDisabled}\n label={\"Download\"}\n />\n )}\n \n \n \n \n \n \n )}\n \n \n \n \n {!startDiagnostic && clusterRegistered && (\n \n
    \n }\n help={\n \"If the Health report cannot be generated at this time, please wait a moment and try again.\"\n }\n />\n
    \n )}\n
    \n
    \n );\n};\n\nexport default HealthInfo;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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, breakPoints, Button, Grid, HelpBox, WarnIcon } from \"mds\";\n\ninterface IRegisterCluster {\n compactMode?: boolean;\n}\n\nconst RegisterCluster = ({ compactMode = false }: IRegisterCluster) => {\n const navigate = useNavigate();\n\n const redirectButton = (\n navigate(\"/support/register\")}\n >\n Register your Cluster\n \n );\n\n const registerMessage =\n \"Please use your MinIO Subscription Network login credentials to register this cluster and enable this feature.\";\n\n if (compactMode) {\n return (\n \n \n \n {registerMessage} {redirectButton}\n \n }\n iconComponent={}\n help={null}\n />\n \n
    \n
    \n );\n }\n\n return (\n \n \n \n \n Register your cluster\n \n \n \n \n \n \n {registerMessage}\n \n \n \n {redirectButton}\n \n \n \n \n \n \n \n );\n};\n\nexport default RegisterCluster;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\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 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","var naiveFallback = function () {\n\tif (typeof self === \"object\" && self) return self;\n\tif (typeof window === \"object\" && window) return window;\n\tthrow new Error(\"Unable to resolve global `this`\");\n};\n\nmodule.exports = (function () {\n\tif (this) return this;\n\n\t// Unexpected strict mode (may happen if e.g. bundled into ESM module)\n\n\t// Fallback to standard globalThis if available\n\tif (typeof globalThis === \"object\" && globalThis) return globalThis;\n\n\t// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis\n\t// In all ES5+ engines global object inherits from Object.prototype\n\t// (if you approached one that doesn't please report)\n\ttry {\n\t\tObject.defineProperty(Object.prototype, \"__global__\", {\n\t\t\tget: function () { return this; },\n\t\t\tconfigurable: true\n\t\t});\n\t} catch (error) {\n\t\t// Unfortunate case of updates to Object.prototype being restricted\n\t\t// via preventExtensions, seal or freeze\n\t\treturn naiveFallback();\n\t}\n\ttry {\n\t\t// Safari case (window.__global__ works, but __global__ does not)\n\t\tif (!__global__) return naiveFallback();\n\t\treturn __global__;\n\t} finally {\n\t\tdelete Object.prototype.__global__;\n\t}\n})();\n","var _globalThis;\nif (typeof globalThis === 'object') {\n\t_globalThis = globalThis;\n} else {\n\ttry {\n\t\t_globalThis = require('es5-ext/global');\n\t} catch (error) {\n\t} finally {\n\t\tif (!_globalThis && typeof window !== 'undefined') { _globalThis = window; }\n\t\tif (!_globalThis) { throw new Error('Could not determine global this'); }\n\t}\n}\n\nvar NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;\nvar websocket_version = require('./version');\n\n\n/**\n * Expose a W3C WebSocket class with just one or two arguments.\n */\nfunction W3CWebSocket(uri, protocols) {\n\tvar native_instance;\n\n\tif (protocols) {\n\t\tnative_instance = new NativeWebSocket(uri, protocols);\n\t}\n\telse {\n\t\tnative_instance = new NativeWebSocket(uri);\n\t}\n\n\t/**\n\t * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket\n\t * class). Since it is an Object it will be returned as it is when creating an\n\t * instance of W3CWebSocket via 'new W3CWebSocket()'.\n\t *\n\t * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2\n\t */\n\treturn native_instance;\n}\nif (NativeWebSocket) {\n\t['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) {\n\t\tObject.defineProperty(W3CWebSocket, prop, {\n\t\t\tget: function() { return NativeWebSocket[prop]; }\n\t\t});\n\t});\n}\n\n/**\n * Module exports.\n */\nmodule.exports = {\n 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null,\n 'version' : websocket_version\n};\n","module.exports = require('../package.json').version;\n"],"names":["DiagStatError","DiagStatSuccess","DiagStatInProgress","_ref","title","children","_useState","useState","_useState2","_slicedToArray","version","setVersion","_useState3","_useState4","totalNodes","setTotalNodes","_useState5","_useState6","totalDrives","setTotalDrives","_useState7","_useState8","loading","setLoading","useEffect","api","admin","adminInfo","defaultOnly","then","res","_res$data$servers","totalServers","data","servers","length","reduce","prevTotal","currentElement","drives","catch","_jsxs","Grid","item","xs","_jsx","SectionTitle","separator","sx","padding","marginBottom","container","Fragment","textAlign","Loader","style","width","height","md","fontSize","display","alignItems","marginRight","DrivesIcon","justifyContent","alignSelf","VersionIcon","dispatch","useAppDispatch","navigate","useNavigate","message","useSelector","state","healthInfo","serverDiagnosticStatus","system","startDiagnostic","setStartDiagnostic","downloadDisabled","setDownloadDisabled","localMessage","setMessage","buttonStartText","setButtonStartText","_useState9","_useState10","setTitle","_useState11","_useState12","diagFileContent","setDiagFileContent","_useState13","_useState14","subnetResponse","setSubnetResponse","clusterRegistered","registeredCluster","healthInfoResetMessage","url","URL","window","location","toString","port","wsProt","wsProtocol","protocol","baseUrl","document","baseURI","pathname","c","W3CWebSocket","concat","hostname","interval","onopen","console","log","send","setInterval","setServerDiagStat","onmessage","m","JSON","parse","serverHealthInfo","timestamp","Date","healthInfoMessageReceived","encoded","onerror","error","close","clearInterval","onclose","event","code","WSCloseInternalServerErr","WSClosePolicyViolation","WSCloseAbnormalClosure","setHelpName","PageHeaderWrapper","label","actions","HelpMenu","PageLayout","RegisterCluster","compactMode","Box","withBorders","TestWrapper","gap","toLowerCase","includes","href","paddingTop","paddingLeft","Button","id","type","variant","onClick","element","createElement","setAttribute","body","appendChild","click","removeChild","download","disabled","HelpBox","iconComponent","InfoIcon","help","_ref$compactMode","redirectButton","color","registerMessage","flexGrow","WarnIcon","_defineProperty","border","flexFlow","breakPoints","sm","fontWeight","marginLeft","flex","marginTop","naiveFallback","self","Error","module","exports","this","globalThis","Object","defineProperty","prototype","get","configurable","__global__","_globalThis","require","NativeWebSocket","WebSocket","MozWebSocket","websocket_version","uri","protocols","forEach","prop"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/51.d010edb2.chunk.js b/portal-ui/build/static/js/51.872b251a.chunk.js similarity index 99% rename from portal-ui/build/static/js/51.d010edb2.chunk.js rename to portal-ui/build/static/js/51.872b251a.chunk.js index 5501b373ce..f7fd6030b8 100644 --- a/portal-ui/build/static/js/51.d010edb2.chunk.js +++ b/portal-ui/build/static/js/51.872b251a.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[51],{51:function(e,n,t){t.r(n),t.d(n,{default:function(){return N}});var i=t(29439),r=t(72791),a=t(26181),o=t.n(a),s=t(29945),l=t(78687),c=t(31776),u=t(38442),d=t(56087),x=t(9859),p=t(57689),f=t(87995),h=t(81551),v=t(82342),y=t(23508),m=t(80184),g=function(e){var n=e.onCloseAndRefresh,t=e.deleteOpen,a=e.bucket,o=e.id,l=(0,h.TL)(),u=(0,r.useState)(!1),d=(0,i.Z)(u,2),x=d[0],p=d[1];(0,r.useEffect)((function(){x&&c.h.buckets.deleteBucketLifecycleRule(a,o).then((function(){p(!1),n(!0)})).catch((function(e){p(!1),l((0,f.Ih)((0,v.g)(e.error)))}))}),[x,a,o,n,l]);return(0,m.jsx)(y.Z,{title:"Delete Lifecycle Rule",confirmText:"Delete",isOpen:t,isLoading:x,onConfirm:function(){p(!0)},titleIcon:(0,m.jsx)(s.NvT,{}),onClose:function(){return n(!1)},confirmationContent:(0,m.jsxs)(r.Fragment,{children:["Are you sure you want to delete the ",(0,m.jsx)("strong",{children:o})," rule?"]})})},j=t(1413),b=t(89673),_=t(55818),Z=t(20890),C=t(3721),S=t(23814),k=t(56028),F=t(17420),E=function(e){var n,t,a,l,u,d=e.closeModalAndRefresh,x=e.selectedBucket,p=e.lifecycleRule,v=e.open,y=(0,h.TL)(),g=(0,r.useState)(!0),E=(0,i.Z)(g,2),T=E[0],I=E[1],L=(0,r.useState)(!1),O=(0,i.Z)(L,2),N=O[0],A=O[1],P=(0,r.useState)(""),R=(0,i.Z)(P,2),w=R[0],z=R[1],B=(0,r.useState)(!1),V=(0,i.Z)(B,2),D=V[0],W=V[1],M=(0,r.useState)([]),Y=(0,i.Z)(M,2),K=Y[0],U=Y[1],G=(0,r.useState)(""),Q=(0,i.Z)(G,2),$=Q[0],q=Q[1],H=(0,r.useState)(""),X=(0,i.Z)(H,2),J=X[0],ee=X[1],ne=(0,r.useState)(""),te=(0,i.Z)(ne,2),ie=te[0],re=te[1],ae=(0,r.useState)(!1),oe=(0,i.Z)(ae,2),se=oe[0],le=oe[1],ce=(0,r.useState)("0"),ue=(0,i.Z)(ce,2),de=ue[0],xe=ue[1],pe=(0,r.useState)("0"),fe=(0,i.Z)(pe,2),he=fe[0],ve=fe[1],ye=(0,r.useState)("expiry"),me=(0,i.Z)(ye,2),ge=me[0],je=me[1],be=(0,r.useState)("0"),_e=(0,i.Z)(be,2),Ze=_e[0],Ce=_e[1],Se=(0,r.useState)("0"),ke=(0,i.Z)(Se,2),Fe=ke[0],Ee=ke[1],Te=(0,r.useState)(!1),Ie=(0,i.Z)(Te,2),Le=Ie[0],Oe=Ie[1],Ne={"& .MuiPaper-root":{padding:0}};(0,r.useEffect)((function(){T&&c.h.admin.tiersList().then((function(e){var n=o()(e.data,"items",[]);if(null!==n&&n.length>=1){var t=n.map((function(e){var n=e.type,t=o()(e,"".concat(n,".name"),"");return{label:t,value:t}}));U(t),t.length>0&&ee(t[0].value)}I(!1)})).catch((function(){I(!1)}))}),[T]),(0,r.useEffect)((function(){var e=!0;"expiry"!==ge&&""===J&&(e=!1),Oe(e)}),[ge,Ze,Fe,J]),(0,r.useEffect)((function(){var e;"Enabled"===p.status&&W(!0);var n,t,i,r,a,o,s=!1;(p.transition&&(p.transition.days&&0!==p.transition.days&&(Ee(p.transition.days.toString()),je("transition"),s=!0),p.transition.noncurrent_transition_days&&0!==p.transition.noncurrent_transition_days&&(ve(p.transition.noncurrent_transition_days.toString()),je("transition"),s=!0),p.transition.date&&"0001-01-01T00:00:00Z"!==p.transition.date&&(je("transition"),s=!0)),p.expiration&&(p.expiration.days&&0!==p.expiration.days&&(Ce(p.expiration.days.toString()),je("expiry"),s=!1),p.expiration.noncurrent_expiration_days&&0!==p.expiration.noncurrent_expiration_days&&(xe(p.expiration.noncurrent_expiration_days.toString()),je("expiry"),s=!1),p.expiration.date&&"0001-01-01T00:00:00Z"!==p.expiration.date&&(je("expiry"),s=!1)),s)?(ee((null===(n=p.transition)||void 0===n?void 0:n.storage_class)||""),ve((null===(t=p.transition)||void 0===t||null===(i=t.noncurrent_transition_days)||void 0===i?void 0:i.toString())||"0"),re((null===(r=p.transition)||void 0===r?void 0:r.noncurrent_storage_class)||"")):xe((null===(a=p.expiration)||void 0===a||null===(o=a.noncurrent_expiration_days)||void 0===o?void 0:o.toString())||"0");if(le(!(null===(e=p.expiration)||void 0===e||!e.delete_marker)),q(p.prefix||""),p.tags){var l=p.tags.reduce((function(e,n,t){return"".concat(e).concat(0!==t?"&":"").concat(n.key,"=").concat(n.value)}),"");z(l)}}),[p]);var Ae="";return p.expiration&&(p.expiration.days>0?Ae="Current Version":p.expiration.noncurrent_expiration_days&&(Ae="Non-Current Version")),p.transition&&(p.transition.days>0?Ae="Current Version":p.transition.noncurrent_transition_days&&(Ae="Non-Current Version")),(0,m.jsx)(k.Z,{onClose:function(){d(!1)},modalOpen:v,title:"Edit Lifecycle Configuration",titleIcon:(0,m.jsx)(s.QIv,{}),children:(0,m.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){if(e.preventDefault(),!N&&(A(!0),null!==x&&null!==p)){var n={};if("expiry"===ge){var t,i,r,a={};null!==(t=p.expiration)&&void 0!==t&&t.days&&(null===(i=p.expiration)||void 0===i?void 0:i.days)>0&&(a.expiry_days=parseInt(Ze)),null!==(r=p.expiration)&&void 0!==r&&r.noncurrent_expiration_days&&(a.noncurrentversion_expiration_days=parseInt(de)),n=(0,j.Z)({},a)}else{var o,s,l,u={};null!==(o=p.expiration)&&void 0!==o&&o.days&&(null===(s=p.expiration)||void 0===s?void 0:s.days)>0&&(u.transition_days=parseInt(Ze),u.storage_class=J),null!==(l=p.expiration)&&void 0!==l&&l.noncurrent_expiration_days&&(u.noncurrentversion_transition_days=parseInt(de),u.noncurrentversion_transition_storage_class=ie),n=(0,j.Z)({},u)}var h=(0,j.Z)({type:ge,disable:!D,prefix:$,tags:w,expired_object_delete_marker:se},n);c.h.buckets.updateBucketLifecycle(x,p.id,h).then((function(e){A(!1),d(!0)})).catch((function(e){A(!1),y((0,f.zb)(e))}))}}(e)},children:(0,m.jsxs)(s.ltY,{containerPadding:!1,withBorders:!1,children:[(0,m.jsx)(s.rsf,{label:"Status",indicatorLabels:["Enabled","Disabled"],checked:D,value:"user_enabled",id:"rule_status",name:"rule_status",onChange:function(e){W(e.target.checked)}}),(0,m.jsx)(s.Wzg,{id:"id",name:"id",label:"Id",value:p.id,onChange:function(){},disabled:!0}),(0,m.jsx)(s.Eep,{currentValue:ge,id:"rule_type",name:"rule_type",label:"Rule Type",selectorOptions:[{value:"expiry",label:"Expiry"},{value:"transition",label:"Transition"}],onChange:function(){},disableOptions:!0}),(0,m.jsx)(s.Wzg,{id:"object-version",name:"object-version",label:"Object Version",value:Ae,onChange:function(){},disabled:!0}),"expiry"===ge&&(null===(n=p.expiration)||void 0===n?void 0:n.days)&&(0,m.jsx)(s.Wzg,{type:"number",id:"expiry_days",name:"expiry_days",onChange:function(e){Ce(e.target.value)},label:"Expiry Days",value:Ze,min:"0"}),"expiry"===ge&&(null===(t=p.expiration)||void 0===t?void 0:t.noncurrent_expiration_days)&&(0,m.jsx)(s.Wzg,{type:"number",id:"noncurrentversion_expiration_days",name:"noncurrentversion_expiration_days",onChange:function(e){xe(e.target.value)},label:"Non-current Expiration Days",value:de,min:"0"}),"transition"===ge&&(null===(a=p.transition)||void 0===a?void 0:a.days)&&(0,m.jsxs)(r.Fragment,{children:[(0,m.jsx)(s.Wzg,{type:"number",id:"transition_days",name:"transition_days",onChange:function(e){Ee(e.target.value)},label:"Transition Days",value:Fe,min:"0"}),(0,m.jsx)(s.PhF,{label:"Storage Class",id:"storage_class",name:"storage_class",value:J,onChange:function(e){ee(e)},options:K})]}),"transition"===ge&&(null===(l=p.transition)||void 0===l?void 0:l.noncurrent_transition_days)&&(0,m.jsxs)(r.Fragment,{children:[(0,m.jsx)(s.Wzg,{type:"number",id:"noncurrentversion_transition_days",name:"noncurrentversion_transition_days",onChange:function(e){ve(e.target.value)},label:"Non-current Transition Days",value:he,min:"0"}),(0,m.jsx)(s.Wzg,{id:"noncurrentversion_t_SC",name:"noncurrentversion_t_SC",onChange:function(e){re(e.target.value)},placeholder:"Set Non-current Version Transition Storage Class",label:"Non-current Version Transition Storage Class",value:ie})]}),(0,m.jsx)(s.rjZ,{item:!0,xs:12,sx:Ne,children:(0,m.jsxs)(b.Z,{children:[(0,m.jsx)(_.Z,{children:(0,m.jsx)(Z.Z,{children:"Filters"})}),(0,m.jsxs)(C.Z,{children:[(0,m.jsx)(s.Wzg,{id:"prefix",name:"prefix",onChange:function(e){q(e.target.value)},label:"Prefix",value:$}),(0,m.jsx)(F.Z,{name:"tags",label:"Tags",elements:w,onChange:function(e){z(e)},keyPlaceholder:"Tag Key",valuePlaceholder:"Tag Value",withBorder:!0})]})]})}),"expiry"===ge&&(null===(u=p.expiration)||void 0===u?void 0:u.noncurrent_expiration_days)&&(0,m.jsx)(s.rjZ,{item:!0,xs:12,sx:Ne,children:(0,m.jsxs)(b.Z,{children:[(0,m.jsx)(_.Z,{children:(0,m.jsx)(Z.Z,{children:"Advanced"})}),(0,m.jsx)(C.Z,{children:(0,m.jsx)(s.rsf,{value:"expired_delete_marker",id:"expired_delete_marker",name:"expired_delete_marker",checked:se,onChange:function(e){le(e.target.checked)},label:"Expired Object Delete Marker"})})]})}),(0,m.jsxs)(s.rjZ,{item:!0,xs:12,sx:S.ID.modalButtonBar,children:[(0,m.jsx)(s.zxk,{id:"cancel",type:"button",variant:"regular",disabled:N,onClick:function(){d(!1)},label:"Cancel"}),(0,m.jsx)(s.zxk,{id:"save",type:"submit",variant:"callAction",color:"primary",disabled:N||!Le,label:"Save"})]}),N&&(0,m.jsx)(s.rjZ,{item:!0,xs:12,children:(0,m.jsx)(s.kod,{})})]})})})},T=t(84741),I=t(81159),L=function(e){var n=e.open,t=e.closeModalAndRefresh,a=e.bucketName,u=(0,h.TL)(),d=(0,l.v9)(f.N5),x=(0,r.useState)(!0),p=(0,i.Z)(x,2),y=p[0],g=p[1],E=(0,r.useState)([]),L=(0,i.Z)(E,2),O=L[0],N=L[1],A=(0,r.useState)(!1),P=(0,i.Z)(A,2),R=P[0],w=P[1],z=(0,r.useState)(null),B=(0,i.Z)(z,2),V=B[0],D=B[1],W=(0,r.useState)(""),M=(0,i.Z)(W,2),Y=M[0],K=M[1],U=(0,r.useState)(""),G=(0,i.Z)(U,2),Q=G[0],$=G[1],q=(0,r.useState)(""),H=(0,i.Z)(q,2),X=H[0],J=H[1],ee=(0,r.useState)("expiry"),ne=(0,i.Z)(ee,2),te=ne[0],ie=ne[1],re=(0,r.useState)("current"),ae=(0,i.Z)(re,2),oe=ae[0],se=ae[1],le=(0,r.useState)(""),ce=(0,i.Z)(le,2),ue=ce[0],de=ce[1],xe=(0,r.useState)(!1),pe=(0,i.Z)(xe,2),fe=pe[0],he=pe[1],ve=(0,r.useState)(!1),ye=(0,i.Z)(ve,2),me=ye[0],ge=ye[1],je=(0,r.useState)(!0),be=(0,i.Z)(je,2),_e=be[0],Ze=be[1],Ce={"& .MuiPaper-root":{padding:0}};(0,r.useEffect)((function(){y&&c.h.admin.tiersList().then((function(e){var n=o()(e.data,"items",[]);if(null!==n&&n.length>=1){var t=n.map((function(e){var n=e.type,t=o()(e,"".concat(n,".name"),"");return{label:t,value:t}}));N(t),t.length>0&&J(t[0].value)}g(!1)})).catch((function(){g(!1)}))}),[y]),(0,r.useEffect)((function(){var e=!0;"expiry"!==te&&""===X&&(e=!1),he(e)}),[te,ue,X]),(0,r.useEffect)((function(){_e&&d&&c.h.buckets.getBucketVersioning(a).then((function(e){D(e.data),Ze(!1)})).catch((function(e){u((0,f.zb)((0,v.g)(e))),Ze(!1)}))}),[_e,u,a,d]);return(0,m.jsxs)(k.Z,{modalOpen:n,onClose:function(){t(!1)},title:"Add Lifecycle Rule",titleIcon:(0,m.jsx)(s.QIv,{}),children:[y&&(0,m.jsx)(s.rjZ,{container:!0,children:(0,m.jsx)(s.rjZ,{item:!0,xs:12,children:(0,m.jsx)(s.kod,{})})}),!y&&(0,m.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),w(!0),function(){var e={};if("expiry"===te){var n={};"current"===oe?n.expiry_days=parseInt(ue):n.noncurrentversion_expiration_days=parseInt(ue),e=(0,j.Z)({},n)}else{var i={};"current"===oe?(i.transition_days=parseInt(ue),i.storage_class=X):(i.noncurrentversion_transition_days=parseInt(ue),i.noncurrentversion_transition_storage_class=X),e=(0,j.Z)({},i)}var r=(0,j.Z)({type:te,prefix:Y,tags:Q,expired_object_delete_marker:me},e);c.h.buckets.addBucketLifecycle(a,r).then((function(){w(!1),t(!0)})).catch((function(e){w(!1),u((0,f.zb)((0,v.g)(e)))}))}()},children:(0,m.jsxs)(s.ltY,{withBorders:!1,containerPadding:!1,children:[(0,m.jsx)(s.Eep,{currentValue:te,id:"ilm_type",name:"ilm_type",label:"Type of lifecycle",onChange:function(e){ie(e.target.value)},selectorOptions:[{value:"expiry",label:"Expiry"},{value:"transition",label:"Transition"}]}),"Enabled"===(null===V||void 0===V?void 0:V.status)&&(0,m.jsx)(s.PhF,{value:oe,id:"object_version",name:"object_version",label:"Object Version",onChange:function(e){se(e)},options:[{value:"current",label:"Current Version"},{value:"noncurrent",label:"Non-Current Version"}]}),(0,m.jsx)(s.Wzg,{id:"expiry_days",name:"expiry_days",onChange:function(e){e.target.validity.valid&&de(e.target.value)},pattern:"[0-9]*",label:"After",value:ue,overlayObject:(0,m.jsx)(T.Z,{id:"expire-current-unit",unitSelected:"days",unitsList:[{label:"Days",value:"days"}],disabled:!0})}),"expiry"===te?(0,m.jsx)(r.Fragment,{}):(0,m.jsx)(s.PhF,{label:"To Tier",id:"storage_class",name:"storage_class",value:X,onChange:function(e){J(e)},options:O}),(0,m.jsx)(s.rjZ,{item:!0,xs:12,sx:Ce,children:(0,m.jsxs)(b.Z,{children:[(0,m.jsx)(_.Z,{children:(0,m.jsx)(Z.Z,{children:"Filters"})}),(0,m.jsxs)(C.Z,{children:[(0,m.jsx)(s.rjZ,{item:!0,xs:12,children:(0,m.jsx)(s.Wzg,{id:"prefix",name:"prefix",onChange:function(e){K(e.target.value)},label:"Prefix",value:Y})}),(0,m.jsx)(s.rjZ,{item:!0,xs:12,children:(0,m.jsx)(F.Z,{name:"tags",label:"Tags",elements:"",onChange:function(e){$(e)},keyPlaceholder:"Tag Key",valuePlaceholder:"Tag Value",withBorder:!0})})]})]})}),"expiry"===te&&"noncurrent"===oe&&(0,m.jsx)(s.rjZ,{item:!0,xs:12,sx:Ce,children:(0,m.jsxs)(b.Z,{children:[(0,m.jsx)(_.Z,{children:(0,m.jsx)(Z.Z,{children:"Advanced"})}),(0,m.jsx)(C.Z,{children:(0,m.jsx)(s.rjZ,{item:!0,xs:12,children:(0,m.jsx)(I.Z,{value:"expired_delete_marker",id:"expired_delete_marker",name:"expired_delete_marker",checked:me,onChange:function(e){ge(e.target.checked)},label:"Expire Delete Marker",description:"Remove the reference to the object if no versions are left"})})})]})}),(0,m.jsxs)(s.rjZ,{item:!0,xs:12,sx:S.ID.modalButtonBar,children:[(0,m.jsx)(s.zxk,{id:"reset",type:"button",variant:"regular",disabled:R,onClick:function(){t(!1)},label:"Cancel"}),(0,m.jsx)(s.zxk,{id:"save-lifecycle",type:"submit",variant:"callAction",color:"primary",disabled:R||!fe,label:"Save"})]}),R&&(0,m.jsx)(s.rjZ,{item:!0,xs:12,children:(0,m.jsx)(s.kod,{})})]})})]})},O=t(27454),N=function(){var e=(0,l.v9)(x.HQ),n=(0,p.UO)(),t=(0,r.useState)(!0),a=(0,i.Z)(t,2),v=a[0],y=a[1],j=(0,r.useState)([]),b=(0,i.Z)(j,2),_=b[0],Z=b[1],C=(0,r.useState)(!1),S=(0,i.Z)(C,2),k=S[0],F=S[1],T=(0,r.useState)(!1),I=(0,i.Z)(T,2),N=I[0],A=I[1],P=(0,r.useState)(null),R=(0,i.Z)(P,2),w=R[0],z=R[1],B=(0,r.useState)(!1),V=(0,i.Z)(B,2),D=V[0],W=V[1],M=(0,r.useState)(null),Y=(0,i.Z)(M,2),K=Y[0],U=Y[1],G=(0,h.TL)(),Q=n.bucketName||"",$=(0,u.F)(Q,[d.Ft.S3_GET_LIFECYCLE_CONFIGURATION,d.Ft.S3_GET_ACTIONS]);(0,r.useEffect)((function(){e&&y(!0)}),[e,y]),(0,r.useEffect)((function(){G((0,f.Sc)("bucket_detail_lifecycle"))}),[]),(0,r.useEffect)((function(){v&&($?c.h.buckets.getBucketLifecycle(Q).then((function(e){var n=o()(e.data,"lifecycle",[]);Z(n||[]),y(!1)})).catch((function(e){console.error(e.error),Z([]),y(!1)})):y(!1))}),[v,y,Q,$]);var q=[{label:"Type",renderFullObject:!0,renderFunction:function(e){return e?e.expiration&&(e.expiration.days>0||e.expiration.noncurrent_expiration_days)?(0,m.jsx)("span",{children:"Expiry"}):e.transition&&(e.transition.days>0||e.transition.noncurrent_transition_days)?(0,m.jsx)("span",{children:"Transition"}):(0,m.jsx)(r.Fragment,{}):(0,m.jsx)(r.Fragment,{})}},{label:"Version",renderFullObject:!0,renderFunction:function(e){if(!e)return(0,m.jsx)(r.Fragment,{});if(e.expiration){if(e.expiration.days>0)return(0,m.jsx)("span",{children:"Current"});if(e.expiration.noncurrent_expiration_days)return(0,m.jsx)("span",{children:"Non-Current"})}if(e.transition){if(e.transition.days>0)return(0,m.jsx)("span",{children:"Current"});if(e.transition.noncurrent_transition_days)return(0,m.jsx)("span",{children:"Non-Current"})}}},{label:"Tier",elementKey:"storage_class",renderFunction:function(e){var n=o()(e,"transition.storage_class","");return n=o()(e,"transition.noncurrent_storage_class",n)},renderFullObject:!0},{label:"Prefix",elementKey:"prefix"},{label:"After",renderFullObject:!0,renderFunction:function(e){if(!e)return(0,m.jsx)(r.Fragment,{});if(e.expiration){if(e.expiration.days>0)return(0,m.jsxs)("span",{children:[e.expiration.days," days"]});if(e.expiration.noncurrent_expiration_days)return(0,m.jsxs)("span",{children:[e.expiration.noncurrent_expiration_days," days"]})}if(e.transition){if(e.transition.days>0)return(0,m.jsxs)("span",{children:[e.transition.days," days"]});if(e.transition.noncurrent_transition_days)return(0,m.jsxs)("span",{children:[e.transition.noncurrent_transition_days," days"]})}}},{label:"Status",elementKey:"status"}],H=[{type:"view",onClick:function(e){z(e),A(!0)}},{type:"delete",onClick:function(e){U(e),W(!0)},sendOnlyId:!0}];return(0,m.jsxs)(r.Fragment,{children:[N&&w&&(0,m.jsx)(E,{open:N,closeModalAndRefresh:function(e){A(!1),z(null),e&&y(!0)},selectedBucket:Q,lifecycleRule:w}),k&&(0,m.jsx)(L,{open:k,bucketName:Q,closeModalAndRefresh:function(e){F(!1),e&&y(!0)}}),D&&K&&(0,m.jsx)(g,{id:K,bucket:Q,deleteOpen:D,onCloseAndRefresh:function(e){W(!1),U(null),e&&y(!0)}}),(0,m.jsx)(s.NZf,{separator:!0,sx:{marginBottom:15},actions:(0,m.jsx)(u.s,{scopes:[d.Ft.S3_PUT_LIFECYCLE_CONFIGURATION,d.Ft.S3_PUT_ACTIONS],resource:Q,matchAll:!0,errorProps:{disabled:!0},children:(0,m.jsx)(O.Z,{tooltip:"Add Lifecycle Rule",children:(0,m.jsx)(s.zxk,{id:"add-bucket-lifecycle-rule",onClick:function(){F(!0)},label:"Add Lifecycle Rule",icon:(0,m.jsx)(s.dtP,{}),variant:"callAction"})})}),children:"Lifecycle Rules"}),(0,m.jsxs)(s.rjZ,{container:!0,children:[(0,m.jsx)(s.rjZ,{item:!0,xs:12,children:(0,m.jsx)(u.s,{scopes:[d.Ft.S3_GET_LIFECYCLE_CONFIGURATION,d.Ft.S3_GET_ACTIONS],resource:Q,errorProps:{disabled:!0},children:(0,m.jsx)(s.wQF,{itemActions:H,columns:q,isLoading:v,records:_,entityName:"Lifecycle",customEmptyMessage:"There are no Lifecycle rules yet",idField:"id",customPaperHeight:"400px"})})}),!v&&(0,m.jsxs)(s.rjZ,{item:!0,xs:12,children:[(0,m.jsx)("br",{}),(0,m.jsx)(s.KfX,{title:"Lifecycle Rules",iconComponent:(0,m.jsx)(s.y2Y,{}),help:(0,m.jsxs)(r.Fragment,{children:["MinIO Object Lifecycle Management allows creating rules for time or date based automatic transition or expiry of objects. For object transition, MinIO automatically moves the object to a configured remote storage tier.",(0,m.jsx)("br",{}),(0,m.jsx)("br",{}),"You can learn more at our"," ",(0,m.jsx)("a",{href:"https://min.io/docs/minio/linux/administration/object-management/object-lifecycle-management.html?ref=con",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})]})]})]})}},81159:function(e,n,t){var i=t(4942),r=t(1413),a=t(72791),o=t(11135),s=t(25787),l=t(9955),c=t(30829),u=t(20068),d=t(20890),x=t(61889),p=t(23814),f=t(29945),h=t(63733),v=t(80184),y=(0,s.Z)((function(e){return{root:{width:50,height:24,padding:0,margin:0},switchBase:{padding:1,"&$checked":{transform:"translateX(24px)",color:e.palette.common.white,"& + $track":{backgroundColor:"#4CCB92",boxShadow:"inset 0px 1px 4px rgba(0,0,0,0.1)",opacity:1,border:"none"}},"&$focusVisible $thumb":{color:"#4CCB92",border:"6px solid #fff"}},thumb:{width:22,height:22,backgroundColor:"#FAFAFA",border:"2px solid #FFFFFF",marginLeft:1},track:{borderRadius:12,backgroundColor:"#E2E2E2",boxShadow:"inset 0px 1px 4px rgba(0,0,0,0.1)",opacity:1,transition:e.transitions.create(["background-color","border"])},checked:{},focusVisible:{},switchContainer:{display:"flex",alignItems:"center",justifyContent:"flex-end"}}}))(l.Z);n.Z=(0,s.Z)((function(e){return(0,o.Z)((0,r.Z)((0,r.Z)({indicatorLabelOn:{fontWeight:"bold",color:"#081C42 !important"},indicatorLabel:{fontSize:12,color:"#E2E2E2",margin:"0 8px 0 10px"},fieldDescription:{marginTop:4,color:"#999999"},tooltip:{fontSize:16}},p.OR),p.YI))}))((function(e){var n=e.label,t=void 0===n?"":n,o=e.onChange,s=e.value,l=e.id,p=e.name,m=e.checked,g=void 0!==m&&m,j=e.disabled,b=void 0!==j&&j,_=e.switchOnly,Z=void 0!==_&&_,C=e.tooltip,S=void 0===C?"":C,k=e.description,F=void 0===k?"":k,E=e.classes,T=e.indicatorLabels,I=e.extraInputProps,L=void 0===I?{}:I,O=(0,v.jsxs)(a.Fragment,{children:[!Z&&(0,v.jsx)("span",{className:(0,h.Z)(E.indicatorLabel,(0,i.Z)({},E.indicatorLabelOn,!g)),children:T&&T.length>1?T[1]:"OFF"}),(0,v.jsx)(y,{checked:g,onChange:o,color:"primary",name:p,inputProps:(0,r.Z)({"aria-label":"primary checkbox"},L),disabled:b,disableRipple:!0,disableFocusRipple:!0,disableTouchRipple:!0,value:s,id:l}),!Z&&(0,v.jsx)("span",{className:(0,h.Z)(E.indicatorLabel,(0,i.Z)({},E.indicatorLabelOn,g)),children:T?T[0]:"ON"})]});return Z?O:(0,v.jsx)("div",{children:(0,v.jsxs)(x.ZP,{container:!0,alignItems:"center",children:[(0,v.jsx)(x.ZP,{item:!0,xs:12,sm:8,md:8,children:""!==t&&(0,v.jsxs)(c.Z,{htmlFor:l,className:E.inputLabel,children:[(0,v.jsx)("span",{children:t}),""!==S&&(0,v.jsx)("div",{className:E.tooltipContainer,children:(0,v.jsx)(u.Z,{title:S,placement:"top-start",children:(0,v.jsx)("div",{className:E.tooltip,children:(0,v.jsx)(f.byK,{})})})})]})}),(0,v.jsx)(x.ZP,{item:!0,xs:12,sm:""!==t?4:12,md:""!==t?4:12,textAlign:"right",justifyContent:"end",className:E.switchContainer,children:O}),""!==F&&(0,v.jsx)(x.ZP,{item:!0,xs:12,textAlign:"left",children:(0,v.jsx)(d.Z,{component:"p",className:E.fieldDescription,children:F})})]})})}))},84741:function(e,n,t){var i=t(29439),r=t(72791),a=t(11135),o=t(25787),s=t(80911),l=t(77865),c=t(80184);n.Z=(0,o.Z)((function(e){return(0,a.Z)({buttonTrigger:{border:"#F0F2F2 1px solid",borderRadius:3,color:"#838383",backgroundColor:"#fff",fontSize:12}})}))((function(e){var n=e.classes,t=e.id,a=e.unitSelected,o=e.unitsList,u=e.disabled,d=void 0!==u&&u,x=e.onUnitChange,p=r.useState(null),f=(0,i.Z)(p,2),h=f[0],v=f[1],y=Boolean(h),m=function(e){v(null),""!==e&&x&&x(e)};return(0,c.jsxs)(r.Fragment,{children:[(0,c.jsx)("button",{id:"".concat(t,"-button"),"aria-controls":"".concat(t,"-menu"),"aria-haspopup":"true","aria-expanded":y?"true":void 0,onClick:function(e){v(e.currentTarget)},className:n.buttonTrigger,disabled:d,type:"button",children:a}),(0,c.jsx)(s.Z,{id:"".concat(t,"-menu"),"aria-labelledby":"".concat(t,"-button"),anchorEl:h,open:y,onClose:function(){m("")},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},children:o.map((function(e){return(0,c.jsx)(l.Z,{onClick:function(){return m(e.value)},children:e.label},"itemUnit-".concat(e.value,"-").concat(e.label))}))})]})}))},17420:function(e,n,t){var i=t(93433),r=t(29439),a=t(72791),o=t(26181),s=t.n(o),l=t(48573),c=t.n(l),u=t(29945),d=t(80184);n.Z=function(e){var n=e.elements,t=e.name,o=e.label,l=e.tooltip,x=void 0===l?"":l,p=e.keyPlaceholder,f=void 0===p?"":p,h=e.valuePlaceholder,v=void 0===h?"":h,y=e.onChange,m=e.withBorder,g=void 0!==m&&m,j=(0,a.useState)([""]),b=(0,r.Z)(j,2),_=b[0],Z=b[1],C=(0,a.useState)([""]),S=(0,r.Z)(C,2),k=S[0],F=S[1],E=(0,a.createRef)();(0,a.useEffect)((function(){if(1===_.length&&""===_[0]&&1===k.length&&""===k[0]&&n&&""!==n){var e=n.split("&"),t=[],i=[];e.forEach((function(e){var n=e.split("=");2===n.length&&(t.push(n[0]),i.push(n[1]))})),t.push(""),i.push(""),Z(t),F(i)}}),[_,k,n]),(0,a.useEffect)((function(){var e=E.current;e&&_.length>1&&e.scrollIntoView(!1)}),[_]);var T=(0,a.useRef)(!0);(0,a.useLayoutEffect)((function(){T.current?T.current=!1:O()}),[_,k]);var I=function(e){e.persist();var n=(0,i.Z)(_),t=s()(e.target,"dataset.index","0");n[parseInt(t)]=e.target.value,Z(n)},L=function(e){e.persist();var n=(0,i.Z)(k),t=s()(e.target,"dataset.index","0");n[parseInt(t)]=e.target.value,F(n)},O=c()((function(){var e="";_.forEach((function(n,t){if(_[t]&&k[t]){var i="".concat(n,"=").concat(k[t]);0!==t&&(i="&".concat(i)),e="".concat(e).concat(i)}})),y(e)}),500),N=k.map((function(e,n){return(0,d.jsxs)(u.rjZ,{item:!0,xs:12,className:"lineInputBoxes inputItem",children:[(0,d.jsx)(u.Wzg,{id:"".concat(t,"-key-").concat(n.toString()),label:"",name:"".concat(t,"-").concat(n.toString()),value:_[n],onChange:I,index:n,placeholder:f}),(0,d.jsx)("span",{className:"queryDiv",children:":"}),(0,d.jsx)(u.Wzg,{id:"".concat(t,"-value-").concat(n.toString()),label:"",name:"".concat(t,"-").concat(n.toString()),value:k[n],onChange:L,index:n,placeholder:v,overlayIcon:n===k.length-1?(0,d.jsx)(u.dtP,{}):null,overlayAction:function(){!function(){if(""!==_[_.length-1].trim()&&""!==k[k.length-1].trim()){var e=(0,i.Z)(_),n=(0,i.Z)(k);e.push(""),n.push(""),Z(e),F(n)}}()}})]},"query-pair-".concat(t,"-").concat(n.toString()))}));return(0,d.jsx)(a.Fragment,{children:(0,d.jsxs)(u.rjZ,{item:!0,xs:12,sx:{"& .lineInputBoxes":{display:"flex"},"& .queryDiv":{alignSelf:"center",margin:"-15px 4px 0",fontWeight:600}},children:[(0,d.jsxs)(u.AZs,{children:[o,""!==x&&(0,d.jsx)(u.xuv,{sx:{marginLeft:5,display:"flex",alignItems:"center","& .min-icon":{width:13}},children:(0,d.jsx)(u.ua7,{tooltip:x,placement:"top",children:(0,d.jsx)(u.byK,{style:{width:13,height:13}})})})]}),(0,d.jsxs)(u.xuv,{withBorders:g,sx:{padding:15,height:150,overflowY:"auto",position:"relative",marginTop:15},children:[N,(0,d.jsx)("div",{ref:E})]})]})})}}}]); -//# sourceMappingURL=51.d010edb2.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[51],{51:function(e,n,t){t.r(n),t.d(n,{default:function(){return N}});var i=t(29439),r=t(72791),a=t(26181),o=t.n(a),s=t(29945),l=t(78687),c=t(31776),u=t(38442),d=t(56087),x=t(9859),p=t(57689),f=t(87995),h=t(44690),v=t(82342),y=t(23508),m=t(80184),g=function(e){var n=e.onCloseAndRefresh,t=e.deleteOpen,a=e.bucket,o=e.id,l=(0,h.TL)(),u=(0,r.useState)(!1),d=(0,i.Z)(u,2),x=d[0],p=d[1];(0,r.useEffect)((function(){x&&c.h.buckets.deleteBucketLifecycleRule(a,o).then((function(){p(!1),n(!0)})).catch((function(e){p(!1),l((0,f.Ih)((0,v.g)(e.error)))}))}),[x,a,o,n,l]);return(0,m.jsx)(y.Z,{title:"Delete Lifecycle Rule",confirmText:"Delete",isOpen:t,isLoading:x,onConfirm:function(){p(!0)},titleIcon:(0,m.jsx)(s.NvT,{}),onClose:function(){return n(!1)},confirmationContent:(0,m.jsxs)(r.Fragment,{children:["Are you sure you want to delete the ",(0,m.jsx)("strong",{children:o})," rule?"]})})},j=t(1413),b=t(89673),_=t(55818),Z=t(20890),C=t(3721),S=t(23814),k=t(56028),F=t(17420),E=function(e){var n,t,a,l,u,d=e.closeModalAndRefresh,x=e.selectedBucket,p=e.lifecycleRule,v=e.open,y=(0,h.TL)(),g=(0,r.useState)(!0),E=(0,i.Z)(g,2),T=E[0],I=E[1],L=(0,r.useState)(!1),O=(0,i.Z)(L,2),N=O[0],A=O[1],P=(0,r.useState)(""),R=(0,i.Z)(P,2),w=R[0],z=R[1],B=(0,r.useState)(!1),V=(0,i.Z)(B,2),D=V[0],W=V[1],M=(0,r.useState)([]),Y=(0,i.Z)(M,2),K=Y[0],U=Y[1],G=(0,r.useState)(""),Q=(0,i.Z)(G,2),$=Q[0],q=Q[1],H=(0,r.useState)(""),X=(0,i.Z)(H,2),J=X[0],ee=X[1],ne=(0,r.useState)(""),te=(0,i.Z)(ne,2),ie=te[0],re=te[1],ae=(0,r.useState)(!1),oe=(0,i.Z)(ae,2),se=oe[0],le=oe[1],ce=(0,r.useState)("0"),ue=(0,i.Z)(ce,2),de=ue[0],xe=ue[1],pe=(0,r.useState)("0"),fe=(0,i.Z)(pe,2),he=fe[0],ve=fe[1],ye=(0,r.useState)("expiry"),me=(0,i.Z)(ye,2),ge=me[0],je=me[1],be=(0,r.useState)("0"),_e=(0,i.Z)(be,2),Ze=_e[0],Ce=_e[1],Se=(0,r.useState)("0"),ke=(0,i.Z)(Se,2),Fe=ke[0],Ee=ke[1],Te=(0,r.useState)(!1),Ie=(0,i.Z)(Te,2),Le=Ie[0],Oe=Ie[1],Ne={"& .MuiPaper-root":{padding:0}};(0,r.useEffect)((function(){T&&c.h.admin.tiersList().then((function(e){var n=o()(e.data,"items",[]);if(null!==n&&n.length>=1){var t=n.map((function(e){var n=e.type,t=o()(e,"".concat(n,".name"),"");return{label:t,value:t}}));U(t),t.length>0&&ee(t[0].value)}I(!1)})).catch((function(){I(!1)}))}),[T]),(0,r.useEffect)((function(){var e=!0;"expiry"!==ge&&""===J&&(e=!1),Oe(e)}),[ge,Ze,Fe,J]),(0,r.useEffect)((function(){var e;"Enabled"===p.status&&W(!0);var n,t,i,r,a,o,s=!1;(p.transition&&(p.transition.days&&0!==p.transition.days&&(Ee(p.transition.days.toString()),je("transition"),s=!0),p.transition.noncurrent_transition_days&&0!==p.transition.noncurrent_transition_days&&(ve(p.transition.noncurrent_transition_days.toString()),je("transition"),s=!0),p.transition.date&&"0001-01-01T00:00:00Z"!==p.transition.date&&(je("transition"),s=!0)),p.expiration&&(p.expiration.days&&0!==p.expiration.days&&(Ce(p.expiration.days.toString()),je("expiry"),s=!1),p.expiration.noncurrent_expiration_days&&0!==p.expiration.noncurrent_expiration_days&&(xe(p.expiration.noncurrent_expiration_days.toString()),je("expiry"),s=!1),p.expiration.date&&"0001-01-01T00:00:00Z"!==p.expiration.date&&(je("expiry"),s=!1)),s)?(ee((null===(n=p.transition)||void 0===n?void 0:n.storage_class)||""),ve((null===(t=p.transition)||void 0===t||null===(i=t.noncurrent_transition_days)||void 0===i?void 0:i.toString())||"0"),re((null===(r=p.transition)||void 0===r?void 0:r.noncurrent_storage_class)||"")):xe((null===(a=p.expiration)||void 0===a||null===(o=a.noncurrent_expiration_days)||void 0===o?void 0:o.toString())||"0");if(le(!(null===(e=p.expiration)||void 0===e||!e.delete_marker)),q(p.prefix||""),p.tags){var l=p.tags.reduce((function(e,n,t){return"".concat(e).concat(0!==t?"&":"").concat(n.key,"=").concat(n.value)}),"");z(l)}}),[p]);var Ae="";return p.expiration&&(p.expiration.days>0?Ae="Current Version":p.expiration.noncurrent_expiration_days&&(Ae="Non-Current Version")),p.transition&&(p.transition.days>0?Ae="Current Version":p.transition.noncurrent_transition_days&&(Ae="Non-Current Version")),(0,m.jsx)(k.Z,{onClose:function(){d(!1)},modalOpen:v,title:"Edit Lifecycle Configuration",titleIcon:(0,m.jsx)(s.QIv,{}),children:(0,m.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){if(e.preventDefault(),!N&&(A(!0),null!==x&&null!==p)){var n={};if("expiry"===ge){var t,i,r,a={};null!==(t=p.expiration)&&void 0!==t&&t.days&&(null===(i=p.expiration)||void 0===i?void 0:i.days)>0&&(a.expiry_days=parseInt(Ze)),null!==(r=p.expiration)&&void 0!==r&&r.noncurrent_expiration_days&&(a.noncurrentversion_expiration_days=parseInt(de)),n=(0,j.Z)({},a)}else{var o,s,l,u={};null!==(o=p.expiration)&&void 0!==o&&o.days&&(null===(s=p.expiration)||void 0===s?void 0:s.days)>0&&(u.transition_days=parseInt(Ze),u.storage_class=J),null!==(l=p.expiration)&&void 0!==l&&l.noncurrent_expiration_days&&(u.noncurrentversion_transition_days=parseInt(de),u.noncurrentversion_transition_storage_class=ie),n=(0,j.Z)({},u)}var h=(0,j.Z)({type:ge,disable:!D,prefix:$,tags:w,expired_object_delete_marker:se},n);c.h.buckets.updateBucketLifecycle(x,p.id,h).then((function(e){A(!1),d(!0)})).catch((function(e){A(!1),y((0,f.zb)(e))}))}}(e)},children:(0,m.jsxs)(s.ltY,{containerPadding:!1,withBorders:!1,children:[(0,m.jsx)(s.rsf,{label:"Status",indicatorLabels:["Enabled","Disabled"],checked:D,value:"user_enabled",id:"rule_status",name:"rule_status",onChange:function(e){W(e.target.checked)}}),(0,m.jsx)(s.Wzg,{id:"id",name:"id",label:"Id",value:p.id,onChange:function(){},disabled:!0}),(0,m.jsx)(s.Eep,{currentValue:ge,id:"rule_type",name:"rule_type",label:"Rule Type",selectorOptions:[{value:"expiry",label:"Expiry"},{value:"transition",label:"Transition"}],onChange:function(){},disableOptions:!0}),(0,m.jsx)(s.Wzg,{id:"object-version",name:"object-version",label:"Object Version",value:Ae,onChange:function(){},disabled:!0}),"expiry"===ge&&(null===(n=p.expiration)||void 0===n?void 0:n.days)&&(0,m.jsx)(s.Wzg,{type:"number",id:"expiry_days",name:"expiry_days",onChange:function(e){Ce(e.target.value)},label:"Expiry Days",value:Ze,min:"0"}),"expiry"===ge&&(null===(t=p.expiration)||void 0===t?void 0:t.noncurrent_expiration_days)&&(0,m.jsx)(s.Wzg,{type:"number",id:"noncurrentversion_expiration_days",name:"noncurrentversion_expiration_days",onChange:function(e){xe(e.target.value)},label:"Non-current Expiration Days",value:de,min:"0"}),"transition"===ge&&(null===(a=p.transition)||void 0===a?void 0:a.days)&&(0,m.jsxs)(r.Fragment,{children:[(0,m.jsx)(s.Wzg,{type:"number",id:"transition_days",name:"transition_days",onChange:function(e){Ee(e.target.value)},label:"Transition Days",value:Fe,min:"0"}),(0,m.jsx)(s.PhF,{label:"Storage Class",id:"storage_class",name:"storage_class",value:J,onChange:function(e){ee(e)},options:K})]}),"transition"===ge&&(null===(l=p.transition)||void 0===l?void 0:l.noncurrent_transition_days)&&(0,m.jsxs)(r.Fragment,{children:[(0,m.jsx)(s.Wzg,{type:"number",id:"noncurrentversion_transition_days",name:"noncurrentversion_transition_days",onChange:function(e){ve(e.target.value)},label:"Non-current Transition Days",value:he,min:"0"}),(0,m.jsx)(s.Wzg,{id:"noncurrentversion_t_SC",name:"noncurrentversion_t_SC",onChange:function(e){re(e.target.value)},placeholder:"Set Non-current Version Transition Storage Class",label:"Non-current Version Transition Storage Class",value:ie})]}),(0,m.jsx)(s.rjZ,{item:!0,xs:12,sx:Ne,children:(0,m.jsxs)(b.Z,{children:[(0,m.jsx)(_.Z,{children:(0,m.jsx)(Z.Z,{children:"Filters"})}),(0,m.jsxs)(C.Z,{children:[(0,m.jsx)(s.Wzg,{id:"prefix",name:"prefix",onChange:function(e){q(e.target.value)},label:"Prefix",value:$}),(0,m.jsx)(F.Z,{name:"tags",label:"Tags",elements:w,onChange:function(e){z(e)},keyPlaceholder:"Tag Key",valuePlaceholder:"Tag Value",withBorder:!0})]})]})}),"expiry"===ge&&(null===(u=p.expiration)||void 0===u?void 0:u.noncurrent_expiration_days)&&(0,m.jsx)(s.rjZ,{item:!0,xs:12,sx:Ne,children:(0,m.jsxs)(b.Z,{children:[(0,m.jsx)(_.Z,{children:(0,m.jsx)(Z.Z,{children:"Advanced"})}),(0,m.jsx)(C.Z,{children:(0,m.jsx)(s.rsf,{value:"expired_delete_marker",id:"expired_delete_marker",name:"expired_delete_marker",checked:se,onChange:function(e){le(e.target.checked)},label:"Expired Object Delete Marker"})})]})}),(0,m.jsxs)(s.rjZ,{item:!0,xs:12,sx:S.ID.modalButtonBar,children:[(0,m.jsx)(s.zxk,{id:"cancel",type:"button",variant:"regular",disabled:N,onClick:function(){d(!1)},label:"Cancel"}),(0,m.jsx)(s.zxk,{id:"save",type:"submit",variant:"callAction",color:"primary",disabled:N||!Le,label:"Save"})]}),N&&(0,m.jsx)(s.rjZ,{item:!0,xs:12,children:(0,m.jsx)(s.kod,{})})]})})})},T=t(84741),I=t(81159),L=function(e){var n=e.open,t=e.closeModalAndRefresh,a=e.bucketName,u=(0,h.TL)(),d=(0,l.v9)(f.N5),x=(0,r.useState)(!0),p=(0,i.Z)(x,2),y=p[0],g=p[1],E=(0,r.useState)([]),L=(0,i.Z)(E,2),O=L[0],N=L[1],A=(0,r.useState)(!1),P=(0,i.Z)(A,2),R=P[0],w=P[1],z=(0,r.useState)(null),B=(0,i.Z)(z,2),V=B[0],D=B[1],W=(0,r.useState)(""),M=(0,i.Z)(W,2),Y=M[0],K=M[1],U=(0,r.useState)(""),G=(0,i.Z)(U,2),Q=G[0],$=G[1],q=(0,r.useState)(""),H=(0,i.Z)(q,2),X=H[0],J=H[1],ee=(0,r.useState)("expiry"),ne=(0,i.Z)(ee,2),te=ne[0],ie=ne[1],re=(0,r.useState)("current"),ae=(0,i.Z)(re,2),oe=ae[0],se=ae[1],le=(0,r.useState)(""),ce=(0,i.Z)(le,2),ue=ce[0],de=ce[1],xe=(0,r.useState)(!1),pe=(0,i.Z)(xe,2),fe=pe[0],he=pe[1],ve=(0,r.useState)(!1),ye=(0,i.Z)(ve,2),me=ye[0],ge=ye[1],je=(0,r.useState)(!0),be=(0,i.Z)(je,2),_e=be[0],Ze=be[1],Ce={"& .MuiPaper-root":{padding:0}};(0,r.useEffect)((function(){y&&c.h.admin.tiersList().then((function(e){var n=o()(e.data,"items",[]);if(null!==n&&n.length>=1){var t=n.map((function(e){var n=e.type,t=o()(e,"".concat(n,".name"),"");return{label:t,value:t}}));N(t),t.length>0&&J(t[0].value)}g(!1)})).catch((function(){g(!1)}))}),[y]),(0,r.useEffect)((function(){var e=!0;"expiry"!==te&&""===X&&(e=!1),he(e)}),[te,ue,X]),(0,r.useEffect)((function(){_e&&d&&c.h.buckets.getBucketVersioning(a).then((function(e){D(e.data),Ze(!1)})).catch((function(e){u((0,f.zb)((0,v.g)(e))),Ze(!1)}))}),[_e,u,a,d]);return(0,m.jsxs)(k.Z,{modalOpen:n,onClose:function(){t(!1)},title:"Add Lifecycle Rule",titleIcon:(0,m.jsx)(s.QIv,{}),children:[y&&(0,m.jsx)(s.rjZ,{container:!0,children:(0,m.jsx)(s.rjZ,{item:!0,xs:12,children:(0,m.jsx)(s.kod,{})})}),!y&&(0,m.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),w(!0),function(){var e={};if("expiry"===te){var n={};"current"===oe?n.expiry_days=parseInt(ue):n.noncurrentversion_expiration_days=parseInt(ue),e=(0,j.Z)({},n)}else{var i={};"current"===oe?(i.transition_days=parseInt(ue),i.storage_class=X):(i.noncurrentversion_transition_days=parseInt(ue),i.noncurrentversion_transition_storage_class=X),e=(0,j.Z)({},i)}var r=(0,j.Z)({type:te,prefix:Y,tags:Q,expired_object_delete_marker:me},e);c.h.buckets.addBucketLifecycle(a,r).then((function(){w(!1),t(!0)})).catch((function(e){w(!1),u((0,f.zb)((0,v.g)(e)))}))}()},children:(0,m.jsxs)(s.ltY,{withBorders:!1,containerPadding:!1,children:[(0,m.jsx)(s.Eep,{currentValue:te,id:"ilm_type",name:"ilm_type",label:"Type of lifecycle",onChange:function(e){ie(e.target.value)},selectorOptions:[{value:"expiry",label:"Expiry"},{value:"transition",label:"Transition"}]}),"Enabled"===(null===V||void 0===V?void 0:V.status)&&(0,m.jsx)(s.PhF,{value:oe,id:"object_version",name:"object_version",label:"Object Version",onChange:function(e){se(e)},options:[{value:"current",label:"Current Version"},{value:"noncurrent",label:"Non-Current Version"}]}),(0,m.jsx)(s.Wzg,{id:"expiry_days",name:"expiry_days",onChange:function(e){e.target.validity.valid&&de(e.target.value)},pattern:"[0-9]*",label:"After",value:ue,overlayObject:(0,m.jsx)(T.Z,{id:"expire-current-unit",unitSelected:"days",unitsList:[{label:"Days",value:"days"}],disabled:!0})}),"expiry"===te?(0,m.jsx)(r.Fragment,{}):(0,m.jsx)(s.PhF,{label:"To Tier",id:"storage_class",name:"storage_class",value:X,onChange:function(e){J(e)},options:O}),(0,m.jsx)(s.rjZ,{item:!0,xs:12,sx:Ce,children:(0,m.jsxs)(b.Z,{children:[(0,m.jsx)(_.Z,{children:(0,m.jsx)(Z.Z,{children:"Filters"})}),(0,m.jsxs)(C.Z,{children:[(0,m.jsx)(s.rjZ,{item:!0,xs:12,children:(0,m.jsx)(s.Wzg,{id:"prefix",name:"prefix",onChange:function(e){K(e.target.value)},label:"Prefix",value:Y})}),(0,m.jsx)(s.rjZ,{item:!0,xs:12,children:(0,m.jsx)(F.Z,{name:"tags",label:"Tags",elements:"",onChange:function(e){$(e)},keyPlaceholder:"Tag Key",valuePlaceholder:"Tag Value",withBorder:!0})})]})]})}),"expiry"===te&&"noncurrent"===oe&&(0,m.jsx)(s.rjZ,{item:!0,xs:12,sx:Ce,children:(0,m.jsxs)(b.Z,{children:[(0,m.jsx)(_.Z,{children:(0,m.jsx)(Z.Z,{children:"Advanced"})}),(0,m.jsx)(C.Z,{children:(0,m.jsx)(s.rjZ,{item:!0,xs:12,children:(0,m.jsx)(I.Z,{value:"expired_delete_marker",id:"expired_delete_marker",name:"expired_delete_marker",checked:me,onChange:function(e){ge(e.target.checked)},label:"Expire Delete Marker",description:"Remove the reference to the object if no versions are left"})})})]})}),(0,m.jsxs)(s.rjZ,{item:!0,xs:12,sx:S.ID.modalButtonBar,children:[(0,m.jsx)(s.zxk,{id:"reset",type:"button",variant:"regular",disabled:R,onClick:function(){t(!1)},label:"Cancel"}),(0,m.jsx)(s.zxk,{id:"save-lifecycle",type:"submit",variant:"callAction",color:"primary",disabled:R||!fe,label:"Save"})]}),R&&(0,m.jsx)(s.rjZ,{item:!0,xs:12,children:(0,m.jsx)(s.kod,{})})]})})]})},O=t(27454),N=function(){var e=(0,l.v9)(x.HQ),n=(0,p.UO)(),t=(0,r.useState)(!0),a=(0,i.Z)(t,2),v=a[0],y=a[1],j=(0,r.useState)([]),b=(0,i.Z)(j,2),_=b[0],Z=b[1],C=(0,r.useState)(!1),S=(0,i.Z)(C,2),k=S[0],F=S[1],T=(0,r.useState)(!1),I=(0,i.Z)(T,2),N=I[0],A=I[1],P=(0,r.useState)(null),R=(0,i.Z)(P,2),w=R[0],z=R[1],B=(0,r.useState)(!1),V=(0,i.Z)(B,2),D=V[0],W=V[1],M=(0,r.useState)(null),Y=(0,i.Z)(M,2),K=Y[0],U=Y[1],G=(0,h.TL)(),Q=n.bucketName||"",$=(0,u.F)(Q,[d.Ft.S3_GET_LIFECYCLE_CONFIGURATION,d.Ft.S3_GET_ACTIONS]);(0,r.useEffect)((function(){e&&y(!0)}),[e,y]),(0,r.useEffect)((function(){G((0,f.Sc)("bucket_detail_lifecycle"))}),[]),(0,r.useEffect)((function(){v&&($?c.h.buckets.getBucketLifecycle(Q).then((function(e){var n=o()(e.data,"lifecycle",[]);Z(n||[]),y(!1)})).catch((function(e){console.error(e.error),Z([]),y(!1)})):y(!1))}),[v,y,Q,$]);var q=[{label:"Type",renderFullObject:!0,renderFunction:function(e){return e?e.expiration&&(e.expiration.days>0||e.expiration.noncurrent_expiration_days)?(0,m.jsx)("span",{children:"Expiry"}):e.transition&&(e.transition.days>0||e.transition.noncurrent_transition_days)?(0,m.jsx)("span",{children:"Transition"}):(0,m.jsx)(r.Fragment,{}):(0,m.jsx)(r.Fragment,{})}},{label:"Version",renderFullObject:!0,renderFunction:function(e){if(!e)return(0,m.jsx)(r.Fragment,{});if(e.expiration){if(e.expiration.days>0)return(0,m.jsx)("span",{children:"Current"});if(e.expiration.noncurrent_expiration_days)return(0,m.jsx)("span",{children:"Non-Current"})}if(e.transition){if(e.transition.days>0)return(0,m.jsx)("span",{children:"Current"});if(e.transition.noncurrent_transition_days)return(0,m.jsx)("span",{children:"Non-Current"})}}},{label:"Tier",elementKey:"storage_class",renderFunction:function(e){var n=o()(e,"transition.storage_class","");return n=o()(e,"transition.noncurrent_storage_class",n)},renderFullObject:!0},{label:"Prefix",elementKey:"prefix"},{label:"After",renderFullObject:!0,renderFunction:function(e){if(!e)return(0,m.jsx)(r.Fragment,{});if(e.expiration){if(e.expiration.days>0)return(0,m.jsxs)("span",{children:[e.expiration.days," days"]});if(e.expiration.noncurrent_expiration_days)return(0,m.jsxs)("span",{children:[e.expiration.noncurrent_expiration_days," days"]})}if(e.transition){if(e.transition.days>0)return(0,m.jsxs)("span",{children:[e.transition.days," days"]});if(e.transition.noncurrent_transition_days)return(0,m.jsxs)("span",{children:[e.transition.noncurrent_transition_days," days"]})}}},{label:"Status",elementKey:"status"}],H=[{type:"view",onClick:function(e){z(e),A(!0)}},{type:"delete",onClick:function(e){U(e),W(!0)},sendOnlyId:!0}];return(0,m.jsxs)(r.Fragment,{children:[N&&w&&(0,m.jsx)(E,{open:N,closeModalAndRefresh:function(e){A(!1),z(null),e&&y(!0)},selectedBucket:Q,lifecycleRule:w}),k&&(0,m.jsx)(L,{open:k,bucketName:Q,closeModalAndRefresh:function(e){F(!1),e&&y(!0)}}),D&&K&&(0,m.jsx)(g,{id:K,bucket:Q,deleteOpen:D,onCloseAndRefresh:function(e){W(!1),U(null),e&&y(!0)}}),(0,m.jsx)(s.NZf,{separator:!0,sx:{marginBottom:15},actions:(0,m.jsx)(u.s,{scopes:[d.Ft.S3_PUT_LIFECYCLE_CONFIGURATION,d.Ft.S3_PUT_ACTIONS],resource:Q,matchAll:!0,errorProps:{disabled:!0},children:(0,m.jsx)(O.Z,{tooltip:"Add Lifecycle Rule",children:(0,m.jsx)(s.zxk,{id:"add-bucket-lifecycle-rule",onClick:function(){F(!0)},label:"Add Lifecycle Rule",icon:(0,m.jsx)(s.dtP,{}),variant:"callAction"})})}),children:"Lifecycle Rules"}),(0,m.jsxs)(s.rjZ,{container:!0,children:[(0,m.jsx)(s.rjZ,{item:!0,xs:12,children:(0,m.jsx)(u.s,{scopes:[d.Ft.S3_GET_LIFECYCLE_CONFIGURATION,d.Ft.S3_GET_ACTIONS],resource:Q,errorProps:{disabled:!0},children:(0,m.jsx)(s.wQF,{itemActions:H,columns:q,isLoading:v,records:_,entityName:"Lifecycle",customEmptyMessage:"There are no Lifecycle rules yet",idField:"id",customPaperHeight:"400px"})})}),!v&&(0,m.jsxs)(s.rjZ,{item:!0,xs:12,children:[(0,m.jsx)("br",{}),(0,m.jsx)(s.KfX,{title:"Lifecycle Rules",iconComponent:(0,m.jsx)(s.y2Y,{}),help:(0,m.jsxs)(r.Fragment,{children:["MinIO Object Lifecycle Management allows creating rules for time or date based automatic transition or expiry of objects. For object transition, MinIO automatically moves the object to a configured remote storage tier.",(0,m.jsx)("br",{}),(0,m.jsx)("br",{}),"You can learn more at our"," ",(0,m.jsx)("a",{href:"https://min.io/docs/minio/linux/administration/object-management/object-lifecycle-management.html?ref=con",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})]})]})]})}},81159:function(e,n,t){var i=t(4942),r=t(1413),a=t(72791),o=t(11135),s=t(25787),l=t(9955),c=t(30829),u=t(20068),d=t(20890),x=t(61889),p=t(23814),f=t(29945),h=t(63733),v=t(80184),y=(0,s.Z)((function(e){return{root:{width:50,height:24,padding:0,margin:0},switchBase:{padding:1,"&$checked":{transform:"translateX(24px)",color:e.palette.common.white,"& + $track":{backgroundColor:"#4CCB92",boxShadow:"inset 0px 1px 4px rgba(0,0,0,0.1)",opacity:1,border:"none"}},"&$focusVisible $thumb":{color:"#4CCB92",border:"6px solid #fff"}},thumb:{width:22,height:22,backgroundColor:"#FAFAFA",border:"2px solid #FFFFFF",marginLeft:1},track:{borderRadius:12,backgroundColor:"#E2E2E2",boxShadow:"inset 0px 1px 4px rgba(0,0,0,0.1)",opacity:1,transition:e.transitions.create(["background-color","border"])},checked:{},focusVisible:{},switchContainer:{display:"flex",alignItems:"center",justifyContent:"flex-end"}}}))(l.Z);n.Z=(0,s.Z)((function(e){return(0,o.Z)((0,r.Z)((0,r.Z)({indicatorLabelOn:{fontWeight:"bold",color:"#081C42 !important"},indicatorLabel:{fontSize:12,color:"#E2E2E2",margin:"0 8px 0 10px"},fieldDescription:{marginTop:4,color:"#999999"},tooltip:{fontSize:16}},p.OR),p.YI))}))((function(e){var n=e.label,t=void 0===n?"":n,o=e.onChange,s=e.value,l=e.id,p=e.name,m=e.checked,g=void 0!==m&&m,j=e.disabled,b=void 0!==j&&j,_=e.switchOnly,Z=void 0!==_&&_,C=e.tooltip,S=void 0===C?"":C,k=e.description,F=void 0===k?"":k,E=e.classes,T=e.indicatorLabels,I=e.extraInputProps,L=void 0===I?{}:I,O=(0,v.jsxs)(a.Fragment,{children:[!Z&&(0,v.jsx)("span",{className:(0,h.Z)(E.indicatorLabel,(0,i.Z)({},E.indicatorLabelOn,!g)),children:T&&T.length>1?T[1]:"OFF"}),(0,v.jsx)(y,{checked:g,onChange:o,color:"primary",name:p,inputProps:(0,r.Z)({"aria-label":"primary checkbox"},L),disabled:b,disableRipple:!0,disableFocusRipple:!0,disableTouchRipple:!0,value:s,id:l}),!Z&&(0,v.jsx)("span",{className:(0,h.Z)(E.indicatorLabel,(0,i.Z)({},E.indicatorLabelOn,g)),children:T?T[0]:"ON"})]});return Z?O:(0,v.jsx)("div",{children:(0,v.jsxs)(x.ZP,{container:!0,alignItems:"center",children:[(0,v.jsx)(x.ZP,{item:!0,xs:12,sm:8,md:8,children:""!==t&&(0,v.jsxs)(c.Z,{htmlFor:l,className:E.inputLabel,children:[(0,v.jsx)("span",{children:t}),""!==S&&(0,v.jsx)("div",{className:E.tooltipContainer,children:(0,v.jsx)(u.Z,{title:S,placement:"top-start",children:(0,v.jsx)("div",{className:E.tooltip,children:(0,v.jsx)(f.byK,{})})})})]})}),(0,v.jsx)(x.ZP,{item:!0,xs:12,sm:""!==t?4:12,md:""!==t?4:12,textAlign:"right",justifyContent:"end",className:E.switchContainer,children:O}),""!==F&&(0,v.jsx)(x.ZP,{item:!0,xs:12,textAlign:"left",children:(0,v.jsx)(d.Z,{component:"p",className:E.fieldDescription,children:F})})]})})}))},84741:function(e,n,t){var i=t(29439),r=t(72791),a=t(11135),o=t(25787),s=t(80911),l=t(77865),c=t(80184);n.Z=(0,o.Z)((function(e){return(0,a.Z)({buttonTrigger:{border:"#F0F2F2 1px solid",borderRadius:3,color:"#838383",backgroundColor:"#fff",fontSize:12}})}))((function(e){var n=e.classes,t=e.id,a=e.unitSelected,o=e.unitsList,u=e.disabled,d=void 0!==u&&u,x=e.onUnitChange,p=r.useState(null),f=(0,i.Z)(p,2),h=f[0],v=f[1],y=Boolean(h),m=function(e){v(null),""!==e&&x&&x(e)};return(0,c.jsxs)(r.Fragment,{children:[(0,c.jsx)("button",{id:"".concat(t,"-button"),"aria-controls":"".concat(t,"-menu"),"aria-haspopup":"true","aria-expanded":y?"true":void 0,onClick:function(e){v(e.currentTarget)},className:n.buttonTrigger,disabled:d,type:"button",children:a}),(0,c.jsx)(s.Z,{id:"".concat(t,"-menu"),"aria-labelledby":"".concat(t,"-button"),anchorEl:h,open:y,onClose:function(){m("")},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},children:o.map((function(e){return(0,c.jsx)(l.Z,{onClick:function(){return m(e.value)},children:e.label},"itemUnit-".concat(e.value,"-").concat(e.label))}))})]})}))},17420:function(e,n,t){var i=t(93433),r=t(29439),a=t(72791),o=t(26181),s=t.n(o),l=t(48573),c=t.n(l),u=t(29945),d=t(80184);n.Z=function(e){var n=e.elements,t=e.name,o=e.label,l=e.tooltip,x=void 0===l?"":l,p=e.keyPlaceholder,f=void 0===p?"":p,h=e.valuePlaceholder,v=void 0===h?"":h,y=e.onChange,m=e.withBorder,g=void 0!==m&&m,j=(0,a.useState)([""]),b=(0,r.Z)(j,2),_=b[0],Z=b[1],C=(0,a.useState)([""]),S=(0,r.Z)(C,2),k=S[0],F=S[1],E=(0,a.createRef)();(0,a.useEffect)((function(){if(1===_.length&&""===_[0]&&1===k.length&&""===k[0]&&n&&""!==n){var e=n.split("&"),t=[],i=[];e.forEach((function(e){var n=e.split("=");2===n.length&&(t.push(n[0]),i.push(n[1]))})),t.push(""),i.push(""),Z(t),F(i)}}),[_,k,n]),(0,a.useEffect)((function(){var e=E.current;e&&_.length>1&&e.scrollIntoView(!1)}),[_]);var T=(0,a.useRef)(!0);(0,a.useLayoutEffect)((function(){T.current?T.current=!1:O()}),[_,k]);var I=function(e){e.persist();var n=(0,i.Z)(_),t=s()(e.target,"dataset.index","0");n[parseInt(t)]=e.target.value,Z(n)},L=function(e){e.persist();var n=(0,i.Z)(k),t=s()(e.target,"dataset.index","0");n[parseInt(t)]=e.target.value,F(n)},O=c()((function(){var e="";_.forEach((function(n,t){if(_[t]&&k[t]){var i="".concat(n,"=").concat(k[t]);0!==t&&(i="&".concat(i)),e="".concat(e).concat(i)}})),y(e)}),500),N=k.map((function(e,n){return(0,d.jsxs)(u.rjZ,{item:!0,xs:12,className:"lineInputBoxes inputItem",children:[(0,d.jsx)(u.Wzg,{id:"".concat(t,"-key-").concat(n.toString()),label:"",name:"".concat(t,"-").concat(n.toString()),value:_[n],onChange:I,index:n,placeholder:f}),(0,d.jsx)("span",{className:"queryDiv",children:":"}),(0,d.jsx)(u.Wzg,{id:"".concat(t,"-value-").concat(n.toString()),label:"",name:"".concat(t,"-").concat(n.toString()),value:k[n],onChange:L,index:n,placeholder:v,overlayIcon:n===k.length-1?(0,d.jsx)(u.dtP,{}):null,overlayAction:function(){!function(){if(""!==_[_.length-1].trim()&&""!==k[k.length-1].trim()){var e=(0,i.Z)(_),n=(0,i.Z)(k);e.push(""),n.push(""),Z(e),F(n)}}()}})]},"query-pair-".concat(t,"-").concat(n.toString()))}));return(0,d.jsx)(a.Fragment,{children:(0,d.jsxs)(u.rjZ,{item:!0,xs:12,sx:{"& .lineInputBoxes":{display:"flex"},"& .queryDiv":{alignSelf:"center",margin:"-15px 4px 0",fontWeight:600}},children:[(0,d.jsxs)(u.AZs,{children:[o,""!==x&&(0,d.jsx)(u.xuv,{sx:{marginLeft:5,display:"flex",alignItems:"center","& .min-icon":{width:13}},children:(0,d.jsx)(u.ua7,{tooltip:x,placement:"top",children:(0,d.jsx)(u.byK,{style:{width:13,height:13}})})})]}),(0,d.jsxs)(u.xuv,{withBorders:g,sx:{padding:15,height:150,overflowY:"auto",position:"relative",marginTop:15},children:[N,(0,d.jsx)("div",{ref:E})]})]})})}}}]); +//# sourceMappingURL=51.872b251a.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/51.d010edb2.chunk.js.map b/portal-ui/build/static/js/51.872b251a.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/51.d010edb2.chunk.js.map rename to portal-ui/build/static/js/51.872b251a.chunk.js.map index f57df95d43..3d6ab62eea 100644 --- a/portal-ui/build/static/js/51.d010edb2.chunk.js.map +++ b/portal-ui/build/static/js/51.872b251a.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/51.d010edb2.chunk.js","mappings":"sUA6EA,EA9CkC,SAAHA,GAKF,IAJ3BC,EAAiBD,EAAjBC,kBACAC,EAAUF,EAAVE,WACAC,EAAMH,EAANG,OACAC,EAAEJ,EAAFI,GAEMC,GAAWC,EAAAA,EAAAA,MACjBC,GAAwCC,EAAAA,EAAAA,WAAkB,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAzDI,EAAYF,EAAA,GAAEG,EAAeH,EAAA,IAEpCI,EAAAA,EAAAA,YAAU,WACJF,GACFG,EAAAA,EAAIC,QACDC,0BAA0Bb,EAAQC,GAClCa,MAAK,WACJL,GAAgB,GAChBX,GAAkB,EACpB,IACCiB,OAAM,SAACC,GACNP,GAAgB,GAChBP,GAASe,EAAAA,EAAAA,KAAqBC,EAAAA,EAAAA,GAAeF,EAAIG,QACnD,GAEN,GAAG,CAACX,EAAcR,EAAQC,EAAIH,EAAmBI,IAMjD,OACEkB,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CACZC,MAAK,wBACLC,YAAa,SACbC,OAAQzB,EACR0B,UAAWjB,EACXkB,UAVoB,WACtBjB,GAAgB,EAClB,EASIkB,WAAWP,EAAAA,EAAAA,KAACQ,EAAAA,IAAiB,IAC7BC,QAAS,kBAAM/B,GAAkB,EAAM,EACvCgC,qBACEC,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CAAC,wCAC4Bb,EAAAA,EAAAA,KAAA,UAAAa,SAAShC,IAAY,aAKnE,E,sFC6cA,EApemC,SAAHJ,GAKH,IAADqC,EAAAC,EAAAC,EAAAC,EAAAC,EAJ1BC,EAAoB1C,EAApB0C,qBACAC,EAAc3C,EAAd2C,eACAC,EAAa5C,EAAb4C,cACAC,EAAI7C,EAAJ6C,KAEMxC,GAAWC,EAAAA,EAAAA,MACjBC,GAAwCC,EAAAA,EAAAA,WAAkB,GAAKC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAxDuC,EAAYrC,EAAA,GAAEsC,EAAetC,EAAA,GACpCuC,GAAoCxC,EAAAA,EAAAA,WAAkB,GAAMyC,GAAAvC,EAAAA,EAAAA,GAAAsC,EAAA,GAArDE,EAAUD,EAAA,GAAEE,EAAaF,EAAA,GAChCG,GAAwB5C,EAAAA,EAAAA,UAAiB,IAAG6C,GAAA3C,EAAAA,EAAAA,GAAA0C,EAAA,GAArCE,EAAID,EAAA,GAAEE,EAAOF,EAAA,GACpBG,GAA8BhD,EAAAA,EAAAA,WAAkB,GAAMiD,GAAA/C,EAAAA,EAAAA,GAAA8C,EAAA,GAA/CE,EAAOD,EAAA,GAAEE,EAAUF,EAAA,GAC1BG,GAAkCpD,EAAAA,EAAAA,UAA2B,IAAGqD,GAAAnD,EAAAA,EAAAA,GAAAkD,EAAA,GAAzDE,EAASD,EAAA,GAAEE,EAAYF,EAAA,GAC9BG,GAA4BxD,EAAAA,EAAAA,UAAS,IAAGyD,GAAAvD,EAAAA,EAAAA,GAAAsD,EAAA,GAAjCE,EAAMD,EAAA,GAAEE,EAASF,EAAA,GACxBG,GAAwC5D,EAAAA,EAAAA,UAAS,IAAG6D,GAAA3D,EAAAA,EAAAA,GAAA0D,EAAA,GAA7CE,EAAYD,EAAA,GAAEE,GAAeF,EAAA,GACpCG,IAA4ChE,EAAAA,EAAAA,UAAS,IAAGiE,IAAA/D,EAAAA,EAAAA,GAAA8D,GAAA,GAAjDE,GAAcD,GAAA,GAAEE,GAAiBF,GAAA,GACxCG,IAA8CpE,EAAAA,EAAAA,WAAkB,GAAMqE,IAAAnE,EAAAA,EAAAA,GAAAkE,GAAA,GAA/DE,GAAeD,GAAA,GAAEE,GAAkBF,GAAA,GAC1CG,IAAgDxE,EAAAA,EAAAA,UAAiB,KAAIyE,IAAAvE,EAAAA,EAAAA,GAAAsE,GAAA,GAA9DE,GAAgBD,GAAA,GAAEE,GAAmBF,GAAA,GAC5CG,IAAgD5E,EAAAA,EAAAA,UAAiB,KAAI6E,IAAA3E,EAAAA,EAAAA,GAAA0E,GAAA,GAA9DE,GAAgBD,GAAA,GAAEE,GAAmBF,GAAA,GAC5CG,IAA8BhF,EAAAA,EAAAA,UAAkC,UAASiF,IAAA/E,EAAAA,EAAAA,GAAA8E,GAAA,GAAlEE,GAAOD,GAAA,GAAEE,GAAUF,GAAA,GAC1BG,IAAoCpF,EAAAA,EAAAA,UAAiB,KAAIqF,IAAAnF,EAAAA,EAAAA,GAAAkF,GAAA,GAAlDE,GAAUD,GAAA,GAAEE,GAAaF,GAAA,GAChCG,IAA4CxF,EAAAA,EAAAA,UAAiB,KAAIyF,IAAAvF,EAAAA,EAAAA,GAAAsF,GAAA,GAA1DE,GAAcD,GAAA,GAAEE,GAAiBF,GAAA,GACxCG,IAAsC5F,EAAAA,EAAAA,WAAkB,GAAM6F,IAAA3F,EAAAA,EAAAA,GAAA0F,GAAA,GAAvDE,GAAWD,GAAA,GAAEE,GAAcF,GAAA,GAG5BG,GAAqB,CACzB,mBAAoB,CAAEC,QAAS,KAGjC5F,EAAAA,EAAAA,YAAU,WACJiC,GACFhC,EAAAA,EAAI4F,MACD5C,YACA7C,MAAK,SAAC0F,GACL,IAAM7C,EAA2B8C,IAAID,EAAIE,KAAM,QAAS,IAExD,GAAkB,OAAd/C,GAAsBA,EAAUgD,QAAU,EAAG,CAC/C,IAAMC,EAAUjD,EAAUkD,KAAI,SAACC,GAC7B,IAAMC,EAAWD,EAAKE,KAChBC,EAAQR,IAAIK,EAAK,GAADI,OAAKH,EAAQ,SAAS,IAE5C,MAAO,CAAEI,MAAOF,EAAOA,MAAOA,EAChC,IAEArD,EAAagD,GACTA,EAAQD,OAAS,GACnBvC,GAAgBwC,EAAQ,GAAGK,MAE/B,CACArE,GAAgB,EAClB,IACC7B,OAAM,WACL6B,GAAgB,EAClB,GAEN,GAAG,CAACD,KAEJjC,EAAAA,EAAAA,YAAU,WACR,IAAI0G,GAAQ,EAEI,WAAZ7B,IACmB,KAAjBpB,IACFiD,GAAQ,GAGZhB,GAAegB,EACjB,GAAG,CAAC7B,GAASI,GAAYI,GAAgB5B,KAEzCzD,EAAAA,EAAAA,YAAU,WAAO,IAAD2G,EACe,YAAzB5E,EAAc6E,QAChB9D,GAAW,GAGb,IA+DoB+D,EAAAC,EAAAC,EAAAC,EAQbC,EAAAC,EAvEHC,GAAiB,GAEjBpF,EAAcqF,aAEdrF,EAAcqF,WAAWC,MACS,IAAlCtF,EAAcqF,WAAWC,OAEzB/B,GAAkBvD,EAAcqF,WAAWC,KAAKC,YAChDxC,GAAW,cACXqC,GAAiB,GAGjBpF,EAAcqF,WAAWG,4BAC+B,IAAxDxF,EAAcqF,WAAWG,6BAEzB7C,GACE3C,EAAcqF,WAAWG,2BAA2BD,YAEtDxC,GAAW,cACXqC,GAAiB,GAKjBpF,EAAcqF,WAAWI,MACS,yBAAlCzF,EAAcqF,WAAWI,OAEzB1C,GAAW,cACXqC,GAAiB,IAIjBpF,EAAc0F,aAEd1F,EAAc0F,WAAWJ,MACS,IAAlCtF,EAAc0F,WAAWJ,OAEzBnC,GAAcnD,EAAc0F,WAAWJ,KAAKC,YAC5CxC,GAAW,UACXqC,GAAiB,GAGjBpF,EAAc0F,WAAWC,4BAC+B,IAAxD3F,EAAc0F,WAAWC,6BAEzBpD,GACEvC,EAAc0F,WAAWC,2BAA2BJ,YAEtDxC,GAAW,UACXqC,GAAiB,GAKjBpF,EAAc0F,WAAWD,MACS,yBAAlCzF,EAAc0F,WAAWD,OAEzB1C,GAAW,UACXqC,GAAiB,IAKjBA,IACFzD,IAAwC,QAAxBmD,EAAA9E,EAAcqF,kBAAU,IAAAP,OAAA,EAAxBA,EAA0Bc,gBAAiB,IAC3DjD,IAC0B,QAAxBoC,EAAA/E,EAAcqF,kBAAU,IAAAN,GAA4B,QAA5BC,EAAxBD,EAA0BS,kCAA0B,IAAAR,OAA5B,EAAxBA,EAAsDO,aAAc,KAEtExD,IAC0B,QAAxBkD,EAAAjF,EAAcqF,kBAAU,IAAAJ,OAAA,EAAxBA,EAA0BY,2BAA4B,KAIxDtD,IAC0B,QAAxB2C,EAAAlF,EAAc0F,kBAAU,IAAAR,GAA4B,QAA5BC,EAAxBD,EAA0BS,kCAA0B,IAAAR,OAA5B,EAAxBA,EAAsDI,aAAc,KAOxE,GAHApD,KAA6C,QAAzByC,EAAC5E,EAAc0F,kBAAU,IAAAd,IAAxBA,EAA0BkB,gBAC/CvE,EAAUvB,EAAcsB,QAAU,IAE9BtB,EAAcU,KAAM,CACtB,IAAMqF,EAAM/F,EAAcU,KAAKsF,QAC7B,SAACC,EAAmBC,EAAeC,GACjC,MAAM,GAAN1B,OAAUwB,GAASxB,OAAa,IAAV0B,EAAc,IAAM,IAAE1B,OAAGyB,EAASE,IAAG,KAAA3B,OACzDyB,EAAS1B,MAEb,GACA,IAGF7D,EAAQoF,EACV,CACF,GAAG,CAAC/F,IAEJ,IA2EIqG,GAAgB,GAkBpB,OAhBIrG,EAAc0F,aACZ1F,EAAc0F,WAAWJ,KAAO,EAClCe,GAAgB,kBACPrG,EAAc0F,WAAWC,6BAClCU,GAAgB,wBAIhBrG,EAAcqF,aACZrF,EAAcqF,WAAWC,KAAO,EAClCe,GAAgB,kBACPrG,EAAcqF,WAAWG,6BAClCa,GAAgB,yBAKlB1H,EAAAA,EAAAA,KAAC2H,EAAAA,EAAY,CACXlH,QAAS,WACPU,GAAqB,EACvB,EACAyG,UAAWtG,EACXpB,MAAO,+BACPK,WAAWP,EAAAA,EAAAA,KAAC6H,EAAAA,IAAmB,IAAIhH,UAEnCb,EAAAA,EAAAA,KAAA,QACE8H,YAAU,EACVC,aAAa,MACbC,SAAU,SAACC,IAzGE,SAACC,GAGlB,GAFAA,EAAMC,kBAEFxG,IAGJC,GAAc,GACS,OAAnBR,GAA6C,OAAlBC,GAAwB,CACrD,IAAI+G,EAAQ,CAAC,EAEb,GAAgB,WAAZjE,GAAsB,CAAC,IAADkE,EAAAC,EAAAC,EACpBC,EAAoC,CAAC,EAGf,QAAxBH,EAAAhH,EAAc0F,kBAAU,IAAAsB,GAAxBA,EAA0B1B,OACF,QAAxB2B,EAAAjH,EAAc0F,kBAAU,IAAAuB,OAAA,EAAxBA,EAA0B3B,MAAO,IAEjC6B,EAAoB,YAAIC,SAASlE,KAEP,QAA5BgE,EAAIlH,EAAc0F,kBAAU,IAAAwB,GAAxBA,EAA0BvB,6BAC5BwB,EAA0C,kCACxCC,SAAS9E,KAGbyE,GAAKM,EAAAA,EAAAA,GAAA,GACAF,EAEP,KAAO,CAAC,IAADG,EAAAC,EAAAC,EACDnC,EAAiD,CAAC,EAG5B,QAAxBiC,EAAAtH,EAAc0F,kBAAU,IAAA4B,GAAxBA,EAA0BhC,OACF,QAAxBiC,EAAAvH,EAAc0F,kBAAU,IAAA6B,OAAA,EAAxBA,EAA0BjC,MAAO,IAEjCD,EAA4B,gBAAI+B,SAASlE,IACzCmC,EAA0B,cAAI3D,GAEJ,QAA5B8F,EAAIxH,EAAc0F,kBAAU,IAAA8B,GAAxBA,EAA0B7B,6BAC5BN,EAA8C,kCAC5C+B,SAAS9E,IACX+C,EAAuD,2CACrDvD,IAGJiF,GAAKM,EAAAA,EAAAA,GAAA,GACAhC,EAEP,CAEA,IAAMoC,GAAeJ,EAAAA,EAAAA,GAAA,CACnB9C,KAAMzB,GACN4E,SAAU5G,EACVQ,OAAAA,EACAZ,KAAAA,EACAiH,6BAA8BzF,IAC3B6E,GAGL7I,EAAAA,EAAIC,QACDyJ,sBACC7H,EACAC,EAAcxC,GACdiK,GAEDpJ,MAAK,SAAC0F,GACLxD,GAAc,GACdT,GAAqB,EACvB,IACCxB,OAAM,SAACC,GACNgC,GAAc,GACd9C,GAASoK,EAAAA,EAAAA,IAA0BtJ,GACrC,GACJ,CACF,CAiCQuJ,CAAWlB,EACb,EAAEpH,UAEFF,EAAAA,EAAAA,MAACyI,EAAAA,IAAU,CAACC,kBAAkB,EAAOC,aAAa,EAAMzI,SAAA,EACtDb,EAAAA,EAAAA,KAACuJ,EAAAA,IAAM,CACLxD,MAAM,SACNyD,gBAAiB,CAAC,UAAW,YAC7BC,QAAStH,EACT0D,MAAO,eACPhH,GAAG,cACH6K,KAAK,cACLC,SAAU,SAAC1B,GACT7F,EAAW6F,EAAE2B,OAAOH,QACtB,KAEFzJ,EAAAA,EAAAA,KAAC6J,EAAAA,IAAQ,CACPhL,GAAG,KACH6K,KAAK,KACL3D,MAAM,KACNF,MAAOxE,EAAcxC,GACrB8K,SAAU,WAAO,EACjBG,UAAQ,KAEV9J,EAAAA,EAAAA,KAAC+J,EAAAA,IAAU,CACTC,aAAc7F,GACdtF,GAAG,YACH6K,KAAK,YACL3D,MAAM,YACNkE,gBAAiB,CACf,CAAEpE,MAAO,SAAUE,MAAO,UAC1B,CAAEF,MAAO,aAAcE,MAAO,eAEhC4D,SAAU,WAAO,EACjBO,gBAAc,KAGhBlK,EAAAA,EAAAA,KAAC6J,EAAAA,IAAQ,CACPhL,GAAG,iBACH6K,KAAK,iBACL3D,MAAM,iBACNF,MAAO6B,GACPiC,SAAU,WAAO,EACjBG,UAAQ,IAGG,WAAZ3F,KAAgD,QAA5BrD,EAAIO,EAAc0F,kBAAU,IAAAjG,OAAA,EAAxBA,EAA0B6F,QACjD3G,EAAAA,EAAAA,KAAC6J,EAAAA,IAAQ,CACPjE,KAAK,SACL/G,GAAG,cACH6K,KAAK,cACLC,SAAU,SAAC1B,GACTzD,GAAcyD,EAAE2B,OAAO/D,MACzB,EACAE,MAAM,cACNF,MAAOtB,GACP4F,IAAI,MAIK,WAAZhG,KACyB,QADLpD,EACnBM,EAAc0F,kBAAU,IAAAhG,OAAA,EAAxBA,EAA0BiG,8BACxBhH,EAAAA,EAAAA,KAAC6J,EAAAA,IAAQ,CACPjE,KAAK,SACL/G,GAAG,oCACH6K,KAAK,oCACLC,SAAU,SAAC1B,GACTrE,GAAoBqE,EAAE2B,OAAO/D,MAC/B,EACAE,MAAM,8BACNF,MAAOlC,GACPwG,IAAI,MAGG,eAAZhG,KAAoD,QAA5BnD,EAAIK,EAAcqF,kBAAU,IAAA1F,OAAA,EAAxBA,EAA0B2F,QACrDhG,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,EACPb,EAAAA,EAAAA,KAAC6J,EAAAA,IAAQ,CACPjE,KAAK,SACL/G,GAAG,kBACH6K,KAAK,kBACLC,SAAU,SAAC1B,GACTrD,GAAkBqD,EAAE2B,OAAO/D,MAC7B,EACAE,MAAM,kBACNF,MAAOlB,GACPwF,IAAI,OAENnK,EAAAA,EAAAA,KAACoK,EAAAA,IAAM,CACLrE,MAAM,gBACNlH,GAAG,gBACH6K,KAAK,gBACL7D,MAAO9C,EACP4G,SAAU,SAAC9D,GACT7C,GAAgB6C,EAClB,EACAwE,QAAS9H,OAKF,eAAZ4B,KACyB,QADDlD,EACvBI,EAAcqF,kBAAU,IAAAzF,OAAA,EAAxBA,EAA0B4F,8BACxBlG,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,EACPb,EAAAA,EAAAA,KAAC6J,EAAAA,IAAQ,CACPjE,KAAK,SACL/G,GAAG,oCACH6K,KAAK,oCACLC,SAAU,SAAC1B,GACTjE,GAAoBiE,EAAE2B,OAAO/D,MAC/B,EACAE,MAAM,8BACNF,MAAO9B,GACPoG,IAAI,OAENnK,EAAAA,EAAAA,KAAC6J,EAAAA,IAAQ,CACPhL,GAAG,yBACH6K,KAAK,yBACLC,SAAU,SAAC1B,GACT7E,GAAkB6E,EAAE2B,OAAO/D,MAC7B,EACAyE,YAAY,mDACZvE,MAAM,+CACNF,MAAO1C,SAIfnD,EAAAA,EAAAA,KAACuK,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAIC,GAAIzF,GAAmBpE,UACxCF,EAAAA,EAAAA,MAACgK,EAAAA,EAAS,CAAA9J,SAAA,EACRb,EAAAA,EAAAA,KAAC4K,EAAAA,EAAgB,CAAA/J,UACfb,EAAAA,EAAAA,KAAC6K,EAAAA,EAAU,CAAAhK,SAAC,eAGdF,EAAAA,EAAAA,MAACmK,EAAAA,EAAgB,CAAAjK,SAAA,EACfb,EAAAA,EAAAA,KAAC6J,EAAAA,IAAQ,CACPhL,GAAG,SACH6K,KAAK,SACLC,SAAU,SAAC1B,GACTrF,EAAUqF,EAAE2B,OAAO/D,MACrB,EACAE,MAAM,SACNF,MAAOlD,KAET3C,EAAAA,EAAAA,KAAC+K,EAAAA,EAAkB,CACjBrB,KAAK,OACL3D,MAAM,OACNiF,SAAUjJ,EACV4H,SAAU,SAACsB,GACTjJ,EAAQiJ,EACV,EACAC,eAAe,UACfC,iBAAiB,YACjBC,YAAU,YAKL,WAAZjH,KACyB,QADLjD,EACnBG,EAAc0F,kBAAU,IAAA7F,OAAA,EAAxBA,EAA0B8F,8BACxBhH,EAAAA,EAAAA,KAACuK,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAIC,GAAIzF,GAAmBpE,UACxCF,EAAAA,EAAAA,MAACgK,EAAAA,EAAS,CAAA9J,SAAA,EACRb,EAAAA,EAAAA,KAAC4K,EAAAA,EAAgB,CAAA/J,UACfb,EAAAA,EAAAA,KAAC6K,EAAAA,EAAU,CAAAhK,SAAC,gBAGdb,EAAAA,EAAAA,KAAC8K,EAAAA,EAAgB,CAAAjK,UACfb,EAAAA,EAAAA,KAACuJ,EAAAA,IAAM,CACL1D,MAAM,wBACNhH,GAAG,wBACH6K,KAAK,wBACLD,QAASlG,GACToG,SAAU,SACRzB,GAEA1E,GAAmB0E,EAAM0B,OAAOH,QAClC,EACA1D,MAAO,yCAMnBpF,EAAAA,EAAAA,MAAC4J,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAIC,GAAIW,EAAAA,GAAgBC,eAAezK,SAAA,EACpDb,EAAAA,EAAAA,KAACuL,EAAAA,IAAM,CACL1M,GAAI,SACJ+G,KAAK,SACL4F,QAAQ,UACR1B,SAAUnI,EACV8J,QAAS,WACPtK,GAAqB,EACvB,EACA4E,MAAO,YAET/F,EAAAA,EAAAA,KAACuL,EAAAA,IAAM,CACL1M,GAAI,OACJ+G,KAAK,SACL4F,QAAQ,aACRE,MAAM,UACN5B,SAAUnI,IAAeoD,GACzBgB,MAAO,YAGVpE,IACC3B,EAAAA,EAAAA,KAACuK,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAG5J,UAChBb,EAAAA,EAAAA,KAAC2L,EAAAA,IAAW,YAO1B,E,sBChKA,EAjU0B,SAAHlN,GAIG,IAHxB6C,EAAI7C,EAAJ6C,KACAH,EAAoB1C,EAApB0C,qBACAyK,EAAUnN,EAAVmN,WAEM9M,GAAWC,EAAAA,EAAAA,MACX8M,GAAmBC,EAAAA,EAAAA,IAAYC,EAAAA,IACrC/M,GAAwCC,EAAAA,EAAAA,WAAkB,GAAKC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAxDuC,EAAYrC,EAAA,GAAEsC,EAAetC,EAAA,GACpCuC,GAAkCxC,EAAAA,EAAAA,UAA2B,IAAGyC,GAAAvC,EAAAA,EAAAA,GAAAsC,EAAA,GAAzDc,EAASb,EAAA,GAAEc,EAAYd,EAAA,GAC9BG,GAAoC5C,EAAAA,EAAAA,WAAS,GAAM6C,GAAA3C,EAAAA,EAAAA,GAAA0C,EAAA,GAA5CF,EAAUG,EAAA,GAAEF,EAAaE,EAAA,GAChCG,GACEhD,EAAAA,EAAAA,UAA0C,MAAKiD,GAAA/C,EAAAA,EAAAA,GAAA8C,EAAA,GAD1C+J,EAAc9J,EAAA,GAAE+J,EAAiB/J,EAAA,GAExCG,GAA4BpD,EAAAA,EAAAA,UAAS,IAAGqD,GAAAnD,EAAAA,EAAAA,GAAAkD,EAAA,GAAjCM,EAAML,EAAA,GAAEM,EAASN,EAAA,GACxBG,GAAwBxD,EAAAA,EAAAA,UAAiB,IAAGyD,GAAAvD,EAAAA,EAAAA,GAAAsD,EAAA,GAArCV,EAAIW,EAAA,GAAEV,EAAOU,EAAA,GACpBG,GAAwC5D,EAAAA,EAAAA,UAAS,IAAG6D,GAAA3D,EAAAA,EAAAA,GAAA0D,EAAA,GAA7CE,EAAYD,EAAA,GAAEE,EAAeF,EAAA,GAEpCG,IAA8BhE,EAAAA,EAAAA,UAAkC,UAASiE,IAAA/D,EAAAA,EAAAA,GAAA8D,GAAA,GAAlEkB,GAAOjB,GAAA,GAAEkB,GAAUlB,GAAA,GAC1BG,IAA0CpE,EAAAA,EAAAA,UACxC,WACDqE,IAAAnE,EAAAA,EAAAA,GAAAkE,GAAA,GAFM6I,GAAa5I,GAAA,GAAE6I,GAAgB7I,GAAA,GAGtCG,IAA0CxE,EAAAA,EAAAA,UAAiB,IAAGyE,IAAAvE,EAAAA,EAAAA,GAAAsE,GAAA,GAAvD2I,GAAa1I,GAAA,GAAE2I,GAAgB3I,GAAA,GACtCG,IAAsC5E,EAAAA,EAAAA,WAAkB,GAAM6E,IAAA3E,EAAAA,EAAAA,GAAA0E,GAAA,GAAvDkB,GAAWjB,GAAA,GAAEkB,GAAclB,GAAA,GAClCG,IAA8ChF,EAAAA,EAAAA,WAAkB,GAAMiF,IAAA/E,EAAAA,EAAAA,GAAA8E,GAAA,GAA/DV,GAAeW,GAAA,GAAEV,GAAkBU,GAAA,GAC1CG,IAAkDpF,EAAAA,EAAAA,WAAkB,GAAKqF,IAAAnF,EAAAA,EAAAA,GAAAkF,GAAA,GAAlEiI,GAAiBhI,GAAA,GAAEiI,GAAoBjI,GAAA,GAGxCW,GAAqB,CACzB,mBAAoB,CAAEC,QAAS,KAGjC5F,EAAAA,EAAAA,YAAU,WACJiC,GACFhC,EAAAA,EAAI4F,MACD5C,YACA7C,MAAK,SAAC0F,GACL,IAAM7C,EAA2B8C,IAAID,EAAIE,KAAM,QAAS,IAExD,GAAkB,OAAd/C,GAAsBA,EAAUgD,QAAU,EAAG,CAC/C,IAAMC,EAAUjD,EAAUkD,KAAI,SAACC,GAC7B,IAAMC,EAAWD,EAAKE,KAChBC,EAAQR,IAAIK,EAAK,GAADI,OAAKH,EAAQ,SAAS,IAE5C,MAAO,CAAEI,MAAOF,EAAOA,MAAOA,EAChC,IAEArD,EAAagD,GACTA,EAAQD,OAAS,GACnBvC,EAAgBwC,EAAQ,GAAGK,MAE/B,CACArE,GAAgB,EAClB,IACC7B,OAAM,WACL6B,GAAgB,EAClB,GAEN,GAAG,CAACD,KAEJjC,EAAAA,EAAAA,YAAU,WACR,IAAI0G,GAAQ,EAEI,WAAZ7B,IACmB,KAAjBpB,IACFiD,GAAQ,GAGZhB,GAAegB,EACjB,GAAG,CAAC7B,GAASiI,GAAerJ,KAE5BzD,EAAAA,EAAAA,YAAU,WACJgN,IAAqBT,GACvBtM,EAAAA,EAAIC,QACDgN,oBAAoBZ,GACpBlM,MAAK,SAAC0F,GACL6G,EAAkB7G,EAAIE,MACtBiH,IAAqB,EACvB,IACC5M,OAAM,SAACC,GACNd,GAASoK,EAAAA,EAAAA,KAA0BpJ,EAAAA,EAAAA,GAAeF,KAClD2M,IAAqB,EACvB,GAEN,GAAG,CAACD,GAAmBxN,EAAU8M,EAAYC,IAqD7C,OACElL,EAAAA,EAAAA,MAACgH,EAAAA,EAAY,CACXC,UAAWtG,EACXb,QAAS,WACPU,GAAqB,EACvB,EACAjB,MAAM,qBACNK,WAAWP,EAAAA,EAAAA,KAAC6H,EAAAA,IAAmB,IAAIhH,SAAA,CAElCU,IACCvB,EAAAA,EAAAA,KAACuK,EAAAA,IAAI,CAACkC,WAAS,EAAA5L,UACbb,EAAAA,EAAAA,KAACuK,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAG5J,UAChBb,EAAAA,EAAAA,KAAC2L,EAAAA,IAAW,SAKhBpK,IACAvB,EAAAA,EAAAA,KAAA,QACE8H,YAAU,EACVC,aAAa,MACbC,SAAU,SAACC,GACTA,EAAEE,iBACFvG,GAAc,GA1EN,WAChB,IAAIwG,EAAQ,CAAC,EAEb,GAAgB,WAAZjE,GAAsB,CACxB,IAAIqE,EAAoC,CAAC,EAEnB,YAAlB0D,GACF1D,EAAoB,YAAIC,SAAS2D,IAEjC5D,EAA0C,kCAAIC,SAAS2D,IAGzDhE,GAAKM,EAAAA,EAAAA,GAAA,GACAF,EAEP,KAAO,CACL,IAAI9B,EAAiD,CAAC,EAChC,YAAlBwF,IACFxF,EAA4B,gBAAI+B,SAAS2D,IACzC1F,EAA0B,cAAI3D,IAE9B2D,EAA8C,kCAC5C+B,SAAS2D,IACX1F,EAAuD,2CAAI3D,GAG7DqF,GAAKM,EAAAA,EAAAA,GAAA,GACAhC,EAEP,CAEA,IAAMgG,GAAehE,EAAAA,EAAAA,GAAA,CACnB9C,KAAMzB,GACNxB,OAAAA,EACAZ,KAAAA,EACAiH,6BAA8BzF,IAC3B6E,GAGL7I,EAAAA,EAAIC,QACDmN,mBAAmBf,EAAYc,GAC/BhN,MAAK,WACJkC,GAAc,GACdT,GAAqB,EACvB,IACCxB,OAAM,SAACC,GACNgC,GAAc,GACd9C,GAASoK,EAAAA,EAAAA,KAA0BpJ,EAAAA,EAAAA,GAAeF,IACpD,GACJ,CA0BUgN,EACF,EAAE/L,UAEFF,EAAAA,EAAAA,MAACyI,EAAAA,IAAU,CAACE,aAAa,EAAOD,kBAAkB,EAAMxI,SAAA,EACtDb,EAAAA,EAAAA,KAAC+J,EAAAA,IAAU,CACTC,aAAc7F,GACdtF,GAAG,WACH6K,KAAK,WACL3D,MAAM,oBACN4D,SAAU,SAAC1B,GACT7D,GAAW6D,EAAE2B,OAAO/D,MACtB,EACAoE,gBAAiB,CACf,CAAEpE,MAAO,SAAUE,MAAO,UAC1B,CAAEF,MAAO,aAAcE,MAAO,iBAGN,aAAb,OAAdiG,QAAc,IAAdA,OAAc,EAAdA,EAAgB9F,UACflG,EAAAA,EAAAA,KAACoK,EAAAA,IAAM,CACLvE,MAAOqG,GACPrN,GAAG,iBACH6K,KAAK,iBACL3D,MAAM,iBACN4D,SAAU,SAAC9D,GACTsG,GAAiBtG,EACnB,EACAwE,QAAS,CACP,CAAExE,MAAO,UAAWE,MAAO,mBAC3B,CAAEF,MAAO,aAAcE,MAAO,2BAKpC/F,EAAAA,EAAAA,KAAC6J,EAAAA,IAAQ,CACPhL,GAAG,cACH6K,KAAK,cACLC,SAAU,SAAC1B,GACLA,EAAE2B,OAAOiD,SAAS7G,OACpBqG,GAAiBpE,EAAE2B,OAAO/D,MAE9B,EACAiH,QAAS,SACT/G,MAAM,QACNF,MAAOuG,GACPW,eACE/M,EAAAA,EAAAA,KAACgN,EAAAA,EAAa,CACZnO,GAAI,sBACJoO,aAAc,OACdC,UAAW,CAAC,CAAEnH,MAAO,OAAQF,MAAO,SACpCiE,UAAU,MAKH,WAAZ3F,IACCnE,EAAAA,EAAAA,KAACY,EAAAA,SAAQ,KAETZ,EAAAA,EAAAA,KAACoK,EAAAA,IAAM,CACLrE,MAAM,UACNlH,GAAG,gBACH6K,KAAK,gBACL7D,MAAO9C,EACP4G,SAAU,SAAC9D,GACT7C,EAAgB6C,EAClB,EACAwE,QAAS9H,KAGbvC,EAAAA,EAAAA,KAACuK,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAIC,GAAIzF,GAAmBpE,UACxCF,EAAAA,EAAAA,MAACgK,EAAAA,EAAS,CAAA9J,SAAA,EACRb,EAAAA,EAAAA,KAAC4K,EAAAA,EAAgB,CAAA/J,UACfb,EAAAA,EAAAA,KAAC6K,EAAAA,EAAU,CAAAhK,SAAC,eAEdF,EAAAA,EAAAA,MAACmK,EAAAA,EAAgB,CAAAjK,SAAA,EACfb,EAAAA,EAAAA,KAACuK,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAG5J,UAChBb,EAAAA,EAAAA,KAAC6J,EAAAA,IAAQ,CACPhL,GAAG,SACH6K,KAAK,SACLC,SAAU,SAAC1B,GACTrF,EAAUqF,EAAE2B,OAAO/D,MACrB,EACAE,MAAM,SACNF,MAAOlD,OAGX3C,EAAAA,EAAAA,KAACuK,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAG5J,UAChBb,EAAAA,EAAAA,KAAC+K,EAAAA,EAAkB,CACjBrB,KAAK,OACL3D,MAAM,OACNiF,SAAU,GACVrB,SAAU,SAACsB,GACTjJ,EAAQiJ,EACV,EACAC,eAAe,UACfC,iBAAiB,YACjBC,YAAU,cAMP,WAAZjH,IAA0C,eAAlB+H,KACvBlM,EAAAA,EAAAA,KAACuK,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAIC,GAAIzF,GAAmBpE,UACxCF,EAAAA,EAAAA,MAACgK,EAAAA,EAAS,CAAA9J,SAAA,EACRb,EAAAA,EAAAA,KAAC4K,EAAAA,EAAgB,CAAA/J,UACfb,EAAAA,EAAAA,KAAC6K,EAAAA,EAAU,CAAAhK,SAAC,gBAEdb,EAAAA,EAAAA,KAAC8K,EAAAA,EAAgB,CAAAjK,UACfb,EAAAA,EAAAA,KAACuK,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAG5J,UAChBb,EAAAA,EAAAA,KAACmN,EAAAA,EAAiB,CAChBtH,MAAM,wBACNhH,GAAG,wBACH6K,KAAK,wBACLD,QAASlG,GACToG,SAAU,SACRzB,GAEA1E,GAAmB0E,EAAM0B,OAAOH,QAClC,EACA1D,MAAO,uBACPqH,YACE,yEASdzM,EAAAA,EAAAA,MAAC4J,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAIC,GAAIW,EAAAA,GAAgBC,eAAezK,SAAA,EACpDb,EAAAA,EAAAA,KAACuL,EAAAA,IAAM,CACL1M,GAAI,QACJ+G,KAAK,SACL4F,QAAQ,UACR1B,SAAUnI,EACV8J,QAAS,WACPtK,GAAqB,EACvB,EACA4E,MAAO,YAET/F,EAAAA,EAAAA,KAACuL,EAAAA,IAAM,CACL1M,GAAI,iBACJ+G,KAAK,SACL4F,QAAQ,aACRE,MAAM,UACN5B,SAAUnI,IAAeoD,GACzBgB,MAAO,YAGVpE,IACC3B,EAAAA,EAAAA,KAACuK,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAG5J,UAChBb,EAAAA,EAAAA,KAAC2L,EAAAA,IAAW,aAQ5B,E,WCrBA,EAlT6B,WAC3B,IAAM0B,GAAgBvB,EAAAA,EAAAA,IAAYwB,EAAAA,IAC5BC,GAASC,EAAAA,EAAAA,MAEfxO,GAAgDC,EAAAA,EAAAA,WAAkB,GAAKC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAhEyO,EAAgBvO,EAAA,GAAEwO,EAAmBxO,EAAA,GAC5CuC,GAAgDxC,EAAAA,EAAAA,UAE9C,IAAGyC,GAAAvC,EAAAA,EAAAA,GAAAsC,EAAA,GAFEkM,EAAgBjM,EAAA,GAAEkM,EAAmBlM,EAAA,GAG5CG,GAAgD5C,EAAAA,EAAAA,WAAkB,GAAM6C,GAAA3C,EAAAA,EAAAA,GAAA0C,EAAA,GAAjEgM,EAAgB/L,EAAA,GAAEgM,EAAmBhM,EAAA,GAC5CG,GAAkDhD,EAAAA,EAAAA,WAAkB,GAAMiD,GAAA/C,EAAAA,EAAAA,GAAA8C,EAAA,GAAnE8L,EAAiB7L,EAAA,GAAE8L,EAAoB9L,EAAA,GAC9CG,GACEpD,EAAAA,EAAAA,UAA+B,MAAKqD,GAAAnD,EAAAA,EAAAA,GAAAkD,EAAA,GAD/B4L,EAAqB3L,EAAA,GAAE4L,EAAwB5L,EAAA,GAEtDG,GACExD,EAAAA,EAAAA,WAAkB,GAAMyD,GAAAvD,EAAAA,EAAAA,GAAAsD,EAAA,GADnB0L,EAAmBzL,EAAA,GAAE0L,EAAsB1L,EAAA,GAElDG,GAAoC5D,EAAAA,EAAAA,UAAwB,MAAK6D,GAAA3D,EAAAA,EAAAA,GAAA0D,EAAA,GAA1DwL,EAAUvL,EAAA,GAAEwL,EAAaxL,EAAA,GAC1BhE,GAAWC,EAAAA,EAAAA,MAEX6M,EAAa2B,EAAO3B,YAAc,GAElC2C,GAAwBC,EAAAA,EAAAA,GAAc5C,EAAY,CACtD6C,EAAAA,GAAWC,+BACXD,EAAAA,GAAWE,kBAGbrP,EAAAA,EAAAA,YAAU,WACJ+N,GACFK,GAAoB,EAExB,GAAG,CAACL,EAAeK,KAEnBpO,EAAAA,EAAAA,YAAU,WACRR,GAAS8P,EAAAA,EAAAA,IAAY,2BAEvB,GAAG,KAEHtP,EAAAA,EAAAA,YAAU,WACJmO,IACEc,EACFhP,EAAAA,EAAIC,QACDqP,mBAAmBjD,GACnBlM,MAAK,SAAC0F,GACL,IAAM0J,EAAUzJ,IAAID,EAAIE,KAAM,YAAa,IAE3CsI,EAAoBkB,GAAW,IAC/BpB,GAAoB,EACtB,IACC/N,OAAM,SAACC,GACNmP,QAAQhP,MAAMH,EAAIG,OAClB6N,EAAoB,IACpBF,GAAoB,EACtB,IAEFA,GAAoB,GAG1B,GAAG,CACDD,EACAC,EACA9B,EACA2C,IAGF,IA+BMS,EAAmB,CACvB,CACEjJ,MAAO,OACPkJ,kBAAkB,EAClBC,eAAgB,SAACC,GACf,OAAKA,EAIHA,EAAGpI,aACFoI,EAAGpI,WAAWJ,KAAO,GAAKwI,EAAGpI,WAAWC,6BAElChH,EAAAA,EAAAA,KAAA,QAAAa,SAAM,WAGbsO,EAAGzI,aACFyI,EAAGzI,WAAWC,KAAO,GAAKwI,EAAGzI,WAAWG,6BAElC7G,EAAAA,EAAAA,KAAA,QAAAa,SAAM,gBAERb,EAAAA,EAAAA,KAACY,EAAAA,SAAQ,KAdPZ,EAAAA,EAAAA,KAACY,EAAAA,SAAQ,GAepB,GAEF,CACEmF,MAAO,UACPkJ,kBAAkB,EAClBC,eAAgB,SAACC,GACf,IAAKA,EACH,OAAOnP,EAAAA,EAAAA,KAACY,EAAAA,SAAQ,IAElB,GAAIuO,EAAGpI,WAAY,CACjB,GAAIoI,EAAGpI,WAAWJ,KAAO,EACvB,OAAO3G,EAAAA,EAAAA,KAAA,QAAAa,SAAM,YACR,GAAIsO,EAAGpI,WAAWC,2BACvB,OAAOhH,EAAAA,EAAAA,KAAA,QAAAa,SAAM,eAEjB,CACA,GAAIsO,EAAGzI,WAAY,CACjB,GAAIyI,EAAGzI,WAAWC,KAAO,EACvB,OAAO3G,EAAAA,EAAAA,KAAA,QAAAa,SAAM,YACR,GAAIsO,EAAGzI,WAAWG,2BACvB,OAAO7G,EAAAA,EAAAA,KAAA,QAAAa,SAAM,eAEjB,CACF,GAEF,CACEkF,MAAO,OACPqJ,WAAY,gBACZF,eAxDuB,SAACG,GAC1B,IAAIC,EAAUjK,IAAIgK,EAAU,2BAA4B,IAGxD,OAFAC,EAAUjK,IAAIgK,EAAU,sCAAuCC,EAGjE,EAoDIL,kBAAkB,GAEpB,CACElJ,MAAO,SACPqJ,WAAY,UAEd,CACErJ,MAAO,QACPkJ,kBAAkB,EAClBC,eAAgB,SAACC,GACf,IAAKA,EACH,OAAOnP,EAAAA,EAAAA,KAACY,EAAAA,SAAQ,IAElB,GAAIuO,EAAGpI,WAAY,CACjB,GAAIoI,EAAGpI,WAAWJ,KAAO,EACvB,OAAOhG,EAAAA,EAAAA,MAAA,QAAAE,SAAA,CAAOsO,EAAGpI,WAAWJ,KAAK,WAC5B,GAAIwI,EAAGpI,WAAWC,2BACvB,OAAOrG,EAAAA,EAAAA,MAAA,QAAAE,SAAA,CAAOsO,EAAGpI,WAAWC,2BAA2B,UAE3D,CACA,GAAImI,EAAGzI,WAAY,CACjB,GAAIyI,EAAGzI,WAAWC,KAAO,EACvB,OAAOhG,EAAAA,EAAAA,MAAA,QAAAE,SAAA,CAAOsO,EAAGzI,WAAWC,KAAK,WAC5B,GAAIwI,EAAGzI,WAAWG,2BACvB,OAAOlG,EAAAA,EAAAA,MAAA,QAAAE,SAAA,CAAOsO,EAAGzI,WAAWG,2BAA2B,UAE3D,CACF,GAEF,CACEd,MAAO,SACPqJ,WAAY,WAIVG,EAAmB,CACvB,CACE3J,KAAM,OAEN6F,QAAO,SAAC+D,GACNtB,EAAyBsB,GACzBxB,GAAqB,EACvB,GAEF,CACEpI,KAAM,SACN6F,QAAO,SAACgE,GACNnB,EAAcmB,GACdrB,GAAuB,EACzB,EACAsB,YAAY,IAIhB,OACE/O,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CACNkN,GAAqBE,IACpBjO,EAAAA,EAAAA,KAAC2P,EAA0B,CACzBrO,KAAMyM,EACN5M,qBA5IsB,SAACyO,GAC7B5B,GAAqB,GACrBE,EAAyB,MACrB0B,GACFlC,GAAoB,EAExB,EAuIQtM,eAAgBwK,EAChBvK,cAAe4M,IAGlBJ,IACC7N,EAAAA,EAAAA,KAAC6P,EAAiB,CAChBvO,KAAMuM,EACNjC,WAAYA,EACZzK,qBA7IqB,SAACyO,GAC5B9B,GAAoB,GAChB8B,GACFlC,GAAoB,EAExB,IA2IKS,GAAuBE,IACtBrO,EAAAA,EAAAA,KAAC8P,EAAyB,CACxBjR,GAAIwP,EACJzP,OAAQgN,EACRjN,WAAYwP,EACZzP,kBA9IkB,SAACkR,GACzBxB,GAAuB,GACvBE,EAAc,MAEVsB,GACFlC,GAAoB,EAExB,KA0II1N,EAAAA,EAAAA,KAAC+P,EAAAA,IAAY,CACXC,WAAS,EACTtF,GAAI,CAAEuF,aAAc,IACpBC,SACElQ,EAAAA,EAAAA,KAACmQ,EAAAA,EAAe,CACdC,OAAQ,CACN3B,EAAAA,GAAW4B,+BACX5B,EAAAA,GAAW6B,gBAEbC,SAAU3E,EACV4E,UAAQ,EACRC,WAAY,CAAE3G,UAAU,GAAOjJ,UAE/Bb,EAAAA,EAAAA,KAAC0Q,EAAAA,EAAc,CAACC,QAAS,qBAAqB9P,UAC5Cb,EAAAA,EAAAA,KAACuL,EAAAA,IAAM,CACL1M,GAAI,4BACJ4M,QAAS,WACPqC,GAAoB,EACtB,EACA/H,MAAO,qBACP6K,MAAM5Q,EAAAA,EAAAA,KAAC6Q,EAAAA,IAAO,IACdrF,QAAS,mBAIhB3K,SACF,qBAGDF,EAAAA,EAAAA,MAAC4J,EAAAA,IAAI,CAACkC,WAAS,EAAA5L,SAAA,EACbb,EAAAA,EAAAA,KAACuK,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAG5J,UAChBb,EAAAA,EAAAA,KAACmQ,EAAAA,EAAe,CACdC,OAAQ,CACN3B,EAAAA,GAAWC,+BACXD,EAAAA,GAAWE,gBAEb4B,SAAU3E,EACV6E,WAAY,CAAE3G,UAAU,GAAOjJ,UAE/Bb,EAAAA,EAAAA,KAAC8Q,EAAAA,IAAS,CACRC,YAAaxB,EACbyB,QAAShC,EACT3O,UAAWoN,EACXqB,QAASnB,EACTsD,WAAW,YACXC,mBAAmB,mCACnBC,QAAQ,KACRC,kBAAmB,eAIvB3D,IACA9M,EAAAA,EAAAA,MAAC4J,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAG5J,SAAA,EAChBb,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAACqR,EAAAA,IAAO,CACNnR,MAAO,kBACPoR,eAAetR,EAAAA,EAAAA,KAACuR,EAAAA,IAAS,IACzBC,MACE7Q,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CAAC,8NAKRb,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,SAAM,4BACoB,KAC1BA,EAAAA,EAAAA,KAAA,KACEyR,KAAK,4GACL7H,OAAO,SACP8H,IAAI,WAAU7Q,SACf,kBAEG,iBAUtB,C,mLC3RM8Q,GAAeC,EAAAA,EAAAA,IAAW,SAACC,GAAK,MAAM,CAC1CC,KAAM,CACJC,MAAO,GACPC,OAAQ,GACR9M,QAAS,EACT+M,OAAQ,GAEVC,WAAY,CACVhN,QAAS,EACT,YAAa,CACXiN,UAAW,mBACXzG,MAAOmG,EAAMO,QAAQC,OAAOC,MAC5B,aAAc,CACZC,gBAAiB,UACjBC,UAAW,oCACXC,QAAS,EACTC,OAAQ,SAGZ,wBAAyB,CACvBhH,MAAO,UACPgH,OAAQ,mBAGZC,MAAO,CACLZ,MAAO,GACPC,OAAQ,GACRO,gBAAiB,UACjBG,OAAQ,oBACRE,WAAY,GAEdC,MAAO,CACLC,aAAc,GACdP,gBAAiB,UACjBC,UAAW,oCACXC,QAAS,EACT/L,WAAYmL,EAAMkB,YAAYC,OAAO,CAAC,mBAAoB,YAE5DvJ,QAAS,CAAC,EACVwJ,aAAc,CAAC,EACfC,gBAAiB,CACfC,QAAS,OACTC,WAAY,SACZC,eAAgB,YAEnB,GA7CoBzB,CA6CjBrI,EAAAA,GAqGJ,KAAeqI,EAAAA,EAAAA,IAxKA,SAACC,GAAY,OAC1ByB,EAAAA,EAAAA,IAAY5K,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CACX6K,iBAAkB,CAChBC,WAAY,OACZ9H,MAAO,sBAET+H,eAAgB,CACdC,SAAU,GACVhI,MAAO,UACPuG,OAAQ,gBAEV0B,iBAAkB,CAChBC,UAAW,EACXlI,MAAO,WAETiF,QAAS,CACP+C,SAAU,KAETG,EAAAA,IACAC,EAAAA,IACF,GAoJL,EAnG0B,SAAHrV,GAcH,IAADsV,EAAAtV,EAbjBsH,MAAAA,OAAK,IAAAgO,EAAG,GAAEA,EACVpK,EAAQlL,EAARkL,SACA9D,EAAKpH,EAALoH,MACAhH,EAAEJ,EAAFI,GACA6K,EAAIjL,EAAJiL,KAAIsK,EAAAvV,EACJgL,QAAAA,OAAO,IAAAuK,GAAQA,EAAAC,EAAAxV,EACfqL,SAAAA,OAAQ,IAAAmK,GAAQA,EAAAC,EAAAzV,EAChB0V,WAAAA,OAAU,IAAAD,GAAQA,EAAAE,EAAA3V,EAClBkS,QAAAA,OAAO,IAAAyD,EAAG,GAAEA,EAAAC,EAAA5V,EACZ2O,YAAAA,OAAW,IAAAiH,EAAG,GAAEA,EAChBC,EAAO7V,EAAP6V,QACA9K,EAAe/K,EAAf+K,gBAAe+K,EAAA9V,EACf+V,gBAAAA,OAAe,IAAAD,EAAG,CAAC,EAACA,EAEdE,GACJ9T,EAAAA,EAAAA,MAAC+T,EAAAA,SAAc,CAAA7T,SAAA,EACXsT,IACAnU,EAAAA,EAAAA,KAAA,QACE2U,WAAWC,EAAAA,EAAAA,GAAKN,EAAQb,gBAAcoB,EAAAA,EAAAA,GAAA,GACnCP,EAAQf,kBAAoB9J,IAC5B5I,SAEF2I,GAAmBA,EAAgBjE,OAAS,EACzCiE,EAAgB,GAChB,SAGRxJ,EAAAA,EAAAA,KAAC2R,EAAY,CACXlI,QAASA,EACTE,SAAUA,EACV+B,MAAM,UACNhC,KAAMA,EACNoL,YAAUpM,EAAAA,EAAAA,GAAA,CAAI,aAAc,oBAAuB8L,GACnD1K,SAAUA,EACViL,eAAa,EACbC,oBAAkB,EAClBC,oBAAkB,EAClBpP,MAAOA,EACPhH,GAAIA,KAEJsV,IACAnU,EAAAA,EAAAA,KAAA,QACE2U,WAAWC,EAAAA,EAAAA,GAAKN,EAAQb,gBAAcoB,EAAAA,EAAAA,GAAA,GACnCP,EAAQf,iBAAmB9J,IAC3B5I,SAEF2I,EAAkBA,EAAgB,GAAK,UAMhD,OAAI2K,EACKM,GAIPzU,EAAAA,EAAAA,KAAA,OAAAa,UACEF,EAAAA,EAAAA,MAAC4J,EAAAA,GAAI,CAACkC,WAAS,EAAC2G,WAAY,SAASvS,SAAA,EACnCb,EAAAA,EAAAA,KAACuK,EAAAA,GAAI,CAACC,MAAI,EAACC,GAAI,GAAIyK,GAAI,EAAGC,GAAI,EAAEtU,SACnB,KAAVkF,IACCpF,EAAAA,EAAAA,MAACyU,EAAAA,EAAU,CAACC,QAASxW,EAAI8V,UAAWL,EAAQgB,WAAWzU,SAAA,EACrDb,EAAAA,EAAAA,KAAA,QAAAa,SAAOkF,IACM,KAAZ4K,IACC3Q,EAAAA,EAAAA,KAAA,OAAK2U,UAAWL,EAAQiB,iBAAiB1U,UACvCb,EAAAA,EAAAA,KAACwV,EAAAA,EAAO,CAACtV,MAAOyQ,EAAS8E,UAAU,YAAW5U,UAC5Cb,EAAAA,EAAAA,KAAA,OAAK2U,UAAWL,EAAQ3D,QAAQ9P,UAC9Bb,EAAAA,EAAAA,KAAC0V,EAAAA,IAAQ,gBAQvB1V,EAAAA,EAAAA,KAACuK,EAAAA,GAAI,CACHC,MAAI,EACJC,GAAI,GACJyK,GAAc,KAAVnP,EAAe,EAAI,GACvBoP,GAAc,KAAVpP,EAAe,EAAI,GACvB4P,UAAW,QACXtC,eAAgB,MAChBsB,UAAWL,EAAQpB,gBAAgBrS,SAElC4T,IAEc,KAAhBrH,IACCpN,EAAAA,EAAAA,KAACuK,EAAAA,GAAI,CAACC,MAAI,EAACC,GAAI,GAAIkL,UAAW,OAAO9U,UACnCb,EAAAA,EAAAA,KAAC6K,EAAAA,EAAU,CAAC+K,UAAU,IAAIjB,UAAWL,EAAQX,iBAAiB9S,SAC3DuM,UAOf,G,yGCvGA,KAAewE,EAAAA,EAAAA,IA3EA,SAACC,GAAY,OAC1ByB,EAAAA,EAAAA,GAAa,CACXuC,cAAe,CACbnD,OAAQ,oBACRI,aAAc,EACdpH,MAAO,UACP6G,gBAAiB,OACjBmB,SAAU,KAEX,GAkEL,EAhEsB,SAAHjV,GAOG,IANpB6V,EAAO7V,EAAP6V,QACAzV,EAAEJ,EAAFI,GACAoO,EAAYxO,EAAZwO,aACAC,EAASzO,EAATyO,UAAS+G,EAAAxV,EACTqL,SAAAA,OAAQ,IAAAmK,GAAQA,EAChB6B,EAAYrX,EAAZqX,aAEAC,EAAgCrB,EAAAA,SAAmC,MAAKsB,GAAA7W,EAAAA,EAAAA,GAAA4W,EAAA,GAAjEE,EAAQD,EAAA,GAAEE,EAAWF,EAAA,GACtB1U,EAAO6U,QAAQF,GAIfG,EAAc,SAACC,GACnBH,EAAY,MACI,KAAZG,GAAkBP,GACpBA,EAAaO,EAEjB,EAEA,OACE1V,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,EACPb,EAAAA,EAAAA,KAAA,UACEnB,GAAE,GAAAiH,OAAKjH,EAAE,WACT,mBAAAiH,OAAkBjH,EAAE,SACpB,gBAAc,OACd,gBAAeyC,EAAO,YAASgV,EAC/B7K,QAjBc,SAACvD,GACnBgO,EAAYhO,EAAMqO,cACpB,EAgBM5B,UAAWL,EAAQuB,cACnB/L,SAAUA,EACVlE,KAAM,SAAS/E,SAEdoM,KAEHjN,EAAAA,EAAAA,KAACwW,EAAAA,EAAI,CACH3X,GAAE,GAAAiH,OAAKjH,EAAE,SACT,qBAAAiH,OAAoBjH,EAAE,WACtBoX,SAAUA,EACV3U,KAAMA,EACNb,QAAS,WACP2V,EAAY,GACd,EACAK,aAAc,CACZC,SAAU,SACVC,WAAY,UAEdC,gBAAiB,CACfF,SAAU,MACVC,WAAY,UACZ9V,SAEDqM,EAAUzH,KAAI,SAACoR,GAAI,OAClB7W,EAAAA,EAAAA,KAAC8W,EAAAA,EAAQ,CACPrL,QAAS,kBAAM2K,EAAYS,EAAKhR,MAAM,EAAChF,SAGtCgW,EAAK9Q,OAAK,YAAAD,OAFM+Q,EAAKhR,MAAK,KAAAC,OAAI+Q,EAAK9Q,OAG3B,QAKrB,G,2HCsJA,IAhN2B,SAAHtH,GASI,IAR1BuM,EAAQvM,EAARuM,SACAtB,EAAIjL,EAAJiL,KACA3D,EAAKtH,EAALsH,MAAKqO,EAAA3V,EACLkS,QAAAA,OAAO,IAAAyD,EAAG,GAAEA,EAAA2C,EAAAtY,EACZyM,eAAAA,OAAc,IAAA6L,EAAG,GAAEA,EAAAC,EAAAvY,EACnB0M,iBAAAA,OAAgB,IAAA6L,EAAG,GAAEA,EACrBrN,EAAQlL,EAARkL,SAAQsN,EAAAxY,EACR2M,WAAAA,OAAU,IAAA6L,GAAQA,EAElBjY,GAAsCC,EAAAA,EAAAA,UAAmB,CAAC,KAAIC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAvDkY,EAAWhY,EAAA,GAAEiY,EAAcjY,EAAA,GAClCuC,GAA0CxC,EAAAA,EAAAA,UAAmB,CAAC,KAAIyC,GAAAvC,EAAAA,EAAAA,GAAAsC,EAAA,GAA3D2V,EAAa1V,EAAA,GAAE2V,EAAgB3V,EAAA,GAChC4V,GAAaC,EAAAA,EAAAA,cAGnBjY,EAAAA,EAAAA,YAAU,WACR,GACyB,IAAvB4X,EAAY3R,QACO,KAAnB2R,EAAY,IACa,IAAzBE,EAAc7R,QACO,KAArB6R,EAAc,IACdpM,GACa,KAAbA,EACA,CACA,IAAMwM,EAAgBxM,EAASyM,MAAM,KACjCC,EAAO,GACPC,EAAS,GAEbH,EAAcI,SAAQ,SAACC,GACrB,IAAMC,EAAeD,EAAQJ,MAAM,KACP,IAAxBK,EAAavS,SACfmS,EAAKK,KAAKD,EAAa,IACvBH,EAAOI,KAAKD,EAAa,IAE7B,IAEAJ,EAAKK,KAAK,IACVJ,EAAOI,KAAK,IAEZZ,EAAeO,GACfL,EAAiBM,EACnB,CACF,GAAG,CAACT,EAAaE,EAAepM,KAGhC1L,EAAAA,EAAAA,YAAU,WACR,IAAM0Y,EAAYV,EAAWW,QACzBD,GAAad,EAAY3R,OAAS,GACpCyS,EAAUE,gBAAe,EAG7B,GAAG,CAAChB,IAGJ,IAAMiB,GAAcC,EAAAA,EAAAA,SAAO,IAC3BC,EAAAA,EAAAA,kBAAgB,WACVF,EAAYF,QACdE,EAAYF,SAAU,EAGxBK,GAEF,GAAG,CAACpB,EAAaE,IAGjB,IAiBMmB,EAAc,SAACtQ,GACnBA,EAAEuQ,UAEF,IAAIC,GAAcC,EAAAA,EAAAA,GAAOxB,GACnB1P,EAAQnC,IAAI4C,EAAE2B,OAAQ,gBAAiB,KAE7C6O,EADiBhQ,SAASjB,IACCS,EAAE2B,OAAO/D,MAEpCsR,EAAesB,EACjB,EAEME,EAAgB,SAAC1Q,GACrBA,EAAEuQ,UAEF,IAAIC,GAAcC,EAAAA,EAAAA,GAAOtB,GACnB5P,EAAQnC,IAAI4C,EAAE2B,OAAQ,gBAAiB,KAE7C6O,EADiBhQ,SAASjB,IACCS,EAAE2B,OAAO/D,MAEpCwR,EAAiBoB,EACnB,EAGMH,EAAoBM,KAAS,WACjC,IAAIC,EAAc,GAElB3B,EAAYU,SAAQ,SAACkB,EAAQtR,GAC3B,GAAI0P,EAAY1P,IAAU4P,EAAc5P,GAAQ,CAC9C,IAAIuR,EAAY,GAAAjT,OAAMgT,EAAM,KAAAhT,OAAIsR,EAAc5P,IAChC,IAAVA,IACFuR,EAAY,IAAAjT,OAAOiT,IAErBF,EAAW,GAAA/S,OAAM+S,GAAW/S,OAAGiT,EACjC,CACF,IAEApP,EAASkP,EACX,GAAG,KAEGG,EAAS5B,EAAc3R,KAAI,SAACoS,EAASrQ,GACzC,OACE7G,EAAAA,EAAAA,MAAC4J,EAAAA,IAAI,CACHC,MAAI,EACJC,GAAI,GACJkK,UAAW,2BAA2B9T,SAAA,EAGtCb,EAAAA,EAAAA,KAAC6J,EAAAA,IAAQ,CACPhL,GAAE,GAAAiH,OAAK4D,EAAI,SAAA5D,OAAQ0B,EAAMZ,YACzBb,MAAO,GACP2D,KAAI,GAAA5D,OAAK4D,EAAI,KAAA5D,OAAI0B,EAAMZ,YACvBf,MAAOqR,EAAY1P,GACnBmC,SAAU4O,EACV/Q,MAAOA,EACP8C,YAAaY,KAEflL,EAAAA,EAAAA,KAAA,QAAM2U,UAAW,WAAW9T,SAAC,OAC7Bb,EAAAA,EAAAA,KAAC6J,EAAAA,IAAQ,CACPhL,GAAE,GAAAiH,OAAK4D,EAAI,WAAA5D,OAAU0B,EAAMZ,YAC3Bb,MAAO,GACP2D,KAAI,GAAA5D,OAAK4D,EAAI,KAAA5D,OAAI0B,EAAMZ,YACvBf,MAAOuR,EAAc5P,GACrBmC,SAAUgP,EACVnR,MAAOA,EACP8C,YAAaa,EACb8N,YAAazR,IAAU4P,EAAc7R,OAAS,GAAIvF,EAAAA,EAAAA,KAAC6Q,EAAAA,IAAO,IAAM,KAChEqI,cAAe,YAnFF,WACnB,GACiD,KAA/ChC,EAAYA,EAAY3R,OAAS,GAAG4T,QACe,KAAnD/B,EAAcA,EAAc7R,OAAS,GAAG4T,OACxC,CACA,IAAMC,GAAQV,EAAAA,EAAAA,GAAOxB,GACfmC,GAAUX,EAAAA,EAAAA,GAAOtB,GAEvBgC,EAASrB,KAAK,IACdsB,EAAWtB,KAAK,IAEhBZ,EAAeiC,GACf/B,EAAiBgC,EACnB,CACF,CAsEUC,EACF,MACA,cAAAxT,OAxBiB4D,EAAI,KAAA5D,OAAI0B,EAAMZ,YA2BvC,IAEA,OACE5G,EAAAA,EAAAA,KAACY,EAAAA,SAAQ,CAAAC,UACPF,EAAAA,EAAAA,MAAC4J,EAAAA,IAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,CACF,oBAAqB,CACnByI,QAAS,QAEX,cAAe,CACboG,UAAW,SACXtH,OAAQ,cACRuB,WAAY,MAEd3S,SAAA,EAEFF,EAAAA,EAAAA,MAACyU,EAAAA,IAAU,CAAAvU,SAAA,CACRkF,EACY,KAAZ4K,IACC3Q,EAAAA,EAAAA,KAACwZ,EAAAA,IAAG,CACF9O,GAAI,CACFkI,WAAY,EACZO,QAAS,OACTC,WAAY,SACZ,cAAe,CACbrB,MAAO,KAETlR,UAEFb,EAAAA,EAAAA,KAACwV,EAAAA,IAAO,CAAC7E,QAASA,EAAS8E,UAAU,MAAK5U,UACxCb,EAAAA,EAAAA,KAAC0V,EAAAA,IAAQ,CAAC+D,MAAO,CAAE1H,MAAO,GAAIC,OAAQ,cAK9CrR,EAAAA,EAAAA,MAAC6Y,EAAAA,IAAG,CACFlQ,YAAa8B,EACbV,GAAI,CACFxF,QAAS,GACT8M,OAAQ,IACR0H,UAAW,OACXC,SAAU,WACV/F,UAAW,IACX/S,SAAA,CAEDmY,GACDhZ,EAAAA,EAAAA,KAAA,OAAK4Z,IAAKtC,WAKpB,C","sources":["screens/Console/Buckets/BucketDetails/DeleteBucketLifecycleRule.tsx","screens/Console/Buckets/BucketDetails/EditLifecycleConfiguration.tsx","screens/Console/Buckets/BucketDetails/AddLifecycleModal.tsx","screens/Console/Buckets/BucketDetails/BucketLifecyclePanel.tsx","screens/Console/Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper.tsx","screens/Console/Common/FormComponents/InputUnitMenu/InputUnitMenu.tsx","screens/Console/Common/FormComponents/QueryMultiSelector/QueryMultiSelector.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState, Fragment } from \"react\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\n\ninterface IDeleteLifecycleRule {\n deleteOpen: boolean;\n onCloseAndRefresh: (refresh: boolean) => any;\n bucket: string;\n id: string;\n}\n\nconst DeleteBucketLifecycleRule = ({\n onCloseAndRefresh,\n deleteOpen,\n bucket,\n id,\n}: IDeleteLifecycleRule) => {\n const dispatch = useAppDispatch();\n const [deletingRule, setDeletingRule] = useState(false);\n\n useEffect(() => {\n if (deletingRule) {\n api.buckets\n .deleteBucketLifecycleRule(bucket, id)\n .then(() => {\n setDeletingRule(false);\n onCloseAndRefresh(true);\n })\n .catch((err) => {\n setDeletingRule(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n }, [deletingRule, bucket, id, onCloseAndRefresh, dispatch]);\n\n const onConfirmDelete = () => {\n setDeletingRule(true);\n };\n\n return (\n }\n onClose={() => onCloseAndRefresh(false)}\n confirmationContent={\n \n Are you sure you want to delete the {id} rule?\n \n }\n />\n );\n};\n\nexport default DeleteBucketLifecycleRule;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 {\n Button,\n FormLayout,\n Grid,\n InputBox,\n LifecycleConfigIcon,\n ProgressBar,\n RadioGroup,\n Select,\n Switch,\n} from \"mds\";\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Typography,\n} from \"@mui/material\";\nimport { api } from \"api\";\nimport { Tier } from \"api/consoleApi\";\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { ITiersDropDown, LifeCycleItem } from \"../types\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport QueryMultiSelector from \"../../Common/FormComponents/QueryMultiSelector/QueryMultiSelector\";\n\ninterface IAddUserContentProps {\n closeModalAndRefresh: (reload: boolean) => void;\n selectedBucket: string;\n lifecycleRule: LifeCycleItem;\n open: boolean;\n}\n\nconst EditLifecycleConfiguration = ({\n closeModalAndRefresh,\n selectedBucket,\n lifecycleRule,\n open,\n}: IAddUserContentProps) => {\n const dispatch = useAppDispatch();\n const [loadingTiers, setLoadingTiers] = useState(true);\n const [addLoading, setAddLoading] = useState(false);\n const [tags, setTags] = useState(\"\");\n const [enabled, setEnabled] = useState(false);\n const [tiersList, setTiersList] = useState([]);\n const [prefix, setPrefix] = useState(\"\");\n const [storageClass, setStorageClass] = useState(\"\");\n const [NCTransitionSC, setNCTransitionSC] = useState(\"\");\n const [expiredObjectDM, setExpiredObjectDM] = useState(false);\n const [NCExpirationDays, setNCExpirationDays] = useState(\"0\");\n const [NCTransitionDays, setNCTransitionDays] = useState(\"0\");\n const [ilmType, setIlmType] = useState<\"transition\" | \"expiry\">(\"expiry\");\n const [expiryDays, setExpiryDays] = useState(\"0\");\n const [transitionDays, setTransitionDays] = useState(\"0\");\n const [isFormValid, setIsFormValid] = useState(false);\n\n /*To be removed on component replacement*/\n const formFieldRowFilter = {\n \"& .MuiPaper-root\": { padding: 0 },\n };\n\n useEffect(() => {\n if (loadingTiers) {\n api.admin\n .tiersList()\n .then((res) => {\n const tiersList: Tier[] | null = get(res.data, \"items\", []);\n\n if (tiersList !== null && tiersList.length >= 1) {\n const objList = tiersList.map((tier: Tier) => {\n const tierType = tier.type;\n const value = get(tier, `${tierType}.name`, \"\");\n\n return { label: value, value: value };\n });\n\n setTiersList(objList);\n if (objList.length > 0) {\n setStorageClass(objList[0].value);\n }\n }\n setLoadingTiers(false);\n })\n .catch(() => {\n setLoadingTiers(false);\n });\n }\n }, [loadingTiers]);\n\n useEffect(() => {\n let valid = true;\n\n if (ilmType !== \"expiry\") {\n if (storageClass === \"\") {\n valid = false;\n }\n }\n setIsFormValid(valid);\n }, [ilmType, expiryDays, transitionDays, storageClass]);\n\n useEffect(() => {\n if (lifecycleRule.status === \"Enabled\") {\n setEnabled(true);\n }\n\n let transitionMode = false;\n\n if (lifecycleRule.transition) {\n if (\n lifecycleRule.transition.days &&\n lifecycleRule.transition.days !== 0\n ) {\n setTransitionDays(lifecycleRule.transition.days.toString());\n setIlmType(\"transition\");\n transitionMode = true;\n }\n if (\n lifecycleRule.transition.noncurrent_transition_days &&\n lifecycleRule.transition.noncurrent_transition_days !== 0\n ) {\n setNCTransitionDays(\n lifecycleRule.transition.noncurrent_transition_days.toString(),\n );\n setIlmType(\"transition\");\n transitionMode = true;\n }\n\n // Fallback to old rules by date\n if (\n lifecycleRule.transition.date &&\n lifecycleRule.transition.date !== \"0001-01-01T00:00:00Z\"\n ) {\n setIlmType(\"transition\");\n transitionMode = true;\n }\n }\n\n if (lifecycleRule.expiration) {\n if (\n lifecycleRule.expiration.days &&\n lifecycleRule.expiration.days !== 0\n ) {\n setExpiryDays(lifecycleRule.expiration.days.toString());\n setIlmType(\"expiry\");\n transitionMode = false;\n }\n if (\n lifecycleRule.expiration.noncurrent_expiration_days &&\n lifecycleRule.expiration.noncurrent_expiration_days !== 0\n ) {\n setNCExpirationDays(\n lifecycleRule.expiration.noncurrent_expiration_days.toString(),\n );\n setIlmType(\"expiry\");\n transitionMode = false;\n }\n\n // Fallback to old rules by date\n if (\n lifecycleRule.expiration.date &&\n lifecycleRule.expiration.date !== \"0001-01-01T00:00:00Z\"\n ) {\n setIlmType(\"expiry\");\n transitionMode = false;\n }\n }\n\n // Transition fields\n if (transitionMode) {\n setStorageClass(lifecycleRule.transition?.storage_class || \"\");\n setNCTransitionDays(\n lifecycleRule.transition?.noncurrent_transition_days?.toString() || \"0\",\n );\n setNCTransitionSC(\n lifecycleRule.transition?.noncurrent_storage_class || \"\",\n );\n } else {\n // Expiry fields\n setNCExpirationDays(\n lifecycleRule.expiration?.noncurrent_expiration_days?.toString() || \"0\",\n );\n }\n\n setExpiredObjectDM(!!lifecycleRule.expiration?.delete_marker);\n setPrefix(lifecycleRule.prefix || \"\");\n\n if (lifecycleRule.tags) {\n const tgs = lifecycleRule.tags.reduce(\n (stringLab: string, currItem: any, index: number) => {\n return `${stringLab}${index !== 0 ? \"&\" : \"\"}${currItem.key}=${\n currItem.value\n }`;\n },\n \"\",\n );\n\n setTags(tgs);\n }\n }, [lifecycleRule]);\n\n const saveRecord = (event: React.FormEvent) => {\n event.preventDefault();\n\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n if (selectedBucket !== null && lifecycleRule !== null) {\n let rules = {};\n\n if (ilmType === \"expiry\") {\n let expiry: { [key: string]: number } = {};\n\n if (\n lifecycleRule.expiration?.days &&\n lifecycleRule.expiration?.days > 0\n ) {\n expiry[\"expiry_days\"] = parseInt(expiryDays);\n }\n if (lifecycleRule.expiration?.noncurrent_expiration_days) {\n expiry[\"noncurrentversion_expiration_days\"] =\n parseInt(NCExpirationDays);\n }\n\n rules = {\n ...expiry,\n };\n } else {\n let transition: { [key: string]: number | string } = {};\n\n if (\n lifecycleRule.expiration?.days &&\n lifecycleRule.expiration?.days > 0\n ) {\n transition[\"transition_days\"] = parseInt(expiryDays);\n transition[\"storage_class\"] = storageClass;\n }\n if (lifecycleRule.expiration?.noncurrent_expiration_days) {\n transition[\"noncurrentversion_transition_days\"] =\n parseInt(NCExpirationDays);\n transition[\"noncurrentversion_transition_storage_class\"] =\n NCTransitionSC;\n }\n\n rules = {\n ...transition,\n };\n }\n\n const lifecycleUpdate = {\n type: ilmType,\n disable: !enabled,\n prefix,\n tags,\n expired_object_delete_marker: expiredObjectDM,\n ...rules,\n };\n\n api.buckets\n .updateBucketLifecycle(\n selectedBucket,\n lifecycleRule.id,\n lifecycleUpdate,\n )\n .then((res) => {\n setAddLoading(false);\n closeModalAndRefresh(true);\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }\n };\n\n let objectVersion = \"\";\n\n if (lifecycleRule.expiration) {\n if (lifecycleRule.expiration.days > 0) {\n objectVersion = \"Current Version\";\n } else if (lifecycleRule.expiration.noncurrent_expiration_days) {\n objectVersion = \"Non-Current Version\";\n }\n }\n\n if (lifecycleRule.transition) {\n if (lifecycleRule.transition.days > 0) {\n objectVersion = \"Current Version\";\n } else if (lifecycleRule.transition.noncurrent_transition_days) {\n objectVersion = \"Non-Current Version\";\n }\n }\n\n return (\n {\n closeModalAndRefresh(false);\n }}\n modalOpen={open}\n title={\"Edit Lifecycle Configuration\"}\n titleIcon={}\n >\n ) => {\n saveRecord(e);\n }}\n >\n \n {\n setEnabled(e.target.checked);\n }}\n />\n {}}\n disabled\n />\n {}}\n disableOptions\n />\n\n {}}\n disabled\n />\n\n {ilmType === \"expiry\" && lifecycleRule.expiration?.days && (\n ) => {\n setExpiryDays(e.target.value);\n }}\n label=\"Expiry Days\"\n value={expiryDays}\n min=\"0\"\n />\n )}\n\n {ilmType === \"expiry\" &&\n lifecycleRule.expiration?.noncurrent_expiration_days && (\n ) => {\n setNCExpirationDays(e.target.value);\n }}\n label=\"Non-current Expiration Days\"\n value={NCExpirationDays}\n min=\"0\"\n />\n )}\n {ilmType === \"transition\" && lifecycleRule.transition?.days && (\n \n ) => {\n setTransitionDays(e.target.value);\n }}\n label=\"Transition Days\"\n value={transitionDays}\n min=\"0\"\n />\n {\n setStorageClass(value);\n }}\n options={tiersList}\n />\n \n )}\n\n {ilmType === \"transition\" &&\n lifecycleRule.transition?.noncurrent_transition_days && (\n \n ) => {\n setNCTransitionDays(e.target.value);\n }}\n label=\"Non-current Transition Days\"\n value={NCTransitionDays}\n min=\"0\"\n />\n ) => {\n setNCTransitionSC(e.target.value);\n }}\n placeholder=\"Set Non-current Version Transition Storage Class\"\n label=\"Non-current Version Transition Storage Class\"\n value={NCTransitionSC}\n />\n \n )}\n \n \n \n Filters\n \n\n \n ) => {\n setPrefix(e.target.value);\n }}\n label=\"Prefix\"\n value={prefix}\n />\n {\n setTags(vl);\n }}\n keyPlaceholder=\"Tag Key\"\n valuePlaceholder=\"Tag Value\"\n withBorder\n />\n \n \n \n {ilmType === \"expiry\" &&\n lifecycleRule.expiration?.noncurrent_expiration_days && (\n \n \n \n Advanced\n \n\n \n ,\n ) => {\n setExpiredObjectDM(event.target.checked);\n }}\n label={\"Expired Object Delete Marker\"}\n />\n \n \n \n )}\n \n {\n closeModalAndRefresh(false);\n }}\n label={\"Cancel\"}\n />\n \n \n {addLoading && (\n \n \n \n )}\n \n \n \n );\n};\n\nexport default EditLifecycleConfiguration;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 {\n Button,\n FormLayout,\n InputBox,\n LifecycleConfigIcon,\n RadioGroup,\n Select,\n Grid,\n ProgressBar,\n} from \"mds\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"api\";\nimport { BucketVersioningResponse, Tier } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Typography,\n} from \"@mui/material\";\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { selDistSet, setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { ITiersDropDown } from \"../types\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport QueryMultiSelector from \"../../Common/FormComponents/QueryMultiSelector/QueryMultiSelector\";\nimport InputUnitMenu from \"../../Common/FormComponents/InputUnitMenu/InputUnitMenu\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\n\ninterface IReplicationModal {\n open: boolean;\n closeModalAndRefresh: (refresh: boolean) => any;\n bucketName: string;\n}\n\nconst AddLifecycleModal = ({\n open,\n closeModalAndRefresh,\n bucketName,\n}: IReplicationModal) => {\n const dispatch = useAppDispatch();\n const distributedSetup = useSelector(selDistSet);\n const [loadingTiers, setLoadingTiers] = useState(true);\n const [tiersList, setTiersList] = useState([]);\n const [addLoading, setAddLoading] = useState(false);\n const [versioningInfo, setVersioningInfo] =\n useState(null);\n const [prefix, setPrefix] = useState(\"\");\n const [tags, setTags] = useState(\"\");\n const [storageClass, setStorageClass] = useState(\"\");\n\n const [ilmType, setIlmType] = useState<\"expiry\" | \"transition\">(\"expiry\");\n const [targetVersion, setTargetVersion] = useState<\"current\" | \"noncurrent\">(\n \"current\",\n );\n const [lifecycleDays, setLifecycleDays] = useState(\"\");\n const [isFormValid, setIsFormValid] = useState(false);\n const [expiredObjectDM, setExpiredObjectDM] = useState(false);\n const [loadingVersioning, setLoadingVersioning] = useState(true);\n\n /*To be removed on component replacement*/\n const formFieldRowFilter = {\n \"& .MuiPaper-root\": { padding: 0 },\n };\n\n useEffect(() => {\n if (loadingTiers) {\n api.admin\n .tiersList()\n .then((res) => {\n const tiersList: Tier[] | null = get(res.data, \"items\", []);\n\n if (tiersList !== null && tiersList.length >= 1) {\n const objList = tiersList.map((tier: Tier) => {\n const tierType = tier.type;\n const value = get(tier, `${tierType}.name`, \"\");\n\n return { label: value, value: value };\n });\n\n setTiersList(objList);\n if (objList.length > 0) {\n setStorageClass(objList[0].value);\n }\n }\n setLoadingTiers(false);\n })\n .catch(() => {\n setLoadingTiers(false);\n });\n }\n }, [loadingTiers]);\n\n useEffect(() => {\n let valid = true;\n\n if (ilmType !== \"expiry\") {\n if (storageClass === \"\") {\n valid = false;\n }\n }\n setIsFormValid(valid);\n }, [ilmType, lifecycleDays, storageClass]);\n\n useEffect(() => {\n if (loadingVersioning && distributedSetup) {\n api.buckets\n .getBucketVersioning(bucketName)\n .then((res) => {\n setVersioningInfo(res.data);\n setLoadingVersioning(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err)));\n setLoadingVersioning(false);\n });\n }\n }, [loadingVersioning, dispatch, bucketName, distributedSetup]);\n\n const addRecord = () => {\n let rules = {};\n\n if (ilmType === \"expiry\") {\n let expiry: { [key: string]: number } = {};\n\n if (targetVersion === \"current\") {\n expiry[\"expiry_days\"] = parseInt(lifecycleDays);\n } else {\n expiry[\"noncurrentversion_expiration_days\"] = parseInt(lifecycleDays);\n }\n\n rules = {\n ...expiry,\n };\n } else {\n let transition: { [key: string]: number | string } = {};\n if (targetVersion === \"current\") {\n transition[\"transition_days\"] = parseInt(lifecycleDays);\n transition[\"storage_class\"] = storageClass;\n } else {\n transition[\"noncurrentversion_transition_days\"] =\n parseInt(lifecycleDays);\n transition[\"noncurrentversion_transition_storage_class\"] = storageClass;\n }\n\n rules = {\n ...transition,\n };\n }\n\n const lifecycleInsert = {\n type: ilmType,\n prefix,\n tags,\n expired_object_delete_marker: expiredObjectDM,\n ...rules,\n };\n\n api.buckets\n .addBucketLifecycle(bucketName, lifecycleInsert)\n .then(() => {\n setAddLoading(false);\n closeModalAndRefresh(true);\n })\n .catch((err) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err)));\n });\n };\n\n return (\n {\n closeModalAndRefresh(false);\n }}\n title=\"Add Lifecycle Rule\"\n titleIcon={}\n >\n {loadingTiers && (\n \n \n \n \n \n )}\n\n {!loadingTiers && (\n ) => {\n e.preventDefault();\n setAddLoading(true);\n addRecord();\n }}\n >\n \n {\n setIlmType(e.target.value as \"expiry\" | \"transition\");\n }}\n selectorOptions={[\n { value: \"expiry\", label: \"Expiry\" },\n { value: \"transition\", label: \"Transition\" },\n ]}\n />\n {versioningInfo?.status === \"Enabled\" && (\n {\n setTargetVersion(value as \"current\" | \"noncurrent\");\n }}\n options={[\n { value: \"current\", label: \"Current Version\" },\n { value: \"noncurrent\", label: \"Non-Current Version\" },\n ]}\n />\n )}\n\n ) => {\n if (e.target.validity.valid) {\n setLifecycleDays(e.target.value);\n }\n }}\n pattern={\"[0-9]*\"}\n label=\"After\"\n value={lifecycleDays}\n overlayObject={\n \n }\n />\n\n {ilmType === \"expiry\" ? (\n \n ) : (\n {\n setStorageClass(value as string);\n }}\n options={tiersList}\n />\n )}\n \n \n \n Filters\n \n \n \n ) => {\n setPrefix(e.target.value);\n }}\n label=\"Prefix\"\n value={prefix}\n />\n \n \n {\n setTags(vl);\n }}\n keyPlaceholder=\"Tag Key\"\n valuePlaceholder=\"Tag Value\"\n withBorder\n />\n \n \n \n \n {ilmType === \"expiry\" && targetVersion === \"noncurrent\" && (\n \n \n \n Advanced\n \n \n \n ,\n ) => {\n setExpiredObjectDM(event.target.checked);\n }}\n label={\"Expire Delete Marker\"}\n description={\n \"Remove the reference to the object if no versions are left\"\n }\n />\n \n \n \n \n )}\n\n \n {\n closeModalAndRefresh(false);\n }}\n label={\"Cancel\"}\n />\n \n \n {addLoading && (\n \n \n \n )}\n \n \n )}\n \n );\n};\n\nexport default AddLifecycleModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 {\n AddIcon,\n Button,\n DataTable,\n Grid,\n HelpBox,\n SectionTitle,\n TiersIcon,\n} from \"mds\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"api\";\nimport { ObjectBucketLifecycle } from \"api/consoleApi\";\nimport { LifeCycleItem } from \"../types\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../common/SecureComponent/permissions\";\nimport { selBucketDetailsLoading } from \"./bucketDetailsSlice\";\nimport { useParams } from \"react-router-dom\";\nimport { setHelpName } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport DeleteBucketLifecycleRule from \"./DeleteBucketLifecycleRule\";\nimport EditLifecycleConfiguration from \"./EditLifecycleConfiguration\";\nimport AddLifecycleModal from \"./AddLifecycleModal\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst BucketLifecyclePanel = () => {\n const loadingBucket = useSelector(selBucketDetailsLoading);\n const params = useParams();\n\n const [loadingLifecycle, setLoadingLifecycle] = useState(true);\n const [lifecycleRecords, setLifecycleRecords] = useState<\n ObjectBucketLifecycle[]\n >([]);\n const [addLifecycleOpen, setAddLifecycleOpen] = useState(false);\n const [editLifecycleOpen, setEditLifecycleOpen] = useState(false);\n const [selectedLifecycleRule, setSelectedLifecycleRule] =\n useState(null);\n const [deleteLifecycleOpen, setDeleteLifecycleOpen] =\n useState(false);\n const [selectedID, setSelectedID] = useState(null);\n const dispatch = useAppDispatch();\n\n const bucketName = params.bucketName || \"\";\n\n const displayLifeCycleRules = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_LIFECYCLE_CONFIGURATION,\n IAM_SCOPES.S3_GET_ACTIONS,\n ]);\n\n useEffect(() => {\n if (loadingBucket) {\n setLoadingLifecycle(true);\n }\n }, [loadingBucket, setLoadingLifecycle]);\n\n useEffect(() => {\n dispatch(setHelpName(\"bucket_detail_lifecycle\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (loadingLifecycle) {\n if (displayLifeCycleRules) {\n api.buckets\n .getBucketLifecycle(bucketName)\n .then((res) => {\n const records = get(res.data, \"lifecycle\", []);\n\n setLifecycleRecords(records || []);\n setLoadingLifecycle(false);\n })\n .catch((err) => {\n console.error(err.error);\n setLifecycleRecords([]);\n setLoadingLifecycle(false);\n });\n } else {\n setLoadingLifecycle(false);\n }\n }\n }, [\n loadingLifecycle,\n setLoadingLifecycle,\n bucketName,\n displayLifeCycleRules,\n ]);\n\n const closeEditLCAndRefresh = (refresh: boolean) => {\n setEditLifecycleOpen(false);\n setSelectedLifecycleRule(null);\n if (refresh) {\n setLoadingLifecycle(true);\n }\n };\n\n const closeAddLCAndRefresh = (refresh: boolean) => {\n setAddLifecycleOpen(false);\n if (refresh) {\n setLoadingLifecycle(true);\n }\n };\n\n const closeDelLCRefresh = (refresh: boolean) => {\n setDeleteLifecycleOpen(false);\n setSelectedID(null);\n\n if (refresh) {\n setLoadingLifecycle(true);\n }\n };\n\n const renderStorageClass = (objectST: any) => {\n let stClass = get(objectST, \"transition.storage_class\", \"\");\n stClass = get(objectST, \"transition.noncurrent_storage_class\", stClass);\n\n return stClass;\n };\n\n const lifecycleColumns = [\n {\n label: \"Type\",\n renderFullObject: true,\n renderFunction: (el: LifeCycleItem) => {\n if (!el) {\n return ;\n }\n if (\n el.expiration &&\n (el.expiration.days > 0 || el.expiration.noncurrent_expiration_days)\n ) {\n return Expiry;\n }\n if (\n el.transition &&\n (el.transition.days > 0 || el.transition.noncurrent_transition_days)\n ) {\n return Transition;\n }\n return ;\n },\n },\n {\n label: \"Version\",\n renderFullObject: true,\n renderFunction: (el: LifeCycleItem) => {\n if (!el) {\n return ;\n }\n if (el.expiration) {\n if (el.expiration.days > 0) {\n return Current;\n } else if (el.expiration.noncurrent_expiration_days) {\n return Non-Current;\n }\n }\n if (el.transition) {\n if (el.transition.days > 0) {\n return Current;\n } else if (el.transition.noncurrent_transition_days) {\n return Non-Current;\n }\n }\n },\n },\n {\n label: \"Tier\",\n elementKey: \"storage_class\",\n renderFunction: renderStorageClass,\n renderFullObject: true,\n },\n {\n label: \"Prefix\",\n elementKey: \"prefix\",\n },\n {\n label: \"After\",\n renderFullObject: true,\n renderFunction: (el: LifeCycleItem) => {\n if (!el) {\n return ;\n }\n if (el.expiration) {\n if (el.expiration.days > 0) {\n return {el.expiration.days} days;\n } else if (el.expiration.noncurrent_expiration_days) {\n return {el.expiration.noncurrent_expiration_days} days;\n }\n }\n if (el.transition) {\n if (el.transition.days > 0) {\n return {el.transition.days} days;\n } else if (el.transition.noncurrent_transition_days) {\n return {el.transition.noncurrent_transition_days} days;\n }\n }\n },\n },\n {\n label: \"Status\",\n elementKey: \"status\",\n },\n ];\n\n const lifecycleActions = [\n {\n type: \"view\",\n\n onClick(valueToSend: any): any {\n setSelectedLifecycleRule(valueToSend);\n setEditLifecycleOpen(true);\n },\n },\n {\n type: \"delete\",\n onClick(valueToDelete: string): any {\n setSelectedID(valueToDelete);\n setDeleteLifecycleOpen(true);\n },\n sendOnlyId: true,\n },\n ];\n\n return (\n \n {editLifecycleOpen && selectedLifecycleRule && (\n \n )}\n {addLifecycleOpen && (\n \n )}\n {deleteLifecycleOpen && selectedID && (\n \n )}\n \n \n {\n setAddLifecycleOpen(true);\n }}\n label={\"Add Lifecycle Rule\"}\n icon={}\n variant={\"callAction\"}\n />\n \n \n }\n >\n Lifecycle Rules\n \n \n \n \n \n \n \n {!loadingLifecycle && (\n \n
    \n }\n help={\n \n MinIO Object Lifecycle Management allows creating rules for\n time or date based automatic transition or expiry of objects.\n For object transition, MinIO automatically moves the object to\n a configured remote storage tier.\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 BucketLifecyclePanel;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { InputLabel, Switch, Tooltip, Typography } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport { actionsTray, fieldBasic } from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input/Input\";\n\ninterface IFormSwitch {\n label?: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n description?: string;\n index?: number;\n checked: boolean;\n switchOnly?: boolean;\n indicatorLabels?: string[];\n extraInputProps?: StandardInputProps[\"inputProps\"];\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n indicatorLabelOn: {\n fontWeight: \"bold\",\n color: \"#081C42 !important\",\n },\n indicatorLabel: {\n fontSize: 12,\n color: \"#E2E2E2\",\n margin: \"0 8px 0 10px\",\n },\n fieldDescription: {\n marginTop: 4,\n color: \"#999999\",\n },\n tooltip: {\n fontSize: 16,\n },\n ...actionsTray,\n ...fieldBasic,\n });\n\nconst StyledSwitch = withStyles((theme) => ({\n root: {\n width: 50,\n height: 24,\n padding: 0,\n margin: 0,\n },\n switchBase: {\n padding: 1,\n \"&$checked\": {\n transform: \"translateX(24px)\",\n color: theme.palette.common.white,\n \"& + $track\": {\n backgroundColor: \"#4CCB92\",\n boxShadow: \"inset 0px 1px 4px rgba(0,0,0,0.1)\",\n opacity: 1,\n border: \"none\",\n },\n },\n \"&$focusVisible $thumb\": {\n color: \"#4CCB92\",\n border: \"6px solid #fff\",\n },\n },\n thumb: {\n width: 22,\n height: 22,\n backgroundColor: \"#FAFAFA\",\n border: \"2px solid #FFFFFF\",\n marginLeft: 1,\n },\n track: {\n borderRadius: 24 / 2,\n backgroundColor: \"#E2E2E2\",\n boxShadow: \"inset 0px 1px 4px rgba(0,0,0,0.1)\",\n opacity: 1,\n transition: theme.transitions.create([\"background-color\", \"border\"]),\n },\n checked: {},\n focusVisible: {},\n switchContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n },\n}))(Switch);\n\nconst FormSwitchWrapper = ({\n label = \"\",\n onChange,\n value,\n id,\n name,\n checked = false,\n disabled = false,\n switchOnly = false,\n tooltip = \"\",\n description = \"\",\n classes,\n indicatorLabels,\n extraInputProps = {},\n}: IFormSwitch) => {\n const switchComponent = (\n \n {!switchOnly && (\n \n {indicatorLabels && indicatorLabels.length > 1\n ? indicatorLabels[1]\n : \"OFF\"}\n \n )}\n \n {!switchOnly && (\n \n {indicatorLabels ? indicatorLabels[0] : \"ON\"}\n \n )}\n \n );\n\n if (switchOnly) {\n return switchComponent;\n }\n\n return (\n
    \n \n \n {label !== \"\" && (\n \n {label}\n {tooltip !== \"\" && (\n
    \n \n
    \n \n
    \n
    \n
    \n )}\n
    \n )}\n
    \n \n {switchComponent}\n
    \n {description !== \"\" && (\n \n \n {description}\n \n \n )}\n \n
    \n );\n};\n\nexport default withStyles(styles)(FormSwitchWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { SelectorType } from \"mds\";\nimport { Menu, MenuItem } from \"@mui/material\";\n\ninterface IInputUnitBox {\n classes: any;\n id: string;\n unitSelected: string;\n unitsList: SelectorType[];\n disabled?: boolean;\n onUnitChange?: (newValue: string) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonTrigger: {\n border: \"#F0F2F2 1px solid\",\n borderRadius: 3,\n color: \"#838383\",\n backgroundColor: \"#fff\",\n fontSize: 12,\n },\n });\n\nconst InputUnitMenu = ({\n classes,\n id,\n unitSelected,\n unitsList,\n disabled = false,\n onUnitChange,\n}: IInputUnitBox) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const open = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleClose = (newUnit: string) => {\n setAnchorEl(null);\n if (newUnit !== \"\" && onUnitChange) {\n onUnitChange(newUnit);\n }\n };\n\n return (\n \n \n {unitSelected}\n \n {\n handleClose(\"\");\n }}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"center\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"center\",\n }}\n >\n {unitsList.map((unit) => (\n handleClose(unit.value)}\n key={`itemUnit-${unit.value}-${unit.label}`}\n >\n {unit.label}\n \n ))}\n \n \n );\n};\n\nexport default withStyles(styles)(InputUnitMenu);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, {\n ChangeEvent,\n createRef,\n Fragment,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport get from \"lodash/get\";\nimport debounce from \"lodash/debounce\";\nimport {\n AddIcon,\n Box,\n Grid,\n HelpIcon,\n InputBox,\n InputLabel,\n Tooltip,\n} from \"mds\";\n\ninterface IQueryMultiSelector {\n elements: string;\n name: string;\n label: string;\n tooltip?: string;\n keyPlaceholder?: string;\n valuePlaceholder?: string;\n withBorder?: boolean;\n onChange: (elements: string) => void;\n}\n\nconst QueryMultiSelector = ({\n elements,\n name,\n label,\n tooltip = \"\",\n keyPlaceholder = \"\",\n valuePlaceholder = \"\",\n onChange,\n withBorder = false,\n}: IQueryMultiSelector) => {\n const [currentKeys, setCurrentKeys] = useState([\"\"]);\n const [currentValues, setCurrentValues] = useState([\"\"]);\n const bottomList = createRef();\n\n // Use effect to get the initial values from props\n useEffect(() => {\n if (\n currentKeys.length === 1 &&\n currentKeys[0] === \"\" &&\n currentValues.length === 1 &&\n currentValues[0] === \"\" &&\n elements &&\n elements !== \"\"\n ) {\n const elementsSplit = elements.split(\"&\");\n let keys = [];\n let values = [];\n\n elementsSplit.forEach((element: string) => {\n const splittedVals = element.split(\"=\");\n if (splittedVals.length === 2) {\n keys.push(splittedVals[0]);\n values.push(splittedVals[1]);\n }\n });\n\n keys.push(\"\");\n values.push(\"\");\n\n setCurrentKeys(keys);\n setCurrentValues(values);\n }\n }, [currentKeys, currentValues, elements]);\n\n // Use effect to send new values to onChange\n useEffect(() => {\n const refScroll = bottomList.current;\n if (refScroll && currentKeys.length > 1) {\n refScroll.scrollIntoView(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentKeys]);\n\n // We avoid multiple re-renders / hang issue typing too fast\n const firstUpdate = useRef(true);\n useLayoutEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = false;\n return;\n }\n debouncedOnChange();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentKeys, currentValues]);\n\n // If the last input is not empty, we add a new one\n const addEmptyLine = () => {\n if (\n currentKeys[currentKeys.length - 1].trim() !== \"\" &&\n currentValues[currentValues.length - 1].trim() !== \"\"\n ) {\n const keysList = [...currentKeys];\n const valuesList = [...currentValues];\n\n keysList.push(\"\");\n valuesList.push(\"\");\n\n setCurrentKeys(keysList);\n setCurrentValues(valuesList);\n }\n };\n\n // Onchange function for input box, we get the dataset-index & only update that value in the array\n const onChangeKey = (e: ChangeEvent) => {\n e.persist();\n\n let updatedElement = [...currentKeys];\n const index = get(e.target, \"dataset.index\", \"0\");\n const indexNum = parseInt(index);\n updatedElement[indexNum] = e.target.value;\n\n setCurrentKeys(updatedElement);\n };\n\n const onChangeValue = (e: ChangeEvent) => {\n e.persist();\n\n let updatedElement = [...currentValues];\n const index = get(e.target, \"dataset.index\", \"0\");\n const indexNum = parseInt(index);\n updatedElement[indexNum] = e.target.value;\n\n setCurrentValues(updatedElement);\n };\n\n // Debounce for On Change\n const debouncedOnChange = debounce(() => {\n let queryString = \"\";\n\n currentKeys.forEach((keyVal, index) => {\n if (currentKeys[index] && currentValues[index]) {\n let insertString = `${keyVal}=${currentValues[index]}`;\n if (index !== 0) {\n insertString = `&${insertString}`;\n }\n queryString = `${queryString}${insertString}`;\n }\n });\n\n onChange(queryString);\n }, 500);\n\n const inputs = currentValues.map((element, index) => {\n return (\n \n \n :\n : null}\n overlayAction={() => {\n addEmptyLine();\n }}\n />\n \n );\n });\n\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n \n \n \n \n \n )}\n \n \n {inputs}\n
    \n \n \n \n );\n};\nexport default QueryMultiSelector;\n"],"names":["_ref","onCloseAndRefresh","deleteOpen","bucket","id","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","deletingRule","setDeletingRule","useEffect","api","buckets","deleteBucketLifecycleRule","then","catch","err","setErrorSnackMessage","errorToHandler","error","_jsx","ConfirmDialog","title","confirmText","isOpen","isLoading","onConfirm","titleIcon","ConfirmDeleteIcon","onClose","confirmationContent","_jsxs","Fragment","children","_lifecycleRule$expira10","_lifecycleRule$expira11","_lifecycleRule$transi5","_lifecycleRule$transi6","_lifecycleRule$expira12","closeModalAndRefresh","selectedBucket","lifecycleRule","open","loadingTiers","setLoadingTiers","_useState3","_useState4","addLoading","setAddLoading","_useState5","_useState6","tags","setTags","_useState7","_useState8","enabled","setEnabled","_useState9","_useState10","tiersList","setTiersList","_useState11","_useState12","prefix","setPrefix","_useState13","_useState14","storageClass","setStorageClass","_useState15","_useState16","NCTransitionSC","setNCTransitionSC","_useState17","_useState18","expiredObjectDM","setExpiredObjectDM","_useState19","_useState20","NCExpirationDays","setNCExpirationDays","_useState21","_useState22","NCTransitionDays","setNCTransitionDays","_useState23","_useState24","ilmType","setIlmType","_useState25","_useState26","expiryDays","setExpiryDays","_useState27","_useState28","transitionDays","setTransitionDays","_useState29","_useState30","isFormValid","setIsFormValid","formFieldRowFilter","padding","admin","res","get","data","length","objList","map","tier","tierType","type","value","concat","label","valid","_lifecycleRule$expira3","status","_lifecycleRule$transi","_lifecycleRule$transi2","_lifecycleRule$transi3","_lifecycleRule$transi4","_lifecycleRule$expira","_lifecycleRule$expira2","transitionMode","transition","days","toString","noncurrent_transition_days","date","expiration","noncurrent_expiration_days","storage_class","noncurrent_storage_class","delete_marker","tgs","reduce","stringLab","currItem","index","key","objectVersion","ModalWrapper","modalOpen","LifecycleConfigIcon","noValidate","autoComplete","onSubmit","e","event","preventDefault","rules","_lifecycleRule$expira4","_lifecycleRule$expira5","_lifecycleRule$expira6","expiry","parseInt","_objectSpread","_lifecycleRule$expira7","_lifecycleRule$expira8","_lifecycleRule$expira9","lifecycleUpdate","disable","expired_object_delete_marker","updateBucketLifecycle","setModalErrorSnackMessage","saveRecord","FormLayout","containerPadding","withBorders","Switch","indicatorLabels","checked","name","onChange","target","InputBox","disabled","RadioGroup","currentValue","selectorOptions","disableOptions","min","Select","options","placeholder","Grid","item","xs","sx","Accordion","AccordionSummary","Typography","AccordionDetails","QueryMultiSelector","elements","vl","keyPlaceholder","valuePlaceholder","withBorder","modalStyleUtils","modalButtonBar","Button","variant","onClick","color","ProgressBar","bucketName","distributedSetup","useSelector","selDistSet","versioningInfo","setVersioningInfo","targetVersion","setTargetVersion","lifecycleDays","setLifecycleDays","loadingVersioning","setLoadingVersioning","getBucketVersioning","container","lifecycleInsert","addBucketLifecycle","addRecord","validity","pattern","overlayObject","InputUnitMenu","unitSelected","unitsList","FormSwitchWrapper","description","loadingBucket","selBucketDetailsLoading","params","useParams","loadingLifecycle","setLoadingLifecycle","lifecycleRecords","setLifecycleRecords","addLifecycleOpen","setAddLifecycleOpen","editLifecycleOpen","setEditLifecycleOpen","selectedLifecycleRule","setSelectedLifecycleRule","deleteLifecycleOpen","setDeleteLifecycleOpen","selectedID","setSelectedID","displayLifeCycleRules","hasPermission","IAM_SCOPES","S3_GET_LIFECYCLE_CONFIGURATION","S3_GET_ACTIONS","setHelpName","getBucketLifecycle","records","console","lifecycleColumns","renderFullObject","renderFunction","el","elementKey","objectST","stClass","lifecycleActions","valueToSend","valueToDelete","sendOnlyId","EditLifecycleConfiguration","refresh","AddLifecycleModal","DeleteBucketLifecycleRule","SectionTitle","separator","marginBottom","actions","SecureComponent","scopes","S3_PUT_LIFECYCLE_CONFIGURATION","S3_PUT_ACTIONS","resource","matchAll","errorProps","TooltipWrapper","tooltip","icon","AddIcon","DataTable","itemActions","columns","entityName","customEmptyMessage","idField","customPaperHeight","HelpBox","iconComponent","TiersIcon","help","href","rel","StyledSwitch","withStyles","theme","root","width","height","margin","switchBase","transform","palette","common","white","backgroundColor","boxShadow","opacity","border","thumb","marginLeft","track","borderRadius","transitions","create","focusVisible","switchContainer","display","alignItems","justifyContent","createStyles","indicatorLabelOn","fontWeight","indicatorLabel","fontSize","fieldDescription","marginTop","actionsTray","fieldBasic","_ref$label","_ref$checked","_ref$disabled","_ref$switchOnly","switchOnly","_ref$tooltip","_ref$description","classes","_ref$extraInputProps","extraInputProps","switchComponent","React","className","clsx","_defineProperty","inputProps","disableRipple","disableFocusRipple","disableTouchRipple","sm","md","InputLabel","htmlFor","inputLabel","tooltipContainer","Tooltip","placement","HelpIcon","textAlign","component","buttonTrigger","onUnitChange","_React$useState","_React$useState2","anchorEl","setAnchorEl","Boolean","handleClose","newUnit","undefined","currentTarget","Menu","anchorOrigin","vertical","horizontal","transformOrigin","unit","MenuItem","_ref$keyPlaceholder","_ref$valuePlaceholder","_ref$withBorder","currentKeys","setCurrentKeys","currentValues","setCurrentValues","bottomList","createRef","elementsSplit","split","keys","values","forEach","element","splittedVals","push","refScroll","current","scrollIntoView","firstUpdate","useRef","useLayoutEffect","debouncedOnChange","onChangeKey","persist","updatedElement","_toConsumableArray","onChangeValue","debounce","queryString","keyVal","insertString","inputs","overlayIcon","overlayAction","trim","keysList","valuesList","addEmptyLine","alignSelf","Box","style","overflowY","position","ref"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/51.872b251a.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/DeleteBucketLifecycleRule.tsx","screens/Console/Buckets/BucketDetails/EditLifecycleConfiguration.tsx","screens/Console/Buckets/BucketDetails/AddLifecycleModal.tsx","screens/Console/Buckets/BucketDetails/BucketLifecyclePanel.tsx","screens/Console/Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper.tsx","screens/Console/Common/FormComponents/InputUnitMenu/InputUnitMenu.tsx","screens/Console/Common/FormComponents/QueryMultiSelector/QueryMultiSelector.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState, Fragment } from \"react\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\n\ninterface IDeleteLifecycleRule {\n deleteOpen: boolean;\n onCloseAndRefresh: (refresh: boolean) => any;\n bucket: string;\n id: string;\n}\n\nconst DeleteBucketLifecycleRule = ({\n onCloseAndRefresh,\n deleteOpen,\n bucket,\n id,\n}: IDeleteLifecycleRule) => {\n const dispatch = useAppDispatch();\n const [deletingRule, setDeletingRule] = useState(false);\n\n useEffect(() => {\n if (deletingRule) {\n api.buckets\n .deleteBucketLifecycleRule(bucket, id)\n .then(() => {\n setDeletingRule(false);\n onCloseAndRefresh(true);\n })\n .catch((err) => {\n setDeletingRule(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n }, [deletingRule, bucket, id, onCloseAndRefresh, dispatch]);\n\n const onConfirmDelete = () => {\n setDeletingRule(true);\n };\n\n return (\n }\n onClose={() => onCloseAndRefresh(false)}\n confirmationContent={\n \n Are you sure you want to delete the {id} rule?\n \n }\n />\n );\n};\n\nexport default DeleteBucketLifecycleRule;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 {\n Button,\n FormLayout,\n Grid,\n InputBox,\n LifecycleConfigIcon,\n ProgressBar,\n RadioGroup,\n Select,\n Switch,\n} from \"mds\";\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Typography,\n} from \"@mui/material\";\nimport { api } from \"api\";\nimport { Tier } from \"api/consoleApi\";\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { ITiersDropDown, LifeCycleItem } from \"../types\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport QueryMultiSelector from \"../../Common/FormComponents/QueryMultiSelector/QueryMultiSelector\";\n\ninterface IAddUserContentProps {\n closeModalAndRefresh: (reload: boolean) => void;\n selectedBucket: string;\n lifecycleRule: LifeCycleItem;\n open: boolean;\n}\n\nconst EditLifecycleConfiguration = ({\n closeModalAndRefresh,\n selectedBucket,\n lifecycleRule,\n open,\n}: IAddUserContentProps) => {\n const dispatch = useAppDispatch();\n const [loadingTiers, setLoadingTiers] = useState(true);\n const [addLoading, setAddLoading] = useState(false);\n const [tags, setTags] = useState(\"\");\n const [enabled, setEnabled] = useState(false);\n const [tiersList, setTiersList] = useState([]);\n const [prefix, setPrefix] = useState(\"\");\n const [storageClass, setStorageClass] = useState(\"\");\n const [NCTransitionSC, setNCTransitionSC] = useState(\"\");\n const [expiredObjectDM, setExpiredObjectDM] = useState(false);\n const [NCExpirationDays, setNCExpirationDays] = useState(\"0\");\n const [NCTransitionDays, setNCTransitionDays] = useState(\"0\");\n const [ilmType, setIlmType] = useState<\"transition\" | \"expiry\">(\"expiry\");\n const [expiryDays, setExpiryDays] = useState(\"0\");\n const [transitionDays, setTransitionDays] = useState(\"0\");\n const [isFormValid, setIsFormValid] = useState(false);\n\n /*To be removed on component replacement*/\n const formFieldRowFilter = {\n \"& .MuiPaper-root\": { padding: 0 },\n };\n\n useEffect(() => {\n if (loadingTiers) {\n api.admin\n .tiersList()\n .then((res) => {\n const tiersList: Tier[] | null = get(res.data, \"items\", []);\n\n if (tiersList !== null && tiersList.length >= 1) {\n const objList = tiersList.map((tier: Tier) => {\n const tierType = tier.type;\n const value = get(tier, `${tierType}.name`, \"\");\n\n return { label: value, value: value };\n });\n\n setTiersList(objList);\n if (objList.length > 0) {\n setStorageClass(objList[0].value);\n }\n }\n setLoadingTiers(false);\n })\n .catch(() => {\n setLoadingTiers(false);\n });\n }\n }, [loadingTiers]);\n\n useEffect(() => {\n let valid = true;\n\n if (ilmType !== \"expiry\") {\n if (storageClass === \"\") {\n valid = false;\n }\n }\n setIsFormValid(valid);\n }, [ilmType, expiryDays, transitionDays, storageClass]);\n\n useEffect(() => {\n if (lifecycleRule.status === \"Enabled\") {\n setEnabled(true);\n }\n\n let transitionMode = false;\n\n if (lifecycleRule.transition) {\n if (\n lifecycleRule.transition.days &&\n lifecycleRule.transition.days !== 0\n ) {\n setTransitionDays(lifecycleRule.transition.days.toString());\n setIlmType(\"transition\");\n transitionMode = true;\n }\n if (\n lifecycleRule.transition.noncurrent_transition_days &&\n lifecycleRule.transition.noncurrent_transition_days !== 0\n ) {\n setNCTransitionDays(\n lifecycleRule.transition.noncurrent_transition_days.toString(),\n );\n setIlmType(\"transition\");\n transitionMode = true;\n }\n\n // Fallback to old rules by date\n if (\n lifecycleRule.transition.date &&\n lifecycleRule.transition.date !== \"0001-01-01T00:00:00Z\"\n ) {\n setIlmType(\"transition\");\n transitionMode = true;\n }\n }\n\n if (lifecycleRule.expiration) {\n if (\n lifecycleRule.expiration.days &&\n lifecycleRule.expiration.days !== 0\n ) {\n setExpiryDays(lifecycleRule.expiration.days.toString());\n setIlmType(\"expiry\");\n transitionMode = false;\n }\n if (\n lifecycleRule.expiration.noncurrent_expiration_days &&\n lifecycleRule.expiration.noncurrent_expiration_days !== 0\n ) {\n setNCExpirationDays(\n lifecycleRule.expiration.noncurrent_expiration_days.toString(),\n );\n setIlmType(\"expiry\");\n transitionMode = false;\n }\n\n // Fallback to old rules by date\n if (\n lifecycleRule.expiration.date &&\n lifecycleRule.expiration.date !== \"0001-01-01T00:00:00Z\"\n ) {\n setIlmType(\"expiry\");\n transitionMode = false;\n }\n }\n\n // Transition fields\n if (transitionMode) {\n setStorageClass(lifecycleRule.transition?.storage_class || \"\");\n setNCTransitionDays(\n lifecycleRule.transition?.noncurrent_transition_days?.toString() || \"0\",\n );\n setNCTransitionSC(\n lifecycleRule.transition?.noncurrent_storage_class || \"\",\n );\n } else {\n // Expiry fields\n setNCExpirationDays(\n lifecycleRule.expiration?.noncurrent_expiration_days?.toString() || \"0\",\n );\n }\n\n setExpiredObjectDM(!!lifecycleRule.expiration?.delete_marker);\n setPrefix(lifecycleRule.prefix || \"\");\n\n if (lifecycleRule.tags) {\n const tgs = lifecycleRule.tags.reduce(\n (stringLab: string, currItem: any, index: number) => {\n return `${stringLab}${index !== 0 ? \"&\" : \"\"}${currItem.key}=${\n currItem.value\n }`;\n },\n \"\",\n );\n\n setTags(tgs);\n }\n }, [lifecycleRule]);\n\n const saveRecord = (event: React.FormEvent) => {\n event.preventDefault();\n\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n if (selectedBucket !== null && lifecycleRule !== null) {\n let rules = {};\n\n if (ilmType === \"expiry\") {\n let expiry: { [key: string]: number } = {};\n\n if (\n lifecycleRule.expiration?.days &&\n lifecycleRule.expiration?.days > 0\n ) {\n expiry[\"expiry_days\"] = parseInt(expiryDays);\n }\n if (lifecycleRule.expiration?.noncurrent_expiration_days) {\n expiry[\"noncurrentversion_expiration_days\"] =\n parseInt(NCExpirationDays);\n }\n\n rules = {\n ...expiry,\n };\n } else {\n let transition: { [key: string]: number | string } = {};\n\n if (\n lifecycleRule.expiration?.days &&\n lifecycleRule.expiration?.days > 0\n ) {\n transition[\"transition_days\"] = parseInt(expiryDays);\n transition[\"storage_class\"] = storageClass;\n }\n if (lifecycleRule.expiration?.noncurrent_expiration_days) {\n transition[\"noncurrentversion_transition_days\"] =\n parseInt(NCExpirationDays);\n transition[\"noncurrentversion_transition_storage_class\"] =\n NCTransitionSC;\n }\n\n rules = {\n ...transition,\n };\n }\n\n const lifecycleUpdate = {\n type: ilmType,\n disable: !enabled,\n prefix,\n tags,\n expired_object_delete_marker: expiredObjectDM,\n ...rules,\n };\n\n api.buckets\n .updateBucketLifecycle(\n selectedBucket,\n lifecycleRule.id,\n lifecycleUpdate,\n )\n .then((res) => {\n setAddLoading(false);\n closeModalAndRefresh(true);\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }\n };\n\n let objectVersion = \"\";\n\n if (lifecycleRule.expiration) {\n if (lifecycleRule.expiration.days > 0) {\n objectVersion = \"Current Version\";\n } else if (lifecycleRule.expiration.noncurrent_expiration_days) {\n objectVersion = \"Non-Current Version\";\n }\n }\n\n if (lifecycleRule.transition) {\n if (lifecycleRule.transition.days > 0) {\n objectVersion = \"Current Version\";\n } else if (lifecycleRule.transition.noncurrent_transition_days) {\n objectVersion = \"Non-Current Version\";\n }\n }\n\n return (\n {\n closeModalAndRefresh(false);\n }}\n modalOpen={open}\n title={\"Edit Lifecycle Configuration\"}\n titleIcon={}\n >\n ) => {\n saveRecord(e);\n }}\n >\n \n {\n setEnabled(e.target.checked);\n }}\n />\n {}}\n disabled\n />\n {}}\n disableOptions\n />\n\n {}}\n disabled\n />\n\n {ilmType === \"expiry\" && lifecycleRule.expiration?.days && (\n ) => {\n setExpiryDays(e.target.value);\n }}\n label=\"Expiry Days\"\n value={expiryDays}\n min=\"0\"\n />\n )}\n\n {ilmType === \"expiry\" &&\n lifecycleRule.expiration?.noncurrent_expiration_days && (\n ) => {\n setNCExpirationDays(e.target.value);\n }}\n label=\"Non-current Expiration Days\"\n value={NCExpirationDays}\n min=\"0\"\n />\n )}\n {ilmType === \"transition\" && lifecycleRule.transition?.days && (\n \n ) => {\n setTransitionDays(e.target.value);\n }}\n label=\"Transition Days\"\n value={transitionDays}\n min=\"0\"\n />\n {\n setStorageClass(value);\n }}\n options={tiersList}\n />\n \n )}\n\n {ilmType === \"transition\" &&\n lifecycleRule.transition?.noncurrent_transition_days && (\n \n ) => {\n setNCTransitionDays(e.target.value);\n }}\n label=\"Non-current Transition Days\"\n value={NCTransitionDays}\n min=\"0\"\n />\n ) => {\n setNCTransitionSC(e.target.value);\n }}\n placeholder=\"Set Non-current Version Transition Storage Class\"\n label=\"Non-current Version Transition Storage Class\"\n value={NCTransitionSC}\n />\n \n )}\n \n \n \n Filters\n \n\n \n ) => {\n setPrefix(e.target.value);\n }}\n label=\"Prefix\"\n value={prefix}\n />\n {\n setTags(vl);\n }}\n keyPlaceholder=\"Tag Key\"\n valuePlaceholder=\"Tag Value\"\n withBorder\n />\n \n \n \n {ilmType === \"expiry\" &&\n lifecycleRule.expiration?.noncurrent_expiration_days && (\n \n \n \n Advanced\n \n\n \n ,\n ) => {\n setExpiredObjectDM(event.target.checked);\n }}\n label={\"Expired Object Delete Marker\"}\n />\n \n \n \n )}\n \n {\n closeModalAndRefresh(false);\n }}\n label={\"Cancel\"}\n />\n \n \n {addLoading && (\n \n \n \n )}\n \n \n \n );\n};\n\nexport default EditLifecycleConfiguration;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 {\n Button,\n FormLayout,\n InputBox,\n LifecycleConfigIcon,\n RadioGroup,\n Select,\n Grid,\n ProgressBar,\n} from \"mds\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"api\";\nimport { BucketVersioningResponse, Tier } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Typography,\n} from \"@mui/material\";\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { selDistSet, setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { ITiersDropDown } from \"../types\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport QueryMultiSelector from \"../../Common/FormComponents/QueryMultiSelector/QueryMultiSelector\";\nimport InputUnitMenu from \"../../Common/FormComponents/InputUnitMenu/InputUnitMenu\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\n\ninterface IReplicationModal {\n open: boolean;\n closeModalAndRefresh: (refresh: boolean) => any;\n bucketName: string;\n}\n\nconst AddLifecycleModal = ({\n open,\n closeModalAndRefresh,\n bucketName,\n}: IReplicationModal) => {\n const dispatch = useAppDispatch();\n const distributedSetup = useSelector(selDistSet);\n const [loadingTiers, setLoadingTiers] = useState(true);\n const [tiersList, setTiersList] = useState([]);\n const [addLoading, setAddLoading] = useState(false);\n const [versioningInfo, setVersioningInfo] =\n useState(null);\n const [prefix, setPrefix] = useState(\"\");\n const [tags, setTags] = useState(\"\");\n const [storageClass, setStorageClass] = useState(\"\");\n\n const [ilmType, setIlmType] = useState<\"expiry\" | \"transition\">(\"expiry\");\n const [targetVersion, setTargetVersion] = useState<\"current\" | \"noncurrent\">(\n \"current\",\n );\n const [lifecycleDays, setLifecycleDays] = useState(\"\");\n const [isFormValid, setIsFormValid] = useState(false);\n const [expiredObjectDM, setExpiredObjectDM] = useState(false);\n const [loadingVersioning, setLoadingVersioning] = useState(true);\n\n /*To be removed on component replacement*/\n const formFieldRowFilter = {\n \"& .MuiPaper-root\": { padding: 0 },\n };\n\n useEffect(() => {\n if (loadingTiers) {\n api.admin\n .tiersList()\n .then((res) => {\n const tiersList: Tier[] | null = get(res.data, \"items\", []);\n\n if (tiersList !== null && tiersList.length >= 1) {\n const objList = tiersList.map((tier: Tier) => {\n const tierType = tier.type;\n const value = get(tier, `${tierType}.name`, \"\");\n\n return { label: value, value: value };\n });\n\n setTiersList(objList);\n if (objList.length > 0) {\n setStorageClass(objList[0].value);\n }\n }\n setLoadingTiers(false);\n })\n .catch(() => {\n setLoadingTiers(false);\n });\n }\n }, [loadingTiers]);\n\n useEffect(() => {\n let valid = true;\n\n if (ilmType !== \"expiry\") {\n if (storageClass === \"\") {\n valid = false;\n }\n }\n setIsFormValid(valid);\n }, [ilmType, lifecycleDays, storageClass]);\n\n useEffect(() => {\n if (loadingVersioning && distributedSetup) {\n api.buckets\n .getBucketVersioning(bucketName)\n .then((res) => {\n setVersioningInfo(res.data);\n setLoadingVersioning(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err)));\n setLoadingVersioning(false);\n });\n }\n }, [loadingVersioning, dispatch, bucketName, distributedSetup]);\n\n const addRecord = () => {\n let rules = {};\n\n if (ilmType === \"expiry\") {\n let expiry: { [key: string]: number } = {};\n\n if (targetVersion === \"current\") {\n expiry[\"expiry_days\"] = parseInt(lifecycleDays);\n } else {\n expiry[\"noncurrentversion_expiration_days\"] = parseInt(lifecycleDays);\n }\n\n rules = {\n ...expiry,\n };\n } else {\n let transition: { [key: string]: number | string } = {};\n if (targetVersion === \"current\") {\n transition[\"transition_days\"] = parseInt(lifecycleDays);\n transition[\"storage_class\"] = storageClass;\n } else {\n transition[\"noncurrentversion_transition_days\"] =\n parseInt(lifecycleDays);\n transition[\"noncurrentversion_transition_storage_class\"] = storageClass;\n }\n\n rules = {\n ...transition,\n };\n }\n\n const lifecycleInsert = {\n type: ilmType,\n prefix,\n tags,\n expired_object_delete_marker: expiredObjectDM,\n ...rules,\n };\n\n api.buckets\n .addBucketLifecycle(bucketName, lifecycleInsert)\n .then(() => {\n setAddLoading(false);\n closeModalAndRefresh(true);\n })\n .catch((err) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err)));\n });\n };\n\n return (\n {\n closeModalAndRefresh(false);\n }}\n title=\"Add Lifecycle Rule\"\n titleIcon={}\n >\n {loadingTiers && (\n \n \n \n \n \n )}\n\n {!loadingTiers && (\n ) => {\n e.preventDefault();\n setAddLoading(true);\n addRecord();\n }}\n >\n \n {\n setIlmType(e.target.value as \"expiry\" | \"transition\");\n }}\n selectorOptions={[\n { value: \"expiry\", label: \"Expiry\" },\n { value: \"transition\", label: \"Transition\" },\n ]}\n />\n {versioningInfo?.status === \"Enabled\" && (\n {\n setTargetVersion(value as \"current\" | \"noncurrent\");\n }}\n options={[\n { value: \"current\", label: \"Current Version\" },\n { value: \"noncurrent\", label: \"Non-Current Version\" },\n ]}\n />\n )}\n\n ) => {\n if (e.target.validity.valid) {\n setLifecycleDays(e.target.value);\n }\n }}\n pattern={\"[0-9]*\"}\n label=\"After\"\n value={lifecycleDays}\n overlayObject={\n \n }\n />\n\n {ilmType === \"expiry\" ? (\n \n ) : (\n {\n setStorageClass(value as string);\n }}\n options={tiersList}\n />\n )}\n \n \n \n Filters\n \n \n \n ) => {\n setPrefix(e.target.value);\n }}\n label=\"Prefix\"\n value={prefix}\n />\n \n \n {\n setTags(vl);\n }}\n keyPlaceholder=\"Tag Key\"\n valuePlaceholder=\"Tag Value\"\n withBorder\n />\n \n \n \n \n {ilmType === \"expiry\" && targetVersion === \"noncurrent\" && (\n \n \n \n Advanced\n \n \n \n ,\n ) => {\n setExpiredObjectDM(event.target.checked);\n }}\n label={\"Expire Delete Marker\"}\n description={\n \"Remove the reference to the object if no versions are left\"\n }\n />\n \n \n \n \n )}\n\n \n {\n closeModalAndRefresh(false);\n }}\n label={\"Cancel\"}\n />\n \n \n {addLoading && (\n \n \n \n )}\n \n \n )}\n \n );\n};\n\nexport default AddLifecycleModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 {\n AddIcon,\n Button,\n DataTable,\n Grid,\n HelpBox,\n SectionTitle,\n TiersIcon,\n} from \"mds\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"api\";\nimport { ObjectBucketLifecycle } from \"api/consoleApi\";\nimport { LifeCycleItem } from \"../types\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../common/SecureComponent/permissions\";\nimport { selBucketDetailsLoading } from \"./bucketDetailsSlice\";\nimport { useParams } from \"react-router-dom\";\nimport { setHelpName } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport DeleteBucketLifecycleRule from \"./DeleteBucketLifecycleRule\";\nimport EditLifecycleConfiguration from \"./EditLifecycleConfiguration\";\nimport AddLifecycleModal from \"./AddLifecycleModal\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst BucketLifecyclePanel = () => {\n const loadingBucket = useSelector(selBucketDetailsLoading);\n const params = useParams();\n\n const [loadingLifecycle, setLoadingLifecycle] = useState(true);\n const [lifecycleRecords, setLifecycleRecords] = useState<\n ObjectBucketLifecycle[]\n >([]);\n const [addLifecycleOpen, setAddLifecycleOpen] = useState(false);\n const [editLifecycleOpen, setEditLifecycleOpen] = useState(false);\n const [selectedLifecycleRule, setSelectedLifecycleRule] =\n useState(null);\n const [deleteLifecycleOpen, setDeleteLifecycleOpen] =\n useState(false);\n const [selectedID, setSelectedID] = useState(null);\n const dispatch = useAppDispatch();\n\n const bucketName = params.bucketName || \"\";\n\n const displayLifeCycleRules = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_LIFECYCLE_CONFIGURATION,\n IAM_SCOPES.S3_GET_ACTIONS,\n ]);\n\n useEffect(() => {\n if (loadingBucket) {\n setLoadingLifecycle(true);\n }\n }, [loadingBucket, setLoadingLifecycle]);\n\n useEffect(() => {\n dispatch(setHelpName(\"bucket_detail_lifecycle\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (loadingLifecycle) {\n if (displayLifeCycleRules) {\n api.buckets\n .getBucketLifecycle(bucketName)\n .then((res) => {\n const records = get(res.data, \"lifecycle\", []);\n\n setLifecycleRecords(records || []);\n setLoadingLifecycle(false);\n })\n .catch((err) => {\n console.error(err.error);\n setLifecycleRecords([]);\n setLoadingLifecycle(false);\n });\n } else {\n setLoadingLifecycle(false);\n }\n }\n }, [\n loadingLifecycle,\n setLoadingLifecycle,\n bucketName,\n displayLifeCycleRules,\n ]);\n\n const closeEditLCAndRefresh = (refresh: boolean) => {\n setEditLifecycleOpen(false);\n setSelectedLifecycleRule(null);\n if (refresh) {\n setLoadingLifecycle(true);\n }\n };\n\n const closeAddLCAndRefresh = (refresh: boolean) => {\n setAddLifecycleOpen(false);\n if (refresh) {\n setLoadingLifecycle(true);\n }\n };\n\n const closeDelLCRefresh = (refresh: boolean) => {\n setDeleteLifecycleOpen(false);\n setSelectedID(null);\n\n if (refresh) {\n setLoadingLifecycle(true);\n }\n };\n\n const renderStorageClass = (objectST: any) => {\n let stClass = get(objectST, \"transition.storage_class\", \"\");\n stClass = get(objectST, \"transition.noncurrent_storage_class\", stClass);\n\n return stClass;\n };\n\n const lifecycleColumns = [\n {\n label: \"Type\",\n renderFullObject: true,\n renderFunction: (el: LifeCycleItem) => {\n if (!el) {\n return ;\n }\n if (\n el.expiration &&\n (el.expiration.days > 0 || el.expiration.noncurrent_expiration_days)\n ) {\n return Expiry;\n }\n if (\n el.transition &&\n (el.transition.days > 0 || el.transition.noncurrent_transition_days)\n ) {\n return Transition;\n }\n return ;\n },\n },\n {\n label: \"Version\",\n renderFullObject: true,\n renderFunction: (el: LifeCycleItem) => {\n if (!el) {\n return ;\n }\n if (el.expiration) {\n if (el.expiration.days > 0) {\n return Current;\n } else if (el.expiration.noncurrent_expiration_days) {\n return Non-Current;\n }\n }\n if (el.transition) {\n if (el.transition.days > 0) {\n return Current;\n } else if (el.transition.noncurrent_transition_days) {\n return Non-Current;\n }\n }\n },\n },\n {\n label: \"Tier\",\n elementKey: \"storage_class\",\n renderFunction: renderStorageClass,\n renderFullObject: true,\n },\n {\n label: \"Prefix\",\n elementKey: \"prefix\",\n },\n {\n label: \"After\",\n renderFullObject: true,\n renderFunction: (el: LifeCycleItem) => {\n if (!el) {\n return ;\n }\n if (el.expiration) {\n if (el.expiration.days > 0) {\n return {el.expiration.days} days;\n } else if (el.expiration.noncurrent_expiration_days) {\n return {el.expiration.noncurrent_expiration_days} days;\n }\n }\n if (el.transition) {\n if (el.transition.days > 0) {\n return {el.transition.days} days;\n } else if (el.transition.noncurrent_transition_days) {\n return {el.transition.noncurrent_transition_days} days;\n }\n }\n },\n },\n {\n label: \"Status\",\n elementKey: \"status\",\n },\n ];\n\n const lifecycleActions = [\n {\n type: \"view\",\n\n onClick(valueToSend: any): any {\n setSelectedLifecycleRule(valueToSend);\n setEditLifecycleOpen(true);\n },\n },\n {\n type: \"delete\",\n onClick(valueToDelete: string): any {\n setSelectedID(valueToDelete);\n setDeleteLifecycleOpen(true);\n },\n sendOnlyId: true,\n },\n ];\n\n return (\n \n {editLifecycleOpen && selectedLifecycleRule && (\n \n )}\n {addLifecycleOpen && (\n \n )}\n {deleteLifecycleOpen && selectedID && (\n \n )}\n \n \n {\n setAddLifecycleOpen(true);\n }}\n label={\"Add Lifecycle Rule\"}\n icon={}\n variant={\"callAction\"}\n />\n \n \n }\n >\n Lifecycle Rules\n \n \n \n \n \n \n \n {!loadingLifecycle && (\n \n
    \n }\n help={\n \n MinIO Object Lifecycle Management allows creating rules for\n time or date based automatic transition or expiry of objects.\n For object transition, MinIO automatically moves the object to\n a configured remote storage tier.\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 BucketLifecyclePanel;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { InputLabel, Switch, Tooltip, Typography } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport { actionsTray, fieldBasic } from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input/Input\";\n\ninterface IFormSwitch {\n label?: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n description?: string;\n index?: number;\n checked: boolean;\n switchOnly?: boolean;\n indicatorLabels?: string[];\n extraInputProps?: StandardInputProps[\"inputProps\"];\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n indicatorLabelOn: {\n fontWeight: \"bold\",\n color: \"#081C42 !important\",\n },\n indicatorLabel: {\n fontSize: 12,\n color: \"#E2E2E2\",\n margin: \"0 8px 0 10px\",\n },\n fieldDescription: {\n marginTop: 4,\n color: \"#999999\",\n },\n tooltip: {\n fontSize: 16,\n },\n ...actionsTray,\n ...fieldBasic,\n });\n\nconst StyledSwitch = withStyles((theme) => ({\n root: {\n width: 50,\n height: 24,\n padding: 0,\n margin: 0,\n },\n switchBase: {\n padding: 1,\n \"&$checked\": {\n transform: \"translateX(24px)\",\n color: theme.palette.common.white,\n \"& + $track\": {\n backgroundColor: \"#4CCB92\",\n boxShadow: \"inset 0px 1px 4px rgba(0,0,0,0.1)\",\n opacity: 1,\n border: \"none\",\n },\n },\n \"&$focusVisible $thumb\": {\n color: \"#4CCB92\",\n border: \"6px solid #fff\",\n },\n },\n thumb: {\n width: 22,\n height: 22,\n backgroundColor: \"#FAFAFA\",\n border: \"2px solid #FFFFFF\",\n marginLeft: 1,\n },\n track: {\n borderRadius: 24 / 2,\n backgroundColor: \"#E2E2E2\",\n boxShadow: \"inset 0px 1px 4px rgba(0,0,0,0.1)\",\n opacity: 1,\n transition: theme.transitions.create([\"background-color\", \"border\"]),\n },\n checked: {},\n focusVisible: {},\n switchContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n },\n}))(Switch);\n\nconst FormSwitchWrapper = ({\n label = \"\",\n onChange,\n value,\n id,\n name,\n checked = false,\n disabled = false,\n switchOnly = false,\n tooltip = \"\",\n description = \"\",\n classes,\n indicatorLabels,\n extraInputProps = {},\n}: IFormSwitch) => {\n const switchComponent = (\n \n {!switchOnly && (\n \n {indicatorLabels && indicatorLabels.length > 1\n ? indicatorLabels[1]\n : \"OFF\"}\n \n )}\n \n {!switchOnly && (\n \n {indicatorLabels ? indicatorLabels[0] : \"ON\"}\n \n )}\n \n );\n\n if (switchOnly) {\n return switchComponent;\n }\n\n return (\n
    \n \n \n {label !== \"\" && (\n \n {label}\n {tooltip !== \"\" && (\n
    \n \n
    \n \n
    \n
    \n
    \n )}\n
    \n )}\n
    \n \n {switchComponent}\n
    \n {description !== \"\" && (\n \n \n {description}\n \n \n )}\n \n
    \n );\n};\n\nexport default withStyles(styles)(FormSwitchWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { SelectorType } from \"mds\";\nimport { Menu, MenuItem } from \"@mui/material\";\n\ninterface IInputUnitBox {\n classes: any;\n id: string;\n unitSelected: string;\n unitsList: SelectorType[];\n disabled?: boolean;\n onUnitChange?: (newValue: string) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonTrigger: {\n border: \"#F0F2F2 1px solid\",\n borderRadius: 3,\n color: \"#838383\",\n backgroundColor: \"#fff\",\n fontSize: 12,\n },\n });\n\nconst InputUnitMenu = ({\n classes,\n id,\n unitSelected,\n unitsList,\n disabled = false,\n onUnitChange,\n}: IInputUnitBox) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const open = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleClose = (newUnit: string) => {\n setAnchorEl(null);\n if (newUnit !== \"\" && onUnitChange) {\n onUnitChange(newUnit);\n }\n };\n\n return (\n \n \n {unitSelected}\n \n {\n handleClose(\"\");\n }}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"center\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"center\",\n }}\n >\n {unitsList.map((unit) => (\n handleClose(unit.value)}\n key={`itemUnit-${unit.value}-${unit.label}`}\n >\n {unit.label}\n \n ))}\n \n \n );\n};\n\nexport default withStyles(styles)(InputUnitMenu);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, {\n ChangeEvent,\n createRef,\n Fragment,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport get from \"lodash/get\";\nimport debounce from \"lodash/debounce\";\nimport {\n AddIcon,\n Box,\n Grid,\n HelpIcon,\n InputBox,\n InputLabel,\n Tooltip,\n} from \"mds\";\n\ninterface IQueryMultiSelector {\n elements: string;\n name: string;\n label: string;\n tooltip?: string;\n keyPlaceholder?: string;\n valuePlaceholder?: string;\n withBorder?: boolean;\n onChange: (elements: string) => void;\n}\n\nconst QueryMultiSelector = ({\n elements,\n name,\n label,\n tooltip = \"\",\n keyPlaceholder = \"\",\n valuePlaceholder = \"\",\n onChange,\n withBorder = false,\n}: IQueryMultiSelector) => {\n const [currentKeys, setCurrentKeys] = useState([\"\"]);\n const [currentValues, setCurrentValues] = useState([\"\"]);\n const bottomList = createRef();\n\n // Use effect to get the initial values from props\n useEffect(() => {\n if (\n currentKeys.length === 1 &&\n currentKeys[0] === \"\" &&\n currentValues.length === 1 &&\n currentValues[0] === \"\" &&\n elements &&\n elements !== \"\"\n ) {\n const elementsSplit = elements.split(\"&\");\n let keys = [];\n let values = [];\n\n elementsSplit.forEach((element: string) => {\n const splittedVals = element.split(\"=\");\n if (splittedVals.length === 2) {\n keys.push(splittedVals[0]);\n values.push(splittedVals[1]);\n }\n });\n\n keys.push(\"\");\n values.push(\"\");\n\n setCurrentKeys(keys);\n setCurrentValues(values);\n }\n }, [currentKeys, currentValues, elements]);\n\n // Use effect to send new values to onChange\n useEffect(() => {\n const refScroll = bottomList.current;\n if (refScroll && currentKeys.length > 1) {\n refScroll.scrollIntoView(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentKeys]);\n\n // We avoid multiple re-renders / hang issue typing too fast\n const firstUpdate = useRef(true);\n useLayoutEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = false;\n return;\n }\n debouncedOnChange();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentKeys, currentValues]);\n\n // If the last input is not empty, we add a new one\n const addEmptyLine = () => {\n if (\n currentKeys[currentKeys.length - 1].trim() !== \"\" &&\n currentValues[currentValues.length - 1].trim() !== \"\"\n ) {\n const keysList = [...currentKeys];\n const valuesList = [...currentValues];\n\n keysList.push(\"\");\n valuesList.push(\"\");\n\n setCurrentKeys(keysList);\n setCurrentValues(valuesList);\n }\n };\n\n // Onchange function for input box, we get the dataset-index & only update that value in the array\n const onChangeKey = (e: ChangeEvent) => {\n e.persist();\n\n let updatedElement = [...currentKeys];\n const index = get(e.target, \"dataset.index\", \"0\");\n const indexNum = parseInt(index);\n updatedElement[indexNum] = e.target.value;\n\n setCurrentKeys(updatedElement);\n };\n\n const onChangeValue = (e: ChangeEvent) => {\n e.persist();\n\n let updatedElement = [...currentValues];\n const index = get(e.target, \"dataset.index\", \"0\");\n const indexNum = parseInt(index);\n updatedElement[indexNum] = e.target.value;\n\n setCurrentValues(updatedElement);\n };\n\n // Debounce for On Change\n const debouncedOnChange = debounce(() => {\n let queryString = \"\";\n\n currentKeys.forEach((keyVal, index) => {\n if (currentKeys[index] && currentValues[index]) {\n let insertString = `${keyVal}=${currentValues[index]}`;\n if (index !== 0) {\n insertString = `&${insertString}`;\n }\n queryString = `${queryString}${insertString}`;\n }\n });\n\n onChange(queryString);\n }, 500);\n\n const inputs = currentValues.map((element, index) => {\n return (\n \n \n :\n : null}\n overlayAction={() => {\n addEmptyLine();\n }}\n />\n \n );\n });\n\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n \n \n \n \n \n )}\n \n \n {inputs}\n
    \n \n \n \n );\n};\nexport default QueryMultiSelector;\n"],"names":["_ref","onCloseAndRefresh","deleteOpen","bucket","id","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","deletingRule","setDeletingRule","useEffect","api","buckets","deleteBucketLifecycleRule","then","catch","err","setErrorSnackMessage","errorToHandler","error","_jsx","ConfirmDialog","title","confirmText","isOpen","isLoading","onConfirm","titleIcon","ConfirmDeleteIcon","onClose","confirmationContent","_jsxs","Fragment","children","_lifecycleRule$expira10","_lifecycleRule$expira11","_lifecycleRule$transi5","_lifecycleRule$transi6","_lifecycleRule$expira12","closeModalAndRefresh","selectedBucket","lifecycleRule","open","loadingTiers","setLoadingTiers","_useState3","_useState4","addLoading","setAddLoading","_useState5","_useState6","tags","setTags","_useState7","_useState8","enabled","setEnabled","_useState9","_useState10","tiersList","setTiersList","_useState11","_useState12","prefix","setPrefix","_useState13","_useState14","storageClass","setStorageClass","_useState15","_useState16","NCTransitionSC","setNCTransitionSC","_useState17","_useState18","expiredObjectDM","setExpiredObjectDM","_useState19","_useState20","NCExpirationDays","setNCExpirationDays","_useState21","_useState22","NCTransitionDays","setNCTransitionDays","_useState23","_useState24","ilmType","setIlmType","_useState25","_useState26","expiryDays","setExpiryDays","_useState27","_useState28","transitionDays","setTransitionDays","_useState29","_useState30","isFormValid","setIsFormValid","formFieldRowFilter","padding","admin","res","get","data","length","objList","map","tier","tierType","type","value","concat","label","valid","_lifecycleRule$expira3","status","_lifecycleRule$transi","_lifecycleRule$transi2","_lifecycleRule$transi3","_lifecycleRule$transi4","_lifecycleRule$expira","_lifecycleRule$expira2","transitionMode","transition","days","toString","noncurrent_transition_days","date","expiration","noncurrent_expiration_days","storage_class","noncurrent_storage_class","delete_marker","tgs","reduce","stringLab","currItem","index","key","objectVersion","ModalWrapper","modalOpen","LifecycleConfigIcon","noValidate","autoComplete","onSubmit","e","event","preventDefault","rules","_lifecycleRule$expira4","_lifecycleRule$expira5","_lifecycleRule$expira6","expiry","parseInt","_objectSpread","_lifecycleRule$expira7","_lifecycleRule$expira8","_lifecycleRule$expira9","lifecycleUpdate","disable","expired_object_delete_marker","updateBucketLifecycle","setModalErrorSnackMessage","saveRecord","FormLayout","containerPadding","withBorders","Switch","indicatorLabels","checked","name","onChange","target","InputBox","disabled","RadioGroup","currentValue","selectorOptions","disableOptions","min","Select","options","placeholder","Grid","item","xs","sx","Accordion","AccordionSummary","Typography","AccordionDetails","QueryMultiSelector","elements","vl","keyPlaceholder","valuePlaceholder","withBorder","modalStyleUtils","modalButtonBar","Button","variant","onClick","color","ProgressBar","bucketName","distributedSetup","useSelector","selDistSet","versioningInfo","setVersioningInfo","targetVersion","setTargetVersion","lifecycleDays","setLifecycleDays","loadingVersioning","setLoadingVersioning","getBucketVersioning","container","lifecycleInsert","addBucketLifecycle","addRecord","validity","pattern","overlayObject","InputUnitMenu","unitSelected","unitsList","FormSwitchWrapper","description","loadingBucket","selBucketDetailsLoading","params","useParams","loadingLifecycle","setLoadingLifecycle","lifecycleRecords","setLifecycleRecords","addLifecycleOpen","setAddLifecycleOpen","editLifecycleOpen","setEditLifecycleOpen","selectedLifecycleRule","setSelectedLifecycleRule","deleteLifecycleOpen","setDeleteLifecycleOpen","selectedID","setSelectedID","displayLifeCycleRules","hasPermission","IAM_SCOPES","S3_GET_LIFECYCLE_CONFIGURATION","S3_GET_ACTIONS","setHelpName","getBucketLifecycle","records","console","lifecycleColumns","renderFullObject","renderFunction","el","elementKey","objectST","stClass","lifecycleActions","valueToSend","valueToDelete","sendOnlyId","EditLifecycleConfiguration","refresh","AddLifecycleModal","DeleteBucketLifecycleRule","SectionTitle","separator","marginBottom","actions","SecureComponent","scopes","S3_PUT_LIFECYCLE_CONFIGURATION","S3_PUT_ACTIONS","resource","matchAll","errorProps","TooltipWrapper","tooltip","icon","AddIcon","DataTable","itemActions","columns","entityName","customEmptyMessage","idField","customPaperHeight","HelpBox","iconComponent","TiersIcon","help","href","rel","StyledSwitch","withStyles","theme","root","width","height","margin","switchBase","transform","palette","common","white","backgroundColor","boxShadow","opacity","border","thumb","marginLeft","track","borderRadius","transitions","create","focusVisible","switchContainer","display","alignItems","justifyContent","createStyles","indicatorLabelOn","fontWeight","indicatorLabel","fontSize","fieldDescription","marginTop","actionsTray","fieldBasic","_ref$label","_ref$checked","_ref$disabled","_ref$switchOnly","switchOnly","_ref$tooltip","_ref$description","classes","_ref$extraInputProps","extraInputProps","switchComponent","React","className","clsx","_defineProperty","inputProps","disableRipple","disableFocusRipple","disableTouchRipple","sm","md","InputLabel","htmlFor","inputLabel","tooltipContainer","Tooltip","placement","HelpIcon","textAlign","component","buttonTrigger","onUnitChange","_React$useState","_React$useState2","anchorEl","setAnchorEl","Boolean","handleClose","newUnit","undefined","currentTarget","Menu","anchorOrigin","vertical","horizontal","transformOrigin","unit","MenuItem","_ref$keyPlaceholder","_ref$valuePlaceholder","_ref$withBorder","currentKeys","setCurrentKeys","currentValues","setCurrentValues","bottomList","createRef","elementsSplit","split","keys","values","forEach","element","splittedVals","push","refScroll","current","scrollIntoView","firstUpdate","useRef","useLayoutEffect","debouncedOnChange","onChangeKey","persist","updatedElement","_toConsumableArray","onChangeValue","debounce","queryString","keyVal","insertString","inputs","overlayIcon","overlayAction","trim","keysList","valuesList","addEmptyLine","alignSelf","Box","style","overflowY","position","ref"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/5661.0d5ab315.chunk.js b/portal-ui/build/static/js/5661.0d5ab315.chunk.js deleted file mode 100644 index f1679f2f3b..0000000000 --- a/portal-ui/build/static/js/5661.0d5ab315.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[5661],{84861:function(e,t,n){n(72791);var r=n(29945),i=n(80184);t.Z=function(e){var t=e.icon,n=void 0===t?null:t,a=e.label,o=void 0===a?null:a;return(0,i.jsxs)(r.xuv,{sx:{display:"flex",alignItems:"center",gap:5,marginTop:3},children:[(0,i.jsx)(r.xuv,{sx:{height:16,width:16,display:"flex",alignItems:"center"},children:n}),(0,i.jsx)(r.xuv,{children:o})]})}},45902:function(e,t,n){var r=n(1413),i=(n(72791),n(1582)),a=n(80184);t.Z=function(e){var t=e.label,n=void 0===t?null:t,o=e.value,s=void 0===o?"-":o,l=e.orientation,c=void 0===l?"column":l,u=e.stkProps,d=void 0===u?{}:u,p=e.lblProps,f=void 0===p?{}:p,h=e.valProps,m=void 0===h?{}:h;return(0,a.jsxs)(i.Z,(0,r.Z)((0,r.Z)({direction:{xs:"column",sm:c}},d),{},{children:[(0,a.jsx)("label",(0,r.Z)((0,r.Z)({style:{marginRight:5,fontWeight:600}},f),{},{children:n})),(0,a.jsx)("label",(0,r.Z)((0,r.Z)({style:{marginRight:5,fontWeight:500}},m),{},{children:s}))]}))}},35661:function(e,t,n){n.r(t),n.d(t,{default:function(){return fe}});var r=n(1413),i=n(29439),a=n(72791),o=n(61889),s=n(64554),l=n(81207),c=n(38442),u=n(56087),d=n(87995),p=n(81551),f=n(18073),h=n(43896),m=n(19847),v=n(45902),y=n(50896),x=n(84861),b=n(38725),g=n(82839),j=n(90466),A=n(12891),k=n(35667),S=n(83672),Z=n(57702),P=n(625),w=n(18111),E=n.n(w),O=n(74786),C=n.n(O),F=n(42854),T=n.n(F),D=n(98202),K=n(81694),I=n.n(K),N=n(75555),R=n(39718),M=n(46044),L=n(87970),B=n(85992),_=n(70587),$=n(77612),G=n(36768),q=n(73822),W=["type","layout","connectNulls","ref"];function z(e){return z="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},z(e)}function H(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function V(){return V=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);na){l=[].concat(J(n.slice(0,c)),[a-u]);break}var d=l.length%2===0?[0,s]:[s];return[].concat(J(o.repeat(n,i)),J(l),d).map((function(e){return"".concat(e,"px")})).join(", ")})),ie(ne(e),"id",(0,_.EL)("recharts-line-")),ie(ne(e),"pathRef",(function(t){e.mainCurve=t})),ie(ne(e),"handleAnimationEnd",(function(){e.setState({isAnimationFinished:!0}),e.props.onAnimationEnd&&e.props.onAnimationEnd()})),ie(ne(e),"handleAnimationStart",(function(){e.setState({isAnimationFinished:!1}),e.props.onAnimationStart&&e.props.onAnimationStart()})),e}return t=o,r=[{key:"getDerivedStateFromProps",value:function(e,t){return e.animationId!==t.prevAnimationId?{prevAnimationId:e.animationId,curPoints:e.points,prevPoints:t.curPoints}:e.points!==t.curPoints?{curPoints:e.points}:null}},{key:"repeat",value:function(e,t){for(var n=e.length%2!==0?[].concat(J(e),[0]):e,r=[],i=0;i0||!E()(o,r))?this.renderCurveWithAnimation(e,t):this.renderCurveStatically(r,e,t)}},{key:"render",value:function(){var e,t=this.props,n=t.hide,r=t.dot,i=t.points,o=t.className,s=t.xAxis,l=t.yAxis,c=t.top,u=t.left,d=t.width,p=t.height,f=t.isAnimationActive,h=t.id;if(n||!i||!i.length)return null;var m=this.state.isAnimationFinished,v=1===i.length,y=I()("recharts-line",o),x=s&&s.allowDataOverflow,b=l&&l.allowDataOverflow,g=x||b,j=T()(h)?this.id:h,A=null!==(e=(0,$.L6)(r))&&void 0!==e?e:{r:3,strokeWidth:2},k=A.r,S=void 0===k?3:k,Z=A.strokeWidth,P=void 0===Z?2:Z,w=((0,$.$k)(r)?r:{}).clipDot,E=void 0===w||w,O=2*S+P;return a.createElement(M.m,{className:y},x||b?a.createElement("defs",null,a.createElement("clipPath",{id:"clipPath-".concat(j)},a.createElement("rect",{x:x?u:u-d/2,y:b?c:c-p/2,width:x?d:2*d,height:b?p:2*p})),!E&&a.createElement("clipPath",{id:"clipPath-dots-".concat(j)},a.createElement("rect",{x:u-O/2,y:c-O/2,width:d+O,height:p+O}))):null,!v&&this.renderCurve(g,j),this.renderErrorBar(g,j),(v||r)&&this.renderDots(g,E,j),(!f||m)&&L.e.renderCallByParent(this.props,i))}}])&&Y(t.prototype,n),r&&Y(t,r),Object.defineProperty(t,"prototype",{writable:!1}),o}(a.PureComponent);ie(oe,"displayName","Line"),ie(oe,"defaultProps",{xAxisId:0,yAxisId:0,connectNulls:!1,activeDot:!0,dot:!0,legendType:"line",stroke:"#3182bd",strokeWidth:1,fill:"#fff",points:[],isAnimationActive:!G.x.isSsr,animateNewValues:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",hide:!1,label:!1}),ie(oe,"getComposedData",(function(e){var t=e.props,n=e.xAxis,r=e.yAxis,i=e.xAxisTicks,a=e.yAxisTicks,o=e.dataKey,s=e.bandSize,l=e.displayedData,c=e.offset,u=t.layout;return X({points:l.map((function(e,t){var l=(0,q.F$)(e,o);return"horizontal"===u?{x:(0,q.Hv)({axis:n,ticks:i,bandSize:s,entry:e,index:t}),y:T()(l)?null:r.scale(l),value:l,payload:e}:{x:T()(l)?null:n.scale(l),y:(0,q.Hv)({axis:r,ticks:a,bandSize:s,entry:e,index:t}),value:l,payload:e}})),layout:u},c)}));var se=n(93137),le=(0,P.z)({chartName:"LineChart",GraphicalChild:oe,axisComponents:[{axisType:"xAxis",AxisComp:j.K},{axisType:"yAxis",AxisComp:A.B}],formatAxisMap:se.t9}),ce=n(29945),ue=n(47974),de=n(99670),pe=n(80184),fe=function(){var e=(0,p.TL)(),t=(0,a.useState)(0),n=(0,i.Z)(t,2),P=n[0],w=n[1],E=(0,a.useState)(null),O=(0,i.Z)(E,2),C=O[0],F=O[1],T=(0,a.useState)(!0),D=(0,i.Z)(T,2),K=D[0],I=D[1],N=(0,a.useState)(null),R=(0,i.Z)(N,2),M=R[0],L=R[1],B=(0,a.useState)(!0),_=(0,i.Z)(B,2),$=_[0],G=_[1],q=(0,a.useState)(null),W=(0,i.Z)(q,2),z=W[0],H=W[1],V=(0,a.useState)(!0),U=(0,i.Z)(V,2),X=U[0],J=U[1],Q=(0,a.useState)(null),Y=(0,i.Z)(Q,2),ee=Y[0],te=Y[1],ne=(0,a.useState)(!0),re=(0,i.Z)(ne,2),ie=re[0],ae=re[1],se=(0,c.F)(u.C3,[u.Ft.KMS_STATUS]),fe=(0,c.F)(u.C3,[u.Ft.KMS_METRICS]),he=(0,c.F)(u.C3,[u.Ft.KMS_APIS]),me=(0,c.F)(u.C3,[u.Ft.KMS_Version]);(0,a.useEffect)((function(){I(!0)}),[]),(0,a.useEffect)((function(){K&&(se?l.Z.invoke("GET","/api/v1/kms/status").then((function(e){e&&F(e),I(!1)})).catch((function(t){e((0,d.Ih)(t)),I(!1)})):I(!1)),$&&(fe?l.Z.invoke("GET","/api/v1/kms/metrics").then((function(e){e&&L(e),G(!1)})).catch((function(t){e((0,d.Ih)(t)),G(!1)})):G(!1)),X&&(he?l.Z.invoke("GET","/api/v1/kms/apis").then((function(e){e&&H(e),J(!1)})).catch((function(t){e((0,d.Ih)(t)),J(!1)})):J(!1)),ie&&(me?l.Z.invoke("GET","/api/v1/kms/version").then((function(e){e&&te(e),ae(!1)})).catch((function(t){e((0,d.Ih)(t)),ae(!1)})):ae(!1))}),[e,se,K,fe,$,he,X,me,ie]);var ve=(0,pe.jsxs)(a.Fragment,{children:[(0,pe.jsx)(y.Z,{children:"Status"}),(0,pe.jsx)("br",{}),C&&(0,pe.jsx)(o.ZP,{container:!0,spacing:1,children:(0,pe.jsx)(o.ZP,{item:!0,xs:12,children:(0,pe.jsx)(s.Z,{sx:{display:"grid",gridTemplateColumns:{xs:"1fr",sm:"2fr 1fr"},gridAutoFlow:{xs:"dense",sm:"row"},gap:2},children:(0,pe.jsxs)(s.Z,{sx:{display:"grid",gridTemplateColumns:{xs:"1fr",sm:"2fr 1fr"},gridAutoFlow:{xs:"dense",sm:"row"},gap:2},children:[(0,pe.jsx)(v.Z,{label:"Name:",value:C.name}),ee&&(0,pe.jsx)(v.Z,{label:"Version:",value:ee.version}),(0,pe.jsx)(v.Z,{label:"Default Key ID:",value:C.defaultKeyID}),(0,pe.jsx)(v.Z,{label:"Key Management Service Endpoints:",value:(0,pe.jsx)(a.Fragment,{children:C.endpoints.map((function(e,t){return(0,pe.jsx)(x.Z,{icon:"online"===e.status?(0,pe.jsx)(ce.E31,{}):(0,pe.jsx)(ce.dRf,{}),label:e.url},t)}))})})]})})})})]}),ye=(0,pe.jsxs)(a.Fragment,{children:[(0,pe.jsx)(y.Z,{children:"Supported API endpoints"}),(0,pe.jsx)("br",{}),z&&(0,pe.jsx)(o.ZP,{container:!0,spacing:1,children:(0,pe.jsx)(o.ZP,{item:!0,xs:12,children:(0,pe.jsx)(v.Z,{label:"",value:(0,pe.jsx)(s.Z,{sx:{display:"grid",gridTemplateColumns:{xs:"1fr",sm:"2fr 1fr"},gridAutoFlow:{xs:"dense",sm:"row"},gap:2},children:z.results.map((function(e,t){return(0,pe.jsx)(x.Z,{icon:(0,pe.jsx)(ce.E31,{}),label:"".concat(e.path," - ").concat(e.method)},t)}))})})})})]}),xe=(0,pe.jsx)(a.Fragment,{children:M&&(0,pe.jsxs)(a.Fragment,{children:[(0,pe.jsx)("h3",{children:"API Requests"}),(0,pe.jsxs)(b.v,{width:730,height:250,data:[{label:"Success",success:M.requestOK},{label:"Failures",failures:M.requestFail},{label:"Errors",errors:M.requestErr},{label:"Active",active:M.requestActive}],children:[(0,pe.jsx)(g.q,{strokeDasharray:"3 3"}),(0,pe.jsx)(j.K,{dataKey:"label"}),(0,pe.jsx)(A.B,{}),(0,pe.jsx)(k.u,{}),(0,pe.jsx)(S.D,{}),(0,pe.jsx)(Z.$,{dataKey:"success",fill:"green"}),(0,pe.jsx)(Z.$,{dataKey:"failures",fill:"red"}),(0,pe.jsx)(Z.$,{dataKey:"errors",fill:"black"}),(0,pe.jsx)(Z.$,{dataKey:"active",fill:"#8884d8"})]}),(0,pe.jsx)("h3",{children:"Events"}),(0,pe.jsxs)(b.v,{width:730,height:250,data:[{label:"Audit",audit:M.auditEvents},{label:"Errors",errors:M.errorEvents}],children:[(0,pe.jsx)(g.q,{strokeDasharray:"3 3"}),(0,pe.jsx)(j.K,{dataKey:"label"}),(0,pe.jsx)(A.B,{}),(0,pe.jsx)(k.u,{}),(0,pe.jsx)(S.D,{}),(0,pe.jsx)(Z.$,{dataKey:"audit",fill:"green"}),(0,pe.jsx)(Z.$,{dataKey:"errors",fill:"black"})]}),(0,pe.jsx)("h3",{children:"Latency Histogram"}),M.latencyHistogram&&(0,pe.jsxs)(le,{width:730,height:250,data:M.latencyHistogram.map((function(e){return(0,r.Z)((0,r.Z)({},e),{},{duration:"".concat(e.duration/1e6,"ms")})})),margin:{top:5,right:30,left:20,bottom:5},children:[(0,pe.jsx)(g.q,{strokeDasharray:"3 3"}),(0,pe.jsx)(j.K,{dataKey:"duration"}),(0,pe.jsx)(A.B,{}),(0,pe.jsx)(k.u,{}),(0,pe.jsx)(S.D,{}),(0,pe.jsx)(oe,{type:"monotone",dataKey:"total",stroke:"#8884d8",name:"Requests that took T ms or less"})]})]})});return(0,a.useEffect)((function(){e((0,d.Sc)("kms_status"))}),[]),(0,pe.jsxs)(a.Fragment,{children:[(0,pe.jsx)(ue.Z,{label:"Key Management Service",actions:(0,pe.jsx)(de.Z,{})}),(0,pe.jsxs)(ce.Xgh,{children:[(0,pe.jsxs)(f.Z,{value:P,onChange:function(e,t){w(t)},indicatorColor:"primary",textColor:"primary","aria-label":"cluster-tabs",variant:"scrollable",scrollButtons:"auto",children:[(0,pe.jsx)(h.Z,{label:"Status",id:"simple-tab-0","aria-controls":"simple-tabpanel-0"}),(0,pe.jsx)(h.Z,{label:"APIs",id:"simple-tab-1","aria-controls":"simple-tabpanel-1"}),(0,pe.jsx)(h.Z,{label:"Metrics",id:"simple-tab-2","aria-controls":"simple-tabpanel-2",onClick:function(){}})]}),(0,pe.jsx)(m.x,{index:0,value:P,children:(0,pe.jsx)(s.Z,{sx:{border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"43px"},children:ve})}),(0,pe.jsx)(m.x,{index:1,value:P,children:(0,pe.jsx)(s.Z,{sx:{border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"43px"},children:ye})}),(0,pe.jsx)(m.x,{index:2,value:P,children:(0,pe.jsx)(s.Z,{sx:{border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"43px"},children:xe})})]})]})}},1582:function(e,t,n){n.d(t,{Z:function(){return w}});var r=n(4942),i=n(63366),a=n(87462),o=n(72791),s=n(63733),l=n(82466),c=n(94419),u=n(21217),d=(0,n(44046).ZP)(),p=n(86083),f=n(78519),h=n(85080),m=n(51184),v=n(45682),y=n(80184),x=["component","direction","spacing","divider","children","className","useFlexGap"],b=(0,h.Z)(),g=d("div",{name:"MuiStack",slot:"Root",overridesResolver:function(e,t){return t.root}});function j(e){return(0,p.Z)({props:e,name:"MuiStack",defaultTheme:b})}function A(e,t){var n=o.Children.toArray(e).filter(Boolean);return n.reduce((function(e,r,i){return e.push(r),i0?c[n[t-1]]:"column";c[e]=r}}));i=(0,l.Z)(i,(0,m.k9)({theme:n},u,(function(e,n){return t.useFlexGap?{gap:(0,v.NA)(o,e)}:{"& > :not(style):not(style)":{margin:0},"& > :not(style) ~ :not(style)":(0,r.Z)({},"margin".concat((i=n?c[n]:t.direction,{row:"Left","row-reverse":"Right",column:"Top","column-reverse":"Bottom"}[i])),(0,v.NA)(o,e))};var i})))}return i=(0,m.dt)(n.breakpoints,i)};var S=n(66934),Z=n(31402),P=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.createStyledComponent,n=void 0===t?g:t,r=e.useThemeProps,l=void 0===r?j:r,d=e.componentName,p=void 0===d?"MuiStack":d,h=n(k),m=o.forwardRef((function(e,t){var n=l(e),r=(0,f.Z)(n),o=r.component,d=void 0===o?"div":o,m=r.direction,v=void 0===m?"column":m,b=r.spacing,g=void 0===b?0:b,j=r.divider,k=r.children,S=r.className,Z=r.useFlexGap,P=void 0!==Z&&Z,w=(0,i.Z)(r,x),E={direction:v,spacing:g,useFlexGap:P},O=(0,c.Z)({root:["root"]},(function(e){return(0,u.Z)(p,e)}),{});return(0,y.jsx)(h,(0,a.Z)({as:d,ownerState:E,ref:t,className:(0,s.Z)(O.root,S)},w,{children:j?A(k,j):k}))}));return m}({createStyledComponent:(0,S.ZP)("div",{name:"MuiStack",slot:"Root",overridesResolver:function(e,t){return t.root}}),useThemeProps:function(e){return(0,Z.Z)({props:e,name:"MuiStack"})}}),w=P},38725:function(e,t,n){n.d(t,{v:function(){return l}});var r=n(625),i=n(57702),a=n(90466),o=n(12891),s=n(93137),l=(0,r.z)({chartName:"BarChart",GraphicalChild:i.$,defaultTooltipEventType:"axis",validateTooltipEventTypes:["axis","item"],axisComponents:[{axisType:"xAxis",AxisComp:a.K},{axisType:"yAxis",AxisComp:o.B}],formatAxisMap:s.t9})}}]); -//# sourceMappingURL=5661.0d5ab315.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/5661.0d5ab315.chunk.js.map b/portal-ui/build/static/js/5661.0d5ab315.chunk.js.map deleted file mode 100644 index 098056fabf..0000000000 --- a/portal-ui/build/static/js/5661.0d5ab315.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/5661.0d5ab315.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/SummaryItems/LabelWithIcon.tsx","screens/Console/Common/UsageBarWrapper/LabelValuePair.tsx","../node_modules/recharts/es6/cartesian/Line.js","../node_modules/recharts/es6/chart/LineChart.js","screens/Console/KMS/Status.tsx","../node_modules/@mui/system/esm/styled.js","../node_modules/@mui/system/esm/Stack/createStack.js","../node_modules/@mui/material/Stack/Stack.js","../node_modules/recharts/es6/chart/BarChart.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 .\n\nimport React from \"react\";\nimport { Box } from \"mds\";\n\ntype LabelWithIconProps = {\n icon: React.ReactNode | null;\n label: React.ReactNode | null;\n};\n\nconst LabelWithIcon = ({ icon = null, label = null }: LabelWithIconProps) => {\n return (\n \n \n {icon}\n \n {label}\n \n );\n};\n\nexport default LabelWithIcon;\n","import React from \"react\";\nimport { Stack } from \"@mui/material\";\n\ntype LabelValuePairProps = {\n label?: any;\n value?: any;\n orientation?: any;\n stkProps?: any;\n lblProps?: any;\n valProps?: any;\n};\n\nconst LabelValuePair = ({\n label = null,\n value = \"-\",\n orientation = \"column\",\n stkProps = {},\n lblProps = {},\n valProps = {},\n}: LabelValuePairProps) => {\n return (\n \n \n \n \n );\n};\n\nexport default LabelValuePair;\n","import _isEqual from \"lodash/isEqual\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\nvar _excluded = [\"type\", \"layout\", \"connectNulls\", \"ref\"];\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/**\n * @fileOverview Line\n */\nimport React, { PureComponent } from 'react';\nimport Animate from 'react-smooth';\nimport classNames from 'classnames';\nimport { Curve } from '../shape/Curve';\nimport { Dot } from '../shape/Dot';\nimport { Layer } from '../container/Layer';\nimport { LabelList } from '../component/LabelList';\nimport { ErrorBar } from './ErrorBar';\nimport { uniqueId, interpolateNumber } from '../util/DataUtils';\nimport { findAllByType, filterProps, isDotProps } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { getCateCoordinateOfLine, getValueByDataKey } from '../util/ChartUtils';\nexport var Line = /*#__PURE__*/function (_PureComponent) {\n _inherits(Line, _PureComponent);\n var _super = _createSuper(Line);\n function Line() {\n var _this;\n _classCallCheck(this, Line);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isAnimationFinished: true,\n totalLength: 0\n });\n _defineProperty(_assertThisInitialized(_this), \"getStrokeDasharray\", function (length, totalLength, lines) {\n var lineLength = lines.reduce(function (pre, next) {\n return pre + next;\n });\n var count = Math.floor(length / lineLength);\n var remainLength = length % lineLength;\n var restLength = totalLength - length;\n var remainLines = [];\n for (var i = 0, sum = 0;; sum += lines[i], ++i) {\n if (sum + lines[i] > remainLength) {\n remainLines = [].concat(_toConsumableArray(lines.slice(0, i)), [remainLength - sum]);\n break;\n }\n }\n var emptyLines = remainLines.length % 2 === 0 ? [0, restLength] : [restLength];\n return [].concat(_toConsumableArray(Line.repeat(lines, count)), _toConsumableArray(remainLines), emptyLines).map(function (line) {\n return \"\".concat(line, \"px\");\n }).join(', ');\n });\n _defineProperty(_assertThisInitialized(_this), \"id\", uniqueId('recharts-line-'));\n _defineProperty(_assertThisInitialized(_this), \"pathRef\", function (node) {\n _this.mainCurve = node;\n });\n _defineProperty(_assertThisInitialized(_this), \"handleAnimationEnd\", function () {\n _this.setState({\n isAnimationFinished: true\n });\n if (_this.props.onAnimationEnd) {\n _this.props.onAnimationEnd();\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"handleAnimationStart\", function () {\n _this.setState({\n isAnimationFinished: false\n });\n if (_this.props.onAnimationStart) {\n _this.props.onAnimationStart();\n }\n });\n return _this;\n }\n _createClass(Line, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!this.props.isAnimationActive) {\n return;\n }\n var totalLength = this.getTotalLength();\n this.setState({\n totalLength: totalLength\n });\n }\n }, {\n key: \"getTotalLength\",\n value: function getTotalLength() {\n var curveDom = this.mainCurve;\n try {\n return curveDom && curveDom.getTotalLength && curveDom.getTotalLength() || 0;\n } catch (err) {\n return 0;\n }\n }\n }, {\n key: \"renderErrorBar\",\n value: function renderErrorBar(needClip, clipPathId) {\n if (this.props.isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n var _this$props = this.props,\n points = _this$props.points,\n xAxis = _this$props.xAxis,\n yAxis = _this$props.yAxis,\n layout = _this$props.layout,\n children = _this$props.children;\n var errorBarItems = findAllByType(children, ErrorBar);\n if (!errorBarItems) {\n return null;\n }\n var dataPointFormatter = function dataPointFormatter(dataPoint, dataKey) {\n return {\n x: dataPoint.x,\n y: dataPoint.y,\n value: dataPoint.value,\n errorVal: getValueByDataKey(dataPoint.payload, dataKey)\n };\n };\n var errorBarProps = {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n };\n return /*#__PURE__*/React.createElement(Layer, errorBarProps, errorBarItems.map(function (item, i) {\n return /*#__PURE__*/React.cloneElement(item, {\n // eslint-disable-next-line react/no-array-index-key\n key: \"bar-\".concat(i),\n data: points,\n xAxis: xAxis,\n yAxis: yAxis,\n layout: layout,\n dataPointFormatter: dataPointFormatter\n });\n }));\n }\n }, {\n key: \"renderDots\",\n value: function renderDots(needClip, clipDot, clipPathId) {\n var isAnimationActive = this.props.isAnimationActive;\n if (isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n var _this$props2 = this.props,\n dot = _this$props2.dot,\n points = _this$props2.points,\n dataKey = _this$props2.dataKey;\n var lineProps = filterProps(this.props);\n var customDotProps = filterProps(dot, true);\n var dots = points.map(function (entry, i) {\n var dotProps = _objectSpread(_objectSpread(_objectSpread({\n key: \"dot-\".concat(i),\n r: 3\n }, lineProps), customDotProps), {}, {\n value: entry.value,\n dataKey: dataKey,\n cx: entry.x,\n cy: entry.y,\n index: i,\n payload: entry.payload\n });\n return Line.renderDotItem(dot, dotProps);\n });\n var dotsProps = {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipDot ? '' : 'dots-').concat(clipPathId, \")\") : null\n };\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-line-dots\",\n key: \"dots\"\n }, dotsProps), dots);\n }\n }, {\n key: \"renderCurveStatically\",\n value: function renderCurveStatically(points, needClip, clipPathId, props) {\n var _this$props3 = this.props,\n type = _this$props3.type,\n layout = _this$props3.layout,\n connectNulls = _this$props3.connectNulls,\n ref = _this$props3.ref,\n others = _objectWithoutProperties(_this$props3, _excluded);\n var curveProps = _objectSpread(_objectSpread(_objectSpread({}, filterProps(others, true)), {}, {\n fill: 'none',\n className: 'recharts-line-curve',\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null,\n points: points\n }, props), {}, {\n type: type,\n layout: layout,\n connectNulls: connectNulls\n });\n return /*#__PURE__*/React.createElement(Curve, _extends({}, curveProps, {\n pathRef: this.pathRef\n }));\n }\n }, {\n key: \"renderCurveWithAnimation\",\n value: function renderCurveWithAnimation(needClip, clipPathId) {\n var _this2 = this;\n var _this$props4 = this.props,\n points = _this$props4.points,\n strokeDasharray = _this$props4.strokeDasharray,\n isAnimationActive = _this$props4.isAnimationActive,\n animationBegin = _this$props4.animationBegin,\n animationDuration = _this$props4.animationDuration,\n animationEasing = _this$props4.animationEasing,\n animationId = _this$props4.animationId,\n animateNewValues = _this$props4.animateNewValues,\n width = _this$props4.width,\n height = _this$props4.height;\n var _this$state = this.state,\n prevPoints = _this$state.prevPoints,\n totalLength = _this$state.totalLength;\n return /*#__PURE__*/React.createElement(Animate, {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"line-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function (_ref) {\n var t = _ref.t;\n if (prevPoints) {\n var prevPointsDiffFactor = prevPoints.length / points.length;\n var stepData = points.map(function (entry, index) {\n var prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n if (prevPoints[prevPointIndex]) {\n var prev = prevPoints[prevPointIndex];\n var interpolatorX = interpolateNumber(prev.x, entry.x);\n var interpolatorY = interpolateNumber(prev.y, entry.y);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: interpolatorX(t),\n y: interpolatorY(t)\n });\n }\n\n // magic number of faking previous x and y location\n if (animateNewValues) {\n var _interpolatorX = interpolateNumber(width * 2, entry.x);\n var _interpolatorY = interpolateNumber(height / 2, entry.y);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: _interpolatorX(t),\n y: _interpolatorY(t)\n });\n }\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: entry.x,\n y: entry.y\n });\n });\n return _this2.renderCurveStatically(stepData, needClip, clipPathId);\n }\n var interpolator = interpolateNumber(0, totalLength);\n var curLength = interpolator(t);\n var currentStrokeDasharray;\n if (strokeDasharray) {\n var lines = \"\".concat(strokeDasharray).split(/[,\\s]+/gim).map(function (num) {\n return parseFloat(num);\n });\n currentStrokeDasharray = _this2.getStrokeDasharray(curLength, totalLength, lines);\n } else {\n currentStrokeDasharray = \"\".concat(curLength, \"px \").concat(totalLength - curLength, \"px\");\n }\n return _this2.renderCurveStatically(points, needClip, clipPathId, {\n strokeDasharray: currentStrokeDasharray\n });\n });\n }\n }, {\n key: \"renderCurve\",\n value: function renderCurve(needClip, clipPathId) {\n var _this$props5 = this.props,\n points = _this$props5.points,\n isAnimationActive = _this$props5.isAnimationActive;\n var _this$state2 = this.state,\n prevPoints = _this$state2.prevPoints,\n totalLength = _this$state2.totalLength;\n if (isAnimationActive && points && points.length && (!prevPoints && totalLength > 0 || !_isEqual(prevPoints, points))) {\n return this.renderCurveWithAnimation(needClip, clipPathId);\n }\n return this.renderCurveStatically(points, needClip, clipPathId);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _filterProps;\n var _this$props6 = this.props,\n hide = _this$props6.hide,\n dot = _this$props6.dot,\n points = _this$props6.points,\n className = _this$props6.className,\n xAxis = _this$props6.xAxis,\n yAxis = _this$props6.yAxis,\n top = _this$props6.top,\n left = _this$props6.left,\n width = _this$props6.width,\n height = _this$props6.height,\n isAnimationActive = _this$props6.isAnimationActive,\n id = _this$props6.id;\n if (hide || !points || !points.length) {\n return null;\n }\n var isAnimationFinished = this.state.isAnimationFinished;\n var hasSinglePoint = points.length === 1;\n var layerClass = classNames('recharts-line', className);\n var needClipX = xAxis && xAxis.allowDataOverflow;\n var needClipY = yAxis && yAxis.allowDataOverflow;\n var needClip = needClipX || needClipY;\n var clipPathId = _isNil(id) ? this.id : id;\n var _ref2 = (_filterProps = filterProps(dot)) !== null && _filterProps !== void 0 ? _filterProps : {\n r: 3,\n strokeWidth: 2\n },\n _ref2$r = _ref2.r,\n r = _ref2$r === void 0 ? 3 : _ref2$r,\n _ref2$strokeWidth = _ref2.strokeWidth,\n strokeWidth = _ref2$strokeWidth === void 0 ? 2 : _ref2$strokeWidth;\n var _ref3 = isDotProps(dot) ? dot : {},\n _ref3$clipDot = _ref3.clipDot,\n clipDot = _ref3$clipDot === void 0 ? true : _ref3$clipDot;\n var dotSize = r * 2 + strokeWidth;\n return /*#__PURE__*/React.createElement(Layer, {\n className: layerClass\n }, needClipX || needClipY ? /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: needClipX ? left : left - width / 2,\n y: needClipY ? top : top - height / 2,\n width: needClipX ? width : width * 2,\n height: needClipY ? height : height * 2\n })), !clipDot && /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clipPath-dots-\".concat(clipPathId)\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: left - dotSize / 2,\n y: top - dotSize / 2,\n width: width + dotSize,\n height: height + dotSize\n }))) : null, !hasSinglePoint && this.renderCurve(needClip, clipPathId), this.renderErrorBar(needClip, clipPathId), (hasSinglePoint || dot) && this.renderDots(needClip, clipDot, clipPathId), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, points));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curPoints: nextProps.points,\n prevPoints: prevState.curPoints\n };\n }\n if (nextProps.points !== prevState.curPoints) {\n return {\n curPoints: nextProps.points\n };\n }\n return null;\n }\n }, {\n key: \"repeat\",\n value: function repeat(lines, count) {\n var linesUnit = lines.length % 2 !== 0 ? [].concat(_toConsumableArray(lines), [0]) : lines;\n var result = [];\n for (var i = 0; i < count; ++i) {\n result = [].concat(_toConsumableArray(result), _toConsumableArray(linesUnit));\n }\n return result;\n }\n }, {\n key: \"renderDotItem\",\n value: function renderDotItem(option, props) {\n var dotItem;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n dotItem = /*#__PURE__*/React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n dotItem = option(props);\n } else {\n var className = classNames('recharts-line-dot', option ? option.className : '');\n dotItem = /*#__PURE__*/React.createElement(Dot, _extends({}, props, {\n className: className\n }));\n }\n return dotItem;\n }\n }]);\n return Line;\n}(PureComponent);\n_defineProperty(Line, \"displayName\", 'Line');\n_defineProperty(Line, \"defaultProps\", {\n xAxisId: 0,\n yAxisId: 0,\n connectNulls: false,\n activeDot: true,\n dot: true,\n legendType: 'line',\n stroke: '#3182bd',\n strokeWidth: 1,\n fill: '#fff',\n points: [],\n isAnimationActive: !Global.isSsr,\n animateNewValues: true,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease',\n hide: false,\n label: false\n});\n/**\n * Compose the data of each group\n * @param {Object} props The props from the component\n * @param {Object} xAxis The configuration of x-axis\n * @param {Object} yAxis The configuration of y-axis\n * @param {String} dataKey The unique key of a group\n * @return {Array} Composed data\n */\n_defineProperty(Line, \"getComposedData\", function (_ref4) {\n var props = _ref4.props,\n xAxis = _ref4.xAxis,\n yAxis = _ref4.yAxis,\n xAxisTicks = _ref4.xAxisTicks,\n yAxisTicks = _ref4.yAxisTicks,\n dataKey = _ref4.dataKey,\n bandSize = _ref4.bandSize,\n displayedData = _ref4.displayedData,\n offset = _ref4.offset;\n var layout = props.layout;\n var points = displayedData.map(function (entry, index) {\n var value = getValueByDataKey(entry, dataKey);\n if (layout === 'horizontal') {\n return {\n x: getCateCoordinateOfLine({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n y: _isNil(value) ? null : yAxis.scale(value),\n value: value,\n payload: entry\n };\n }\n return {\n x: _isNil(value) ? null : xAxis.scale(value),\n y: getCateCoordinateOfLine({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n value: value,\n payload: entry\n };\n });\n return _objectSpread({\n points: points,\n layout: layout\n }, offset);\n});","/**\n * @fileOverview Line Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Line } from '../cartesian/Line';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\nexport var LineChart = generateCategoricalChart({\n chartName: 'LineChart',\n GraphicalChild: Line,\n axisComponents: [{\n axisType: 'xAxis',\n AxisComp: XAxis\n }, {\n axisType: 'yAxis',\n AxisComp: YAxis\n }],\n formatAxisMap: formatAxisMap\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 { Box, Grid } from \"@mui/material\";\nimport api from \"../../../common/api\";\n\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { hasPermission } from \"../../../common/SecureComponent\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_SCOPES,\n} from \"../../../common/SecureComponent/permissions\";\n\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport Tabs from \"@mui/material/Tabs\";\nimport Tab from \"@mui/material/Tab\";\nimport { TabPanel } from \"../../shared/tabs\";\n\nimport LabelValuePair from \"../Common/UsageBarWrapper/LabelValuePair\";\nimport SectionTitle from \"../Common/SectionTitle\";\nimport LabelWithIcon from \"../Buckets/BucketDetails/SummaryItems/LabelWithIcon\";\nimport {\n Bar,\n BarChart,\n CartesianGrid,\n Legend,\n Line,\n LineChart,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport { DisabledIcon, EnabledIcon, PageLayout } from \"mds\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\n\nimport HelpMenu from \"../HelpMenu\";\n\nconst Status = () => {\n const dispatch = useAppDispatch();\n const [curTab, setCurTab] = useState(0);\n\n const [status, setStatus] = useState(null);\n const [loadingStatus, setLoadingStatus] = useState(true);\n const [metrics, setMetrics] = useState(null);\n const [loadingMetrics, setLoadingMetrics] = useState(true);\n const [apis, setAPIs] = useState(null);\n const [loadingAPIs, setLoadingAPIs] = useState(true);\n const [version, setVersion] = useState(null);\n const [loadingVersion, setLoadingVersion] = useState(true);\n\n const displayStatus = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.KMS_STATUS,\n ]);\n const displayMetrics = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.KMS_METRICS,\n ]);\n const displayAPIs = hasPermission(CONSOLE_UI_RESOURCE, [IAM_SCOPES.KMS_APIS]);\n const displayVersion = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.KMS_Version,\n ]);\n\n useEffect(() => {\n setLoadingStatus(true);\n }, []);\n\n useEffect(() => {\n const loadMetrics = () => {\n if (displayMetrics) {\n api\n .invoke(\"GET\", `/api/v1/kms/metrics`)\n .then((result: any) => {\n if (result) {\n setMetrics(result);\n }\n setLoadingMetrics(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoadingMetrics(false);\n });\n } else {\n setLoadingMetrics(false);\n }\n };\n\n const loadAPIs = () => {\n if (displayAPIs) {\n api\n .invoke(\"GET\", `/api/v1/kms/apis`)\n .then((result: any) => {\n if (result) {\n setAPIs(result);\n }\n setLoadingAPIs(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoadingAPIs(false);\n });\n } else {\n setLoadingAPIs(false);\n }\n };\n\n const loadVersion = () => {\n if (displayVersion) {\n api\n .invoke(\"GET\", `/api/v1/kms/version`)\n .then((result: any) => {\n if (result) {\n setVersion(result);\n }\n setLoadingVersion(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoadingVersion(false);\n });\n } else {\n setLoadingVersion(false);\n }\n };\n\n const loadStatus = () => {\n if (displayStatus) {\n api\n .invoke(\"GET\", `/api/v1/kms/status`)\n .then((result: any) => {\n if (result) {\n setStatus(result);\n }\n setLoadingStatus(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoadingStatus(false);\n });\n } else {\n setLoadingStatus(false);\n }\n };\n\n if (loadingStatus) {\n loadStatus();\n }\n if (loadingMetrics) {\n loadMetrics();\n }\n if (loadingAPIs) {\n loadAPIs();\n }\n if (loadingVersion) {\n loadVersion();\n }\n }, [\n dispatch,\n displayStatus,\n loadingStatus,\n displayMetrics,\n loadingMetrics,\n displayAPIs,\n loadingAPIs,\n displayVersion,\n loadingVersion,\n ]);\n\n const statusPanel = (\n \n Status\n
    \n {status && (\n \n \n \n \n \n {version && (\n \n )}\n \n \n {status.endpoints.map((e: any, i: number) => (\n \n ) : (\n \n )\n }\n label={e.url}\n />\n ))}\n
    \n }\n />\n \n \n \n \n )}\n \n );\n\n const apisPanel = (\n \n Supported API endpoints\n
    \n {apis && (\n \n \n \n {apis.results.map((e: any, i: number) => (\n }\n label={`${e.path} - ${e.method}`}\n />\n ))}\n \n }\n />\n \n \n )}\n
    \n );\n\n const getAPIRequestsData = () => {\n return [\n { label: \"Success\", success: metrics.requestOK },\n { label: \"Failures\", failures: metrics.requestFail },\n { label: \"Errors\", errors: metrics.requestErr },\n { label: \"Active\", active: metrics.requestActive },\n ];\n };\n\n const getEventsData = () => {\n return [\n { label: \"Audit\", audit: metrics.auditEvents },\n { label: \"Errors\", errors: metrics.errorEvents },\n ];\n };\n\n const getHistogramData = () => {\n return metrics.latencyHistogram.map((h: any) => {\n return {\n ...h,\n duration: `${h.duration / 1000000}ms`,\n };\n });\n };\n\n const metricsPanel = (\n \n {metrics && (\n \n

    API Requests

    \n \n \n \n \n \n \n \n \n \n \n \n\n

    Events

    \n \n \n \n \n \n \n \n \n \n

    Latency Histogram

    \n {metrics.latencyHistogram && (\n \n \n \n \n \n \n \n \n )}\n
    \n )}\n
    \n );\n\n useEffect(() => {\n dispatch(setHelpName(\"kms_status\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n }\n />\n\n \n , newValue: number) => {\n setCurTab(newValue);\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\n \n \n {statusPanel}\n \n \n \n \n {apisPanel}\n \n \n \n \n {metricsPanel}\n \n \n \n \n );\n};\n\nexport default Status;\n","import createStyled from './createStyled';\nconst styled = createStyled();\nexport default styled;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"component\", \"direction\", \"spacing\", \"divider\", \"children\", \"className\", \"useFlexGap\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { deepmerge, unstable_composeClasses as composeClasses, unstable_generateUtilityClass as generateUtilityClass } from '@mui/utils';\nimport systemStyled from '../styled';\nimport useThemePropsSystem from '../useThemeProps';\nimport { extendSxProp } from '../styleFunctionSx';\nimport createTheme from '../createTheme';\nimport { handleBreakpoints, mergeBreakpointsInOrder, resolveBreakpointValues } from '../breakpoints';\nimport { createUnarySpacing, getValue } from '../spacing';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultTheme = createTheme();\n// widening Theme to any so that the consumer can own the theme structure.\nconst defaultCreateStyledComponent = systemStyled('div', {\n name: 'MuiStack',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n});\nfunction useThemePropsDefault(props) {\n return useThemePropsSystem({\n props,\n name: 'MuiStack',\n defaultTheme\n });\n}\n\n/**\n * Return an array with the separator React element interspersed between\n * each React node of the input children.\n *\n * > joinChildren([1,2,3], 0)\n * [1,0,2,0,3]\n */\nfunction joinChildren(children, separator) {\n const childrenArray = React.Children.toArray(children).filter(Boolean);\n return childrenArray.reduce((output, child, index) => {\n output.push(child);\n if (index < childrenArray.length - 1) {\n output.push( /*#__PURE__*/React.cloneElement(separator, {\n key: `separator-${index}`\n }));\n }\n return output;\n }, []);\n}\nconst getSideFromDirection = direction => {\n return {\n row: 'Left',\n 'row-reverse': 'Right',\n column: 'Top',\n 'column-reverse': 'Bottom'\n }[direction];\n};\nexport const style = ({\n ownerState,\n theme\n}) => {\n let styles = _extends({\n display: 'flex',\n flexDirection: 'column'\n }, handleBreakpoints({\n theme\n }, resolveBreakpointValues({\n values: ownerState.direction,\n breakpoints: theme.breakpoints.values\n }), propValue => ({\n flexDirection: propValue\n })));\n if (ownerState.spacing) {\n const transformer = createUnarySpacing(theme);\n const base = Object.keys(theme.breakpoints.values).reduce((acc, breakpoint) => {\n if (typeof ownerState.spacing === 'object' && ownerState.spacing[breakpoint] != null || typeof ownerState.direction === 'object' && ownerState.direction[breakpoint] != null) {\n acc[breakpoint] = true;\n }\n return acc;\n }, {});\n const directionValues = resolveBreakpointValues({\n values: ownerState.direction,\n base\n });\n const spacingValues = resolveBreakpointValues({\n values: ownerState.spacing,\n base\n });\n if (typeof directionValues === 'object') {\n Object.keys(directionValues).forEach((breakpoint, index, breakpoints) => {\n const directionValue = directionValues[breakpoint];\n if (!directionValue) {\n const previousDirectionValue = index > 0 ? directionValues[breakpoints[index - 1]] : 'column';\n directionValues[breakpoint] = previousDirectionValue;\n }\n });\n }\n const styleFromPropValue = (propValue, breakpoint) => {\n if (ownerState.useFlexGap) {\n return {\n gap: getValue(transformer, propValue)\n };\n }\n return {\n // The useFlexGap={false} implement relies on each child to give up control of the margin.\n // We need to reset the margin to avoid double spacing.\n '& > :not(style):not(style)': {\n margin: 0\n },\n '& > :not(style) ~ :not(style)': {\n [`margin${getSideFromDirection(breakpoint ? directionValues[breakpoint] : ownerState.direction)}`]: getValue(transformer, propValue)\n }\n };\n };\n styles = deepmerge(styles, handleBreakpoints({\n theme\n }, spacingValues, styleFromPropValue));\n }\n styles = mergeBreakpointsInOrder(theme.breakpoints, styles);\n return styles;\n};\nexport default function createStack(options = {}) {\n const {\n // This will allow adding custom styled fn (for example for custom sx style function)\n createStyledComponent = defaultCreateStyledComponent,\n useThemeProps = useThemePropsDefault,\n componentName = 'MuiStack'\n } = options;\n const useUtilityClasses = () => {\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, slot => generateUtilityClass(componentName, slot), {});\n };\n const StackRoot = createStyledComponent(style);\n const Stack = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {\n const themeProps = useThemeProps(inProps);\n const props = extendSxProp(themeProps); // `color` type conflicts with html color attribute.\n const {\n component = 'div',\n direction = 'column',\n spacing = 0,\n divider,\n children,\n className,\n useFlexGap = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = {\n direction,\n spacing,\n useFlexGap\n };\n const classes = useUtilityClasses();\n return /*#__PURE__*/_jsx(StackRoot, _extends({\n as: component,\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n children: divider ? joinChildren(children, divider) : children\n }));\n });\n process.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n children: PropTypes.node,\n direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n divider: PropTypes.node,\n spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n } : void 0;\n return Stack;\n}","'use client';\n\nimport PropTypes from 'prop-types';\nimport { createStack } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nconst Stack = createStack({\n createStyledComponent: styled('div', {\n name: 'MuiStack',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n }),\n useThemeProps: inProps => useThemeProps({\n props: inProps,\n name: 'MuiStack'\n })\n});\nprocess.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Defines the `flex-direction` style property.\n * It is applied for all screen sizes.\n * @default 'column'\n */\n direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n /**\n * Add an element between each child.\n */\n divider: PropTypes.node,\n /**\n * Defines the space between immediate children.\n * @default 0\n */\n spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n /**\n * The system prop, which allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * If `true`, the CSS flexbox `gap` is used instead of applying `margin` to children.\n *\n * While CSS `gap` removes the [known limitations](https://mui.com/joy-ui/react-stack/#limitations),\n * it is not fully supported in some browsers. We recommend checking https://caniuse.com/?search=flex%20gap before using this flag.\n *\n * To enable this flag globally, follow the [theme's default props](https://mui.com/material-ui/customization/theme-components/#default-props) configuration.\n * @default false\n */\n useFlexGap: PropTypes.bool\n} : void 0;\nexport default Stack;","/**\n * @fileOverview Bar Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { Bar } from '../cartesian/Bar';\nimport { XAxis } from '../cartesian/XAxis';\nimport { YAxis } from '../cartesian/YAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\nexport var BarChart = generateCategoricalChart({\n chartName: 'BarChart',\n GraphicalChild: Bar,\n defaultTooltipEventType: 'axis',\n validateTooltipEventTypes: ['axis', 'item'],\n axisComponents: [{\n axisType: 'xAxis',\n AxisComp: XAxis\n }, {\n axisType: 'yAxis',\n AxisComp: YAxis\n }],\n formatAxisMap: formatAxisMap\n});"],"names":["_ref","_ref$icon","icon","_ref$label","label","_jsxs","Box","sx","display","alignItems","gap","marginTop","children","_jsx","height","width","_ref$value","value","_ref$orientation","orientation","_ref$stkProps","stkProps","_ref$lblProps","lblProps","_ref$valProps","valProps","Stack","_objectSpread","direction","xs","sm","style","marginRight","fontWeight","_excluded","_typeof","obj","Symbol","iterator","constructor","prototype","_objectWithoutProperties","source","excluded","key","i","target","sourceKeys","Object","keys","length","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","call","_extends","assign","bind","arguments","hasOwnProperty","apply","this","ownKeys","object","enumerableOnly","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toConsumableArray","arr","Array","isArray","_arrayLikeToArray","_arrayWithoutHoles","iter","from","_iterableToArray","o","minLen","n","toString","slice","name","test","_unsupportedIterableToArray","TypeError","_nonIterableSpread","len","arr2","_defineProperties","props","descriptor","configurable","writable","_toPropertyKey","_setPrototypeOf","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","e","_isNativeReflectConstruct","result","Super","_getPrototypeOf","NewTarget","self","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","getPrototypeOf","arg","input","hint","prim","toPrimitive","undefined","res","String","Number","_toPrimitive","Line","_PureComponent","subClass","superClass","create","_inherits","Constructor","protoProps","staticProps","_super","_this","instance","_classCallCheck","_len","args","_key","concat","isAnimationFinished","totalLength","lines","lineLength","reduce","pre","next","count","Math","floor","remainLength","restLength","remainLines","sum","emptyLines","repeat","map","line","join","uniqueId","node","mainCurve","setState","onAnimationEnd","onAnimationStart","nextProps","prevState","animationId","prevAnimationId","curPoints","points","prevPoints","linesUnit","option","dotItem","React","_isFunction","className","classNames","Dot","isAnimationActive","getTotalLength","curveDom","err","needClip","clipPathId","state","_this$props","xAxis","yAxis","layout","errorBarItems","findAllByType","ErrorBar","dataPointFormatter","dataPoint","dataKey","x","y","errorVal","getValueByDataKey","payload","errorBarProps","clipPath","Layer","item","data","clipDot","_this$props2","dot","lineProps","filterProps","customDotProps","dots","entry","dotProps","r","cx","cy","index","renderDotItem","dotsProps","_this$props3","type","connectNulls","others","ref","curveProps","fill","Curve","pathRef","_this2","_this$props4","strokeDasharray","animationBegin","animationDuration","animationEasing","animateNewValues","_this$state","Animate","begin","duration","isActive","easing","t","to","handleAnimationEnd","handleAnimationStart","prevPointsDiffFactor","stepData","prevPointIndex","prev","interpolatorX","interpolateNumber","interpolatorY","_interpolatorX","_interpolatorY","renderCurveStatically","currentStrokeDasharray","curLength","interpolator","split","num","parseFloat","getStrokeDasharray","_this$props5","_this$state2","_isEqual","renderCurveWithAnimation","_filterProps","_this$props6","hide","top","left","id","hasSinglePoint","layerClass","needClipX","allowDataOverflow","needClipY","_isNil","_ref2","strokeWidth","_ref2$r","_ref2$strokeWidth","_ref3$clipDot","isDotProps","dotSize","renderCurve","renderErrorBar","renderDots","LabelList","renderCallByParent","PureComponent","xAxisId","yAxisId","activeDot","legendType","stroke","Global","isSsr","_ref4","xAxisTicks","yAxisTicks","bandSize","displayedData","offset","getCateCoordinateOfLine","axis","ticks","scale","LineChart","generateCategoricalChart","chartName","GraphicalChild","axisComponents","axisType","AxisComp","XAxis","YAxis","formatAxisMap","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","curTab","setCurTab","_useState3","_useState4","status","setStatus","_useState5","_useState6","loadingStatus","setLoadingStatus","_useState7","_useState8","metrics","setMetrics","_useState9","_useState10","loadingMetrics","setLoadingMetrics","_useState11","_useState12","apis","setAPIs","_useState13","_useState14","loadingAPIs","setLoadingAPIs","_useState15","_useState16","version","setVersion","_useState17","_useState18","loadingVersion","setLoadingVersion","displayStatus","hasPermission","CONSOLE_UI_RESOURCE","IAM_SCOPES","KMS_STATUS","displayMetrics","KMS_METRICS","displayAPIs","KMS_APIS","displayVersion","KMS_Version","useEffect","api","invoke","then","catch","setErrorSnackMessage","statusPanel","Fragment","SectionTitle","Grid","container","spacing","gridTemplateColumns","gridAutoFlow","LabelValuePair","defaultKeyID","endpoints","LabelWithIcon","EnabledIcon","DisabledIcon","url","apisPanel","results","path","method","metricsPanel","BarChart","success","requestOK","failures","requestFail","errors","requestErr","active","requestActive","CartesianGrid","Tooltip","Legend","Bar","audit","auditEvents","errorEvents","latencyHistogram","h","margin","right","bottom","setHelpName","PageHeaderWrapper","actions","HelpMenu","PageLayout","Tabs","onChange","newValue","indicatorColor","textColor","variant","scrollButtons","Tab","onClick","TabPanel","border","borderRadius","flexFlow","padding","createStyled","defaultTheme","createTheme","defaultCreateStyledComponent","systemStyled","slot","overridesResolver","styles","root","useThemePropsDefault","useThemePropsSystem","joinChildren","separator","childrenArray","toArray","output","child","ownerState","theme","flexDirection","handleBreakpoints","resolveBreakpointValues","values","breakpoints","propValue","transformer","createUnarySpacing","base","acc","breakpoint","directionValues","spacingValues","previousDirectionValue","deepmerge","useFlexGap","getValue","row","column","mergeBreakpointsInOrder","options","_options$createStyled","createStyledComponent","_options$useThemeProp","useThemeProps","_options$componentNam","componentName","StackRoot","inProps","themeProps","extendSxProp","_props$component","component","_props$direction","_props$spacing","divider","_props$useFlexGap","other","classes","composeClasses","generateUtilityClass","as","clsx","createStack","styled","defaultTooltipEventType","validateTooltipEventTypes"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/5702.0d80f056.chunk.js b/portal-ui/build/static/js/5702.0d80f056.chunk.js new file mode 100644 index 0000000000..11c9ae3782 --- /dev/null +++ b/portal-ui/build/static/js/5702.0d80f056.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[5702],{25702:function(e,t,n){n.r(t);var i=n(93433),s=n(29439),r=n(72791),o=n(26181),c=n.n(o),l=n(78687),a=n(57689),u=n(29945),d=n(31776),f=n(82342),b=n(38442),x=n(56087),h=n(87995),m=n(9859),j=n(44690),S=n(75578),p=n(27454),v=n(80184),_=(0,S.Z)(r.lazy((function(){return n.e(455).then(n.bind(n,80455))}))),E=(0,S.Z)(r.lazy((function(){return Promise.all([n.e(911),n.e(4549),n.e(817),n.e(225),n.e(6786),n.e(2661)]).then(n.bind(n,82661))})));t.default=function(){var e=(0,j.TL)(),t=(0,a.UO)(),n=(0,l.v9)(m.HQ),o=(0,r.useState)(!1),S=(0,s.Z)(o,2),k=S[0],T=S[1],F=(0,r.useState)(!0),I=(0,s.Z)(F,2),N=I[0],C=I[1],O=(0,r.useState)([]),A=(0,s.Z)(O,2),Z=A[0],g=A[1],y=(0,r.useState)(!1),K=(0,s.Z)(y,2),P=K[0],B=K[1],U=(0,r.useState)(null),G=(0,s.Z)(U,2),M=G[0],w=G[1],z=t.bucketName||"",R=(0,b.F)(z,[x.Ft.S3_GET_BUCKET_NOTIFICATIONS,x.Ft.S3_GET_ACTIONS]);(0,r.useEffect)((function(){n&&C(!0)}),[n,C]),(0,r.useEffect)((function(){e((0,h.Sc)("bucket_detail_events"))}),[]),(0,r.useEffect)((function(){N&&(R?d.h.buckets.listBucketEvents(z).then((function(e){var t=c()(e.data,"events",[]);C(!1),g(t||[])})).catch((function(t){C(!1),e((0,h.Ih)((0,f.g)(t.error)))})):C(!1))}),[N,e,z,R]);var Q=[{type:"delete",onClick:function(e){B(!0),w(e)}}];return(0,v.jsxs)(r.Fragment,{children:[P&&(0,v.jsx)(_,{deleteOpen:P,selectedBucket:z,bucketEvent:M,closeDeleteModalAndRefresh:function(e){B(!1),e&&C(!0)}}),k&&(0,v.jsx)(E,{open:k,selectedBucket:z,closeModalAndRefresh:function(){T(!1),C(!0)}}),(0,v.jsx)(u.NZf,{separator:!0,sx:{marginBottom:15},actions:(0,v.jsx)(b.s,{scopes:[x.Ft.S3_PUT_BUCKET_NOTIFICATIONS,x.Ft.S3_PUT_ACTIONS,x.Ft.ADMIN_SERVER_INFO],resource:z,matchAll:!0,errorProps:{disabled:!0},children:(0,v.jsx)(p.Z,{tooltip:"Subscribe to Event",children:(0,v.jsx)(u.zxk,{id:"Subscribe-bucket-event",onClick:function(){T(!0)},label:"Subscribe to Event",icon:(0,v.jsx)(u.dtP,{}),variant:"callAction"})})}),children:"Events"}),(0,v.jsxs)(u.rjZ,{container:!0,children:[(0,v.jsx)(u.rjZ,{item:!0,xs:12,children:(0,v.jsx)(b.s,{scopes:[x.Ft.S3_GET_BUCKET_NOTIFICATIONS,x.Ft.S3_GET_ACTIONS],resource:z,errorProps:{disabled:!0},children:(0,v.jsx)(u.wQF,{itemActions:Q,columns:[{label:"SQS",elementKey:"arn"},{label:"Events",elementKey:"events",renderFunction:function(e){if(!e)return"other";var t=e.reduce((function(e,t){return e.includes(t)?e:[].concat((0,i.Z)(e),[t])}),[]);return(0,v.jsx)(r.Fragment,{children:t.join(", ")})}},{label:"Prefix",elementKey:"prefix"},{label:"Suffix",elementKey:"suffix"}],isLoading:N,records:Z,entityName:"Events",idField:"id",customPaperHeight:"400px"})})}),!N&&(0,v.jsxs)(u.rjZ,{item:!0,xs:12,children:[(0,v.jsx)("br",{}),(0,v.jsx)(u.KfX,{title:"Event Notifications",iconComponent:(0,v.jsx)(u.cCG,{}),help:(0,v.jsxs)(r.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,v.jsx)("br",{}),(0,v.jsx)("br",{}),"You can learn more at our"," ",(0,v.jsx)("a",{href:"https://min.io/docs/minio/linux/administration/monitoring/bucket-notifications.html?ref=con",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})]})]})]})}}}]); +//# sourceMappingURL=5702.0d80f056.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/5702.0d80f056.chunk.js.map b/portal-ui/build/static/js/5702.0d80f056.chunk.js.map new file mode 100644 index 0000000000..b7c69bdd15 --- /dev/null +++ b/portal-ui/build/static/js/5702.0d80f056.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/5702.0d80f056.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/BucketEventsPanel.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router-dom\";\nimport {\n AddIcon,\n Button,\n HelpBox,\n LambdaIcon,\n DataTable,\n Grid,\n SectionTitle,\n} from \"mds\";\nimport { api } from \"api\";\nimport { NotificationConfig } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../common/SecureComponent/permissions\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../../systemSlice\";\nimport { selBucketDetailsLoading } from \"./bucketDetailsSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport withSuspense from \"../../Common/Components/withSuspense\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst DeleteEvent = withSuspense(React.lazy(() => import(\"./DeleteEvent\")));\nconst AddEvent = withSuspense(React.lazy(() => import(\"./AddEvent\")));\n\nconst BucketEventsPanel = () => {\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(\n null,\n );\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 dispatch(setHelpName(\"bucket_detail_events\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (loadingEvents) {\n if (displayEvents) {\n api.buckets\n .listBucketEvents(bucketName)\n .then((res) => {\n const events = get(res.data, \"events\", []);\n setLoadingEvents(false);\n setRecords(events || []);\n })\n .catch((err) => {\n setLoadingEvents(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n } else {\n setLoadingEvents(false);\n }\n }\n }, [loadingEvents, dispatch, bucketName, displayEvents]);\n\n const eventsDisplay = (events: string[] | null) => {\n if (!events) {\n return \"other\";\n }\n\n const cleanEvents = events.reduce((acc: string[], read: string) => {\n if (!acc.includes(read)) {\n return [...acc, read];\n }\n return acc;\n }, []);\n\n return {cleanEvents.join(\", \")};\n };\n\n const confirmDeleteEvent = (evnt: NotificationConfig) => {\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 {\n setAddEventScreenOpen(true);\n }}\n label={\"Subscribe to Event\"}\n icon={}\n variant={\"callAction\"}\n />\n \n \n }\n >\n Events\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 BucketEventsPanel;\n"],"names":["DeleteEvent","withSuspense","React","AddEvent","dispatch","useAppDispatch","params","useParams","loadingBucket","useSelector","selBucketDetailsLoading","_useState","useState","_useState2","_slicedToArray","addEventScreenOpen","setAddEventScreenOpen","_useState3","_useState4","loadingEvents","setLoadingEvents","_useState5","_useState6","records","setRecords","_useState7","_useState8","deleteOpen","setDeleteOpen","_useState9","_useState10","selectedEvent","setSelectedEvent","bucketName","displayEvents","hasPermission","IAM_SCOPES","S3_GET_BUCKET_NOTIFICATIONS","S3_GET_ACTIONS","useEffect","setHelpName","api","buckets","listBucketEvents","then","res","events","get","data","catch","err","setErrorSnackMessage","errorToHandler","error","tableActions","type","onClick","evnt","_jsxs","Fragment","children","_jsx","selectedBucket","bucketEvent","closeDeleteModalAndRefresh","refresh","open","closeModalAndRefresh","SectionTitle","separator","sx","marginBottom","actions","SecureComponent","scopes","S3_PUT_BUCKET_NOTIFICATIONS","S3_PUT_ACTIONS","ADMIN_SERVER_INFO","resource","matchAll","errorProps","disabled","TooltipWrapper","tooltip","Button","id","label","icon","AddIcon","variant","Grid","container","item","xs","DataTable","itemActions","columns","elementKey","renderFunction","cleanEvents","reduce","acc","read","includes","concat","_toConsumableArray","join","isLoading","entityName","idField","customPaperHeight","HelpBox","title","iconComponent","LambdaIcon","help","href","target","rel"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/5702.9e4dac1a.chunk.js b/portal-ui/build/static/js/5702.9e4dac1a.chunk.js deleted file mode 100644 index 3000cd5d4b..0000000000 --- a/portal-ui/build/static/js/5702.9e4dac1a.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[5702],{25702:function(e,t,n){n.r(t);var i=n(29439),s=n(72791),o=n(26181),r=n.n(o),c=n(78687),l=n(57689),a=n(29945),u=n(31776),d=n(82342),f=n(38442),b=n(56087),x=n(87995),h=n(9859),m=n(81551),j=n(75578),S=n(27454),p=n(80184),v=(0,j.Z)(s.lazy((function(){return n.e(455).then(n.bind(n,80455))}))),_=(0,j.Z)(s.lazy((function(){return Promise.all([n.e(911),n.e(4549),n.e(817),n.e(225),n.e(6786),n.e(2661)]).then(n.bind(n,82661))})));t.default=function(){var e=(0,m.TL)(),t=(0,l.UO)(),n=(0,c.v9)(h.HQ),o=(0,s.useState)(!1),j=(0,i.Z)(o,2),E=j[0],k=j[1],T=(0,s.useState)(!0),F=(0,i.Z)(T,2),I=F[0],N=F[1],C=(0,s.useState)([]),O=(0,i.Z)(C,2),A=O[0],Z=O[1],g=(0,s.useState)(!1),y=(0,i.Z)(g,2),K=y[0],P=y[1],B=(0,s.useState)(null),U=(0,i.Z)(B,2),G=U[0],M=U[1],w=t.bucketName||"",z=(0,f.F)(w,[b.Ft.S3_GET_BUCKET_NOTIFICATIONS,b.Ft.S3_GET_ACTIONS]);(0,s.useEffect)((function(){n&&N(!0)}),[n,N]),(0,s.useEffect)((function(){e((0,x.Sc)("bucket_detail_events"))}),[]),(0,s.useEffect)((function(){I&&(z?u.h.buckets.listBucketEvents(w).then((function(e){var t=r()(e.data,"events",[]);N(!1),Z(t||[])})).catch((function(t){N(!1),e((0,x.Ih)((0,d.g)(t.error)))})):N(!1))}),[I,e,w,z]);var R=[{type:"delete",onClick:function(e){P(!0),M(e)}}];return(0,p.jsxs)(s.Fragment,{children:[K&&(0,p.jsx)(v,{deleteOpen:K,selectedBucket:w,bucketEvent:G,closeDeleteModalAndRefresh:function(e){P(!1),e&&N(!0)}}),E&&(0,p.jsx)(_,{open:E,selectedBucket:w,closeModalAndRefresh:function(){k(!1),N(!0)}}),(0,p.jsx)(a.NZf,{separator:!0,sx:{marginBottom:15},actions:(0,p.jsx)(f.s,{scopes:[b.Ft.S3_PUT_BUCKET_NOTIFICATIONS,b.Ft.S3_PUT_ACTIONS,b.Ft.ADMIN_SERVER_INFO],resource:w,matchAll:!0,errorProps:{disabled:!0},children:(0,p.jsx)(S.Z,{tooltip:"Subscribe to Event",children:(0,p.jsx)(a.zxk,{id:"Subscribe-bucket-event",onClick:function(){k(!0)},label:"Subscribe to Event",icon:(0,p.jsx)(a.dtP,{}),variant:"callAction"})})}),children:"Events"}),(0,p.jsxs)(a.rjZ,{container:!0,children:[(0,p.jsx)(a.rjZ,{item:!0,xs:12,children:(0,p.jsx)(f.s,{scopes:[b.Ft.S3_GET_BUCKET_NOTIFICATIONS,b.Ft.S3_GET_ACTIONS],resource:w,errorProps:{disabled:!0},children:(0,p.jsx)(a.wQF,{itemActions:R,columns:[{label:"SQS",elementKey:"arn"},{label:"Events",elementKey:"events",renderFunction:function(e){return(0,p.jsx)(s.Fragment,{children:e.join(", ")})}},{label:"Prefix",elementKey:"prefix"},{label:"Suffix",elementKey:"suffix"}],isLoading:I,records:A,entityName:"Events",idField:"id",customPaperHeight:"400px"})})}),!I&&(0,p.jsxs)(a.rjZ,{item:!0,xs:12,children:[(0,p.jsx)("br",{}),(0,p.jsx)(a.KfX,{title:"Event Notifications",iconComponent:(0,p.jsx)(a.cCG,{}),help:(0,p.jsxs)(s.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,p.jsx)("br",{}),(0,p.jsx)("br",{}),"You can learn more at our"," ",(0,p.jsx)("a",{href:"https://min.io/docs/minio/linux/administration/monitoring/bucket-notifications.html?ref=con",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})]})]})]})}}}]); -//# sourceMappingURL=5702.9e4dac1a.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/5702.9e4dac1a.chunk.js.map b/portal-ui/build/static/js/5702.9e4dac1a.chunk.js.map deleted file mode 100644 index 8a8f0f08cc..0000000000 --- a/portal-ui/build/static/js/5702.9e4dac1a.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/5702.9e4dac1a.chunk.js","mappings":"gTA2CMA,GAAcC,EAAAA,EAAAA,GAAaC,EAAAA,MAAW,kBAAM,8BAAuB,KACnEC,GAAWF,EAAAA,EAAAA,GAAaC,EAAAA,MAAW,kBAAM,6FAAoB,KA6LnE,UA3L0B,WACxB,IAAME,GAAWC,EAAAA,EAAAA,MACXC,GAASC,EAAAA,EAAAA,MAETC,GAAgBC,EAAAA,EAAAA,IAAYC,EAAAA,IAElCC,GAAoDC,EAAAA,EAAAA,WAAkB,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAArEI,EAAkBF,EAAA,GAAEG,EAAqBH,EAAA,GAChDI,GAA0CL,EAAAA,EAAAA,WAAkB,GAAKM,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAA1DE,EAAaD,EAAA,GAAEE,EAAgBF,EAAA,GACtCG,GAA8BT,EAAAA,EAAAA,UAA+B,IAAGU,GAAAR,EAAAA,EAAAA,GAAAO,EAAA,GAAzDE,EAAOD,EAAA,GAAEE,EAAUF,EAAA,GAC1BG,GAAoCb,EAAAA,EAAAA,WAAkB,GAAMc,GAAAZ,EAAAA,EAAAA,GAAAW,EAAA,GAArDE,EAAUD,EAAA,GAAEE,EAAaF,EAAA,GAChCG,GAA0CjB,EAAAA,EAAAA,UACxC,MACDkB,GAAAhB,EAAAA,EAAAA,GAAAe,EAAA,GAFME,EAAaD,EAAA,GAAEE,EAAgBF,EAAA,GAIhCG,EAAa3B,EAAO2B,YAAc,GAElCC,GAAgBC,EAAAA,EAAAA,GAAcF,EAAY,CAC9CG,EAAAA,GAAWC,4BACXD,EAAAA,GAAWE,kBAGbC,EAAAA,EAAAA,YAAU,WACJ/B,GACFY,GAAiB,EAErB,GAAG,CAACZ,EAAeY,KAEnBmB,EAAAA,EAAAA,YAAU,WACRnC,GAASoC,EAAAA,EAAAA,IAAY,wBAEvB,GAAG,KAEHD,EAAAA,EAAAA,YAAU,WACJpB,IACEe,EACFO,EAAAA,EAAIC,QACDC,iBAAiBV,GACjBW,MAAK,SAACC,GACL,IAAMC,EAASC,IAAIF,EAAIG,KAAM,SAAU,IACvC5B,GAAiB,GACjBI,EAAWsB,GAAU,GACvB,IACCG,OAAM,SAACC,GACN9B,GAAiB,GACjBhB,GAAS+C,EAAAA,EAAAA,KAAqBC,EAAAA,EAAAA,GAAeF,EAAIG,QACnD,IAEFjC,GAAiB,GAGvB,GAAG,CAACD,EAAef,EAAU6B,EAAYC,IAEzC,IAqBMoB,EAAe,CAAC,CAAEC,KAAM,SAAUC,QAjBb,SAACC,GAC1B7B,GAAc,GACdI,EAAiByB,EACnB,IAgBA,OACEC,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CACNjC,IACCkC,EAAAA,EAAAA,KAAC7D,EAAW,CACV2B,WAAYA,EACZmC,eAAgB7B,EAChB8B,YAAahC,EACbiC,2BAhB2B,SAACC,GAClCrC,GAAc,GACVqC,GACF7C,GAAiB,EAErB,IAcKL,IACC8C,EAAAA,EAAAA,KAAC1D,EAAQ,CACP+D,KAAMnD,EACN+C,eAAgB7B,EAChBkC,qBA5BwB,WAC9BnD,GAAsB,GACtBI,GAAiB,EACnB,KA6BIyC,EAAAA,EAAAA,KAACO,EAAAA,IAAY,CACXC,WAAS,EACTC,GAAI,CAAEC,aAAc,IACpBC,SACEX,EAAAA,EAAAA,KAACY,EAAAA,EAAe,CACdC,OAAQ,CACNtC,EAAAA,GAAWuC,4BACXvC,EAAAA,GAAWwC,eACXxC,EAAAA,GAAWyC,mBAEbC,SAAU7C,EACV8C,UAAQ,EACRC,WAAY,CAAEC,UAAU,GAAOrB,UAE/BC,EAAAA,EAAAA,KAACqB,EAAAA,EAAc,CAACC,QAAS,qBAAqBvB,UAC5CC,EAAAA,EAAAA,KAACuB,EAAAA,IAAM,CACLC,GAAI,yBACJ7B,QAAS,WACPxC,GAAsB,EACxB,EACAsE,MAAO,qBACPC,MAAM1B,EAAAA,EAAAA,KAAC2B,EAAAA,IAAO,IACdC,QAAS,mBAIhB7B,SACF,YAIDF,EAAAA,EAAAA,MAACgC,EAAAA,IAAI,CAACC,WAAS,EAAA/B,SAAA,EACbC,EAAAA,EAAAA,KAAC6B,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAGjC,UAChBC,EAAAA,EAAAA,KAACY,EAAAA,EAAe,CACdC,OAAQ,CACNtC,EAAAA,GAAWC,4BACXD,EAAAA,GAAWE,gBAEbwC,SAAU7C,EACV+C,WAAY,CAAEC,UAAU,GAAOrB,UAE/BC,EAAAA,EAAAA,KAACiC,EAAAA,IAAS,CACRC,YAAazC,EACb0C,QAAS,CACP,CAAEV,MAAO,MAAOW,WAAY,OAC5B,CACEX,MAAO,SACPW,WAAY,SACZC,eAzFM,SAACpD,GACrB,OAAOe,EAAAA,EAAAA,KAACF,EAAAA,SAAQ,CAAAC,SAAEd,EAAOqD,KAAK,OAChC,GAyFc,CAAEb,MAAO,SAAUW,WAAY,UAC/B,CAAEX,MAAO,SAAUW,WAAY,WAEjCG,UAAWjF,EACXI,QAASA,EACT8E,WAAW,SACXC,QAAQ,KACRC,kBAAmB,eAIvBpF,IACAuC,EAAAA,EAAAA,MAACgC,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAGjC,SAAA,EAChBC,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAC2C,EAAAA,IAAO,CACNC,MAAO,sBACPC,eAAe7C,EAAAA,EAAAA,KAAC8C,EAAAA,IAAU,IAC1BC,MACElD,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CAAC,2OAKRC,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,SAAM,4BACoB,KAC1BA,EAAAA,EAAAA,KAAA,KACEgD,KAAK,8FACLC,OAAO,SACPC,IAAI,WAAUnD,SACf,kBAEG,iBAUtB,C","sources":["screens/Console/Buckets/BucketDetails/BucketEventsPanel.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router-dom\";\nimport {\n AddIcon,\n Button,\n HelpBox,\n LambdaIcon,\n DataTable,\n Grid,\n SectionTitle,\n} from \"mds\";\nimport { api } from \"api\";\nimport { NotificationConfig } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../common/SecureComponent/permissions\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../../systemSlice\";\nimport { selBucketDetailsLoading } from \"./bucketDetailsSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport withSuspense from \"../../Common/Components/withSuspense\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst DeleteEvent = withSuspense(React.lazy(() => import(\"./DeleteEvent\")));\nconst AddEvent = withSuspense(React.lazy(() => import(\"./AddEvent\")));\n\nconst BucketEventsPanel = () => {\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(\n null,\n );\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 dispatch(setHelpName(\"bucket_detail_events\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (loadingEvents) {\n if (displayEvents) {\n api.buckets\n .listBucketEvents(bucketName)\n .then((res) => {\n const events = get(res.data, \"events\", []);\n setLoadingEvents(false);\n setRecords(events || []);\n })\n .catch((err) => {\n setLoadingEvents(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\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: NotificationConfig) => {\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 {\n setAddEventScreenOpen(true);\n }}\n label={\"Subscribe to Event\"}\n icon={}\n variant={\"callAction\"}\n />\n \n \n }\n >\n Events\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 BucketEventsPanel;\n"],"names":["DeleteEvent","withSuspense","React","AddEvent","dispatch","useAppDispatch","params","useParams","loadingBucket","useSelector","selBucketDetailsLoading","_useState","useState","_useState2","_slicedToArray","addEventScreenOpen","setAddEventScreenOpen","_useState3","_useState4","loadingEvents","setLoadingEvents","_useState5","_useState6","records","setRecords","_useState7","_useState8","deleteOpen","setDeleteOpen","_useState9","_useState10","selectedEvent","setSelectedEvent","bucketName","displayEvents","hasPermission","IAM_SCOPES","S3_GET_BUCKET_NOTIFICATIONS","S3_GET_ACTIONS","useEffect","setHelpName","api","buckets","listBucketEvents","then","res","events","get","data","catch","err","setErrorSnackMessage","errorToHandler","error","tableActions","type","onClick","evnt","_jsxs","Fragment","children","_jsx","selectedBucket","bucketEvent","closeDeleteModalAndRefresh","refresh","open","closeModalAndRefresh","SectionTitle","separator","sx","marginBottom","actions","SecureComponent","scopes","S3_PUT_BUCKET_NOTIFICATIONS","S3_PUT_ACTIONS","ADMIN_SERVER_INFO","resource","matchAll","errorProps","disabled","TooltipWrapper","tooltip","Button","id","label","icon","AddIcon","variant","Grid","container","item","xs","DataTable","itemActions","columns","elementKey","renderFunction","join","isLoading","entityName","idField","customPaperHeight","HelpBox","title","iconComponent","LambdaIcon","help","href","target","rel"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/5759.a3e84ed8.chunk.js b/portal-ui/build/static/js/5759.edc8340c.chunk.js similarity index 97% rename from portal-ui/build/static/js/5759.a3e84ed8.chunk.js rename to portal-ui/build/static/js/5759.edc8340c.chunk.js index fae905c80a..5736dbc08a 100644 --- a/portal-ui/build/static/js/5759.a3e84ed8.chunk.js +++ b/portal-ui/build/static/js/5759.edc8340c.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[5759],{85759:function(e,t,n){n.r(t);var i=n(93433),l=n(29439),r=n(72791),c=n(78687),o=n(57689),s=n(29945),a=n(81207),u=n(38442),d=n(56087),p=n(87995),h=n(9859),f=n(81551),x=n(27454),b=n(75578),m=n(80184),j=(0,b.Z)(r.lazy((function(){return n.e(3509).then(n.bind(n,83509))}))),S=(0,b.Z)(r.lazy((function(){return Promise.all([n.e(911),n.e(889)]).then(n.bind(n,20889))}))),R=(0,b.Z)(r.lazy((function(){return n.e(9088).then(n.bind(n,69088))})));t.default=function(){var e=(0,f.TL)(),t=(0,o.UO)(),n=(0,c.v9)(h.HQ),b=(0,r.useState)(!0),T=(0,l.Z)(b,2),I=T[0],_=T[1],N=(0,r.useState)([]),k=(0,l.Z)(N,2),A=k[0],F=k[1],g=(0,r.useState)(!1),O=(0,l.Z)(g,2),C=O[0],y=O[1],P=(0,r.useState)(!1),Z=(0,l.Z)(P,2),v=Z[0],E=Z[1],U=(0,r.useState)(!1),w=(0,l.Z)(U,2),G=w[0],L=w[1],D=(0,r.useState)(""),K=(0,l.Z)(D,2),z=K[0],M=K[1],B=(0,r.useState)([]),H=(0,l.Z)(B,2),Q=H[0],X=H[1],Y=(0,r.useState)(!1),J=(0,l.Z)(Y,2),q=J[0],V=J[1],W=t.bucketName||"",$=(0,u.F)(W,[d.Ft.S3_GET_REPLICATION_CONFIGURATION,d.Ft.S3_GET_ACTIONS]);(0,r.useEffect)((function(){e((0,p.Sc)("bucket_detail_replication"))}),[]),(0,r.useEffect)((function(){n&&_(!0)}),[n,_]),(0,r.useEffect)((function(){I&&($?a.Z.invoke("GET","/api/v1/buckets/".concat(W,"/replication")).then((function(e){var t=e.rules?e.rules:[];t.sort((function(e,t){return e.priority-t.priority})),F(t),_(!1)})).catch((function(t){e((0,p.Ih)(t)),_(!1)})):_(!1))}),[I,e,W,$]);var ee=function(){E(arguments.length>0&&void 0!==arguments[0]&&arguments[0])},te=(0,o.s0)(),ne=[{type:"delete",onClick:function(e){M(e.id),V(!1),y(!0)}},{type:"view",onClick:function(e){M(e.id),te("/buckets/edit-replication?bucketName=".concat(W,"&ruleID=").concat(e.id))},disableButtonFunction:!(0,u.F)(W,[d.Ft.S3_PUT_REPLICATION_CONFIGURATION,d.Ft.S3_PUT_ACTIONS],!0)}];return(0,m.jsxs)(r.Fragment,{children:[v&&(0,m.jsx)(S,{closeModalAndRefresh:function(){ee(!1),_(!0)},open:v,bucketName:W,setReplicationRules:A}),C&&(0,m.jsx)(R,{deleteOpen:C,selectedBucket:W,closeDeleteModalAndRefresh:function(e){y(!1),e&&_(!0)},ruleToDelete:z,rulesToDelete:Q,remainingRules:A.length,allSelected:A.length>0&&Q.length===A.length,deleteSelectedRules:q}),G&&(0,m.jsx)(j,{closeModalAndRefresh:function(e){L(!1),e&&_(!0)},open:G,bucketName:W,ruleID:z}),(0,m.jsx)(s.NZf,{separator:!0,sx:{marginBottom:15},actions:(0,m.jsxs)(s.xuv,{style:{display:"flex",gap:10},children:[(0,m.jsx)(u.s,{scopes:[d.Ft.S3_PUT_REPLICATION_CONFIGURATION,d.Ft.S3_PUT_ACTIONS],resource:W,matchAll:!0,errorProps:{disabled:!0},children:(0,m.jsx)(x.Z,{tooltip:"Remove Selected Replication Rules",children:(0,m.jsx)(s.zxk,{id:"remove-bucket-replication-rule",onClick:function(){M("selectedRules"),V(!0),y(!0)},label:"Remove Selected Rules",icon:(0,m.jsx)(s.XHJ,{}),color:"secondary",disabled:0===Q.length||0===A.length,variant:"secondary"})})}),(0,m.jsx)(u.s,{scopes:[d.Ft.S3_PUT_REPLICATION_CONFIGURATION,d.Ft.S3_PUT_ACTIONS],resource:W,matchAll:!0,errorProps:{disabled:!0},children:(0,m.jsx)(x.Z,{tooltip:"Add Replication Rule",children:(0,m.jsx)(s.zxk,{id:"add-bucket-replication-rule",onClick:function(){ee(!0)},label:"Add Replication Rule",icon:(0,m.jsx)(s.dtP,{}),variant:"callAction"})})})]}),children:"Replication"}),(0,m.jsxs)(s.rjZ,{container:!0,children:[(0,m.jsx)(s.rjZ,{item:!0,xs:12,children:(0,m.jsx)(u.s,{scopes:[d.Ft.S3_GET_REPLICATION_CONFIGURATION,d.Ft.S3_GET_ACTIONS],resource:W,errorProps:{disabled:!0},children:(0,m.jsx)(s.wQF,{itemActions:ne,columns:[{label:"Priority",elementKey:"priority",width:55,contentTextAlign:"center"},{label:"Destination",elementKey:"destination",renderFunction:function(e){return(0,m.jsx)(r.Fragment,{children:e.bucket.replace("arn:aws:s3:::","")})}},{label:"Prefix",elementKey:"prefix",width:200},{label:"Tags",elementKey:"tags",renderFunction:function(e){return(0,m.jsx)(r.Fragment,{children:e&&""!==e.tags?"Yes":"No"})},width:60},{label:"Status",elementKey:"status",width:100}],isLoading:I,records:A,entityName:"Replication Rules",idField:"id",customPaperHeight:"400px",textSelectable:!0,selectedItems:Q,onSelect:function(e){return function(e){var t=e.target,n=t.value,l=t.checked,r=(0,i.Z)(Q);return l?r.push(n):r=r.filter((function(e){return e!==n})),X(r),r}(e)},onSelectAll:function(){Q.length!==A.length?X(A.map((function(e){return e.id}))):X([])}})})}),(0,m.jsxs)(s.rjZ,{item:!0,xs:12,children:[(0,m.jsx)("br",{}),(0,m.jsx)(s.KfX,{title:"Replication",iconComponent:(0,m.jsx)(s.wNb,{}),help:(0,m.jsxs)(r.Fragment,{children:["MinIO supports server-side and client-side replication of objects between source and destination buckets.",(0,m.jsx)("br",{}),(0,m.jsx)("br",{}),"You can learn more at our"," ",(0,m.jsx)("a",{href:"https://min.io/docs/minio/linux/administration/bucket-replication.html?ref=con",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})]})]})]})}}}]); -//# sourceMappingURL=5759.a3e84ed8.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[5759],{85759:function(e,t,n){n.r(t);var i=n(93433),l=n(29439),r=n(72791),c=n(78687),o=n(57689),s=n(29945),a=n(81207),u=n(38442),d=n(56087),p=n(87995),h=n(9859),f=n(44690),x=n(27454),b=n(75578),m=n(80184),j=(0,b.Z)(r.lazy((function(){return n.e(3509).then(n.bind(n,83509))}))),S=(0,b.Z)(r.lazy((function(){return Promise.all([n.e(911),n.e(889)]).then(n.bind(n,20889))}))),R=(0,b.Z)(r.lazy((function(){return n.e(9088).then(n.bind(n,69088))})));t.default=function(){var e=(0,f.TL)(),t=(0,o.UO)(),n=(0,c.v9)(h.HQ),b=(0,r.useState)(!0),T=(0,l.Z)(b,2),I=T[0],_=T[1],N=(0,r.useState)([]),k=(0,l.Z)(N,2),A=k[0],F=k[1],g=(0,r.useState)(!1),O=(0,l.Z)(g,2),C=O[0],y=O[1],P=(0,r.useState)(!1),Z=(0,l.Z)(P,2),v=Z[0],E=Z[1],U=(0,r.useState)(!1),w=(0,l.Z)(U,2),G=w[0],L=w[1],D=(0,r.useState)(""),K=(0,l.Z)(D,2),z=K[0],M=K[1],B=(0,r.useState)([]),H=(0,l.Z)(B,2),Q=H[0],X=H[1],Y=(0,r.useState)(!1),J=(0,l.Z)(Y,2),q=J[0],V=J[1],W=t.bucketName||"",$=(0,u.F)(W,[d.Ft.S3_GET_REPLICATION_CONFIGURATION,d.Ft.S3_GET_ACTIONS]);(0,r.useEffect)((function(){e((0,p.Sc)("bucket_detail_replication"))}),[]),(0,r.useEffect)((function(){n&&_(!0)}),[n,_]),(0,r.useEffect)((function(){I&&($?a.Z.invoke("GET","/api/v1/buckets/".concat(W,"/replication")).then((function(e){var t=e.rules?e.rules:[];t.sort((function(e,t){return e.priority-t.priority})),F(t),_(!1)})).catch((function(t){e((0,p.Ih)(t)),_(!1)})):_(!1))}),[I,e,W,$]);var ee=function(){E(arguments.length>0&&void 0!==arguments[0]&&arguments[0])},te=(0,o.s0)(),ne=[{type:"delete",onClick:function(e){M(e.id),V(!1),y(!0)}},{type:"view",onClick:function(e){M(e.id),te("/buckets/edit-replication?bucketName=".concat(W,"&ruleID=").concat(e.id))},disableButtonFunction:!(0,u.F)(W,[d.Ft.S3_PUT_REPLICATION_CONFIGURATION,d.Ft.S3_PUT_ACTIONS],!0)}];return(0,m.jsxs)(r.Fragment,{children:[v&&(0,m.jsx)(S,{closeModalAndRefresh:function(){ee(!1),_(!0)},open:v,bucketName:W,setReplicationRules:A}),C&&(0,m.jsx)(R,{deleteOpen:C,selectedBucket:W,closeDeleteModalAndRefresh:function(e){y(!1),e&&_(!0)},ruleToDelete:z,rulesToDelete:Q,remainingRules:A.length,allSelected:A.length>0&&Q.length===A.length,deleteSelectedRules:q}),G&&(0,m.jsx)(j,{closeModalAndRefresh:function(e){L(!1),e&&_(!0)},open:G,bucketName:W,ruleID:z}),(0,m.jsx)(s.NZf,{separator:!0,sx:{marginBottom:15},actions:(0,m.jsxs)(s.xuv,{style:{display:"flex",gap:10},children:[(0,m.jsx)(u.s,{scopes:[d.Ft.S3_PUT_REPLICATION_CONFIGURATION,d.Ft.S3_PUT_ACTIONS],resource:W,matchAll:!0,errorProps:{disabled:!0},children:(0,m.jsx)(x.Z,{tooltip:"Remove Selected Replication Rules",children:(0,m.jsx)(s.zxk,{id:"remove-bucket-replication-rule",onClick:function(){M("selectedRules"),V(!0),y(!0)},label:"Remove Selected Rules",icon:(0,m.jsx)(s.XHJ,{}),color:"secondary",disabled:0===Q.length||0===A.length,variant:"secondary"})})}),(0,m.jsx)(u.s,{scopes:[d.Ft.S3_PUT_REPLICATION_CONFIGURATION,d.Ft.S3_PUT_ACTIONS],resource:W,matchAll:!0,errorProps:{disabled:!0},children:(0,m.jsx)(x.Z,{tooltip:"Add Replication Rule",children:(0,m.jsx)(s.zxk,{id:"add-bucket-replication-rule",onClick:function(){ee(!0)},label:"Add Replication Rule",icon:(0,m.jsx)(s.dtP,{}),variant:"callAction"})})})]}),children:"Replication"}),(0,m.jsxs)(s.rjZ,{container:!0,children:[(0,m.jsx)(s.rjZ,{item:!0,xs:12,children:(0,m.jsx)(u.s,{scopes:[d.Ft.S3_GET_REPLICATION_CONFIGURATION,d.Ft.S3_GET_ACTIONS],resource:W,errorProps:{disabled:!0},children:(0,m.jsx)(s.wQF,{itemActions:ne,columns:[{label:"Priority",elementKey:"priority",width:55,contentTextAlign:"center"},{label:"Destination",elementKey:"destination",renderFunction:function(e){return(0,m.jsx)(r.Fragment,{children:e.bucket.replace("arn:aws:s3:::","")})}},{label:"Prefix",elementKey:"prefix",width:200},{label:"Tags",elementKey:"tags",renderFunction:function(e){return(0,m.jsx)(r.Fragment,{children:e&&""!==e.tags?"Yes":"No"})},width:60},{label:"Status",elementKey:"status",width:100}],isLoading:I,records:A,entityName:"Replication Rules",idField:"id",customPaperHeight:"400px",textSelectable:!0,selectedItems:Q,onSelect:function(e){return function(e){var t=e.target,n=t.value,l=t.checked,r=(0,i.Z)(Q);return l?r.push(n):r=r.filter((function(e){return e!==n})),X(r),r}(e)},onSelectAll:function(){Q.length!==A.length?X(A.map((function(e){return e.id}))):X([])}})})}),(0,m.jsxs)(s.rjZ,{item:!0,xs:12,children:[(0,m.jsx)("br",{}),(0,m.jsx)(s.KfX,{title:"Replication",iconComponent:(0,m.jsx)(s.wNb,{}),help:(0,m.jsxs)(r.Fragment,{children:["MinIO supports server-side and client-side replication of objects between source and destination buckets.",(0,m.jsx)("br",{}),(0,m.jsx)("br",{}),"You can learn more at our"," ",(0,m.jsx)("a",{href:"https://min.io/docs/minio/linux/administration/bucket-replication.html?ref=con",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})]})]})]})}}}]); +//# sourceMappingURL=5759.edc8340c.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/5759.a3e84ed8.chunk.js.map b/portal-ui/build/static/js/5759.edc8340c.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/5759.a3e84ed8.chunk.js.map rename to portal-ui/build/static/js/5759.edc8340c.chunk.js.map index 29b5492040..f82f2c3269 100644 --- a/portal-ui/build/static/js/5759.a3e84ed8.chunk.js.map +++ b/portal-ui/build/static/js/5759.edc8340c.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/5759.a3e84ed8.chunk.js","mappings":"4RAgDMA,GAAuBC,EAAAA,EAAAA,GAC3BC,EAAAA,MAAW,kBAAM,+BAAgC,KAE7CC,GAAsBF,EAAAA,EAAAA,GAC1BC,EAAAA,MAAW,kBAAM,sDAA+B,KAE5CE,GAAwBH,EAAAA,EAAAA,GAC5BC,EAAAA,MAAW,kBAAM,+BAAiC,KA0UpD,UAvU+B,WAC7B,IAAMG,GAAWC,EAAAA,EAAAA,MACXC,GAASC,EAAAA,EAAAA,MAETC,GAAgBC,EAAAA,EAAAA,IAAYC,EAAAA,IAElCC,GAAoDC,EAAAA,EAAAA,WAAkB,GAAKC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAApEI,EAAkBF,EAAA,GAAEG,EAAqBH,EAAA,GAChDI,GAAgDL,EAAAA,EAAAA,UAE9C,IAAGM,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAFEE,EAAgBD,EAAA,GAAEE,EAAmBF,EAAA,GAG5CG,GACET,EAAAA,EAAAA,WAAkB,GAAMU,GAAAR,EAAAA,EAAAA,GAAAO,EAAA,GADnBE,EAAsBD,EAAA,GAAEE,EAAyBF,EAAA,GAExDG,GAAoDb,EAAAA,EAAAA,WAAkB,GAAMc,GAAAZ,EAAAA,EAAAA,GAAAW,EAAA,GAArEE,EAAkBD,EAAA,GAAEE,EAAqBF,EAAA,GAChDG,GACEjB,EAAAA,EAAAA,WAAkB,GAAMkB,GAAAhB,EAAAA,EAAAA,GAAAe,EAAA,GADnBE,EAAoBD,EAAA,GAAEE,EAAuBF,EAAA,GAEpDG,GAA0CrB,EAAAA,EAAAA,UAAiB,IAAGsB,GAAApB,EAAAA,EAAAA,GAAAmB,EAAA,GAAvDE,EAAaD,EAAA,GAAEE,EAAgBF,EAAA,GACtCG,GAAgDzB,EAAAA,EAAAA,UAAmB,IAAG0B,GAAAxB,EAAAA,EAAAA,GAAAuB,EAAA,GAA/DE,EAAgBD,EAAA,GAAEE,EAAmBF,EAAA,GAC5CG,GACE7B,EAAAA,EAAAA,WAAkB,GAAM8B,GAAA5B,EAAAA,EAAAA,GAAA2B,EAAA,GADnBE,EAAmBD,EAAA,GAAEE,EAAsBF,EAAA,GAG5CG,EAAavC,EAAOuC,YAAc,GAElCC,GAA0BC,EAAAA,EAAAA,GAAcF,EAAY,CACxDG,EAAAA,GAAWC,iCACXD,EAAAA,GAAWE,kBAGbC,EAAAA,EAAAA,YAAU,WACR/C,GAASgD,EAAAA,EAAAA,IAAY,6BAEvB,GAAG,KAEHD,EAAAA,EAAAA,YAAU,WACJ3C,GACFQ,GAAsB,EAE1B,GAAG,CAACR,EAAeQ,KAEnBmC,EAAAA,EAAAA,YAAU,WACJpC,IACE+B,EACFO,EAAAA,EACGC,OAAO,MAAM,mBAADC,OAAqBV,EAAU,iBAC3CW,MAAK,SAACC,GACL,IAAMC,EAAID,EAAIE,MAAQF,EAAIE,MAAQ,GAElCD,EAAEE,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAEE,SAAWD,EAAEC,QAAQ,IAExC3C,EAAoBsC,GACpB1C,GAAsB,EACxB,IACCgD,OAAM,SAACC,GACN7D,GAAS8D,EAAAA,EAAAA,IAAqBD,IAC9BjD,GAAsB,EACxB,IAEFA,GAAsB,GAG5B,GAAG,CAACD,EAAoBX,EAAUyC,EAAYC,IAE9C,IAKMqB,GAAyB,WAC7BvC,EADkCwC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAEpC,EA6BMG,IAAWC,EAAAA,EAAAA,MAyCXC,GAA+B,CACnC,CACEC,KAAM,SACNC,QAvD6B,SAACC,GAChCxC,EAAiBwC,EAAYC,IAC7BjC,GAAuB,GACvBpB,GAA0B,EAC5B,GAqDE,CACEkD,KAAM,OACNC,QA/CwB,SAACC,GAC3BxC,EAAiBwC,EAAYC,IAC7BN,GAAS,wCAADhB,OACkCV,EAAU,YAAAU,OAAWqB,EAAYC,IAE7E,EA2CIC,wBAAwB/B,EAAAA,EAAAA,GACtBF,EACA,CACEG,EAAAA,GAAW+B,iCACX/B,EAAAA,GAAWgC,iBAEb,KAKN,OACEC,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CACNxD,IACCyD,EAAAA,EAAAA,KAAClF,EAAmB,CAClBmF,qBApGoB,WAC1BlB,IAAuB,GACvBnD,GAAsB,EACxB,EAkGQsE,KAAM3D,EACNkB,WAAYA,EACZzB,oBAAqBD,IAIxBI,IACC6D,EAAAA,EAAAA,KAACjF,EAAqB,CACpBoF,WAAYhE,EACZiE,eAAgB3C,EAChB4C,2BAtG4B,SAACC,GACnClE,GAA0B,GAEtBkE,GACF1E,GAAsB,EAE1B,EAiGQ2E,aAAcxD,EACdyD,cAAerD,EACfsD,eAAgB1E,EAAiBkD,OACjCyB,YACE3E,EAAiBkD,OAAS,GAC1B9B,EAAiB8B,SAAWlD,EAAiBkD,OAE/C1B,oBAAqBA,IAIxBZ,IACCqD,EAAAA,EAAAA,KAACrF,EAAoB,CACnBsF,qBA5GqB,SAACK,GAC5B1D,GAAwB,GAEpB0D,GACF1E,GAAsB,EAE1B,EAuGQsE,KAAMvD,EACNc,WAAYA,EACZkD,OAAQ5D,KAGZiD,EAAAA,EAAAA,KAACY,EAAAA,IAAY,CACXC,WAAS,EACTC,GAAI,CAAEC,aAAc,IACpBC,SACEnB,EAAAA,EAAAA,MAACoB,EAAAA,IAAG,CAACC,MAAO,CAAEC,QAAS,OAAQC,IAAK,IAAKrB,SAAA,EACvCC,EAAAA,EAAAA,KAACqB,EAAAA,EAAe,CACdC,OAAQ,CACN1D,EAAAA,GAAW+B,iCACX/B,EAAAA,GAAWgC,gBAEb2B,SAAU9D,EACV+D,UAAQ,EACRC,WAAY,CAAEC,UAAU,GAAO3B,UAE/BC,EAAAA,EAAAA,KAAC2B,EAAAA,EAAc,CAACC,QAAS,oCAAoC7B,UAC3DC,EAAAA,EAAAA,KAAC6B,EAAAA,IAAM,CACLpC,GAAI,iCACJF,QAAS,WApHvBvC,EAAiB,iBACjBQ,GAAuB,GACvBpB,GAA0B,EAoHZ,EACA0F,MAAO,wBACPC,MAAM/B,EAAAA,EAAAA,KAACgC,EAAAA,IAAS,IAChBC,MAAO,YACPP,SAC8B,IAA5BvE,EAAiB8B,QACW,IAA5BlD,EAAiBkD,OAEnBiD,QAAS,mBAIflC,EAAAA,EAAAA,KAACqB,EAAAA,EAAe,CACdC,OAAQ,CACN1D,EAAAA,GAAW+B,iCACX/B,EAAAA,GAAWgC,gBAEb2B,SAAU9D,EACV+D,UAAQ,EACRC,WAAY,CAAEC,UAAU,GAAO3B,UAE/BC,EAAAA,EAAAA,KAAC2B,EAAAA,EAAc,CAACC,QAAS,uBAAuB7B,UAC9CC,EAAAA,EAAAA,KAAC6B,EAAAA,IAAM,CACLpC,GAAI,8BACJF,QAAS,WACPR,IAAuB,EACzB,EACA+C,MAAO,uBACPC,MAAM/B,EAAAA,EAAAA,KAACmC,EAAAA,IAAO,IACdD,QAAS,sBAKlBnC,SACF,iBAGDF,EAAAA,EAAAA,MAACuC,EAAAA,IAAI,CAACC,WAAS,EAAAtC,SAAA,EACbC,EAAAA,EAAAA,KAACoC,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAGxC,UAChBC,EAAAA,EAAAA,KAACqB,EAAAA,EAAe,CACdC,OAAQ,CACN1D,EAAAA,GAAWC,iCACXD,EAAAA,GAAWE,gBAEbyD,SAAU9D,EACVgE,WAAY,CAAEC,UAAU,GAAO3B,UAE/BC,EAAAA,EAAAA,KAACwC,EAAAA,IAAS,CACRC,YAAapD,GACbqD,QAAS,CACP,CACEZ,MAAO,WACPa,WAAY,WACZC,MAAO,GACPC,iBAAkB,UAEpB,CACEf,MAAO,cACPa,WAAY,cACZG,eAtKQ,SAACC,GACvB,OAAO/C,EAAAA,EAAAA,KAACF,EAAAA,SAAQ,CAAAC,SAAEgD,EAAOC,OAAOC,QAAQ,gBAAiB,KAC3D,GAsKc,CACEnB,MAAO,SACPa,WAAY,SACZC,MAAO,KAET,CACEd,MAAO,OACPa,WAAY,OACZG,eA5KG,SAACC,GAClB,OAAO/C,EAAAA,EAAAA,KAACF,EAAAA,SAAQ,CAAAC,SAAEgD,GAA0B,KAAhBA,EAAOG,KAAc,MAAQ,MAC3D,EA2KgBN,MAAO,IAET,CAAEd,MAAO,SAAUa,WAAY,SAAUC,MAAO,MAElDO,UAAWxH,EACXyH,QAASrH,EACTsH,WAAW,oBACXC,QAAQ,KACRC,kBAAmB,QACnBC,gBAAc,EACdC,cAAetG,EACfuG,SAAU,SAACC,GAAC,OA5KJ,SAACA,GACnB,IAAMC,EAAUD,EAAEE,OACZC,EAAQF,EAAQE,MAChBC,EAAUH,EAAQG,QAEpBC,GAAkBC,EAAAA,EAAAA,GAAO9G,GAS7B,OARI4G,EAEFC,EAASE,KAAKJ,GAGdE,EAAWA,EAASG,QAAO,SAACC,GAAO,OAAKA,IAAYN,CAAK,IAE3D1G,EAAoB4G,GACbA,CACT,CA6J6BK,CAAYV,EAAE,EAC/BW,YArLW,WACjBnH,EAAiB8B,SAAWlD,EAAiBkD,OAIjD7B,EAAoBrB,EAAiBwI,KAAI,SAACC,GAAC,OAAKA,EAAE/E,EAAE,KAHlDrC,EAAoB,GAIxB,SAmLMyC,EAAAA,EAAAA,MAACuC,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAGxC,SAAA,EAChBC,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAACyE,EAAAA,IAAO,CACNC,MAAO,cACPC,eAAe3E,EAAAA,EAAAA,KAAC4E,EAAAA,IAAW,IAC3BC,MACEhF,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAC,SAAA,CAAC,6GAGRC,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,SAAM,4BACoB,KAC1BA,EAAAA,EAAAA,KAAA,KACE8E,KAAK,iFACLjB,OAAO,SACPkB,IAAI,WAAUhF,SACf,kBAEG,iBASpB,C","sources":["screens/Console/Buckets/BucketDetails/BucketReplicationPanel.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport {\n AddIcon,\n Box,\n BucketsIcon,\n Button,\n DataTable,\n Grid,\n HelpBox,\n SectionTitle,\n TrashIcon,\n} from \"mds\";\nimport api from \"../../../../common/api\";\nimport {\n BucketReplication,\n BucketReplicationDestination,\n BucketReplicationRule,\n} from \"../types\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../common/SecureComponent/permissions\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../../systemSlice\";\nimport { selBucketDetailsLoading } from \"./bucketDetailsSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport withSuspense from \"../../Common/Components/withSuspense\";\n\nconst EditReplicationModal = withSuspense(\n React.lazy(() => import(\"./EditReplicationModal\")),\n);\nconst AddReplicationModal = withSuspense(\n React.lazy(() => import(\"./AddReplicationModal\")),\n);\nconst DeleteReplicationRule = withSuspense(\n React.lazy(() => import(\"./DeleteReplicationRule\")),\n);\n\nconst BucketReplicationPanel = () => {\n const dispatch = useAppDispatch();\n const params = useParams();\n\n const loadingBucket = useSelector(selBucketDetailsLoading);\n\n const [loadingReplication, setLoadingReplication] = useState(true);\n const [replicationRules, setReplicationRules] = useState<\n BucketReplicationRule[]\n >([]);\n const [deleteReplicationModal, setDeleteReplicationModal] =\n useState(false);\n const [openSetReplication, setOpenSetReplication] = useState(false);\n const [editReplicationModal, setEditReplicationModal] =\n useState(false);\n const [selectedRRule, setSelectedRRule] = useState(\"\");\n const [selectedRepRules, setSelectedRepRules] = useState([]);\n const [deleteSelectedRules, setDeleteSelectedRules] =\n useState(false);\n\n const bucketName = params.bucketName || \"\";\n\n const displayReplicationRules = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_REPLICATION_CONFIGURATION,\n IAM_SCOPES.S3_GET_ACTIONS,\n ]);\n\n useEffect(() => {\n dispatch(setHelpName(\"bucket_detail_replication\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (loadingBucket) {\n setLoadingReplication(true);\n }\n }, [loadingBucket, setLoadingReplication]);\n\n useEffect(() => {\n if (loadingReplication) {\n if (displayReplicationRules) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/replication`)\n .then((res: BucketReplication) => {\n const r = res.rules ? res.rules : [];\n\n r.sort((a, b) => a.priority - b.priority);\n\n setReplicationRules(r);\n setLoadingReplication(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoadingReplication(false);\n });\n } else {\n setLoadingReplication(false);\n }\n }\n }, [loadingReplication, dispatch, bucketName, displayReplicationRules]);\n\n const closeAddReplication = () => {\n setOpenReplicationOpen(false);\n setLoadingReplication(true);\n };\n\n const setOpenReplicationOpen = (open = false) => {\n setOpenSetReplication(open);\n };\n\n const closeReplicationModalDelete = (refresh: boolean) => {\n setDeleteReplicationModal(false);\n\n if (refresh) {\n setLoadingReplication(true);\n }\n };\n\n const closeEditReplication = (refresh: boolean) => {\n setEditReplicationModal(false);\n\n if (refresh) {\n setLoadingReplication(true);\n }\n };\n\n const confirmDeleteReplication = (replication: BucketReplicationRule) => {\n setSelectedRRule(replication.id);\n setDeleteSelectedRules(false);\n setDeleteReplicationModal(true);\n };\n\n const confirmDeleteSelectedReplicationRules = () => {\n setSelectedRRule(\"selectedRules\");\n setDeleteSelectedRules(true);\n setDeleteReplicationModal(true);\n };\n const navigate = useNavigate();\n const editReplicationRule = (replication: BucketReplicationRule) => {\n setSelectedRRule(replication.id);\n navigate(\n `/buckets/edit-replication?bucketName=${bucketName}&ruleID=${replication.id}`,\n );\n };\n\n const ruleDestDisplay = (events: BucketReplicationDestination) => {\n return {events.bucket.replace(\"arn:aws:s3:::\", \"\")};\n };\n\n const tagDisplay = (events: BucketReplicationRule) => {\n return {events && events.tags !== \"\" ? \"Yes\" : \"No\"};\n };\n\n const selectAllItems = () => {\n if (selectedRepRules.length === replicationRules.length) {\n setSelectedRepRules([]);\n return;\n }\n setSelectedRepRules(replicationRules.map((x) => x.id));\n };\n\n const selectRules = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selectedRepRules]; // We clone the selectedSAs array\n if (checked) {\n // If the user has checked this field we need to push this to selectedSAs\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedRepRules(elements);\n return elements;\n };\n\n const replicationTableActions: any = [\n {\n type: \"delete\",\n onClick: confirmDeleteReplication,\n },\n {\n type: \"view\",\n onClick: editReplicationRule,\n disableButtonFunction: !hasPermission(\n bucketName,\n [\n IAM_SCOPES.S3_PUT_REPLICATION_CONFIGURATION,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ],\n true,\n ),\n },\n ];\n\n return (\n \n {openSetReplication && (\n \n )}\n\n {deleteReplicationModal && (\n 0 &&\n selectedRepRules.length === replicationRules.length\n }\n deleteSelectedRules={deleteSelectedRules}\n />\n )}\n\n {editReplicationModal && (\n \n )}\n \n \n \n {\n confirmDeleteSelectedReplicationRules();\n }}\n label={\"Remove Selected Rules\"}\n icon={}\n color={\"secondary\"}\n disabled={\n selectedRepRules.length === 0 ||\n replicationRules.length === 0\n }\n variant={\"secondary\"}\n />\n \n \n \n \n {\n setOpenReplicationOpen(true);\n }}\n label={\"Add Replication Rule\"}\n icon={}\n variant={\"callAction\"}\n />\n \n \n \n }\n >\n Replication\n \n \n \n \n selectRules(e)}\n onSelectAll={selectAllItems}\n />\n \n \n \n
    \n }\n help={\n \n MinIO supports server-side and client-side replication of\n objects between source and destination buckets.\n
    \n
    \n You can learn more at our{\" \"}\n \n documentation\n \n .\n
    \n }\n />\n
    \n
    \n
    \n );\n};\n\nexport default BucketReplicationPanel;\n"],"names":["EditReplicationModal","withSuspense","React","AddReplicationModal","DeleteReplicationRule","dispatch","useAppDispatch","params","useParams","loadingBucket","useSelector","selBucketDetailsLoading","_useState","useState","_useState2","_slicedToArray","loadingReplication","setLoadingReplication","_useState3","_useState4","replicationRules","setReplicationRules","_useState5","_useState6","deleteReplicationModal","setDeleteReplicationModal","_useState7","_useState8","openSetReplication","setOpenSetReplication","_useState9","_useState10","editReplicationModal","setEditReplicationModal","_useState11","_useState12","selectedRRule","setSelectedRRule","_useState13","_useState14","selectedRepRules","setSelectedRepRules","_useState15","_useState16","deleteSelectedRules","setDeleteSelectedRules","bucketName","displayReplicationRules","hasPermission","IAM_SCOPES","S3_GET_REPLICATION_CONFIGURATION","S3_GET_ACTIONS","useEffect","setHelpName","api","invoke","concat","then","res","r","rules","sort","a","b","priority","catch","err","setErrorSnackMessage","setOpenReplicationOpen","arguments","length","undefined","navigate","useNavigate","replicationTableActions","type","onClick","replication","id","disableButtonFunction","S3_PUT_REPLICATION_CONFIGURATION","S3_PUT_ACTIONS","_jsxs","Fragment","children","_jsx","closeModalAndRefresh","open","deleteOpen","selectedBucket","closeDeleteModalAndRefresh","refresh","ruleToDelete","rulesToDelete","remainingRules","allSelected","ruleID","SectionTitle","separator","sx","marginBottom","actions","Box","style","display","gap","SecureComponent","scopes","resource","matchAll","errorProps","disabled","TooltipWrapper","tooltip","Button","label","icon","TrashIcon","color","variant","AddIcon","Grid","container","item","xs","DataTable","itemActions","columns","elementKey","width","contentTextAlign","renderFunction","events","bucket","replace","tags","isLoading","records","entityName","idField","customPaperHeight","textSelectable","selectedItems","onSelect","e","targetD","target","value","checked","elements","_toConsumableArray","push","filter","element","selectRules","onSelectAll","map","x","HelpBox","title","iconComponent","BucketsIcon","help","href","rel"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/5759.edc8340c.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/BucketReplicationPanel.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport {\n AddIcon,\n Box,\n BucketsIcon,\n Button,\n DataTable,\n Grid,\n HelpBox,\n SectionTitle,\n TrashIcon,\n} from \"mds\";\nimport api from \"../../../../common/api\";\nimport {\n BucketReplication,\n BucketReplicationDestination,\n BucketReplicationRule,\n} from \"../types\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../common/SecureComponent/permissions\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../../systemSlice\";\nimport { selBucketDetailsLoading } from \"./bucketDetailsSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport withSuspense from \"../../Common/Components/withSuspense\";\n\nconst EditReplicationModal = withSuspense(\n React.lazy(() => import(\"./EditReplicationModal\")),\n);\nconst AddReplicationModal = withSuspense(\n React.lazy(() => import(\"./AddReplicationModal\")),\n);\nconst DeleteReplicationRule = withSuspense(\n React.lazy(() => import(\"./DeleteReplicationRule\")),\n);\n\nconst BucketReplicationPanel = () => {\n const dispatch = useAppDispatch();\n const params = useParams();\n\n const loadingBucket = useSelector(selBucketDetailsLoading);\n\n const [loadingReplication, setLoadingReplication] = useState(true);\n const [replicationRules, setReplicationRules] = useState<\n BucketReplicationRule[]\n >([]);\n const [deleteReplicationModal, setDeleteReplicationModal] =\n useState(false);\n const [openSetReplication, setOpenSetReplication] = useState(false);\n const [editReplicationModal, setEditReplicationModal] =\n useState(false);\n const [selectedRRule, setSelectedRRule] = useState(\"\");\n const [selectedRepRules, setSelectedRepRules] = useState([]);\n const [deleteSelectedRules, setDeleteSelectedRules] =\n useState(false);\n\n const bucketName = params.bucketName || \"\";\n\n const displayReplicationRules = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_REPLICATION_CONFIGURATION,\n IAM_SCOPES.S3_GET_ACTIONS,\n ]);\n\n useEffect(() => {\n dispatch(setHelpName(\"bucket_detail_replication\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (loadingBucket) {\n setLoadingReplication(true);\n }\n }, [loadingBucket, setLoadingReplication]);\n\n useEffect(() => {\n if (loadingReplication) {\n if (displayReplicationRules) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/replication`)\n .then((res: BucketReplication) => {\n const r = res.rules ? res.rules : [];\n\n r.sort((a, b) => a.priority - b.priority);\n\n setReplicationRules(r);\n setLoadingReplication(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoadingReplication(false);\n });\n } else {\n setLoadingReplication(false);\n }\n }\n }, [loadingReplication, dispatch, bucketName, displayReplicationRules]);\n\n const closeAddReplication = () => {\n setOpenReplicationOpen(false);\n setLoadingReplication(true);\n };\n\n const setOpenReplicationOpen = (open = false) => {\n setOpenSetReplication(open);\n };\n\n const closeReplicationModalDelete = (refresh: boolean) => {\n setDeleteReplicationModal(false);\n\n if (refresh) {\n setLoadingReplication(true);\n }\n };\n\n const closeEditReplication = (refresh: boolean) => {\n setEditReplicationModal(false);\n\n if (refresh) {\n setLoadingReplication(true);\n }\n };\n\n const confirmDeleteReplication = (replication: BucketReplicationRule) => {\n setSelectedRRule(replication.id);\n setDeleteSelectedRules(false);\n setDeleteReplicationModal(true);\n };\n\n const confirmDeleteSelectedReplicationRules = () => {\n setSelectedRRule(\"selectedRules\");\n setDeleteSelectedRules(true);\n setDeleteReplicationModal(true);\n };\n const navigate = useNavigate();\n const editReplicationRule = (replication: BucketReplicationRule) => {\n setSelectedRRule(replication.id);\n navigate(\n `/buckets/edit-replication?bucketName=${bucketName}&ruleID=${replication.id}`,\n );\n };\n\n const ruleDestDisplay = (events: BucketReplicationDestination) => {\n return {events.bucket.replace(\"arn:aws:s3:::\", \"\")};\n };\n\n const tagDisplay = (events: BucketReplicationRule) => {\n return {events && events.tags !== \"\" ? \"Yes\" : \"No\"};\n };\n\n const selectAllItems = () => {\n if (selectedRepRules.length === replicationRules.length) {\n setSelectedRepRules([]);\n return;\n }\n setSelectedRepRules(replicationRules.map((x) => x.id));\n };\n\n const selectRules = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selectedRepRules]; // We clone the selectedSAs array\n if (checked) {\n // If the user has checked this field we need to push this to selectedSAs\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedRepRules(elements);\n return elements;\n };\n\n const replicationTableActions: any = [\n {\n type: \"delete\",\n onClick: confirmDeleteReplication,\n },\n {\n type: \"view\",\n onClick: editReplicationRule,\n disableButtonFunction: !hasPermission(\n bucketName,\n [\n IAM_SCOPES.S3_PUT_REPLICATION_CONFIGURATION,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ],\n true,\n ),\n },\n ];\n\n return (\n \n {openSetReplication && (\n \n )}\n\n {deleteReplicationModal && (\n 0 &&\n selectedRepRules.length === replicationRules.length\n }\n deleteSelectedRules={deleteSelectedRules}\n />\n )}\n\n {editReplicationModal && (\n \n )}\n \n \n \n {\n confirmDeleteSelectedReplicationRules();\n }}\n label={\"Remove Selected Rules\"}\n icon={}\n color={\"secondary\"}\n disabled={\n selectedRepRules.length === 0 ||\n replicationRules.length === 0\n }\n variant={\"secondary\"}\n />\n \n \n \n \n {\n setOpenReplicationOpen(true);\n }}\n label={\"Add Replication Rule\"}\n icon={}\n variant={\"callAction\"}\n />\n \n \n \n }\n >\n Replication\n \n \n \n \n selectRules(e)}\n onSelectAll={selectAllItems}\n />\n \n \n \n
    \n }\n help={\n \n MinIO supports server-side and client-side replication of\n objects between source and destination buckets.\n
    \n
    \n You can learn more at our{\" \"}\n \n documentation\n \n .\n
    \n }\n />\n
    \n
    \n
    \n );\n};\n\nexport default BucketReplicationPanel;\n"],"names":["EditReplicationModal","withSuspense","React","AddReplicationModal","DeleteReplicationRule","dispatch","useAppDispatch","params","useParams","loadingBucket","useSelector","selBucketDetailsLoading","_useState","useState","_useState2","_slicedToArray","loadingReplication","setLoadingReplication","_useState3","_useState4","replicationRules","setReplicationRules","_useState5","_useState6","deleteReplicationModal","setDeleteReplicationModal","_useState7","_useState8","openSetReplication","setOpenSetReplication","_useState9","_useState10","editReplicationModal","setEditReplicationModal","_useState11","_useState12","selectedRRule","setSelectedRRule","_useState13","_useState14","selectedRepRules","setSelectedRepRules","_useState15","_useState16","deleteSelectedRules","setDeleteSelectedRules","bucketName","displayReplicationRules","hasPermission","IAM_SCOPES","S3_GET_REPLICATION_CONFIGURATION","S3_GET_ACTIONS","useEffect","setHelpName","api","invoke","concat","then","res","r","rules","sort","a","b","priority","catch","err","setErrorSnackMessage","setOpenReplicationOpen","arguments","length","undefined","navigate","useNavigate","replicationTableActions","type","onClick","replication","id","disableButtonFunction","S3_PUT_REPLICATION_CONFIGURATION","S3_PUT_ACTIONS","_jsxs","Fragment","children","_jsx","closeModalAndRefresh","open","deleteOpen","selectedBucket","closeDeleteModalAndRefresh","refresh","ruleToDelete","rulesToDelete","remainingRules","allSelected","ruleID","SectionTitle","separator","sx","marginBottom","actions","Box","style","display","gap","SecureComponent","scopes","resource","matchAll","errorProps","disabled","TooltipWrapper","tooltip","Button","label","icon","TrashIcon","color","variant","AddIcon","Grid","container","item","xs","DataTable","itemActions","columns","elementKey","width","contentTextAlign","renderFunction","events","bucket","replace","tags","isLoading","records","entityName","idField","customPaperHeight","textSelectable","selectedItems","onSelect","e","targetD","target","value","checked","elements","_toConsumableArray","push","filter","element","selectRules","onSelectAll","map","x","HelpBox","title","iconComponent","BucketsIcon","help","href","rel"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/5935.7e18eaf4.chunk.js b/portal-ui/build/static/js/5935.7e18eaf4.chunk.js deleted file mode 100644 index 2650eb4012..0000000000 --- a/portal-ui/build/static/js/5935.7e18eaf4.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[5935],{65935:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return S}});var r=n(1413),o=n(74165),i=n(15861),c=n(29439),s=n(72791),a=n(57689),l=n(29945),u=n(23814),d=n(56087),p=n(87995),f=n(31776),y=n(82342),h=n(66315),x=n(92217),m=n(64554),g=n(80184),b=function(e){var t=e.icon,n=e.description;return(0,g.jsxs)(m.Z,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[t," ",(0,g.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:n})]})},v=function(){return(0,g.jsxs)(m.Z,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px",marginTop:{xs:"0px"}},children:[(0,g.jsxs)(m.Z,{sx:{fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center",marginBottom:"16px",paddingBottom:"20px","& .min-icon":{height:"21px",width:"21px",marginRight:"15px"}},children:[(0,g.jsx)(l.M9A,{}),(0,g.jsx)("div",{children:"Learn more about Access Keys"})]}),(0,g.jsxs)(m.Z,{sx:{fontSize:"14px",marginBottom:"15px"},children:[(0,g.jsxs)(m.Z,{sx:{paddingBottom:"20px"},children:[(0,g.jsx)(b,{icon:(0,g.jsx)(l.nO6,{}),description:"Create Access Keys"}),(0,g.jsx)(m.Z,{sx:{paddingTop:"20px"},children:"Access Keys inherit the policies explicitly attached to the parent user, and the policies attached to each group in which the parent user has membership."})]}),(0,g.jsxs)(m.Z,{sx:{paddingBottom:"20px"},children:[(0,g.jsx)(b,{icon:(0,g.jsx)(l.tvm,{}),description:"Assign Custom Credentials"}),(0,g.jsx)(m.Z,{sx:{paddingTop:"10px"},children:"Randomized access credentials are recommended, and provided by default. You may use your own custom Access Key and Secret Key by replacing the default values. After creation of any Access Key, you will be given the opportunity to view and download the account credentials."}),(0,g.jsx)(m.Z,{sx:{paddingTop:"10px"},children:"Access Keys support programmatic access by applications. You cannot use a Access Key to log into the MinIO Console."})]}),(0,g.jsxs)(m.Z,{sx:{paddingBottom:"20px"},children:[(0,g.jsx)(b,{icon:(0,g.jsx)(l.v42,{}),description:"Assign Access Policies"}),(0,g.jsx)(m.Z,{sx:{paddingTop:"10px"},children:"You can specify an optional JSON-formatted IAM policy to further restrict Access Key access to a subset of the actions and resources explicitly allowed for the parent user. Additional access beyond that of the parent user cannot be implemented through these policies."}),(0,g.jsx)(m.Z,{sx:{paddingTop:"10px"},children:"You cannot modify the optional Access Key IAM policy after saving."})]})]}),(0,g.jsx)(m.Z,{sx:{display:"flex",flexFlow:"column"}})]})},j=n(37798),w=n(60680),C=n(47974),A=n(99670),K=n(81551),O=n(45248),S=function(){var e=(0,K.TL)(),t=(0,a.s0)(),n=(0,s.useState)(!1),m=(0,c.Z)(n,2),b=m[0],S=m[1],Z=(0,s.useState)((0,O.zO)(20)),k=(0,c.Z)(Z,2),P=k[0],D=k[1],T=(0,s.useState)((0,O.zO)(40)),E=(0,c.Z)(T,2),R=E[0],I=E[1],z=(0,s.useState)(!1),_=(0,c.Z)(z,2),N=_[0],B=_[1],M=(0,s.useState)(null),J=(0,c.Z)(M,2),U=J[0],F=J[1],Y=(0,s.useState)(""),H=(0,c.Z)(Y,2),L=H[0],W=H[1];(0,s.useEffect)((function(){e((0,p.Sc)("add_service_account"))}),[]),(0,s.useEffect)((function(){b&&f.h.serviceAccountCredentials.createServiceAccountCreds({policy:L,accessKey:P,secretKey:R},{type:h.zc.Json}).then((function(e){S(!1),F({accessKey:e.data.accessKey||"",secretKey:e.data.secretKey||"",url:e.url||""})})).catch(function(){var t=(0,i.Z)((0,o.Z)().mark((function t(n){var r;return(0,o.Z)().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return S(!1),t.next=3,n.json();case 3:r=t.sent,e((0,p.Ih)((0,y.g)(r)));case 5:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}())}),[b,S,e,L,P,R]),(0,s.useEffect)((function(){N&&f.h.user.getUserPolicy().then((function(e){W(JSON.stringify(JSON.parse(e.data),null,4))}))}),[N]);return(0,g.jsxs)(s.Fragment,{children:[null!==U&&(0,g.jsx)(j.Z,{newServiceAccount:U,open:!0,closeModal:function(){F(null),t("".concat(d.gA.ACCOUNT))},entity:"Access Key"}),(0,g.jsxs)(l.rjZ,{item:!0,xs:12,children:[(0,g.jsx)(C.Z,{label:(0,g.jsx)(l.hbI,{label:"Access Keys",onClick:function(){return t(d.gA.ACCOUNT)}}),actions:(0,g.jsx)(A.Z,{})}),(0,g.jsx)(l.Xgh,{children:(0,g.jsx)(l.ltY,{helpBox:(0,g.jsx)(v,{}),icon:(0,g.jsx)(l.tVY,{}),title:"Create Access Key",children:(0,g.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),function(e){e.preventDefault(),S(!0)}(e)},children:[(0,g.jsx)(l.Wzg,{value:P,label:"Access Key",id:"accessKey",name:"accessKey",placeholder:"Enter Access Key",onChange:function(e){D(e.target.value)},startIcon:(0,g.jsx)(l.nO6,{})}),(0,g.jsx)(l.Wzg,{value:R,label:"Secret Key",id:"secretKey",name:"secretKey",type:"password",placeholder:"Enter Secret Key",onChange:function(e){I(e.target.value)},startIcon:(0,g.jsx)(l.tvm,{})}),(0,g.jsx)(l.rsf,{value:"serviceAccountPolicy",id:"serviceAccountPolicy",name:"serviceAccountPolicy",checked:N,onChange:function(e){B(e.target.checked)},label:"Restrict beyond user policy",description:"You can specify an optional JSON-formatted IAM policy to further restrict Access Key access to a subset of the actions and resources explicitly allowed for the parent user. Additional access beyond that of the parent user cannot be implemented through these policies."}),N&&(0,g.jsxs)(l.rjZ,{item:!0,xs:12,children:[(0,g.jsx)(l.xuv,{children:(0,g.jsx)(w.Z,{children:"Current User Policy - edit the JSON to remove permissions for this Access Key"})}),(0,g.jsx)(l.rjZ,{item:!0,xs:12,sx:(0,r.Z)({},u.ID.formScrollable),children:(0,g.jsx)(x.Z,{value:L,onChange:function(e){W(e)},editorHeight:"350px"})})]}),(0,g.jsxs)(l.rjZ,{item:!0,xs:12,sx:(0,r.Z)({},u.ID.modalButtonBar),children:[(0,g.jsx)(l.zxk,{id:"clear",type:"button",variant:"regular",onClick:function(){W(""),F(null),D(""),I("")},label:"Clear"}),(0,g.jsx)(l.zxk,{id:"create-sa",type:"submit",variant:"callAction",color:"primary",label:"Create"})]})]})})})]})]})}},37798:function(e,t,n){"use strict";n.d(t,{Z:function(){return v}});var r=n(1413),o=n(72791),i=n(26181),c=n.n(i),s=n(17691),a=n(29945),l=n(56028),u=n(78029),d=n.n(u),p=n(87995),f=n(81551),y=n(80184),h=function(e){var t=e.label,n=void 0===t?"":t,r=e.value,o=void 0===r?"":r,i=(0,f.TL)();return(0,y.jsxs)(a.xuv,{sx:{marginTop:12},children:[(0,y.jsx)(a.AZs,{children:n}),(0,y.jsx)(a.bSr,{actionButton:(0,y.jsx)(d(),{text:o,children:(0,y.jsx)(a.zxk,{id:"copy-path",variant:"regular",onClick:function(){i((0,p.MK)("".concat(n," copied to clipboard")))},style:{marginRight:"5px",width:"28px",height:"28px",padding:"0px"},icon:(0,y.jsx)(a.TIy,{})})}),children:o})]})},x=n(27454),m=n(23814),g=s.ZP.div((function(e){e.theme;return{color:"red",fontSize:".85rem",margin:".5rem 0 .5rem 0",display:"flex",alignItems:"center","& svg ":{marginRight:".3rem",height:16,width:16}}})),b=function(e,t){var n=document.createElement("a");n.setAttribute("href","data:text/plain;charset=utf-8,"+t),n.setAttribute("download",e),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n)},v=function(e){var t=e.newServiceAccount,n=e.open,i=e.closeModal,s=e.entity;if(!t)return null;var u=c()(t,"console",null),d=c()(t,"idp",!1);return(0,y.jsx)(l.Z,{modalOpen:n,onClose:function(){i()},title:"New ".concat(s," Created"),titleIcon:(0,y.jsx)(a.tVY,{}),children:(0,y.jsxs)(a.rjZ,{container:!0,children:[(0,y.jsxs)(a.rjZ,{item:!0,xs:12,children:["A new ",s," has been created with the following details:",!d&&u&&(0,y.jsx)(o.Fragment,{children:(0,y.jsxs)(a.rjZ,{item:!0,xs:12,sx:{overflowY:"auto",maxHeight:350},children:[(0,y.jsx)(a.xuv,{sx:{padding:".8rem 0 0 0",fontWeight:600,fontSize:".9rem"},children:"Console Credentials"}),Array.isArray(u)&&u.map((function(e,t){return(0,y.jsxs)(o.Fragment,{children:[(0,y.jsx)(h,{label:"Access Key",value:e.accessKey}),(0,y.jsx)(h,{label:"Secret Key",value:e.secretKey})]})})),!Array.isArray(u)&&(0,y.jsxs)(o.Fragment,{children:[(0,y.jsx)(h,{label:"Access Key",value:u.accessKey}),(0,y.jsx)(h,{label:"Secret Key",value:u.secretKey})]})]})}),(null===u||void 0===u)&&(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(h,{label:"Access Key",value:t.accessKey||""}),(0,y.jsx)(h,{label:"Secret Key",value:t.secretKey||""})]}),d?(0,y.jsx)(g,{children:"Please Login via the configured external identity provider."}):(0,y.jsxs)(g,{children:[(0,y.jsx)(a.e6P,{}),(0,y.jsx)("span",{children:"Write these down, as this is the only time the secret will be displayed."})]})]}),(0,y.jsx)(a.rjZ,{item:!0,xs:12,sx:(0,r.Z)({},m.ID.modalButtonBar),children:!d&&(0,y.jsxs)(o.Fragment,{children:[(0,y.jsx)(x.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)(a.zxk,{id:"download-button",label:"Download for import",onClick:function(){var e={};u?e=Array.isArray(u)?u.map((function(e){return{url:e.url,accessKey:e.accessKey,secretKey:e.secretKey,api:"s3v4",path:"auto"}}))[0]:{url:u.url,accessKey:u.accessKey,secretKey:u.secretKey,api:"s3v4",path:"auto"}:e={url:t.url,accessKey:t.accessKey,secretKey:t.secretKey,api:"s3v4",path:"auto"};b("credentials.json",JSON.stringify((0,r.Z)({},e)))},icon:(0,y.jsx)(a._8t,{}),variant:"callAction"})}),Array.isArray(u)&&u.length>1&&(0,y.jsx)(x.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)(a.zxk,{id:"download-all-button",label:"Download all access credentials",onClick:function(){var e={};u&&Array.isArray(u)&&u.length>1&&(e=u.map((function(e){return{accessKey:e.accessKey,secretKey:e.secretKey}})));b("all_credentials.json",JSON.stringify((0,r.Z)({},e)))},icon:(0,y.jsx)(a._8t,{}),variant:"callAction",color:"primary"})})]})})]})})}},92217:function(e,t,n){"use strict";var r=n(72791),o=n(29945),i=n(78029),c=n.n(i),s=n(27454),a=n(80184);t.Z=function(e){var t=e.value,n=e.label,i=void 0===n?"":n,l=e.tooltip,u=void 0===l?"":l,d=e.mode,p=void 0===d?"json":d,f=e.onChange,y=e.editorHeight,h=void 0===y?250:y;return(0,a.jsx)(o.pq4,{value:t,onChange:function(e){return f(e)},mode:p,tooltip:u,editorHeight:h,label:i,helpTools:(0,a.jsx)(r.Fragment,{children:(0,a.jsx)(s.Z,{tooltip:"Copy to Clipboard",children:(0,a.jsx)(c(),{text:t,children:(0,a.jsx)(o.zxk,{type:"button",id:"copy-code-mirror",icon:(0,a.jsx)(o.TIy,{}),color:"primary",variant:"regular"})})})})})}},60680:function(e,t,n){"use strict";n(72791);var r=n(11135),o=n(25787),i=n(80184);t.Z=(0,o.Z)((function(e){return(0,r.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})}))},76998:function(e,t,n){"use strict";var r=n(42458),o={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,i,c,s,a,l,u=!1;t||(t={}),n=t.debug||!1;try{if(c=r(),s=document.createRange(),a=document.getSelection(),(l=document.createElement("span")).textContent=e,l.ariaHidden="true",l.style.all="unset",l.style.position="fixed",l.style.top=0,l.style.clip="rect(0, 0, 0, 0)",l.style.whiteSpace="pre",l.style.webkitUserSelect="text",l.style.MozUserSelect="text",l.style.msUserSelect="text",l.style.userSelect="text",l.addEventListener("copy",(function(r){if(r.stopPropagation(),t.format)if(r.preventDefault(),"undefined"===typeof r.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var i=o[t.format]||o.default;window.clipboardData.setData(i,e)}else r.clipboardData.clearData(),r.clipboardData.setData(t.format,e);t.onCopy&&(r.preventDefault(),t.onCopy(r.clipboardData))})),document.body.appendChild(l),s.selectNodeContents(l),a.addRange(s),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");u=!0}catch(d){n&&console.error("unable to copy using execCommand: ",d),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),u=!0}catch(d){n&&console.error("unable to copy using clipboardData: ",d),n&&console.error("falling back to prompt"),i=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(i,e)}}finally{a&&("function"==typeof a.removeRange?a.removeRange(s):a.removeAllRanges()),l&&document.body.removeChild(l),c()}return u}},568:function(e,t,n){"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var o=s(n(72791)),i=s(n(76998)),c=["text","onCopy","options","children"];function s(e){return e&&e.__esModule?e:{default:e}}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function d(e,t){for(var n=0;n.\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport {\n HelpIconFilled,\n IAMPoliciesIcon,\n PasswordKeyIcon,\n ServiceAccountIcon,\n} from \"mds\";\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 AddServiceAccountHelpBox = () => {\n return (\n \n \n \n
    Learn more about Access Keys
    \n \n \n \n }\n description={`Create Access Keys`}\n />\n \n Access Keys inherit the policies explicitly attached to the parent\n user, and the policies attached to each group in which the parent\n user has membership.\n \n \n \n }\n description={`Assign Custom Credentials`}\n />\n \n Randomized access credentials are recommended, and provided by\n default. You may use your own custom Access Key and Secret Key by\n replacing the default values. After creation of any Access Key, you\n will be given the opportunity to view and download the account\n credentials.\n \n \n Access Keys support programmatic access by applications. You cannot\n use a Access Key to log into the MinIO Console.\n \n \n \n }\n description={`Assign Access Policies`}\n />\n \n You can specify an optional JSON-formatted IAM policy to further\n restrict Access Key access to a subset of the actions and resources\n explicitly allowed for the parent user. Additional access beyond\n that of the parent user cannot be implemented through these\n policies.\n \n \n You cannot modify the optional Access Key IAM policy after saving.\n \n \n \n \n \n );\n};\n\nexport default AddServiceAccountHelpBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n BackLink,\n Button,\n PageLayout,\n PasswordKeyIcon,\n ServiceAccountCredentialsIcon,\n Grid,\n Box,\n FormLayout,\n InputBox,\n Switch,\n ServiceAccountIcon,\n} from \"mds\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { NewServiceAccount } from \"../Common/CredentialsPrompt/types\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { ApiError, ContentType } from \"api/consoleApi\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport AddServiceAccountHelpBox from \"./AddServiceAccountHelpBox\";\nimport CredentialsPrompt from \"../Common/CredentialsPrompt/CredentialsPrompt\";\nimport PanelTitle from \"../Common/PanelTitle/PanelTitle\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport { useAppDispatch } from \"store\";\nimport { getRandomString } from \"common/utils\";\n\nconst AddServiceAccount = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [addSending, setAddSending] = useState(false);\n const [accessKey, setAccessKey] = useState(getRandomString(20));\n const [secretKey, setSecretKey] = useState(getRandomString(40));\n const [isRestrictedByPolicy, setIsRestrictedByPolicy] =\n useState(false);\n const [newServiceAccount, setNewServiceAccount] =\n useState(null);\n const [policyJSON, setPolicyJSON] = useState(\"\");\n\n useEffect(() => {\n dispatch(setHelpName(\"add_service_account\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (addSending) {\n api.serviceAccountCredentials\n .createServiceAccountCreds(\n {\n policy: policyJSON,\n accessKey: accessKey,\n secretKey: secretKey,\n },\n { type: ContentType.Json },\n )\n .then((res) => {\n setAddSending(false);\n setNewServiceAccount({\n accessKey: res.data.accessKey || \"\",\n secretKey: res.data.secretKey || \"\",\n url: res.url || \"\",\n });\n })\n\n .catch(async (res) => {\n setAddSending(false);\n const err = (await res.json()) as ApiError;\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n });\n }\n }, [addSending, setAddSending, dispatch, policyJSON, accessKey, secretKey]);\n\n useEffect(() => {\n if (isRestrictedByPolicy) {\n api.user.getUserPolicy().then((res) => {\n setPolicyJSON(JSON.stringify(JSON.parse(res.data), null, 4));\n });\n }\n }, [isRestrictedByPolicy]);\n\n const addServiceAccount = (e: React.FormEvent) => {\n e.preventDefault();\n setAddSending(true);\n };\n\n const resetForm = () => {\n setPolicyJSON(\"\");\n setNewServiceAccount(null);\n setAccessKey(\"\");\n setSecretKey(\"\");\n };\n\n const closeCredentialsModal = () => {\n setNewServiceAccount(null);\n navigate(`${IAM_PAGES.ACCOUNT}`);\n };\n\n return (\n \n {newServiceAccount !== null && (\n {\n closeCredentialsModal();\n }}\n entity=\"Access Key\"\n />\n )}\n \n navigate(IAM_PAGES.ACCOUNT)}\n />\n }\n actions={}\n />\n \n }\n icon={}\n title={\"Create Access Key\"}\n >\n ) => {\n e.preventDefault();\n addServiceAccount(e);\n }}\n >\n {\n setAccessKey(e.target.value);\n }}\n startIcon={}\n />\n {\n setSecretKey(e.target.value);\n }}\n startIcon={}\n />\n ) => {\n setIsRestrictedByPolicy(event.target.checked);\n }}\n label={\"Restrict beyond user policy\"}\n description={\n \"You can specify an optional JSON-formatted IAM policy to further restrict Access Key access to a subset of the actions and resources explicitly allowed for the parent user. Additional access beyond that of the parent user cannot be implemented through these policies.\"\n }\n />\n {isRestrictedByPolicy && (\n \n \n \n Current User Policy - edit the JSON to remove permissions\n for this Access Key\n \n \n \n {\n setPolicyJSON(value);\n }}\n editorHeight={\"350px\"}\n />\n \n \n )}\n \n \n\n \n \n \n \n \n \n \n );\n};\n\nexport default AddServiceAccount;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Button, CopyIcon, InputLabel, ReadBox, Box } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface ICredentialsItem {\n label?: string;\n value?: string;\n}\n\nconst CredentialItem = ({ label = \"\", value = \"\" }: ICredentialsItem) => {\n const dispatch = useAppDispatch();\n\n return (\n \n {label}\n \n {\n dispatch(setModalSnackMessage(`${label} copied to clipboard`));\n }}\n style={{\n marginRight: \"5px\",\n width: \"28px\",\n height: \"28px\",\n padding: \"0px\",\n }}\n icon={}\n />\n \n }\n >\n {value}\n \n \n );\n};\n\nexport default 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, { Fragment } from \"react\";\nimport get from \"lodash/get\";\nimport styled from \"styled-components\";\nimport {\n Box,\n Button,\n DownloadIcon,\n ServiceAccountCredentialsIcon,\n WarnIcon,\n Grid,\n} from \"mds\";\nimport { NewServiceAccount } from \"./types\";\nimport ModalWrapper from \"../ModalWrapper/ModalWrapper\";\nimport CredentialItem from \"./CredentialItem\";\nimport TooltipWrapper from \"../TooltipWrapper/TooltipWrapper\";\nimport { modalStyleUtils } from \"../FormComponents/common/styleLibrary\";\n\nconst WarningBlock = styled.div(({ theme }) => ({\n color: \"red\", // TODO: Change this to themed color variant in mds\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\ninterface ICredentialsPromptProps {\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 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={`New ${entity} Created`}\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 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, { Fragment } from \"react\";\nimport { Button, CodeEditor, CopyIcon } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n onChange: (value: string) => any;\n editorHeight?: string | number;\n}\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n onChange,\n editorHeight = 250,\n}: ICodeWrapper) => {\n return (\n onChange(value)}\n mode={mode}\n tooltip={tooltip}\n editorHeight={editorHeight}\n label={label}\n helpTools={\n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n }\n />\n );\n};\n\nexport default CodeMirrorWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\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 deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n"],"names":["FeatureItem","_ref","icon","description","_jsxs","Box","sx","display","marginRight","height","width","marginBottom","children","_jsx","style","fontSize","fontStyle","color","flex","border","borderRadius","flexFlow","padding","marginTop","xs","fontWeight","alignItems","paddingBottom","HelpIconFilled","ServiceAccountIcon","paddingTop","PasswordKeyIcon","IAMPoliciesIcon","dispatch","useAppDispatch","navigate","useNavigate","_useState","useState","_useState2","_slicedToArray","addSending","setAddSending","_useState3","getRandomString","_useState4","accessKey","setAccessKey","_useState5","_useState6","secretKey","setSecretKey","_useState7","_useState8","isRestrictedByPolicy","setIsRestrictedByPolicy","_useState9","_useState10","newServiceAccount","setNewServiceAccount","_useState11","_useState12","policyJSON","setPolicyJSON","useEffect","setHelpName","api","serviceAccountCredentials","createServiceAccountCreds","policy","type","ContentType","Json","then","res","data","url","catch","_asyncToGenerator","_regeneratorRuntime","mark","_callee","err","wrap","_context","prev","next","json","sent","setErrorSnackMessage","errorToHandler","stop","_x","apply","arguments","user","getUserPolicy","JSON","stringify","parse","Fragment","CredentialsPrompt","open","closeModal","concat","IAM_PAGES","ACCOUNT","entity","Grid","item","PageHeaderWrapper","label","BackLink","onClick","actions","HelpMenu","PageLayout","FormLayout","helpBox","AddServiceAccountHelpBox","ServiceAccountCredentialsIcon","title","noValidate","autoComplete","onSubmit","e","preventDefault","addServiceAccount","InputBox","value","id","name","placeholder","onChange","target","startIcon","Switch","checked","event","PanelTitle","_objectSpread","modalStyleUtils","formScrollable","CodeMirrorWrapper","editorHeight","modalButtonBar","Button","variant","_ref$label","_ref$value","InputLabel","ReadBox","actionButton","CopyToClipboard","text","setModalSnackMessage","CopyIcon","WarningBlock","styled","div","theme","margin","download","filename","element","document","createElement","setAttribute","body","appendChild","click","removeChild","_ref2","consoleCreds","get","idp","ModalWrapper","modalOpen","onClose","titleIcon","container","overflowY","maxHeight","Array","isArray","map","credentialsPair","index","CredentialItem","undefined","_Fragment","WarnIcon","TooltipWrapper","tooltip","consoleExtras","itemMap","path","DownloadIcon","length","allCredentials","_ref$tooltip","_ref$mode","mode","_ref$editorHeight","CodeEditor","helpTools","withStyles","createStyles","root","classes","className","deselectCurrent","require","clipboardToIE11Formatting","module","exports","options","debug","message","reselectPrevious","range","selection","success","createRange","getSelection","textContent","ariaHidden","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","format","clipboardData","console","warn","window","clearData","setData","onCopy","selectNodeContents","addRange","execCommand","Error","error","copyKey","test","navigator","userAgent","replace","prompt","removeRange","removeAllRanges","_typeof","obj","Symbol","iterator","constructor","prototype","Object","defineProperty","_react","_interopRequireDefault","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","i","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","call","_defineProperties","props","descriptor","configurable","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","result","Super","_getPrototypeOf","NewTarget","this","self","TypeError","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","getPrototypeOf","_React$PureComponent","subClass","superClass","create","_inherits","Constructor","protoProps","staticProps","_super","_this","instance","_classCallCheck","_len","args","_key","_this$props","elem","Children","only","_this$props2","cloneElement","PureComponent","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/5935.e874456b.chunk.js b/portal-ui/build/static/js/5935.e874456b.chunk.js new file mode 100644 index 0000000000..e2f5e248c0 --- /dev/null +++ b/portal-ui/build/static/js/5935.e874456b.chunk.js @@ -0,0 +1,2 @@ +(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[5935],{65935:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return K}});var r=n(1413),o=n(29439),i=n(72791),c=n(57689),s=n(29945),a=n(23814),l=n(56087),u=n(87995),d=n(31776),p=n(82342),f=n(66315),y=n(92217),h=n(64554),x=n(80184),m=function(e){var t=e.icon,n=e.description;return(0,x.jsxs)(h.Z,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[t," ",(0,x.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:n})]})},g=function(){return(0,x.jsxs)(h.Z,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px",marginTop:{xs:"0px"}},children:[(0,x.jsxs)(h.Z,{sx:{fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center",marginBottom:"16px",paddingBottom:"20px","& .min-icon":{height:"21px",width:"21px",marginRight:"15px"}},children:[(0,x.jsx)(s.M9A,{}),(0,x.jsx)("div",{children:"Learn more about Access Keys"})]}),(0,x.jsxs)(h.Z,{sx:{fontSize:"14px",marginBottom:"15px"},children:[(0,x.jsxs)(h.Z,{sx:{paddingBottom:"20px"},children:[(0,x.jsx)(m,{icon:(0,x.jsx)(s.nO6,{}),description:"Create Access Keys"}),(0,x.jsx)(h.Z,{sx:{paddingTop:"20px"},children:"Access Keys inherit the policies explicitly attached to the parent user, and the policies attached to each group in which the parent user has membership."})]}),(0,x.jsxs)(h.Z,{sx:{paddingBottom:"20px"},children:[(0,x.jsx)(m,{icon:(0,x.jsx)(s.tvm,{}),description:"Assign Custom Credentials"}),(0,x.jsx)(h.Z,{sx:{paddingTop:"10px"},children:"Randomized access credentials are recommended, and provided by default. You may use your own custom Access Key and Secret Key by replacing the default values. After creation of any Access Key, you will be given the opportunity to view and download the account credentials."}),(0,x.jsx)(h.Z,{sx:{paddingTop:"10px"},children:"Access Keys support programmatic access by applications. You cannot use a Access Key to log into the MinIO Console."})]}),(0,x.jsxs)(h.Z,{sx:{paddingBottom:"20px"},children:[(0,x.jsx)(m,{icon:(0,x.jsx)(s.v42,{}),description:"Assign Access Policies"}),(0,x.jsx)(h.Z,{sx:{paddingTop:"10px"},children:"You can specify an optional JSON-formatted IAM policy to further restrict Access Key access to a subset of the actions and resources explicitly allowed for the parent user. Additional access beyond that of the parent user cannot be implemented through these policies."}),(0,x.jsx)(h.Z,{sx:{paddingTop:"10px"},children:"You cannot modify the optional Access Key IAM policy after saving."})]})]}),(0,x.jsx)(h.Z,{sx:{display:"flex",flexFlow:"column"}})]})},b=n(37798),j=n(60680),v=n(47974),w=n(99670),C=n(44690),A=n(45248),K=function(){var e=(0,C.TL)(),t=(0,c.s0)(),n=(0,i.useState)(!1),h=(0,o.Z)(n,2),m=h[0],K=h[1],O=(0,i.useState)((0,A.zO)(20)),S=(0,o.Z)(O,2),Z=S[0],P=S[1],k=(0,i.useState)((0,A.zO)(40)),D=(0,o.Z)(k,2),T=D[0],E=D[1],R=(0,i.useState)(!1),I=(0,o.Z)(R,2),z=I[0],_=I[1],N=(0,i.useState)(null),B=(0,o.Z)(N,2),M=B[0],J=B[1],U=(0,i.useState)(""),F=(0,o.Z)(U,2),Y=F[0],H=F[1];(0,i.useEffect)((function(){e((0,u.Sc)("add_service_account"))}),[]),(0,i.useEffect)((function(){m&&d.h.serviceAccountCredentials.createServiceAccountCreds({policy:Y,accessKey:Z,secretKey:T},{type:f.zc.Json}).then((function(e){K(!1),J({accessKey:e.data.accessKey||"",secretKey:e.data.secretKey||"",url:e.url||""})})).catch((function(t){K(!1),e((0,u.Ih)((0,p.g)(t.error)))}))}),[m,K,e,Y,Z,T]),(0,i.useEffect)((function(){z&&d.h.user.getUserPolicy().then((function(e){H(JSON.stringify(JSON.parse(e.data),null,4))}))}),[z]);return(0,x.jsxs)(i.Fragment,{children:[null!==M&&(0,x.jsx)(b.Z,{newServiceAccount:M,open:!0,closeModal:function(){J(null),t("".concat(l.gA.ACCOUNT))},entity:"Access Key"}),(0,x.jsxs)(s.rjZ,{item:!0,xs:12,children:[(0,x.jsx)(v.Z,{label:(0,x.jsx)(s.hbI,{label:"Access Keys",onClick:function(){return t(l.gA.ACCOUNT)}}),actions:(0,x.jsx)(w.Z,{})}),(0,x.jsx)(s.Xgh,{children:(0,x.jsx)(s.ltY,{helpBox:(0,x.jsx)(g,{}),icon:(0,x.jsx)(s.tVY,{}),title:"Create Access Key",children:(0,x.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),function(e){e.preventDefault(),K(!0)}(e)},children:[(0,x.jsx)(s.Wzg,{value:Z,label:"Access Key",id:"accessKey",name:"accessKey",placeholder:"Enter Access Key",onChange:function(e){P(e.target.value)},startIcon:(0,x.jsx)(s.nO6,{})}),(0,x.jsx)(s.Wzg,{value:T,label:"Secret Key",id:"secretKey",name:"secretKey",type:"password",placeholder:"Enter Secret Key",onChange:function(e){E(e.target.value)},startIcon:(0,x.jsx)(s.tvm,{})}),(0,x.jsx)(s.rsf,{value:"serviceAccountPolicy",id:"serviceAccountPolicy",name:"serviceAccountPolicy",checked:z,onChange:function(e){_(e.target.checked)},label:"Restrict beyond user policy",description:"You can specify an optional JSON-formatted IAM policy to further restrict Access Key access to a subset of the actions and resources explicitly allowed for the parent user. Additional access beyond that of the parent user cannot be implemented through these policies."}),z&&(0,x.jsxs)(s.rjZ,{item:!0,xs:12,children:[(0,x.jsx)(s.xuv,{children:(0,x.jsx)(j.Z,{children:"Current User Policy - edit the JSON to remove permissions for this Access Key"})}),(0,x.jsx)(s.rjZ,{item:!0,xs:12,sx:(0,r.Z)({},a.ID.formScrollable),children:(0,x.jsx)(y.Z,{value:Y,onChange:function(e){H(e)},editorHeight:"350px"})})]}),(0,x.jsxs)(s.rjZ,{item:!0,xs:12,sx:(0,r.Z)({},a.ID.modalButtonBar),children:[(0,x.jsx)(s.zxk,{id:"clear",type:"button",variant:"regular",onClick:function(){H(""),J(null),P(""),E("")},label:"Clear"}),(0,x.jsx)(s.zxk,{id:"create-sa",type:"submit",variant:"callAction",color:"primary",label:"Create"})]})]})})})]})]})}},37798:function(e,t,n){"use strict";n.d(t,{Z:function(){return j}});var r=n(1413),o=n(72791),i=n(26181),c=n.n(i),s=n(17691),a=n(29945),l=n(56028),u=n(78029),d=n.n(u),p=n(87995),f=n(44690),y=n(80184),h=function(e){var t=e.label,n=void 0===t?"":t,r=e.value,o=void 0===r?"":r,i=(0,f.TL)();return(0,y.jsxs)(a.xuv,{sx:{marginTop:12},children:[(0,y.jsx)(a.AZs,{children:n}),(0,y.jsx)(a.bSr,{actionButton:(0,y.jsx)(d(),{text:o,children:(0,y.jsx)(a.zxk,{id:"copy-path",variant:"regular",onClick:function(){i((0,p.MK)("".concat(n," copied to clipboard")))},style:{marginRight:"5px",width:"28px",height:"28px",padding:"0px"},icon:(0,y.jsx)(a.TIy,{})})}),children:o})]})},x=n(27454),m=n(23814),g=s.ZP.div((function(e){e.theme;return{color:"red",fontSize:".85rem",margin:".5rem 0 .5rem 0",display:"flex",alignItems:"center","& svg ":{marginRight:".3rem",height:16,width:16}}})),b=function(e,t){var n=document.createElement("a");n.setAttribute("href","data:text/plain;charset=utf-8,"+t),n.setAttribute("download",e),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n)},j=function(e){var t=e.newServiceAccount,n=e.open,i=e.closeModal,s=e.entity;if(!t)return null;var u=c()(t,"console",null),d=c()(t,"idp",!1);return(0,y.jsx)(l.Z,{modalOpen:n,onClose:function(){i()},title:"New ".concat(s," Created"),titleIcon:(0,y.jsx)(a.tVY,{}),children:(0,y.jsxs)(a.rjZ,{container:!0,children:[(0,y.jsxs)(a.rjZ,{item:!0,xs:12,children:["A new ",s," has been created with the following details:",!d&&u&&(0,y.jsx)(o.Fragment,{children:(0,y.jsxs)(a.rjZ,{item:!0,xs:12,sx:{overflowY:"auto",maxHeight:350},children:[(0,y.jsx)(a.xuv,{sx:{padding:".8rem 0 0 0",fontWeight:600,fontSize:".9rem"},children:"Console Credentials"}),Array.isArray(u)&&u.map((function(e,t){return(0,y.jsxs)(o.Fragment,{children:[(0,y.jsx)(h,{label:"Access Key",value:e.accessKey}),(0,y.jsx)(h,{label:"Secret Key",value:e.secretKey})]})})),!Array.isArray(u)&&(0,y.jsxs)(o.Fragment,{children:[(0,y.jsx)(h,{label:"Access Key",value:u.accessKey}),(0,y.jsx)(h,{label:"Secret Key",value:u.secretKey})]})]})}),(null===u||void 0===u)&&(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(h,{label:"Access Key",value:t.accessKey||""}),(0,y.jsx)(h,{label:"Secret Key",value:t.secretKey||""})]}),d?(0,y.jsx)(g,{children:"Please Login via the configured external identity provider."}):(0,y.jsxs)(g,{children:[(0,y.jsx)(a.e6P,{}),(0,y.jsx)("span",{children:"Write these down, as this is the only time the secret will be displayed."})]})]}),(0,y.jsx)(a.rjZ,{item:!0,xs:12,sx:(0,r.Z)({},m.ID.modalButtonBar),children:!d&&(0,y.jsxs)(o.Fragment,{children:[(0,y.jsx)(x.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)(a.zxk,{id:"download-button",label:"Download for import",onClick:function(){var e={};u?e=Array.isArray(u)?u.map((function(e){return{url:e.url,accessKey:e.accessKey,secretKey:e.secretKey,api:"s3v4",path:"auto"}}))[0]:{url:u.url,accessKey:u.accessKey,secretKey:u.secretKey,api:"s3v4",path:"auto"}:e={url:t.url,accessKey:t.accessKey,secretKey:t.secretKey,api:"s3v4",path:"auto"};b("credentials.json",JSON.stringify((0,r.Z)({},e)))},icon:(0,y.jsx)(a._8t,{}),variant:"callAction"})}),Array.isArray(u)&&u.length>1&&(0,y.jsx)(x.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)(a.zxk,{id:"download-all-button",label:"Download all access credentials",onClick:function(){var e={};u&&Array.isArray(u)&&u.length>1&&(e=u.map((function(e){return{accessKey:e.accessKey,secretKey:e.secretKey}})));b("all_credentials.json",JSON.stringify((0,r.Z)({},e)))},icon:(0,y.jsx)(a._8t,{}),variant:"callAction",color:"primary"})})]})})]})})}},92217:function(e,t,n){"use strict";var r=n(72791),o=n(29945),i=n(78029),c=n.n(i),s=n(27454),a=n(80184);t.Z=function(e){var t=e.value,n=e.label,i=void 0===n?"":n,l=e.tooltip,u=void 0===l?"":l,d=e.mode,p=void 0===d?"json":d,f=e.onChange,y=e.editorHeight,h=void 0===y?250:y;return(0,a.jsx)(o.pq4,{value:t,onChange:function(e){return f(e)},mode:p,tooltip:u,editorHeight:h,label:i,helpTools:(0,a.jsx)(r.Fragment,{children:(0,a.jsx)(s.Z,{tooltip:"Copy to Clipboard",children:(0,a.jsx)(c(),{text:t,children:(0,a.jsx)(o.zxk,{type:"button",id:"copy-code-mirror",icon:(0,a.jsx)(o.TIy,{}),color:"primary",variant:"regular"})})})})})}},60680:function(e,t,n){"use strict";n(72791);var r=n(11135),o=n(25787),i=n(80184);t.Z=(0,o.Z)((function(e){return(0,r.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})}))},76998:function(e,t,n){"use strict";var r=n(42458),o={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,i,c,s,a,l,u=!1;t||(t={}),n=t.debug||!1;try{if(c=r(),s=document.createRange(),a=document.getSelection(),(l=document.createElement("span")).textContent=e,l.ariaHidden="true",l.style.all="unset",l.style.position="fixed",l.style.top=0,l.style.clip="rect(0, 0, 0, 0)",l.style.whiteSpace="pre",l.style.webkitUserSelect="text",l.style.MozUserSelect="text",l.style.msUserSelect="text",l.style.userSelect="text",l.addEventListener("copy",(function(r){if(r.stopPropagation(),t.format)if(r.preventDefault(),"undefined"===typeof r.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var i=o[t.format]||o.default;window.clipboardData.setData(i,e)}else r.clipboardData.clearData(),r.clipboardData.setData(t.format,e);t.onCopy&&(r.preventDefault(),t.onCopy(r.clipboardData))})),document.body.appendChild(l),s.selectNodeContents(l),a.addRange(s),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");u=!0}catch(d){n&&console.error("unable to copy using execCommand: ",d),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),u=!0}catch(d){n&&console.error("unable to copy using clipboardData: ",d),n&&console.error("falling back to prompt"),i=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(i,e)}}finally{a&&("function"==typeof a.removeRange?a.removeRange(s):a.removeAllRanges()),l&&document.body.removeChild(l),c()}return u}},568:function(e,t,n){"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var o=s(n(72791)),i=s(n(76998)),c=["text","onCopy","options","children"];function s(e){return e&&e.__esModule?e:{default:e}}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function d(e,t){for(var n=0;n.\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport {\n HelpIconFilled,\n IAMPoliciesIcon,\n PasswordKeyIcon,\n ServiceAccountIcon,\n} from \"mds\";\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 AddServiceAccountHelpBox = () => {\n return (\n \n \n \n
    Learn more about Access Keys
    \n \n \n \n }\n description={`Create Access Keys`}\n />\n \n Access Keys inherit the policies explicitly attached to the parent\n user, and the policies attached to each group in which the parent\n user has membership.\n \n \n \n }\n description={`Assign Custom Credentials`}\n />\n \n Randomized access credentials are recommended, and provided by\n default. You may use your own custom Access Key and Secret Key by\n replacing the default values. After creation of any Access Key, you\n will be given the opportunity to view and download the account\n credentials.\n \n \n Access Keys support programmatic access by applications. You cannot\n use a Access Key to log into the MinIO Console.\n \n \n \n }\n description={`Assign Access Policies`}\n />\n \n You can specify an optional JSON-formatted IAM policy to further\n restrict Access Key access to a subset of the actions and resources\n explicitly allowed for the parent user. Additional access beyond\n that of the parent user cannot be implemented through these\n policies.\n \n \n You cannot modify the optional Access Key IAM policy after saving.\n \n \n \n \n \n );\n};\n\nexport default AddServiceAccountHelpBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n BackLink,\n Button,\n PageLayout,\n PasswordKeyIcon,\n ServiceAccountCredentialsIcon,\n Grid,\n Box,\n FormLayout,\n InputBox,\n Switch,\n ServiceAccountIcon,\n} from \"mds\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { NewServiceAccount } from \"../Common/CredentialsPrompt/types\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { ContentType } from \"api/consoleApi\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport AddServiceAccountHelpBox from \"./AddServiceAccountHelpBox\";\nimport CredentialsPrompt from \"../Common/CredentialsPrompt/CredentialsPrompt\";\nimport PanelTitle from \"../Common/PanelTitle/PanelTitle\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport { useAppDispatch } from \"store\";\nimport { getRandomString } from \"common/utils\";\n\nconst AddServiceAccount = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [addSending, setAddSending] = useState(false);\n const [accessKey, setAccessKey] = useState(getRandomString(20));\n const [secretKey, setSecretKey] = useState(getRandomString(40));\n const [isRestrictedByPolicy, setIsRestrictedByPolicy] =\n useState(false);\n const [newServiceAccount, setNewServiceAccount] =\n useState(null);\n const [policyJSON, setPolicyJSON] = useState(\"\");\n\n useEffect(() => {\n dispatch(setHelpName(\"add_service_account\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (addSending) {\n api.serviceAccountCredentials\n .createServiceAccountCreds(\n {\n policy: policyJSON,\n accessKey: accessKey,\n secretKey: secretKey,\n },\n { type: ContentType.Json },\n )\n .then((res) => {\n setAddSending(false);\n setNewServiceAccount({\n accessKey: res.data.accessKey || \"\",\n secretKey: res.data.secretKey || \"\",\n url: res.url || \"\",\n });\n })\n\n .catch((res) => {\n setAddSending(false);\n dispatch(setErrorSnackMessage(errorToHandler(res.error)));\n });\n }\n }, [addSending, setAddSending, dispatch, policyJSON, accessKey, secretKey]);\n\n useEffect(() => {\n if (isRestrictedByPolicy) {\n api.user.getUserPolicy().then((res) => {\n setPolicyJSON(JSON.stringify(JSON.parse(res.data), null, 4));\n });\n }\n }, [isRestrictedByPolicy]);\n\n const addServiceAccount = (e: React.FormEvent) => {\n e.preventDefault();\n setAddSending(true);\n };\n\n const resetForm = () => {\n setPolicyJSON(\"\");\n setNewServiceAccount(null);\n setAccessKey(\"\");\n setSecretKey(\"\");\n };\n\n const closeCredentialsModal = () => {\n setNewServiceAccount(null);\n navigate(`${IAM_PAGES.ACCOUNT}`);\n };\n\n return (\n \n {newServiceAccount !== null && (\n {\n closeCredentialsModal();\n }}\n entity=\"Access Key\"\n />\n )}\n \n navigate(IAM_PAGES.ACCOUNT)}\n />\n }\n actions={}\n />\n \n }\n icon={}\n title={\"Create Access Key\"}\n >\n ) => {\n e.preventDefault();\n addServiceAccount(e);\n }}\n >\n {\n setAccessKey(e.target.value);\n }}\n startIcon={}\n />\n {\n setSecretKey(e.target.value);\n }}\n startIcon={}\n />\n ) => {\n setIsRestrictedByPolicy(event.target.checked);\n }}\n label={\"Restrict beyond user policy\"}\n description={\n \"You can specify an optional JSON-formatted IAM policy to further restrict Access Key access to a subset of the actions and resources explicitly allowed for the parent user. Additional access beyond that of the parent user cannot be implemented through these policies.\"\n }\n />\n {isRestrictedByPolicy && (\n \n \n \n Current User Policy - edit the JSON to remove permissions\n for this Access Key\n \n \n \n {\n setPolicyJSON(value);\n }}\n editorHeight={\"350px\"}\n />\n \n \n )}\n \n \n\n \n \n \n \n \n \n \n );\n};\n\nexport default AddServiceAccount;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Button, CopyIcon, InputLabel, ReadBox, Box } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport { setModalSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface ICredentialsItem {\n label?: string;\n value?: string;\n}\n\nconst CredentialItem = ({ label = \"\", value = \"\" }: ICredentialsItem) => {\n const dispatch = useAppDispatch();\n\n return (\n \n {label}\n \n {\n dispatch(setModalSnackMessage(`${label} copied to clipboard`));\n }}\n style={{\n marginRight: \"5px\",\n width: \"28px\",\n height: \"28px\",\n padding: \"0px\",\n }}\n icon={}\n />\n \n }\n >\n {value}\n \n \n );\n};\n\nexport default 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, { Fragment } from \"react\";\nimport get from \"lodash/get\";\nimport styled from \"styled-components\";\nimport {\n Box,\n Button,\n DownloadIcon,\n ServiceAccountCredentialsIcon,\n WarnIcon,\n Grid,\n} from \"mds\";\nimport { NewServiceAccount } from \"./types\";\nimport ModalWrapper from \"../ModalWrapper/ModalWrapper\";\nimport CredentialItem from \"./CredentialItem\";\nimport TooltipWrapper from \"../TooltipWrapper/TooltipWrapper\";\nimport { modalStyleUtils } from \"../FormComponents/common/styleLibrary\";\n\nconst WarningBlock = styled.div(({ theme }) => ({\n color: \"red\", // TODO: Change this to themed color variant in mds\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\ninterface ICredentialsPromptProps {\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 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={`New ${entity} Created`}\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 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, { Fragment } from \"react\";\nimport { Button, CodeEditor, CopyIcon } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n onChange: (value: string) => any;\n editorHeight?: string | number;\n}\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n onChange,\n editorHeight = 250,\n}: ICodeWrapper) => {\n return (\n onChange(value)}\n mode={mode}\n tooltip={tooltip}\n editorHeight={editorHeight}\n label={label}\n helpTools={\n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n }\n />\n );\n};\n\nexport default CodeMirrorWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\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 deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n"],"names":["FeatureItem","_ref","icon","description","_jsxs","Box","sx","display","marginRight","height","width","marginBottom","children","_jsx","style","fontSize","fontStyle","color","flex","border","borderRadius","flexFlow","padding","marginTop","xs","fontWeight","alignItems","paddingBottom","HelpIconFilled","ServiceAccountIcon","paddingTop","PasswordKeyIcon","IAMPoliciesIcon","dispatch","useAppDispatch","navigate","useNavigate","_useState","useState","_useState2","_slicedToArray","addSending","setAddSending","_useState3","getRandomString","_useState4","accessKey","setAccessKey","_useState5","_useState6","secretKey","setSecretKey","_useState7","_useState8","isRestrictedByPolicy","setIsRestrictedByPolicy","_useState9","_useState10","newServiceAccount","setNewServiceAccount","_useState11","_useState12","policyJSON","setPolicyJSON","useEffect","setHelpName","api","serviceAccountCredentials","createServiceAccountCreds","policy","type","ContentType","Json","then","res","data","url","catch","setErrorSnackMessage","errorToHandler","error","user","getUserPolicy","JSON","stringify","parse","Fragment","CredentialsPrompt","open","closeModal","concat","IAM_PAGES","ACCOUNT","entity","Grid","item","PageHeaderWrapper","label","BackLink","onClick","actions","HelpMenu","PageLayout","FormLayout","helpBox","AddServiceAccountHelpBox","ServiceAccountCredentialsIcon","title","noValidate","autoComplete","onSubmit","e","preventDefault","addServiceAccount","InputBox","value","id","name","placeholder","onChange","target","startIcon","Switch","checked","event","PanelTitle","_objectSpread","modalStyleUtils","formScrollable","CodeMirrorWrapper","editorHeight","modalButtonBar","Button","variant","_ref$label","_ref$value","InputLabel","ReadBox","actionButton","CopyToClipboard","text","setModalSnackMessage","CopyIcon","WarningBlock","styled","div","theme","margin","download","filename","element","document","createElement","setAttribute","body","appendChild","click","removeChild","_ref2","consoleCreds","get","idp","ModalWrapper","modalOpen","onClose","titleIcon","container","overflowY","maxHeight","Array","isArray","map","credentialsPair","index","CredentialItem","undefined","_Fragment","WarnIcon","TooltipWrapper","tooltip","consoleExtras","itemMap","path","DownloadIcon","length","allCredentials","_ref$tooltip","_ref$mode","mode","_ref$editorHeight","CodeEditor","helpTools","withStyles","createStyles","root","classes","className","deselectCurrent","require","clipboardToIE11Formatting","module","exports","options","debug","message","reselectPrevious","range","selection","mark","success","createRange","getSelection","textContent","ariaHidden","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","format","clipboardData","console","warn","window","clearData","setData","onCopy","selectNodeContents","addRange","execCommand","Error","err","copyKey","test","navigator","userAgent","replace","prompt","removeRange","removeAllRanges","_typeof","obj","Symbol","iterator","constructor","prototype","Object","defineProperty","_react","_interopRequireDefault","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","i","arguments","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","call","_defineProperties","props","descriptor","configurable","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","result","Super","_getPrototypeOf","NewTarget","this","self","TypeError","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","getPrototypeOf","_React$PureComponent","subClass","superClass","create","_inherits","Constructor","protoProps","staticProps","_super","_this","instance","_classCallCheck","_len","args","_key","_this$props","elem","Children","only","_this$props2","cloneElement","PureComponent","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/5962.2feae2cf.chunk.js.map b/portal-ui/build/static/js/5962.2feae2cf.chunk.js.map deleted file mode 100644 index f083a16815..0000000000 --- a/portal-ui/build/static/js/5962.2feae2cf.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/5962.2feae2cf.chunk.js","mappings":"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","sources":["screens/Console/Common/DistributedOnly/DistributedOnly.tsx","screens/Console/Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper.tsx","screens/Console/Common/FormComponents/InputUnitMenu/InputUnitMenu.tsx","screens/Console/Speedtest/SpeedTestUnit.tsx","screens/Console/Speedtest/STResults.tsx","screens/Console/Speedtest/utils.ts","screens/Console/Speedtest/Speedtest.tsx","screens/Console/Support/RegisterCluster.tsx","utils/wsUtils.ts","../node_modules/copy-to-clipboard/index.js","../node_modules/es5-ext/global.js","../node_modules/react-copy-to-clipboard/lib/Component.js","../node_modules/react-copy-to-clipboard/lib/index.js","../node_modules/toggle-selection/index.js","../node_modules/websocket/lib/browser.js","../node_modules/websocket/lib/version.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 { HelpBox, Box, Grid, breakPoints } from \"mds\";\n\ninterface IDistributedOnly {\n iconComponent: any;\n entity: string;\n}\n\nconst DistributedOnly = ({ iconComponent, entity }: IDistributedOnly) => {\n return (\n \n \n \n \n This feature is not available for a single-disk setup. \n \n \n Please deploy a server in{\" \"}\n \n Distributed Mode\n {\" \"}\n to use this feature.\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 .\n\nimport React, { Fragment } from \"react\";\nimport { Button, CodeEditor, CopyIcon } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n onChange: (value: string) => any;\n editorHeight?: string | number;\n}\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n onChange,\n editorHeight = 250,\n}: ICodeWrapper) => {\n return (\n onChange(value)}\n mode={mode}\n tooltip={tooltip}\n editorHeight={editorHeight}\n label={label}\n helpTools={\n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n }\n />\n );\n};\n\nexport default CodeMirrorWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { SelectorType } from \"mds\";\nimport { Menu, MenuItem } from \"@mui/material\";\n\ninterface IInputUnitBox {\n classes: any;\n id: string;\n unitSelected: string;\n unitsList: SelectorType[];\n disabled?: boolean;\n onUnitChange?: (newValue: string) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonTrigger: {\n border: \"#F0F2F2 1px solid\",\n borderRadius: 3,\n color: \"#838383\",\n backgroundColor: \"#fff\",\n fontSize: 12,\n },\n });\n\nconst InputUnitMenu = ({\n classes,\n id,\n unitSelected,\n unitsList,\n disabled = false,\n onUnitChange,\n}: IInputUnitBox) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const open = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleClose = (newUnit: string) => {\n setAnchorEl(null);\n if (newUnit !== \"\" && onUnitChange) {\n onUnitChange(newUnit);\n }\n };\n\n return (\n \n \n {unitSelected}\n \n {\n handleClose(\"\");\n }}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"center\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"center\",\n }}\n >\n {unitsList.map((unit) => (\n handleClose(unit.value)}\n key={`itemUnit-${unit.value}-${unit.label}`}\n >\n {unit.label}\n \n ))}\n \n \n );\n};\n\nexport default withStyles(styles)(InputUnitMenu);\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 styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { calculateBytes } from \"../../../common/utils\";\n\nconst SpeedTestUnitBase = styled.table(({ theme }) => ({\n \"& .objectGeneralTitle\": {\n lineHeight: 1,\n fontSize: 50,\n color: get(theme, \"mutedText\", \"#87888d\"),\n },\n \"& .generalUnit\": {\n color: get(theme, \"fontColor\", \"#000\"),\n fontSize: 12,\n fontWeight: \"bold\",\n },\n \"& .testUnitRes\": {\n fontSize: 60,\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n fontWeight: \"bold\",\n textAlign: \"right\",\n },\n \"& .metricValContainer\": {\n lineHeight: 1,\n verticalAlign: \"bottom\",\n },\n \"& .objectsUnitRes\": {\n fontSize: 22,\n marginTop: 6,\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontWeight: \"bold\",\n textAlign: \"right\",\n },\n \"& .objectsUnit\": {\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontSize: 16,\n fontWeight: \"bold\",\n },\n \"& .iconTd\": {\n verticalAlign: \"bottom\",\n },\n}));\n\nconst SpeedTestUnit = ({\n title,\n icon,\n throughput,\n objects,\n}: {\n title: any;\n icon: any;\n throughput: string;\n objects: number;\n}) => {\n const avg = calculateBytes(throughput);\n\n let total = \"0\";\n let unit = \"\";\n\n if (avg.total !== 0) {\n total = avg.total.toString();\n unit = `${avg.unit}/s`;\n }\n\n return (\n \n \n {title}\n {icon}\n \n \n {total}\n {unit}\n \n \n {objects}\n \n {objects !== 0 && \"Objs/S\"}\n \n \n \n );\n};\nexport default SpeedTestUnit;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport get from \"lodash/get\";\nimport {\n Button,\n ComputerLineIcon,\n DownloadIcon,\n DownloadStatIcon,\n JSONIcon,\n StorageIcon,\n UploadStatIcon,\n VersionIcon,\n Grid,\n Box,\n} from \"mds\";\nimport { IndvServerMetric, SpeedTestResponse, STServer } from \"./types\";\nimport { calculateBytes, prettyNumber } from \"../../../common/utils\";\nimport { Area, AreaChart, CartesianGrid, ResponsiveContainer } from \"recharts\";\nimport { cleanMetrics } from \"./utils\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport SpeedTestUnit from \"./SpeedTestUnit\";\nimport styled from \"styled-components\";\n\nconst STResultsContainer = styled.div(({ theme }) => ({\n \"& .actionButtons\": {\n textAlign: \"right\",\n },\n \"& .descriptorLabel\": {\n fontWeight: \"bold\",\n fontSize: 14,\n },\n \"& .resultsContainer\": {\n backgroundColor: get(theme, \"boxBackground\", \"#FBFAFA\"),\n borderTop: `${get(theme, \"borderColor\", \"#E2E2E2\")} 1px solid`,\n marginTop: 30,\n padding: 25,\n },\n \"& .resultsIcon\": {\n display: \"flex\",\n alignItems: \"center\",\n \"& svg\": {\n fill: get(theme, `screenTitle.iconColor`, \"#07193E\"),\n },\n },\n \"& .detailedItem\": {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n },\n \"& .detailedVersion\": {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n },\n \"& .serversTable\": {\n width: \"100%\",\n marginTop: 15,\n \"& thead > tr > th\": {\n textAlign: \"left\",\n padding: 15,\n fontSize: 14,\n fontWeight: \"bold\",\n },\n \"& tbody > tr\": {\n \"&:last-of-type\": {\n \"& > td\": {\n borderBottom: `${get(theme, \"borderColor\", \"#E2E2E2\")} 1px solid`,\n },\n },\n \"& > td\": {\n borderTop: `${get(theme, \"borderColor\", \"#E2E2E2\")} 1px solid`,\n padding: 15,\n fontSize: 14,\n \"&:first-of-type\": {\n borderLeft: `${get(theme, \"borderColor\", \"#E2E2E2\")} 1px solid`,\n },\n \"&:last-of-type\": {\n borderRight: `${get(theme, \"borderColor\", \"#E2E2E2\")} 1px solid`,\n },\n },\n },\n },\n \"& .serverIcon\": {\n width: 55,\n },\n \"& .serverValue\": {\n width: 140,\n },\n \"& .serverHost\": {\n maxWidth: 540,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n \"& .tableOverflow\": {\n overflowX: \"auto\",\n paddingBottom: 15,\n },\n \"& .objectGeneral\": {\n marginTop: 15,\n },\n \"& .download\": {\n \"& .min-icon\": {\n width: 35,\n height: 35,\n color: get(theme, \"signalColors.good\", \"#4CCB92\"),\n },\n },\n \"& .upload\": {\n \"& .min-icon\": {\n width: 35,\n height: 35,\n color: get(theme, \"signalColors.info\", \"#2781B0\"),\n },\n },\n \"& .versionIcon\": {\n color: get(theme, `screenTitle.iconColor`, \"#07193E\"),\n marginRight: 20,\n },\n}));\n\ninterface ISTResults {\n results: SpeedTestResponse[];\n start: boolean;\n}\n\nconst STResults = ({ results, start }: ISTResults) => {\n const [jsonView, setJsonView] = useState(false);\n\n const finalRes = results[results.length - 1] || [];\n\n const getServers: STServer[] = get(finalRes, \"GETStats.servers\", []) || [];\n const putServers: STServer[] = get(finalRes, \"PUTStats.servers\", []) || [];\n\n const getThroughput = get(finalRes, \"GETStats.throughputPerSec\", 0);\n const getObjects = get(finalRes, \"GETStats.objectsPerSec\", 0);\n\n const putThroughput = get(finalRes, \"PUTStats.throughputPerSec\", 0);\n const putObjects = get(finalRes, \"PUTStats.objectsPerSec\", 0);\n\n let statJoin: IndvServerMetric[] = [];\n\n getServers.forEach((item) => {\n const hostName = item.endpoint;\n const putMetric = putServers.find((item) => item.endpoint === hostName);\n\n let itemJoin: IndvServerMetric = {\n getUnit: \"-\",\n getValue: \"N/A\",\n host: item.endpoint,\n putUnit: \"-\",\n putValue: \"N/A\",\n };\n\n if (item.err && item.err !== \"\") {\n itemJoin.getError = item.err;\n itemJoin.getUnit = \"-\";\n itemJoin.getValue = \"N/A\";\n } else {\n const niceGet = calculateBytes(item.throughputPerSec.toString());\n\n itemJoin.getUnit = niceGet.unit;\n itemJoin.getValue = niceGet.total.toString();\n }\n\n if (putMetric) {\n if (putMetric.err && putMetric.err !== \"\") {\n itemJoin.putError = putMetric.err;\n itemJoin.putUnit = \"-\";\n itemJoin.putValue = \"N/A\";\n } else {\n const nicePut = calculateBytes(putMetric.throughputPerSec.toString());\n\n itemJoin.putUnit = nicePut.unit;\n itemJoin.putValue = nicePut.total.toString();\n }\n }\n\n statJoin.push(itemJoin);\n });\n\n const downloadResults = () => {\n const date = new Date();\n let element = document.createElement(\"a\");\n element.setAttribute(\n \"href\",\n \"data:text/plain;charset=utf-8,\" + JSON.stringify(finalRes),\n );\n element.setAttribute(\n \"download\",\n `speedtest_results-${date.toISOString()}.log`,\n );\n\n element.style.display = \"none\";\n document.body.appendChild(element);\n\n element.click();\n\n document.body.removeChild(element);\n };\n\n const toggleJSONView = () => {\n setJsonView(!jsonView);\n };\n\n const finalResJSON = finalRes ? JSON.stringify(finalRes, null, 4) : \"\";\n const clnMetrics = cleanMetrics(results);\n\n return (\n \n \n \n \n \n \n \n
    \n }\n title={\"GET\"}\n throughput={`${getThroughput}`}\n objects={getObjects}\n />\n \n \n \n \n
    \n }\n title={\"PUT\"}\n throughput={`${putThroughput}`}\n objects={putObjects}\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 {clnMetrics.length > 1 && (\n \n \n \n {start ? (\n Preliminar Results:\n ) : (\n \n {jsonView ? \"JSON Results:\" : \"Detailed Results:\"}\n \n )}\n \n \n {!start && (\n \n }\n />\n  \n }\n />\n \n )}\n \n \n \n \n {jsonView ? (\n \n {}} />\n \n ) : (\n \n \n \n \n \n Nodes: {finalRes.servers}\n \n \n Drives: {finalRes.disks}\n \n \n Concurrent: {finalRes.concurrent}\n \n \n \n \n {\" \"}\n MinIO VERSION {finalRes.version}\n \n \n \n \n \n Servers\n GET\n PUT\n \n \n \n {statJoin.map((stats, index) => (\n \n \n \n \n {stats.host}\n {stats.getError && stats.getError !== \"\" ? (\n {stats.getError}\n ) : (\n \n \n {prettyNumber(parseFloat(stats.getValue))}\n  \n {stats.getUnit}/s.\n \n \n )}\n {stats.putError && stats.putError !== \"\" ? (\n {stats.putError}\n ) : (\n \n \n {prettyNumber(parseFloat(stats.putValue))}\n  \n {stats.putUnit}/s.\n \n \n )}\n \n ))}\n \n \n \n \n )}\n \n \n
    \n )}\n \n );\n};\n\nexport default STResults;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { SpeedTestResponse } from \"./types\";\n\nexport const cleanMetrics = (results: SpeedTestResponse[]) => {\n const cleanRes = results.filter(\n (item) => item.version !== \"0\" && item.disks !== 0,\n );\n\n const states = cleanRes.map((itemRes) => {\n return {\n get: itemRes.GETStats?.throughputPerSec || 0,\n put: itemRes.PUTStats?.throughputPerSec || 0,\n };\n });\n\n return [{ get: 0, put: 0 }, ...states];\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { IMessageEvent, w3cwebsocket as W3CWebSocket } from \"websocket\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n Box,\n Button,\n Grid,\n HelpBox,\n InputBox,\n Loader,\n PageLayout,\n SpeedtestIcon,\n WarnIcon,\n} from \"mds\";\nimport { DateTime } from \"luxon\";\nimport STResults from \"./STResults\";\nimport ProgressBarWrapper from \"../Common/ProgressBarWrapper/ProgressBarWrapper\";\nimport InputUnitMenu from \"../Common/FormComponents/InputUnitMenu/InputUnitMenu\";\nimport DistributedOnly from \"../Common/DistributedOnly/DistributedOnly\";\nimport RegisterCluster from \"../Support/RegisterCluster\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport { SecureComponent } from \"../../../common/SecureComponent\";\nimport { selDistSet, setHelpName } from \"../../../systemSlice\";\nimport { registeredCluster } from \"../../../config\";\nimport { useAppDispatch } from \"../../../store\";\nimport { wsProtocol } from \"../../../utils/wsUtils\";\nimport { SpeedTestResponse } from \"./types\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_SCOPES,\n} from \"../../../common/SecureComponent/permissions\";\n\nconst Speedtest = () => {\n const distributedSetup = useSelector(selDistSet);\n const navigate = useNavigate();\n\n const [start, setStart] = useState(false);\n const [currStatus, setCurrStatus] = useState(\n null,\n );\n const [size, setSize] = useState(\"64\");\n const [sizeUnit, setSizeUnit] = useState(\"MB\");\n const [duration, setDuration] = useState(\"10\");\n const [topDate, setTopDate] = useState(0);\n const [currentValue, setCurrentValue] = useState(0);\n const [totalSeconds, setTotalSeconds] = useState(0);\n const [speedometerValue, setSpeedometerValue] = useState(0);\n const clusterRegistered = registeredCluster();\n\n useEffect(() => {\n // begin watch if bucketName in bucketList and start pressed\n if (start) {\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/speedtest?&size=${size}${sizeUnit}&duration=${duration}s`,\n );\n\n const baseDate = DateTime.now();\n\n const currentTime = baseDate.toUnixInteger() / 1000;\n\n const incrementDate =\n baseDate.plus({ seconds: parseInt(\"10\") * 2 }).toUnixInteger() / 1000;\n\n const totalSeconds = (incrementDate - currentTime) / 1000;\n\n setTopDate(incrementDate);\n setCurrentValue(currentTime);\n setTotalSeconds(totalSeconds);\n\n let interval: any | null = null;\n if (c !== null) {\n c.onopen = () => {\n console.log(\"WebSocket Client Connected\");\n c.send(\"ok\");\n interval = setInterval(() => {\n c.send(\"ok\");\n }, 10 * 1000);\n };\n c.onmessage = (message: IMessageEvent) => {\n const data: SpeedTestResponse = JSON.parse(message.data.toString());\n\n setCurrStatus((prevStatus) => {\n let prSt: SpeedTestResponse[] = [];\n if (prevStatus) {\n prSt = [...prevStatus];\n }\n\n const insertData = data.servers !== 0 ? [data] : [];\n return [...prSt, ...insertData];\n });\n\n const currTime = DateTime.now().toUnixInteger() / 1000;\n setCurrentValue(currTime);\n };\n c.onclose = () => {\n clearInterval(interval);\n console.log(\"connection closed by server\");\n // reset start status\n setStart(false);\n };\n return () => {\n // close websocket on useEffect cleanup\n c.close(1000);\n clearInterval(interval);\n console.log(\"closing websockets\");\n };\n }\n } else {\n // reset start status\n setStart(false);\n }\n }, [size, sizeUnit, start, duration]);\n\n useEffect(() => {\n const actualSeconds = (topDate - currentValue) / 1000;\n\n let percToDisplay = 100 - (actualSeconds * 100) / totalSeconds;\n\n if (percToDisplay > 100) {\n percToDisplay = 100;\n }\n\n setSpeedometerValue(percToDisplay);\n }, [start, currentValue, topDate, totalSeconds]);\n\n const stoppedLabel = currStatus !== null ? \"Retest\" : \"Start\";\n\n const buttonLabel = start ? \"Start\" : stoppedLabel;\n\n const startSpeedtestButton = () => {\n if (!clusterRegistered) {\n navigate(\"/support/register\");\n return;\n }\n\n setCurrStatus(null);\n setStart(true);\n };\n\n const dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(setHelpName(\"performance\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n } />\n\n \n {!clusterRegistered && }\n {!distributedSetup ? (\n }\n entity={\"Speedtest\"}\n />\n ) : (\n \n \n \n \n \n {start ? (\n \n Speedtest in progress...\n \n \n ) : (\n \n {currStatus && !start ? (\n Speed Test results:\n ) : (\n Performance test\n )}\n \n )}\n \n \n \n \n \n \n
    \n {\n setSize(e.target.value);\n }}\n noLabelMinWidth={true}\n value={size}\n disabled={start || !clusterRegistered}\n overlayObject={\n \n }\n />\n
    \n
    \n \n
    \n {\n if (e.target.validity.valid) {\n setDuration(e.target.value);\n }\n }}\n noLabelMinWidth={true}\n value={duration}\n disabled={start || !clusterRegistered}\n overlayObject={\n {}}\n unitSelected={\"s\"}\n unitsList={[{ label: \"s\", value: \"s\" }]}\n disabled={start || !clusterRegistered}\n />\n }\n pattern={\"[0-9]*\"}\n />\n
    \n
    \n \n \n \n \n \n \n \n \n {currStatus !== null && (\n \n \n \n )}\n \n \n \n \n \n\n {!start && !currStatus && clusterRegistered && (\n \n
    \n }\n help={}\n />\n \n )}\n \n )}\n
    \n
    \n );\n};\n\nexport default Speedtest;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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, breakPoints, Button, Grid, HelpBox, WarnIcon } from \"mds\";\n\ninterface IRegisterCluster {\n compactMode?: boolean;\n}\n\nconst RegisterCluster = ({ compactMode = false }: IRegisterCluster) => {\n const navigate = useNavigate();\n\n const redirectButton = (\n navigate(\"/support/register\")}\n >\n Register your Cluster\n \n );\n\n const registerMessage =\n \"Please use your MinIO Subscription Network login credentials to register this cluster and enable this feature.\";\n\n if (compactMode) {\n return (\n \n \n \n {registerMessage} {redirectButton}\n \n }\n iconComponent={}\n help={null}\n />\n \n
    \n
    \n );\n }\n\n return (\n \n \n \n \n Register your cluster\n \n \n \n \n \n \n {registerMessage}\n \n \n \n {redirectButton}\n \n \n \n \n \n \n \n );\n};\n\nexport default RegisterCluster;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\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 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","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","var naiveFallback = function () {\n\tif (typeof self === \"object\" && self) return self;\n\tif (typeof window === \"object\" && window) return window;\n\tthrow new Error(\"Unable to resolve global `this`\");\n};\n\nmodule.exports = (function () {\n\tif (this) return this;\n\n\t// Unexpected strict mode (may happen if e.g. bundled into ESM module)\n\n\t// Fallback to standard globalThis if available\n\tif (typeof globalThis === \"object\" && globalThis) return globalThis;\n\n\t// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis\n\t// In all ES5+ engines global object inherits from Object.prototype\n\t// (if you approached one that doesn't please report)\n\ttry {\n\t\tObject.defineProperty(Object.prototype, \"__global__\", {\n\t\t\tget: function () { return this; },\n\t\t\tconfigurable: true\n\t\t});\n\t} catch (error) {\n\t\t// Unfortunate case of updates to Object.prototype being restricted\n\t\t// via preventExtensions, seal or freeze\n\t\treturn naiveFallback();\n\t}\n\ttry {\n\t\t// Safari case (window.__global__ works, but __global__ does not)\n\t\tif (!__global__) return naiveFallback();\n\t\treturn __global__;\n\t} finally {\n\t\tdelete Object.prototype.__global__;\n\t}\n})();\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n","var _globalThis;\nif (typeof globalThis === 'object') {\n\t_globalThis = globalThis;\n} else {\n\ttry {\n\t\t_globalThis = require('es5-ext/global');\n\t} catch (error) {\n\t} finally {\n\t\tif (!_globalThis && typeof window !== 'undefined') { _globalThis = window; }\n\t\tif (!_globalThis) { throw new Error('Could not determine global this'); }\n\t}\n}\n\nvar NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;\nvar websocket_version = require('./version');\n\n\n/**\n * Expose a W3C WebSocket class with just one or two arguments.\n */\nfunction W3CWebSocket(uri, protocols) {\n\tvar native_instance;\n\n\tif (protocols) {\n\t\tnative_instance = new NativeWebSocket(uri, protocols);\n\t}\n\telse {\n\t\tnative_instance = new NativeWebSocket(uri);\n\t}\n\n\t/**\n\t * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket\n\t * class). Since it is an Object it will be returned as it is when creating an\n\t * instance of W3CWebSocket via 'new W3CWebSocket()'.\n\t *\n\t * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2\n\t */\n\treturn native_instance;\n}\nif (NativeWebSocket) {\n\t['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) {\n\t\tObject.defineProperty(W3CWebSocket, prop, {\n\t\t\tget: function() { return NativeWebSocket[prop]; }\n\t\t});\n\t});\n}\n\n/**\n * Module exports.\n */\nmodule.exports = {\n 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null,\n 'version' : websocket_version\n};\n","module.exports = require('../package.json').version;\n"],"names":["_ref","iconComponent","entity","_jsx","Grid","container","children","item","xs","HelpBox","title","concat","help","_jsxs","Box","sx","_defineProperty","fontSize","breakPoints","sm","display","flexFlow","href","target","rel","value","_ref$label","label","_ref$tooltip","tooltip","_ref$mode","mode","onChange","_ref$editorHeight","editorHeight","CodeEditor","helpTools","Fragment","TooltipWrapper","CopyToClipboard","text","Button","type","id","icon","CopyIcon","color","variant","withStyles","theme","createStyles","buttonTrigger","border","borderRadius","backgroundColor","classes","unitSelected","unitsList","_ref$disabled","disabled","onUnitChange","_React$useState","React","_React$useState2","_slicedToArray","anchorEl","setAnchorEl","open","Boolean","handleClose","newUnit","undefined","onClick","event","currentTarget","className","Menu","onClose","anchorOrigin","vertical","horizontal","transformOrigin","map","unit","MenuItem","SpeedTestUnitBase","styled","table","lineHeight","get","fontWeight","textAlign","verticalAlign","marginTop","_ref2","throughput","objects","avg","calculateBytes","total","toString","STResultsContainer","div","borderTop","padding","alignItems","fill","justifyContent","width","borderBottom","borderLeft","borderRight","maxWidth","overflow","textOverflow","whiteSpace","overflowX","paddingBottom","height","marginRight","results","start","_useState","useState","_useState2","jsonView","setJsonView","finalRes","length","getServers","putServers","getThroughput","getObjects","putThroughput","putObjects","statJoin","forEach","hostName","endpoint","putMetric","find","itemJoin","getUnit","getValue","host","putUnit","putValue","err","getError","niceGet","throughputPerSec","putError","nicePut","push","finalResJSON","JSON","stringify","clnMetrics","states","filter","version","disks","itemRes","_itemRes$GETStats","_itemRes$PUTStats","GETStats","put","PUTStats","_toConsumableArray","cleanMetrics","md","lg","SpeedTestUnit","DownloadStatIcon","UploadStatIcon","ResponsiveContainer","AreaChart","data","x1","y1","x2","y2","offset","stopColor","stopOpacity","CartesianGrid","strokeDasharray","strokeWidth","strokeOpacity","stroke","Area","dataKey","fillOpacity","dot","gap","date","Date","element","document","createElement","setAttribute","toISOString","style","body","appendChild","click","removeChild","DownloadIcon","JSONIcon","withBorders","useBackground","CodeMirrorWrapper","ComputerLineIcon","servers","concurrent","VersionIcon","cellSpacing","cellPadding","colSpan","stats","index","StorageIcon","prettyNumber","parseFloat","distributedSetup","useSelector","selDistSet","navigate","useNavigate","setStart","_useState3","_useState4","currStatus","setCurrStatus","_useState5","_useState6","size","setSize","_useState7","_useState8","sizeUnit","setSizeUnit","_useState9","_useState10","duration","setDuration","_useState11","_useState12","topDate","setTopDate","_useState13","_useState14","currentValue","setCurrentValue","_useState15","_useState16","totalSeconds","setTotalSeconds","_useState17","_useState18","speedometerValue","setSpeedometerValue","clusterRegistered","registeredCluster","useEffect","url","URL","window","location","port","baseUrl","baseURI","pathname","wsProt","wsProtocol","protocol","c","W3CWebSocket","hostname","baseDate","DateTime","now","currentTime","toUnixInteger","incrementDate","plus","seconds","parseInt","interval","onopen","console","log","send","setInterval","onmessage","message","parse","prevStatus","prSt","insertData","currTime","onclose","clearInterval","close","percToDisplay","buttonLabel","dispatch","useAppDispatch","setHelpName","PageHeaderWrapper","actions","HelpMenu","PageLayout","RegisterCluster","compactMode","SecureComponent","scopes","IAM_SCOPES","ADMIN_HEAL","resource","CONSOLE_UI_RESOURCE","marginBottom","Loader","ProgressBarWrapper","ready","indeterminate","marginLeft","InputBox","name","e","noLabelMinWidth","overlayObject","InputUnitMenu","validity","valid","pattern","trim","STResults","WarnIcon","DistributedOnly","SpeedtestIcon","_ref$compactMode","redirectButton","registerMessage","flexGrow","flex","WSCloseAbnormalClosure","WSClosePolicyViolation","WSCloseInternalServerErr","deselectCurrent","require","clipboardToIE11Formatting","module","exports","options","debug","reselectPrevious","range","selection","mark","success","createRange","getSelection","textContent","ariaHidden","all","position","top","clip","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","format","preventDefault","clipboardData","warn","clearData","setData","onCopy","selectNodeContents","addRange","execCommand","Error","error","copyKey","test","navigator","userAgent","replace","prompt","removeRange","removeAllRanges","naiveFallback","self","this","globalThis","Object","defineProperty","prototype","configurable","__global__","_typeof","obj","Symbol","iterator","constructor","_react","_interopRequireDefault","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","apply","_objectSpread","i","arguments","source","key","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","call","_defineProperties","props","descriptor","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","valueOf","_isNativeReflectConstruct","result","Super","_getPrototypeOf","NewTarget","TypeError","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","getPrototypeOf","_React$PureComponent","subClass","superClass","create","_inherits","Constructor","protoProps","staticProps","_super","_this","instance","_classCallCheck","_len","args","Array","_key","_this$props","elem","Children","only","_this$props2","cloneElement","PureComponent","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus","_globalThis","NativeWebSocket","WebSocket","MozWebSocket","websocket_version","uri","protocols","prop"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/5962.2feae2cf.chunk.js b/portal-ui/build/static/js/5962.b97f970a.chunk.js similarity index 68% rename from portal-ui/build/static/js/5962.2feae2cf.chunk.js rename to portal-ui/build/static/js/5962.b97f970a.chunk.js index 2d897b57ac..8b367a2809 100644 --- a/portal-ui/build/static/js/5962.2feae2cf.chunk.js +++ b/portal-ui/build/static/js/5962.b97f970a.chunk.js @@ -1,2 +1,2 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[5962],{47986:function(e,t,n){"use strict";var r=n(4942),o=(n(72791),n(29945)),i=n(80184);t.Z=function(e){var t=e.iconComponent,n=e.entity;return(0,i.jsx)(o.rjZ,{container:!0,children:(0,i.jsx)(o.rjZ,{item:!0,xs:12,children:(0,i.jsx)(o.KfX,{title:"".concat(n," not available"),iconComponent:t,help:(0,i.jsxs)(o.xuv,{sx:(0,r.Z)({fontSize:"14px"},"@media (max-width: ".concat(o.Egj.sm,"px)"),{display:"flex",flexFlow:"column"}),children:[(0,i.jsx)("span",{children:"This feature is not available for a single-disk setup.\xa0"}),(0,i.jsxs)("span",{children:["Please deploy a server in"," ",(0,i.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:"noopener",children:"Distributed Mode"})," ","to use this feature."]})]})})})})}},92217:function(e,t,n){"use strict";var r=n(72791),o=n(29945),i=n(78029),s=n.n(i),l=n(27454),a=n(80184);t.Z=function(e){var t=e.value,n=e.label,i=void 0===n?"":n,c=e.tooltip,d=void 0===c?"":c,u=e.mode,p=void 0===u?"json":u,f=e.onChange,x=e.editorHeight,h=void 0===x?250:x;return(0,a.jsx)(o.pq4,{value:t,onChange:function(e){return f(e)},mode:p,tooltip:d,editorHeight:h,label:i,helpTools:(0,a.jsx)(r.Fragment,{children:(0,a.jsx)(l.Z,{tooltip:"Copy to Clipboard",children:(0,a.jsx)(s(),{text:t,children:(0,a.jsx)(o.zxk,{type:"button",id:"copy-code-mirror",icon:(0,a.jsx)(o.TIy,{}),color:"primary",variant:"regular"})})})})})}},84741:function(e,t,n){"use strict";var r=n(29439),o=n(72791),i=n(11135),s=n(25787),l=n(80911),a=n(77865),c=n(80184);t.Z=(0,s.Z)((function(e){return(0,i.Z)({buttonTrigger:{border:"#F0F2F2 1px solid",borderRadius:3,color:"#838383",backgroundColor:"#fff",fontSize:12}})}))((function(e){var t=e.classes,n=e.id,i=e.unitSelected,s=e.unitsList,d=e.disabled,u=void 0!==d&&d,p=e.onUnitChange,f=o.useState(null),x=(0,r.Z)(f,2),h=x[0],m=x[1],j=Boolean(h),g=function(e){m(null),""!==e&&p&&p(e)};return(0,c.jsxs)(o.Fragment,{children:[(0,c.jsx)("button",{id:"".concat(n,"-button"),"aria-controls":"".concat(n,"-menu"),"aria-haspopup":"true","aria-expanded":j?"true":void 0,onClick:function(e){m(e.currentTarget)},className:t.buttonTrigger,disabled:u,type:"button",children:i}),(0,c.jsx)(l.Z,{id:"".concat(n,"-menu"),"aria-labelledby":"".concat(n,"-button"),anchorEl:h,open:j,onClose:function(){g("")},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},children:s.map((function(e){return(0,c.jsx)(a.Z,{onClick:function(){return g(e.value)},children:e.label},"itemUnit-".concat(e.value,"-").concat(e.label))}))})]})}))},15962:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return z}});var r=n(93433),o=n(29439),i=n(72791),s=n(78687),l=n(95087),a=n(57689),c=n(29945),d=n(99779),u=n(26181),p=n.n(u),f=n(45248),x=n(20601),h=n(28265),m=n(82839),j=n(18602),g=n(92217),b=n(17691),y=n(80184),v=b.ZP.table((function(e){var t=e.theme;return{"& .objectGeneralTitle":{lineHeight:1,fontSize:50,color:p()(t,"mutedText","#87888d")},"& .generalUnit":{color:p()(t,"fontColor","#000"),fontSize:12,fontWeight:"bold"},"& .testUnitRes":{fontSize:60,color:p()(t,"signalColors.main","#07193E"),fontWeight:"bold",textAlign:"right"},"& .metricValContainer":{lineHeight:1,verticalAlign:"bottom"},"& .objectsUnitRes":{fontSize:22,marginTop:6,color:p()(t,"mutedText","#87888d"),fontWeight:"bold",textAlign:"right"},"& .objectsUnit":{color:p()(t,"mutedText","#87888d"),fontSize:16,fontWeight:"bold"},"& .iconTd":{verticalAlign:"bottom"}}})),w=function(e){var t=e.title,n=e.icon,r=e.throughput,o=e.objects,i=(0,f.Am)(r),s="0",l="";return 0!==i.total&&(s=i.total.toString(),l="".concat(i.unit,"/s")),(0,y.jsxs)(v,{children:[(0,y.jsxs)("tr",{children:[(0,y.jsx)("td",{className:"objectGeneralTitle",children:t}),(0,y.jsx)("td",{className:"iconTd",children:n})]}),(0,y.jsxs)("tr",{children:[(0,y.jsx)("td",{className:"metricValContainer testUnitRes",children:s}),(0,y.jsx)("td",{className:"metricValContainer generalUnit",children:l})]}),(0,y.jsxs)("tr",{children:[(0,y.jsx)("td",{className:"metricValContainer objectsUnitRes",children:o}),(0,y.jsx)("td",{className:"metricValContainer objectsUnit",children:0!==o&&"Objs/S"})]})]})},C=b.ZP.div((function(e){var t=e.theme;return{"& .actionButtons":{textAlign:"right"},"& .descriptorLabel":{fontWeight:"bold",fontSize:14},"& .resultsContainer":{backgroundColor:p()(t,"boxBackground","#FBFAFA"),borderTop:"".concat(p()(t,"borderColor","#E2E2E2")," 1px solid"),marginTop:30,padding:25},"& .resultsIcon":{display:"flex",alignItems:"center","& svg":{fill:p()(t,"screenTitle.iconColor","#07193E")}},"& .detailedItem":{display:"flex",alignItems:"center",justifyContent:"flex-start"},"& .detailedVersion":{display:"flex",alignItems:"center",justifyContent:"flex-end"},"& .serversTable":{width:"100%",marginTop:15,"& thead > tr > th":{textAlign:"left",padding:15,fontSize:14,fontWeight:"bold"},"& tbody > tr":{"&:last-of-type":{"& > td":{borderBottom:"".concat(p()(t,"borderColor","#E2E2E2")," 1px solid")}},"& > td":{borderTop:"".concat(p()(t,"borderColor","#E2E2E2")," 1px solid"),padding:15,fontSize:14,"&:first-of-type":{borderLeft:"".concat(p()(t,"borderColor","#E2E2E2")," 1px solid")},"&:last-of-type":{borderRight:"".concat(p()(t,"borderColor","#E2E2E2")," 1px solid")}}}},"& .serverIcon":{width:55},"& .serverValue":{width:140},"& .serverHost":{maxWidth:540,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},"& .tableOverflow":{overflowX:"auto",paddingBottom:15},"& .objectGeneral":{marginTop:15},"& .download":{"& .min-icon":{width:35,height:35,color:p()(t,"signalColors.good","#4CCB92")}},"& .upload":{"& .min-icon":{width:35,height:35,color:p()(t,"signalColors.info","#2781B0")}},"& .versionIcon":{color:p()(t,"screenTitle.iconColor","#07193E"),marginRight:20}}})),S=function(e){var t=e.results,n=e.start,s=(0,i.useState)(!1),l=(0,o.Z)(s,2),a=l[0],d=l[1],u=t[t.length-1]||[],b=p()(u,"GETStats.servers",[])||[],v=p()(u,"PUTStats.servers",[])||[],S=p()(u,"GETStats.throughputPerSec",0),O=p()(u,"GETStats.objectsPerSec",0),E=p()(u,"PUTStats.throughputPerSec",0),Z=p()(u,"PUTStats.objectsPerSec",0),T=[];b.forEach((function(e){var t=e.endpoint,n=v.find((function(e){return e.endpoint===t})),r={getUnit:"-",getValue:"N/A",host:e.endpoint,putUnit:"-",putValue:"N/A"};if(e.err&&""!==e.err)r.getError=e.err,r.getUnit="-",r.getValue="N/A";else{var o=(0,f.Am)(e.throughputPerSec.toString());r.getUnit=o.unit,r.getValue=o.total.toString()}if(n)if(n.err&&""!==n.err)r.putError=n.err,r.putUnit="-",r.putValue="N/A";else{var i=(0,f.Am)(n.throughputPerSec.toString());r.putUnit=i.unit,r.putValue=i.total.toString()}T.push(r)}));var k=u?JSON.stringify(u,null,4):"",P=function(e){var t=e.filter((function(e){return"0"!==e.version&&0!==e.disks})).map((function(e){var t,n;return{get:(null===(t=e.GETStats)||void 0===t?void 0:t.throughputPerSec)||0,put:(null===(n=e.PUTStats)||void 0===n?void 0:n.throughputPerSec)||0}}));return[{get:0,put:0}].concat((0,r.Z)(t))}(t);return(0,y.jsxs)(C,{children:[(0,y.jsxs)(c.rjZ,{container:!0,className:"objectGeneral",children:[(0,y.jsx)(c.rjZ,{item:!0,xs:12,md:6,lg:6,children:(0,y.jsxs)(c.rjZ,{container:!0,className:"objectGeneral",children:[(0,y.jsx)(c.rjZ,{item:!0,xs:12,md:6,lg:6,children:(0,y.jsx)(w,{icon:(0,y.jsx)("div",{className:"download",children:(0,y.jsx)(c.Q_z,{})}),title:"GET",throughput:"".concat(S),objects:O})}),(0,y.jsx)(c.rjZ,{item:!0,xs:12,md:6,lg:6,children:(0,y.jsx)(w,{icon:(0,y.jsx)("div",{className:"upload",children:(0,y.jsx)(c.jhp,{})}),title:"PUT",throughput:"".concat(E),objects:Z})})]})}),(0,y.jsx)(c.rjZ,{item:!0,xs:12,md:6,lg:6,children:(0,y.jsx)(x.h,{width:"99%",children:(0,y.jsxs)(h.T,{data:P,children:[(0,y.jsxs)("defs",{children:[(0,y.jsxs)("linearGradient",{id:"colorPut",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,y.jsx)("stop",{offset:"0%",stopColor:"#2781B0",stopOpacity:.9}),(0,y.jsx)("stop",{offset:"95%",stopColor:"#fff",stopOpacity:0})]}),(0,y.jsxs)("linearGradient",{id:"colorGet",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,y.jsx)("stop",{offset:"0%",stopColor:"#4CCB92",stopOpacity:.9}),(0,y.jsx)("stop",{offset:"95%",stopColor:"#fff",stopOpacity:0})]})]}),(0,y.jsx)(m.q,{strokeDasharray:"0 0",strokeWidth:1,strokeOpacity:.5,stroke:"#F1F1F1",vertical:!1}),(0,y.jsx)(j.u,{type:"monotone",dataKey:"get",stroke:"#4CCB92",fill:"url(#colorGet)",fillOpacity:.3,strokeWidth:2,dot:!1}),(0,y.jsx)(j.u,{type:"monotone",dataKey:"put",stroke:"#2781B0",fill:"url(#colorPut)",fillOpacity:.3,strokeWidth:2,dot:!1})]})})})]}),(0,y.jsx)("br",{}),P.length>1&&(0,y.jsxs)(i.Fragment,{children:[(0,y.jsxs)(c.rjZ,{container:!0,children:[(0,y.jsx)(c.rjZ,{item:!0,xs:12,md:6,className:"descriptorLabel",children:n?(0,y.jsx)(i.Fragment,{children:"Preliminar Results:"}):(0,y.jsx)(i.Fragment,{children:a?"JSON Results:":"Detailed Results:"})}),(0,y.jsx)(c.rjZ,{item:!0,xs:12,md:6,sx:{display:"flex",justifyContent:"right",gap:8},children:!n&&(0,y.jsxs)(i.Fragment,{children:[(0,y.jsx)(c.zxk,{id:"download-results","aria-label":"Download Results",onClick:function(){var e=new Date,t=document.createElement("a");t.setAttribute("href","data:text/plain;charset=utf-8,"+JSON.stringify(u)),t.setAttribute("download","speedtest_results-".concat(e.toISOString(),".log")),t.style.display="none",document.body.appendChild(t),t.click(),document.body.removeChild(t)},icon:(0,y.jsx)(c._8t,{})}),"\xa0",(0,y.jsx)(c.zxk,{id:"toggle-json","aria-label":"Toogle JSON",onClick:function(){d(!a)},icon:(0,y.jsx)(c.iH5,{})})]})})]}),(0,y.jsx)(c.xuv,{withBorders:!0,useBackground:!0,sx:{marginTop:15},children:(0,y.jsx)(c.rjZ,{container:!0,children:a?(0,y.jsx)(i.Fragment,{children:(0,y.jsx)(g.Z,{value:k,onChange:function(){}})}):(0,y.jsxs)(i.Fragment,{children:[(0,y.jsx)(c.rjZ,{item:!0,xs:12,sm:12,md:1,lg:1,className:"resultsIcon",children:(0,y.jsx)(c.UMk,{width:45})}),(0,y.jsxs)(c.rjZ,{item:!0,xs:12,sm:6,md:3,lg:2,className:"detailedItem",children:["Nodes:\xa0",(0,y.jsx)("strong",{children:u.servers})]}),(0,y.jsxs)(c.rjZ,{item:!0,xs:12,sm:6,md:3,lg:2,className:"detailedItem",children:["Drives:\xa0",(0,y.jsx)("strong",{children:u.disks})]}),(0,y.jsxs)(c.rjZ,{item:!0,xs:12,sm:6,md:3,lg:2,className:"detailedItem",children:["Concurrent:\xa0",(0,y.jsx)("strong",{children:u.concurrent})]}),(0,y.jsxs)(c.rjZ,{item:!0,xs:12,sm:12,md:12,lg:5,className:"detailedVersion",children:[(0,y.jsx)("span",{className:"versionIcon",children:(0,y.jsx)(c.Dbk,{})})," ","MinIO VERSION\xa0",(0,y.jsx)("strong",{children:u.version})]}),(0,y.jsx)(c.rjZ,{item:!0,xs:12,className:"tableOverflow",children:(0,y.jsxs)("table",{className:"serversTable",cellSpacing:0,cellPadding:0,children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{colSpan:2,children:"Servers"}),(0,y.jsx)("th",{children:"GET"}),(0,y.jsx)("th",{children:"PUT"})]})}),(0,y.jsx)("tbody",{children:T.map((function(e,t){return(0,y.jsxs)("tr",{children:[(0,y.jsx)("td",{className:"serverIcon",children:(0,y.jsx)(c.idV,{})}),(0,y.jsx)("td",{className:"serverHost",children:e.host}),e.getError&&""!==e.getError?(0,y.jsx)("td",{children:e.getError}):(0,y.jsx)(i.Fragment,{children:(0,y.jsxs)("td",{className:"serverValue",children:[(0,f.CE)(parseFloat(e.getValue)),"\xa0",e.getUnit,"/s."]})}),e.putError&&""!==e.putError?(0,y.jsx)("td",{children:e.putError}):(0,y.jsx)(i.Fragment,{children:(0,y.jsxs)("td",{className:"serverValue",children:[(0,f.CE)(parseFloat(e.putValue)),"\xa0",e.putUnit,"/s."]})})]},"storage-".concat(t.toString()))}))})]})})]})})})]})]})},O=n(87998),E=n(84741),Z=n(47986),T=n(31460),k=n(47974),P=n(99670),N=n(38442),U=n(87995),I=n(9478),F=n(81551),R=n(26824),D=n(56087),z=function(){var e=(0,s.v9)(U.N5),t=(0,a.s0)(),n=(0,i.useState)(!1),u=(0,o.Z)(n,2),p=u[0],f=u[1],x=(0,i.useState)(null),h=(0,o.Z)(x,2),m=h[0],j=h[1],g=(0,i.useState)("64"),b=(0,o.Z)(g,2),v=b[0],w=b[1],C=(0,i.useState)("MB"),z=(0,o.Z)(C,2),_=z[0],A=z[1],B=(0,i.useState)("10"),V=(0,o.Z)(B,2),G=V[0],L=V[1],W=(0,i.useState)(0),M=(0,o.Z)(W,2),H=M[0],K=M[1],X=(0,i.useState)(0),J=(0,o.Z)(X,2),q=J[0],Q=J[1],Y=(0,i.useState)(0),$=(0,o.Z)(Y,2),ee=$[0],te=$[1],ne=(0,i.useState)(0),re=(0,o.Z)(ne,2),oe=re[0],ie=re[1],se=(0,I.Yc)();(0,i.useEffect)((function(){if(p){var e=new URL(window.location.toString()),t=e.port,n=new URL(document.baseURI).pathname,o=(0,R.x2)(e.protocol),i=new l.w3cwebsocket("".concat(o,"://").concat(e.hostname,":").concat(t).concat(n,"ws/speedtest?&size=").concat(v).concat(_,"&duration=").concat(G,"s")),s=d.ou.now(),a=s.toUnixInteger()/1e3,c=s.plus({seconds:2*parseInt("10")}).toUnixInteger()/1e3,u=(c-a)/1e3;K(c),Q(a),te(u);var x=null;if(null!==i)return i.onopen=function(){console.log("WebSocket Client Connected"),i.send("ok"),x=setInterval((function(){i.send("ok")}),1e4)},i.onmessage=function(e){var t=JSON.parse(e.data.toString());j((function(e){var n=[];e&&(n=(0,r.Z)(e));var o=0!==t.servers?[t]:[];return[].concat((0,r.Z)(n),o)}));var n=d.ou.now().toUnixInteger()/1e3;Q(n)},i.onclose=function(){clearInterval(x),console.log("connection closed by server"),f(!1)},function(){i.close(1e3),clearInterval(x),console.log("closing websockets")}}else f(!1)}),[v,_,p,G]),(0,i.useEffect)((function(){var e=100-100*((H-q)/1e3)/ee;e>100&&(e=100),ie(e)}),[p,q,H,ee]);var le=p?"Start":null!==m?"Retest":"Start",ae=(0,F.TL)();return(0,i.useEffect)((function(){ae((0,U.Sc)("performance"))}),[]),(0,y.jsxs)(i.Fragment,{children:[(0,y.jsx)(k.Z,{label:"Performance",actions:(0,y.jsx)(P.Z,{})}),(0,y.jsxs)(c.Xgh,{children:[!se&&(0,y.jsx)(T.Z,{compactMode:!0}),e?(0,y.jsxs)(N.s,{scopes:[D.Ft.ADMIN_HEAL],resource:D.C3,children:[(0,y.jsxs)(c.xuv,{withBorders:!0,children:[(0,y.jsxs)(c.rjZ,{container:!0,children:[(0,y.jsxs)(c.rjZ,{item:!0,md:3,sm:12,children:[(0,y.jsx)(c.xuv,{sx:{fontSize:13,marginBottom:8},children:p?(0,y.jsxs)(i.Fragment,{children:["Speedtest in progress...",(0,y.jsx)(c.aNw,{style:{width:15,height:15}})]}):(0,y.jsx)(i.Fragment,{children:m&&!p?(0,y.jsx)("b",{children:"Speed Test results:"}):(0,y.jsx)("b",{children:"Performance test"})})}),(0,y.jsx)(c.xuv,{children:(0,y.jsx)(O.Z,{value:oe,ready:null!==m&&!p,indeterminate:p,size:"small"})})]}),(0,y.jsx)(c.rjZ,{item:!0,md:4,sm:12,children:(0,y.jsx)("div",{style:{marginLeft:10,width:300},children:(0,y.jsx)(c.Wzg,{id:"size",name:"size",label:"Object Size",onChange:function(e){w(e.target.value)},noLabelMinWidth:!0,value:v,disabled:p||!se,overlayObject:(0,y.jsx)(E.Z,{id:"size-unit",onUnitChange:A,unitSelected:_,unitsList:[{label:"KiB",value:"KiB"},{label:"MiB",value:"MiB"},{label:"GiB",value:"GiB"}],disabled:p||!se})})})}),(0,y.jsx)(c.rjZ,{item:!0,md:4,sm:12,children:(0,y.jsx)("div",{style:{marginLeft:10,width:300},children:(0,y.jsx)(c.Wzg,{id:"duration",name:"duration",label:"Duration",onChange:function(e){e.target.validity.valid&&L(e.target.value)},noLabelMinWidth:!0,value:G,disabled:p||!se,overlayObject:(0,y.jsx)(E.Z,{id:"size-unit",onUnitChange:function(){},unitSelected:"s",unitsList:[{label:"s",value:"s"}],disabled:p||!se}),pattern:"[0-9]*"})})}),(0,y.jsx)(c.rjZ,{item:!0,md:1,sm:12,sx:{textAlign:"center"},children:(0,y.jsx)(c.zxk,{onClick:function(){se?(j(null),f(!0)):t("/support/register")},color:"primary",type:"button",id:"start-speed-test",variant:se&&null!==m&&!p?"callAction":"regular",disabled:""===G.trim()||""===v.trim()||p||!se,label:le})})]}),(0,y.jsx)(c.rjZ,{container:!0,children:(0,y.jsx)(c.rjZ,{item:!0,xs:12,children:(0,y.jsx)(i.Fragment,{children:(0,y.jsx)(c.rjZ,{item:!0,xs:12,children:null!==m&&(0,y.jsx)(i.Fragment,{children:(0,y.jsx)(S,{results:m,start:p})})})})})})]}),!p&&!m&&se&&(0,y.jsxs)(i.Fragment,{children:[(0,y.jsx)("br",{}),(0,y.jsx)(c.KfX,{title:"During the speed test all your production traffic will be temporarily suspended.",iconComponent:(0,y.jsx)(c.e6P,{}),help:(0,y.jsx)(i.Fragment,{})})]})]}):(0,y.jsx)(Z.Z,{iconComponent:(0,y.jsx)(c.QBB,{}),entity:"Speedtest"})]})]})}},31460:function(e,t,n){"use strict";var r=n(4942),o=n(72791),i=n(57689),s=n(29945),l=n(80184);t.Z=function(e){var t=e.compactMode,n=void 0!==t&&t,a=(0,i.s0)(),c=(0,l.jsx)(s.zxk,{id:"go-to-register",type:"submit",variant:"callAction",color:"primary",onClick:function(){return a("/support/register")},children:"Register your Cluster"}),d="Please use your MinIO Subscription Network login credentials to register this cluster and enable this feature.";return n?(0,l.jsxs)(o.Fragment,{children:[(0,l.jsx)(s.rjZ,{sx:{"& div.leftItems":{marginBottom:0}},children:(0,l.jsx)(s.KfX,{title:(0,l.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",flexGrow:1},children:[(0,l.jsx)("span",{children:d})," ",c]}),iconComponent:(0,l.jsx)(s.e6P,{}),help:null})}),(0,l.jsx)("br",{})]}):(0,l.jsx)(s.xuv,{sx:(0,r.Z)({padding:"25px",border:"1px solid #eaeaea",display:"flex",alignItems:"center",justifyContent:"center",flexFlow:"row",marginBottom:"15px"},"@media (max-width: ".concat(s.Egj.sm,"px)"),{flexFlow:"column"}),children:(0,l.jsxs)(s.rjZ,{container:!0,children:[(0,l.jsx)(s.rjZ,{item:!0,xs:12,children:(0,l.jsx)(s.xuv,{sx:{marginRight:"8px",fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center","& .min-icon":{width:"83px",height:"14px",marginLeft:"5px",marginRight:"5px"}},children:"Register your cluster"})}),(0,l.jsx)(s.rjZ,{item:!0,xs:12,children:(0,l.jsx)(s.xuv,{sx:(0,r.Z)({display:"flex",flexFlow:"row"},"@media (max-width: ".concat(s.Egj.sm,"px)"),{flexFlow:"column"}),children:(0,l.jsxs)(s.xuv,{sx:{display:"flex",flexFlow:"column",flex:"2"},children:[(0,l.jsx)(s.xuv,{sx:{fontSize:"16px",display:"flex",flexFlow:"column",marginTop:"15px",marginBottom:"15px"},children:d}),(0,l.jsx)(s.xuv,{sx:{flex:"1"},children:(0,l.jsx)(s.xuv,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end"},children:c})})]})})})]})})}},26824:function(e,t,n){"use strict";n.d(t,{HE:function(){return i},V9:function(){return r},ci:function(){return o},x2:function(){return s}});var r=1006,o=1008,i=1011,s=function(e){var t="ws";return"https:"===e&&(t="wss"),t}},76998:function(e,t,n){"use strict";var r=n(42458),o={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,i,s,l,a,c,d=!1;t||(t={}),n=t.debug||!1;try{if(s=r(),l=document.createRange(),a=document.getSelection(),(c=document.createElement("span")).textContent=e,c.ariaHidden="true",c.style.all="unset",c.style.position="fixed",c.style.top=0,c.style.clip="rect(0, 0, 0, 0)",c.style.whiteSpace="pre",c.style.webkitUserSelect="text",c.style.MozUserSelect="text",c.style.msUserSelect="text",c.style.userSelect="text",c.addEventListener("copy",(function(r){if(r.stopPropagation(),t.format)if(r.preventDefault(),"undefined"===typeof r.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var i=o[t.format]||o.default;window.clipboardData.setData(i,e)}else r.clipboardData.clearData(),r.clipboardData.setData(t.format,e);t.onCopy&&(r.preventDefault(),t.onCopy(r.clipboardData))})),document.body.appendChild(c),l.selectNodeContents(c),a.addRange(l),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");d=!0}catch(u){n&&console.error("unable to copy using execCommand: ",u),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),d=!0}catch(u){n&&console.error("unable to copy using clipboardData: ",u),n&&console.error("falling back to prompt"),i=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(i,e)}}finally{a&&("function"==typeof a.removeRange?a.removeRange(l):a.removeAllRanges()),c&&document.body.removeChild(c),s()}return d}},94210:function(e){var t=function(){if("object"===typeof self&&self)return self;if("object"===typeof window&&window)return window;throw new Error("Unable to resolve global `this`")};e.exports=function(){if(this)return this;if("object"===typeof globalThis&&globalThis)return globalThis;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch(e){return t()}try{return __global__||t()}finally{delete Object.prototype.__global__}}()},568:function(e,t,n){"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var o=l(n(72791)),i=l(n(76998)),s=["text","onCopy","options","children"];function l(e){return e&&e.__esModule?e:{default:e}}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function u(e,t){for(var n=0;n tr > th":{textAlign:"left",padding:15,fontSize:14,fontWeight:"bold"},"& tbody > tr":{"&:last-of-type":{"& > td":{borderBottom:"".concat(p()(t,"borderColor","#E2E2E2")," 1px solid")}},"& > td":{borderTop:"".concat(p()(t,"borderColor","#E2E2E2")," 1px solid"),padding:15,fontSize:14,"&:first-of-type":{borderLeft:"".concat(p()(t,"borderColor","#E2E2E2")," 1px solid")},"&:last-of-type":{borderRight:"".concat(p()(t,"borderColor","#E2E2E2")," 1px solid")}}}},"& .serverIcon":{width:55},"& .serverValue":{width:140},"& .serverHost":{maxWidth:540,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},"& .tableOverflow":{overflowX:"auto",paddingBottom:15},"& .objectGeneral":{marginTop:15},"& .download":{"& .min-icon":{width:35,height:35,color:p()(t,"signalColors.good","#4CCB92")}},"& .upload":{"& .min-icon":{width:35,height:35,color:p()(t,"signalColors.info","#2781B0")}},"& .versionIcon":{color:p()(t,"screenTitle.iconColor","#07193E"),marginRight:20}}})),S=function(e){var t=e.results,n=e.start,s=(0,i.useState)(!1),l=(0,o.Z)(s,2),a=l[0],d=l[1],u=t[t.length-1]||[],b=p()(u,"GETStats.servers",[])||[],v=p()(u,"PUTStats.servers",[])||[],S=p()(u,"GETStats.throughputPerSec",0),O=p()(u,"GETStats.objectsPerSec",0),E=p()(u,"PUTStats.throughputPerSec",0),Z=p()(u,"PUTStats.objectsPerSec",0),T=[];b.forEach((function(e){var t=e.endpoint,n=v.find((function(e){return e.endpoint===t})),r={getUnit:"-",getValue:"N/A",host:e.endpoint,putUnit:"-",putValue:"N/A"};if(e.err&&""!==e.err)r.getError=e.err,r.getUnit="-",r.getValue="N/A";else{var o=(0,f.Am)(e.throughputPerSec.toString());r.getUnit=o.unit,r.getValue=o.total.toString()}if(n)if(n.err&&""!==n.err)r.putError=n.err,r.putUnit="-",r.putValue="N/A";else{var i=(0,f.Am)(n.throughputPerSec.toString());r.putUnit=i.unit,r.putValue=i.total.toString()}T.push(r)}));var k=u?JSON.stringify(u,null,4):"",P=function(e){var t=e.filter((function(e){return"0"!==e.version&&0!==e.disks})).map((function(e){var t,n;return{get:(null===(t=e.GETStats)||void 0===t?void 0:t.throughputPerSec)||0,put:(null===(n=e.PUTStats)||void 0===n?void 0:n.throughputPerSec)||0}}));return[{get:0,put:0}].concat((0,r.Z)(t))}(t);return(0,y.jsxs)(C,{children:[(0,y.jsxs)(c.rjZ,{container:!0,className:"objectGeneral",children:[(0,y.jsx)(c.rjZ,{item:!0,xs:12,md:6,lg:6,children:(0,y.jsxs)(c.rjZ,{container:!0,className:"objectGeneral",children:[(0,y.jsx)(c.rjZ,{item:!0,xs:12,md:6,lg:6,children:(0,y.jsx)(w,{icon:(0,y.jsx)("div",{className:"download",children:(0,y.jsx)(c.Q_z,{})}),title:"GET",throughput:"".concat(S),objects:O})}),(0,y.jsx)(c.rjZ,{item:!0,xs:12,md:6,lg:6,children:(0,y.jsx)(w,{icon:(0,y.jsx)("div",{className:"upload",children:(0,y.jsx)(c.jhp,{})}),title:"PUT",throughput:"".concat(E),objects:Z})})]})}),(0,y.jsx)(c.rjZ,{item:!0,xs:12,md:6,lg:6,children:(0,y.jsx)(x.h,{width:"99%",children:(0,y.jsxs)(h.T,{data:P,children:[(0,y.jsxs)("defs",{children:[(0,y.jsxs)("linearGradient",{id:"colorPut",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,y.jsx)("stop",{offset:"0%",stopColor:"#2781B0",stopOpacity:.9}),(0,y.jsx)("stop",{offset:"95%",stopColor:"#fff",stopOpacity:0})]}),(0,y.jsxs)("linearGradient",{id:"colorGet",x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,y.jsx)("stop",{offset:"0%",stopColor:"#4CCB92",stopOpacity:.9}),(0,y.jsx)("stop",{offset:"95%",stopColor:"#fff",stopOpacity:0})]})]}),(0,y.jsx)(m.q,{strokeDasharray:"0 0",strokeWidth:1,strokeOpacity:.5,stroke:"#F1F1F1",vertical:!1}),(0,y.jsx)(j.u,{type:"monotone",dataKey:"get",stroke:"#4CCB92",fill:"url(#colorGet)",fillOpacity:.3,strokeWidth:2,dot:!1}),(0,y.jsx)(j.u,{type:"monotone",dataKey:"put",stroke:"#2781B0",fill:"url(#colorPut)",fillOpacity:.3,strokeWidth:2,dot:!1})]})})})]}),(0,y.jsx)("br",{}),P.length>1&&(0,y.jsxs)(i.Fragment,{children:[(0,y.jsxs)(c.rjZ,{container:!0,children:[(0,y.jsx)(c.rjZ,{item:!0,xs:12,md:6,className:"descriptorLabel",children:n?(0,y.jsx)(i.Fragment,{children:"Preliminar Results:"}):(0,y.jsx)(i.Fragment,{children:a?"JSON Results:":"Detailed Results:"})}),(0,y.jsx)(c.rjZ,{item:!0,xs:12,md:6,sx:{display:"flex",justifyContent:"right",gap:8},children:!n&&(0,y.jsxs)(i.Fragment,{children:[(0,y.jsx)(c.zxk,{id:"download-results","aria-label":"Download Results",onClick:function(){var e=new Date,t=document.createElement("a");t.setAttribute("href","data:text/plain;charset=utf-8,"+JSON.stringify(u)),t.setAttribute("download","speedtest_results-".concat(e.toISOString(),".log")),t.style.display="none",document.body.appendChild(t),t.click(),document.body.removeChild(t)},icon:(0,y.jsx)(c._8t,{})}),"\xa0",(0,y.jsx)(c.zxk,{id:"toggle-json","aria-label":"Toogle JSON",onClick:function(){d(!a)},icon:(0,y.jsx)(c.iH5,{})})]})})]}),(0,y.jsx)(c.xuv,{withBorders:!0,useBackground:!0,sx:{marginTop:15},children:(0,y.jsx)(c.rjZ,{container:!0,children:a?(0,y.jsx)(i.Fragment,{children:(0,y.jsx)(g.Z,{value:k,onChange:function(){}})}):(0,y.jsxs)(i.Fragment,{children:[(0,y.jsx)(c.rjZ,{item:!0,xs:12,sm:12,md:1,lg:1,className:"resultsIcon",children:(0,y.jsx)(c.UMk,{width:45})}),(0,y.jsxs)(c.rjZ,{item:!0,xs:12,sm:6,md:3,lg:2,className:"detailedItem",children:["Nodes:\xa0",(0,y.jsx)("strong",{children:u.servers})]}),(0,y.jsxs)(c.rjZ,{item:!0,xs:12,sm:6,md:3,lg:2,className:"detailedItem",children:["Drives:\xa0",(0,y.jsx)("strong",{children:u.disks})]}),(0,y.jsxs)(c.rjZ,{item:!0,xs:12,sm:6,md:3,lg:2,className:"detailedItem",children:["Concurrent:\xa0",(0,y.jsx)("strong",{children:u.concurrent})]}),(0,y.jsxs)(c.rjZ,{item:!0,xs:12,sm:12,md:12,lg:5,className:"detailedVersion",children:[(0,y.jsx)("span",{className:"versionIcon",children:(0,y.jsx)(c.Dbk,{})})," ","MinIO VERSION\xa0",(0,y.jsx)("strong",{children:u.version})]}),(0,y.jsx)(c.rjZ,{item:!0,xs:12,className:"tableOverflow",children:(0,y.jsxs)("table",{className:"serversTable",cellSpacing:0,cellPadding:0,children:[(0,y.jsx)("thead",{children:(0,y.jsxs)("tr",{children:[(0,y.jsx)("th",{colSpan:2,children:"Servers"}),(0,y.jsx)("th",{children:"GET"}),(0,y.jsx)("th",{children:"PUT"})]})}),(0,y.jsx)("tbody",{children:T.map((function(e,t){return(0,y.jsxs)("tr",{children:[(0,y.jsx)("td",{className:"serverIcon",children:(0,y.jsx)(c.idV,{})}),(0,y.jsx)("td",{className:"serverHost",children:e.host}),e.getError&&""!==e.getError?(0,y.jsx)("td",{children:e.getError}):(0,y.jsx)(i.Fragment,{children:(0,y.jsxs)("td",{className:"serverValue",children:[(0,f.CE)(parseFloat(e.getValue)),"\xa0",e.getUnit,"/s."]})}),e.putError&&""!==e.putError?(0,y.jsx)("td",{children:e.putError}):(0,y.jsx)(i.Fragment,{children:(0,y.jsxs)("td",{className:"serverValue",children:[(0,f.CE)(parseFloat(e.putValue)),"\xa0",e.putUnit,"/s."]})})]},"storage-".concat(t.toString()))}))})]})})]})})})]})]})},O=n(87998),E=n(84741),Z=n(47986),T=n(31460),k=n(47974),P=n(99670),N=n(38442),U=n(87995),I=n(9478),F=n(44690),R=n(26824),D=n(56087),z=function(){var e=(0,s.v9)(U.N5),t=(0,a.s0)(),n=(0,i.useState)(!1),u=(0,o.Z)(n,2),p=u[0],f=u[1],x=(0,i.useState)(null),h=(0,o.Z)(x,2),m=h[0],j=h[1],g=(0,i.useState)("64"),b=(0,o.Z)(g,2),v=b[0],w=b[1],C=(0,i.useState)("MB"),z=(0,o.Z)(C,2),_=z[0],A=z[1],B=(0,i.useState)("10"),G=(0,o.Z)(B,2),V=G[0],L=G[1],W=(0,i.useState)(0),M=(0,o.Z)(W,2),H=M[0],K=M[1],X=(0,i.useState)(0),J=(0,o.Z)(X,2),q=J[0],Q=J[1],Y=(0,i.useState)(0),$=(0,o.Z)(Y,2),ee=$[0],te=$[1],ne=(0,i.useState)(0),re=(0,o.Z)(ne,2),oe=re[0],ie=re[1],se=(0,I.Yc)();(0,i.useEffect)((function(){if(p){var e=new URL(window.location.toString()),t=e.port,n=new URL(document.baseURI).pathname,o=(0,R.x2)(e.protocol),i=new l.w3cwebsocket("".concat(o,"://").concat(e.hostname,":").concat(t).concat(n,"ws/speedtest?&size=").concat(v).concat(_,"&duration=").concat(V,"s")),s=d.ou.now(),a=s.toUnixInteger()/1e3,c=s.plus({seconds:2*parseInt("10")}).toUnixInteger()/1e3,u=(c-a)/1e3;K(c),Q(a),te(u);var x=null;if(null!==i)return i.onopen=function(){console.log("WebSocket Client Connected"),i.send("ok"),x=setInterval((function(){i.send("ok")}),1e4)},i.onmessage=function(e){var t=JSON.parse(e.data.toString());j((function(e){var n=[];e&&(n=(0,r.Z)(e));var o=0!==t.servers?[t]:[];return[].concat((0,r.Z)(n),o)}));var n=d.ou.now().toUnixInteger()/1e3;Q(n)},i.onclose=function(){clearInterval(x),console.log("connection closed by server"),f(!1)},function(){i.close(1e3),clearInterval(x),console.log("closing websockets")}}else f(!1)}),[v,_,p,V]),(0,i.useEffect)((function(){var e=100-100*((H-q)/1e3)/ee;e>100&&(e=100),ie(e)}),[p,q,H,ee]);var le=p?"Start":null!==m?"Retest":"Start",ae=(0,F.TL)();return(0,i.useEffect)((function(){ae((0,U.Sc)("performance"))}),[]),(0,y.jsxs)(i.Fragment,{children:[(0,y.jsx)(k.Z,{label:"Performance",actions:(0,y.jsx)(P.Z,{})}),(0,y.jsxs)(c.Xgh,{children:[!se&&(0,y.jsx)(T.Z,{compactMode:!0}),e?(0,y.jsxs)(N.s,{scopes:[D.Ft.ADMIN_HEAL],resource:D.C3,children:[(0,y.jsxs)(c.xuv,{withBorders:!0,children:[(0,y.jsxs)(c.rjZ,{container:!0,children:[(0,y.jsxs)(c.rjZ,{item:!0,md:3,sm:12,children:[(0,y.jsx)(c.xuv,{sx:{fontSize:13,marginBottom:8},children:p?(0,y.jsxs)(i.Fragment,{children:["Speedtest in progress...",(0,y.jsx)(c.aNw,{style:{width:15,height:15}})]}):(0,y.jsx)(i.Fragment,{children:m&&!p?(0,y.jsx)("b",{children:"Speed Test results:"}):(0,y.jsx)("b",{children:"Performance test"})})}),(0,y.jsx)(c.xuv,{children:(0,y.jsx)(O.Z,{value:oe,ready:null!==m&&!p,indeterminate:p,size:"small"})})]}),(0,y.jsx)(c.rjZ,{item:!0,md:4,sm:12,children:(0,y.jsx)("div",{style:{marginLeft:10,width:300},children:(0,y.jsx)(c.Wzg,{id:"size",name:"size",label:"Object Size",onChange:function(e){w(e.target.value)},noLabelMinWidth:!0,value:v,disabled:p||!se,overlayObject:(0,y.jsx)(E.Z,{id:"size-unit",onUnitChange:A,unitSelected:_,unitsList:[{label:"KiB",value:"KiB"},{label:"MiB",value:"MiB"},{label:"GiB",value:"GiB"}],disabled:p||!se})})})}),(0,y.jsx)(c.rjZ,{item:!0,md:4,sm:12,children:(0,y.jsx)("div",{style:{marginLeft:10,width:300},children:(0,y.jsx)(c.Wzg,{id:"duration",name:"duration",label:"Duration",onChange:function(e){e.target.validity.valid&&L(e.target.value)},noLabelMinWidth:!0,value:V,disabled:p||!se,overlayObject:(0,y.jsx)(E.Z,{id:"size-unit",onUnitChange:function(){},unitSelected:"s",unitsList:[{label:"s",value:"s"}],disabled:p||!se}),pattern:"[0-9]*"})})}),(0,y.jsx)(c.rjZ,{item:!0,md:1,sm:12,sx:{textAlign:"center"},children:(0,y.jsx)(c.zxk,{onClick:function(){se?(j(null),f(!0)):t("/support/register")},color:"primary",type:"button",id:"start-speed-test",variant:se&&null!==m&&!p?"callAction":"regular",disabled:""===V.trim()||""===v.trim()||p||!se,label:le})})]}),(0,y.jsx)(c.rjZ,{container:!0,children:(0,y.jsx)(c.rjZ,{item:!0,xs:12,children:(0,y.jsx)(i.Fragment,{children:(0,y.jsx)(c.rjZ,{item:!0,xs:12,children:null!==m&&(0,y.jsx)(i.Fragment,{children:(0,y.jsx)(S,{results:m,start:p})})})})})})]}),!p&&!m&&se&&(0,y.jsxs)(i.Fragment,{children:[(0,y.jsx)("br",{}),(0,y.jsx)(c.KfX,{title:"During the speed test all your production traffic will be temporarily suspended.",iconComponent:(0,y.jsx)(c.e6P,{}),help:(0,y.jsx)(i.Fragment,{})})]})]}):(0,y.jsx)(Z.Z,{iconComponent:(0,y.jsx)(c.QBB,{}),entity:"Speedtest"})]})]})}},31460:function(e,t,n){"use strict";var r=n(4942),o=n(72791),i=n(57689),s=n(29945),l=n(80184);t.Z=function(e){var t=e.compactMode,n=void 0!==t&&t,a=(0,i.s0)(),c=(0,l.jsx)(s.zxk,{id:"go-to-register",type:"submit",variant:"callAction",color:"primary",onClick:function(){return a("/support/register")},children:"Register your Cluster"}),d="Please use your MinIO Subscription Network login credentials to register this cluster and enable this feature.";return n?(0,l.jsxs)(o.Fragment,{children:[(0,l.jsx)(s.rjZ,{sx:{"& div.leftItems":{marginBottom:0}},children:(0,l.jsx)(s.KfX,{title:(0,l.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",flexGrow:1},children:[(0,l.jsx)("span",{children:d})," ",c]}),iconComponent:(0,l.jsx)(s.e6P,{}),help:null})}),(0,l.jsx)("br",{})]}):(0,l.jsx)(s.xuv,{sx:(0,r.Z)({padding:"25px",border:"1px solid #eaeaea",display:"flex",alignItems:"center",justifyContent:"center",flexFlow:"row",marginBottom:"15px"},"@media (max-width: ".concat(s.Egj.sm,"px)"),{flexFlow:"column"}),children:(0,l.jsxs)(s.rjZ,{container:!0,children:[(0,l.jsx)(s.rjZ,{item:!0,xs:12,children:(0,l.jsx)(s.xuv,{sx:{marginRight:"8px",fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center","& .min-icon":{width:"83px",height:"14px",marginLeft:"5px",marginRight:"5px"}},children:"Register your cluster"})}),(0,l.jsx)(s.rjZ,{item:!0,xs:12,children:(0,l.jsx)(s.xuv,{sx:(0,r.Z)({display:"flex",flexFlow:"row"},"@media (max-width: ".concat(s.Egj.sm,"px)"),{flexFlow:"column"}),children:(0,l.jsxs)(s.xuv,{sx:{display:"flex",flexFlow:"column",flex:"2"},children:[(0,l.jsx)(s.xuv,{sx:{fontSize:"16px",display:"flex",flexFlow:"column",marginTop:"15px",marginBottom:"15px"},children:d}),(0,l.jsx)(s.xuv,{sx:{flex:"1"},children:(0,l.jsx)(s.xuv,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end"},children:c})})]})})})]})})}},76998:function(e,t,n){"use strict";var r=n(42458),o={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,i,s,l,a,c,d=!1;t||(t={}),n=t.debug||!1;try{if(s=r(),l=document.createRange(),a=document.getSelection(),(c=document.createElement("span")).textContent=e,c.ariaHidden="true",c.style.all="unset",c.style.position="fixed",c.style.top=0,c.style.clip="rect(0, 0, 0, 0)",c.style.whiteSpace="pre",c.style.webkitUserSelect="text",c.style.MozUserSelect="text",c.style.msUserSelect="text",c.style.userSelect="text",c.addEventListener("copy",(function(r){if(r.stopPropagation(),t.format)if(r.preventDefault(),"undefined"===typeof r.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var i=o[t.format]||o.default;window.clipboardData.setData(i,e)}else r.clipboardData.clearData(),r.clipboardData.setData(t.format,e);t.onCopy&&(r.preventDefault(),t.onCopy(r.clipboardData))})),document.body.appendChild(c),l.selectNodeContents(c),a.addRange(l),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");d=!0}catch(u){n&&console.error("unable to copy using execCommand: ",u),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),d=!0}catch(u){n&&console.error("unable to copy using clipboardData: ",u),n&&console.error("falling back to prompt"),i=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(i,e)}}finally{a&&("function"==typeof a.removeRange?a.removeRange(l):a.removeAllRanges()),c&&document.body.removeChild(c),s()}return d}},94210:function(e){var t=function(){if("object"===typeof self&&self)return self;if("object"===typeof window&&window)return window;throw new Error("Unable to resolve global `this`")};e.exports=function(){if(this)return this;if("object"===typeof globalThis&&globalThis)return globalThis;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch(e){return t()}try{return __global__||t()}finally{delete Object.prototype.__global__}}()},568:function(e,t,n){"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var o=l(n(72791)),i=l(n(76998)),s=["text","onCopy","options","children"];function l(e){return e&&e.__esModule?e:{default:e}}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function u(e,t){for(var n=0;n.\n\nimport React from \"react\";\nimport { HelpBox, Box, Grid, breakPoints } from \"mds\";\n\ninterface IDistributedOnly {\n iconComponent: any;\n entity: string;\n}\n\nconst DistributedOnly = ({ iconComponent, entity }: IDistributedOnly) => {\n return (\n \n \n \n \n This feature is not available for a single-disk setup. \n \n \n Please deploy a server in{\" \"}\n \n Distributed Mode\n {\" \"}\n to use this feature.\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 .\n\nimport React, { Fragment } from \"react\";\nimport { Button, CodeEditor, CopyIcon } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n onChange: (value: string) => any;\n editorHeight?: string | number;\n}\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n onChange,\n editorHeight = 250,\n}: ICodeWrapper) => {\n return (\n onChange(value)}\n mode={mode}\n tooltip={tooltip}\n editorHeight={editorHeight}\n label={label}\n helpTools={\n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n }\n />\n );\n};\n\nexport default CodeMirrorWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { SelectorType } from \"mds\";\nimport { Menu, MenuItem } from \"@mui/material\";\n\ninterface IInputUnitBox {\n classes: any;\n id: string;\n unitSelected: string;\n unitsList: SelectorType[];\n disabled?: boolean;\n onUnitChange?: (newValue: string) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonTrigger: {\n border: \"#F0F2F2 1px solid\",\n borderRadius: 3,\n color: \"#838383\",\n backgroundColor: \"#fff\",\n fontSize: 12,\n },\n });\n\nconst InputUnitMenu = ({\n classes,\n id,\n unitSelected,\n unitsList,\n disabled = false,\n onUnitChange,\n}: IInputUnitBox) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const open = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleClose = (newUnit: string) => {\n setAnchorEl(null);\n if (newUnit !== \"\" && onUnitChange) {\n onUnitChange(newUnit);\n }\n };\n\n return (\n \n \n {unitSelected}\n \n {\n handleClose(\"\");\n }}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"center\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"center\",\n }}\n >\n {unitsList.map((unit) => (\n handleClose(unit.value)}\n key={`itemUnit-${unit.value}-${unit.label}`}\n >\n {unit.label}\n \n ))}\n \n \n );\n};\n\nexport default withStyles(styles)(InputUnitMenu);\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 styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { calculateBytes } from \"../../../common/utils\";\n\nconst SpeedTestUnitBase = styled.table(({ theme }) => ({\n \"& .objectGeneralTitle\": {\n lineHeight: 1,\n fontSize: 50,\n color: get(theme, \"mutedText\", \"#87888d\"),\n },\n \"& .generalUnit\": {\n color: get(theme, \"fontColor\", \"#000\"),\n fontSize: 12,\n fontWeight: \"bold\",\n },\n \"& .testUnitRes\": {\n fontSize: 60,\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n fontWeight: \"bold\",\n textAlign: \"right\",\n },\n \"& .metricValContainer\": {\n lineHeight: 1,\n verticalAlign: \"bottom\",\n },\n \"& .objectsUnitRes\": {\n fontSize: 22,\n marginTop: 6,\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontWeight: \"bold\",\n textAlign: \"right\",\n },\n \"& .objectsUnit\": {\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontSize: 16,\n fontWeight: \"bold\",\n },\n \"& .iconTd\": {\n verticalAlign: \"bottom\",\n },\n}));\n\nconst SpeedTestUnit = ({\n title,\n icon,\n throughput,\n objects,\n}: {\n title: any;\n icon: any;\n throughput: string;\n objects: number;\n}) => {\n const avg = calculateBytes(throughput);\n\n let total = \"0\";\n let unit = \"\";\n\n if (avg.total !== 0) {\n total = avg.total.toString();\n unit = `${avg.unit}/s`;\n }\n\n return (\n \n \n {title}\n {icon}\n \n \n {total}\n {unit}\n \n \n {objects}\n \n {objects !== 0 && \"Objs/S\"}\n \n \n \n );\n};\nexport default SpeedTestUnit;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport get from \"lodash/get\";\nimport {\n Button,\n ComputerLineIcon,\n DownloadIcon,\n DownloadStatIcon,\n JSONIcon,\n StorageIcon,\n UploadStatIcon,\n VersionIcon,\n Grid,\n Box,\n} from \"mds\";\nimport { IndvServerMetric, SpeedTestResponse, STServer } from \"./types\";\nimport { calculateBytes, prettyNumber } from \"../../../common/utils\";\nimport { Area, AreaChart, CartesianGrid, ResponsiveContainer } from \"recharts\";\nimport { cleanMetrics } from \"./utils\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport SpeedTestUnit from \"./SpeedTestUnit\";\nimport styled from \"styled-components\";\n\nconst STResultsContainer = styled.div(({ theme }) => ({\n \"& .actionButtons\": {\n textAlign: \"right\",\n },\n \"& .descriptorLabel\": {\n fontWeight: \"bold\",\n fontSize: 14,\n },\n \"& .resultsContainer\": {\n backgroundColor: get(theme, \"boxBackground\", \"#FBFAFA\"),\n borderTop: `${get(theme, \"borderColor\", \"#E2E2E2\")} 1px solid`,\n marginTop: 30,\n padding: 25,\n },\n \"& .resultsIcon\": {\n display: \"flex\",\n alignItems: \"center\",\n \"& svg\": {\n fill: get(theme, `screenTitle.iconColor`, \"#07193E\"),\n },\n },\n \"& .detailedItem\": {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n },\n \"& .detailedVersion\": {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n },\n \"& .serversTable\": {\n width: \"100%\",\n marginTop: 15,\n \"& thead > tr > th\": {\n textAlign: \"left\",\n padding: 15,\n fontSize: 14,\n fontWeight: \"bold\",\n },\n \"& tbody > tr\": {\n \"&:last-of-type\": {\n \"& > td\": {\n borderBottom: `${get(theme, \"borderColor\", \"#E2E2E2\")} 1px solid`,\n },\n },\n \"& > td\": {\n borderTop: `${get(theme, \"borderColor\", \"#E2E2E2\")} 1px solid`,\n padding: 15,\n fontSize: 14,\n \"&:first-of-type\": {\n borderLeft: `${get(theme, \"borderColor\", \"#E2E2E2\")} 1px solid`,\n },\n \"&:last-of-type\": {\n borderRight: `${get(theme, \"borderColor\", \"#E2E2E2\")} 1px solid`,\n },\n },\n },\n },\n \"& .serverIcon\": {\n width: 55,\n },\n \"& .serverValue\": {\n width: 140,\n },\n \"& .serverHost\": {\n maxWidth: 540,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n \"& .tableOverflow\": {\n overflowX: \"auto\",\n paddingBottom: 15,\n },\n \"& .objectGeneral\": {\n marginTop: 15,\n },\n \"& .download\": {\n \"& .min-icon\": {\n width: 35,\n height: 35,\n color: get(theme, \"signalColors.good\", \"#4CCB92\"),\n },\n },\n \"& .upload\": {\n \"& .min-icon\": {\n width: 35,\n height: 35,\n color: get(theme, \"signalColors.info\", \"#2781B0\"),\n },\n },\n \"& .versionIcon\": {\n color: get(theme, `screenTitle.iconColor`, \"#07193E\"),\n marginRight: 20,\n },\n}));\n\ninterface ISTResults {\n results: SpeedTestResponse[];\n start: boolean;\n}\n\nconst STResults = ({ results, start }: ISTResults) => {\n const [jsonView, setJsonView] = useState(false);\n\n const finalRes = results[results.length - 1] || [];\n\n const getServers: STServer[] = get(finalRes, \"GETStats.servers\", []) || [];\n const putServers: STServer[] = get(finalRes, \"PUTStats.servers\", []) || [];\n\n const getThroughput = get(finalRes, \"GETStats.throughputPerSec\", 0);\n const getObjects = get(finalRes, \"GETStats.objectsPerSec\", 0);\n\n const putThroughput = get(finalRes, \"PUTStats.throughputPerSec\", 0);\n const putObjects = get(finalRes, \"PUTStats.objectsPerSec\", 0);\n\n let statJoin: IndvServerMetric[] = [];\n\n getServers.forEach((item) => {\n const hostName = item.endpoint;\n const putMetric = putServers.find((item) => item.endpoint === hostName);\n\n let itemJoin: IndvServerMetric = {\n getUnit: \"-\",\n getValue: \"N/A\",\n host: item.endpoint,\n putUnit: \"-\",\n putValue: \"N/A\",\n };\n\n if (item.err && item.err !== \"\") {\n itemJoin.getError = item.err;\n itemJoin.getUnit = \"-\";\n itemJoin.getValue = \"N/A\";\n } else {\n const niceGet = calculateBytes(item.throughputPerSec.toString());\n\n itemJoin.getUnit = niceGet.unit;\n itemJoin.getValue = niceGet.total.toString();\n }\n\n if (putMetric) {\n if (putMetric.err && putMetric.err !== \"\") {\n itemJoin.putError = putMetric.err;\n itemJoin.putUnit = \"-\";\n itemJoin.putValue = \"N/A\";\n } else {\n const nicePut = calculateBytes(putMetric.throughputPerSec.toString());\n\n itemJoin.putUnit = nicePut.unit;\n itemJoin.putValue = nicePut.total.toString();\n }\n }\n\n statJoin.push(itemJoin);\n });\n\n const downloadResults = () => {\n const date = new Date();\n let element = document.createElement(\"a\");\n element.setAttribute(\n \"href\",\n \"data:text/plain;charset=utf-8,\" + JSON.stringify(finalRes),\n );\n element.setAttribute(\n \"download\",\n `speedtest_results-${date.toISOString()}.log`,\n );\n\n element.style.display = \"none\";\n document.body.appendChild(element);\n\n element.click();\n\n document.body.removeChild(element);\n };\n\n const toggleJSONView = () => {\n setJsonView(!jsonView);\n };\n\n const finalResJSON = finalRes ? JSON.stringify(finalRes, null, 4) : \"\";\n const clnMetrics = cleanMetrics(results);\n\n return (\n \n \n \n \n \n \n \n \n }\n title={\"GET\"}\n throughput={`${getThroughput}`}\n objects={getObjects}\n />\n \n \n \n \n \n }\n title={\"PUT\"}\n throughput={`${putThroughput}`}\n objects={putObjects}\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 {clnMetrics.length > 1 && (\n \n \n \n {start ? (\n Preliminar Results:\n ) : (\n \n {jsonView ? \"JSON Results:\" : \"Detailed Results:\"}\n \n )}\n \n \n {!start && (\n \n }\n />\n  \n }\n />\n \n )}\n \n \n \n \n {jsonView ? (\n \n {}} />\n \n ) : (\n \n \n \n \n \n Nodes: {finalRes.servers}\n \n \n Drives: {finalRes.disks}\n \n \n Concurrent: {finalRes.concurrent}\n \n \n \n \n {\" \"}\n MinIO VERSION {finalRes.version}\n \n \n \n \n \n Servers\n GET\n PUT\n \n \n \n {statJoin.map((stats, index) => (\n \n \n \n \n {stats.host}\n {stats.getError && stats.getError !== \"\" ? (\n {stats.getError}\n ) : (\n \n \n {prettyNumber(parseFloat(stats.getValue))}\n  \n {stats.getUnit}/s.\n \n \n )}\n {stats.putError && stats.putError !== \"\" ? (\n {stats.putError}\n ) : (\n \n \n {prettyNumber(parseFloat(stats.putValue))}\n  \n {stats.putUnit}/s.\n \n \n )}\n \n ))}\n \n \n \n \n )}\n \n \n
    \n )}\n \n );\n};\n\nexport default STResults;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { SpeedTestResponse } from \"./types\";\n\nexport const cleanMetrics = (results: SpeedTestResponse[]) => {\n const cleanRes = results.filter(\n (item) => item.version !== \"0\" && item.disks !== 0,\n );\n\n const states = cleanRes.map((itemRes) => {\n return {\n get: itemRes.GETStats?.throughputPerSec || 0,\n put: itemRes.PUTStats?.throughputPerSec || 0,\n };\n });\n\n return [{ get: 0, put: 0 }, ...states];\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { IMessageEvent, w3cwebsocket as W3CWebSocket } from \"websocket\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n Box,\n Button,\n Grid,\n HelpBox,\n InputBox,\n Loader,\n PageLayout,\n SpeedtestIcon,\n WarnIcon,\n} from \"mds\";\nimport { DateTime } from \"luxon\";\nimport STResults from \"./STResults\";\nimport ProgressBarWrapper from \"../Common/ProgressBarWrapper/ProgressBarWrapper\";\nimport InputUnitMenu from \"../Common/FormComponents/InputUnitMenu/InputUnitMenu\";\nimport DistributedOnly from \"../Common/DistributedOnly/DistributedOnly\";\nimport RegisterCluster from \"../Support/RegisterCluster\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport { SecureComponent } from \"../../../common/SecureComponent\";\nimport { selDistSet, setHelpName } from \"../../../systemSlice\";\nimport { registeredCluster } from \"../../../config\";\nimport { useAppDispatch } from \"../../../store\";\nimport { wsProtocol } from \"../../../utils/wsUtils\";\nimport { SpeedTestResponse } from \"./types\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_SCOPES,\n} from \"../../../common/SecureComponent/permissions\";\n\nconst Speedtest = () => {\n const distributedSetup = useSelector(selDistSet);\n const navigate = useNavigate();\n\n const [start, setStart] = useState(false);\n const [currStatus, setCurrStatus] = useState(\n null,\n );\n const [size, setSize] = useState(\"64\");\n const [sizeUnit, setSizeUnit] = useState(\"MB\");\n const [duration, setDuration] = useState(\"10\");\n const [topDate, setTopDate] = useState(0);\n const [currentValue, setCurrentValue] = useState(0);\n const [totalSeconds, setTotalSeconds] = useState(0);\n const [speedometerValue, setSpeedometerValue] = useState(0);\n const clusterRegistered = registeredCluster();\n\n useEffect(() => {\n // begin watch if bucketName in bucketList and start pressed\n if (start) {\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/speedtest?&size=${size}${sizeUnit}&duration=${duration}s`,\n );\n\n const baseDate = DateTime.now();\n\n const currentTime = baseDate.toUnixInteger() / 1000;\n\n const incrementDate =\n baseDate.plus({ seconds: parseInt(\"10\") * 2 }).toUnixInteger() / 1000;\n\n const totalSeconds = (incrementDate - currentTime) / 1000;\n\n setTopDate(incrementDate);\n setCurrentValue(currentTime);\n setTotalSeconds(totalSeconds);\n\n let interval: any | null = null;\n if (c !== null) {\n c.onopen = () => {\n console.log(\"WebSocket Client Connected\");\n c.send(\"ok\");\n interval = setInterval(() => {\n c.send(\"ok\");\n }, 10 * 1000);\n };\n c.onmessage = (message: IMessageEvent) => {\n const data: SpeedTestResponse = JSON.parse(message.data.toString());\n\n setCurrStatus((prevStatus) => {\n let prSt: SpeedTestResponse[] = [];\n if (prevStatus) {\n prSt = [...prevStatus];\n }\n\n const insertData = data.servers !== 0 ? [data] : [];\n return [...prSt, ...insertData];\n });\n\n const currTime = DateTime.now().toUnixInteger() / 1000;\n setCurrentValue(currTime);\n };\n c.onclose = () => {\n clearInterval(interval);\n console.log(\"connection closed by server\");\n // reset start status\n setStart(false);\n };\n return () => {\n // close websocket on useEffect cleanup\n c.close(1000);\n clearInterval(interval);\n console.log(\"closing websockets\");\n };\n }\n } else {\n // reset start status\n setStart(false);\n }\n }, [size, sizeUnit, start, duration]);\n\n useEffect(() => {\n const actualSeconds = (topDate - currentValue) / 1000;\n\n let percToDisplay = 100 - (actualSeconds * 100) / totalSeconds;\n\n if (percToDisplay > 100) {\n percToDisplay = 100;\n }\n\n setSpeedometerValue(percToDisplay);\n }, [start, currentValue, topDate, totalSeconds]);\n\n const stoppedLabel = currStatus !== null ? \"Retest\" : \"Start\";\n\n const buttonLabel = start ? \"Start\" : stoppedLabel;\n\n const startSpeedtestButton = () => {\n if (!clusterRegistered) {\n navigate(\"/support/register\");\n return;\n }\n\n setCurrStatus(null);\n setStart(true);\n };\n\n const dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(setHelpName(\"performance\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n } />\n\n \n {!clusterRegistered && }\n {!distributedSetup ? (\n }\n entity={\"Speedtest\"}\n />\n ) : (\n \n \n \n \n \n {start ? (\n \n Speedtest in progress...\n \n \n ) : (\n \n {currStatus && !start ? (\n Speed Test results:\n ) : (\n Performance test\n )}\n \n )}\n \n \n \n \n \n \n
    \n {\n setSize(e.target.value);\n }}\n noLabelMinWidth={true}\n value={size}\n disabled={start || !clusterRegistered}\n overlayObject={\n \n }\n />\n
    \n
    \n \n
    \n {\n if (e.target.validity.valid) {\n setDuration(e.target.value);\n }\n }}\n noLabelMinWidth={true}\n value={duration}\n disabled={start || !clusterRegistered}\n overlayObject={\n {}}\n unitSelected={\"s\"}\n unitsList={[{ label: \"s\", value: \"s\" }]}\n disabled={start || !clusterRegistered}\n />\n }\n pattern={\"[0-9]*\"}\n />\n
    \n
    \n \n \n \n \n \n \n \n \n {currStatus !== null && (\n \n \n \n )}\n \n \n \n \n \n\n {!start && !currStatus && clusterRegistered && (\n \n
    \n }\n help={}\n />\n \n )}\n \n )}\n
    \n
    \n );\n};\n\nexport default Speedtest;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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, breakPoints, Button, Grid, HelpBox, WarnIcon } from \"mds\";\n\ninterface IRegisterCluster {\n compactMode?: boolean;\n}\n\nconst RegisterCluster = ({ compactMode = false }: IRegisterCluster) => {\n const navigate = useNavigate();\n\n const redirectButton = (\n navigate(\"/support/register\")}\n >\n Register your Cluster\n \n );\n\n const registerMessage =\n \"Please use your MinIO Subscription Network login credentials to register this cluster and enable this feature.\";\n\n if (compactMode) {\n return (\n \n \n \n {registerMessage} {redirectButton}\n \n }\n iconComponent={}\n help={null}\n />\n \n
    \n
    \n );\n }\n\n return (\n \n \n \n \n Register your cluster\n \n \n \n \n \n \n {registerMessage}\n \n \n \n {redirectButton}\n \n \n \n \n \n \n \n );\n};\n\nexport default RegisterCluster;\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","var naiveFallback = function () {\n\tif (typeof self === \"object\" && self) return self;\n\tif (typeof window === \"object\" && window) return window;\n\tthrow new Error(\"Unable to resolve global `this`\");\n};\n\nmodule.exports = (function () {\n\tif (this) return this;\n\n\t// Unexpected strict mode (may happen if e.g. bundled into ESM module)\n\n\t// Fallback to standard globalThis if available\n\tif (typeof globalThis === \"object\" && globalThis) return globalThis;\n\n\t// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis\n\t// In all ES5+ engines global object inherits from Object.prototype\n\t// (if you approached one that doesn't please report)\n\ttry {\n\t\tObject.defineProperty(Object.prototype, \"__global__\", {\n\t\t\tget: function () { return this; },\n\t\t\tconfigurable: true\n\t\t});\n\t} catch (error) {\n\t\t// Unfortunate case of updates to Object.prototype being restricted\n\t\t// via preventExtensions, seal or freeze\n\t\treturn naiveFallback();\n\t}\n\ttry {\n\t\t// Safari case (window.__global__ works, but __global__ does not)\n\t\tif (!__global__) return naiveFallback();\n\t\treturn __global__;\n\t} finally {\n\t\tdelete Object.prototype.__global__;\n\t}\n})();\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n","var _globalThis;\nif (typeof globalThis === 'object') {\n\t_globalThis = globalThis;\n} else {\n\ttry {\n\t\t_globalThis = require('es5-ext/global');\n\t} catch (error) {\n\t} finally {\n\t\tif (!_globalThis && typeof window !== 'undefined') { _globalThis = window; }\n\t\tif (!_globalThis) { throw new Error('Could not determine global this'); }\n\t}\n}\n\nvar NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;\nvar websocket_version = require('./version');\n\n\n/**\n * Expose a W3C WebSocket class with just one or two arguments.\n */\nfunction W3CWebSocket(uri, protocols) {\n\tvar native_instance;\n\n\tif (protocols) {\n\t\tnative_instance = new NativeWebSocket(uri, protocols);\n\t}\n\telse {\n\t\tnative_instance = new NativeWebSocket(uri);\n\t}\n\n\t/**\n\t * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket\n\t * class). Since it is an Object it will be returned as it is when creating an\n\t * instance of W3CWebSocket via 'new W3CWebSocket()'.\n\t *\n\t * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2\n\t */\n\treturn native_instance;\n}\nif (NativeWebSocket) {\n\t['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) {\n\t\tObject.defineProperty(W3CWebSocket, prop, {\n\t\t\tget: function() { return NativeWebSocket[prop]; }\n\t\t});\n\t});\n}\n\n/**\n * Module exports.\n */\nmodule.exports = {\n 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null,\n 'version' : websocket_version\n};\n","module.exports = require('../package.json').version;\n"],"names":["_ref","iconComponent","entity","_jsx","Grid","container","children","item","xs","HelpBox","title","concat","help","_jsxs","Box","sx","_defineProperty","fontSize","breakPoints","sm","display","flexFlow","href","target","rel","value","_ref$label","label","_ref$tooltip","tooltip","_ref$mode","mode","onChange","_ref$editorHeight","editorHeight","CodeEditor","helpTools","Fragment","TooltipWrapper","CopyToClipboard","text","Button","type","id","icon","CopyIcon","color","variant","withStyles","theme","createStyles","buttonTrigger","border","borderRadius","backgroundColor","classes","unitSelected","unitsList","_ref$disabled","disabled","onUnitChange","_React$useState","React","_React$useState2","_slicedToArray","anchorEl","setAnchorEl","open","Boolean","handleClose","newUnit","undefined","onClick","event","currentTarget","className","Menu","onClose","anchorOrigin","vertical","horizontal","transformOrigin","map","unit","MenuItem","SpeedTestUnitBase","styled","table","lineHeight","get","fontWeight","textAlign","verticalAlign","marginTop","_ref2","throughput","objects","avg","calculateBytes","total","toString","STResultsContainer","div","borderTop","padding","alignItems","fill","justifyContent","width","borderBottom","borderLeft","borderRight","maxWidth","overflow","textOverflow","whiteSpace","overflowX","paddingBottom","height","marginRight","results","start","_useState","useState","_useState2","jsonView","setJsonView","finalRes","length","getServers","putServers","getThroughput","getObjects","putThroughput","putObjects","statJoin","forEach","hostName","endpoint","putMetric","find","itemJoin","getUnit","getValue","host","putUnit","putValue","err","getError","niceGet","throughputPerSec","putError","nicePut","push","finalResJSON","JSON","stringify","clnMetrics","states","filter","version","disks","itemRes","_itemRes$GETStats","_itemRes$PUTStats","GETStats","put","PUTStats","_toConsumableArray","cleanMetrics","md","lg","SpeedTestUnit","DownloadStatIcon","UploadStatIcon","ResponsiveContainer","AreaChart","data","x1","y1","x2","y2","offset","stopColor","stopOpacity","CartesianGrid","strokeDasharray","strokeWidth","strokeOpacity","stroke","Area","dataKey","fillOpacity","dot","gap","date","Date","element","document","createElement","setAttribute","toISOString","style","body","appendChild","click","removeChild","DownloadIcon","JSONIcon","withBorders","useBackground","CodeMirrorWrapper","ComputerLineIcon","servers","concurrent","VersionIcon","cellSpacing","cellPadding","colSpan","stats","index","StorageIcon","prettyNumber","parseFloat","distributedSetup","useSelector","selDistSet","navigate","useNavigate","setStart","_useState3","_useState4","currStatus","setCurrStatus","_useState5","_useState6","size","setSize","_useState7","_useState8","sizeUnit","setSizeUnit","_useState9","_useState10","duration","setDuration","_useState11","_useState12","topDate","setTopDate","_useState13","_useState14","currentValue","setCurrentValue","_useState15","_useState16","totalSeconds","setTotalSeconds","_useState17","_useState18","speedometerValue","setSpeedometerValue","clusterRegistered","registeredCluster","useEffect","url","URL","window","location","port","baseUrl","baseURI","pathname","wsProt","wsProtocol","protocol","c","W3CWebSocket","hostname","baseDate","DateTime","now","currentTime","toUnixInteger","incrementDate","plus","seconds","parseInt","interval","onopen","console","log","send","setInterval","onmessage","message","parse","prevStatus","prSt","insertData","currTime","onclose","clearInterval","close","percToDisplay","buttonLabel","dispatch","useAppDispatch","setHelpName","PageHeaderWrapper","actions","HelpMenu","PageLayout","RegisterCluster","compactMode","SecureComponent","scopes","IAM_SCOPES","ADMIN_HEAL","resource","CONSOLE_UI_RESOURCE","marginBottom","Loader","ProgressBarWrapper","ready","indeterminate","marginLeft","InputBox","name","e","noLabelMinWidth","overlayObject","InputUnitMenu","validity","valid","pattern","trim","STResults","WarnIcon","DistributedOnly","SpeedtestIcon","_ref$compactMode","redirectButton","registerMessage","flexGrow","flex","deselectCurrent","require","clipboardToIE11Formatting","module","exports","options","debug","reselectPrevious","range","selection","mark","success","createRange","getSelection","textContent","ariaHidden","all","position","top","clip","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","format","preventDefault","clipboardData","warn","clearData","setData","onCopy","selectNodeContents","addRange","execCommand","Error","error","copyKey","test","navigator","userAgent","replace","prompt","removeRange","removeAllRanges","naiveFallback","self","this","globalThis","Object","defineProperty","prototype","configurable","__global__","_typeof","obj","Symbol","iterator","constructor","_react","_interopRequireDefault","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","apply","_objectSpread","i","arguments","source","key","getOwnPropertyDescriptors","defineProperties","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","call","_defineProperties","props","descriptor","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","valueOf","_isNativeReflectConstruct","result","Super","_getPrototypeOf","NewTarget","TypeError","_assertThisInitialized","_possibleConstructorReturn","ReferenceError","getPrototypeOf","_React$PureComponent","subClass","superClass","create","_inherits","Constructor","protoProps","staticProps","_super","_this","instance","_classCallCheck","_len","args","Array","_key","_this$props","elem","Children","only","_this$props2","cloneElement","PureComponent","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus","_globalThis","NativeWebSocket","WebSocket","MozWebSocket","websocket_version","uri","protocols","prop"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/6008.cdca3087.chunk.js b/portal-ui/build/static/js/6008.10fb9564.chunk.js similarity index 82% rename from portal-ui/build/static/js/6008.cdca3087.chunk.js rename to portal-ui/build/static/js/6008.10fb9564.chunk.js index 229ffbf4fa..136689221d 100644 --- a/portal-ui/build/static/js/6008.cdca3087.chunk.js +++ b/portal-ui/build/static/js/6008.10fb9564.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[6008],{89673:function(e,r,t){t.d(r,{Z:function(){return S}});var n=t(84506),o=t(29439),a=t(4942),i=t(63366),s=t(87462),d=t(72791),l=(t(57441),t(63733)),c=t(94419),u=t(66934),p=t(31402),f=t(56125),m=t(35527),v=t(27318),Z=t(98278),h=t(75878),x=t(21217);function b(e){return(0,x.Z)("MuiAccordion",e)}var g=(0,h.Z)("MuiAccordion",["root","rounded","expanded","disabled","gutters","region"]),w=t(80184),y=["children","className","defaultExpanded","disabled","disableGutters","expanded","onChange","square","TransitionComponent","TransitionProps"],R=(0,u.ZP)(m.Z,{name:"MuiAccordion",slot:"Root",overridesResolver:function(e,r){var t=e.ownerState;return[(0,a.Z)({},"& .".concat(g.region),r.region),r.root,!t.square&&r.rounded,!t.disableGutters&&r.gutters]}})((function(e){var r,t=e.theme,n={duration:t.transitions.duration.shortest};return r={position:"relative",transition:t.transitions.create(["margin"],n),overflowAnchor:"none","&:before":{position:"absolute",left:0,top:-1,right:0,height:1,content:'""',opacity:1,backgroundColor:(t.vars||t).palette.divider,transition:t.transitions.create(["opacity","background-color"],n)},"&:first-of-type":{"&:before":{display:"none"}}},(0,a.Z)(r,"&.".concat(g.expanded),{"&:before":{opacity:0},"&:first-of-type":{marginTop:0},"&:last-of-type":{marginBottom:0},"& + &":{"&:before":{display:"none"}}}),(0,a.Z)(r,"&.".concat(g.disabled),{backgroundColor:(t.vars||t).palette.action.disabledBackground}),r}),(function(e){var r=e.theme,t=e.ownerState;return(0,s.Z)({},!t.square&&{borderRadius:0,"&:first-of-type":{borderTopLeftRadius:(r.vars||r).shape.borderRadius,borderTopRightRadius:(r.vars||r).shape.borderRadius},"&:last-of-type":{borderBottomLeftRadius:(r.vars||r).shape.borderRadius,borderBottomRightRadius:(r.vars||r).shape.borderRadius,"@supports (-ms-ime-align: auto)":{borderBottomLeftRadius:0,borderBottomRightRadius:0}}},!t.disableGutters&&(0,a.Z)({},"&.".concat(g.expanded),{margin:"16px 0"}))})),S=d.forwardRef((function(e,r){var t=(0,p.Z)({props:e,name:"MuiAccordion"}),a=t.children,u=t.className,m=t.defaultExpanded,h=void 0!==m&&m,x=t.disabled,g=void 0!==x&&x,S=t.disableGutters,C=void 0!==S&&S,k=t.expanded,M=t.onChange,E=t.square,A=void 0!==E&&E,N=t.TransitionComponent,z=void 0===N?f.Z:N,q=t.TransitionProps,I=(0,i.Z)(t,y),P=(0,Z.Z)({controlled:k,default:h,name:"Accordion",state:"expanded"}),W=(0,o.Z)(P,2),j=W[0],G=W[1],L=d.useCallback((function(e){G(!j),M&&M(e,!j)}),[j,M,G]),T=d.Children.toArray(a),F=(0,n.Z)(T),D=F[0],V=F.slice(1),H=d.useMemo((function(){return{expanded:j,disabled:g,disableGutters:C,toggle:L}}),[j,g,C,L]),B=(0,s.Z)({},t,{square:A,disabled:g,disableGutters:C,expanded:j}),O=function(e){var r=e.classes,t={root:["root",!e.square&&"rounded",e.expanded&&"expanded",e.disabled&&"disabled",!e.disableGutters&&"gutters"],region:["region"]};return(0,c.Z)(t,b,r)}(B);return(0,w.jsxs)(R,(0,s.Z)({className:(0,l.Z)(O.root,u),ref:r,ownerState:B,square:A},I,{children:[(0,w.jsx)(v.Z.Provider,{value:H,children:D}),(0,w.jsx)(z,(0,s.Z)({in:j,timeout:"auto"},q,{children:(0,w.jsx)("div",{"aria-labelledby":D.props.id,id:D.props["aria-controls"],role:"region",className:O.region,children:V})}))]}))}))},27318:function(e,r,t){var n=t(72791).createContext({});r.Z=n},3721:function(e,r,t){t.d(r,{Z:function(){return Z}});var n=t(87462),o=t(63366),a=t(72791),i=t(63733),s=t(94419),d=t(66934),l=t(31402),c=t(75878),u=t(21217);function p(e){return(0,u.Z)("MuiAccordionDetails",e)}(0,c.Z)("MuiAccordionDetails",["root"]);var f=t(80184),m=["className"],v=(0,d.ZP)("div",{name:"MuiAccordionDetails",slot:"Root",overridesResolver:function(e,r){return r.root}})((function(e){return{padding:e.theme.spacing(1,2,2)}})),Z=a.forwardRef((function(e,r){var t=(0,l.Z)({props:e,name:"MuiAccordionDetails"}),a=t.className,d=(0,o.Z)(t,m),c=t,u=function(e){var r=e.classes;return(0,s.Z)({root:["root"]},p,r)}(c);return(0,f.jsx)(v,(0,n.Z)({className:(0,i.Z)(u.root,a),ref:r,ownerState:c},d))}))},55818:function(e,r,t){t.d(r,{Z:function(){return y}});var n=t(4942),o=t(63366),a=t(87462),i=t(72791),s=t(63733),d=t(94419),l=t(66934),c=t(31402),u=t(95080),p=t(27318),f=t(75878),m=t(21217);function v(e){return(0,m.Z)("MuiAccordionSummary",e)}var Z=(0,f.Z)("MuiAccordionSummary",["root","expanded","focusVisible","disabled","gutters","contentGutters","content","expandIconWrapper"]),h=t(80184),x=["children","className","expandIcon","focusVisibleClassName","onClick"],b=(0,l.ZP)(u.Z,{name:"MuiAccordionSummary",slot:"Root",overridesResolver:function(e,r){return r.root}})((function(e){var r,t=e.theme,o=e.ownerState,i={duration:t.transitions.duration.shortest};return(0,a.Z)((r={display:"flex",minHeight:48,padding:t.spacing(0,2),transition:t.transitions.create(["min-height","background-color"],i)},(0,n.Z)(r,"&.".concat(Z.focusVisible),{backgroundColor:(t.vars||t).palette.action.focus}),(0,n.Z)(r,"&.".concat(Z.disabled),{opacity:(t.vars||t).palette.action.disabledOpacity}),(0,n.Z)(r,"&:hover:not(.".concat(Z.disabled,")"),{cursor:"pointer"}),r),!o.disableGutters&&(0,n.Z)({},"&.".concat(Z.expanded),{minHeight:64}))})),g=(0,l.ZP)("div",{name:"MuiAccordionSummary",slot:"Content",overridesResolver:function(e,r){return r.content}})((function(e){var r=e.theme,t=e.ownerState;return(0,a.Z)({display:"flex",flexGrow:1,margin:"12px 0"},!t.disableGutters&&(0,n.Z)({transition:r.transitions.create(["margin"],{duration:r.transitions.duration.shortest})},"&.".concat(Z.expanded),{margin:"20px 0"}))})),w=(0,l.ZP)("div",{name:"MuiAccordionSummary",slot:"ExpandIconWrapper",overridesResolver:function(e,r){return r.expandIconWrapper}})((function(e){var r=e.theme;return(0,n.Z)({display:"flex",color:(r.vars||r).palette.action.active,transform:"rotate(0deg)",transition:r.transitions.create("transform",{duration:r.transitions.duration.shortest})},"&.".concat(Z.expanded),{transform:"rotate(180deg)"})})),y=i.forwardRef((function(e,r){var t=(0,c.Z)({props:e,name:"MuiAccordionSummary"}),n=t.children,l=t.className,u=t.expandIcon,f=t.focusVisibleClassName,m=t.onClick,Z=(0,o.Z)(t,x),y=i.useContext(p.Z),R=y.disabled,S=void 0!==R&&R,C=y.disableGutters,k=y.expanded,M=y.toggle,E=(0,a.Z)({},t,{expanded:k,disabled:S,disableGutters:C}),A=function(e){var r=e.classes,t=e.expanded,n=e.disabled,o=e.disableGutters,a={root:["root",t&&"expanded",n&&"disabled",!o&&"gutters"],focusVisible:["focusVisible"],content:["content",t&&"expanded",!o&&"contentGutters"],expandIconWrapper:["expandIconWrapper",t&&"expanded"]};return(0,d.Z)(a,v,r)}(E);return(0,h.jsxs)(b,(0,a.Z)({focusRipple:!1,disableRipple:!0,disabled:S,component:"div","aria-expanded":k,className:(0,s.Z)(A.root,l),focusVisibleClassName:(0,s.Z)(A.focusVisible,f),onClick:function(e){M&&M(e),m&&m(e)},ref:r,ownerState:E},Z,{children:[(0,h.jsx)(g,{className:A.content,ownerState:E,children:n}),u&&(0,h.jsx)(w,{className:A.expandIconWrapper,ownerState:E,children:u})]}))}))},56125:function(e,r,t){t.d(r,{Z:function(){return C}});var n=t(4942),o=t(63366),a=t(87462),i=t(72791),s=t(63733),d=t(18875),l=t(94419),c=t(66934),u=t(31402),p=t(81314),f=t(4999),m=t(13967),v=t(42071),Z=t(75878),h=t(21217);function x(e){return(0,h.Z)("MuiCollapse",e)}(0,Z.Z)("MuiCollapse",["root","horizontal","vertical","entered","hidden","wrapper","wrapperInner"]);var b=t(80184),g=["addEndListener","children","className","collapsedSize","component","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","orientation","style","timeout","TransitionComponent"],w=(0,c.ZP)("div",{name:"MuiCollapse",slot:"Root",overridesResolver:function(e,r){var t=e.ownerState;return[r.root,r[t.orientation],"entered"===t.state&&r.entered,"exited"===t.state&&!t.in&&"0px"===t.collapsedSize&&r.hidden]}})((function(e){var r=e.theme,t=e.ownerState;return(0,a.Z)({height:0,overflow:"hidden",transition:r.transitions.create("height")},"horizontal"===t.orientation&&{height:"auto",width:0,transition:r.transitions.create("width")},"entered"===t.state&&(0,a.Z)({height:"auto",overflow:"visible"},"horizontal"===t.orientation&&{width:"auto"}),"exited"===t.state&&!t.in&&"0px"===t.collapsedSize&&{visibility:"hidden"})})),y=(0,c.ZP)("div",{name:"MuiCollapse",slot:"Wrapper",overridesResolver:function(e,r){return r.wrapper}})((function(e){var r=e.ownerState;return(0,a.Z)({display:"flex",width:"100%"},"horizontal"===r.orientation&&{width:"auto",height:"100%"})})),R=(0,c.ZP)("div",{name:"MuiCollapse",slot:"WrapperInner",overridesResolver:function(e,r){return r.wrapperInner}})((function(e){var r=e.ownerState;return(0,a.Z)({width:"100%"},"horizontal"===r.orientation&&{width:"auto",height:"100%"})})),S=i.forwardRef((function(e,r){var t=(0,u.Z)({props:e,name:"MuiCollapse"}),c=t.addEndListener,Z=t.children,h=t.className,S=t.collapsedSize,C=void 0===S?"0px":S,k=t.component,M=t.easing,E=t.in,A=t.onEnter,N=t.onEntered,z=t.onEntering,q=t.onExit,I=t.onExited,P=t.onExiting,W=t.orientation,j=void 0===W?"vertical":W,G=t.style,L=t.timeout,T=void 0===L?p.x9.standard:L,F=t.TransitionComponent,D=void 0===F?d.ZP:F,V=(0,o.Z)(t,g),H=(0,a.Z)({},t,{orientation:j,collapsedSize:C}),B=function(e){var r=e.orientation,t=e.classes,n={root:["root","".concat(r)],entered:["entered"],hidden:["hidden"],wrapper:["wrapper","".concat(r)],wrapperInner:["wrapperInner","".concat(r)]};return(0,l.Z)(n,x,t)}(H),O=(0,m.Z)(),_=i.useRef(),J=i.useRef(null),K=i.useRef(),Q="number"===typeof C?"".concat(C,"px"):C,U="horizontal"===j,X=U?"width":"height";i.useEffect((function(){return function(){clearTimeout(_.current)}}),[]);var Y=i.useRef(null),$=(0,v.Z)(r,Y),ee=function(e){return function(r){if(e){var t=Y.current;void 0===r?e(t):e(t,r)}}},re=function(){return J.current?J.current[U?"clientWidth":"clientHeight"]:0},te=ee((function(e,r){J.current&&U&&(J.current.style.position="absolute"),e.style[X]=Q,A&&A(e,r)})),ne=ee((function(e,r){var t=re();J.current&&U&&(J.current.style.position="");var n=(0,f.C)({style:G,timeout:T,easing:M},{mode:"enter"}),o=n.duration,a=n.easing;if("auto"===T){var i=O.transitions.getAutoHeightDuration(t);e.style.transitionDuration="".concat(i,"ms"),K.current=i}else e.style.transitionDuration="string"===typeof o?o:"".concat(o,"ms");e.style[X]="".concat(t,"px"),e.style.transitionTimingFunction=a,z&&z(e,r)})),oe=ee((function(e,r){e.style[X]="auto",N&&N(e,r)})),ae=ee((function(e){e.style[X]="".concat(re(),"px"),q&&q(e)})),ie=ee(I),se=ee((function(e){var r=re(),t=(0,f.C)({style:G,timeout:T,easing:M},{mode:"exit"}),n=t.duration,o=t.easing;if("auto"===T){var a=O.transitions.getAutoHeightDuration(r);e.style.transitionDuration="".concat(a,"ms"),K.current=a}else e.style.transitionDuration="string"===typeof n?n:"".concat(n,"ms");e.style[X]=Q,e.style.transitionTimingFunction=o,P&&P(e)}));return(0,b.jsx)(D,(0,a.Z)({in:E,onEnter:te,onEntered:oe,onEntering:ne,onExit:ae,onExited:ie,onExiting:se,addEndListener:function(e){"auto"===T&&(_.current=setTimeout(e,K.current||0)),c&&c(Y.current,e)},nodeRef:Y,timeout:"auto"===T?null:T},V,{children:function(e,r){return(0,b.jsx)(w,(0,a.Z)({as:k,className:(0,s.Z)(B.root,h,{entered:B.entered,exited:!E&&"0px"===Q&&B.hidden}[e]),style:(0,a.Z)((0,n.Z)({},U?"minWidth":"minHeight",Q),G),ownerState:(0,a.Z)({},H,{state:e}),ref:$},r,{children:(0,b.jsx)(y,{ownerState:(0,a.Z)({},H,{state:e}),className:B.wrapper,ref:J,children:(0,b.jsx)(R,{ownerState:(0,a.Z)({},H,{state:e}),className:B.wrapperInner,children:Z})})}))}}))}));S.muiSupportAuto=!0;var C=S},93840:function(e,r,t){var n=t(72791).createContext(void 0);r.Z=n},76147:function(e,r,t){function n(e){var r=e.props,t=e.states,n=e.muiFormControl;return t.reduce((function(e,t){return e[t]=r[t],n&&"undefined"===typeof r[t]&&(e[t]=n[t]),e}),{})}t.d(r,{Z:function(){return n}})},52930:function(e,r,t){t.d(r,{Z:function(){return a}});var n=t(72791),o=t(93840);function a(){return n.useContext(o.Z)}},17133:function(e,r,t){var n=t(4942),o=t(63366),a=t(87462),i=t(72791),s=t(63733),d=t(94419),l=t(76147),c=t(52930),u=t(14036),p=t(31402),f=t(66934),m=t(10843),v=t(80184),Z=["children","className","color","component","disabled","error","filled","focused","required"],h=(0,f.ZP)("label",{name:"MuiFormLabel",slot:"Root",overridesResolver:function(e,r){var t=e.ownerState;return(0,a.Z)({},r.root,"secondary"===t.color&&r.colorSecondary,t.filled&&r.filled)}})((function(e){var r,t=e.theme,o=e.ownerState;return(0,a.Z)({color:(t.vars||t).palette.text.secondary},t.typography.body1,(r={lineHeight:"1.4375em",padding:0,position:"relative"},(0,n.Z)(r,"&.".concat(m.Z.focused),{color:(t.vars||t).palette[o.color].main}),(0,n.Z)(r,"&.".concat(m.Z.disabled),{color:(t.vars||t).palette.text.disabled}),(0,n.Z)(r,"&.".concat(m.Z.error),{color:(t.vars||t).palette.error.main}),r))})),x=(0,f.ZP)("span",{name:"MuiFormLabel",slot:"Asterisk",overridesResolver:function(e,r){return r.asterisk}})((function(e){var r=e.theme;return(0,n.Z)({},"&.".concat(m.Z.error),{color:(r.vars||r).palette.error.main})})),b=i.forwardRef((function(e,r){var t=(0,p.Z)({props:e,name:"MuiFormLabel"}),n=t.children,i=t.className,f=t.component,b=void 0===f?"label":f,g=(0,o.Z)(t,Z),w=(0,c.Z)(),y=(0,l.Z)({props:t,muiFormControl:w,states:["color","required","focused","disabled","error","filled"]}),R=(0,a.Z)({},t,{color:y.color||"primary",component:b,disabled:y.disabled,error:y.error,filled:y.filled,focused:y.focused,required:y.required}),S=function(e){var r=e.classes,t=e.color,n=e.focused,o=e.disabled,a=e.error,i=e.filled,s=e.required,l={root:["root","color".concat((0,u.Z)(t)),o&&"disabled",a&&"error",i&&"filled",n&&"focused",s&&"required"],asterisk:["asterisk",a&&"error"]};return(0,d.Z)(l,m.M,r)}(R);return(0,v.jsxs)(h,(0,a.Z)({as:b,ownerState:R,className:(0,s.Z)(S.root,i),ref:r},g,{children:[n,y.required&&(0,v.jsxs)(x,{ownerState:R,"aria-hidden":!0,className:S.asterisk,children:["\u2009","*"]})]}))}));r.Z=b},10843:function(e,r,t){t.d(r,{M:function(){return a}});var n=t(75878),o=t(21217);function a(e){return(0,o.Z)("MuiFormLabel",e)}var i=(0,n.Z)("MuiFormLabel",["root","colorSecondary","focused","disabled","error","filled","required","asterisk"]);r.Z=i},30829:function(e,r,t){t.d(r,{Z:function(){return w}});var n=t(4942),o=t(63366),a=t(87462),i=t(72791),s=t(94419),d=t(63733),l=t(76147),c=t(52930),u=t(17133),p=t(10843),f=t(31402),m=t(66934),v=t(75878),Z=t(21217);function h(e){return(0,Z.Z)("MuiInputLabel",e)}(0,v.Z)("MuiInputLabel",["root","focused","disabled","error","required","asterisk","formControl","sizeSmall","shrink","animated","standard","filled","outlined"]);var x=t(80184),b=["disableAnimation","margin","shrink","variant","className"],g=(0,m.ZP)(u.Z,{shouldForwardProp:function(e){return(0,m.FO)(e)||"classes"===e},name:"MuiInputLabel",slot:"Root",overridesResolver:function(e,r){var t=e.ownerState;return[(0,n.Z)({},"& .".concat(p.Z.asterisk),r.asterisk),r.root,t.formControl&&r.formControl,"small"===t.size&&r.sizeSmall,t.shrink&&r.shrink,!t.disableAnimation&&r.animated,r[t.variant]]}})((function(e){var r=e.theme,t=e.ownerState;return(0,a.Z)({display:"block",transformOrigin:"top left",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%"},t.formControl&&{position:"absolute",left:0,top:0,transform:"translate(0, 20px) scale(1)"},"small"===t.size&&{transform:"translate(0, 17px) scale(1)"},t.shrink&&{transform:"translate(0, -1.5px) scale(0.75)",transformOrigin:"top left",maxWidth:"133%"},!t.disableAnimation&&{transition:r.transitions.create(["color","transform","max-width"],{duration:r.transitions.duration.shorter,easing:r.transitions.easing.easeOut})},"filled"===t.variant&&(0,a.Z)({zIndex:1,pointerEvents:"none",transform:"translate(12px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},"small"===t.size&&{transform:"translate(12px, 13px) scale(1)"},t.shrink&&(0,a.Z)({userSelect:"none",pointerEvents:"auto",transform:"translate(12px, 7px) scale(0.75)",maxWidth:"calc(133% - 24px)"},"small"===t.size&&{transform:"translate(12px, 4px) scale(0.75)"})),"outlined"===t.variant&&(0,a.Z)({zIndex:1,pointerEvents:"none",transform:"translate(14px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},"small"===t.size&&{transform:"translate(14px, 9px) scale(1)"},t.shrink&&{userSelect:"none",pointerEvents:"auto",maxWidth:"calc(133% - 32px)",transform:"translate(14px, -9px) scale(0.75)"}))})),w=i.forwardRef((function(e,r){var t=(0,f.Z)({name:"MuiInputLabel",props:e}),n=t.disableAnimation,i=void 0!==n&&n,u=t.shrink,p=t.className,m=(0,o.Z)(t,b),v=(0,c.Z)(),Z=u;"undefined"===typeof Z&&v&&(Z=v.filled||v.focused||v.adornedStart);var w=(0,l.Z)({props:t,muiFormControl:v,states:["size","variant","required"]}),y=(0,a.Z)({},t,{disableAnimation:i,formControl:v,shrink:Z,size:w.size,variant:w.variant,required:w.required}),R=function(e){var r=e.classes,t=e.formControl,n=e.size,o=e.shrink,i={root:["root",t&&"formControl",!e.disableAnimation&&"animated",o&&"shrink","small"===n&&"sizeSmall",e.variant],asterisk:[e.required&&"asterisk"]},d=(0,s.Z)(i,h,r);return(0,a.Z)({},r,d)}(y);return(0,x.jsx)(g,(0,a.Z)({"data-shrink":Z,ownerState:y,ref:r,className:(0,d.Z)(R.root,p)},m,{classes:R}))}))}}]); -//# sourceMappingURL=6008.cdca3087.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[6008],{89673:function(e,r,t){t.d(r,{Z:function(){return S}});var n=t(84506),o=t(29439),a=t(4942),i=t(63366),s=t(87462),d=t(72791),l=(t(57441),t(63733)),c=t(94419),u=t(66934),p=t(31402),f=t(56125),m=t(35527),v=t(27318),Z=t(98278),h=t(75878),x=t(21217);function b(e){return(0,x.Z)("MuiAccordion",e)}var g=(0,h.Z)("MuiAccordion",["root","rounded","expanded","disabled","gutters","region"]),w=t(80184),y=["children","className","defaultExpanded","disabled","disableGutters","expanded","onChange","square","TransitionComponent","TransitionProps"],R=(0,u.ZP)(m.Z,{name:"MuiAccordion",slot:"Root",overridesResolver:function(e,r){var t=e.ownerState;return[(0,a.Z)({},"& .".concat(g.region),r.region),r.root,!t.square&&r.rounded,!t.disableGutters&&r.gutters]}})((function(e){var r,t=e.theme,n={duration:t.transitions.duration.shortest};return r={position:"relative",transition:t.transitions.create(["margin"],n),overflowAnchor:"none","&:before":{position:"absolute",left:0,top:-1,right:0,height:1,content:'""',opacity:1,backgroundColor:(t.vars||t).palette.divider,transition:t.transitions.create(["opacity","background-color"],n)},"&:first-of-type":{"&:before":{display:"none"}}},(0,a.Z)(r,"&.".concat(g.expanded),{"&:before":{opacity:0},"&:first-of-type":{marginTop:0},"&:last-of-type":{marginBottom:0},"& + &":{"&:before":{display:"none"}}}),(0,a.Z)(r,"&.".concat(g.disabled),{backgroundColor:(t.vars||t).palette.action.disabledBackground}),r}),(function(e){var r=e.theme,t=e.ownerState;return(0,s.Z)({},!t.square&&{borderRadius:0,"&:first-of-type":{borderTopLeftRadius:(r.vars||r).shape.borderRadius,borderTopRightRadius:(r.vars||r).shape.borderRadius},"&:last-of-type":{borderBottomLeftRadius:(r.vars||r).shape.borderRadius,borderBottomRightRadius:(r.vars||r).shape.borderRadius,"@supports (-ms-ime-align: auto)":{borderBottomLeftRadius:0,borderBottomRightRadius:0}}},!t.disableGutters&&(0,a.Z)({},"&.".concat(g.expanded),{margin:"16px 0"}))})),S=d.forwardRef((function(e,r){var t=(0,p.Z)({props:e,name:"MuiAccordion"}),a=t.children,u=t.className,m=t.defaultExpanded,h=void 0!==m&&m,x=t.disabled,g=void 0!==x&&x,S=t.disableGutters,C=void 0!==S&&S,k=t.expanded,M=t.onChange,E=t.square,A=void 0!==E&&E,N=t.TransitionComponent,z=void 0===N?f.Z:N,q=t.TransitionProps,I=(0,i.Z)(t,y),P=(0,Z.Z)({controlled:k,default:h,name:"Accordion",state:"expanded"}),W=(0,o.Z)(P,2),j=W[0],G=W[1],L=d.useCallback((function(e){G(!j),M&&M(e,!j)}),[j,M,G]),T=d.Children.toArray(a),F=(0,n.Z)(T),D=F[0],V=F.slice(1),H=d.useMemo((function(){return{expanded:j,disabled:g,disableGutters:C,toggle:L}}),[j,g,C,L]),B=(0,s.Z)({},t,{square:A,disabled:g,disableGutters:C,expanded:j}),O=function(e){var r=e.classes,t={root:["root",!e.square&&"rounded",e.expanded&&"expanded",e.disabled&&"disabled",!e.disableGutters&&"gutters"],region:["region"]};return(0,c.Z)(t,b,r)}(B);return(0,w.jsxs)(R,(0,s.Z)({className:(0,l.Z)(O.root,u),ref:r,ownerState:B,square:A},I,{children:[(0,w.jsx)(v.Z.Provider,{value:H,children:D}),(0,w.jsx)(z,(0,s.Z)({in:j,timeout:"auto"},q,{children:(0,w.jsx)("div",{"aria-labelledby":D.props.id,id:D.props["aria-controls"],role:"region",className:O.region,children:V})}))]}))}))},27318:function(e,r,t){var n=t(72791).createContext({});r.Z=n},3721:function(e,r,t){t.d(r,{Z:function(){return Z}});var n=t(87462),o=t(63366),a=t(72791),i=t(63733),s=t(94419),d=t(66934),l=t(31402),c=t(75878),u=t(21217);function p(e){return(0,u.Z)("MuiAccordionDetails",e)}(0,c.Z)("MuiAccordionDetails",["root"]);var f=t(80184),m=["className"],v=(0,d.ZP)("div",{name:"MuiAccordionDetails",slot:"Root",overridesResolver:function(e,r){return r.root}})((function(e){return{padding:e.theme.spacing(1,2,2)}})),Z=a.forwardRef((function(e,r){var t=(0,l.Z)({props:e,name:"MuiAccordionDetails"}),a=t.className,d=(0,o.Z)(t,m),c=t,u=function(e){var r=e.classes;return(0,s.Z)({root:["root"]},p,r)}(c);return(0,f.jsx)(v,(0,n.Z)({className:(0,i.Z)(u.root,a),ref:r,ownerState:c},d))}))},55818:function(e,r,t){t.d(r,{Z:function(){return y}});var n=t(4942),o=t(63366),a=t(87462),i=t(72791),s=t(63733),d=t(94419),l=t(66934),c=t(31402),u=t(95080),p=t(27318),f=t(75878),m=t(21217);function v(e){return(0,m.Z)("MuiAccordionSummary",e)}var Z=(0,f.Z)("MuiAccordionSummary",["root","expanded","focusVisible","disabled","gutters","contentGutters","content","expandIconWrapper"]),h=t(80184),x=["children","className","expandIcon","focusVisibleClassName","onClick"],b=(0,l.ZP)(u.Z,{name:"MuiAccordionSummary",slot:"Root",overridesResolver:function(e,r){return r.root}})((function(e){var r,t=e.theme,o=e.ownerState,i={duration:t.transitions.duration.shortest};return(0,a.Z)((r={display:"flex",minHeight:48,padding:t.spacing(0,2),transition:t.transitions.create(["min-height","background-color"],i)},(0,n.Z)(r,"&.".concat(Z.focusVisible),{backgroundColor:(t.vars||t).palette.action.focus}),(0,n.Z)(r,"&.".concat(Z.disabled),{opacity:(t.vars||t).palette.action.disabledOpacity}),(0,n.Z)(r,"&:hover:not(.".concat(Z.disabled,")"),{cursor:"pointer"}),r),!o.disableGutters&&(0,n.Z)({},"&.".concat(Z.expanded),{minHeight:64}))})),g=(0,l.ZP)("div",{name:"MuiAccordionSummary",slot:"Content",overridesResolver:function(e,r){return r.content}})((function(e){var r=e.theme,t=e.ownerState;return(0,a.Z)({display:"flex",flexGrow:1,margin:"12px 0"},!t.disableGutters&&(0,n.Z)({transition:r.transitions.create(["margin"],{duration:r.transitions.duration.shortest})},"&.".concat(Z.expanded),{margin:"20px 0"}))})),w=(0,l.ZP)("div",{name:"MuiAccordionSummary",slot:"ExpandIconWrapper",overridesResolver:function(e,r){return r.expandIconWrapper}})((function(e){var r=e.theme;return(0,n.Z)({display:"flex",color:(r.vars||r).palette.action.active,transform:"rotate(0deg)",transition:r.transitions.create("transform",{duration:r.transitions.duration.shortest})},"&.".concat(Z.expanded),{transform:"rotate(180deg)"})})),y=i.forwardRef((function(e,r){var t=(0,c.Z)({props:e,name:"MuiAccordionSummary"}),n=t.children,l=t.className,u=t.expandIcon,f=t.focusVisibleClassName,m=t.onClick,Z=(0,o.Z)(t,x),y=i.useContext(p.Z),R=y.disabled,S=void 0!==R&&R,C=y.disableGutters,k=y.expanded,M=y.toggle,E=(0,a.Z)({},t,{expanded:k,disabled:S,disableGutters:C}),A=function(e){var r=e.classes,t=e.expanded,n=e.disabled,o=e.disableGutters,a={root:["root",t&&"expanded",n&&"disabled",!o&&"gutters"],focusVisible:["focusVisible"],content:["content",t&&"expanded",!o&&"contentGutters"],expandIconWrapper:["expandIconWrapper",t&&"expanded"]};return(0,d.Z)(a,v,r)}(E);return(0,h.jsxs)(b,(0,a.Z)({focusRipple:!1,disableRipple:!0,disabled:S,component:"div","aria-expanded":k,className:(0,s.Z)(A.root,l),focusVisibleClassName:(0,s.Z)(A.focusVisible,f),onClick:function(e){M&&M(e),m&&m(e)},ref:r,ownerState:E},Z,{children:[(0,h.jsx)(g,{className:A.content,ownerState:E,children:n}),u&&(0,h.jsx)(w,{className:A.expandIconWrapper,ownerState:E,children:u})]}))}))},56125:function(e,r,t){t.d(r,{Z:function(){return C}});var n=t(4942),o=t(63366),a=t(87462),i=t(72791),s=t(63733),d=t(18875),l=t(94419),c=t(66934),u=t(31402),p=t(81314),f=t(4999),m=t(13967),v=t(42071),Z=t(75878),h=t(21217);function x(e){return(0,h.Z)("MuiCollapse",e)}(0,Z.Z)("MuiCollapse",["root","horizontal","vertical","entered","hidden","wrapper","wrapperInner"]);var b=t(80184),g=["addEndListener","children","className","collapsedSize","component","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","orientation","style","timeout","TransitionComponent"],w=(0,c.ZP)("div",{name:"MuiCollapse",slot:"Root",overridesResolver:function(e,r){var t=e.ownerState;return[r.root,r[t.orientation],"entered"===t.state&&r.entered,"exited"===t.state&&!t.in&&"0px"===t.collapsedSize&&r.hidden]}})((function(e){var r=e.theme,t=e.ownerState;return(0,a.Z)({height:0,overflow:"hidden",transition:r.transitions.create("height")},"horizontal"===t.orientation&&{height:"auto",width:0,transition:r.transitions.create("width")},"entered"===t.state&&(0,a.Z)({height:"auto",overflow:"visible"},"horizontal"===t.orientation&&{width:"auto"}),"exited"===t.state&&!t.in&&"0px"===t.collapsedSize&&{visibility:"hidden"})})),y=(0,c.ZP)("div",{name:"MuiCollapse",slot:"Wrapper",overridesResolver:function(e,r){return r.wrapper}})((function(e){var r=e.ownerState;return(0,a.Z)({display:"flex",width:"100%"},"horizontal"===r.orientation&&{width:"auto",height:"100%"})})),R=(0,c.ZP)("div",{name:"MuiCollapse",slot:"WrapperInner",overridesResolver:function(e,r){return r.wrapperInner}})((function(e){var r=e.ownerState;return(0,a.Z)({width:"100%"},"horizontal"===r.orientation&&{width:"auto",height:"100%"})})),S=i.forwardRef((function(e,r){var t=(0,u.Z)({props:e,name:"MuiCollapse"}),c=t.addEndListener,Z=t.children,h=t.className,S=t.collapsedSize,C=void 0===S?"0px":S,k=t.component,M=t.easing,E=t.in,A=t.onEnter,N=t.onEntered,z=t.onEntering,q=t.onExit,I=t.onExited,P=t.onExiting,W=t.orientation,j=void 0===W?"vertical":W,G=t.style,L=t.timeout,T=void 0===L?p.x9.standard:L,F=t.TransitionComponent,D=void 0===F?d.ZP:F,V=(0,o.Z)(t,g),H=(0,a.Z)({},t,{orientation:j,collapsedSize:C}),B=function(e){var r=e.orientation,t=e.classes,n={root:["root","".concat(r)],entered:["entered"],hidden:["hidden"],wrapper:["wrapper","".concat(r)],wrapperInner:["wrapperInner","".concat(r)]};return(0,l.Z)(n,x,t)}(H),O=(0,m.Z)(),_=i.useRef(),J=i.useRef(null),K=i.useRef(),Q="number"===typeof C?"".concat(C,"px"):C,U="horizontal"===j,X=U?"width":"height";i.useEffect((function(){return function(){clearTimeout(_.current)}}),[]);var Y=i.useRef(null),$=(0,v.Z)(r,Y),ee=function(e){return function(r){if(e){var t=Y.current;void 0===r?e(t):e(t,r)}}},re=function(){return J.current?J.current[U?"clientWidth":"clientHeight"]:0},te=ee((function(e,r){J.current&&U&&(J.current.style.position="absolute"),e.style[X]=Q,A&&A(e,r)})),ne=ee((function(e,r){var t=re();J.current&&U&&(J.current.style.position="");var n=(0,f.C)({style:G,timeout:T,easing:M},{mode:"enter"}),o=n.duration,a=n.easing;if("auto"===T){var i=O.transitions.getAutoHeightDuration(t);e.style.transitionDuration="".concat(i,"ms"),K.current=i}else e.style.transitionDuration="string"===typeof o?o:"".concat(o,"ms");e.style[X]="".concat(t,"px"),e.style.transitionTimingFunction=a,z&&z(e,r)})),oe=ee((function(e,r){e.style[X]="auto",N&&N(e,r)})),ae=ee((function(e){e.style[X]="".concat(re(),"px"),q&&q(e)})),ie=ee(I),se=ee((function(e){var r=re(),t=(0,f.C)({style:G,timeout:T,easing:M},{mode:"exit"}),n=t.duration,o=t.easing;if("auto"===T){var a=O.transitions.getAutoHeightDuration(r);e.style.transitionDuration="".concat(a,"ms"),K.current=a}else e.style.transitionDuration="string"===typeof n?n:"".concat(n,"ms");e.style[X]=Q,e.style.transitionTimingFunction=o,P&&P(e)}));return(0,b.jsx)(D,(0,a.Z)({in:E,onEnter:te,onEntered:oe,onEntering:ne,onExit:ae,onExited:ie,onExiting:se,addEndListener:function(e){"auto"===T&&(_.current=setTimeout(e,K.current||0)),c&&c(Y.current,e)},nodeRef:Y,timeout:"auto"===T?null:T},V,{children:function(e,r){return(0,b.jsx)(w,(0,a.Z)({as:k,className:(0,s.Z)(B.root,h,{entered:B.entered,exited:!E&&"0px"===Q&&B.hidden}[e]),style:(0,a.Z)((0,n.Z)({},U?"minWidth":"minHeight",Q),G),ownerState:(0,a.Z)({},H,{state:e}),ref:$},r,{children:(0,b.jsx)(y,{ownerState:(0,a.Z)({},H,{state:e}),className:B.wrapper,ref:J,children:(0,b.jsx)(R,{ownerState:(0,a.Z)({},H,{state:e}),className:B.wrapperInner,children:Z})})}))}}))}));S.muiSupportAuto=!0;var C=S},93840:function(e,r,t){var n=t(72791).createContext(void 0);r.Z=n},76147:function(e,r,t){function n(e){var r=e.props,t=e.states,n=e.muiFormControl;return t.reduce((function(e,t){return e[t]=r[t],n&&"undefined"===typeof r[t]&&(e[t]=n[t]),e}),{})}t.d(r,{Z:function(){return n}})},52930:function(e,r,t){t.d(r,{Z:function(){return a}});var n=t(72791),o=t(93840);function a(){return n.useContext(o.Z)}},17133:function(e,r,t){var n=t(4942),o=t(63366),a=t(87462),i=t(72791),s=t(63733),d=t(94419),l=t(76147),c=t(52930),u=t(14036),p=t(31402),f=t(66934),m=t(10843),v=t(80184),Z=["children","className","color","component","disabled","error","filled","focused","required"],h=(0,f.ZP)("label",{name:"MuiFormLabel",slot:"Root",overridesResolver:function(e,r){var t=e.ownerState;return(0,a.Z)({},r.root,"secondary"===t.color&&r.colorSecondary,t.filled&&r.filled)}})((function(e){var r,t=e.theme,o=e.ownerState;return(0,a.Z)({color:(t.vars||t).palette.text.secondary},t.typography.body1,(r={lineHeight:"1.4375em",padding:0,position:"relative"},(0,n.Z)(r,"&.".concat(m.Z.focused),{color:(t.vars||t).palette[o.color].main}),(0,n.Z)(r,"&.".concat(m.Z.disabled),{color:(t.vars||t).palette.text.disabled}),(0,n.Z)(r,"&.".concat(m.Z.error),{color:(t.vars||t).palette.error.main}),r))})),x=(0,f.ZP)("span",{name:"MuiFormLabel",slot:"Asterisk",overridesResolver:function(e,r){return r.asterisk}})((function(e){var r=e.theme;return(0,n.Z)({},"&.".concat(m.Z.error),{color:(r.vars||r).palette.error.main})})),b=i.forwardRef((function(e,r){var t=(0,p.Z)({props:e,name:"MuiFormLabel"}),n=t.children,i=t.className,f=t.component,b=void 0===f?"label":f,g=(0,o.Z)(t,Z),w=(0,c.Z)(),y=(0,l.Z)({props:t,muiFormControl:w,states:["color","required","focused","disabled","error","filled"]}),R=(0,a.Z)({},t,{color:y.color||"primary",component:b,disabled:y.disabled,error:y.error,filled:y.filled,focused:y.focused,required:y.required}),S=function(e){var r=e.classes,t=e.color,n=e.focused,o=e.disabled,a=e.error,i=e.filled,s=e.required,l={root:["root","color".concat((0,u.Z)(t)),o&&"disabled",a&&"error",i&&"filled",n&&"focused",s&&"required"],asterisk:["asterisk",a&&"error"]};return(0,d.Z)(l,m.M,r)}(R);return(0,v.jsxs)(h,(0,a.Z)({as:b,ownerState:R,className:(0,s.Z)(S.root,i),ref:r},g,{children:[n,y.required&&(0,v.jsxs)(x,{ownerState:R,"aria-hidden":!0,className:S.asterisk,children:["\u2009","*"]})]}))}));r.Z=b},10843:function(e,r,t){t.d(r,{M:function(){return a}});var n=t(75878),o=t(21217);function a(e){return(0,o.Z)("MuiFormLabel",e)}var i=(0,n.Z)("MuiFormLabel",["root","colorSecondary","focused","disabled","error","filled","required","asterisk"]);r.Z=i},30829:function(e,r,t){t.d(r,{Z:function(){return y}});var n=t(4942),o=t(63366),a=t(87462),i=t(72791),s=t(94419),d=t(63733),l=t(76147),c=t(52930),u=t(17133),p=t(10843),f=t(31402),m=t(14036),v=t(66934),Z=t(75878),h=t(21217);function x(e){return(0,h.Z)("MuiInputLabel",e)}(0,Z.Z)("MuiInputLabel",["root","focused","disabled","error","required","asterisk","formControl","sizeSmall","shrink","animated","standard","filled","outlined"]);var b=t(80184),g=["disableAnimation","margin","shrink","variant","className"],w=(0,v.ZP)(u.Z,{shouldForwardProp:function(e){return(0,v.FO)(e)||"classes"===e},name:"MuiInputLabel",slot:"Root",overridesResolver:function(e,r){var t=e.ownerState;return[(0,n.Z)({},"& .".concat(p.Z.asterisk),r.asterisk),r.root,t.formControl&&r.formControl,"small"===t.size&&r.sizeSmall,t.shrink&&r.shrink,!t.disableAnimation&&r.animated,r[t.variant]]}})((function(e){var r=e.theme,t=e.ownerState;return(0,a.Z)({display:"block",transformOrigin:"top left",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%"},t.formControl&&{position:"absolute",left:0,top:0,transform:"translate(0, 20px) scale(1)"},"small"===t.size&&{transform:"translate(0, 17px) scale(1)"},t.shrink&&{transform:"translate(0, -1.5px) scale(0.75)",transformOrigin:"top left",maxWidth:"133%"},!t.disableAnimation&&{transition:r.transitions.create(["color","transform","max-width"],{duration:r.transitions.duration.shorter,easing:r.transitions.easing.easeOut})},"filled"===t.variant&&(0,a.Z)({zIndex:1,pointerEvents:"none",transform:"translate(12px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},"small"===t.size&&{transform:"translate(12px, 13px) scale(1)"},t.shrink&&(0,a.Z)({userSelect:"none",pointerEvents:"auto",transform:"translate(12px, 7px) scale(0.75)",maxWidth:"calc(133% - 24px)"},"small"===t.size&&{transform:"translate(12px, 4px) scale(0.75)"})),"outlined"===t.variant&&(0,a.Z)({zIndex:1,pointerEvents:"none",transform:"translate(14px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},"small"===t.size&&{transform:"translate(14px, 9px) scale(1)"},t.shrink&&{userSelect:"none",pointerEvents:"auto",maxWidth:"calc(133% - 32px)",transform:"translate(14px, -9px) scale(0.75)"}))})),y=i.forwardRef((function(e,r){var t=(0,f.Z)({name:"MuiInputLabel",props:e}),n=t.disableAnimation,i=void 0!==n&&n,u=t.shrink,p=t.className,v=(0,o.Z)(t,g),Z=(0,c.Z)(),h=u;"undefined"===typeof h&&Z&&(h=Z.filled||Z.focused||Z.adornedStart);var y=(0,l.Z)({props:t,muiFormControl:Z,states:["size","variant","required"]}),R=(0,a.Z)({},t,{disableAnimation:i,formControl:Z,shrink:h,size:y.size,variant:y.variant,required:y.required}),S=function(e){var r=e.classes,t=e.formControl,n=e.size,o=e.shrink,i=e.disableAnimation,d=e.variant,l=e.required,c={root:["root",t&&"formControl",!i&&"animated",o&&"shrink",n&&"normal"!==n&&"size".concat((0,m.Z)(n)),d],asterisk:[l&&"asterisk"]},u=(0,s.Z)(c,x,r);return(0,a.Z)({},r,u)}(R);return(0,b.jsx)(w,(0,a.Z)({"data-shrink":h,ownerState:R,ref:r,className:(0,d.Z)(S.root,p)},v,{classes:S}))}))}}]); +//# sourceMappingURL=6008.10fb9564.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/6008.10fb9564.chunk.js.map b/portal-ui/build/static/js/6008.10fb9564.chunk.js.map new file mode 100644 index 0000000000..7b9abdb75d --- /dev/null +++ b/portal-ui/build/static/js/6008.10fb9564.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/6008.10fb9564.chunk.js","mappings":"2UAEO,SAASA,EAAyBC,GACvC,OAAOC,EAAAA,EAAAA,GAAqB,eAAgBD,EAC9C,CACA,IACA,GADyBE,EAAAA,EAAAA,GAAuB,eAAgB,CAAC,OAAQ,UAAW,WAAY,WAAY,UAAW,W,WCDjHC,EAAY,CAAC,WAAY,YAAa,kBAAmB,WAAY,iBAAkB,WAAY,WAAY,SAAU,sBAAuB,mBA8BhJC,GAAgBC,EAAAA,EAAAA,IAAOC,EAAAA,EAAO,CAClCC,KAAM,eACNP,KAAM,OACNQ,kBAAmB,SAACC,EAAOC,GACzB,IACEC,EACEF,EADFE,WAEF,MAAO,EAAAC,EAAAA,EAAAA,GAAA,SAAAC,OACEC,EAAiBC,QAAWL,EAAOK,QACzCL,EAAOM,MAAOL,EAAWM,QAAUP,EAAOQ,SAAUP,EAAWQ,gBAAkBT,EAAOU,QAC7F,GAVoBf,EAWnB,SAAAgB,GAEG,IAAAC,EADJC,EAAKF,EAALE,MAEMC,EAAa,CACjBC,SAAUF,EAAMG,YAAYD,SAASE,UAEvC,OAAAL,EAAA,CACEM,SAAU,WACVJ,WAAYD,EAAMG,YAAYG,OAAO,CAAC,UAAWL,GACjDM,eAAgB,OAEhB,WAAY,CACVF,SAAU,WACVG,KAAM,EACNC,KAAM,EACNC,MAAO,EACPC,OAAQ,EACRC,QAAS,KACTC,QAAS,EACTC,iBAAkBd,EAAMe,MAAQf,GAAOgB,QAAQC,QAC/ChB,WAAYD,EAAMG,YAAYG,OAAO,CAAC,UAAW,oBAAqBL,IAExE,kBAAmB,CACjB,WAAY,CACViB,QAAS,WAEZ7B,EAAAA,EAAAA,GAAAU,EAAA,KAAAT,OACKC,EAAiB4B,UAAa,CAClC,WAAY,CACVN,QAAS,GAEX,kBAAmB,CACjBO,UAAW,GAEb,iBAAkB,CAChBC,aAAc,GAEhB,QAAS,CACP,WAAY,CACVH,QAAS,YAGd7B,EAAAA,EAAAA,GAAAU,EAAA,KAAAT,OACKC,EAAiB+B,UAAa,CAClCR,iBAAkBd,EAAMe,MAAQf,GAAOgB,QAAQO,OAAOC,qBACvDzB,CAEL,IAAG,SAAA0B,GAAA,IACDzB,EAAKyB,EAALzB,MACAZ,EAAUqC,EAAVrC,WAAU,OACNsC,EAAAA,EAAAA,GAAS,CAAC,GAAItC,EAAWM,QAAU,CACvCiC,aAAc,EACd,kBAAmB,CACjBC,qBAAsB5B,EAAMe,MAAQf,GAAO6B,MAAMF,aACjDG,sBAAuB9B,EAAMe,MAAQf,GAAO6B,MAAMF,cAEpD,iBAAkB,CAChBI,wBAAyB/B,EAAMe,MAAQf,GAAO6B,MAAMF,aACpDK,yBAA0BhC,EAAMe,MAAQf,GAAO6B,MAAMF,aAErD,kCAAmC,CACjCI,uBAAwB,EACxBC,wBAAyB,MAG3B5C,EAAWQ,iBAAcP,EAAAA,EAAAA,GAAA,QAAAC,OACrBC,EAAiB4B,UAAa,CAClCc,OAAQ,WAEV,IA8IF,EA7I+BC,EAAAA,YAAiB,SAAmBC,EAASC,GAC1E,IAAMlD,GAAQmD,EAAAA,EAAAA,GAAc,CAC1BnD,MAAOiD,EACPnD,KAAM,iBAGMsD,EAURpD,EAVFqD,SACAC,EASEtD,EATFsD,UAASC,EASPvD,EARFwD,gBAAAA,OAAe,IAAAD,GAAQA,EAAAE,EAQrBzD,EAPFoC,SAAAA,OAAQ,IAAAqB,GAAQA,EAAAC,EAOd1D,EANFU,eAAAA,OAAc,IAAAgD,GAAQA,EACZC,EAKR3D,EALFiC,SACA2B,EAIE5D,EAJF4D,SAAQC,EAIN7D,EAHFQ,OAAAA,OAAM,IAAAqD,GAAQA,EAAAC,EAGZ9D,EAFF+D,oBAAAA,OAAmB,IAAAD,EAAGE,EAAAA,EAAQF,EAC9BG,EACEjE,EADFiE,gBAEFC,GAAQC,EAAAA,EAAAA,GAA8BnE,EAAON,GAC/C0E,GAAqCC,EAAAA,EAAAA,GAAc,CACjDC,WAAYX,EACZY,QAASf,EACT1D,KAAM,YACN0E,MAAO,aACPC,GAAAC,EAAAA,EAAAA,GAAAN,EAAA,GALKnC,EAAQwC,EAAA,GAAEE,EAAgBF,EAAA,GAM3BG,EAAe5B,EAAAA,aAAkB,SAAA6B,GACrCF,GAAkB1C,GACd2B,GACFA,EAASiB,GAAQ5C,EAErB,GAAG,CAACA,EAAU2B,EAAUe,IACxBG,EAA+B9B,EAAAA,SAAe+B,QAAQ3B,GAAa4B,GAAAC,EAAAA,EAAAA,GAAAH,GAA5DI,EAAOF,EAAA,GAAK3B,EAAQ2B,EAAAG,MAAA,GACrBC,EAAepC,EAAAA,SAAc,iBAAO,CACxCf,SAAAA,EACAG,SAAAA,EACA1B,eAAAA,EACA2E,OAAQT,EACT,GAAG,CAAC3C,EAAUG,EAAU1B,EAAgBkE,IACnC1E,GAAasC,EAAAA,EAAAA,GAAS,CAAC,EAAGxC,EAAO,CACrCQ,OAAAA,EACA4B,SAAAA,EACA1B,eAAAA,EACAuB,SAAAA,IAEIqD,EA1IkB,SAAApF,GACxB,IACEoF,EAKEpF,EALFoF,QAMIC,EAAQ,CACZhF,KAAM,CAAC,QAFLL,EAJFM,QAM0B,UAFxBN,EAHF+B,UAKiD,WAF/C/B,EAFFkC,UAIyE,YAFvElC,EADFQ,gBAGwG,WACxGJ,OAAQ,CAAC,WAEX,OAAOkF,EAAAA,EAAAA,GAAeD,EAAOjG,EAA0BgG,EACzD,CA6HkBG,CAAkBvF,GAClC,OAAoBwF,EAAAA,EAAAA,MAAM/F,GAAe6C,EAAAA,EAAAA,GAAS,CAChDc,WAAWqC,EAAAA,EAAAA,GAAKL,EAAQ/E,KAAM+C,GAC9BJ,IAAKA,EACLhD,WAAYA,EACZM,OAAQA,GACP0D,EAAO,CACRb,SAAU,EAAcuC,EAAAA,EAAAA,KAAKC,EAAAA,EAAiBC,SAAU,CACtDC,MAAOX,EACP/B,SAAU6B,KACKU,EAAAA,EAAAA,KAAK7B,GAAqBvB,EAAAA,EAAAA,GAAS,CAClDwD,GAAI/D,EACJgE,QAAS,QACRhC,EAAiB,CAClBZ,UAAuBuC,EAAAA,EAAAA,KAAK,MAAO,CACjC,kBAAmBV,EAAQlF,MAAMkG,GACjCA,GAAIhB,EAAQlF,MAAM,iBAClBmG,KAAM,SACN7C,UAAWgC,EAAQhF,OACnB+C,SAAUA,UAIlB,G,4BC7KMwC,E,SAAgC7C,cAAoB,CAAC,GAI3D,K,8JCVO,SAASoD,EAAgC7G,GAC9C,OAAOC,EAAAA,EAAAA,GAAqB,sBAAuBD,EACrD,EACgCE,EAAAA,EAAAA,GAAuB,sBAAuB,CAAC,SAA/E,I,WCDMC,EAAY,CAAC,aAkBb2G,GAAuBzG,EAAAA,EAAAA,IAAO,MAAO,CACzCE,KAAM,sBACNP,KAAM,OACNQ,kBAAmB,SAACC,EAAOC,GAAM,OAAKA,EAAOM,IAAI,GAHtBX,EAI1B,SAAA0G,GACI,MACA,CACLC,QAFKD,EAALxF,MAEe0F,QAAQ,EAAG,EAAG,GAC9B,IAwCD,EAvCsCxD,EAAAA,YAAiB,SAA0BC,EAASC,GACxF,IAAMlD,GAAQmD,EAAAA,EAAAA,GAAc,CAC1BnD,MAAOiD,EACPnD,KAAM,wBAGJwD,EACEtD,EADFsD,UAEFY,GAAQC,EAAAA,EAAAA,GAA8BnE,EAAON,GACzCQ,EAAaF,EACbsF,EA5BkB,SAAApF,GACxB,IACEoF,EACEpF,EADFoF,QAKF,OAAOE,EAAAA,EAAAA,GAHO,CACZjF,KAAM,CAAC,SAEoB6F,EAAiCd,EAChE,CAoBkBG,CAAkBvF,GAClC,OAAoB0F,EAAAA,EAAAA,KAAKS,GAAsB7D,EAAAA,EAAAA,GAAS,CACtDc,WAAWqC,EAAAA,EAAAA,GAAKL,EAAQ/E,KAAM+C,GAC9BJ,IAAKA,EACLhD,WAAYA,GACXgE,GACL,G,+LC7CO,SAASuC,EAAgClH,GAC9C,OAAOC,EAAAA,EAAAA,GAAqB,sBAAuBD,EACrD,CACA,IACA,GADgCE,EAAAA,EAAAA,GAAuB,sBAAuB,CAAC,OAAQ,WAAY,eAAgB,WAAY,UAAW,iBAAkB,UAAW,sB,WCDjKC,EAAY,CAAC,WAAY,YAAa,aAAc,wBAAyB,WA2B7EgH,GAAuB9G,EAAAA,EAAAA,IAAO+G,EAAAA,EAAY,CAC9C7G,KAAM,sBACNP,KAAM,OACNQ,kBAAmB,SAACC,EAAOC,GAAM,OAAKA,EAAOM,IAAI,GAHtBX,EAI1B,SAAA0G,GAGG,IAAAM,EAFJ9F,EAAKwF,EAALxF,MACAZ,EAAUoG,EAAVpG,WAEMa,EAAa,CACjBC,SAAUF,EAAMG,YAAYD,SAASE,UAEvC,OAAOsB,EAAAA,EAAAA,IAAQoE,EAAA,CACb5E,QAAS,OACT6E,UAAW,GACXN,QAASzF,EAAM0F,QAAQ,EAAG,GAC1BzF,WAAYD,EAAMG,YAAYG,OAAO,CAAC,aAAc,oBAAqBL,KAAWZ,EAAAA,EAAAA,GAAAyG,EAAA,KAAAxG,OAC9E0G,EAAwBC,cAAiB,CAC7CnF,iBAAkBd,EAAMe,MAAQf,GAAOgB,QAAQO,OAAO2E,SACvD7G,EAAAA,EAAAA,GAAAyG,EAAA,KAAAxG,OACK0G,EAAwB1E,UAAa,CACzCT,SAAUb,EAAMe,MAAQf,GAAOgB,QAAQO,OAAO4E,mBAC/C9G,EAAAA,EAAAA,GAAAyG,EAAA,gBAAAxG,OACgB0G,EAAwB1E,SAAQ,KAAM,CACrD8E,OAAQ,YACTN,IACC1G,EAAWQ,iBAAcP,EAAAA,EAAAA,GAAA,QAAAC,OACrB0G,EAAwB7E,UAAa,CACzC4E,UAAW,KAGjB,IACMM,GAA0BvH,EAAAA,EAAAA,IAAO,MAAO,CAC5CE,KAAM,sBACNP,KAAM,UACNQ,kBAAmB,SAACC,EAAOC,GAAM,OAAKA,EAAOyB,OAAO,GAHtB9B,EAI7B,SAAAiB,GAAA,IACDC,EAAKD,EAALC,MACAZ,EAAUW,EAAVX,WAAU,OACNsC,EAAAA,EAAAA,GAAS,CACbR,QAAS,OACToF,SAAU,EACVrE,OAAQ,WACN7C,EAAWQ,iBAAcP,EAAAA,EAAAA,GAAA,CAC3BY,WAAYD,EAAMG,YAAYG,OAAO,CAAC,UAAW,CAC/CJ,SAAUF,EAAMG,YAAYD,SAASE,YACrC,KAAAd,OACI0G,EAAwB7E,UAAa,CACzCc,OAAQ,WAEV,IACIsE,GAAoCzH,EAAAA,EAAAA,IAAO,MAAO,CACtDE,KAAM,sBACNP,KAAM,oBACNQ,kBAAmB,SAACC,EAAOC,GAAM,OAAKA,EAAOqH,iBAAiB,GAHtB1H,EAIvC,SAAA2H,GAAA,IACDzG,EAAKyG,EAALzG,MAAK,OAAAX,EAAAA,EAAAA,GAAA,CAEL6B,QAAS,OACTwF,OAAQ1G,EAAMe,MAAQf,GAAOgB,QAAQO,OAAOoF,OAC5CC,UAAW,eACX3G,WAAYD,EAAMG,YAAYG,OAAO,YAAa,CAChDJ,SAAUF,EAAMG,YAAYD,SAASE,YACrC,KAAAd,OACI0G,EAAwB7E,UAAa,CACzCyF,UAAW,kBACZ,IAiGH,EA/FsC1E,EAAAA,YAAiB,SAA0BC,EAASC,GACxF,IAAMlD,GAAQmD,EAAAA,EAAAA,GAAc,CAC1BnD,MAAOiD,EACPnD,KAAM,wBAGJuD,EAKErD,EALFqD,SACAC,EAIEtD,EAJFsD,UACAqE,EAGE3H,EAHF2H,WACAC,EAEE5H,EAFF4H,sBACAC,EACE7H,EADF6H,QAEF3D,GAAQC,EAAAA,EAAAA,GAA8BnE,EAAON,GAC/CoI,EAKI9E,EAAAA,WAAiB6C,EAAAA,GAAiBkC,EAAAD,EAJpC1F,SAAAA,OAAQ,IAAA2F,GAAQA,EAChBrH,EAAcoH,EAAdpH,eACAuB,EAAQ6F,EAAR7F,SACAoD,EAAMyC,EAANzC,OAUInF,GAAasC,EAAAA,EAAAA,GAAS,CAAC,EAAGxC,EAAO,CACrCiC,SAAAA,EACAG,SAAAA,EACA1B,eAAAA,IAEI4E,EAlHkB,SAAApF,GACxB,IACEoF,EAIEpF,EAJFoF,QACArD,EAGE/B,EAHF+B,SACAG,EAEElC,EAFFkC,SACA1B,EACER,EADFQ,eAEI6E,EAAQ,CACZhF,KAAM,CAAC,OAAQ0B,GAAY,WAAYG,GAAY,YAAa1B,GAAkB,WAClFqG,aAAc,CAAC,gBACfrF,QAAS,CAAC,UAAWO,GAAY,YAAavB,GAAkB,kBAChE4G,kBAAmB,CAAC,oBAAqBrF,GAAY,aAEvD,OAAOuD,EAAAA,EAAAA,GAAeD,EAAOkB,EAAiCnB,EAChE,CAoGkBG,CAAkBvF,GAClC,OAAoBwF,EAAAA,EAAAA,MAAMgB,GAAsBlE,EAAAA,EAAAA,GAAS,CACvDwF,aAAa,EACbC,eAAe,EACf7F,SAAUA,EACV8F,UAAW,MACX,gBAAiBjG,EACjBqB,WAAWqC,EAAAA,EAAAA,GAAKL,EAAQ/E,KAAM+C,GAC9BsE,uBAAuBjC,EAAAA,EAAAA,GAAKL,EAAQyB,aAAca,GAClDC,QAtBmB,SAAAhD,GACfQ,GACFA,EAAOR,GAELgD,GACFA,EAAQhD,EAEZ,EAgBE3B,IAAKA,EACLhD,WAAYA,GACXgE,EAAO,CACRb,SAAU,EAAcuC,EAAAA,EAAAA,KAAKuB,EAAyB,CACpD7D,UAAWgC,EAAQ5D,QACnBxB,WAAYA,EACZmD,SAAUA,IACRsE,IAA2B/B,EAAAA,EAAAA,KAAKyB,EAAmC,CACrE/D,UAAWgC,EAAQgC,kBACnBpH,WAAYA,EACZmD,SAAUsE,OAGhB,G,+NCvJO,SAASQ,EAAwB5I,GACtC,OAAOC,EAAAA,EAAAA,GAAqB,cAAeD,EAC7C,EACwBE,EAAAA,EAAAA,GAAuB,cAAe,CAAC,OAAQ,aAAc,WAAY,UAAW,SAAU,UAAW,iBAAjI,I,WCDMC,EAAY,CAAC,iBAAkB,WAAY,YAAa,gBAAiB,YAAa,SAAU,KAAM,UAAW,YAAa,aAAc,SAAU,WAAY,YAAa,cAAe,QAAS,UAAW,uBA6BlN0I,GAAexI,EAAAA,EAAAA,IAAO,MAAO,CACjCE,KAAM,cACNP,KAAM,OACNQ,kBAAmB,SAACC,EAAOC,GACzB,IACEC,EACEF,EADFE,WAEF,MAAO,CAACD,EAAOM,KAAMN,EAAOC,EAAWmI,aAAmC,YAArBnI,EAAWsE,OAAuBvE,EAAOqI,QAA8B,WAArBpI,EAAWsE,QAAuBtE,EAAW8F,IAAmC,QAA7B9F,EAAWqI,eAA2BtI,EAAOuI,OACzM,GARmB5I,EASlB,SAAA0G,GAAA,IACDxF,EAAKwF,EAALxF,MACAZ,EAAUoG,EAAVpG,WAAU,OACNsC,EAAAA,EAAAA,GAAS,CACbf,OAAQ,EACRgH,SAAU,SACV1H,WAAYD,EAAMG,YAAYG,OAAO,WACT,eAA3BlB,EAAWmI,aAAgC,CAC5C5G,OAAQ,OACRiH,MAAO,EACP3H,WAAYD,EAAMG,YAAYG,OAAO,UACf,YAArBlB,EAAWsE,QAAuBhC,EAAAA,EAAAA,GAAS,CAC5Cf,OAAQ,OACRgH,SAAU,WACkB,eAA3BvI,EAAWmI,aAAgC,CAC5CK,MAAO,SACgB,WAArBxI,EAAWsE,QAAuBtE,EAAW8F,IAAmC,QAA7B9F,EAAWqI,eAA2B,CAC3FI,WAAY,UACZ,IACIC,GAAkBhJ,EAAAA,EAAAA,IAAO,MAAO,CACpCE,KAAM,cACNP,KAAM,UACNQ,kBAAmB,SAACC,EAAOC,GAAM,OAAKA,EAAO4I,OAAO,GAH9BjJ,EAIrB,SAAAgB,GAAA,IACDV,EAAUU,EAAVV,WAAU,OACNsC,EAAAA,EAAAA,GAAS,CAEbR,QAAS,OACT0G,MAAO,QACqB,eAA3BxI,EAAWmI,aAAgC,CAC5CK,MAAO,OACPjH,OAAQ,QACR,IACIqH,GAAuBlJ,EAAAA,EAAAA,IAAO,MAAO,CACzCE,KAAM,cACNP,KAAM,eACNQ,kBAAmB,SAACC,EAAOC,GAAM,OAAKA,EAAO8I,YAAY,GAH9BnJ,EAI1B,SAAAiB,GAAA,IACDX,EAAUW,EAAVX,WAAU,OACNsC,EAAAA,EAAAA,GAAS,CACbkG,MAAO,QACqB,eAA3BxI,EAAWmI,aAAgC,CAC5CK,MAAO,OACPjH,OAAQ,QACR,IAOIuC,EAAwBhB,EAAAA,YAAiB,SAAkBC,EAASC,GACxE,IAAMlD,GAAQmD,EAAAA,EAAAA,GAAc,CAC1BnD,MAAOiD,EACPnD,KAAM,gBAGJkJ,EAkBEhJ,EAlBFgJ,eACA3F,EAiBErD,EAjBFqD,SACAC,EAgBEtD,EAhBFsD,UAAS2F,EAgBPjJ,EAfFuI,cAAeW,OAAiB,IAAAD,EAAG,MAAKA,EACxCf,EAcElI,EAdFkI,UACAiB,EAaEnJ,EAbFmJ,OACIC,EAYFpJ,EAZFgG,GACAqD,EAWErJ,EAXFqJ,QACAC,EAUEtJ,EAVFsJ,UACAC,EASEvJ,EATFuJ,WACAC,EAQExJ,EARFwJ,OACAC,EAOEzJ,EAPFyJ,SACAC,EAME1J,EANF0J,UAASC,EAMP3J,EALFqI,YAAAA,OAAW,IAAAsB,EAAG,WAAUA,EACxBC,EAIE5J,EAJF4J,MAAKC,EAIH7J,EAHFiG,QAAAA,OAAO,IAAA4D,EAAG7I,EAAAA,GAAS8I,SAAQD,EAAA/F,EAGzB9D,EADF+D,oBAAAA,OAAmB,IAAAD,EAAGiG,EAAAA,GAAUjG,EAElCI,GAAQC,EAAAA,EAAAA,GAA8BnE,EAAON,GACzCQ,GAAasC,EAAAA,EAAAA,GAAS,CAAC,EAAGxC,EAAO,CACrCqI,YAAAA,EACAE,cAAeW,IAEX5D,EAxGkB,SAAApF,GACxB,IACEmI,EAEEnI,EAFFmI,YACA/C,EACEpF,EADFoF,QAEIC,EAAQ,CACZhF,KAAM,CAAC,OAAQ,GAAFH,OAAKiI,IAClBC,QAAS,CAAC,WACVE,OAAQ,CAAC,UACTK,QAAS,CAAC,UAAW,GAAFzI,OAAKiI,IACxBU,aAAc,CAAC,eAAgB,GAAF3I,OAAKiI,KAEpC,OAAO7C,EAAAA,EAAAA,GAAeD,EAAO4C,EAAyB7C,EACxD,CA2FkBG,CAAkBvF,GAC5BY,GAAQkJ,EAAAA,EAAAA,KACRC,EAAQjH,EAAAA,SACRkH,EAAalH,EAAAA,OAAa,MAC1BmH,EAAyBnH,EAAAA,SACzBuF,EAA6C,kBAAtBW,EAAiC,GAAH9I,OAAM8I,EAAiB,MAAOA,EACnFkB,EAA+B,eAAhB/B,EACfgC,EAAOD,EAAe,QAAU,SACtCpH,EAAAA,WAAgB,WACd,OAAO,WACLsH,aAAaL,EAAMM,QACrB,CACF,GAAG,IACH,IAAMC,EAAUxH,EAAAA,OAAa,MACvByH,GAAYC,EAAAA,EAAAA,GAAWxH,EAAKsH,GAC5BG,GAA+B,SAAAC,GAAQ,OAAI,SAAAC,GAC/C,GAAID,EAAU,CACZ,IAAME,EAAON,EAAQD,aAGIQ,IAArBF,EACFD,EAASE,GAETF,EAASE,EAAMD,EAEnB,CACF,CAAC,EACKG,GAAiB,WAAH,OAASd,EAAWK,QAAUL,EAAWK,QAAQH,EAAe,cAAgB,gBAAkB,CAAC,EACjHa,GAAcN,IAA6B,SAACG,EAAMI,GAClDhB,EAAWK,SAAWH,IAExBF,EAAWK,QAAQX,MAAMzI,SAAW,YAEtC2J,EAAKlB,MAAMS,GAAQ9B,EACfc,GACFA,EAAQyB,EAAMI,EAElB,IACMC,GAAiBR,IAA6B,SAACG,EAAMI,GACzD,IAAME,EAAcJ,KAChBd,EAAWK,SAAWH,IAExBF,EAAWK,QAAQX,MAAMzI,SAAW,IAEtC,IAAAkK,GAGIC,EAAAA,EAAAA,GAAmB,CACrB1B,MAAAA,EACA3D,QAAAA,EACAkD,OAAAA,GACC,CACDoC,KAAM,UAPIC,EAAkBH,EAA5BrK,SACQyK,EAAwBJ,EAAhClC,OAQF,GAAgB,SAAZlD,EAAoB,CACtB,IAAMyF,EAAY5K,EAAMG,YAAY0K,sBAAsBP,GAC1DN,EAAKlB,MAAM4B,mBAAqB,GAAHpL,OAAMsL,EAAS,MAC5CvB,EAAuBI,QAAUmB,CACnC,MACEZ,EAAKlB,MAAM4B,mBAAmD,kBAAvBA,EAAkCA,EAAqB,GAAHpL,OAAMoL,EAAkB,MAErHV,EAAKlB,MAAMS,GAAQ,GAAHjK,OAAMgL,EAAW,MACjCN,EAAKlB,MAAM6B,yBAA2BA,EAClClC,GACFA,EAAWuB,EAAMI,EAErB,IACMU,GAAgBjB,IAA6B,SAACG,EAAMI,GACxDJ,EAAKlB,MAAMS,GAAQ,OACff,GACFA,EAAUwB,EAAMI,EAEpB,IACMW,GAAalB,IAA6B,SAAAG,GAC9CA,EAAKlB,MAAMS,GAAQ,GAAHjK,OAAM4K,KAAgB,MAClCxB,GACFA,EAAOsB,EAEX,IACMgB,GAAenB,GAA6BlB,GAC5CsC,GAAgBpB,IAA6B,SAAAG,GACjD,IAAMM,EAAcJ,KACpBgB,GAGIV,EAAAA,EAAAA,GAAmB,CACrB1B,MAAAA,EACA3D,QAAAA,EACAkD,OAAAA,GACC,CACDoC,KAAM,SAPIC,EAAkBQ,EAA5BhL,SACQyK,EAAwBO,EAAhC7C,OAQF,GAAgB,SAAZlD,EAAoB,CAGtB,IAAMyF,EAAY5K,EAAMG,YAAY0K,sBAAsBP,GAC1DN,EAAKlB,MAAM4B,mBAAqB,GAAHpL,OAAMsL,EAAS,MAC5CvB,EAAuBI,QAAUmB,CACnC,MACEZ,EAAKlB,MAAM4B,mBAAmD,kBAAvBA,EAAkCA,EAAqB,GAAHpL,OAAMoL,EAAkB,MAErHV,EAAKlB,MAAMS,GAAQ9B,EACnBuC,EAAKlB,MAAM6B,yBAA2BA,EAClC/B,GACFA,EAAUoB,EAEd,IAUA,OAAoBlF,EAAAA,EAAAA,KAAK7B,GAAqBvB,EAAAA,EAAAA,GAAS,CACrDwD,GAAIoD,EACJC,QAAS4B,GACT3B,UAAWsC,GACXrC,WAAY4B,GACZ3B,OAAQqC,GACRpC,SAAUqC,GACVpC,UAAWqC,GACX/C,eAjB2B,SAAAiD,GACX,SAAZhG,IACFgE,EAAMM,QAAU2B,WAAWD,EAAM9B,EAAuBI,SAAW,IAEjEvB,GAEFA,EAAewB,EAAQD,QAAS0B,EAEpC,EAUEzB,QAASA,EACTvE,QAAqB,SAAZA,EAAqB,KAAOA,GACpC/B,EAAO,CACRb,SAAU,SAACmB,EAAO2H,GAAU,OAAkBvG,EAAAA,EAAAA,KAAKwC,GAAc5F,EAAAA,EAAAA,GAAS,CACxE4J,GAAIlE,EACJ5E,WAAWqC,EAAAA,EAAAA,GAAKL,EAAQ/E,KAAM+C,EAAW,CACvC,QAAWgC,EAAQgD,QACnB,QAAWc,GAA4B,QAAlBb,GAA2BjD,EAAQkD,QACxDhE,IACFoF,OAAOpH,EAAAA,EAAAA,IAAQrC,EAAAA,EAAAA,GAAC,CAAC,EACdiK,EAAe,WAAa,YAAc7B,GAC1CqB,GACH1J,YAAYsC,EAAAA,EAAAA,GAAS,CAAC,EAAGtC,EAAY,CACnCsE,MAAAA,IAEFtB,IAAKuH,GACJ0B,EAAY,CACb9I,UAAuBuC,EAAAA,EAAAA,KAAKgD,EAAiB,CAC3C1I,YAAYsC,EAAAA,EAAAA,GAAS,CAAC,EAAGtC,EAAY,CACnCsE,MAAAA,IAEFlB,UAAWgC,EAAQuD,QACnB3F,IAAKgH,EACL7G,UAAuBuC,EAAAA,EAAAA,KAAKkD,EAAsB,CAChD5I,YAAYsC,EAAAA,EAAAA,GAAS,CAAC,EAAGtC,EAAY,CACnCsE,MAAAA,IAEFlB,UAAWgC,EAAQyD,aACnB1F,SAAUA,QAGb,IAEP,IAgGAW,EAASqI,gBAAiB,EAC1B,O,4BCtXMC,E,SAAkCtJ,mBAAoB+H,GAI5D,K,wBCRe,SAASwB,EAAgBjG,GAIrC,IAHDtG,EAAKsG,EAALtG,MACAwM,EAAMlG,EAANkG,OACAC,EAAcnG,EAAdmG,eAEA,OAAOD,EAAOE,QAAO,SAACC,EAAKnI,GAOzB,OANAmI,EAAInI,GAASxE,EAAMwE,GACfiI,GAC0B,qBAAjBzM,EAAMwE,KACfmI,EAAInI,GAASiI,EAAejI,IAGzBmI,CACT,GAAG,CAAC,EACN,C,iHCVe,SAASC,IACtB,OAAO5J,EAAAA,WAAiBsJ,EAAAA,EAC1B,C,0KCFM5M,EAAY,CAAC,WAAY,YAAa,QAAS,YAAa,WAAY,QAAS,SAAU,UAAW,YA4B/FmN,GAAgBjN,EAAAA,EAAAA,IAAO,QAAS,CAC3CE,KAAM,eACNP,KAAM,OACNQ,kBAAmB,SAAAuG,EAEhBrG,GAAW,IADZC,EAAUoG,EAAVpG,WAEA,OAAOsC,EAAAA,EAAAA,GAAS,CAAC,EAAGvC,EAAOM,KAA2B,cAArBL,EAAWsH,OAAyBvH,EAAO6M,eAAgB5M,EAAW6M,QAAU9M,EAAO8M,OAC1H,GAP2BnN,EAQ1B,SAAAgB,GAAA,IAAAgG,EACD9F,EAAKF,EAALE,MACAZ,EAAUU,EAAVV,WAAU,OACNsC,EAAAA,EAAAA,GAAS,CACbgF,OAAQ1G,EAAMe,MAAQf,GAAOgB,QAAQkL,KAAKC,WACzCnM,EAAMoM,WAAWC,OAAKvG,EAAA,CACvBwG,WAAY,WACZ7G,QAAS,EACTpF,SAAU,aAAUhB,EAAAA,EAAAA,GAAAyG,EAAA,KAAAxG,OACdiN,EAAAA,EAAiBC,SAAY,CACjC9F,OAAQ1G,EAAMe,MAAQf,GAAOgB,QAAQ5B,EAAWsH,OAAO+F,QACxDpN,EAAAA,EAAAA,GAAAyG,EAAA,KAAAxG,OACKiN,EAAAA,EAAiBjL,UAAa,CAClCoF,OAAQ1G,EAAMe,MAAQf,GAAOgB,QAAQkL,KAAK5K,YAC3CjC,EAAAA,EAAAA,GAAAyG,EAAA,KAAAxG,OACKiN,EAAAA,EAAiBG,OAAU,CAC/BhG,OAAQ1G,EAAMe,MAAQf,GAAOgB,QAAQ0L,MAAMD,OAC5C3G,GACD,IACI6G,GAAoB7N,EAAAA,EAAAA,IAAO,OAAQ,CACvCE,KAAM,eACNP,KAAM,WACNQ,kBAAmB,SAACC,EAAOC,GAAM,OAAKA,EAAOyN,QAAQ,GAH7B9N,EAIvB,SAAAiB,GAAA,IACDC,EAAKD,EAALC,MAAK,OAAAX,EAAAA,EAAAA,GAAA,QAAAC,OAECiN,EAAAA,EAAiBG,OAAU,CAC/BhG,OAAQ1G,EAAMe,MAAQf,GAAOgB,QAAQ0L,MAAMD,MAC5C,IAEGI,EAAyB3K,EAAAA,YAAiB,SAAmBC,EAASC,GAC1E,IAAMlD,GAAQmD,EAAAA,EAAAA,GAAc,CAC1BnD,MAAOiD,EACPnD,KAAM,iBAGJuD,EAGErD,EAHFqD,SACAC,EAEEtD,EAFFsD,UAASsK,EAEP5N,EADFkI,UAAAA,OAAS,IAAA0F,EAAG,QAAOA,EAErB1J,GAAQC,EAAAA,EAAAA,GAA8BnE,EAAON,GACzC+M,GAAiBG,EAAAA,EAAAA,KACjBiB,GAAMtB,EAAAA,EAAAA,GAAiB,CAC3BvM,MAAAA,EACAyM,eAAAA,EACAD,OAAQ,CAAC,QAAS,WAAY,UAAW,WAAY,QAAS,YAE1DtM,GAAasC,EAAAA,EAAAA,GAAS,CAAC,EAAGxC,EAAO,CACrCwH,MAAOqG,EAAIrG,OAAS,UACpBU,UAAAA,EACA9F,SAAUyL,EAAIzL,SACdoL,MAAOK,EAAIL,MACXT,OAAQc,EAAId,OACZO,QAASO,EAAIP,QACbQ,SAAUD,EAAIC,WAEVxI,EAhFkB,SAAApF,GACxB,IACEoF,EAOEpF,EAPFoF,QACAkC,EAMEtH,EANFsH,MACA8F,EAKEpN,EALFoN,QACAlL,EAIElC,EAJFkC,SACAoL,EAGEtN,EAHFsN,MACAT,EAEE7M,EAFF6M,OACAe,EACE5N,EADF4N,SAEIvI,EAAQ,CACZhF,KAAM,CAAC,OAAQ,QAAFH,QAAU2N,EAAAA,EAAAA,GAAWvG,IAAUpF,GAAY,WAAYoL,GAAS,QAAST,GAAU,SAAUO,GAAW,UAAWQ,GAAY,YAC5IJ,SAAU,CAAC,WAAYF,GAAS,UAElC,OAAOhI,EAAAA,EAAAA,GAAeD,EAAOyI,EAAAA,EAA4B1I,EAC3D,CAiEkBG,CAAkBvF,GAClC,OAAoBwF,EAAAA,EAAAA,MAAMmH,GAAerK,EAAAA,EAAAA,GAAS,CAChD4J,GAAIlE,EACJhI,WAAYA,EACZoD,WAAWqC,EAAAA,EAAAA,GAAKL,EAAQ/E,KAAM+C,GAC9BJ,IAAKA,GACJgB,EAAO,CACRb,SAAU,CAACA,EAAUwK,EAAIC,WAAyBpI,EAAAA,EAAAA,MAAM+H,EAAmB,CACzEvN,WAAYA,EACZ,eAAe,EACfoD,UAAWgC,EAAQoI,SACnBrK,SAAU,CAAC,SAAU,UAG3B,IAsDA,K,kFClKO,SAAS2K,EAA2BzO,GACzC,OAAOC,EAAAA,EAAAA,GAAqB,eAAgBD,EAC9C,CACA,IAAM8N,GAAmB5N,EAAAA,EAAAA,GAAuB,eAAgB,CAAC,OAAQ,iBAAkB,UAAW,WAAY,QAAS,SAAU,WAAY,aACjJ,K,gOCJO,SAASwO,EAA4B1O,GAC1C,OAAOC,EAAAA,EAAAA,GAAqB,gBAAiBD,EAC/C,EAC0BE,EAAAA,EAAAA,GAAuB,gBAAiB,CAAC,OAAQ,UAAW,WAAY,QAAS,WAAY,WAAY,cAAe,YAAa,SAAU,WAAY,WAAY,SAAU,aAA3M,I,WCDMC,EAAY,CAAC,mBAAoB,SAAU,SAAU,UAAW,aA8BhEwO,GAAiBtO,EAAAA,EAAAA,IAAO+N,EAAAA,EAAW,CACvCQ,kBAAmB,SAAAC,GAAI,OAAIC,EAAAA,EAAAA,IAAsBD,IAAkB,YAATA,CAAkB,EAC5EtO,KAAM,gBACNP,KAAM,OACNQ,kBAAmB,SAACC,EAAOC,GACzB,IACEC,EACEF,EADFE,WAEF,MAAO,EAAAC,EAAAA,EAAAA,GAAA,SAAAC,OACEiN,EAAAA,EAAiBK,UAAazN,EAAOyN,UAC3CzN,EAAOM,KAAML,EAAWoO,aAAerO,EAAOqO,YAAiC,UAApBpO,EAAWmK,MAAoBpK,EAAOsO,UAAWrO,EAAWsO,QAAUvO,EAAOuO,QAAStO,EAAWuO,kBAAoBxO,EAAOyO,SAAUzO,EAAOC,EAAWyO,SACxN,GAXqB/O,EAYpB,SAAAgB,GAAA,IACDE,EAAKF,EAALE,MACAZ,EAAUU,EAAVV,WAAU,OACNsC,EAAAA,EAAAA,GAAS,CACbR,QAAS,QACT4M,gBAAiB,WACjBC,WAAY,SACZpG,SAAU,SACVqG,aAAc,WACdC,SAAU,QACT7O,EAAWoO,aAAe,CAC3BnN,SAAU,WACVG,KAAM,EACNC,IAAK,EAELmG,UAAW,+BACU,UAApBxH,EAAWmK,MAAoB,CAEhC3C,UAAW,+BACVxH,EAAWsO,QAAU,CACtB9G,UAAW,mCACXkH,gBAAiB,WACjBG,SAAU,SACR7O,EAAWuO,kBAAoB,CACjC1N,WAAYD,EAAMG,YAAYG,OAAO,CAAC,QAAS,YAAa,aAAc,CACxEJ,SAAUF,EAAMG,YAAYD,SAASgO,QACrC7F,OAAQrI,EAAMG,YAAYkI,OAAO8F,WAEX,WAAvB/O,EAAWyO,UAAwBnM,EAAAA,EAAAA,GAAS,CAK7C0M,OAAQ,EACRC,cAAe,OACfzH,UAAW,iCACXqH,SAAU,qBACW,UAApB7O,EAAWmK,MAAoB,CAChC3C,UAAW,kCACVxH,EAAWsO,SAAUhM,EAAAA,EAAAA,GAAS,CAC/B4M,WAAY,OACZD,cAAe,OACfzH,UAAW,mCACXqH,SAAU,qBACW,UAApB7O,EAAWmK,MAAoB,CAChC3C,UAAW,sCACe,aAAvBxH,EAAWyO,UAA0BnM,EAAAA,EAAAA,GAAS,CAEjD0M,OAAQ,EACRC,cAAe,OACfzH,UAAW,iCACXqH,SAAU,qBACW,UAApB7O,EAAWmK,MAAoB,CAChC3C,UAAW,iCACVxH,EAAWsO,QAAU,CACtBY,WAAY,OACZD,cAAe,OAGfJ,SAAU,oBACVrH,UAAW,sCACV,IA2GH,EA1GgC1E,EAAAA,YAAiB,SAAoBC,EAASC,GAC5E,IAAMlD,GAAQmD,EAAAA,EAAAA,GAAc,CAC1BrD,KAAM,gBACNE,MAAOiD,IAEToM,EAIMrP,EAHFyO,iBAAAA,OAAgB,IAAAY,GAAQA,EAChBC,EAENtP,EAFFwO,OACAlL,EACEtD,EADFsD,UAEFY,GAAQC,EAAAA,EAAAA,GAA8BnE,EAAON,GACzC+M,GAAiBG,EAAAA,EAAAA,KACnB4B,EAASc,EACS,qBAAXd,GAA0B/B,IACnC+B,EAAS/B,EAAeM,QAAUN,EAAea,SAAWb,EAAe8C,cAE7E,IAAM1B,GAAMtB,EAAAA,EAAAA,GAAiB,CAC3BvM,MAAAA,EACAyM,eAAAA,EACAD,OAAQ,CAAC,OAAQ,UAAW,cAExBtM,GAAasC,EAAAA,EAAAA,GAAS,CAAC,EAAGxC,EAAO,CACrCyO,iBAAAA,EACAH,YAAa7B,EACb+B,OAAAA,EACAnE,KAAMwD,EAAIxD,KACVsE,QAASd,EAAIc,QACbb,SAAUD,EAAIC,WAEVxI,EAxHkB,SAAApF,GACxB,IACEoF,EAOEpF,EAPFoF,QACAgJ,EAMEpO,EANFoO,YACAjE,EAKEnK,EALFmK,KACAmE,EAIEtO,EAJFsO,OACAC,EAGEvO,EAHFuO,iBACAE,EAEEzO,EAFFyO,QACAb,EACE5N,EADF4N,SAEIvI,EAAQ,CACZhF,KAAM,CAAC,OAAQ+N,GAAe,eAAgBG,GAAoB,WAAYD,GAAU,SAAUnE,GAAiB,WAATA,GAAqB,OAAJjK,QAAW2N,EAAAA,EAAAA,GAAW1D,IAASsE,GAC1JjB,SAAU,CAACI,GAAY,aAEnB0B,GAAkBhK,EAAAA,EAAAA,GAAeD,EAAO0I,EAA6B3I,GAC3E,OAAO9C,EAAAA,EAAAA,GAAS,CAAC,EAAG8C,EAASkK,EAC/B,CAwGkB/J,CAAkBvF,GAClC,OAAoB0F,EAAAA,EAAAA,KAAKsI,GAAgB1L,EAAAA,EAAAA,GAAS,CAChD,cAAegM,EACftO,WAAYA,EACZgD,IAAKA,EACLI,WAAWqC,EAAAA,EAAAA,GAAKL,EAAQ/E,KAAM+C,IAC7BY,EAAO,CACRoB,QAASA,IAEb,G","sources":["../node_modules/@mui/material/Accordion/accordionClasses.js","../node_modules/@mui/material/Accordion/Accordion.js","../node_modules/@mui/material/Accordion/AccordionContext.js","../node_modules/@mui/material/AccordionDetails/accordionDetailsClasses.js","../node_modules/@mui/material/AccordionDetails/AccordionDetails.js","../node_modules/@mui/material/AccordionSummary/accordionSummaryClasses.js","../node_modules/@mui/material/AccordionSummary/AccordionSummary.js","../node_modules/@mui/material/Collapse/collapseClasses.js","../node_modules/@mui/material/Collapse/Collapse.js","../node_modules/@mui/material/FormControl/FormControlContext.js","../node_modules/@mui/material/FormControl/formControlState.js","../node_modules/@mui/material/FormControl/useFormControl.js","../node_modules/@mui/material/FormLabel/FormLabel.js","../node_modules/@mui/material/FormLabel/formLabelClasses.js","../node_modules/@mui/material/InputLabel/inputLabelClasses.js","../node_modules/@mui/material/InputLabel/InputLabel.js"],"sourcesContent":["import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getAccordionUtilityClass(slot) {\n return generateUtilityClass('MuiAccordion', slot);\n}\nconst accordionClasses = generateUtilityClasses('MuiAccordion', ['root', 'rounded', 'expanded', 'disabled', 'gutters', 'region']);\nexport default accordionClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"defaultExpanded\", \"disabled\", \"disableGutters\", \"expanded\", \"onChange\", \"square\", \"TransitionComponent\", \"TransitionProps\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Collapse from '../Collapse';\nimport Paper from '../Paper';\nimport AccordionContext from './AccordionContext';\nimport useControlled from '../utils/useControlled';\nimport accordionClasses, { getAccordionUtilityClass } from './accordionClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n square,\n expanded,\n disabled,\n disableGutters\n } = ownerState;\n const slots = {\n root: ['root', !square && 'rounded', expanded && 'expanded', disabled && 'disabled', !disableGutters && 'gutters'],\n region: ['region']\n };\n return composeClasses(slots, getAccordionUtilityClass, classes);\n};\nconst AccordionRoot = styled(Paper, {\n name: 'MuiAccordion',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${accordionClasses.region}`]: styles.region\n }, styles.root, !ownerState.square && styles.rounded, !ownerState.disableGutters && styles.gutters];\n }\n})(({\n theme\n}) => {\n const transition = {\n duration: theme.transitions.duration.shortest\n };\n return {\n position: 'relative',\n transition: theme.transitions.create(['margin'], transition),\n overflowAnchor: 'none',\n // Keep the same scrolling position\n '&:before': {\n position: 'absolute',\n left: 0,\n top: -1,\n right: 0,\n height: 1,\n content: '\"\"',\n opacity: 1,\n backgroundColor: (theme.vars || theme).palette.divider,\n transition: theme.transitions.create(['opacity', 'background-color'], transition)\n },\n '&:first-of-type': {\n '&:before': {\n display: 'none'\n }\n },\n [`&.${accordionClasses.expanded}`]: {\n '&:before': {\n opacity: 0\n },\n '&:first-of-type': {\n marginTop: 0\n },\n '&:last-of-type': {\n marginBottom: 0\n },\n '& + &': {\n '&:before': {\n display: 'none'\n }\n }\n },\n [`&.${accordionClasses.disabled}`]: {\n backgroundColor: (theme.vars || theme).palette.action.disabledBackground\n }\n };\n}, ({\n theme,\n ownerState\n}) => _extends({}, !ownerState.square && {\n borderRadius: 0,\n '&:first-of-type': {\n borderTopLeftRadius: (theme.vars || theme).shape.borderRadius,\n borderTopRightRadius: (theme.vars || theme).shape.borderRadius\n },\n '&:last-of-type': {\n borderBottomLeftRadius: (theme.vars || theme).shape.borderRadius,\n borderBottomRightRadius: (theme.vars || theme).shape.borderRadius,\n // Fix a rendering issue on Edge\n '@supports (-ms-ime-align: auto)': {\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }\n }\n}, !ownerState.disableGutters && {\n [`&.${accordionClasses.expanded}`]: {\n margin: '16px 0'\n }\n}));\nconst Accordion = /*#__PURE__*/React.forwardRef(function Accordion(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiAccordion'\n });\n const {\n children: childrenProp,\n className,\n defaultExpanded = false,\n disabled = false,\n disableGutters = false,\n expanded: expandedProp,\n onChange,\n square = false,\n TransitionComponent = Collapse,\n TransitionProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const [expanded, setExpandedState] = useControlled({\n controlled: expandedProp,\n default: defaultExpanded,\n name: 'Accordion',\n state: 'expanded'\n });\n const handleChange = React.useCallback(event => {\n setExpandedState(!expanded);\n if (onChange) {\n onChange(event, !expanded);\n }\n }, [expanded, onChange, setExpandedState]);\n const [summary, ...children] = React.Children.toArray(childrenProp);\n const contextValue = React.useMemo(() => ({\n expanded,\n disabled,\n disableGutters,\n toggle: handleChange\n }), [expanded, disabled, disableGutters, handleChange]);\n const ownerState = _extends({}, props, {\n square,\n disabled,\n disableGutters,\n expanded\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(AccordionRoot, _extends({\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState,\n square: square\n }, other, {\n children: [/*#__PURE__*/_jsx(AccordionContext.Provider, {\n value: contextValue,\n children: summary\n }), /*#__PURE__*/_jsx(TransitionComponent, _extends({\n in: expanded,\n timeout: \"auto\"\n }, TransitionProps, {\n children: /*#__PURE__*/_jsx(\"div\", {\n \"aria-labelledby\": summary.props.id,\n id: summary.props['aria-controls'],\n role: \"region\",\n className: classes.region,\n children: children\n })\n }))]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Accordion.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: chainPropTypes(PropTypes.node.isRequired, props => {\n const summary = React.Children.toArray(props.children)[0];\n if (isFragment(summary)) {\n return new Error(\"MUI: The Accordion doesn't accept a Fragment as a child. \" + 'Consider providing an array instead.');\n }\n if (! /*#__PURE__*/React.isValidElement(summary)) {\n return new Error('MUI: Expected the first child of Accordion to be a valid element.');\n }\n return null;\n }),\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 * If `true`, expands the accordion by default.\n * @default false\n */\n defaultExpanded: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, it removes the margin between two expanded accordion items and the increase of height.\n * @default false\n */\n disableGutters: PropTypes.bool,\n /**\n * If `true`, expands the accordion, otherwise collapse it.\n * Setting this prop enables control over the accordion.\n */\n expanded: PropTypes.bool,\n /**\n * Callback fired when the expand/collapse state is changed.\n *\n * @param {React.SyntheticEvent} event The event source of the callback. **Warning**: This is a generic event not a change event.\n * @param {boolean} expanded The `expanded` state of the accordion.\n */\n onChange: PropTypes.func,\n /**\n * If `true`, rounded corners are disabled.\n * @default false\n */\n square: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The component used for the transition.\n * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n * @default Collapse\n */\n TransitionComponent: PropTypes.elementType,\n /**\n * Props applied to the transition element.\n * By default, the element is based on this [`Transition`](http://reactcommunity.org/react-transition-group/transition/) component.\n */\n TransitionProps: PropTypes.object\n} : void 0;\nexport default Accordion;","'use client';\n\nimport * as React from 'react';\n\n/**\n * @ignore - internal component.\n * @type {React.Context<{} | {expanded: boolean, disabled: boolean, toggle: () => void}>}\n */\nconst AccordionContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n AccordionContext.displayName = 'AccordionContext';\n}\nexport default AccordionContext;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getAccordionDetailsUtilityClass(slot) {\n return generateUtilityClass('MuiAccordionDetails', slot);\n}\nconst accordionDetailsClasses = generateUtilityClasses('MuiAccordionDetails', ['root']);\nexport default accordionDetailsClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getAccordionDetailsUtilityClass } from './accordionDetailsClasses';\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, getAccordionDetailsUtilityClass, classes);\n};\nconst AccordionDetailsRoot = styled('div', {\n name: 'MuiAccordionDetails',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(({\n theme\n}) => ({\n padding: theme.spacing(1, 2, 2)\n}));\nconst AccordionDetails = /*#__PURE__*/React.forwardRef(function AccordionDetails(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiAccordionDetails'\n });\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(AccordionDetailsRoot, _extends({\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? AccordionDetails.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} : void 0;\nexport default AccordionDetails;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getAccordionSummaryUtilityClass(slot) {\n return generateUtilityClass('MuiAccordionSummary', slot);\n}\nconst accordionSummaryClasses = generateUtilityClasses('MuiAccordionSummary', ['root', 'expanded', 'focusVisible', 'disabled', 'gutters', 'contentGutters', 'content', 'expandIconWrapper']);\nexport default accordionSummaryClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"expandIcon\", \"focusVisibleClassName\", \"onClick\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ButtonBase from '../ButtonBase';\nimport AccordionContext from '../Accordion/AccordionContext';\nimport accordionSummaryClasses, { getAccordionSummaryUtilityClass } from './accordionSummaryClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n expanded,\n disabled,\n disableGutters\n } = ownerState;\n const slots = {\n root: ['root', expanded && 'expanded', disabled && 'disabled', !disableGutters && 'gutters'],\n focusVisible: ['focusVisible'],\n content: ['content', expanded && 'expanded', !disableGutters && 'contentGutters'],\n expandIconWrapper: ['expandIconWrapper', expanded && 'expanded']\n };\n return composeClasses(slots, getAccordionSummaryUtilityClass, classes);\n};\nconst AccordionSummaryRoot = styled(ButtonBase, {\n name: 'MuiAccordionSummary',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(({\n theme,\n ownerState\n}) => {\n const transition = {\n duration: theme.transitions.duration.shortest\n };\n return _extends({\n display: 'flex',\n minHeight: 48,\n padding: theme.spacing(0, 2),\n transition: theme.transitions.create(['min-height', 'background-color'], transition),\n [`&.${accordionSummaryClasses.focusVisible}`]: {\n backgroundColor: (theme.vars || theme).palette.action.focus\n },\n [`&.${accordionSummaryClasses.disabled}`]: {\n opacity: (theme.vars || theme).palette.action.disabledOpacity\n },\n [`&:hover:not(.${accordionSummaryClasses.disabled})`]: {\n cursor: 'pointer'\n }\n }, !ownerState.disableGutters && {\n [`&.${accordionSummaryClasses.expanded}`]: {\n minHeight: 64\n }\n });\n});\nconst AccordionSummaryContent = styled('div', {\n name: 'MuiAccordionSummary',\n slot: 'Content',\n overridesResolver: (props, styles) => styles.content\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'flex',\n flexGrow: 1,\n margin: '12px 0'\n}, !ownerState.disableGutters && {\n transition: theme.transitions.create(['margin'], {\n duration: theme.transitions.duration.shortest\n }),\n [`&.${accordionSummaryClasses.expanded}`]: {\n margin: '20px 0'\n }\n}));\nconst AccordionSummaryExpandIconWrapper = styled('div', {\n name: 'MuiAccordionSummary',\n slot: 'ExpandIconWrapper',\n overridesResolver: (props, styles) => styles.expandIconWrapper\n})(({\n theme\n}) => ({\n display: 'flex',\n color: (theme.vars || theme).palette.action.active,\n transform: 'rotate(0deg)',\n transition: theme.transitions.create('transform', {\n duration: theme.transitions.duration.shortest\n }),\n [`&.${accordionSummaryClasses.expanded}`]: {\n transform: 'rotate(180deg)'\n }\n}));\nconst AccordionSummary = /*#__PURE__*/React.forwardRef(function AccordionSummary(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiAccordionSummary'\n });\n const {\n children,\n className,\n expandIcon,\n focusVisibleClassName,\n onClick\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n disabled = false,\n disableGutters,\n expanded,\n toggle\n } = React.useContext(AccordionContext);\n const handleChange = event => {\n if (toggle) {\n toggle(event);\n }\n if (onClick) {\n onClick(event);\n }\n };\n const ownerState = _extends({}, props, {\n expanded,\n disabled,\n disableGutters\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(AccordionSummaryRoot, _extends({\n focusRipple: false,\n disableRipple: true,\n disabled: disabled,\n component: \"div\",\n \"aria-expanded\": expanded,\n className: clsx(classes.root, className),\n focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n onClick: handleChange,\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: [/*#__PURE__*/_jsx(AccordionSummaryContent, {\n className: classes.content,\n ownerState: ownerState,\n children: children\n }), expandIcon && /*#__PURE__*/_jsx(AccordionSummaryExpandIconWrapper, {\n className: classes.expandIconWrapper,\n ownerState: ownerState,\n children: expandIcon\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? AccordionSummary.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 icon to display as the expand indicator.\n */\n expandIcon: PropTypes.node,\n /**\n * This prop can help identify which element has keyboard focus.\n * The class name will be applied when the element gains the focus through keyboard interaction.\n * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n * if needed.\n */\n focusVisibleClassName: PropTypes.string,\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AccordionSummary;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCollapseUtilityClass(slot) {\n return generateUtilityClass('MuiCollapse', slot);\n}\nconst collapseClasses = generateUtilityClasses('MuiCollapse', ['root', 'horizontal', 'vertical', 'entered', 'hidden', 'wrapper', 'wrapperInner']);\nexport default collapseClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"addEndListener\", \"children\", \"className\", \"collapsedSize\", \"component\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"orientation\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport { elementTypeAcceptingRef } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { duration } from '../styles/createTransitions';\nimport { getTransitionProps } from '../transitions/utils';\nimport useTheme from '../styles/useTheme';\nimport { useForkRef } from '../utils';\nimport { getCollapseUtilityClass } from './collapseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n orientation,\n classes\n } = ownerState;\n const slots = {\n root: ['root', `${orientation}`],\n entered: ['entered'],\n hidden: ['hidden'],\n wrapper: ['wrapper', `${orientation}`],\n wrapperInner: ['wrapperInner', `${orientation}`]\n };\n return composeClasses(slots, getCollapseUtilityClass, classes);\n};\nconst CollapseRoot = styled('div', {\n name: 'MuiCollapse',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.orientation], ownerState.state === 'entered' && styles.entered, ownerState.state === 'exited' && !ownerState.in && ownerState.collapsedSize === '0px' && styles.hidden];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n height: 0,\n overflow: 'hidden',\n transition: theme.transitions.create('height')\n}, ownerState.orientation === 'horizontal' && {\n height: 'auto',\n width: 0,\n transition: theme.transitions.create('width')\n}, ownerState.state === 'entered' && _extends({\n height: 'auto',\n overflow: 'visible'\n}, ownerState.orientation === 'horizontal' && {\n width: 'auto'\n}), ownerState.state === 'exited' && !ownerState.in && ownerState.collapsedSize === '0px' && {\n visibility: 'hidden'\n}));\nconst CollapseWrapper = styled('div', {\n name: 'MuiCollapse',\n slot: 'Wrapper',\n overridesResolver: (props, styles) => styles.wrapper\n})(({\n ownerState\n}) => _extends({\n // Hack to get children with a negative margin to not falsify the height computation.\n display: 'flex',\n width: '100%'\n}, ownerState.orientation === 'horizontal' && {\n width: 'auto',\n height: '100%'\n}));\nconst CollapseWrapperInner = styled('div', {\n name: 'MuiCollapse',\n slot: 'WrapperInner',\n overridesResolver: (props, styles) => styles.wrapperInner\n})(({\n ownerState\n}) => _extends({\n width: '100%'\n}, ownerState.orientation === 'horizontal' && {\n width: 'auto',\n height: '100%'\n}));\n\n/**\n * The Collapse transition is used by the\n * [Vertical Stepper](/material-ui/react-stepper/#vertical-stepper) StepContent component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Collapse = /*#__PURE__*/React.forwardRef(function Collapse(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCollapse'\n });\n const {\n addEndListener,\n children,\n className,\n collapsedSize: collapsedSizeProp = '0px',\n component,\n easing,\n in: inProp,\n onEnter,\n onEntered,\n onEntering,\n onExit,\n onExited,\n onExiting,\n orientation = 'vertical',\n style,\n timeout = duration.standard,\n // eslint-disable-next-line react/prop-types\n TransitionComponent = Transition\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n orientation,\n collapsedSize: collapsedSizeProp\n });\n const classes = useUtilityClasses(ownerState);\n const theme = useTheme();\n const timer = React.useRef();\n const wrapperRef = React.useRef(null);\n const autoTransitionDuration = React.useRef();\n const collapsedSize = typeof collapsedSizeProp === 'number' ? `${collapsedSizeProp}px` : collapsedSizeProp;\n const isHorizontal = orientation === 'horizontal';\n const size = isHorizontal ? 'width' : 'height';\n React.useEffect(() => {\n return () => {\n clearTimeout(timer.current);\n };\n }, []);\n const nodeRef = React.useRef(null);\n const handleRef = useForkRef(ref, nodeRef);\n const normalizedTransitionCallback = callback => maybeIsAppearing => {\n if (callback) {\n const node = nodeRef.current;\n\n // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n if (maybeIsAppearing === undefined) {\n callback(node);\n } else {\n callback(node, maybeIsAppearing);\n }\n }\n };\n const getWrapperSize = () => wrapperRef.current ? wrapperRef.current[isHorizontal ? 'clientWidth' : 'clientHeight'] : 0;\n const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n if (wrapperRef.current && isHorizontal) {\n // Set absolute position to get the size of collapsed content\n wrapperRef.current.style.position = 'absolute';\n }\n node.style[size] = collapsedSize;\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n const handleEntering = normalizedTransitionCallback((node, isAppearing) => {\n const wrapperSize = getWrapperSize();\n if (wrapperRef.current && isHorizontal) {\n // After the size is read reset the position back to default\n wrapperRef.current.style.position = '';\n }\n const {\n duration: transitionDuration,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'enter'\n });\n if (timeout === 'auto') {\n const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n node.style.transitionDuration = `${duration2}ms`;\n autoTransitionDuration.current = duration2;\n } else {\n node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : `${transitionDuration}ms`;\n }\n node.style[size] = `${wrapperSize}px`;\n node.style.transitionTimingFunction = transitionTimingFunction;\n if (onEntering) {\n onEntering(node, isAppearing);\n }\n });\n const handleEntered = normalizedTransitionCallback((node, isAppearing) => {\n node.style[size] = 'auto';\n if (onEntered) {\n onEntered(node, isAppearing);\n }\n });\n const handleExit = normalizedTransitionCallback(node => {\n node.style[size] = `${getWrapperSize()}px`;\n if (onExit) {\n onExit(node);\n }\n });\n const handleExited = normalizedTransitionCallback(onExited);\n const handleExiting = normalizedTransitionCallback(node => {\n const wrapperSize = getWrapperSize();\n const {\n duration: transitionDuration,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'exit'\n });\n if (timeout === 'auto') {\n // TODO: rename getAutoHeightDuration to something more generic (width support)\n // Actually it just calculates animation duration based on size\n const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n node.style.transitionDuration = `${duration2}ms`;\n autoTransitionDuration.current = duration2;\n } else {\n node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : `${transitionDuration}ms`;\n }\n node.style[size] = collapsedSize;\n node.style.transitionTimingFunction = transitionTimingFunction;\n if (onExiting) {\n onExiting(node);\n }\n });\n const handleAddEndListener = next => {\n if (timeout === 'auto') {\n timer.current = setTimeout(next, autoTransitionDuration.current || 0);\n }\n if (addEndListener) {\n // Old call signature before `react-transition-group` implemented `nodeRef`\n addEndListener(nodeRef.current, next);\n }\n };\n return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n in: inProp,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n nodeRef: nodeRef,\n timeout: timeout === 'auto' ? null : timeout\n }, other, {\n children: (state, childProps) => /*#__PURE__*/_jsx(CollapseRoot, _extends({\n as: component,\n className: clsx(classes.root, className, {\n 'entered': classes.entered,\n 'exited': !inProp && collapsedSize === '0px' && classes.hidden\n }[state]),\n style: _extends({\n [isHorizontal ? 'minWidth' : 'minHeight']: collapsedSize\n }, style),\n ownerState: _extends({}, ownerState, {\n state\n }),\n ref: handleRef\n }, childProps, {\n children: /*#__PURE__*/_jsx(CollapseWrapper, {\n ownerState: _extends({}, ownerState, {\n state\n }),\n className: classes.wrapper,\n ref: wrapperRef,\n children: /*#__PURE__*/_jsx(CollapseWrapperInner, {\n ownerState: _extends({}, ownerState, {\n state\n }),\n className: classes.wrapperInner,\n children: children\n })\n })\n }))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Collapse.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 * Add a custom transition end trigger. Called with the transitioning DOM\n * node and a done callback. Allows for more fine grained transition end\n * logic. Note: Timeouts are still used as a fallback if provided.\n */\n addEndListener: PropTypes.func,\n /**\n * The content node to be collapsed.\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 width (horizontal) or height (vertical) of the container when collapsed.\n * @default '0px'\n */\n collapsedSize: PropTypes.oneOfType([PropTypes.number, 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: elementTypeAcceptingRef,\n /**\n * The transition timing function.\n * You may specify a single easing or a object containing enter and exit values.\n */\n easing: PropTypes.oneOfType([PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string\n }), PropTypes.string]),\n /**\n * If `true`, the component will transition in.\n */\n in: PropTypes.bool,\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n /**\n * The transition orientation.\n * @default 'vertical'\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n *\n * Set to 'auto' to automatically calculate transition time based on height.\n * @default duration.standard\n */\n timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nCollapse.muiSupportAuto = true;\nexport default Collapse;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst FormControlContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n FormControlContext.displayName = 'FormControlContext';\n}\nexport default FormControlContext;","export default function formControlState({\n props,\n states,\n muiFormControl\n}) {\n return states.reduce((acc, state) => {\n acc[state] = props[state];\n if (muiFormControl) {\n if (typeof props[state] === 'undefined') {\n acc[state] = muiFormControl[state];\n }\n }\n return acc;\n }, {});\n}","'use client';\n\nimport * as React from 'react';\nimport FormControlContext from './FormControlContext';\nexport default function useFormControl() {\n return React.useContext(FormControlContext);\n}","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"error\", \"filled\", \"focused\", \"required\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport formLabelClasses, { getFormLabelUtilityClasses } from './formLabelClasses';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color,\n focused,\n disabled,\n error,\n filled,\n required\n } = ownerState;\n const slots = {\n root: ['root', `color${capitalize(color)}`, disabled && 'disabled', error && 'error', filled && 'filled', focused && 'focused', required && 'required'],\n asterisk: ['asterisk', error && 'error']\n };\n return composeClasses(slots, getFormLabelUtilityClasses, classes);\n};\nexport const FormLabelRoot = styled('label', {\n name: 'MuiFormLabel',\n slot: 'Root',\n overridesResolver: ({\n ownerState\n }, styles) => {\n return _extends({}, styles.root, ownerState.color === 'secondary' && styles.colorSecondary, ownerState.filled && styles.filled);\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n color: (theme.vars || theme).palette.text.secondary\n}, theme.typography.body1, {\n lineHeight: '1.4375em',\n padding: 0,\n position: 'relative',\n [`&.${formLabelClasses.focused}`]: {\n color: (theme.vars || theme).palette[ownerState.color].main\n },\n [`&.${formLabelClasses.disabled}`]: {\n color: (theme.vars || theme).palette.text.disabled\n },\n [`&.${formLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}));\nconst AsteriskComponent = styled('span', {\n name: 'MuiFormLabel',\n slot: 'Asterisk',\n overridesResolver: (props, styles) => styles.asterisk\n})(({\n theme\n}) => ({\n [`&.${formLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}));\nconst FormLabel = /*#__PURE__*/React.forwardRef(function FormLabel(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFormLabel'\n });\n const {\n children,\n className,\n component = 'label'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['color', 'required', 'focused', 'disabled', 'error', 'filled']\n });\n const ownerState = _extends({}, props, {\n color: fcs.color || 'primary',\n component,\n disabled: fcs.disabled,\n error: fcs.error,\n filled: fcs.filled,\n focused: fcs.focused,\n required: fcs.required\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(FormLabelRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: [children, fcs.required && /*#__PURE__*/_jsxs(AsteriskComponent, {\n ownerState: ownerState,\n \"aria-hidden\": true,\n className: classes.asterisk,\n children: [\"\\u2009\", '*']\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormLabel.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the label should be displayed in a disabled state.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the label should use filled classes key.\n */\n filled: PropTypes.bool,\n /**\n * If `true`, the input of this label is focused (used by `FormGroup` components).\n */\n focused: PropTypes.bool,\n /**\n * If `true`, the label will indicate that the `input` is required.\n */\n required: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default FormLabel;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getFormLabelUtilityClasses(slot) {\n return generateUtilityClass('MuiFormLabel', slot);\n}\nconst formLabelClasses = generateUtilityClasses('MuiFormLabel', ['root', 'colorSecondary', 'focused', 'disabled', 'error', 'filled', 'required', 'asterisk']);\nexport default formLabelClasses;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getInputLabelUtilityClasses(slot) {\n return generateUtilityClass('MuiInputLabel', slot);\n}\nconst inputLabelClasses = generateUtilityClasses('MuiInputLabel', ['root', 'focused', 'disabled', 'error', 'required', 'asterisk', 'formControl', 'sizeSmall', 'shrink', 'animated', 'standard', 'filled', 'outlined']);\nexport default inputLabelClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disableAnimation\", \"margin\", \"shrink\", \"variant\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport clsx from 'clsx';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport FormLabel, { formLabelClasses } from '../FormLabel';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { getInputLabelUtilityClasses } from './inputLabelClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n formControl,\n size,\n shrink,\n disableAnimation,\n variant,\n required\n } = ownerState;\n const slots = {\n root: ['root', formControl && 'formControl', !disableAnimation && 'animated', shrink && 'shrink', size && size !== 'normal' && `size${capitalize(size)}`, variant],\n asterisk: [required && 'asterisk']\n };\n const composedClasses = composeClasses(slots, getInputLabelUtilityClasses, classes);\n return _extends({}, classes, composedClasses);\n};\nconst InputLabelRoot = styled(FormLabel, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiInputLabel',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${formLabelClasses.asterisk}`]: styles.asterisk\n }, styles.root, ownerState.formControl && styles.formControl, ownerState.size === 'small' && styles.sizeSmall, ownerState.shrink && styles.shrink, !ownerState.disableAnimation && styles.animated, styles[ownerState.variant]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'block',\n transformOrigin: 'top left',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: '100%'\n}, ownerState.formControl && {\n position: 'absolute',\n left: 0,\n top: 0,\n // slight alteration to spec spacing to match visual spec result\n transform: 'translate(0, 20px) scale(1)'\n}, ownerState.size === 'small' && {\n // Compensation for the `Input.inputSizeSmall` style.\n transform: 'translate(0, 17px) scale(1)'\n}, ownerState.shrink && {\n transform: 'translate(0, -1.5px) scale(0.75)',\n transformOrigin: 'top left',\n maxWidth: '133%'\n}, !ownerState.disableAnimation && {\n transition: theme.transitions.create(['color', 'transform', 'max-width'], {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n })\n}, ownerState.variant === 'filled' && _extends({\n // Chrome's autofill feature gives the input field a yellow background.\n // Since the input field is behind the label in the HTML tree,\n // the input field is drawn last and hides the label with an opaque background color.\n // zIndex: 1 will raise the label above opaque background-colors of input.\n zIndex: 1,\n pointerEvents: 'none',\n transform: 'translate(12px, 16px) scale(1)',\n maxWidth: 'calc(100% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(12px, 13px) scale(1)'\n}, ownerState.shrink && _extends({\n userSelect: 'none',\n pointerEvents: 'auto',\n transform: 'translate(12px, 7px) scale(0.75)',\n maxWidth: 'calc(133% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(12px, 4px) scale(0.75)'\n})), ownerState.variant === 'outlined' && _extends({\n // see comment above on filled.zIndex\n zIndex: 1,\n pointerEvents: 'none',\n transform: 'translate(14px, 16px) scale(1)',\n maxWidth: 'calc(100% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(14px, 9px) scale(1)'\n}, ownerState.shrink && {\n userSelect: 'none',\n pointerEvents: 'auto',\n // Theoretically, we should have (8+5)*2/0.75 = 34px\n // but it feels a better when it bleeds a bit on the left, so 32px.\n maxWidth: 'calc(133% - 32px)',\n transform: 'translate(14px, -9px) scale(0.75)'\n})));\nconst InputLabel = /*#__PURE__*/React.forwardRef(function InputLabel(inProps, ref) {\n const props = useThemeProps({\n name: 'MuiInputLabel',\n props: inProps\n });\n const {\n disableAnimation = false,\n shrink: shrinkProp,\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n let shrink = shrinkProp;\n if (typeof shrink === 'undefined' && muiFormControl) {\n shrink = muiFormControl.filled || muiFormControl.focused || muiFormControl.adornedStart;\n }\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['size', 'variant', 'required']\n });\n const ownerState = _extends({}, props, {\n disableAnimation,\n formControl: muiFormControl,\n shrink,\n size: fcs.size,\n variant: fcs.variant,\n required: fcs.required\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(InputLabelRoot, _extends({\n \"data-shrink\": shrink,\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? InputLabel.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n /**\n * If `true`, the transition animation is disabled.\n * @default false\n */\n disableAnimation: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the `input` of this label is focused.\n */\n focused: PropTypes.bool,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n */\n margin: PropTypes.oneOf(['dense']),\n /**\n * if `true`, the label will indicate that the `input` is required.\n */\n required: PropTypes.bool,\n /**\n * If `true`, the label is shrunk.\n */\n shrink: PropTypes.bool,\n /**\n * The size of the component.\n * @default 'normal'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['normal', 'small']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default InputLabel;"],"names":["getAccordionUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","AccordionRoot","styled","Paper","name","overridesResolver","props","styles","ownerState","_defineProperty","concat","accordionClasses","region","root","square","rounded","disableGutters","gutters","_ref2","_ref3","theme","transition","duration","transitions","shortest","position","create","overflowAnchor","left","top","right","height","content","opacity","backgroundColor","vars","palette","divider","display","expanded","marginTop","marginBottom","disabled","action","disabledBackground","_ref4","_extends","borderRadius","borderTopLeftRadius","shape","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","margin","React","inProps","ref","useThemeProps","childrenProp","children","className","_props$defaultExpande","defaultExpanded","_props$disabled","_props$disableGutters","expandedProp","onChange","_props$square","_props$TransitionComp","TransitionComponent","Collapse","TransitionProps","other","_objectWithoutPropertiesLoose","_useControlled","useControlled","controlled","default","state","_useControlled2","_slicedToArray","setExpandedState","handleChange","event","_React$Children$toArr","toArray","_React$Children$toArr2","_toArray","summary","slice","contextValue","toggle","classes","slots","composeClasses","useUtilityClasses","_jsxs","clsx","_jsx","AccordionContext","Provider","value","in","timeout","id","role","getAccordionDetailsUtilityClass","AccordionDetailsRoot","_ref","padding","spacing","getAccordionSummaryUtilityClass","AccordionSummaryRoot","ButtonBase","_extends2","minHeight","accordionSummaryClasses","focusVisible","focus","disabledOpacity","cursor","AccordionSummaryContent","flexGrow","AccordionSummaryExpandIconWrapper","expandIconWrapper","_ref5","color","active","transform","expandIcon","focusVisibleClassName","onClick","_React$useContext","_React$useContext$dis","focusRipple","disableRipple","component","getCollapseUtilityClass","CollapseRoot","orientation","entered","collapsedSize","hidden","overflow","width","visibility","CollapseWrapper","wrapper","CollapseWrapperInner","wrapperInner","addEndListener","_props$collapsedSize","collapsedSizeProp","easing","inProp","onEnter","onEntered","onEntering","onExit","onExited","onExiting","_props$orientation","style","_props$timeout","standard","Transition","useTheme","timer","wrapperRef","autoTransitionDuration","isHorizontal","size","clearTimeout","current","nodeRef","handleRef","useForkRef","normalizedTransitionCallback","callback","maybeIsAppearing","node","undefined","getWrapperSize","handleEnter","isAppearing","handleEntering","wrapperSize","_getTransitionProps","getTransitionProps","mode","transitionDuration","transitionTimingFunction","duration2","getAutoHeightDuration","handleEntered","handleExit","handleExited","handleExiting","_getTransitionProps2","next","setTimeout","childProps","as","muiSupportAuto","FormControlContext","formControlState","states","muiFormControl","reduce","acc","useFormControl","FormLabelRoot","colorSecondary","filled","text","secondary","typography","body1","lineHeight","formLabelClasses","focused","main","error","AsteriskComponent","asterisk","FormLabel","_props$component","fcs","required","capitalize","getFormLabelUtilityClasses","getInputLabelUtilityClasses","InputLabelRoot","shouldForwardProp","prop","rootShouldForwardProp","formControl","sizeSmall","shrink","disableAnimation","animated","variant","transformOrigin","whiteSpace","textOverflow","maxWidth","shorter","easeOut","zIndex","pointerEvents","userSelect","_props$disableAnimati","shrinkProp","adornedStart","composedClasses"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/6008.cdca3087.chunk.js.map b/portal-ui/build/static/js/6008.cdca3087.chunk.js.map deleted file mode 100644 index ca548e51ae..0000000000 --- a/portal-ui/build/static/js/6008.cdca3087.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/6008.cdca3087.chunk.js","mappings":"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","sources":["../node_modules/@mui/material/Accordion/accordionClasses.js","../node_modules/@mui/material/Accordion/Accordion.js","../node_modules/@mui/material/Accordion/AccordionContext.js","../node_modules/@mui/material/AccordionDetails/accordionDetailsClasses.js","../node_modules/@mui/material/AccordionDetails/AccordionDetails.js","../node_modules/@mui/material/AccordionSummary/accordionSummaryClasses.js","../node_modules/@mui/material/AccordionSummary/AccordionSummary.js","../node_modules/@mui/material/Collapse/collapseClasses.js","../node_modules/@mui/material/Collapse/Collapse.js","../node_modules/@mui/material/FormControl/FormControlContext.js","../node_modules/@mui/material/FormControl/formControlState.js","../node_modules/@mui/material/FormControl/useFormControl.js","../node_modules/@mui/material/FormLabel/FormLabel.js","../node_modules/@mui/material/FormLabel/formLabelClasses.js","../node_modules/@mui/material/InputLabel/inputLabelClasses.js","../node_modules/@mui/material/InputLabel/InputLabel.js"],"sourcesContent":["import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getAccordionUtilityClass(slot) {\n return generateUtilityClass('MuiAccordion', slot);\n}\nconst accordionClasses = generateUtilityClasses('MuiAccordion', ['root', 'rounded', 'expanded', 'disabled', 'gutters', 'region']);\nexport default accordionClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"defaultExpanded\", \"disabled\", \"disableGutters\", \"expanded\", \"onChange\", \"square\", \"TransitionComponent\", \"TransitionProps\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Collapse from '../Collapse';\nimport Paper from '../Paper';\nimport AccordionContext from './AccordionContext';\nimport useControlled from '../utils/useControlled';\nimport accordionClasses, { getAccordionUtilityClass } from './accordionClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n square,\n expanded,\n disabled,\n disableGutters\n } = ownerState;\n const slots = {\n root: ['root', !square && 'rounded', expanded && 'expanded', disabled && 'disabled', !disableGutters && 'gutters'],\n region: ['region']\n };\n return composeClasses(slots, getAccordionUtilityClass, classes);\n};\nconst AccordionRoot = styled(Paper, {\n name: 'MuiAccordion',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${accordionClasses.region}`]: styles.region\n }, styles.root, !ownerState.square && styles.rounded, !ownerState.disableGutters && styles.gutters];\n }\n})(({\n theme\n}) => {\n const transition = {\n duration: theme.transitions.duration.shortest\n };\n return {\n position: 'relative',\n transition: theme.transitions.create(['margin'], transition),\n overflowAnchor: 'none',\n // Keep the same scrolling position\n '&:before': {\n position: 'absolute',\n left: 0,\n top: -1,\n right: 0,\n height: 1,\n content: '\"\"',\n opacity: 1,\n backgroundColor: (theme.vars || theme).palette.divider,\n transition: theme.transitions.create(['opacity', 'background-color'], transition)\n },\n '&:first-of-type': {\n '&:before': {\n display: 'none'\n }\n },\n [`&.${accordionClasses.expanded}`]: {\n '&:before': {\n opacity: 0\n },\n '&:first-of-type': {\n marginTop: 0\n },\n '&:last-of-type': {\n marginBottom: 0\n },\n '& + &': {\n '&:before': {\n display: 'none'\n }\n }\n },\n [`&.${accordionClasses.disabled}`]: {\n backgroundColor: (theme.vars || theme).palette.action.disabledBackground\n }\n };\n}, ({\n theme,\n ownerState\n}) => _extends({}, !ownerState.square && {\n borderRadius: 0,\n '&:first-of-type': {\n borderTopLeftRadius: (theme.vars || theme).shape.borderRadius,\n borderTopRightRadius: (theme.vars || theme).shape.borderRadius\n },\n '&:last-of-type': {\n borderBottomLeftRadius: (theme.vars || theme).shape.borderRadius,\n borderBottomRightRadius: (theme.vars || theme).shape.borderRadius,\n // Fix a rendering issue on Edge\n '@supports (-ms-ime-align: auto)': {\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }\n }\n}, !ownerState.disableGutters && {\n [`&.${accordionClasses.expanded}`]: {\n margin: '16px 0'\n }\n}));\nconst Accordion = /*#__PURE__*/React.forwardRef(function Accordion(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiAccordion'\n });\n const {\n children: childrenProp,\n className,\n defaultExpanded = false,\n disabled = false,\n disableGutters = false,\n expanded: expandedProp,\n onChange,\n square = false,\n TransitionComponent = Collapse,\n TransitionProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const [expanded, setExpandedState] = useControlled({\n controlled: expandedProp,\n default: defaultExpanded,\n name: 'Accordion',\n state: 'expanded'\n });\n const handleChange = React.useCallback(event => {\n setExpandedState(!expanded);\n if (onChange) {\n onChange(event, !expanded);\n }\n }, [expanded, onChange, setExpandedState]);\n const [summary, ...children] = React.Children.toArray(childrenProp);\n const contextValue = React.useMemo(() => ({\n expanded,\n disabled,\n disableGutters,\n toggle: handleChange\n }), [expanded, disabled, disableGutters, handleChange]);\n const ownerState = _extends({}, props, {\n square,\n disabled,\n disableGutters,\n expanded\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(AccordionRoot, _extends({\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState,\n square: square\n }, other, {\n children: [/*#__PURE__*/_jsx(AccordionContext.Provider, {\n value: contextValue,\n children: summary\n }), /*#__PURE__*/_jsx(TransitionComponent, _extends({\n in: expanded,\n timeout: \"auto\"\n }, TransitionProps, {\n children: /*#__PURE__*/_jsx(\"div\", {\n \"aria-labelledby\": summary.props.id,\n id: summary.props['aria-controls'],\n role: \"region\",\n className: classes.region,\n children: children\n })\n }))]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Accordion.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: chainPropTypes(PropTypes.node.isRequired, props => {\n const summary = React.Children.toArray(props.children)[0];\n if (isFragment(summary)) {\n return new Error(\"MUI: The Accordion doesn't accept a Fragment as a child. \" + 'Consider providing an array instead.');\n }\n if (! /*#__PURE__*/React.isValidElement(summary)) {\n return new Error('MUI: Expected the first child of Accordion to be a valid element.');\n }\n return null;\n }),\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 * If `true`, expands the accordion by default.\n * @default false\n */\n defaultExpanded: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, it removes the margin between two expanded accordion items and the increase of height.\n * @default false\n */\n disableGutters: PropTypes.bool,\n /**\n * If `true`, expands the accordion, otherwise collapse it.\n * Setting this prop enables control over the accordion.\n */\n expanded: PropTypes.bool,\n /**\n * Callback fired when the expand/collapse state is changed.\n *\n * @param {React.SyntheticEvent} event The event source of the callback. **Warning**: This is a generic event not a change event.\n * @param {boolean} expanded The `expanded` state of the accordion.\n */\n onChange: PropTypes.func,\n /**\n * If `true`, rounded corners are disabled.\n * @default false\n */\n square: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The component used for the transition.\n * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n * @default Collapse\n */\n TransitionComponent: PropTypes.elementType,\n /**\n * Props applied to the transition element.\n * By default, the element is based on this [`Transition`](http://reactcommunity.org/react-transition-group/transition/) component.\n */\n TransitionProps: PropTypes.object\n} : void 0;\nexport default Accordion;","'use client';\n\nimport * as React from 'react';\n\n/**\n * @ignore - internal component.\n * @type {React.Context<{} | {expanded: boolean, disabled: boolean, toggle: () => void}>}\n */\nconst AccordionContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n AccordionContext.displayName = 'AccordionContext';\n}\nexport default AccordionContext;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getAccordionDetailsUtilityClass(slot) {\n return generateUtilityClass('MuiAccordionDetails', slot);\n}\nconst accordionDetailsClasses = generateUtilityClasses('MuiAccordionDetails', ['root']);\nexport default accordionDetailsClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getAccordionDetailsUtilityClass } from './accordionDetailsClasses';\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, getAccordionDetailsUtilityClass, classes);\n};\nconst AccordionDetailsRoot = styled('div', {\n name: 'MuiAccordionDetails',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(({\n theme\n}) => ({\n padding: theme.spacing(1, 2, 2)\n}));\nconst AccordionDetails = /*#__PURE__*/React.forwardRef(function AccordionDetails(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiAccordionDetails'\n });\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(AccordionDetailsRoot, _extends({\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? AccordionDetails.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} : void 0;\nexport default AccordionDetails;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getAccordionSummaryUtilityClass(slot) {\n return generateUtilityClass('MuiAccordionSummary', slot);\n}\nconst accordionSummaryClasses = generateUtilityClasses('MuiAccordionSummary', ['root', 'expanded', 'focusVisible', 'disabled', 'gutters', 'contentGutters', 'content', 'expandIconWrapper']);\nexport default accordionSummaryClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"expandIcon\", \"focusVisibleClassName\", \"onClick\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ButtonBase from '../ButtonBase';\nimport AccordionContext from '../Accordion/AccordionContext';\nimport accordionSummaryClasses, { getAccordionSummaryUtilityClass } from './accordionSummaryClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n expanded,\n disabled,\n disableGutters\n } = ownerState;\n const slots = {\n root: ['root', expanded && 'expanded', disabled && 'disabled', !disableGutters && 'gutters'],\n focusVisible: ['focusVisible'],\n content: ['content', expanded && 'expanded', !disableGutters && 'contentGutters'],\n expandIconWrapper: ['expandIconWrapper', expanded && 'expanded']\n };\n return composeClasses(slots, getAccordionSummaryUtilityClass, classes);\n};\nconst AccordionSummaryRoot = styled(ButtonBase, {\n name: 'MuiAccordionSummary',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(({\n theme,\n ownerState\n}) => {\n const transition = {\n duration: theme.transitions.duration.shortest\n };\n return _extends({\n display: 'flex',\n minHeight: 48,\n padding: theme.spacing(0, 2),\n transition: theme.transitions.create(['min-height', 'background-color'], transition),\n [`&.${accordionSummaryClasses.focusVisible}`]: {\n backgroundColor: (theme.vars || theme).palette.action.focus\n },\n [`&.${accordionSummaryClasses.disabled}`]: {\n opacity: (theme.vars || theme).palette.action.disabledOpacity\n },\n [`&:hover:not(.${accordionSummaryClasses.disabled})`]: {\n cursor: 'pointer'\n }\n }, !ownerState.disableGutters && {\n [`&.${accordionSummaryClasses.expanded}`]: {\n minHeight: 64\n }\n });\n});\nconst AccordionSummaryContent = styled('div', {\n name: 'MuiAccordionSummary',\n slot: 'Content',\n overridesResolver: (props, styles) => styles.content\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'flex',\n flexGrow: 1,\n margin: '12px 0'\n}, !ownerState.disableGutters && {\n transition: theme.transitions.create(['margin'], {\n duration: theme.transitions.duration.shortest\n }),\n [`&.${accordionSummaryClasses.expanded}`]: {\n margin: '20px 0'\n }\n}));\nconst AccordionSummaryExpandIconWrapper = styled('div', {\n name: 'MuiAccordionSummary',\n slot: 'ExpandIconWrapper',\n overridesResolver: (props, styles) => styles.expandIconWrapper\n})(({\n theme\n}) => ({\n display: 'flex',\n color: (theme.vars || theme).palette.action.active,\n transform: 'rotate(0deg)',\n transition: theme.transitions.create('transform', {\n duration: theme.transitions.duration.shortest\n }),\n [`&.${accordionSummaryClasses.expanded}`]: {\n transform: 'rotate(180deg)'\n }\n}));\nconst AccordionSummary = /*#__PURE__*/React.forwardRef(function AccordionSummary(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiAccordionSummary'\n });\n const {\n children,\n className,\n expandIcon,\n focusVisibleClassName,\n onClick\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n disabled = false,\n disableGutters,\n expanded,\n toggle\n } = React.useContext(AccordionContext);\n const handleChange = event => {\n if (toggle) {\n toggle(event);\n }\n if (onClick) {\n onClick(event);\n }\n };\n const ownerState = _extends({}, props, {\n expanded,\n disabled,\n disableGutters\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(AccordionSummaryRoot, _extends({\n focusRipple: false,\n disableRipple: true,\n disabled: disabled,\n component: \"div\",\n \"aria-expanded\": expanded,\n className: clsx(classes.root, className),\n focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n onClick: handleChange,\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: [/*#__PURE__*/_jsx(AccordionSummaryContent, {\n className: classes.content,\n ownerState: ownerState,\n children: children\n }), expandIcon && /*#__PURE__*/_jsx(AccordionSummaryExpandIconWrapper, {\n className: classes.expandIconWrapper,\n ownerState: ownerState,\n children: expandIcon\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? AccordionSummary.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 icon to display as the expand indicator.\n */\n expandIcon: PropTypes.node,\n /**\n * This prop can help identify which element has keyboard focus.\n * The class name will be applied when the element gains the focus through keyboard interaction.\n * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n * if needed.\n */\n focusVisibleClassName: PropTypes.string,\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AccordionSummary;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCollapseUtilityClass(slot) {\n return generateUtilityClass('MuiCollapse', slot);\n}\nconst collapseClasses = generateUtilityClasses('MuiCollapse', ['root', 'horizontal', 'vertical', 'entered', 'hidden', 'wrapper', 'wrapperInner']);\nexport default collapseClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"addEndListener\", \"children\", \"className\", \"collapsedSize\", \"component\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"orientation\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport { elementTypeAcceptingRef } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { duration } from '../styles/createTransitions';\nimport { getTransitionProps } from '../transitions/utils';\nimport useTheme from '../styles/useTheme';\nimport { useForkRef } from '../utils';\nimport { getCollapseUtilityClass } from './collapseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n orientation,\n classes\n } = ownerState;\n const slots = {\n root: ['root', `${orientation}`],\n entered: ['entered'],\n hidden: ['hidden'],\n wrapper: ['wrapper', `${orientation}`],\n wrapperInner: ['wrapperInner', `${orientation}`]\n };\n return composeClasses(slots, getCollapseUtilityClass, classes);\n};\nconst CollapseRoot = styled('div', {\n name: 'MuiCollapse',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.orientation], ownerState.state === 'entered' && styles.entered, ownerState.state === 'exited' && !ownerState.in && ownerState.collapsedSize === '0px' && styles.hidden];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n height: 0,\n overflow: 'hidden',\n transition: theme.transitions.create('height')\n}, ownerState.orientation === 'horizontal' && {\n height: 'auto',\n width: 0,\n transition: theme.transitions.create('width')\n}, ownerState.state === 'entered' && _extends({\n height: 'auto',\n overflow: 'visible'\n}, ownerState.orientation === 'horizontal' && {\n width: 'auto'\n}), ownerState.state === 'exited' && !ownerState.in && ownerState.collapsedSize === '0px' && {\n visibility: 'hidden'\n}));\nconst CollapseWrapper = styled('div', {\n name: 'MuiCollapse',\n slot: 'Wrapper',\n overridesResolver: (props, styles) => styles.wrapper\n})(({\n ownerState\n}) => _extends({\n // Hack to get children with a negative margin to not falsify the height computation.\n display: 'flex',\n width: '100%'\n}, ownerState.orientation === 'horizontal' && {\n width: 'auto',\n height: '100%'\n}));\nconst CollapseWrapperInner = styled('div', {\n name: 'MuiCollapse',\n slot: 'WrapperInner',\n overridesResolver: (props, styles) => styles.wrapperInner\n})(({\n ownerState\n}) => _extends({\n width: '100%'\n}, ownerState.orientation === 'horizontal' && {\n width: 'auto',\n height: '100%'\n}));\n\n/**\n * The Collapse transition is used by the\n * [Vertical Stepper](/material-ui/react-stepper/#vertical-stepper) StepContent component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Collapse = /*#__PURE__*/React.forwardRef(function Collapse(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCollapse'\n });\n const {\n addEndListener,\n children,\n className,\n collapsedSize: collapsedSizeProp = '0px',\n component,\n easing,\n in: inProp,\n onEnter,\n onEntered,\n onEntering,\n onExit,\n onExited,\n onExiting,\n orientation = 'vertical',\n style,\n timeout = duration.standard,\n // eslint-disable-next-line react/prop-types\n TransitionComponent = Transition\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n orientation,\n collapsedSize: collapsedSizeProp\n });\n const classes = useUtilityClasses(ownerState);\n const theme = useTheme();\n const timer = React.useRef();\n const wrapperRef = React.useRef(null);\n const autoTransitionDuration = React.useRef();\n const collapsedSize = typeof collapsedSizeProp === 'number' ? `${collapsedSizeProp}px` : collapsedSizeProp;\n const isHorizontal = orientation === 'horizontal';\n const size = isHorizontal ? 'width' : 'height';\n React.useEffect(() => {\n return () => {\n clearTimeout(timer.current);\n };\n }, []);\n const nodeRef = React.useRef(null);\n const handleRef = useForkRef(ref, nodeRef);\n const normalizedTransitionCallback = callback => maybeIsAppearing => {\n if (callback) {\n const node = nodeRef.current;\n\n // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n if (maybeIsAppearing === undefined) {\n callback(node);\n } else {\n callback(node, maybeIsAppearing);\n }\n }\n };\n const getWrapperSize = () => wrapperRef.current ? wrapperRef.current[isHorizontal ? 'clientWidth' : 'clientHeight'] : 0;\n const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n if (wrapperRef.current && isHorizontal) {\n // Set absolute position to get the size of collapsed content\n wrapperRef.current.style.position = 'absolute';\n }\n node.style[size] = collapsedSize;\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n const handleEntering = normalizedTransitionCallback((node, isAppearing) => {\n const wrapperSize = getWrapperSize();\n if (wrapperRef.current && isHorizontal) {\n // After the size is read reset the position back to default\n wrapperRef.current.style.position = '';\n }\n const {\n duration: transitionDuration,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'enter'\n });\n if (timeout === 'auto') {\n const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n node.style.transitionDuration = `${duration2}ms`;\n autoTransitionDuration.current = duration2;\n } else {\n node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : `${transitionDuration}ms`;\n }\n node.style[size] = `${wrapperSize}px`;\n node.style.transitionTimingFunction = transitionTimingFunction;\n if (onEntering) {\n onEntering(node, isAppearing);\n }\n });\n const handleEntered = normalizedTransitionCallback((node, isAppearing) => {\n node.style[size] = 'auto';\n if (onEntered) {\n onEntered(node, isAppearing);\n }\n });\n const handleExit = normalizedTransitionCallback(node => {\n node.style[size] = `${getWrapperSize()}px`;\n if (onExit) {\n onExit(node);\n }\n });\n const handleExited = normalizedTransitionCallback(onExited);\n const handleExiting = normalizedTransitionCallback(node => {\n const wrapperSize = getWrapperSize();\n const {\n duration: transitionDuration,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'exit'\n });\n if (timeout === 'auto') {\n // TODO: rename getAutoHeightDuration to something more generic (width support)\n // Actually it just calculates animation duration based on size\n const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n node.style.transitionDuration = `${duration2}ms`;\n autoTransitionDuration.current = duration2;\n } else {\n node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : `${transitionDuration}ms`;\n }\n node.style[size] = collapsedSize;\n node.style.transitionTimingFunction = transitionTimingFunction;\n if (onExiting) {\n onExiting(node);\n }\n });\n const handleAddEndListener = next => {\n if (timeout === 'auto') {\n timer.current = setTimeout(next, autoTransitionDuration.current || 0);\n }\n if (addEndListener) {\n // Old call signature before `react-transition-group` implemented `nodeRef`\n addEndListener(nodeRef.current, next);\n }\n };\n return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n in: inProp,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n nodeRef: nodeRef,\n timeout: timeout === 'auto' ? null : timeout\n }, other, {\n children: (state, childProps) => /*#__PURE__*/_jsx(CollapseRoot, _extends({\n as: component,\n className: clsx(classes.root, className, {\n 'entered': classes.entered,\n 'exited': !inProp && collapsedSize === '0px' && classes.hidden\n }[state]),\n style: _extends({\n [isHorizontal ? 'minWidth' : 'minHeight']: collapsedSize\n }, style),\n ownerState: _extends({}, ownerState, {\n state\n }),\n ref: handleRef\n }, childProps, {\n children: /*#__PURE__*/_jsx(CollapseWrapper, {\n ownerState: _extends({}, ownerState, {\n state\n }),\n className: classes.wrapper,\n ref: wrapperRef,\n children: /*#__PURE__*/_jsx(CollapseWrapperInner, {\n ownerState: _extends({}, ownerState, {\n state\n }),\n className: classes.wrapperInner,\n children: children\n })\n })\n }))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Collapse.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 * Add a custom transition end trigger. Called with the transitioning DOM\n * node and a done callback. Allows for more fine grained transition end\n * logic. Note: Timeouts are still used as a fallback if provided.\n */\n addEndListener: PropTypes.func,\n /**\n * The content node to be collapsed.\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 width (horizontal) or height (vertical) of the container when collapsed.\n * @default '0px'\n */\n collapsedSize: PropTypes.oneOfType([PropTypes.number, 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: elementTypeAcceptingRef,\n /**\n * The transition timing function.\n * You may specify a single easing or a object containing enter and exit values.\n */\n easing: PropTypes.oneOfType([PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string\n }), PropTypes.string]),\n /**\n * If `true`, the component will transition in.\n */\n in: PropTypes.bool,\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n /**\n * The transition orientation.\n * @default 'vertical'\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n *\n * Set to 'auto' to automatically calculate transition time based on height.\n * @default duration.standard\n */\n timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nCollapse.muiSupportAuto = true;\nexport default Collapse;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst FormControlContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n FormControlContext.displayName = 'FormControlContext';\n}\nexport default FormControlContext;","export default function formControlState({\n props,\n states,\n muiFormControl\n}) {\n return states.reduce((acc, state) => {\n acc[state] = props[state];\n if (muiFormControl) {\n if (typeof props[state] === 'undefined') {\n acc[state] = muiFormControl[state];\n }\n }\n return acc;\n }, {});\n}","'use client';\n\nimport * as React from 'react';\nimport FormControlContext from './FormControlContext';\nexport default function useFormControl() {\n return React.useContext(FormControlContext);\n}","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"error\", \"filled\", \"focused\", \"required\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport formLabelClasses, { getFormLabelUtilityClasses } from './formLabelClasses';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color,\n focused,\n disabled,\n error,\n filled,\n required\n } = ownerState;\n const slots = {\n root: ['root', `color${capitalize(color)}`, disabled && 'disabled', error && 'error', filled && 'filled', focused && 'focused', required && 'required'],\n asterisk: ['asterisk', error && 'error']\n };\n return composeClasses(slots, getFormLabelUtilityClasses, classes);\n};\nexport const FormLabelRoot = styled('label', {\n name: 'MuiFormLabel',\n slot: 'Root',\n overridesResolver: ({\n ownerState\n }, styles) => {\n return _extends({}, styles.root, ownerState.color === 'secondary' && styles.colorSecondary, ownerState.filled && styles.filled);\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n color: (theme.vars || theme).palette.text.secondary\n}, theme.typography.body1, {\n lineHeight: '1.4375em',\n padding: 0,\n position: 'relative',\n [`&.${formLabelClasses.focused}`]: {\n color: (theme.vars || theme).palette[ownerState.color].main\n },\n [`&.${formLabelClasses.disabled}`]: {\n color: (theme.vars || theme).palette.text.disabled\n },\n [`&.${formLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}));\nconst AsteriskComponent = styled('span', {\n name: 'MuiFormLabel',\n slot: 'Asterisk',\n overridesResolver: (props, styles) => styles.asterisk\n})(({\n theme\n}) => ({\n [`&.${formLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}));\nconst FormLabel = /*#__PURE__*/React.forwardRef(function FormLabel(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFormLabel'\n });\n const {\n children,\n className,\n component = 'label'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['color', 'required', 'focused', 'disabled', 'error', 'filled']\n });\n const ownerState = _extends({}, props, {\n color: fcs.color || 'primary',\n component,\n disabled: fcs.disabled,\n error: fcs.error,\n filled: fcs.filled,\n focused: fcs.focused,\n required: fcs.required\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(FormLabelRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: [children, fcs.required && /*#__PURE__*/_jsxs(AsteriskComponent, {\n ownerState: ownerState,\n \"aria-hidden\": true,\n className: classes.asterisk,\n children: [\"\\u2009\", '*']\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormLabel.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the label should be displayed in a disabled state.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the label should use filled classes key.\n */\n filled: PropTypes.bool,\n /**\n * If `true`, the input of this label is focused (used by `FormGroup` components).\n */\n focused: PropTypes.bool,\n /**\n * If `true`, the label will indicate that the `input` is required.\n */\n required: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default FormLabel;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getFormLabelUtilityClasses(slot) {\n return generateUtilityClass('MuiFormLabel', slot);\n}\nconst formLabelClasses = generateUtilityClasses('MuiFormLabel', ['root', 'colorSecondary', 'focused', 'disabled', 'error', 'filled', 'required', 'asterisk']);\nexport default formLabelClasses;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getInputLabelUtilityClasses(slot) {\n return generateUtilityClass('MuiInputLabel', slot);\n}\nconst inputLabelClasses = generateUtilityClasses('MuiInputLabel', ['root', 'focused', 'disabled', 'error', 'required', 'asterisk', 'formControl', 'sizeSmall', 'shrink', 'animated', 'standard', 'filled', 'outlined']);\nexport default inputLabelClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disableAnimation\", \"margin\", \"shrink\", \"variant\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport clsx from 'clsx';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport FormLabel, { formLabelClasses } from '../FormLabel';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { getInputLabelUtilityClasses } from './inputLabelClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n formControl,\n size,\n shrink,\n disableAnimation,\n variant,\n required\n } = ownerState;\n const slots = {\n root: ['root', formControl && 'formControl', !disableAnimation && 'animated', shrink && 'shrink', size === 'small' && 'sizeSmall', variant],\n asterisk: [required && 'asterisk']\n };\n const composedClasses = composeClasses(slots, getInputLabelUtilityClasses, classes);\n return _extends({}, classes, composedClasses);\n};\nconst InputLabelRoot = styled(FormLabel, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiInputLabel',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${formLabelClasses.asterisk}`]: styles.asterisk\n }, styles.root, ownerState.formControl && styles.formControl, ownerState.size === 'small' && styles.sizeSmall, ownerState.shrink && styles.shrink, !ownerState.disableAnimation && styles.animated, styles[ownerState.variant]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'block',\n transformOrigin: 'top left',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: '100%'\n}, ownerState.formControl && {\n position: 'absolute',\n left: 0,\n top: 0,\n // slight alteration to spec spacing to match visual spec result\n transform: 'translate(0, 20px) scale(1)'\n}, ownerState.size === 'small' && {\n // Compensation for the `Input.inputSizeSmall` style.\n transform: 'translate(0, 17px) scale(1)'\n}, ownerState.shrink && {\n transform: 'translate(0, -1.5px) scale(0.75)',\n transformOrigin: 'top left',\n maxWidth: '133%'\n}, !ownerState.disableAnimation && {\n transition: theme.transitions.create(['color', 'transform', 'max-width'], {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n })\n}, ownerState.variant === 'filled' && _extends({\n // Chrome's autofill feature gives the input field a yellow background.\n // Since the input field is behind the label in the HTML tree,\n // the input field is drawn last and hides the label with an opaque background color.\n // zIndex: 1 will raise the label above opaque background-colors of input.\n zIndex: 1,\n pointerEvents: 'none',\n transform: 'translate(12px, 16px) scale(1)',\n maxWidth: 'calc(100% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(12px, 13px) scale(1)'\n}, ownerState.shrink && _extends({\n userSelect: 'none',\n pointerEvents: 'auto',\n transform: 'translate(12px, 7px) scale(0.75)',\n maxWidth: 'calc(133% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(12px, 4px) scale(0.75)'\n})), ownerState.variant === 'outlined' && _extends({\n // see comment above on filled.zIndex\n zIndex: 1,\n pointerEvents: 'none',\n transform: 'translate(14px, 16px) scale(1)',\n maxWidth: 'calc(100% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(14px, 9px) scale(1)'\n}, ownerState.shrink && {\n userSelect: 'none',\n pointerEvents: 'auto',\n // Theoretically, we should have (8+5)*2/0.75 = 34px\n // but it feels a better when it bleeds a bit on the left, so 32px.\n maxWidth: 'calc(133% - 32px)',\n transform: 'translate(14px, -9px) scale(0.75)'\n})));\nconst InputLabel = /*#__PURE__*/React.forwardRef(function InputLabel(inProps, ref) {\n const props = useThemeProps({\n name: 'MuiInputLabel',\n props: inProps\n });\n const {\n disableAnimation = false,\n shrink: shrinkProp,\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n let shrink = shrinkProp;\n if (typeof shrink === 'undefined' && muiFormControl) {\n shrink = muiFormControl.filled || muiFormControl.focused || muiFormControl.adornedStart;\n }\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['size', 'variant', 'required']\n });\n const ownerState = _extends({}, props, {\n disableAnimation,\n formControl: muiFormControl,\n shrink,\n size: fcs.size,\n variant: fcs.variant,\n required: fcs.required\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(InputLabelRoot, _extends({\n \"data-shrink\": shrink,\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? InputLabel.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n /**\n * If `true`, the transition animation is disabled.\n * @default false\n */\n disableAnimation: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the `input` of this label is focused.\n */\n focused: PropTypes.bool,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n */\n margin: PropTypes.oneOf(['dense']),\n /**\n * if `true`, the label will indicate that the `input` is required.\n */\n required: PropTypes.bool,\n /**\n * If `true`, the label is shrunk.\n */\n shrink: PropTypes.bool,\n /**\n * The size of the component.\n * @default 'normal'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['normal', 'small']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default InputLabel;"],"names":["getAccordionUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","AccordionRoot","styled","Paper","name","overridesResolver","props","styles","ownerState","_defineProperty","concat","accordionClasses","region","root","square","rounded","disableGutters","gutters","_ref2","_ref3","theme","transition","duration","transitions","shortest","position","create","overflowAnchor","left","top","right","height","content","opacity","backgroundColor","vars","palette","divider","display","expanded","marginTop","marginBottom","disabled","action","disabledBackground","_ref4","_extends","borderRadius","borderTopLeftRadius","shape","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","margin","React","inProps","ref","useThemeProps","childrenProp","children","className","_props$defaultExpande","defaultExpanded","_props$disabled","_props$disableGutters","expandedProp","onChange","_props$square","_props$TransitionComp","TransitionComponent","Collapse","TransitionProps","other","_objectWithoutPropertiesLoose","_useControlled","useControlled","controlled","default","state","_useControlled2","_slicedToArray","setExpandedState","handleChange","event","_React$Children$toArr","toArray","_React$Children$toArr2","_toArray","summary","slice","contextValue","toggle","classes","slots","composeClasses","useUtilityClasses","_jsxs","clsx","_jsx","AccordionContext","Provider","value","in","timeout","id","role","getAccordionDetailsUtilityClass","AccordionDetailsRoot","_ref","padding","spacing","getAccordionSummaryUtilityClass","AccordionSummaryRoot","ButtonBase","_extends2","minHeight","accordionSummaryClasses","focusVisible","focus","disabledOpacity","cursor","AccordionSummaryContent","flexGrow","AccordionSummaryExpandIconWrapper","expandIconWrapper","_ref5","color","active","transform","expandIcon","focusVisibleClassName","onClick","_React$useContext","_React$useContext$dis","focusRipple","disableRipple","component","getCollapseUtilityClass","CollapseRoot","orientation","entered","collapsedSize","hidden","overflow","width","visibility","CollapseWrapper","wrapper","CollapseWrapperInner","wrapperInner","addEndListener","_props$collapsedSize","collapsedSizeProp","easing","inProp","onEnter","onEntered","onEntering","onExit","onExited","onExiting","_props$orientation","style","_props$timeout","standard","Transition","useTheme","timer","wrapperRef","autoTransitionDuration","isHorizontal","size","clearTimeout","current","nodeRef","handleRef","useForkRef","normalizedTransitionCallback","callback","maybeIsAppearing","node","undefined","getWrapperSize","handleEnter","isAppearing","handleEntering","wrapperSize","_getTransitionProps","getTransitionProps","mode","transitionDuration","transitionTimingFunction","duration2","getAutoHeightDuration","handleEntered","handleExit","handleExited","handleExiting","_getTransitionProps2","next","setTimeout","childProps","as","muiSupportAuto","FormControlContext","formControlState","states","muiFormControl","reduce","acc","useFormControl","FormLabelRoot","colorSecondary","filled","text","secondary","typography","body1","lineHeight","formLabelClasses","focused","main","error","AsteriskComponent","asterisk","FormLabel","_props$component","fcs","required","capitalize","getFormLabelUtilityClasses","getInputLabelUtilityClasses","InputLabelRoot","shouldForwardProp","prop","rootShouldForwardProp","formControl","sizeSmall","shrink","disableAnimation","animated","variant","transformOrigin","whiteSpace","textOverflow","maxWidth","shorter","easeOut","zIndex","pointerEvents","userSelect","_props$disableAnimati","shrinkProp","adornedStart","composedClasses"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/6122.8195a695.chunk.js b/portal-ui/build/static/js/6122.c29df041.chunk.js similarity index 86% rename from portal-ui/build/static/js/6122.8195a695.chunk.js rename to portal-ui/build/static/js/6122.c29df041.chunk.js index 8ad3a20a0d..2adf9f1887 100644 --- a/portal-ui/build/static/js/6122.8195a695.chunk.js +++ b/portal-ui/build/static/js/6122.c29df041.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[6122],{75578:function(n,t,e){var u=e(1413),s=e(72791),i=e(80184);t.Z=function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(e){return(0,i.jsx)(s.Suspense,{fallback:t,children:(0,i.jsx)(n,(0,u.Z)({},e))})}}},86122:function(n,t,e){e.r(t);var u=e(72791),s=e(75578),i=e(47974),r=e(99670),a=e(87995),c=e(81551),l=e(80184),f=(0,s.Z)(u.lazy((function(){return e.e(6686).then(e.bind(e,86686))})));t.default=function(){var n=(0,c.TL)();return(0,u.useEffect)((function(){n((0,a.Sc)("event_destinations"))}),[]),(0,l.jsxs)(u.Fragment,{children:[(0,l.jsx)(i.Z,{label:"Event Destinations",actions:(0,l.jsx)(r.Z,{})}),(0,l.jsx)(f,{})]})}}}]); -//# sourceMappingURL=6122.8195a695.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[6122],{75578:function(n,t,e){var u=e(1413),s=e(72791),i=e(80184);t.Z=function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(e){return(0,i.jsx)(s.Suspense,{fallback:t,children:(0,i.jsx)(n,(0,u.Z)({},e))})}}},86122:function(n,t,e){e.r(t);var u=e(72791),s=e(75578),i=e(47974),r=e(99670),a=e(87995),c=e(44690),l=e(80184),f=(0,s.Z)(u.lazy((function(){return e.e(6686).then(e.bind(e,86686))})));t.default=function(){var n=(0,c.TL)();return(0,u.useEffect)((function(){n((0,a.Sc)("event_destinations"))}),[]),(0,l.jsxs)(u.Fragment,{children:[(0,l.jsx)(i.Z,{label:"Event Destinations",actions:(0,l.jsx)(r.Z,{})}),(0,l.jsx)(f,{})]})}}}]); +//# sourceMappingURL=6122.c29df041.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/6122.8195a695.chunk.js.map b/portal-ui/build/static/js/6122.c29df041.chunk.js.map similarity index 98% rename from portal-ui/build/static/js/6122.8195a695.chunk.js.map rename to portal-ui/build/static/js/6122.c29df041.chunk.js.map index 4c87f7231d..31eadf2c94 100644 --- a/portal-ui/build/static/js/6122.8195a695.chunk.js.map +++ b/portal-ui/build/static/js/6122.c29df041.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/6122.8195a695.chunk.js","mappings":"iJAiCA,IAfA,SACEA,GAEC,IADDC,EAAmCC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KAUtC,OARA,SAA+BG,GAC7B,OACEC,EAAAA,EAAAA,KAACC,EAAAA,SAAQ,CAACN,SAAUA,EAASO,UAC3BF,EAAAA,EAAAA,KAACN,GAAgBS,EAAAA,EAAAA,GAAA,GAAMJ,KAG7B,CAGF,C,gHCPMK,GAA4BC,EAAAA,EAAAA,GAChCC,EAAAA,MAAW,kBAAM,+BAAiC,KAiBpD,UAd0B,WACxB,IAAMC,GAAWC,EAAAA,EAAAA,MAKjB,OAJAC,EAAAA,EAAAA,YAAU,WACRF,GAASG,EAAAA,EAAAA,IAAY,sBAEvB,GAAG,KAEDC,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAV,SAAA,EACPF,EAAAA,EAAAA,KAACa,EAAAA,EAAiB,CAACC,MAAM,qBAAqBC,SAASf,EAAAA,EAAAA,KAACgB,EAAAA,EAAQ,OAChEhB,EAAAA,EAAAA,KAACI,EAAyB,MAGhC,C","sources":["screens/Console/Common/Components/withSuspense.tsx","screens/Console/EventDestinations/EventDestinations.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

    (\n WrappedComponent: ComponentType

    ,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect } from \"react\";\n\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport { setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\n\nconst ListNotificationEndpoints = withSuspense(\n React.lazy(() => import(\"./ListEventDestinations\")),\n);\n\nconst EventDestinations = () => {\n const dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(setHelpName(\"event_destinations\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return (\n \n } />\n \n \n );\n};\n\nexport default EventDestinations;\n"],"names":["WrappedComponent","fallback","arguments","length","undefined","props","_jsx","Suspense","children","_objectSpread","ListNotificationEndpoints","withSuspense","React","dispatch","useAppDispatch","useEffect","setHelpName","_jsxs","Fragment","PageHeaderWrapper","label","actions","HelpMenu"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/6122.c29df041.chunk.js","mappings":"iJAiCA,IAfA,SACEA,GAEC,IADDC,EAAmCC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KAUtC,OARA,SAA+BG,GAC7B,OACEC,EAAAA,EAAAA,KAACC,EAAAA,SAAQ,CAACN,SAAUA,EAASO,UAC3BF,EAAAA,EAAAA,KAACN,GAAgBS,EAAAA,EAAAA,GAAA,GAAMJ,KAG7B,CAGF,C,gHCPMK,GAA4BC,EAAAA,EAAAA,GAChCC,EAAAA,MAAW,kBAAM,+BAAiC,KAiBpD,UAd0B,WACxB,IAAMC,GAAWC,EAAAA,EAAAA,MAKjB,OAJAC,EAAAA,EAAAA,YAAU,WACRF,GAASG,EAAAA,EAAAA,IAAY,sBAEvB,GAAG,KAEDC,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAV,SAAA,EACPF,EAAAA,EAAAA,KAACa,EAAAA,EAAiB,CAACC,MAAM,qBAAqBC,SAASf,EAAAA,EAAAA,KAACgB,EAAAA,EAAQ,OAChEhB,EAAAA,EAAAA,KAACI,EAAyB,MAGhC,C","sources":["screens/Console/Common/Components/withSuspense.tsx","screens/Console/EventDestinations/EventDestinations.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

    (\n WrappedComponent: ComponentType

    ,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect } from \"react\";\n\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\nimport { setHelpName } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\n\nconst ListNotificationEndpoints = withSuspense(\n React.lazy(() => import(\"./ListEventDestinations\")),\n);\n\nconst EventDestinations = () => {\n const dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(setHelpName(\"event_destinations\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return (\n \n } />\n \n \n );\n};\n\nexport default EventDestinations;\n"],"names":["WrappedComponent","fallback","arguments","length","undefined","props","_jsx","Suspense","children","_objectSpread","ListNotificationEndpoints","withSuspense","React","dispatch","useAppDispatch","useEffect","setHelpName","_jsxs","Fragment","PageHeaderWrapper","label","actions","HelpMenu"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/6272.1dc1f3f1.chunk.js b/portal-ui/build/static/js/6272.1dc1f3f1.chunk.js new file mode 100644 index 0000000000..d88399caa6 --- /dev/null +++ b/portal-ui/build/static/js/6272.1dc1f3f1.chunk.js @@ -0,0 +1,2 @@ +(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[6272],{76272:function(e,t,n){"use strict";n.r(t);var o=n(29439),c=n(72791),i=n(95087),r=n(78687),l=n(29945),a=n(44690),s=n(45248),u=n(26824),f=n(10679),d=n(87995),h=n(81207),b=n(47974),x=n(99670),p=n(80184);t.default=function(){var e=(0,a.TL)(),t=(0,r.v9)((function(e){return e.watch.messages})),n=(0,c.useState)(!1),g=(0,o.Z)(n,2),w=g[0],m=g[1],v=(0,c.useState)("Select Bucket"),j=(0,o.Z)(v,2),k=j[0],y=j[1],S=(0,c.useState)(""),C=(0,o.Z)(S,2),_=C[0],T=C[1],Z=(0,c.useState)(""),E=(0,o.Z)(Z,2),O=E[0],z=E[1],N=(0,c.useState)([]),P=(0,o.Z)(N,2),G=P[0],I=P[1];(0,c.useEffect)((function(){h.Z.invoke("GET","/api/v1/buckets").then((function(e){var t=[];null!==e.buckets&&(t=e.buckets),I(t)})).catch((function(e){console.error(e)}))}),[]),(0,c.useEffect)((function(){if(e((0,f.uE)()),w&&G.some((function(e){return e.name===k}))){var t=new URL(window.location.toString()),n=t.port,o=new URL(document.baseURI).pathname,c=(0,u.x2)(t.protocol),r=new i.w3cwebsocket("".concat(c,"://").concat(t.hostname,":").concat(n).concat(o,"ws/watch/").concat(k,"?prefix=").concat(_,"&suffix=").concat(O)),l=null;if(null!==r)return r.onopen=function(){console.log("WebSocket Client Connected"),r.send("ok"),l=setInterval((function(){r.send("ok")}),1e4)},r.onmessage=function(t){var n=JSON.parse(t.data.toString());n.Time=new Date(n.Time.toString()),n.key=Math.random(),e((0,f.pG)(n))},r.onclose=function(){clearInterval(l),console.log("connection closed by server"),m(!1)},function(){r.close(1e3),clearInterval(l),console.log("closing websockets")}}else m(!1)}),[e,w,G,k,_,O]);var W=G.map((function(e){return{label:e.name,value:e.name}}));(0,c.useEffect)((function(){e((0,d.Sc)("watch"))}),[]);var F=W.map((function(e){return{label:e.label,value:e.value}}));return(0,p.jsxs)(c.Fragment,{children:[(0,p.jsx)(b.Z,{label:"Watch",actions:(0,p.jsx)(x.Z,{})}),(0,p.jsx)(l.Xgh,{children:(0,p.jsxs)(l.rjZ,{container:!0,children:[(0,p.jsxs)(l.rjZ,{item:!0,xs:12,sx:{display:"flex",gap:10,marginBottom:15,alignItems:"center"},children:[(0,p.jsxs)(l.xuv,{sx:{flexGrow:1},children:[(0,p.jsx)(l.AZs,{children:"Bucket"}),(0,p.jsx)(l.PhF,{id:"bucket-name",name:"bucket-name",value:k,onChange:function(e){y(e)},disabled:w,options:F,placeholder:"Select Bucket"})]}),(0,p.jsxs)(l.xuv,{sx:{flexGrow:1},children:[(0,p.jsx)(l.AZs,{children:"Prefix"}),(0,p.jsx)(l.Wzg,{id:"prefix-resource",disabled:w,onChange:function(e){T(e.target.value)}})]}),(0,p.jsxs)(l.xuv,{sx:{flexGrow:1},children:[(0,p.jsx)(l.AZs,{children:"Suffix"}),(0,p.jsx)(l.Wzg,{id:"suffix-resource",disabled:w,onChange:function(e){z(e.target.value)}})]}),(0,p.jsx)(l.xuv,{sx:{alignSelf:"flex-end",paddingBottom:4},children:w?(0,p.jsx)(l.zxk,{id:"stop-watch",type:"submit",variant:"callAction",onClick:function(){return m(!1)},label:"Stop"}):(0,p.jsx)(l.zxk,{id:"start-watch",type:"submit",variant:"callAction",onClick:function(){return m(!0)},label:"Start"})})]}),(0,p.jsx)(l.rjZ,{item:!0,xs:12,children:(0,p.jsx)(l.wQF,{columns:[{label:"Time",elementKey:"Time",renderFunction:s.zk},{label:"Size",elementKey:"Size",renderFunction:s.ae},{label:"Type",elementKey:"Type"},{label:"Path",elementKey:"Path"}],records:t,entityName:"Watch",customEmptyMessage:"No Changes at this time",idField:"watch_table",isLoading:!1,customPaperHeight:"calc(100vh - 270px)"})})]})})]})}},94210:function(e){var t=function(){if("object"===typeof self&&self)return self;if("object"===typeof window&&window)return window;throw new Error("Unable to resolve global `this`")};e.exports=function(){if(this)return this;if("object"===typeof globalThis&&globalThis)return globalThis;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch(e){return t()}try{return __global__||t()}finally{delete Object.prototype.__global__}}()},95087:function(e,t,n){var o;if("object"===typeof globalThis)o=globalThis;else try{o=n(94210)}catch(l){}finally{if(o||"undefined"===typeof window||(o=window),!o)throw new Error("Could not determine global this")}var c=o.WebSocket||o.MozWebSocket,i=n(51496);function r(e,t){return t?new c(e,t):new c(e)}c&&["CONNECTING","OPEN","CLOSING","CLOSED"].forEach((function(e){Object.defineProperty(r,e,{get:function(){return c[e]}})})),e.exports={w3cwebsocket:c?r:null,version:i}},51496:function(e,t,n){e.exports=n(19794).version},19794:function(e){"use strict";e.exports={version:"1.0.34"}}}]); +//# sourceMappingURL=6272.1dc1f3f1.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/6272.1dc1f3f1.chunk.js.map b/portal-ui/build/static/js/6272.1dc1f3f1.chunk.js.map new file mode 100644 index 0000000000..7efaa2b5ef --- /dev/null +++ b/portal-ui/build/static/js/6272.1dc1f3f1.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/6272.1dc1f3f1.chunk.js","mappings":"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","sources":["screens/Console/Watch/Watch.tsx","../node_modules/es5-ext/global.js","../node_modules/websocket/lib/browser.js","../node_modules/websocket/lib/version.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, { useEffect, useState, Fragment } from \"react\";\nimport { IMessageEvent, w3cwebsocket as W3CWebSocket } from \"websocket\";\nimport { useSelector } from \"react-redux\";\nimport {\n Box,\n Button,\n DataTable,\n Grid,\n InputBox,\n InputLabel,\n PageLayout,\n Select,\n} from \"mds\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { Bucket, BucketList, EventInfo } from \"./types\";\nimport { niceBytes, timeFromDate } from \"../../../common/utils\";\nimport { wsProtocol } from \"../../../utils/wsUtils\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { watchMessageReceived, watchResetMessages } from \"./watchSlice\";\nimport { setHelpName } from \"../../../systemSlice\";\nimport api from \"../../../common/api\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst Watch = () => {\n const dispatch = useAppDispatch();\n const messages = useSelector((state: AppState) => state.watch.messages);\n\n const [start, setStart] = useState(false);\n const [bucketName, setBucketName] = useState(\"Select Bucket\");\n const [prefix, setPrefix] = useState(\"\");\n const [suffix, setSuffix] = useState(\"\");\n const [bucketList, setBucketList] = useState([]);\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 useEffect(() => {\n fetchBucketList();\n }, []);\n\n useEffect(() => {\n dispatch(watchResetMessages());\n // begin watch if bucketName in bucketList and start pressed\n if (start && bucketList.some((bucket) => bucket.name === bucketName)) {\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/watch/${bucketName}?prefix=${prefix}&suffix=${suffix}`,\n );\n\n let interval: any | null = null;\n if (c !== null) {\n c.onopen = () => {\n console.log(\"WebSocket Client Connected\");\n c.send(\"ok\");\n interval = setInterval(() => {\n c.send(\"ok\");\n }, 10 * 1000);\n };\n c.onmessage = (message: IMessageEvent) => {\n let m: EventInfo = JSON.parse(message.data.toString());\n m.Time = new Date(m.Time.toString());\n m.key = Math.random();\n dispatch(watchMessageReceived(m));\n };\n c.onclose = () => {\n clearInterval(interval);\n console.log(\"connection closed by server\");\n // reset start status\n setStart(false);\n };\n return () => {\n // close websocket on useEffect cleanup\n c.close(1000);\n clearInterval(interval);\n console.log(\"closing websockets\");\n };\n }\n } else {\n // reset start status\n setStart(false);\n }\n }, [dispatch, start, bucketList, bucketName, prefix, suffix]);\n\n const bucketNames = bucketList.map((bucketName) => ({\n label: bucketName.name,\n value: bucketName.name,\n }));\n\n useEffect(() => {\n dispatch(setHelpName(\"watch\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const optionsArray = bucketNames.map((option) => ({\n label: option.label,\n value: option.value,\n }));\n\n return (\n \n } />\n \n \n \n \n Bucket\n {\n setBucketName(value as string);\n }}\n disabled={start}\n options={optionsArray}\n placeholder={\"Select Bucket\"}\n />\n \n \n Prefix\n {\n setPrefix(e.target.value);\n }}\n />\n \n \n Suffix\n {\n setSuffix(e.target.value);\n }}\n />\n \n \n {start ? (\n setStart(false)}\n label={\"Stop\"}\n />\n ) : (\n setStart(true)}\n label={\"Start\"}\n />\n )}\n \n \n\n \n \n \n \n \n \n );\n};\n\nexport default Watch;\n","var naiveFallback = function () {\n\tif (typeof self === \"object\" && self) return self;\n\tif (typeof window === \"object\" && window) return window;\n\tthrow new Error(\"Unable to resolve global `this`\");\n};\n\nmodule.exports = (function () {\n\tif (this) return this;\n\n\t// Unexpected strict mode (may happen if e.g. bundled into ESM module)\n\n\t// Fallback to standard globalThis if available\n\tif (typeof globalThis === \"object\" && globalThis) return globalThis;\n\n\t// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis\n\t// In all ES5+ engines global object inherits from Object.prototype\n\t// (if you approached one that doesn't please report)\n\ttry {\n\t\tObject.defineProperty(Object.prototype, \"__global__\", {\n\t\t\tget: function () { return this; },\n\t\t\tconfigurable: true\n\t\t});\n\t} catch (error) {\n\t\t// Unfortunate case of updates to Object.prototype being restricted\n\t\t// via preventExtensions, seal or freeze\n\t\treturn naiveFallback();\n\t}\n\ttry {\n\t\t// Safari case (window.__global__ works, but __global__ does not)\n\t\tif (!__global__) return naiveFallback();\n\t\treturn __global__;\n\t} finally {\n\t\tdelete Object.prototype.__global__;\n\t}\n})();\n","var _globalThis;\nif (typeof globalThis === 'object') {\n\t_globalThis = globalThis;\n} else {\n\ttry {\n\t\t_globalThis = require('es5-ext/global');\n\t} catch (error) {\n\t} finally {\n\t\tif (!_globalThis && typeof window !== 'undefined') { _globalThis = window; }\n\t\tif (!_globalThis) { throw new Error('Could not determine global this'); }\n\t}\n}\n\nvar NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;\nvar websocket_version = require('./version');\n\n\n/**\n * Expose a W3C WebSocket class with just one or two arguments.\n */\nfunction W3CWebSocket(uri, protocols) {\n\tvar native_instance;\n\n\tif (protocols) {\n\t\tnative_instance = new NativeWebSocket(uri, protocols);\n\t}\n\telse {\n\t\tnative_instance = new NativeWebSocket(uri);\n\t}\n\n\t/**\n\t * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket\n\t * class). Since it is an Object it will be returned as it is when creating an\n\t * instance of W3CWebSocket via 'new W3CWebSocket()'.\n\t *\n\t * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2\n\t */\n\treturn native_instance;\n}\nif (NativeWebSocket) {\n\t['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) {\n\t\tObject.defineProperty(W3CWebSocket, prop, {\n\t\t\tget: function() { return NativeWebSocket[prop]; }\n\t\t});\n\t});\n}\n\n/**\n * Module exports.\n */\nmodule.exports = {\n 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null,\n 'version' : websocket_version\n};\n","module.exports = require('../package.json').version;\n"],"names":["dispatch","useAppDispatch","messages","useSelector","state","watch","_useState","useState","_useState2","_slicedToArray","start","setStart","_useState3","_useState4","bucketName","setBucketName","_useState5","_useState6","prefix","setPrefix","_useState7","_useState8","suffix","setSuffix","_useState9","_useState10","bucketList","setBucketList","useEffect","api","invoke","then","res","buckets","catch","err","console","error","watchResetMessages","some","bucket","name","url","URL","window","location","toString","port","baseUrl","document","baseURI","pathname","wsProt","wsProtocol","protocol","c","W3CWebSocket","concat","hostname","interval","onopen","log","send","setInterval","onmessage","message","m","JSON","parse","data","Time","Date","key","Math","random","watchMessageReceived","onclose","clearInterval","close","bucketNames","map","label","value","setHelpName","optionsArray","option","_jsxs","Fragment","children","_jsx","PageHeaderWrapper","actions","HelpMenu","PageLayout","Grid","container","item","xs","sx","display","gap","marginBottom","alignItems","Box","flexGrow","InputLabel","Select","id","onChange","disabled","options","placeholder","InputBox","e","target","alignSelf","paddingBottom","Button","type","variant","onClick","DataTable","columns","elementKey","renderFunction","timeFromDate","niceBytes","records","entityName","customEmptyMessage","idField","isLoading","customPaperHeight","naiveFallback","self","Error","module","exports","this","globalThis","Object","defineProperty","prototype","get","configurable","__global__","_globalThis","require","NativeWebSocket","WebSocket","MozWebSocket","websocket_version","uri","protocols","forEach","prop"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/6272.d6ff2673.chunk.js b/portal-ui/build/static/js/6272.d6ff2673.chunk.js deleted file mode 100644 index 15b75fafa9..0000000000 --- a/portal-ui/build/static/js/6272.d6ff2673.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[6272],{76272:function(e,t,n){"use strict";n.r(t);var o=n(29439),c=n(72791),r=n(95087),i=n(78687),a=n(29945),l=n(81551),s=n(45248),u=n(26824),f=n(10679),d=n(87995),h=n(81207),b=n(47974),x=n(99670),p=n(80184);t.default=function(){var e=(0,l.TL)(),t=(0,i.v9)((function(e){return e.watch.messages})),n=(0,c.useState)(!1),w=(0,o.Z)(n,2),g=w[0],m=w[1],v=(0,c.useState)("Select Bucket"),j=(0,o.Z)(v,2),k=j[0],y=j[1],S=(0,c.useState)(""),C=(0,o.Z)(S,2),_=C[0],T=C[1],Z=(0,c.useState)(""),E=(0,o.Z)(Z,2),O=E[0],z=E[1],N=(0,c.useState)([]),P=(0,o.Z)(N,2),G=P[0],I=P[1];(0,c.useEffect)((function(){h.Z.invoke("GET","/api/v1/buckets").then((function(e){var t=[];null!==e.buckets&&(t=e.buckets),I(t)})).catch((function(e){console.error(e)}))}),[]),(0,c.useEffect)((function(){if(e((0,f.uE)()),g&&G.some((function(e){return e.name===k}))){var t=new URL(window.location.toString()),n=t.port,o=new URL(document.baseURI).pathname,c=(0,u.x2)(t.protocol),i=new r.w3cwebsocket("".concat(c,"://").concat(t.hostname,":").concat(n).concat(o,"ws/watch/").concat(k,"?prefix=").concat(_,"&suffix=").concat(O)),a=null;if(null!==i)return i.onopen=function(){console.log("WebSocket Client Connected"),i.send("ok"),a=setInterval((function(){i.send("ok")}),1e4)},i.onmessage=function(t){var n=JSON.parse(t.data.toString());n.Time=new Date(n.Time.toString()),n.key=Math.random(),e((0,f.pG)(n))},i.onclose=function(){clearInterval(a),console.log("connection closed by server"),m(!1)},function(){i.close(1e3),clearInterval(a),console.log("closing websockets")}}else m(!1)}),[e,g,G,k,_,O]);var W=G.map((function(e){return{label:e.name,value:e.name}}));(0,c.useEffect)((function(){e((0,d.Sc)("watch"))}),[]);var F=W.map((function(e){return{label:e.label,value:e.value}}));return(0,p.jsxs)(c.Fragment,{children:[(0,p.jsx)(b.Z,{label:"Watch",actions:(0,p.jsx)(x.Z,{})}),(0,p.jsx)(a.Xgh,{children:(0,p.jsxs)(a.rjZ,{container:!0,children:[(0,p.jsxs)(a.rjZ,{item:!0,xs:12,sx:{display:"flex",gap:10,marginBottom:15,alignItems:"center"},children:[(0,p.jsxs)(a.xuv,{sx:{flexGrow:1},children:[(0,p.jsx)(a.AZs,{children:"Bucket"}),(0,p.jsx)(a.PhF,{id:"bucket-name",name:"bucket-name",value:k,onChange:function(e){y(e)},disabled:g,options:F,placeholder:"Select Bucket"})]}),(0,p.jsxs)(a.xuv,{sx:{flexGrow:1},children:[(0,p.jsx)(a.AZs,{children:"Prefix"}),(0,p.jsx)(a.Wzg,{id:"prefix-resource",disabled:g,onChange:function(e){T(e.target.value)}})]}),(0,p.jsxs)(a.xuv,{sx:{flexGrow:1},children:[(0,p.jsx)(a.AZs,{children:"Suffix"}),(0,p.jsx)(a.Wzg,{id:"suffix-resource",disabled:g,onChange:function(e){z(e.target.value)}})]}),(0,p.jsx)(a.xuv,{sx:{alignSelf:"flex-end",paddingBottom:4},children:g?(0,p.jsx)(a.zxk,{id:"stop-watch",type:"submit",variant:"callAction",onClick:function(){return m(!1)},label:"Stop"}):(0,p.jsx)(a.zxk,{id:"start-watch",type:"submit",variant:"callAction",onClick:function(){return m(!0)},label:"Start"})})]}),(0,p.jsx)(a.rjZ,{item:!0,xs:12,children:(0,p.jsx)(a.wQF,{columns:[{label:"Time",elementKey:"Time",renderFunction:s.zk},{label:"Size",elementKey:"Size",renderFunction:s.ae},{label:"Type",elementKey:"Type"},{label:"Path",elementKey:"Path"}],records:t,entityName:"Watch",customEmptyMessage:"No Changes at this time",idField:"watch_table",isLoading:!1,customPaperHeight:"calc(100vh - 270px)"})})]})})]})}},26824:function(e,t,n){"use strict";n.d(t,{HE:function(){return r},V9:function(){return o},ci:function(){return c},x2:function(){return i}});var o=1006,c=1008,r=1011,i=function(e){var t="ws";return"https:"===e&&(t="wss"),t}},94210:function(e){var t=function(){if("object"===typeof self&&self)return self;if("object"===typeof window&&window)return window;throw new Error("Unable to resolve global `this`")};e.exports=function(){if(this)return this;if("object"===typeof globalThis&&globalThis)return globalThis;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch(e){return t()}try{return __global__||t()}finally{delete Object.prototype.__global__}}()},95087:function(e,t,n){var o;if("object"===typeof globalThis)o=globalThis;else try{o=n(94210)}catch(a){}finally{if(o||"undefined"===typeof window||(o=window),!o)throw new Error("Could not determine global this")}var c=o.WebSocket||o.MozWebSocket,r=n(51496);function i(e,t){return t?new c(e,t):new c(e)}c&&["CONNECTING","OPEN","CLOSING","CLOSED"].forEach((function(e){Object.defineProperty(i,e,{get:function(){return c[e]}})})),e.exports={w3cwebsocket:c?i:null,version:r}},51496:function(e,t,n){e.exports=n(19794).version},19794:function(e){"use strict";e.exports={version:"1.0.34"}}}]); -//# sourceMappingURL=6272.d6ff2673.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/6272.d6ff2673.chunk.js.map b/portal-ui/build/static/js/6272.d6ff2673.chunk.js.map deleted file mode 100644 index ea72095961..0000000000 --- a/portal-ui/build/static/js/6272.d6ff2673.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/6272.d6ff2673.chunk.js","mappings":"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","sources":["screens/Console/Watch/Watch.tsx","utils/wsUtils.ts","../node_modules/es5-ext/global.js","../node_modules/websocket/lib/browser.js","../node_modules/websocket/lib/version.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, { useEffect, useState, Fragment } from \"react\";\nimport { IMessageEvent, w3cwebsocket as W3CWebSocket } from \"websocket\";\nimport { useSelector } from \"react-redux\";\nimport {\n Box,\n Button,\n DataTable,\n Grid,\n InputBox,\n InputLabel,\n PageLayout,\n Select,\n} from \"mds\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { Bucket, BucketList, EventInfo } from \"./types\";\nimport { niceBytes, timeFromDate } from \"../../../common/utils\";\nimport { wsProtocol } from \"../../../utils/wsUtils\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { watchMessageReceived, watchResetMessages } from \"./watchSlice\";\nimport { setHelpName } from \"../../../systemSlice\";\nimport api from \"../../../common/api\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst Watch = () => {\n const dispatch = useAppDispatch();\n const messages = useSelector((state: AppState) => state.watch.messages);\n\n const [start, setStart] = useState(false);\n const [bucketName, setBucketName] = useState(\"Select Bucket\");\n const [prefix, setPrefix] = useState(\"\");\n const [suffix, setSuffix] = useState(\"\");\n const [bucketList, setBucketList] = useState([]);\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 useEffect(() => {\n fetchBucketList();\n }, []);\n\n useEffect(() => {\n dispatch(watchResetMessages());\n // begin watch if bucketName in bucketList and start pressed\n if (start && bucketList.some((bucket) => bucket.name === bucketName)) {\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/watch/${bucketName}?prefix=${prefix}&suffix=${suffix}`,\n );\n\n let interval: any | null = null;\n if (c !== null) {\n c.onopen = () => {\n console.log(\"WebSocket Client Connected\");\n c.send(\"ok\");\n interval = setInterval(() => {\n c.send(\"ok\");\n }, 10 * 1000);\n };\n c.onmessage = (message: IMessageEvent) => {\n let m: EventInfo = JSON.parse(message.data.toString());\n m.Time = new Date(m.Time.toString());\n m.key = Math.random();\n dispatch(watchMessageReceived(m));\n };\n c.onclose = () => {\n clearInterval(interval);\n console.log(\"connection closed by server\");\n // reset start status\n setStart(false);\n };\n return () => {\n // close websocket on useEffect cleanup\n c.close(1000);\n clearInterval(interval);\n console.log(\"closing websockets\");\n };\n }\n } else {\n // reset start status\n setStart(false);\n }\n }, [dispatch, start, bucketList, bucketName, prefix, suffix]);\n\n const bucketNames = bucketList.map((bucketName) => ({\n label: bucketName.name,\n value: bucketName.name,\n }));\n\n useEffect(() => {\n dispatch(setHelpName(\"watch\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const optionsArray = bucketNames.map((option) => ({\n label: option.label,\n value: option.value,\n }));\n\n return (\n \n } />\n \n \n \n \n Bucket\n {\n setBucketName(value as string);\n }}\n disabled={start}\n options={optionsArray}\n placeholder={\"Select Bucket\"}\n />\n \n \n Prefix\n {\n setPrefix(e.target.value);\n }}\n />\n \n \n Suffix\n {\n setSuffix(e.target.value);\n }}\n />\n \n \n {start ? (\n setStart(false)}\n label={\"Stop\"}\n />\n ) : (\n setStart(true)}\n label={\"Start\"}\n />\n )}\n \n \n\n \n \n \n \n \n \n );\n};\n\nexport default Watch;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\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 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","var naiveFallback = function () {\n\tif (typeof self === \"object\" && self) return self;\n\tif (typeof window === \"object\" && window) return window;\n\tthrow new Error(\"Unable to resolve global `this`\");\n};\n\nmodule.exports = (function () {\n\tif (this) return this;\n\n\t// Unexpected strict mode (may happen if e.g. bundled into ESM module)\n\n\t// Fallback to standard globalThis if available\n\tif (typeof globalThis === \"object\" && globalThis) return globalThis;\n\n\t// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis\n\t// In all ES5+ engines global object inherits from Object.prototype\n\t// (if you approached one that doesn't please report)\n\ttry {\n\t\tObject.defineProperty(Object.prototype, \"__global__\", {\n\t\t\tget: function () { return this; },\n\t\t\tconfigurable: true\n\t\t});\n\t} catch (error) {\n\t\t// Unfortunate case of updates to Object.prototype being restricted\n\t\t// via preventExtensions, seal or freeze\n\t\treturn naiveFallback();\n\t}\n\ttry {\n\t\t// Safari case (window.__global__ works, but __global__ does not)\n\t\tif (!__global__) return naiveFallback();\n\t\treturn __global__;\n\t} finally {\n\t\tdelete Object.prototype.__global__;\n\t}\n})();\n","var _globalThis;\nif (typeof globalThis === 'object') {\n\t_globalThis = globalThis;\n} else {\n\ttry {\n\t\t_globalThis = require('es5-ext/global');\n\t} catch (error) {\n\t} finally {\n\t\tif (!_globalThis && typeof window !== 'undefined') { _globalThis = window; }\n\t\tif (!_globalThis) { throw new Error('Could not determine global this'); }\n\t}\n}\n\nvar NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;\nvar websocket_version = require('./version');\n\n\n/**\n * Expose a W3C WebSocket class with just one or two arguments.\n */\nfunction W3CWebSocket(uri, protocols) {\n\tvar native_instance;\n\n\tif (protocols) {\n\t\tnative_instance = new NativeWebSocket(uri, protocols);\n\t}\n\telse {\n\t\tnative_instance = new NativeWebSocket(uri);\n\t}\n\n\t/**\n\t * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket\n\t * class). Since it is an Object it will be returned as it is when creating an\n\t * instance of W3CWebSocket via 'new W3CWebSocket()'.\n\t *\n\t * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2\n\t */\n\treturn native_instance;\n}\nif (NativeWebSocket) {\n\t['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) {\n\t\tObject.defineProperty(W3CWebSocket, prop, {\n\t\t\tget: function() { return NativeWebSocket[prop]; }\n\t\t});\n\t});\n}\n\n/**\n * Module exports.\n */\nmodule.exports = {\n 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null,\n 'version' : websocket_version\n};\n","module.exports = require('../package.json').version;\n"],"names":["dispatch","useAppDispatch","messages","useSelector","state","watch","_useState","useState","_useState2","_slicedToArray","start","setStart","_useState3","_useState4","bucketName","setBucketName","_useState5","_useState6","prefix","setPrefix","_useState7","_useState8","suffix","setSuffix","_useState9","_useState10","bucketList","setBucketList","useEffect","api","invoke","then","res","buckets","catch","err","console","error","watchResetMessages","some","bucket","name","url","URL","window","location","toString","port","baseUrl","document","baseURI","pathname","wsProt","wsProtocol","protocol","c","W3CWebSocket","concat","hostname","interval","onopen","log","send","setInterval","onmessage","message","m","JSON","parse","data","Time","Date","key","Math","random","watchMessageReceived","onclose","clearInterval","close","bucketNames","map","label","value","setHelpName","optionsArray","option","_jsxs","Fragment","children","_jsx","PageHeaderWrapper","actions","HelpMenu","PageLayout","Grid","container","item","xs","sx","display","gap","marginBottom","alignItems","Box","flexGrow","InputLabel","Select","id","onChange","disabled","options","placeholder","InputBox","e","target","alignSelf","paddingBottom","Button","type","variant","onClick","DataTable","columns","elementKey","renderFunction","timeFromDate","niceBytes","records","entityName","customEmptyMessage","idField","isLoading","customPaperHeight","WSCloseAbnormalClosure","WSClosePolicyViolation","WSCloseInternalServerErr","naiveFallback","self","Error","module","exports","this","globalThis","Object","defineProperty","prototype","get","configurable","__global__","_globalThis","require","NativeWebSocket","WebSocket","MozWebSocket","websocket_version","uri","protocols","forEach","prop"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/6491.412eda76.chunk.js b/portal-ui/build/static/js/6491.412eda76.chunk.js deleted file mode 100644 index 34c26dc691..0000000000 --- a/portal-ui/build/static/js/6491.412eda76.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[6491],{45902:function(e,n,r){"use strict";var t=r(1413),i=(r(72791),r(1582)),o=r(80184);n.Z=function(e){var n=e.label,r=void 0===n?null:n,a=e.value,c=void 0===a?"-":a,l=e.orientation,u=void 0===l?"column":l,s=e.stkProps,d=void 0===s?{}:s,p=e.lblProps,f=void 0===p?{}:p,h=e.valProps,x=void 0===h?{}:h;return(0,o.jsxs)(i.Z,(0,t.Z)((0,t.Z)({direction:{xs:"column",sm:u}},d),{},{children:[(0,o.jsx)("label",(0,t.Z)((0,t.Z)({style:{marginRight:5,fontWeight:600}},f),{},{children:r})),(0,o.jsx)("label",(0,t.Z)((0,t.Z)({style:{marginRight:5,fontWeight:500}},x),{},{children:c}))]}))}},37099:function(e,n,r){"use strict";var t=r(72791),i=r(29945),o=r(80184),a=function(e){var n=e.icon,r=e.description;return(0,o.jsxs)(i.xuv,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[n," ",(0,o.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:r})]})};n.Z=function(e){var n=e.helpText,r=e.docLink,c=e.docText,l=e.contents;return(0,o.jsxs)(i.xuv,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px"},children:[(0,o.jsxs)(i.xuv,{sx:{fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center",marginBottom:"16px",paddingBottom:"20px","& .min-icon":{height:"21px",width:"21px",marginRight:"15px"}},children:[(0,o.jsx)(i.M9A,{}),(0,o.jsx)("div",{children:n})]}),(0,o.jsxs)(i.xuv,{sx:{fontSize:"14px",marginBottom:"15px"},children:[l.map((function(e,n){return(0,o.jsxs)(t.Fragment,{children:[e.icon&&(0,o.jsx)(i.xuv,{sx:{paddingBottom:"20px"},children:(0,o.jsx)(a,{icon:e.icon,description:e.iconDescription})}),(0,o.jsx)(i.xuv,{sx:{paddingBottom:"20px"},children:e.text})]},"feature-item-".concat(n))})),(0,o.jsx)(i.xuv,{sx:{paddingBottom:"20px"},children:(0,o.jsx)("a",{href:r,target:"_blank",rel:"noopener",children:c})})]})]})}},51270:function(e,n,r){"use strict";var t=r(29439),i=r(72791),o=r(29945),a=r(87995),c=r(81551),l=r(9505),u=r(23508),s=r(80184);n.Z=function(e){var n=e.closeDeleteModalAndRefresh,r=e.deleteOpen,d=e.idp,p=e.idpType,f=(0,c.TL)(),h=(0,l.Z)((function(e){n(!0),f((0,a.cN)(!0===e.restart))}),(function(e){return f((0,a.Ih)(e))})),x=(0,t.Z)(h,2),m=x[0],v=x[1];if(!d)return null;var g="_"===d?"Default":d;return(0,s.jsx)(u.Z,{title:"Delete ".concat(g),confirmText:"Delete",isOpen:r,titleIcon:(0,s.jsx)(o.NvT,{}),isLoading:m,onConfirm:function(){v("DELETE","/api/v1/idp/".concat(p,"/").concat(d))},onClose:function(){return n(!1)},confirmButtonProps:{disabled:m},confirmationContent:(0,s.jsxs)(i.Fragment,{children:["Are you sure you want to delete IDP ",(0,s.jsx)("b",{children:g})," ","configuration? ",(0,s.jsx)("br",{})]})})}},6491:function(e,n,r){"use strict";r.r(n),r.d(n,{default:function(){return C}});var t=r(72791),i=r(56087),o=r(29945),a=r(79979),c=r(4942),l=r(1413),u=r(74165),s=r(15861),d=r(29439),p=r(57689),f=r(23814),h=r(81551),x=r(87995),m=r(81207),v=r(9505),g=r(51270),b=r(45902),y=r(47974),Z=r(99670),D=r(80184),j=function(e){var n=e.formFields,r=e.endpoint,i=e.backLink,a=e.header,j=e.idpType,k=e.icon,C=e.helpBox,S=(0,h.TL)(),E=(0,p.s0)(),I=(0,p.UO)().idpName,_=(0,t.useState)(!0),w=(0,d.Z)(_,2),O=w[0],P=w[1],q=(0,t.useState)(!1),N=(0,d.Z)(q,2),A=N[0],L=N[1],B=(0,t.useState)({}),R=(0,d.Z)(B,2),M=R[0],T=R[1],F=(0,t.useState)({}),U=(0,d.Z)(F,2),z=U[0],G=U[1],W=(0,t.useState)({}),V=(0,d.Z)(W,2),Y=V[0],H=V[1],$=(0,t.useState)(!1),K=(0,d.Z)($,2),X=K[0],J=K[1],Q=(0,t.useState)(!1),ee=(0,d.Z)(Q,2),ne=ee[0],re=ee[1],te=(0,v.Z)((function(e){S((0,x.cN)(!0===e.restart))}),(function(e){return S((0,x.Ih)(e))})),ie=(0,d.Z)(te,2),oe=ie[0],ae=ie[1],ce=(0,v.Z)((function(e){L(!A),S((0,x.cN)(!0===e.restart))}),(function(e){S((0,x.Ih)(e))})),le=(0,d.Z)(ce,2),ue=le[0],se=le[1],de=function(){X&&pe(Y),J(!X)},pe=function(e){var n={};e.info&&e.info.forEach((function(e){"enable"===e.key&&L("on"===e.value),n[e.key]=e.value})),T(n)};(0,t.useEffect)((function(){P(!0)}),[]),(0,t.useEffect)((function(){O&&m.Z.invoke("GET","".concat(r).concat(I)).then((function(e){e&&(H(e),pe(e),function(e){var n={};e.info&&e.info.forEach((function(e){n[e.key]=e.value})),G(n)}(e)),P(!1)})).catch((function(e){S((0,x.Ih)(e)),P(!1)}))}),[S,O,I,r]);var fe=function(){for(var e=0,r=Object.entries(n);e0?u[r[n-1]]:"column";u[e]=t}}));i=(0,l.Z)(i,(0,x.k9)({theme:r},s,(function(e,r){return n.useFlexGap?{gap:(0,m.NA)(a,e)}:{"& > :not(style):not(style)":{margin:0},"& > :not(style) ~ :not(style)":(0,t.Z)({},"margin".concat((i=r?u[r]:n.direction,{row:"Left","row-reverse":"Right",column:"Top","column-reverse":"Bottom"}[i])),(0,m.NA)(a,e))};var i})))}return i=(0,x.dt)(r.breakpoints,i)};var k=r(66934),C=r(31402),S=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.createStyledComponent,r=void 0===n?y:n,t=e.useThemeProps,l=void 0===t?Z:t,d=e.componentName,p=void 0===d?"MuiStack":d,h=r(j),x=a.forwardRef((function(e,n){var r=l(e),t=(0,f.Z)(r),a=t.component,d=void 0===a?"div":a,x=t.direction,m=void 0===x?"column":x,b=t.spacing,y=void 0===b?0:b,Z=t.divider,j=t.children,k=t.className,C=t.useFlexGap,S=void 0!==C&&C,E=(0,i.Z)(t,g),I={direction:m,spacing:y,useFlexGap:S},_=(0,u.Z)({root:["root"]},(function(e){return(0,s.Z)(p,e)}),{});return(0,v.jsx)(h,(0,o.Z)({as:d,ownerState:I,ref:n,className:(0,c.Z)(_.root,k)},E,{children:Z?D(j,Z):j}))}));return x}({createStyledComponent:(0,k.ZP)("div",{name:"MuiStack",slot:"Root",overridesResolver:function(e,n){return n.root}}),useThemeProps:function(e){return(0,C.Z)({props:e,name:"MuiStack"})}}),E=S},31260:function(e,n,r){"use strict";var t=r(78949);n.Z=t.Z},28610:function(e,n,r){"use strict";r.r(n),r.d(n,{capitalize:function(){return i.Z},createChainedFunction:function(){return o.Z},createSvgIcon:function(){return a.Z},debounce:function(){return c.Z},deprecatedPropType:function(){return l},isMuiElement:function(){return u.Z},ownerDocument:function(){return s.Z},ownerWindow:function(){return d.Z},requirePropFactory:function(){return p},setRef:function(){return f},unstable_ClassNameGenerator:function(){return Z},unstable_useEnhancedEffect:function(){return h.Z},unstable_useId:function(){return x.Z},unsupportedProp:function(){return m},useControlled:function(){return v.Z},useEventCallback:function(){return g.Z},useForkRef:function(){return b.Z},useIsFocusVisible:function(){return y.Z}});var t=r(55902),i=r(14036),o=r(31260),a=r(76189),c=r(83199);var l=function(e,n){return function(){return null}},u=r(19103),s=r(98301),d=r(17602);r(87462);var p=function(e,n){return function(){return null}},f=r(62971).Z,h=r(40162),x=r(67384);var m=function(e,n,r,t,i){return null},v=r(98278),g=r(89683),b=r(42071),y=r(23031),Z={configure:function(e){t.Z.configure(e)}}},19103:function(e,n,r){"use strict";r.d(n,{Z:function(){return i}});var t=r(72791);var i=function(e,n){return t.isValidElement(e)&&-1!==n.indexOf(e.type.muiName)}},78949:function(e,n,r){"use strict";function t(){for(var e=arguments.length,n=new Array(e),r=0;r {\n return (\n \n \n \n \n );\n};\n\nexport default LabelValuePair;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { HelpIconFilled, Box } from \"mds\";\n\ninterface IContent {\n icon: React.ReactNode;\n text: string;\n iconDescription: string;\n}\n\ninterface IAddIDPConfigurationHelpBoxProps {\n helpText: string;\n docLink: string;\n docText: string;\n contents: IContent[];\n}\n\nconst FeatureItem = ({\n icon,\n description,\n}: {\n icon: any;\n description: string;\n}) => {\n return (\n \n {icon}{\" \"}\n

    \n {description}\n
    \n \n );\n};\n\nconst AddIDPConfigurationHelpBox = ({\n helpText,\n docLink,\n docText,\n contents,\n}: IAddIDPConfigurationHelpBoxProps) => {\n return (\n \n \n \n
    {helpText}
    \n \n \n {contents.map((content, index) => (\n \n {content.icon && (\n \n \n \n )}\n {content.text}\n \n ))}\n \n \n {docText}\n \n \n \n \n );\n};\n\nexport default AddIDPConfigurationHelpBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 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 { ConfirmDeleteIcon } from \"mds\";\nimport {\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\n\ninterface IDeleteIDPConfigurationModalProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n idp: string;\n idpType: string;\n}\n\nconst DeleteIDPConfigurationModal = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n idp,\n idpType,\n}: IDeleteIDPConfigurationModalProps) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = (res: any) => {\n closeDeleteModalAndRefresh(true);\n dispatch(setServerNeedsRestart(res.restart === true));\n };\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n if (!idp) {\n return null;\n }\n\n const onConfirmDelete = () => {\n invokeDeleteApi(\"DELETE\", `/api/v1/idp/${idpType}/${idp}`);\n };\n\n const displayName = idp === \"_\" ? \"Default\" : idp;\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmButtonProps={{\n disabled: deleteLoading,\n }}\n confirmationContent={\n \n Are you sure you want to delete IDP {displayName}{\" \"}\n configuration?
    \n
    \n }\n />\n );\n};\n\nexport default DeleteIDPConfigurationModal;\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 {\n BackLink,\n Button,\n EditIcon,\n PageLayout,\n RefreshIcon,\n TrashIcon,\n Box,\n Grid,\n Switch,\n InputBox,\n FormLayout,\n breakPoints,\n ScreenTitle,\n} from \"mds\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { useAppDispatch } from \"../../../store\";\nimport {\n setErrorSnackMessage,\n setHelpName,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\nimport api from \"../../../common/api\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport DeleteIDPConfigurationModal from \"./DeleteIDPConfigurationModal\";\nimport LabelValuePair from \"../Common/UsageBarWrapper/LabelValuePair\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\ntype IDPConfigurationDetailsProps = {\n formFields: object;\n endpoint: string;\n backLink: string;\n header: string;\n idpType: string;\n helpBox: React.ReactNode;\n icon: React.ReactNode;\n};\n\nconst IDPConfigurationDetails = ({\n formFields,\n endpoint,\n backLink,\n header,\n idpType,\n icon,\n helpBox,\n}: IDPConfigurationDetailsProps) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const params = useParams();\n\n const configurationName = params.idpName;\n\n const [loading, setLoading] = useState(true);\n const [isEnabled, setIsEnabled] = useState(false);\n const [fields, setFields] = useState({});\n const [originalFields, setOriginalFields] = useState({});\n const [record, setRecord] = useState({});\n const [editMode, setEditMode] = useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n\n const onSuccess = (res: any) => {\n dispatch(setServerNeedsRestart(res.restart === true));\n };\n\n const onError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n\n const [loadingSave, invokeApi] = useApi(onSuccess, onError);\n\n const onEnabledSuccess = (res: any) => {\n setIsEnabled(!isEnabled);\n dispatch(setServerNeedsRestart(res.restart === true));\n };\n\n const onEnabledError = (err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n };\n\n const [loadingEnabledSave, invokeEnabledApi] = useApi(\n onEnabledSuccess,\n onEnabledError,\n );\n\n const toggleEditMode = () => {\n if (editMode) {\n parseFields(record);\n }\n setEditMode(!editMode);\n };\n\n const parseFields = (record: any) => {\n let fields: any = {};\n if (record.info) {\n record.info.forEach((item: any) => {\n if (item.key === \"enable\") {\n setIsEnabled(item.value === \"on\");\n }\n fields[item.key] = item.value;\n });\n }\n setFields(fields);\n };\n\n const parseOriginalFields = (record: any) => {\n let fields: any = {};\n if (record.info) {\n record.info.forEach((item: any) => {\n fields[item.key] = item.value;\n });\n }\n setOriginalFields(fields);\n };\n\n useEffect(() => {\n setLoading(true);\n }, []);\n\n useEffect(() => {\n const loadRecord = () => {\n api\n .invoke(\"GET\", `${endpoint}${configurationName}`)\n .then((result: any) => {\n if (result) {\n setRecord(result);\n parseFields(result);\n parseOriginalFields(result);\n }\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n };\n\n if (loading) {\n loadRecord();\n }\n }, [dispatch, loading, configurationName, endpoint]);\n\n const validSave = () => {\n for (const [key, value] of Object.entries(formFields)) {\n if (\n value.required &&\n !(\n fields[key] !== undefined &&\n fields[key] !== null &&\n fields[key] !== \"\"\n )\n ) {\n return false;\n }\n }\n return true;\n };\n\n const resetForm = () => {\n setFields({});\n };\n\n const saveRecord = (event: React.FormEvent) => {\n event.preventDefault();\n let input = \"\";\n for (const key of Object.keys(formFields)) {\n if (fields[key] || fields[key] !== originalFields[key]) {\n input += `${key}=${fields[key]} `;\n }\n }\n invokeApi(\"PUT\", `${endpoint}${configurationName}`, { input });\n setEditMode(false);\n };\n\n const closeDeleteModalAndRefresh = async (refresh: boolean) => {\n setDeleteOpen(false);\n\n if (refresh) {\n navigate(backLink);\n }\n };\n\n const toggleConfiguration = (value: boolean) => {\n const input = `enable=${value ? \"on\" : \"off\"}`;\n invokeEnabledApi(\"PUT\", `${endpoint}${configurationName}`, { 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 disabled={!editMode}\n />\n );\n default:\n return (\n ) =>\n setFields({ ...fields, [key]: e.target.value })\n }\n placeholder={value.placeholder}\n disabled={!editMode}\n type={value.type}\n />\n );\n }\n };\n\n const renderEditForm = () => {\n return (\n \n ) => {\n saveRecord(e);\n }}\n >\n \n \n {Object.entries(formFields).map(([key, value]) =>\n renderFormField(key, value),\n )}\n \n {editMode && (\n \n )}\n {editMode && (\n \n )}\n {editMode && (\n \n )}\n \n \n \n \n \n );\n };\n const renderViewForm = () => {\n return (\n \n {Object.entries(formFields).map(([key, value]) => (\n \n ))}\n \n );\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"idp_config\"));\n }, [dispatch]);\n\n return (\n \n {deleteOpen && configurationName && (\n \n )}\n \n navigate(backLink)} label={header} />}\n actions={}\n />\n \n \n {configurationName !== \"_\" && (\n {\n setDeleteOpen(true);\n }}\n label={\"Delete Configuration\"}\n icon={}\n variant={\"secondary\"}\n />\n )}\n {!editMode && (\n }\n onClick={toggleEditMode}\n label={\"Edit\"}\n />\n )}\n toggleConfiguration(!isEnabled)}\n label={isEnabled ? \"Disable\" : \"Enable\"}\n disabled={loadingEnabledSave}\n />\n setLoading(true)}\n label={\"Refresh\"}\n icon={}\n />\n \n }\n sx={{\n marginBottom: 15,\n }}\n />\n {editMode ? renderEditForm() : renderViewForm()}\n \n \n
    \n );\n};\n\nexport default IDPConfigurationDetails;\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 { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport { LockIcon } from \"mds\";\nimport { openIDFormFields, openIDHelpBoxContents } from \"./utils\";\nimport IDPConfigurationDetails from \"./IDPConfigurationDetails\";\nimport AddIDPConfigurationHelpBox from \"./AddIDPConfigurationHelpbox\";\n\nconst IDPOpenIDConfigurationDetails = () => {\n return (\n \n }\n formFields={openIDFormFields}\n icon={}\n />\n );\n};\n\nexport default IDPOpenIDConfigurationDetails;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport LoginIcon from \"@mui/icons-material/Login\";\nimport { LockIcon } from \"mds\";\n\nexport const ldapHelpBoxContents = [\n {\n text: \"MinIO supports using an Active Directory or LDAP (AD/LDAP) service for external management of user identities. Configuring an external IDentity Provider (IDP) enables Single-Sign On (SSO) workflows, where applications authenticate against the external IDP before accessing MinIO.\",\n icon: ,\n iconDescription: \"Create Configurations\",\n },\n {\n text: \"MinIO queries the configured Active Directory / LDAP server to verify the credentials specified by the application and optionally return a list of groups in which the user has membership. MinIO supports two modes (Lookup-Bind Mode and Username-Bind Mode) for performing these queries\",\n icon: null,\n iconDescription: \"\",\n },\n {\n text: \"MinIO recommends using Lookup-Bind mode as the preferred method for verifying AD/LDAP credentials. Username-Bind mode is a legacy method retained for backwards compatibility only.\",\n icon: null,\n iconDescription: \"\",\n },\n];\n\nexport const openIDHelpBoxContents = [\n {\n text: \"MinIO supports using an OpenID Connect (OIDC) compatible IDentity Provider (IDP) such as Okta, KeyCloak, Dex, Google, or Facebook for external management of user identities.\",\n icon: ,\n iconDescription: \"Create Configurations\",\n },\n {\n text: \"Configuring an external IDP enables Single-Sign On workflows, where applications authenticate against the external IDP before accessing MinIO.\",\n icon: null,\n iconDescription: \"\",\n },\n];\n\nexport const openIDFormFields = {\n config_url: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Config URL is required\" : \"\";\n },\n label: \"Config URL\",\n tooltip: \"Config URL for identity provider configuration\",\n placeholder:\n \"https://identity-provider-url/.well-known/openid-configuration\",\n type: \"text\",\n },\n client_id: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Client ID is required\" : \"\";\n },\n label: \"Client ID\",\n tooltip: \"Identity provider Client ID\",\n placeholder: \"Enter Client ID\",\n type: \"text\",\n },\n client_secret: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Client Secret is required\" : \"\";\n },\n label: \"Client Secret\",\n tooltip: \"Identity provider Client Secret\",\n placeholder: \"Enter Client Secret\",\n type: \"password\",\n },\n claim_name: {\n required: false,\n label: \"Claim Name\",\n tooltip: \"Claim from which MinIO will read the policy or role to use\",\n placeholder: \"Enter Claim Name\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n },\n display_name: {\n required: false,\n label: \"Display Name\",\n tooltip: \"\",\n placeholder: \"Enter Display Name\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n },\n claim_prefix: {\n required: false,\n label: \"Claim Prefix\",\n tooltip: \"\",\n placeholder: \"Enter Claim Prefix\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n },\n scopes: {\n required: false,\n label: \"Scopes\",\n tooltip: \"\",\n placeholder: \"openid,profile,email\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n },\n redirect_uri: {\n required: false,\n label: \"Redirect URI\",\n tooltip: \"\",\n placeholder: \"https://console-endpoint-url/oauth_callback\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n },\n role_policy: {\n required: false,\n label: \"Role Policy\",\n tooltip: \"\",\n placeholder: \"readonly\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n },\n claim_userinfo: {\n required: false,\n label: \"Claim User Info\",\n tooltip: \"\",\n placeholder: \"Claim User Info\",\n type: \"toggle\",\n hasError: (s: string, editMode: boolean) => \"\",\n },\n redirect_uri_dynamic: {\n required: false,\n label: \"Redirect URI Dynamic\",\n tooltip: \"\",\n placeholder: \"Redirect URI Dynamic\",\n type: \"toggle\",\n hasError: (s: string, editMode: boolean) => \"\",\n },\n};\n\nexport const ldapFormFields = {\n server_insecure: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Server Address is required\" : \"\";\n },\n label: \"Server Insecure\",\n tooltip: \"Disable SSL certificate verification \",\n placeholder: \"myldapserver.com:636\",\n type: \"toggle\",\n editOnly: false,\n },\n server_addr: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Server Address is required\" : \"\";\n },\n label: \"Server Address\",\n tooltip: 'AD/LDAP server address e.g. \"myldapserver.com:636\"',\n placeholder: \"myldapserver.com:636\",\n type: \"text\",\n editOnly: false,\n },\n lookup_bind_dn: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Lookup Bind DN is required\" : \"\";\n },\n label: \"Lookup Bind DN\",\n tooltip:\n \"DN (Distinguished Name) for LDAP read-only service account used to perform DN and group lookups\",\n placeholder: \"cn=admin,dc=min,dc=io\",\n type: \"text\",\n editOnly: false,\n },\n lookup_bind_password: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Lookup Bind Password is required\" : \"\";\n },\n label: \"Lookup Bind Password\",\n tooltip:\n \"Password for LDAP read-only service account used to perform DN and group lookups\",\n placeholder: \"admin\",\n type: \"password\",\n editOnly: true,\n },\n user_dn_search_base_dn: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"User DN Search Base DN is required\" : \"\";\n },\n label: \"User DN Search Base\",\n tooltip: \"\",\n placeholder: \"DC=example,DC=net\",\n type: \"text\",\n editOnly: false,\n },\n user_dn_search_filter: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"User DN Search Filter is required\" : \"\";\n },\n label: \"User DN Search Filter\",\n tooltip: \"\",\n placeholder: \"(sAMAcountName=%s)\",\n type: \"text\",\n editOnly: false,\n },\n group_search_base_dn: {\n required: false,\n hasError: (s: string, editMode: boolean) => \"\",\n label: \"Group Search Base DN\",\n tooltip: \"\",\n placeholder: \"ou=swengg,dc=min,dc=io\",\n type: \"text\",\n editOnly: false,\n },\n group_search_filter: {\n required: false,\n hasError: (s: string, editMode: boolean) => \"\",\n label: \"Group Search Filter\",\n tooltip: \"\",\n placeholder: \"(&(objectclass=groupofnames)(member=%d))\",\n type: \"text\",\n editOnly: false,\n },\n};\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11 7 9.6 8.4l2.6 2.6H2v2h10.2l-2.6 2.6L11 17l5-5-5-5zm9 12h-8v2h8c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-8v2h8v14z\"\n}), 'Login');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import createStyled from './createStyled';\nconst styled = createStyled();\nexport default styled;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"component\", \"direction\", \"spacing\", \"divider\", \"children\", \"className\", \"useFlexGap\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { deepmerge, unstable_composeClasses as composeClasses, unstable_generateUtilityClass as generateUtilityClass } from '@mui/utils';\nimport systemStyled from '../styled';\nimport useThemePropsSystem from '../useThemeProps';\nimport { extendSxProp } from '../styleFunctionSx';\nimport createTheme from '../createTheme';\nimport { handleBreakpoints, mergeBreakpointsInOrder, resolveBreakpointValues } from '../breakpoints';\nimport { createUnarySpacing, getValue } from '../spacing';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultTheme = createTheme();\n// widening Theme to any so that the consumer can own the theme structure.\nconst defaultCreateStyledComponent = systemStyled('div', {\n name: 'MuiStack',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n});\nfunction useThemePropsDefault(props) {\n return useThemePropsSystem({\n props,\n name: 'MuiStack',\n defaultTheme\n });\n}\n\n/**\n * Return an array with the separator React element interspersed between\n * each React node of the input children.\n *\n * > joinChildren([1,2,3], 0)\n * [1,0,2,0,3]\n */\nfunction joinChildren(children, separator) {\n const childrenArray = React.Children.toArray(children).filter(Boolean);\n return childrenArray.reduce((output, child, index) => {\n output.push(child);\n if (index < childrenArray.length - 1) {\n output.push( /*#__PURE__*/React.cloneElement(separator, {\n key: `separator-${index}`\n }));\n }\n return output;\n }, []);\n}\nconst getSideFromDirection = direction => {\n return {\n row: 'Left',\n 'row-reverse': 'Right',\n column: 'Top',\n 'column-reverse': 'Bottom'\n }[direction];\n};\nexport const style = ({\n ownerState,\n theme\n}) => {\n let styles = _extends({\n display: 'flex',\n flexDirection: 'column'\n }, handleBreakpoints({\n theme\n }, resolveBreakpointValues({\n values: ownerState.direction,\n breakpoints: theme.breakpoints.values\n }), propValue => ({\n flexDirection: propValue\n })));\n if (ownerState.spacing) {\n const transformer = createUnarySpacing(theme);\n const base = Object.keys(theme.breakpoints.values).reduce((acc, breakpoint) => {\n if (typeof ownerState.spacing === 'object' && ownerState.spacing[breakpoint] != null || typeof ownerState.direction === 'object' && ownerState.direction[breakpoint] != null) {\n acc[breakpoint] = true;\n }\n return acc;\n }, {});\n const directionValues = resolveBreakpointValues({\n values: ownerState.direction,\n base\n });\n const spacingValues = resolveBreakpointValues({\n values: ownerState.spacing,\n base\n });\n if (typeof directionValues === 'object') {\n Object.keys(directionValues).forEach((breakpoint, index, breakpoints) => {\n const directionValue = directionValues[breakpoint];\n if (!directionValue) {\n const previousDirectionValue = index > 0 ? directionValues[breakpoints[index - 1]] : 'column';\n directionValues[breakpoint] = previousDirectionValue;\n }\n });\n }\n const styleFromPropValue = (propValue, breakpoint) => {\n if (ownerState.useFlexGap) {\n return {\n gap: getValue(transformer, propValue)\n };\n }\n return {\n // The useFlexGap={false} implement relies on each child to give up control of the margin.\n // We need to reset the margin to avoid double spacing.\n '& > :not(style):not(style)': {\n margin: 0\n },\n '& > :not(style) ~ :not(style)': {\n [`margin${getSideFromDirection(breakpoint ? directionValues[breakpoint] : ownerState.direction)}`]: getValue(transformer, propValue)\n }\n };\n };\n styles = deepmerge(styles, handleBreakpoints({\n theme\n }, spacingValues, styleFromPropValue));\n }\n styles = mergeBreakpointsInOrder(theme.breakpoints, styles);\n return styles;\n};\nexport default function createStack(options = {}) {\n const {\n // This will allow adding custom styled fn (for example for custom sx style function)\n createStyledComponent = defaultCreateStyledComponent,\n useThemeProps = useThemePropsDefault,\n componentName = 'MuiStack'\n } = options;\n const useUtilityClasses = () => {\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, slot => generateUtilityClass(componentName, slot), {});\n };\n const StackRoot = createStyledComponent(style);\n const Stack = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {\n const themeProps = useThemeProps(inProps);\n const props = extendSxProp(themeProps); // `color` type conflicts with html color attribute.\n const {\n component = 'div',\n direction = 'column',\n spacing = 0,\n divider,\n children,\n className,\n useFlexGap = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = {\n direction,\n spacing,\n useFlexGap\n };\n const classes = useUtilityClasses();\n return /*#__PURE__*/_jsx(StackRoot, _extends({\n as: component,\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n children: divider ? joinChildren(children, divider) : children\n }));\n });\n process.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n children: PropTypes.node,\n direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n divider: PropTypes.node,\n spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n } : void 0;\n return Stack;\n}","'use client';\n\nimport PropTypes from 'prop-types';\nimport { createStack } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nconst Stack = createStack({\n createStyledComponent: styled('div', {\n name: 'MuiStack',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n }),\n useThemeProps: inProps => useThemeProps({\n props: inProps,\n name: 'MuiStack'\n })\n});\nprocess.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Defines the `flex-direction` style property.\n * It is applied for all screen sizes.\n * @default 'column'\n */\n direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n /**\n * Add an element between each child.\n */\n divider: PropTypes.node,\n /**\n * Defines the space between immediate children.\n * @default 0\n */\n spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n /**\n * The system prop, which allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * If `true`, the CSS flexbox `gap` is used instead of applying `margin` to children.\n *\n * While CSS `gap` removes the [known limitations](https://mui.com/joy-ui/react-stack/#limitations),\n * it is not fully supported in some browsers. We recommend checking https://caniuse.com/?search=flex%20gap before using this flag.\n *\n * To enable this flag globally, follow the [theme's default props](https://mui.com/material-ui/customization/theme-components/#default-props) configuration.\n * @default false\n */\n useFlexGap: PropTypes.bool\n} : void 0;\nexport default Stack;","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1;\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["_ref","_ref$label","label","_ref$value","value","_ref$orientation","orientation","_ref$stkProps","stkProps","_ref$lblProps","lblProps","_ref$valProps","valProps","_jsxs","Stack","_objectSpread","direction","xs","sm","children","_jsx","style","marginRight","fontWeight","FeatureItem","icon","description","Box","sx","display","height","width","marginBottom","fontSize","fontStyle","color","_ref2","helpText","docLink","docText","contents","flex","border","borderRadius","flexFlow","padding","alignItems","paddingBottom","HelpIconFilled","map","content","index","Fragment","iconDescription","text","concat","href","target","rel","closeDeleteModalAndRefresh","deleteOpen","idp","idpType","dispatch","useAppDispatch","_useApi","useApi","res","setServerNeedsRestart","restart","err","setErrorSnackMessage","_useApi2","_slicedToArray","deleteLoading","invokeDeleteApi","displayName","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","onClose","confirmButtonProps","disabled","confirmationContent","formFields","endpoint","backLink","header","helpBox","navigate","useNavigate","configurationName","useParams","idpName","_useState","useState","_useState2","loading","setLoading","_useState3","_useState4","isEnabled","setIsEnabled","_useState5","_useState6","fields","setFields","_useState7","_useState8","originalFields","setOriginalFields","_useState9","_useState10","record","setRecord","_useState11","_useState12","editMode","setEditMode","_useState13","_useState14","setDeleteOpen","loadingSave","invokeApi","_useApi3","_useApi4","loadingEnabledSave","invokeEnabledApi","toggleEditMode","parseFields","info","forEach","item","key","useEffect","api","invoke","then","result","parseOriginalFields","catch","validSave","_i","_Object$entries","Object","entries","length","_Object$entries$_i","required","undefined","resetForm","_asyncToGenerator","_regeneratorRuntime","mark","_callee","refresh","wrap","_context","prev","next","stop","_x","apply","arguments","setHelpName","DeleteIDPConfigurationModal","Grid","PageHeaderWrapper","BackLink","onClick","actions","HelpMenu","PageLayout","ScreenTitle","subTitle","Button","id","TrashIcon","variant","type","EditIcon","input","toggleConfiguration","RefreshIcon","FormLayout","noValidate","autoComplete","onSubmit","e","event","preventDefault","_i2","_Object$keys","keys","saveRecord","container","_ref3","_ref4","Switch","indicatorLabels","checked","name","tooltip","onChange","_defineProperty","InputBox","error","hasError","placeholder","renderFormField","modalStyleUtils","modalButtonBar","gridTemplateColumns","gridAutoFlow","gap","breakPoints","_ref6","_ref7","LabelValuePair","IDPConfigurationDetails","IAM_PAGES","IDP_OPENID_CONFIGURATIONS","AddIDPConfigurationHelpBox","openIDHelpBoxContents","openIDFormFields","LockIcon","ldapHelpBoxContents","LoginIcon","config_url","s","client_id","client_secret","claim_name","display_name","claim_prefix","scopes","redirect_uri","role_policy","claim_userinfo","redirect_uri_dynamic","ldapFormFields","server_insecure","editOnly","server_addr","lookup_bind_dn","lookup_bind_password","user_dn_search_base_dn","user_dn_search_filter","group_search_base_dn","group_search_filter","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","defineProperty","enumerable","get","_utils","createSvgIcon","createStyled","_excluded","defaultTheme","createTheme","defaultCreateStyledComponent","systemStyled","slot","overridesResolver","props","styles","root","useThemePropsDefault","useThemePropsSystem","joinChildren","separator","childrenArray","React","toArray","filter","Boolean","reduce","output","child","push","ownerState","theme","_extends","flexDirection","handleBreakpoints","resolveBreakpointValues","values","breakpoints","propValue","spacing","transformer","createUnarySpacing","base","acc","breakpoint","directionValues","spacingValues","previousDirectionValue","deepmerge","useFlexGap","getValue","margin","row","column","mergeBreakpointsInOrder","options","_options$createStyled","createStyledComponent","_options$useThemeProp","useThemeProps","_options$componentNam","componentName","StackRoot","inProps","ref","themeProps","extendSxProp","_props$component","component","_props$direction","_props$spacing","divider","className","_props$useFlexGap","other","_objectWithoutPropertiesLoose","classes","composeClasses","generateUtilityClass","as","clsx","createStack","styled","createChainedFunction","validator","reason","componentNameInError","Component","propName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","element","muiNames","indexOf","muiName","_len","funcs","Array","_key","func","_len2","args","_key2","this","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/6491.5f7a419d.chunk.js b/portal-ui/build/static/js/6491.5f7a419d.chunk.js new file mode 100644 index 0000000000..867345159b --- /dev/null +++ b/portal-ui/build/static/js/6491.5f7a419d.chunk.js @@ -0,0 +1,2 @@ +(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[6491],{37099:function(e,n,t){"use strict";var r=t(72791),i=t(29945),o=t(80184),a=function(e){var n=e.icon,t=e.description;return(0,o.jsxs)(i.xuv,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[n," ",(0,o.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:t})]})};n.Z=function(e){var n=e.helpText,t=e.docLink,l=e.docText,c=e.contents;return(0,o.jsxs)(i.xuv,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px"},children:[(0,o.jsxs)(i.xuv,{sx:{fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center",marginBottom:"16px",paddingBottom:"20px","& .min-icon":{height:"21px",width:"21px",marginRight:"15px"}},children:[(0,o.jsx)(i.M9A,{}),(0,o.jsx)("div",{children:n})]}),(0,o.jsxs)(i.xuv,{sx:{fontSize:"14px",marginBottom:"15px"},children:[c.map((function(e,n){return(0,o.jsxs)(r.Fragment,{children:[e.icon&&(0,o.jsx)(i.xuv,{sx:{paddingBottom:"20px"},children:(0,o.jsx)(a,{icon:e.icon,description:e.iconDescription})}),(0,o.jsx)(i.xuv,{sx:{paddingBottom:"20px"},children:e.text})]},"feature-item-".concat(n))})),(0,o.jsx)(i.xuv,{sx:{paddingBottom:"20px"},children:(0,o.jsx)("a",{href:t,target:"_blank",rel:"noopener",children:l})})]})]})}},51270:function(e,n,t){"use strict";var r=t(29439),i=t(72791),o=t(29945),a=t(87995),l=t(44690),c=t(9505),s=t(23508),u=t(80184);n.Z=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,d=e.idp,p=e.idpType,f=(0,l.TL)(),h=(0,c.Z)((function(e){n(!0),f((0,a.cN)(!0===e.restart))}),(function(e){return f((0,a.Ih)(e))})),x=(0,r.Z)(h,2),m=x[0],g=x[1];if(!d)return null;var y="_"===d?"Default":d;return(0,u.jsx)(s.Z,{title:"Delete ".concat(y),confirmText:"Delete",isOpen:t,titleIcon:(0,u.jsx)(o.NvT,{}),isLoading:m,onConfirm:function(){g("DELETE","/api/v1/idp/".concat(p,"/").concat(d))},onClose:function(){return n(!1)},confirmButtonProps:{disabled:m},confirmationContent:(0,u.jsxs)(i.Fragment,{children:["Are you sure you want to delete IDP ",(0,u.jsx)("b",{children:y})," ","configuration? ",(0,u.jsx)("br",{})]})})}},6491:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return I}});var r=t(72791),i=t(56087),o=t(29945),a=t(79979),l=t(4942),c=t(1413),s=t(74165),u=t(15861),d=t(29439),p=t(57689),f=t(23814),h=t(44690),x=t(87995),m=t(81207),g=t(9505),y=t(51270),b=t(47974),v=t(99670),j=t(80184),D=function(e){var n=e.formFields,t=e.endpoint,i=e.backLink,a=e.header,D=e.idpType,C=e.icon,I=e.helpBox,Z=(0,h.TL)(),O=(0,p.s0)(),k=(0,p.UO)().idpName,_=(0,r.useState)(!0),E=(0,d.Z)(_,2),S=E[0],w=E[1],q=(0,r.useState)(!1),N=(0,d.Z)(q,2),P=N[0],A=N[1],L=(0,r.useState)({}),B=(0,d.Z)(L,2),T=B[0],M=B[1],R=(0,r.useState)({}),U=(0,d.Z)(R,2),F=U[0],z=U[1],G=(0,r.useState)({}),Y=(0,d.Z)(G,2),K=Y[0],V=Y[1],H=(0,r.useState)({}),W=(0,d.Z)(H,2),X=W[0],J=W[1],Q=(0,r.useState)(!1),$=(0,d.Z)(Q,2),ee=$[0],ne=$[1],te=(0,r.useState)(!1),re=(0,d.Z)(te,2),ie=re[0],oe=re[1],ae=(0,r.useState)(!1),le=(0,d.Z)(ae,2),ce=le[0],se=le[1],ue=(0,g.Z)((function(e){Z((0,x.cN)(!0===e.restart))}),(function(e){return Z((0,x.Ih)(e))})),de=(0,d.Z)(ue,2),pe=de[0],fe=de[1],he=(0,g.Z)((function(e){A(!P),Z((0,x.cN)(!0===e.restart))}),(function(e){Z((0,x.Ih)(e))})),xe=(0,d.Z)(he,2),me=xe[0],ge=xe[1],ye=(0,r.useCallback)((function(e){var n={},t={},r=0;e.info&&(e.info.forEach((function(e){"enable"===e.key&&A("on"===e.value),e.isEnv&&(t[e.key]="MINIO_IDENTITY_OPENID_".concat(e.key.toUpperCase()).concat("_"!==k?"_".concat(k):""),r++),n[e.key]=e.value})),r>0&&se(!0)),M(n),z(t)}),[k]),be=function(){ee&&ye(X),ne(!ee)};(0,r.useEffect)((function(){w(!0)}),[]),(0,r.useEffect)((function(){S&&m.Z.invoke("GET","".concat(t).concat(k)).then((function(e){e&&(J(e),ye(e),function(e){var n={};e.info&&e.info.forEach((function(e){n[e.key]=e.value})),V(n)}(e)),w(!1)})).catch((function(e){Z((0,x.Ih)(e)),w(!1)}))}),[Z,S,k,t,ye]);var ve=function(){for(var e=0,t=Object.entries(n);e.\n\nimport React, { Fragment } from \"react\";\nimport { HelpIconFilled, Box } from \"mds\";\n\ninterface IContent {\n icon: React.ReactNode;\n text: string;\n iconDescription: string;\n}\n\ninterface IAddIDPConfigurationHelpBoxProps {\n helpText: string;\n docLink: string;\n docText: string;\n contents: IContent[];\n}\n\nconst FeatureItem = ({\n icon,\n description,\n}: {\n icon: any;\n description: string;\n}) => {\n return (\n \n {icon}{\" \"}\n
    \n {description}\n
    \n \n );\n};\n\nconst AddIDPConfigurationHelpBox = ({\n helpText,\n docLink,\n docText,\n contents,\n}: IAddIDPConfigurationHelpBoxProps) => {\n return (\n \n \n \n
    {helpText}
    \n \n \n {contents.map((content, index) => (\n \n {content.icon && (\n \n \n \n )}\n {content.text}\n \n ))}\n \n \n {docText}\n \n \n \n \n );\n};\n\nexport default AddIDPConfigurationHelpBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 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 { ConfirmDeleteIcon } from \"mds\";\nimport {\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\n\ninterface IDeleteIDPConfigurationModalProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n idp: string;\n idpType: string;\n}\n\nconst DeleteIDPConfigurationModal = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n idp,\n idpType,\n}: IDeleteIDPConfigurationModalProps) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = (res: any) => {\n closeDeleteModalAndRefresh(true);\n dispatch(setServerNeedsRestart(res.restart === true));\n };\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n if (!idp) {\n return null;\n }\n\n const onConfirmDelete = () => {\n invokeDeleteApi(\"DELETE\", `/api/v1/idp/${idpType}/${idp}`);\n };\n\n const displayName = idp === \"_\" ? \"Default\" : idp;\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmButtonProps={{\n disabled: deleteLoading,\n }}\n confirmationContent={\n \n Are you sure you want to delete IDP {displayName}{\" \"}\n configuration?
    \n
    \n }\n />\n );\n};\n\nexport default DeleteIDPConfigurationModal;\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 {\n BackLink,\n Box,\n breakPoints,\n Button,\n ConsoleIcon,\n EditIcon,\n FormLayout,\n Grid,\n HelpBox,\n InputBox,\n PageLayout,\n RefreshIcon,\n ScreenTitle,\n Switch,\n Tooltip,\n TrashIcon,\n ValuePair,\n WarnIcon,\n} from \"mds\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { useAppDispatch } from \"../../../store\";\nimport {\n setErrorSnackMessage,\n setHelpName,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\nimport api from \"../../../common/api\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport DeleteIDPConfigurationModal from \"./DeleteIDPConfigurationModal\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\ntype IDPConfigurationDetailsProps = {\n formFields: object;\n endpoint: string;\n backLink: string;\n header: string;\n idpType: string;\n helpBox: React.ReactNode;\n icon: React.ReactNode;\n};\n\nconst IDPConfigurationDetails = ({\n formFields,\n endpoint,\n backLink,\n header,\n idpType,\n icon,\n helpBox,\n}: IDPConfigurationDetailsProps) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const params = useParams();\n\n const configurationName = params.idpName;\n\n const [loading, setLoading] = useState(true);\n const [isEnabled, setIsEnabled] = useState(false);\n const [fields, setFields] = useState({});\n const [overrideFields, setOverrideFields] = useState({});\n const [originalFields, setOriginalFields] = useState({});\n const [record, setRecord] = useState({});\n const [editMode, setEditMode] = useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [envOverride, setEnvOverride] = useState(false);\n\n const onSuccess = (res: any) => {\n dispatch(setServerNeedsRestart(res.restart === true));\n };\n\n const onError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n\n const [loadingSave, invokeApi] = useApi(onSuccess, onError);\n\n const onEnabledSuccess = (res: any) => {\n setIsEnabled(!isEnabled);\n dispatch(setServerNeedsRestart(res.restart === true));\n };\n\n const onEnabledError = (err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n };\n\n const [loadingEnabledSave, invokeEnabledApi] = useApi(\n onEnabledSuccess,\n onEnabledError,\n );\n\n const parseFields = useCallback(\n (record: any) => {\n let fields: any = {};\n let overrideFields: any = {};\n let totEnv = 0;\n\n if (record.info) {\n record.info.forEach((item: any) => {\n if (item.key === \"enable\") {\n setIsEnabled(item.value === \"on\");\n }\n\n if (item.isEnv) {\n overrideFields[\n item.key\n ] = `MINIO_IDENTITY_OPENID_${item.key.toUpperCase()}${\n configurationName !== \"_\" ? `_${configurationName}` : \"\"\n }`;\n totEnv++;\n }\n\n fields[item.key] = item.value;\n });\n\n if (totEnv > 0) {\n setEnvOverride(true);\n }\n }\n setFields(fields);\n setOverrideFields(overrideFields);\n },\n [configurationName],\n );\n\n const toggleEditMode = () => {\n if (editMode) {\n parseFields(record);\n }\n setEditMode(!editMode);\n };\n\n const parseOriginalFields = (record: any) => {\n let fields: any = {};\n if (record.info) {\n record.info.forEach((item: any) => {\n fields[item.key] = item.value;\n });\n }\n setOriginalFields(fields);\n };\n\n useEffect(() => {\n setLoading(true);\n }, []);\n\n useEffect(() => {\n const loadRecord = () => {\n api\n .invoke(\"GET\", `${endpoint}${configurationName}`)\n .then((result: any) => {\n if (result) {\n setRecord(result);\n parseFields(result);\n parseOriginalFields(result);\n }\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n };\n\n if (loading) {\n loadRecord();\n }\n }, [dispatch, loading, configurationName, endpoint, parseFields]);\n\n const validSave = () => {\n for (const [key, value] of Object.entries(formFields)) {\n if (\n value.required &&\n !(\n fields[key] !== undefined &&\n fields[key] !== null &&\n fields[key] !== \"\"\n )\n ) {\n return false;\n }\n }\n return true;\n };\n\n const resetForm = () => {\n setFields({});\n };\n\n const saveRecord = (event: React.FormEvent) => {\n event.preventDefault();\n let input = \"\";\n for (const key of Object.keys(formFields)) {\n if (fields[key] || fields[key] !== originalFields[key]) {\n input += `${key}=${fields[key]} `;\n }\n }\n invokeApi(\"PUT\", `${endpoint}${configurationName}`, { input });\n setEditMode(false);\n };\n\n const closeDeleteModalAndRefresh = async (refresh: boolean) => {\n setDeleteOpen(false);\n\n if (refresh) {\n navigate(backLink);\n }\n };\n\n const toggleConfiguration = (value: boolean) => {\n const input = `enable=${value ? \"on\" : \"off\"}`;\n invokeEnabledApi(\"PUT\", `${endpoint}${configurationName}`, { 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 disabled={!editMode}\n />\n );\n default:\n return (\n ) =>\n setFields({ ...fields, [key]: e.target.value })\n }\n placeholder={value.placeholder}\n disabled={!editMode}\n type={value.type}\n />\n );\n }\n };\n\n const renderEditForm = () => {\n return (\n \n ) => {\n saveRecord(e);\n }}\n >\n \n {editMode ? (\n \n \n Client Secret must be re-entered to change OpenID\n configurations\n \n }\n iconComponent={}\n help={null}\n />\n \n ) : null}\n \n {Object.entries(formFields).map(([key, value]) =>\n renderFormField(key, value),\n )}\n \n {editMode && (\n \n )}\n {editMode && (\n \n )}\n {editMode && (\n \n )}\n \n \n \n \n \n );\n };\n const renderViewForm = () => {\n return (\n \n {Object.entries(formFields).map(([key, value]) => {\n if (!value.editOnly) {\n let label: React.ReactNode = value.label;\n let val: React.ReactNode = fields[key] ? fields[key] : \"\";\n\n if (value.type === \"toggle\" && fields[key]) {\n if (val !== \"on\") {\n val = \"Off\";\n } else {\n val = \"On\";\n }\n }\n\n if (overrideFields[key]) {\n label = (\n \n {value.label}\n \n \n \n \n \n \n );\n\n val = (\n \n {val}\n \n );\n }\n return ;\n }\n return null;\n })}\n \n );\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"idp_config\"));\n }, [dispatch]);\n\n return (\n \n {deleteOpen && configurationName && (\n \n )}\n \n navigate(backLink)} label={header} />}\n actions={}\n />\n \n \n {configurationName !== \"_\" && (\n \n {\n setDeleteOpen(true);\n }}\n label={\"Delete Configuration\"}\n icon={}\n variant={\"secondary\"}\n disabled={envOverride}\n />\n \n )}\n {!editMode && (\n \n }\n onClick={toggleEditMode}\n label={\"Edit\"}\n disabled={envOverride}\n />\n \n )}\n \n toggleConfiguration(!isEnabled)}\n label={isEnabled ? \"Disable\" : \"Enable\"}\n disabled={loadingEnabledSave || envOverride}\n />\n \n setLoading(true)}\n label={\"Refresh\"}\n icon={}\n />\n \n }\n sx={{\n marginBottom: 15,\n }}\n />\n {editMode ? renderEditForm() : renderViewForm()}\n \n \n
    \n );\n};\n\nexport default IDPConfigurationDetails;\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 { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport { LockIcon } from \"mds\";\nimport { openIDFormFields, openIDHelpBoxContents } from \"./utils\";\nimport IDPConfigurationDetails from \"./IDPConfigurationDetails\";\nimport AddIDPConfigurationHelpBox from \"./AddIDPConfigurationHelpbox\";\n\nconst IDPOpenIDConfigurationDetails = () => {\n return (\n \n }\n formFields={openIDFormFields}\n icon={}\n />\n );\n};\n\nexport default IDPOpenIDConfigurationDetails;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport LoginIcon from \"@mui/icons-material/Login\";\nimport { LockIcon } from \"mds\";\n\nexport const ldapHelpBoxContents = [\n {\n text: \"MinIO supports using an Active Directory or LDAP (AD/LDAP) service for external management of user identities. Configuring an external IDentity Provider (IDP) enables Single-Sign On (SSO) workflows, where applications authenticate against the external IDP before accessing MinIO.\",\n icon: ,\n iconDescription: \"Create Configurations\",\n },\n {\n text: \"MinIO queries the configured Active Directory / LDAP server to verify the credentials specified by the application and optionally return a list of groups in which the user has membership. MinIO supports two modes (Lookup-Bind Mode and Username-Bind Mode) for performing these queries\",\n icon: null,\n iconDescription: \"\",\n },\n {\n text: \"MinIO recommends using Lookup-Bind mode as the preferred method for verifying AD/LDAP credentials. Username-Bind mode is a legacy method retained for backwards compatibility only.\",\n icon: null,\n iconDescription: \"\",\n },\n];\n\nexport const openIDHelpBoxContents = [\n {\n text: \"MinIO supports using an OpenID Connect (OIDC) compatible IDentity Provider (IDP) such as Okta, KeyCloak, Dex, Google, or Facebook for external management of user identities.\",\n icon: ,\n iconDescription: \"Create Configurations\",\n },\n {\n text: \"Configuring an external IDP enables Single-Sign On workflows, where applications authenticate against the external IDP before accessing MinIO.\",\n icon: null,\n iconDescription: \"\",\n },\n];\n\nexport const openIDFormFields = {\n config_url: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Config URL is required\" : \"\";\n },\n label: \"Config URL\",\n tooltip: \"Config URL for identity provider configuration\",\n placeholder:\n \"https://identity-provider-url/.well-known/openid-configuration\",\n type: \"text\",\n editOnly: false,\n },\n client_id: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Client ID is required\" : \"\";\n },\n label: \"Client ID\",\n tooltip: \"Identity provider Client ID\",\n placeholder: \"Enter Client ID\",\n type: \"text\",\n editOnly: false,\n },\n client_secret: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Client Secret is required\" : \"\";\n },\n label: \"Client Secret\",\n tooltip: \"Identity provider Client Secret\",\n placeholder: \"Enter Client Secret\",\n type: \"password\",\n editOnly: true,\n },\n claim_name: {\n required: false,\n label: \"Claim Name\",\n tooltip: \"Claim from which MinIO will read the policy or role to use\",\n placeholder: \"Enter Claim Name\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n display_name: {\n required: false,\n label: \"Display Name\",\n tooltip: \"\",\n placeholder: \"Enter Display Name\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n claim_prefix: {\n required: false,\n label: \"Claim Prefix\",\n tooltip: \"\",\n placeholder: \"Enter Claim Prefix\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n scopes: {\n required: false,\n label: \"Scopes\",\n tooltip: \"\",\n placeholder: \"openid,profile,email\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n redirect_uri: {\n required: false,\n label: \"Redirect URI\",\n tooltip: \"\",\n placeholder: \"https://console-endpoint-url/oauth_callback\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n role_policy: {\n required: false,\n label: \"Role Policy\",\n tooltip: \"\",\n placeholder: \"readonly\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n claim_userinfo: {\n required: false,\n label: \"Claim User Info\",\n tooltip: \"\",\n placeholder: \"Claim User Info\",\n type: \"toggle\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n redirect_uri_dynamic: {\n required: false,\n label: \"Redirect URI Dynamic\",\n tooltip: \"\",\n placeholder: \"Redirect URI Dynamic\",\n type: \"toggle\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n};\n\nexport const ldapFormFields = {\n server_insecure: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Server Address is required\" : \"\";\n },\n label: \"Server Insecure\",\n tooltip: \"Disable SSL certificate verification \",\n placeholder: \"myldapserver.com:636\",\n type: \"toggle\",\n editOnly: false,\n },\n server_addr: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Server Address is required\" : \"\";\n },\n label: \"Server Address\",\n tooltip: 'AD/LDAP server address e.g. \"myldapserver.com:636\"',\n placeholder: \"myldapserver.com:636\",\n type: \"text\",\n editOnly: false,\n },\n lookup_bind_dn: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Lookup Bind DN is required\" : \"\";\n },\n label: \"Lookup Bind DN\",\n tooltip:\n \"DN (Distinguished Name) for LDAP read-only service account used to perform DN and group lookups\",\n placeholder: \"cn=admin,dc=min,dc=io\",\n type: \"text\",\n editOnly: false,\n },\n lookup_bind_password: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Lookup Bind Password is required\" : \"\";\n },\n label: \"Lookup Bind Password\",\n tooltip:\n \"Password for LDAP read-only service account used to perform DN and group lookups\",\n placeholder: \"admin\",\n type: \"password\",\n editOnly: true,\n },\n user_dn_search_base_dn: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"User DN Search Base DN is required\" : \"\";\n },\n label: \"User DN Search Base\",\n tooltip: \"\",\n placeholder: \"DC=example,DC=net\",\n type: \"text\",\n editOnly: false,\n },\n user_dn_search_filter: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"User DN Search Filter is required\" : \"\";\n },\n label: \"User DN Search Filter\",\n tooltip: \"\",\n placeholder: \"(sAMAcountName=%s)\",\n type: \"text\",\n editOnly: false,\n },\n group_search_base_dn: {\n required: false,\n hasError: (s: string, editMode: boolean) => \"\",\n label: \"Group Search Base DN\",\n tooltip: \"\",\n placeholder: \"ou=swengg,dc=min,dc=io\",\n type: \"text\",\n editOnly: false,\n },\n group_search_filter: {\n required: false,\n hasError: (s: string, editMode: boolean) => \"\",\n label: \"Group Search Filter\",\n tooltip: \"\",\n placeholder: \"(&(objectclass=groupofnames)(member=%d))\",\n type: \"text\",\n editOnly: false,\n },\n};\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11 7 9.6 8.4l2.6 2.6H2v2h10.2l-2.6 2.6L11 17l5-5-5-5zm9 12h-8v2h8c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-8v2h8v14z\"\n}), 'Login');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n var _muiName, _element$type;\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf( // For server components `muiName` is avaialble in element.type._payload.value.muiName\n // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45\n // eslint-disable-next-line no-underscore-dangle\n (_muiName = element.type.muiName) != null ? _muiName : (_element$type = element.type) == null || (_element$type = _element$type._payload) == null || (_element$type = _element$type.value) == null ? void 0 : _element$type.muiName) !== -1;\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["FeatureItem","_ref","icon","description","_jsxs","Box","sx","display","marginRight","height","width","marginBottom","children","_jsx","style","fontSize","fontStyle","color","_ref2","helpText","docLink","docText","contents","flex","border","borderRadius","flexFlow","padding","fontWeight","alignItems","paddingBottom","HelpIconFilled","map","content","index","Fragment","iconDescription","text","concat","href","target","rel","closeDeleteModalAndRefresh","deleteOpen","idp","idpType","dispatch","useAppDispatch","_useApi","useApi","res","setServerNeedsRestart","restart","err","setErrorSnackMessage","_useApi2","_slicedToArray","deleteLoading","invokeDeleteApi","displayName","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","onClose","confirmButtonProps","disabled","confirmationContent","formFields","endpoint","backLink","header","helpBox","navigate","useNavigate","configurationName","useParams","idpName","_useState","useState","_useState2","loading","setLoading","_useState3","_useState4","isEnabled","setIsEnabled","_useState5","_useState6","fields","setFields","_useState7","_useState8","overrideFields","setOverrideFields","_useState9","_useState10","originalFields","setOriginalFields","_useState11","_useState12","record","setRecord","_useState13","_useState14","editMode","setEditMode","_useState15","_useState16","setDeleteOpen","_useState17","_useState18","envOverride","setEnvOverride","loadingSave","invokeApi","_useApi3","_useApi4","loadingEnabledSave","invokeEnabledApi","parseFields","useCallback","totEnv","info","forEach","item","key","value","isEnv","toUpperCase","toggleEditMode","useEffect","api","invoke","then","result","parseOriginalFields","catch","validSave","_i","_Object$entries","Object","entries","length","_Object$entries$_i","required","undefined","resetForm","_asyncToGenerator","_regeneratorRuntime","mark","_callee","refresh","wrap","_context","prev","next","stop","_x","apply","arguments","setHelpName","DeleteIDPConfigurationModal","Grid","xs","PageHeaderWrapper","label","BackLink","onClick","actions","HelpMenu","PageLayout","ScreenTitle","subTitle","Tooltip","tooltip","Button","id","TrashIcon","variant","type","EditIcon","input","toggleConfiguration","RefreshIcon","FormLayout","noValidate","autoComplete","onSubmit","e","event","preventDefault","_i2","_Object$keys","keys","saveRecord","container","HelpBox","justifyContent","flexGrow","iconComponent","WarnIcon","help","_ref3","_ref4","Switch","indicatorLabels","checked","name","onChange","_objectSpread","_defineProperty","InputBox","error","hasError","placeholder","renderFormField","modalStyleUtils","modalButtonBar","withBorders","gridTemplateColumns","gridAutoFlow","gap","breakPoints","sm","_ref6","_ref7","editOnly","val","placement","className","ConsoleIcon","ValuePair","IDPConfigurationDetails","IAM_PAGES","IDP_OPENID_CONFIGURATIONS","AddIDPConfigurationHelpBox","openIDHelpBoxContents","openIDFormFields","LockIcon","ldapHelpBoxContents","LoginIcon","config_url","s","client_id","client_secret","claim_name","display_name","claim_prefix","scopes","redirect_uri","role_policy","claim_userinfo","redirect_uri_dynamic","ldapFormFields","server_insecure","server_addr","lookup_bind_dn","lookup_bind_password","user_dn_search_base_dn","user_dn_search_filter","group_search_base_dn","group_search_filter","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","defineProperty","enumerable","get","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","props","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","element","muiNames","_muiName","_element$type","React","indexOf","muiName","_payload","_len","funcs","Array","_key","reduce","acc","func","_len2","args","_key2","this","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/6577.ae36aad7.chunk.js b/portal-ui/build/static/js/6577.02d2b685.chunk.js similarity index 99% rename from portal-ui/build/static/js/6577.ae36aad7.chunk.js rename to portal-ui/build/static/js/6577.02d2b685.chunk.js index 5355bf29fe..88f348c6a7 100644 --- a/portal-ui/build/static/js/6577.ae36aad7.chunk.js +++ b/portal-ui/build/static/js/6577.02d2b685.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[6577],{96577:function(t,e,i){i.r(e),i.d(e,{default:function(){return O}});var n=i(29439),a=i(4942),s=i(72791),o=i(29945),l=i(57689),r=i(56087),c=i(81551),u=i(87995),x=i(9505),d=i(31300),p=i(84506),h=i(17691),m=i(26181),f=i.n(m),g=i(80184),v=h.ZP.div((function(t){var e=t.theme;return{marginTop:15,table:{width:"100%",borderCollapse:"collapse","& .feature-cell":{fontWeight:600,fontSize:14,paddingLeft:15},"& .status-cell":{textAlign:"center"},"& .header-cell":{textAlign:"center"},"& tr":{height:38,"& td":{borderBottom:"1px solid ".concat(f()(e,"borderColor","#E2E2E2"))},"& th":{borderBottom:"2px solid ".concat(f()(e,"borderColor","#E2E2E2"))}},"& .indicator":{display:"flex",alignItems:"center",justifyContent:"center","& .min-icon":{height:15,width:15},"&.active":{"& .min-icon":{fill:f()(e,"signalColors.good","#4CCB92")}},"&.deactivated":{"& .min-icon":{fill:f()(e,"signalColors.danger","#C51B3F")}}}}}})),j=function(t){var e=t.matrixData,i=void 0===e?[]:e,n=t.entityName,a=void 0===n?"":n,s=t.entityType,l=void 0===s?"":s,r=(0,p.Z)(i),c=r[0],u=void 0===c?[]:c,x=r.slice(1),d=u.map((function(t,e){return(0,g.jsx)("th",{className:"header-cell",children:t},"".concat(0,e))})),h=x.map((function(t,e){return(0,g.jsx)("tr",{children:t.map((function(t,i){var n=null;return 0===i?n=t:""===t&&(n=""),!0===t?n=(0,g.jsx)(o.xuv,{className:"indicator active",children:(0,g.jsx)(o.J$M,{})}):!1===t&&(n=(0,g.jsx)(o.xuv,{className:"indicator deactivated",children:(0,g.jsx)(o.J$M,{})})),(0,g.jsx)("td",{className:0===i?"feature-cell":"status-cell",children:n},"".concat(e+1).concat(i))}))},"r-".concat(e+1))}));return(0,g.jsxs)(v,{children:[(0,g.jsxs)(o.xuv,{sx:{marginTop:15,marginBottom:15},children:["Replication status for ",l,": ",(0,g.jsx)("strong",{children:a}),"."]}),(0,g.jsxs)("table",{children:[(0,g.jsx)("thead",{children:(0,g.jsx)("tr",{children:d})}),(0,g.jsx)("tbody",{children:h})]})]})},y=i(64554);function b(t,e){return e?!t:""}function k(t,e,i){return Object.keys(t).find((function(t){return!(e[t]||{})[i]}))}var S=function(t){var e=t.entityType,i=t.entityValue;return(0,g.jsxs)(y.Z,{sx:{marginTop:"45px",display:"flex",alignItems:"center",justifyContent:"center"},children:[e,":"," ",(0,g.jsx)(y.Z,{sx:{marginLeft:"5px",marginRight:"5px",fontWeight:600},children:i})," ","not found."]})},C=function(t){var e=t.bucketStats,i=void 0===e?{}:e,n=t.sites,a=void 0===n?{}:n,s=t.lookupValue,o=void 0===s?"":s,l=["Tags","Policy","Quota","Retention","Encryption","Replication"],r=i[o]||{};if(!o)return null;var c=Object.keys(a),u=[];if(k(a,r,"HasBucket"))return(0,g.jsx)(S,{entityType:"Bucket",entityValue:o});for(var x=[],d=0;d0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(k(!1),t&&e){var i="api/v1/admin/site-replication/status?buckets=false&entityType=".concat(t,"&entityValue=").concat(e,"&groups=false&policies=false&users=false");I("GET",i)}}(l,d)},label:"View",icon:(0,g.jsx)(o.aWt,{}),collapseOnSmall:!1,disabled:!d||!l})})})]}),N?(0,g.jsx)(o.rjZ,{item:!0,xs:12,sx:{display:"flex",alignItems:"center",justifyContent:"center",marginTop:45},children:(0,g.jsx)(o.aNw,{style:{width:25,height:25}})}):null,b?(0,g.jsxs)(o.xuv,{children:[!N&&"bucket"===l&&d?(0,g.jsx)(C,{bucketStats:B,sites:M,lookupValue:d}):null,!N&&"user"===l&&d?(0,g.jsx)(w,{userStats:R,sites:M,lookupValue:d}):null,!N&&"group"===l&&d?(0,g.jsx)(Z,{groupStats:W,sites:M,lookupValue:d}):null,!N&&"policy"===l&&d?(0,g.jsx)(T,{policyStats:G,sites:M,lookupValue:d}):null]}):null]})},N=i(47974),I=i(99670),V=function(t){var e,i=t.maxValue,n=void 0===i?0:i,s=t.entityStatObj,l=void 0===s?{}:s,r=t.entityTextPlural,c=void 0===r?"":r,u=t.icon,x=void 0===u?null:u,p=null===(e=Object.keys(l||{}))||void 0===e?void 0:e.length;return(0,g.jsx)(o.xuv,{withBorders:!0,sx:(0,a.Z)({padding:"25px"},"@media (min-width: ".concat(o.Egj.sm,"px)"),{maxWidth:"100%"}),children:(0,g.jsx)(d.Z,{icon:x,onlineCount:n,offlineCount:p,okStatusText:"Synced",notOkStatusText:"Failed",label:c})})},O=function(){var t,e,i=(0,l.s0)(),d=(0,s.useState)({}),p=(0,n.Z)(d,2),h=p[0],m=p[1],f=(0,x.Z)((function(t){m(t)}),(function(t){m({})})),v=(0,n.Z)(f,2),j=v[0],y=v[1],b=h||{},k=b.maxBuckets,S=void 0===k?0:k,C=b.bucketStats,T=void 0===C?{}:C,Z=b.maxGroups,w=void 0===Z?0:Z,O=b.groupStats,B=void 0===O?{}:O,H=b.maxUsers,M=void 0===H?0:H,L=b.userStats,R=void 0===L?{}:L,D=b.maxPolicies,G=void 0===D?0:D,z=b.policyStats,W=void 0===z?{}:z,F=function(){y("GET","api/v1/admin/site-replication/status?buckets=true&groups=true&policies=true&users=true")};(0,s.useEffect)((function(){F()}),[]);var U=(0,c.TL)();return(0,s.useEffect)((function(){U((0,u.Sc)("replication_status"))}),[]),(0,g.jsxs)(s.Fragment,{children:[(0,g.jsx)(N.Z,{label:(0,g.jsx)(o.hbI,{label:"Site Replication",onClick:function(){return i(r.gA.SITE_REPLICATION)}}),actions:(0,g.jsx)(I.Z,{})}),(0,g.jsxs)(o.Xgh,{children:[(0,g.jsx)(o.NZf,{actions:(0,g.jsx)(s.Fragment,{children:(0,g.jsx)(E.Z,{tooltip:"Refresh",children:(0,g.jsx)(o.zxk,{id:"refresh",onClick:function(){F()},label:"Refresh",icon:(0,g.jsx)(o.DuK,{}),variant:"regular",collapseOnSmall:!1})})}),separator:!0,children:"Replication status from all Sites"}),j?(0,g.jsx)(o.rjZ,{item:!0,xs:12,sx:{display:"flex",alignItems:"center",justifyContent:"center",marginTop:45},children:(0,g.jsx)(o.aNw,{style:{width:25,height:25}})}):(0,g.jsxs)(o.xuv,{sx:(t={display:"grid",marginTop:"25px",gridTemplateColumns:"1fr 1fr 1fr 1fr"},(0,a.Z)(t,"@media (max-width: ".concat(o.Egj.md,"px)"),{gridTemplateColumns:"1fr 1fr"}),(0,a.Z)(t,"@media (max-width: ".concat(o.Egj.sm,"px)"),{gridTemplateColumns:"1fr"}),(0,a.Z)(t,"gap","30px"),t),children:[(0,g.jsx)(V,{entityStatObj:T,entityTextPlural:"Buckets",maxValue:S,icon:(0,g.jsx)(o.wNb,{})}),(0,g.jsx)(V,{entityStatObj:R,entityTextPlural:"Users",maxValue:M,icon:(0,g.jsx)(o.oyc,{})}),(0,g.jsx)(V,{entityStatObj:B,entityTextPlural:"Groups",maxValue:w,icon:(0,g.jsx)(o.wws,{})}),(0,g.jsx)(V,{entityStatObj:W,entityTextPlural:"Policies",maxValue:G,icon:(0,g.jsx)(o.v42,{})})]}),(0,g.jsx)(o.xuv,{withBorders:!0,sx:(e={minHeight:450},(0,a.Z)(e,"@media (max-width: ".concat(o.Egj.sm,"px)"),{minHeight:250}),(0,a.Z)(e,"marginTop","25px"),(0,a.Z)(e,"padding","25px"),e),children:(0,g.jsx)(P,{})})]})]})}},31300:function(t,e,i){var n=i(4942),a=(i(72791),i(17691)),s=i(26181),o=i.n(s),l=i(29945),r=i(80184),c=a.ZP.div((function(t){var e,i,a=t.theme;return{fontFamily:"Inter,sans-serif",maxWidth:"321px",display:"flex",marginLeft:"auto",marginRight:"auto",cursor:"default",color:o()(a,"signalColors.main","#07193E"),"& .mainBox":(i={flex:1,display:"flex",padding:"0 8px 0 8px"},(0,n.Z)(i,"@media (max-width: ".concat(l.Egj.sm,"px)"),{padding:"0 10px 0 10px"}),(0,n.Z)(i,"& .indicatorIcon",{width:"20px",height:"20px",marginTop:"8px",maxWidth:"26px","& .min-icon":{width:"16px",height:"16px"}}),(0,n.Z)(i,"& .indicatorContainer",{flex:1,display:"flex",flexFlow:"column","& .indicatorLabel":{fontSize:"16px",fontWeight:600},"& .counterIndicator":(e={display:"flex",alignItems:"center",gap:"5px",justifyContent:"space-between",paddingBottom:0,fontSize:"55px"},(0,n.Z)(e,"@media (max-width: ".concat(l.Egj.sm,"px)"),{paddingBottom:10,fontSize:"35px"}),(0,n.Z)(e,"@media (max-width: ".concat(l.Egj.lg,"px)"),{fontSize:"45px"}),(0,n.Z)(e,"@media (max-width: ".concat(l.Egj.xl,"px)"),{fontSize:"50px"}),(0,n.Z)(e,"flexFlow","row"),(0,n.Z)(e,"fontWeight",600),(0,n.Z)(e,"& .stat-text",{color:o()(a,"mutedText","#87888D"),fontSize:"12px",marginTop:"8px"}),(0,n.Z)(e,"& .stat-value",{textAlign:"center",height:"50px"}),(0,n.Z)(e,"& .min-icon",{marginRight:"8px",marginTop:"8px",height:"10px",width:"10px"}),e),"& .onlineCounter":{display:"flex",alignItems:"center",marginTop:"5px","& .min-icon":{fill:o()(a,"signalColors.good","#4CCB92")}},"& .offlineCount":{display:"flex",alignItems:"center",marginTop:"8px","& .min-icon":{fill:o()(a,"signalColors.danger","#C51B3F")}}}),i)}}));e.Z=function(t){var e=t.onlineCount,i=void 0===e?0:e,n=t.offlineCount,a=void 0===n?0:n,s=t.icon,o=void 0===s?null:s,u=t.label,x=void 0===u?"":u,d=t.okStatusText,p=void 0===d?"Online":d,h=t.notOkStatusText,m=void 0===h?"Offline":h;return(0,r.jsx)(c,{children:(0,r.jsxs)(l.xuv,{className:"mainBox",children:[(0,r.jsxs)(l.xuv,{className:"indicatorContainer",children:[(0,r.jsx)(l.xuv,{className:"indicatorLabel",children:x}),(0,r.jsxs)(l.xuv,{className:"counterIndicator",children:[(0,r.jsxs)(l.xuv,{children:[(0,r.jsx)(l.xuv,{className:"stat-value",children:i}),(0,r.jsxs)(l.xuv,{className:"onlineCounter",children:[(0,r.jsx)(l.J$M,{}),(0,r.jsx)("div",{className:"stat-text",children:p})]})]}),(0,r.jsxs)(l.xuv,{children:[(0,r.jsx)(l.xuv,{className:"stat-value",children:a}),(0,r.jsxs)(l.xuv,{className:"offlineCount",children:[(0,r.jsx)(l.J$M,{})," ",(0,r.jsx)("div",{className:"stat-text",children:m})]})]})]})]}),(0,r.jsx)(l.xuv,{className:"indicatorIcon",children:o})]})})}}}]); -//# sourceMappingURL=6577.ae36aad7.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[6577],{96577:function(t,e,i){i.r(e),i.d(e,{default:function(){return O}});var n=i(29439),a=i(4942),s=i(72791),o=i(29945),l=i(57689),r=i(56087),c=i(44690),u=i(87995),x=i(9505),d=i(31300),p=i(84506),h=i(17691),m=i(26181),f=i.n(m),g=i(80184),v=h.ZP.div((function(t){var e=t.theme;return{marginTop:15,table:{width:"100%",borderCollapse:"collapse","& .feature-cell":{fontWeight:600,fontSize:14,paddingLeft:15},"& .status-cell":{textAlign:"center"},"& .header-cell":{textAlign:"center"},"& tr":{height:38,"& td":{borderBottom:"1px solid ".concat(f()(e,"borderColor","#E2E2E2"))},"& th":{borderBottom:"2px solid ".concat(f()(e,"borderColor","#E2E2E2"))}},"& .indicator":{display:"flex",alignItems:"center",justifyContent:"center","& .min-icon":{height:15,width:15},"&.active":{"& .min-icon":{fill:f()(e,"signalColors.good","#4CCB92")}},"&.deactivated":{"& .min-icon":{fill:f()(e,"signalColors.danger","#C51B3F")}}}}}})),j=function(t){var e=t.matrixData,i=void 0===e?[]:e,n=t.entityName,a=void 0===n?"":n,s=t.entityType,l=void 0===s?"":s,r=(0,p.Z)(i),c=r[0],u=void 0===c?[]:c,x=r.slice(1),d=u.map((function(t,e){return(0,g.jsx)("th",{className:"header-cell",children:t},"".concat(0,e))})),h=x.map((function(t,e){return(0,g.jsx)("tr",{children:t.map((function(t,i){var n=null;return 0===i?n=t:""===t&&(n=""),!0===t?n=(0,g.jsx)(o.xuv,{className:"indicator active",children:(0,g.jsx)(o.J$M,{})}):!1===t&&(n=(0,g.jsx)(o.xuv,{className:"indicator deactivated",children:(0,g.jsx)(o.J$M,{})})),(0,g.jsx)("td",{className:0===i?"feature-cell":"status-cell",children:n},"".concat(e+1).concat(i))}))},"r-".concat(e+1))}));return(0,g.jsxs)(v,{children:[(0,g.jsxs)(o.xuv,{sx:{marginTop:15,marginBottom:15},children:["Replication status for ",l,": ",(0,g.jsx)("strong",{children:a}),"."]}),(0,g.jsxs)("table",{children:[(0,g.jsx)("thead",{children:(0,g.jsx)("tr",{children:d})}),(0,g.jsx)("tbody",{children:h})]})]})},y=i(64554);function b(t,e){return e?!t:""}function k(t,e,i){return Object.keys(t).find((function(t){return!(e[t]||{})[i]}))}var S=function(t){var e=t.entityType,i=t.entityValue;return(0,g.jsxs)(y.Z,{sx:{marginTop:"45px",display:"flex",alignItems:"center",justifyContent:"center"},children:[e,":"," ",(0,g.jsx)(y.Z,{sx:{marginLeft:"5px",marginRight:"5px",fontWeight:600},children:i})," ","not found."]})},C=function(t){var e=t.bucketStats,i=void 0===e?{}:e,n=t.sites,a=void 0===n?{}:n,s=t.lookupValue,o=void 0===s?"":s,l=["Tags","Policy","Quota","Retention","Encryption","Replication"],r=i[o]||{};if(!o)return null;var c=Object.keys(a),u=[];if(k(a,r,"HasBucket"))return(0,g.jsx)(S,{entityType:"Bucket",entityValue:o});for(var x=[],d=0;d0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(k(!1),t&&e){var i="api/v1/admin/site-replication/status?buckets=false&entityType=".concat(t,"&entityValue=").concat(e,"&groups=false&policies=false&users=false");I("GET",i)}}(l,d)},label:"View",icon:(0,g.jsx)(o.aWt,{}),collapseOnSmall:!1,disabled:!d||!l})})})]}),N?(0,g.jsx)(o.rjZ,{item:!0,xs:12,sx:{display:"flex",alignItems:"center",justifyContent:"center",marginTop:45},children:(0,g.jsx)(o.aNw,{style:{width:25,height:25}})}):null,b?(0,g.jsxs)(o.xuv,{children:[!N&&"bucket"===l&&d?(0,g.jsx)(C,{bucketStats:B,sites:M,lookupValue:d}):null,!N&&"user"===l&&d?(0,g.jsx)(w,{userStats:R,sites:M,lookupValue:d}):null,!N&&"group"===l&&d?(0,g.jsx)(Z,{groupStats:W,sites:M,lookupValue:d}):null,!N&&"policy"===l&&d?(0,g.jsx)(T,{policyStats:G,sites:M,lookupValue:d}):null]}):null]})},N=i(47974),I=i(99670),V=function(t){var e,i=t.maxValue,n=void 0===i?0:i,s=t.entityStatObj,l=void 0===s?{}:s,r=t.entityTextPlural,c=void 0===r?"":r,u=t.icon,x=void 0===u?null:u,p=null===(e=Object.keys(l||{}))||void 0===e?void 0:e.length;return(0,g.jsx)(o.xuv,{withBorders:!0,sx:(0,a.Z)({padding:"25px"},"@media (min-width: ".concat(o.Egj.sm,"px)"),{maxWidth:"100%"}),children:(0,g.jsx)(d.Z,{icon:x,onlineCount:n,offlineCount:p,okStatusText:"Synced",notOkStatusText:"Failed",label:c})})},O=function(){var t,e,i=(0,l.s0)(),d=(0,s.useState)({}),p=(0,n.Z)(d,2),h=p[0],m=p[1],f=(0,x.Z)((function(t){m(t)}),(function(t){m({})})),v=(0,n.Z)(f,2),j=v[0],y=v[1],b=h||{},k=b.maxBuckets,S=void 0===k?0:k,C=b.bucketStats,T=void 0===C?{}:C,Z=b.maxGroups,w=void 0===Z?0:Z,O=b.groupStats,B=void 0===O?{}:O,H=b.maxUsers,M=void 0===H?0:H,L=b.userStats,R=void 0===L?{}:L,D=b.maxPolicies,G=void 0===D?0:D,z=b.policyStats,W=void 0===z?{}:z,F=function(){y("GET","api/v1/admin/site-replication/status?buckets=true&groups=true&policies=true&users=true")};(0,s.useEffect)((function(){F()}),[]);var U=(0,c.TL)();return(0,s.useEffect)((function(){U((0,u.Sc)("replication_status"))}),[]),(0,g.jsxs)(s.Fragment,{children:[(0,g.jsx)(N.Z,{label:(0,g.jsx)(o.hbI,{label:"Site Replication",onClick:function(){return i(r.gA.SITE_REPLICATION)}}),actions:(0,g.jsx)(I.Z,{})}),(0,g.jsxs)(o.Xgh,{children:[(0,g.jsx)(o.NZf,{actions:(0,g.jsx)(s.Fragment,{children:(0,g.jsx)(E.Z,{tooltip:"Refresh",children:(0,g.jsx)(o.zxk,{id:"refresh",onClick:function(){F()},label:"Refresh",icon:(0,g.jsx)(o.DuK,{}),variant:"regular",collapseOnSmall:!1})})}),separator:!0,children:"Replication status from all Sites"}),j?(0,g.jsx)(o.rjZ,{item:!0,xs:12,sx:{display:"flex",alignItems:"center",justifyContent:"center",marginTop:45},children:(0,g.jsx)(o.aNw,{style:{width:25,height:25}})}):(0,g.jsxs)(o.xuv,{sx:(t={display:"grid",marginTop:"25px",gridTemplateColumns:"1fr 1fr 1fr 1fr"},(0,a.Z)(t,"@media (max-width: ".concat(o.Egj.md,"px)"),{gridTemplateColumns:"1fr 1fr"}),(0,a.Z)(t,"@media (max-width: ".concat(o.Egj.sm,"px)"),{gridTemplateColumns:"1fr"}),(0,a.Z)(t,"gap","30px"),t),children:[(0,g.jsx)(V,{entityStatObj:T,entityTextPlural:"Buckets",maxValue:S,icon:(0,g.jsx)(o.wNb,{})}),(0,g.jsx)(V,{entityStatObj:R,entityTextPlural:"Users",maxValue:M,icon:(0,g.jsx)(o.oyc,{})}),(0,g.jsx)(V,{entityStatObj:B,entityTextPlural:"Groups",maxValue:w,icon:(0,g.jsx)(o.wws,{})}),(0,g.jsx)(V,{entityStatObj:W,entityTextPlural:"Policies",maxValue:G,icon:(0,g.jsx)(o.v42,{})})]}),(0,g.jsx)(o.xuv,{withBorders:!0,sx:(e={minHeight:450},(0,a.Z)(e,"@media (max-width: ".concat(o.Egj.sm,"px)"),{minHeight:250}),(0,a.Z)(e,"marginTop","25px"),(0,a.Z)(e,"padding","25px"),e),children:(0,g.jsx)(P,{})})]})]})}},31300:function(t,e,i){var n=i(4942),a=(i(72791),i(17691)),s=i(26181),o=i.n(s),l=i(29945),r=i(80184),c=a.ZP.div((function(t){var e,i,a=t.theme;return{fontFamily:"Inter,sans-serif",maxWidth:"321px",display:"flex",marginLeft:"auto",marginRight:"auto",cursor:"default",color:o()(a,"signalColors.main","#07193E"),"& .mainBox":(i={flex:1,display:"flex",padding:"0 8px 0 8px"},(0,n.Z)(i,"@media (max-width: ".concat(l.Egj.sm,"px)"),{padding:"0 10px 0 10px"}),(0,n.Z)(i,"& .indicatorIcon",{width:"20px",height:"20px",marginTop:"8px",maxWidth:"26px","& .min-icon":{width:"16px",height:"16px"}}),(0,n.Z)(i,"& .indicatorContainer",{flex:1,display:"flex",flexFlow:"column","& .indicatorLabel":{fontSize:"16px",fontWeight:600},"& .counterIndicator":(e={display:"flex",alignItems:"center",gap:"5px",justifyContent:"space-between",paddingBottom:0,fontSize:"55px"},(0,n.Z)(e,"@media (max-width: ".concat(l.Egj.sm,"px)"),{paddingBottom:10,fontSize:"35px"}),(0,n.Z)(e,"@media (max-width: ".concat(l.Egj.lg,"px)"),{fontSize:"45px"}),(0,n.Z)(e,"@media (max-width: ".concat(l.Egj.xl,"px)"),{fontSize:"50px"}),(0,n.Z)(e,"flexFlow","row"),(0,n.Z)(e,"fontWeight",600),(0,n.Z)(e,"& .stat-text",{color:o()(a,"mutedText","#87888D"),fontSize:"12px",marginTop:"8px"}),(0,n.Z)(e,"& .stat-value",{textAlign:"center",height:"50px"}),(0,n.Z)(e,"& .min-icon",{marginRight:"8px",marginTop:"8px",height:"10px",width:"10px"}),e),"& .onlineCounter":{display:"flex",alignItems:"center",marginTop:"5px","& .min-icon":{fill:o()(a,"signalColors.good","#4CCB92")}},"& .offlineCount":{display:"flex",alignItems:"center",marginTop:"8px","& .min-icon":{fill:o()(a,"signalColors.danger","#C51B3F")}}}),i)}}));e.Z=function(t){var e=t.onlineCount,i=void 0===e?0:e,n=t.offlineCount,a=void 0===n?0:n,s=t.icon,o=void 0===s?null:s,u=t.label,x=void 0===u?"":u,d=t.okStatusText,p=void 0===d?"Online":d,h=t.notOkStatusText,m=void 0===h?"Offline":h;return(0,r.jsx)(c,{children:(0,r.jsxs)(l.xuv,{className:"mainBox",children:[(0,r.jsxs)(l.xuv,{className:"indicatorContainer",children:[(0,r.jsx)(l.xuv,{className:"indicatorLabel",children:x}),(0,r.jsxs)(l.xuv,{className:"counterIndicator",children:[(0,r.jsxs)(l.xuv,{children:[(0,r.jsx)(l.xuv,{className:"stat-value",children:i}),(0,r.jsxs)(l.xuv,{className:"onlineCounter",children:[(0,r.jsx)(l.J$M,{}),(0,r.jsx)("div",{className:"stat-text",children:p})]})]}),(0,r.jsxs)(l.xuv,{children:[(0,r.jsx)(l.xuv,{className:"stat-value",children:a}),(0,r.jsxs)(l.xuv,{className:"offlineCount",children:[(0,r.jsx)(l.J$M,{})," ",(0,r.jsx)("div",{className:"stat-text",children:m})]})]})]})]}),(0,r.jsx)(l.xuv,{className:"indicatorIcon",children:o})]})})}}}]); +//# sourceMappingURL=6577.02d2b685.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/6577.ae36aad7.chunk.js.map b/portal-ui/build/static/js/6577.02d2b685.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/6577.ae36aad7.chunk.js.map rename to portal-ui/build/static/js/6577.02d2b685.chunk.js.map index 6bb2d572a5..59fab4b280 100644 --- a/portal-ui/build/static/js/6577.ae36aad7.chunk.js.map +++ b/portal-ui/build/static/js/6577.02d2b685.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/6577.ae36aad7.chunk.js","mappings":"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","sources":["screens/Console/Configurations/SiteReplication/LookupStatus/LookupStatusTable.tsx","screens/Console/Configurations/SiteReplication/LookupStatus/Utils.tsx","screens/Console/Configurations/SiteReplication/LookupStatus/BucketEntityStatus.tsx","screens/Console/Configurations/SiteReplication/LookupStatus/PolicyEntityStatus.tsx","screens/Console/Configurations/SiteReplication/LookupStatus/GroupEntityStatus.tsx","screens/Console/Configurations/SiteReplication/LookupStatus/UserEntityStatus.tsx","screens/Console/Configurations/SiteReplication/EntityReplicationLookup.tsx","screens/Console/Configurations/SiteReplication/SiteReplicationStatus.tsx","screens/Console/Dashboard/BasicDashboard/StatusCountCard.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 styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { Box, CircleIcon } from \"mds\";\n\nconst LookupTableBase = styled.div(({ theme }) => ({\n marginTop: 15,\n table: {\n width: \"100%\",\n borderCollapse: \"collapse\",\n \"& .feature-cell\": {\n fontWeight: 600,\n fontSize: 14,\n paddingLeft: 15,\n },\n \"& .status-cell\": {\n textAlign: \"center\",\n },\n \"& .header-cell\": {\n textAlign: \"center\",\n },\n \"& tr\": {\n height: 38,\n \"& td\": {\n borderBottom: `1px solid ${get(theme, \"borderColor\", \"#E2E2E2\")}`,\n },\n \"& th\": {\n borderBottom: `2px solid ${get(theme, \"borderColor\", \"#E2E2E2\")}`,\n },\n },\n \"& .indicator\": {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n \"& .min-icon\": {\n height: 15,\n width: 15,\n },\n \"&.active\": {\n \"& .min-icon\": {\n fill: get(theme, \"signalColors.good\", \"#4CCB92\"),\n },\n },\n \"&.deactivated\": {\n \"& .min-icon\": {\n fill: get(theme, \"signalColors.danger\", \"#C51B3F\"),\n },\n },\n },\n },\n}));\n\nconst LookupStatusTable = ({\n matrixData = [],\n entityName = \"\",\n entityType = \"\",\n}: {\n matrixData: any;\n entityName: string;\n entityType: string;\n}) => {\n //Assumes 1st row should be a header row.\n const [header = [], ...rows] = matrixData;\n\n const tableHeader = header.map((hC: string, hcIdx: number) => {\n return (\n \n {hC}\n \n );\n });\n\n const tableRowsToRender = rows.map((r: any, rIdx: number) => {\n return (\n \n {r.map((v: any, cIdx: number) => {\n let indicator = null;\n\n if (cIdx === 0) {\n indicator = v;\n } else if (v === \"\") {\n indicator = \"\";\n }\n if (v === true) {\n indicator = (\n \n \n \n );\n } else if (v === false) {\n indicator = (\n \n \n \n );\n }\n\n return (\n \n {indicator}\n \n );\n })}\n \n );\n });\n\n return (\n \n \n Replication status for {entityType}: {entityName}.\n \n \n \n {tableHeader}\n \n {tableRowsToRender}\n
    \n
    \n );\n};\n\nexport default LookupStatusTable;\n","import { Box } from \"@mui/material\";\nimport React from \"react\";\nimport { StatsResponseType } from \"../SiteReplicationStatus\";\n\nexport function syncStatus(mismatch: boolean, set: boolean): string | boolean {\n if (!set) {\n return \"\";\n }\n return !mismatch;\n}\n\nexport function isEntityNotFound(\n sites: Partial,\n lookupList: Partial,\n lookupKey: string,\n) {\n const siteKeys: string[] = Object.keys(sites);\n return siteKeys.find((sk: string) => {\n // there is no way to find the type of this ! as it is an entry in the structure itself.\n // @ts-ignore\n const result: Record = lookupList[sk] || {};\n return !result[lookupKey];\n });\n}\n\nexport const EntityNotFound = ({\n entityType,\n entityValue,\n}: {\n entityType: string;\n entityValue: string;\n}) => {\n return (\n \n {entityType}:{\" \"}\n \n {entityValue}\n {\" \"}\n not found.\n \n );\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { StatsResponseType } from \"../SiteReplicationStatus\";\nimport LookupStatusTable from \"./LookupStatusTable\";\nimport { EntityNotFound, isEntityNotFound, syncStatus } from \"./Utils\";\n\ntype BucketEntityStatusProps = Partial & {\n lookupValue?: string;\n};\nconst BucketEntityStatus = ({\n bucketStats = {},\n sites = {},\n lookupValue = \"\",\n}: BucketEntityStatusProps) => {\n const rowsForStatus = [\n \"Tags\",\n \"Policy\",\n \"Quota\",\n \"Retention\",\n \"Encryption\",\n \"Replication\",\n ];\n\n const bucketSites: Record = bucketStats[lookupValue] || {};\n\n if (!lookupValue) return null;\n\n const siteKeys = Object.keys(sites);\n\n const notFound = isEntityNotFound(sites, bucketSites, \"HasBucket\");\n const resultMatrix: any = [];\n if (notFound) {\n return ;\n } else {\n const row = [];\n for (let sCol = 0; sCol < siteKeys.length; sCol++) {\n if (sCol === 0) {\n row.push(\"\");\n }\n /**\n * ----------------------------------\n * | | sit-0 | site-1 |\n * -----------------------------------\n */\n row.push(sites[siteKeys[sCol]].name);\n }\n resultMatrix.push(row);\n for (let fi = 0; fi < rowsForStatus.length; fi++) {\n /**\n * -------------------------------------------------\n * | Feature Name | site-0-status | site-1-status |\n * --------------------------------------------------\n */\n const sfRow = [];\n const feature = rowsForStatus[fi];\n let sbStatus: string | boolean = \"\";\n\n for (let si = 0; si < siteKeys.length; si++) {\n const bucketSiteDeploymentId = sites[siteKeys[si]].deploymentID;\n\n const rSite = bucketSites[bucketSiteDeploymentId];\n\n if (si === 0) {\n sfRow.push(feature);\n }\n\n switch (fi) {\n case 0:\n sbStatus = syncStatus(rSite.TagMismatch, rSite.HasTagsSet);\n sfRow.push(sbStatus);\n break;\n case 1:\n sbStatus = syncStatus(rSite.PolicyMismatch, rSite.HasPolicySet);\n sfRow.push(sbStatus);\n break;\n case 2:\n sbStatus = syncStatus(rSite.QuotaCfgMismatch, rSite.HasQuotaCfgSet);\n sfRow.push(sbStatus);\n break;\n case 3:\n sbStatus = syncStatus(\n rSite.OLockConfigMismatch,\n rSite.HasOLockConfigSet,\n );\n sfRow.push(sbStatus);\n break;\n case 4:\n sbStatus = syncStatus(rSite.SSEConfigMismatch, rSite.HasSSECfgSet);\n sfRow.push(sbStatus);\n break;\n case 5:\n sbStatus = syncStatus(\n rSite.ReplicationCfgMismatch,\n rSite.HasReplicationCfg,\n );\n sfRow.push(sbStatus);\n break;\n }\n }\n\n resultMatrix.push(sfRow);\n }\n }\n\n return (\n \n );\n};\n\nexport default BucketEntityStatus;\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 { StatsResponseType } from \"../SiteReplicationStatus\";\nimport LookupStatusTable from \"./LookupStatusTable\";\nimport { EntityNotFound, isEntityNotFound, syncStatus } from \"./Utils\";\n\ntype PolicyEntityStatusProps = Partial & {\n lookupValue?: string;\n};\nconst PolicyEntityStatus = ({\n policyStats = {},\n sites = {},\n lookupValue = \"\",\n}: PolicyEntityStatusProps) => {\n const rowsForStatus = [\"Policy\"];\n\n const policySites: Record = policyStats[lookupValue] || {};\n\n if (!lookupValue) return null;\n\n const siteKeys = Object.keys(sites);\n const notFound = isEntityNotFound(sites, policySites, \"HasPolicy\");\n const resultMatrix: any = [];\n if (notFound) {\n return ;\n } else {\n const row = [];\n for (let sCol = 0; sCol < siteKeys.length; sCol++) {\n if (sCol === 0) {\n row.push(\"\");\n }\n row.push(sites[siteKeys[sCol]].name);\n }\n resultMatrix.push(row);\n for (let fi = 0; fi < rowsForStatus.length; fi++) {\n const sfRow = [];\n const feature = rowsForStatus[fi];\n let sbStatus: string | boolean = \"\";\n\n for (let si = 0; si < siteKeys.length; si++) {\n const bucketSiteDeploymentId = sites[siteKeys[si]].deploymentID;\n\n const rSite = policySites[bucketSiteDeploymentId];\n\n if (si === 0) {\n sfRow.push(feature);\n }\n\n switch (fi) {\n case 0:\n sbStatus = syncStatus(rSite.PolicyMismatch, rSite.HasPolicy);\n sfRow.push(sbStatus);\n break;\n }\n }\n\n resultMatrix.push(sfRow);\n }\n }\n\n return (\n \n );\n};\n\nexport default PolicyEntityStatus;\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 { StatsResponseType } from \"../SiteReplicationStatus\";\nimport LookupStatusTable from \"./LookupStatusTable\";\nimport { EntityNotFound, isEntityNotFound, syncStatus } from \"./Utils\";\n\ntype GroupEntityStatusProps = Partial & {\n lookupValue?: string;\n};\nconst UserEntityStatus = ({\n groupStats = {},\n sites = {},\n lookupValue = \"\",\n}: GroupEntityStatusProps) => {\n const rowsForStatus = [\"Info\", \"Policy mapping\"];\n\n const groupSites: Record = groupStats[lookupValue] || {};\n\n if (!lookupValue) return null;\n\n const siteKeys = Object.keys(sites);\n const notFound = isEntityNotFound(sites, groupSites, \"HasGroup\");\n const resultMatrix: any = [];\n if (notFound) {\n return ;\n } else {\n const row = [];\n for (let sCol = 0; sCol < siteKeys.length; sCol++) {\n if (sCol === 0) {\n row.push(\"\");\n }\n /**\n * ----------------------------------\n * | | sit-0 | site-1 |\n * -----------------------------------\n */\n row.push(sites[siteKeys[sCol]].name);\n }\n resultMatrix.push(row);\n for (let fi = 0; fi < rowsForStatus.length; fi++) {\n /**\n * -------------------------------------------------\n * | Feature Name | site-0-status | site-1-status |\n * --------------------------------------------------\n */\n const sfRow = [];\n const feature = rowsForStatus[fi];\n let sbStatus: string | boolean = \"\";\n\n for (let si = 0; si < siteKeys.length; si++) {\n const bucketSiteDeploymentId = sites[siteKeys[si]].deploymentID;\n\n const rSite = groupSites[bucketSiteDeploymentId];\n\n if (si === 0) {\n sfRow.push(feature);\n }\n\n switch (fi) {\n case 0:\n sbStatus = syncStatus(rSite.GroupDescMismatch, rSite.HasGroup);\n sfRow.push(sbStatus);\n break;\n case 1:\n sbStatus = syncStatus(rSite.PolicyMismatch, rSite.HasPolicyMapping);\n sfRow.push(sbStatus);\n break;\n }\n }\n\n resultMatrix.push(sfRow);\n }\n }\n\n return (\n \n );\n};\n\nexport default UserEntityStatus;\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 { StatsResponseType } from \"../SiteReplicationStatus\";\nimport LookupStatusTable from \"./LookupStatusTable\";\nimport { EntityNotFound, isEntityNotFound, syncStatus } from \"./Utils\";\n\ntype PolicyEntityStatusProps = Partial & {\n lookupValue?: string;\n};\nconst UserEntityStatus = ({\n userStats = {},\n sites = {},\n lookupValue = \"\",\n}: PolicyEntityStatusProps) => {\n const rowsForStatus = [\"Info\", \"Policy mapping\"];\n\n const userSites: Record = userStats[lookupValue] || {};\n\n if (!lookupValue) return null;\n\n const siteKeys = Object.keys(sites);\n\n const notFound = isEntityNotFound(sites, userSites, \"HasUser\");\n\n const resultMatrix: any = [];\n if (notFound) {\n return ;\n } else {\n const row = [];\n for (let sCol = 0; sCol < siteKeys.length; sCol++) {\n if (sCol === 0) {\n row.push(\"\");\n }\n row.push(sites[siteKeys[sCol]].name);\n }\n resultMatrix.push(row);\n for (let fi = 0; fi < rowsForStatus.length; fi++) {\n const sfRow = [];\n const feature = rowsForStatus[fi];\n let sbStatus: string | boolean = \"\";\n\n for (let si = 0; si < siteKeys.length; si++) {\n const bucketSiteDeploymentId = sites[siteKeys[si]].deploymentID;\n\n const rSite = userSites[bucketSiteDeploymentId];\n\n if (si === 0) {\n sfRow.push(feature);\n }\n\n switch (fi) {\n case 0:\n sbStatus = syncStatus(rSite.UserInfoMismatch, rSite.HasUser);\n sfRow.push(sbStatus);\n break;\n case 1:\n sbStatus = syncStatus(rSite.PolicyMismatch, rSite.HasPolicyMapping);\n sfRow.push(sbStatus);\n break;\n }\n }\n\n resultMatrix.push(sfRow);\n }\n }\n\n return (\n \n );\n};\n\nexport default UserEntityStatus;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport {\n Box,\n breakPoints,\n Button,\n ClustersIcon,\n Grid,\n Loader,\n Select,\n InputBox,\n} from \"mds\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport { StatsResponseType } from \"./SiteReplicationStatus\";\nimport BucketEntityStatus from \"./LookupStatus/BucketEntityStatus\";\nimport PolicyEntityStatus from \"./LookupStatus/PolicyEntityStatus\";\nimport GroupEntityStatus from \"./LookupStatus/GroupEntityStatus\";\nimport UserEntityStatus from \"./LookupStatus/UserEntityStatus\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst EntityReplicationLookup = () => {\n const [entityType, setEntityType] = useState(\"bucket\");\n const [entityValue, setEntityValue] = useState(\"\");\n\n const [stats, setStats] = useState({});\n const [statsLoaded, setStatsLoaded] = useState(false);\n\n const [isStatsLoading, invokeSiteStatsApi] = useApi(\n (res: any) => {\n setStats(res);\n setStatsLoaded(true);\n },\n (err: any) => {\n setStats({});\n setStatsLoaded(true);\n },\n );\n\n const {\n bucketStats = {},\n sites = {},\n userStats = {},\n policyStats = {},\n groupStats = {},\n } = stats || {};\n\n const getStats = (entityType: string = \"\", entityValue: string = \"\") => {\n setStatsLoaded(false);\n if (entityType && entityValue) {\n let url = `api/v1/admin/site-replication/status?buckets=false&entityType=${entityType}&entityValue=${entityValue}&groups=false&policies=false&users=false`;\n invokeSiteStatsApi(\"GET\", url);\n }\n };\n\n return (\n \n \n \n View Replication Status for a:\n \n \n {\n setEntityType(value);\n setStatsLoaded(false);\n }}\n label=\"\"\n value={entityType}\n options={[\n {\n label: \"Bucket\",\n value: \"bucket\",\n },\n {\n label: \"User\",\n value: \"user\",\n },\n {\n label: \"Group\",\n value: \"group\",\n },\n {\n label: \"Policy\",\n value: \"policy\",\n },\n ]}\n disabled={false}\n />\n \n\n \n ) => {\n setEntityValue(e.target.value);\n setStatsLoaded(false);\n }}\n placeholder={`test-${entityType}`}\n label=\"\"\n value={entityValue}\n />\n \n \n \n {\n getStats(entityType, entityValue);\n }}\n label={`View`}\n icon={}\n collapseOnSmall={false}\n disabled={!entityValue || !entityType}\n />\n \n \n \n\n {isStatsLoading ? (\n \n \n \n ) : null}\n\n {statsLoaded ? (\n \n {!isStatsLoading && entityType === \"bucket\" && entityValue ? (\n \n ) : null}\n\n {!isStatsLoading && entityType === \"user\" && entityValue ? (\n \n ) : null}\n\n {!isStatsLoading && entityType === \"group\" && entityValue ? (\n \n ) : null}\n\n {!isStatsLoading && entityType === \"policy\" && entityValue ? (\n \n ) : null}\n \n ) : null}\n \n );\n};\n\nexport default EntityReplicationLookup;\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 {\n BackLink,\n Box,\n breakPoints,\n BucketsIcon,\n Button,\n Grid,\n GroupsIcon,\n IAMPoliciesIcon,\n Loader,\n PageLayout,\n RefreshIcon,\n UsersIcon,\n SectionTitle,\n} from \"mds\";\nimport { useNavigate } from \"react-router-dom\";\nimport { IAM_PAGES } from \"../../../../common/SecureComponent/permissions\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { setHelpName } from \"../../../../systemSlice\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport StatusCountCard from \"../../Dashboard/BasicDashboard/StatusCountCard\";\nimport EntityReplicationLookup from \"./EntityReplicationLookup\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../../HelpMenu\";\n\nexport type StatsResponseType = {\n maxBuckets?: number;\n bucketStats?: Record;\n maxGroups?: number;\n groupStats?: Record;\n maxUsers?: number;\n userStats?: Record;\n maxPolicies?: number;\n policyStats?: Record;\n sites?: Record;\n};\n\nconst SREntityStatus = ({\n maxValue = 0,\n entityStatObj = {},\n entityTextPlural = \"\",\n icon = null,\n}: {\n maxValue: number;\n entityStatObj: Record;\n entityTextPlural: string;\n icon?: React.ReactNode;\n}) => {\n const statEntityLen = Object.keys(entityStatObj || {})?.length;\n return (\n \n \n \n );\n};\n\nconst SiteReplicationStatus = () => {\n const navigate = useNavigate();\n\n const [stats, setStats] = useState({});\n\n const [isStatsLoading, invokeSiteStatsApi] = useApi(\n (res: any) => {\n setStats(res);\n },\n (err: any) => {\n setStats({});\n },\n );\n\n const {\n maxBuckets = 0,\n bucketStats = {},\n maxGroups = 0,\n groupStats = {},\n maxUsers = 0,\n userStats = {},\n maxPolicies = 0,\n policyStats = {},\n } = stats || {};\n\n const getStats = () => {\n let url = `api/v1/admin/site-replication/status?buckets=true&groups=true&policies=true&users=true`;\n invokeSiteStatsApi(\"GET\", url);\n };\n\n useEffect(() => {\n getStats();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(setHelpName(\"replication_status\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n navigate(IAM_PAGES.SITE_REPLICATION)}\n />\n }\n actions={}\n />\n\n \n \n \n {\n getStats();\n }}\n label={\"Refresh\"}\n icon={}\n variant={\"regular\"}\n collapseOnSmall={false}\n />\n \n \n }\n separator\n >\n Replication status from all Sites\n \n\n {!isStatsLoading ? (\n \n }\n />\n }\n />\n }\n />\n }\n />\n \n ) : (\n \n \n \n )}\n\n \n \n \n \n
    \n );\n};\n\nexport default SiteReplicationStatus;\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 styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { Box, breakPoints, CircleIcon } from \"mds\";\n\nconst StatusCountBase = styled.div(({ theme }) => ({\n fontFamily: \"Inter,sans-serif\",\n maxWidth: \"321px\",\n display: \"flex\",\n marginLeft: \"auto\",\n marginRight: \"auto\",\n cursor: \"default\",\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n \"& .mainBox\": {\n flex: 1,\n display: \"flex\",\n padding: \"0 8px 0 8px\",\n [`@media (max-width: ${breakPoints.sm}px)`]: {\n padding: \"0 10px 0 10px\",\n },\n \"& .indicatorIcon\": {\n width: \"20px\",\n height: \"20px\",\n marginTop: \"8px\",\n maxWidth: \"26px\",\n \"& .min-icon\": {\n width: \"16px\",\n height: \"16px\",\n },\n },\n \"& .indicatorContainer\": {\n flex: 1,\n display: \"flex\",\n flexFlow: \"column\",\n \"& .indicatorLabel\": {\n fontSize: \"16px\",\n fontWeight: 600,\n },\n \"& .counterIndicator\": {\n display: \"flex\",\n alignItems: \"center\",\n gap: \"5px\",\n justifyContent: \"space-between\",\n paddingBottom: 0,\n fontSize: \"55px\",\n [`@media (max-width: ${breakPoints.sm}px)`]: {\n paddingBottom: 10,\n fontSize: \"35px\",\n },\n [`@media (max-width: ${breakPoints.lg}px)`]: {\n fontSize: \"45px\",\n },\n [`@media (max-width: ${breakPoints.xl}px)`]: {\n fontSize: \"50px\",\n },\n flexFlow: \"row\",\n fontWeight: 600,\n\n \"& .stat-text\": {\n color: get(theme, \"mutedText\", \"#87888D\"),\n fontSize: \"12px\",\n marginTop: \"8px\",\n },\n \"& .stat-value\": {\n textAlign: \"center\",\n height: \"50px\",\n },\n \"& .min-icon\": {\n marginRight: \"8px\",\n marginTop: \"8px\",\n height: \"10px\",\n width: \"10px\",\n },\n },\n \"& .onlineCounter\": {\n display: \"flex\",\n alignItems: \"center\",\n marginTop: \"5px\",\n \"& .min-icon\": {\n fill: get(theme, \"signalColors.good\", \"#4CCB92\"),\n },\n },\n \"& .offlineCount\": {\n display: \"flex\",\n alignItems: \"center\",\n marginTop: \"8px\",\n \"& .min-icon\": {\n fill: get(theme, \"signalColors.danger\", \"#C51B3F\"),\n },\n },\n },\n },\n}));\n\nexport const StatusCountCard = ({\n onlineCount = 0,\n offlineCount = 0,\n icon = null,\n label = \"\",\n okStatusText = \"Online\",\n notOkStatusText = \"Offline\",\n}: {\n icon: any;\n onlineCount: number;\n offlineCount: number;\n label: string;\n okStatusText?: string;\n notOkStatusText?: string;\n}) => {\n return (\n \n \n \n {label}\n\n \n \n {onlineCount}\n \n \n
    {okStatusText}
    \n
    \n
    \n\n \n {offlineCount}\n \n {\" \"}\n
    {notOkStatusText}
    \n
    \n
    \n
    \n
    \n {icon}\n
    \n
    \n );\n};\n\nexport default StatusCountCard;\n"],"names":["LookupTableBase","styled","div","_ref","theme","marginTop","table","width","borderCollapse","fontWeight","fontSize","paddingLeft","textAlign","height","borderBottom","concat","get","display","alignItems","justifyContent","fill","_ref2","_ref2$matrixData","matrixData","_ref2$entityName","entityName","_ref2$entityType","entityType","_matrixData","_toArray","_matrixData$","header","rows","slice","tableHeader","map","hC","hcIdx","_jsx","className","children","tableRowsToRender","r","rIdx","v","cIdx","indicator","Box","CircleIcon","_jsxs","sx","marginBottom","syncStatus","mismatch","set","isEntityNotFound","sites","lookupList","lookupKey","Object","keys","find","sk","EntityNotFound","entityValue","marginLeft","marginRight","_ref$bucketStats","bucketStats","_ref$sites","_ref$lookupValue","lookupValue","rowsForStatus","bucketSites","siteKeys","resultMatrix","row","sCol","length","push","name","fi","sfRow","feature","sbStatus","si","rSite","deploymentID","TagMismatch","HasTagsSet","PolicyMismatch","HasPolicySet","QuotaCfgMismatch","HasQuotaCfgSet","OLockConfigMismatch","HasOLockConfigSet","SSEConfigMismatch","HasSSECfgSet","ReplicationCfgMismatch","HasReplicationCfg","LookupStatusTable","_ref$policyStats","policyStats","policySites","HasPolicy","_ref$groupStats","groupStats","groupSites","GroupDescMismatch","HasGroup","HasPolicyMapping","_ref$userStats","userStats","userSites","UserInfoMismatch","HasUser","_useState","useState","_useState2","_slicedToArray","setEntityType","_useState3","_useState4","setEntityValue","_useState5","_useState6","stats","setStats","_useState7","_useState8","statsLoaded","setStatsLoaded","_useApi","useApi","res","err","_useApi2","isStatsLoading","invokeSiteStatsApi","gridTemplateColumns","_defineProperty","breakPoints","sm","md","flexGrow","Select","id","onChange","value","label","options","disabled","flex","InputBox","e","target","placeholder","maxWidth","TooltipWrapper","tooltip","Button","type","onClick","arguments","undefined","url","getStats","icon","ClustersIcon","collapseOnSmall","Grid","item","xs","Loader","style","BucketEntityStatus","UserEntityStatus","GroupEntityStatus","PolicyEntityStatus","SREntityStatus","_Object$keys","_ref$maxValue","maxValue","_ref$entityStatObj","entityStatObj","_ref$entityTextPlural","entityTextPlural","_ref$icon","statEntityLen","withBorders","padding","StatusCountCard","onlineCount","offlineCount","okStatusText","notOkStatusText","_ref4","_ref5","navigate","useNavigate","_ref3","_ref3$maxBuckets","maxBuckets","_ref3$bucketStats","_ref3$maxGroups","maxGroups","_ref3$groupStats","_ref3$maxUsers","maxUsers","_ref3$userStats","_ref3$maxPolicies","maxPolicies","_ref3$policyStats","useEffect","dispatch","useAppDispatch","setHelpName","Fragment","PageHeaderWrapper","BackLink","IAM_PAGES","SITE_REPLICATION","actions","HelpMenu","PageLayout","SectionTitle","RefreshIcon","variant","separator","BucketsIcon","UsersIcon","GroupsIcon","IAMPoliciesIcon","minHeight","EntityReplicationLookup","StatusCountBase","_counterIndicator","_mainBox","fontFamily","cursor","color","flexFlow","gap","paddingBottom","lg","xl","_ref2$onlineCount","_ref2$offlineCount","_ref2$icon","_ref2$label","_ref2$okStatusText","_ref2$notOkStatusText"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/6577.02d2b685.chunk.js","mappings":"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","sources":["screens/Console/Configurations/SiteReplication/LookupStatus/LookupStatusTable.tsx","screens/Console/Configurations/SiteReplication/LookupStatus/Utils.tsx","screens/Console/Configurations/SiteReplication/LookupStatus/BucketEntityStatus.tsx","screens/Console/Configurations/SiteReplication/LookupStatus/PolicyEntityStatus.tsx","screens/Console/Configurations/SiteReplication/LookupStatus/GroupEntityStatus.tsx","screens/Console/Configurations/SiteReplication/LookupStatus/UserEntityStatus.tsx","screens/Console/Configurations/SiteReplication/EntityReplicationLookup.tsx","screens/Console/Configurations/SiteReplication/SiteReplicationStatus.tsx","screens/Console/Dashboard/BasicDashboard/StatusCountCard.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 styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { Box, CircleIcon } from \"mds\";\n\nconst LookupTableBase = styled.div(({ theme }) => ({\n marginTop: 15,\n table: {\n width: \"100%\",\n borderCollapse: \"collapse\",\n \"& .feature-cell\": {\n fontWeight: 600,\n fontSize: 14,\n paddingLeft: 15,\n },\n \"& .status-cell\": {\n textAlign: \"center\",\n },\n \"& .header-cell\": {\n textAlign: \"center\",\n },\n \"& tr\": {\n height: 38,\n \"& td\": {\n borderBottom: `1px solid ${get(theme, \"borderColor\", \"#E2E2E2\")}`,\n },\n \"& th\": {\n borderBottom: `2px solid ${get(theme, \"borderColor\", \"#E2E2E2\")}`,\n },\n },\n \"& .indicator\": {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n \"& .min-icon\": {\n height: 15,\n width: 15,\n },\n \"&.active\": {\n \"& .min-icon\": {\n fill: get(theme, \"signalColors.good\", \"#4CCB92\"),\n },\n },\n \"&.deactivated\": {\n \"& .min-icon\": {\n fill: get(theme, \"signalColors.danger\", \"#C51B3F\"),\n },\n },\n },\n },\n}));\n\nconst LookupStatusTable = ({\n matrixData = [],\n entityName = \"\",\n entityType = \"\",\n}: {\n matrixData: any;\n entityName: string;\n entityType: string;\n}) => {\n //Assumes 1st row should be a header row.\n const [header = [], ...rows] = matrixData;\n\n const tableHeader = header.map((hC: string, hcIdx: number) => {\n return (\n \n {hC}\n \n );\n });\n\n const tableRowsToRender = rows.map((r: any, rIdx: number) => {\n return (\n \n {r.map((v: any, cIdx: number) => {\n let indicator = null;\n\n if (cIdx === 0) {\n indicator = v;\n } else if (v === \"\") {\n indicator = \"\";\n }\n if (v === true) {\n indicator = (\n \n \n \n );\n } else if (v === false) {\n indicator = (\n \n \n \n );\n }\n\n return (\n \n {indicator}\n \n );\n })}\n \n );\n });\n\n return (\n \n \n Replication status for {entityType}: {entityName}.\n \n \n \n {tableHeader}\n \n {tableRowsToRender}\n
    \n
    \n );\n};\n\nexport default LookupStatusTable;\n","import { Box } from \"@mui/material\";\nimport React from \"react\";\nimport { StatsResponseType } from \"../SiteReplicationStatus\";\n\nexport function syncStatus(mismatch: boolean, set: boolean): string | boolean {\n if (!set) {\n return \"\";\n }\n return !mismatch;\n}\n\nexport function isEntityNotFound(\n sites: Partial,\n lookupList: Partial,\n lookupKey: string,\n) {\n const siteKeys: string[] = Object.keys(sites);\n return siteKeys.find((sk: string) => {\n // there is no way to find the type of this ! as it is an entry in the structure itself.\n // @ts-ignore\n const result: Record = lookupList[sk] || {};\n return !result[lookupKey];\n });\n}\n\nexport const EntityNotFound = ({\n entityType,\n entityValue,\n}: {\n entityType: string;\n entityValue: string;\n}) => {\n return (\n \n {entityType}:{\" \"}\n \n {entityValue}\n {\" \"}\n not found.\n \n );\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { StatsResponseType } from \"../SiteReplicationStatus\";\nimport LookupStatusTable from \"./LookupStatusTable\";\nimport { EntityNotFound, isEntityNotFound, syncStatus } from \"./Utils\";\n\ntype BucketEntityStatusProps = Partial & {\n lookupValue?: string;\n};\nconst BucketEntityStatus = ({\n bucketStats = {},\n sites = {},\n lookupValue = \"\",\n}: BucketEntityStatusProps) => {\n const rowsForStatus = [\n \"Tags\",\n \"Policy\",\n \"Quota\",\n \"Retention\",\n \"Encryption\",\n \"Replication\",\n ];\n\n const bucketSites: Record = bucketStats[lookupValue] || {};\n\n if (!lookupValue) return null;\n\n const siteKeys = Object.keys(sites);\n\n const notFound = isEntityNotFound(sites, bucketSites, \"HasBucket\");\n const resultMatrix: any = [];\n if (notFound) {\n return ;\n } else {\n const row = [];\n for (let sCol = 0; sCol < siteKeys.length; sCol++) {\n if (sCol === 0) {\n row.push(\"\");\n }\n /**\n * ----------------------------------\n * | | sit-0 | site-1 |\n * -----------------------------------\n */\n row.push(sites[siteKeys[sCol]].name);\n }\n resultMatrix.push(row);\n for (let fi = 0; fi < rowsForStatus.length; fi++) {\n /**\n * -------------------------------------------------\n * | Feature Name | site-0-status | site-1-status |\n * --------------------------------------------------\n */\n const sfRow = [];\n const feature = rowsForStatus[fi];\n let sbStatus: string | boolean = \"\";\n\n for (let si = 0; si < siteKeys.length; si++) {\n const bucketSiteDeploymentId = sites[siteKeys[si]].deploymentID;\n\n const rSite = bucketSites[bucketSiteDeploymentId];\n\n if (si === 0) {\n sfRow.push(feature);\n }\n\n switch (fi) {\n case 0:\n sbStatus = syncStatus(rSite.TagMismatch, rSite.HasTagsSet);\n sfRow.push(sbStatus);\n break;\n case 1:\n sbStatus = syncStatus(rSite.PolicyMismatch, rSite.HasPolicySet);\n sfRow.push(sbStatus);\n break;\n case 2:\n sbStatus = syncStatus(rSite.QuotaCfgMismatch, rSite.HasQuotaCfgSet);\n sfRow.push(sbStatus);\n break;\n case 3:\n sbStatus = syncStatus(\n rSite.OLockConfigMismatch,\n rSite.HasOLockConfigSet,\n );\n sfRow.push(sbStatus);\n break;\n case 4:\n sbStatus = syncStatus(rSite.SSEConfigMismatch, rSite.HasSSECfgSet);\n sfRow.push(sbStatus);\n break;\n case 5:\n sbStatus = syncStatus(\n rSite.ReplicationCfgMismatch,\n rSite.HasReplicationCfg,\n );\n sfRow.push(sbStatus);\n break;\n }\n }\n\n resultMatrix.push(sfRow);\n }\n }\n\n return (\n \n );\n};\n\nexport default BucketEntityStatus;\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 { StatsResponseType } from \"../SiteReplicationStatus\";\nimport LookupStatusTable from \"./LookupStatusTable\";\nimport { EntityNotFound, isEntityNotFound, syncStatus } from \"./Utils\";\n\ntype PolicyEntityStatusProps = Partial & {\n lookupValue?: string;\n};\nconst PolicyEntityStatus = ({\n policyStats = {},\n sites = {},\n lookupValue = \"\",\n}: PolicyEntityStatusProps) => {\n const rowsForStatus = [\"Policy\"];\n\n const policySites: Record = policyStats[lookupValue] || {};\n\n if (!lookupValue) return null;\n\n const siteKeys = Object.keys(sites);\n const notFound = isEntityNotFound(sites, policySites, \"HasPolicy\");\n const resultMatrix: any = [];\n if (notFound) {\n return ;\n } else {\n const row = [];\n for (let sCol = 0; sCol < siteKeys.length; sCol++) {\n if (sCol === 0) {\n row.push(\"\");\n }\n row.push(sites[siteKeys[sCol]].name);\n }\n resultMatrix.push(row);\n for (let fi = 0; fi < rowsForStatus.length; fi++) {\n const sfRow = [];\n const feature = rowsForStatus[fi];\n let sbStatus: string | boolean = \"\";\n\n for (let si = 0; si < siteKeys.length; si++) {\n const bucketSiteDeploymentId = sites[siteKeys[si]].deploymentID;\n\n const rSite = policySites[bucketSiteDeploymentId];\n\n if (si === 0) {\n sfRow.push(feature);\n }\n\n switch (fi) {\n case 0:\n sbStatus = syncStatus(rSite.PolicyMismatch, rSite.HasPolicy);\n sfRow.push(sbStatus);\n break;\n }\n }\n\n resultMatrix.push(sfRow);\n }\n }\n\n return (\n \n );\n};\n\nexport default PolicyEntityStatus;\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 { StatsResponseType } from \"../SiteReplicationStatus\";\nimport LookupStatusTable from \"./LookupStatusTable\";\nimport { EntityNotFound, isEntityNotFound, syncStatus } from \"./Utils\";\n\ntype GroupEntityStatusProps = Partial & {\n lookupValue?: string;\n};\nconst UserEntityStatus = ({\n groupStats = {},\n sites = {},\n lookupValue = \"\",\n}: GroupEntityStatusProps) => {\n const rowsForStatus = [\"Info\", \"Policy mapping\"];\n\n const groupSites: Record = groupStats[lookupValue] || {};\n\n if (!lookupValue) return null;\n\n const siteKeys = Object.keys(sites);\n const notFound = isEntityNotFound(sites, groupSites, \"HasGroup\");\n const resultMatrix: any = [];\n if (notFound) {\n return ;\n } else {\n const row = [];\n for (let sCol = 0; sCol < siteKeys.length; sCol++) {\n if (sCol === 0) {\n row.push(\"\");\n }\n /**\n * ----------------------------------\n * | | sit-0 | site-1 |\n * -----------------------------------\n */\n row.push(sites[siteKeys[sCol]].name);\n }\n resultMatrix.push(row);\n for (let fi = 0; fi < rowsForStatus.length; fi++) {\n /**\n * -------------------------------------------------\n * | Feature Name | site-0-status | site-1-status |\n * --------------------------------------------------\n */\n const sfRow = [];\n const feature = rowsForStatus[fi];\n let sbStatus: string | boolean = \"\";\n\n for (let si = 0; si < siteKeys.length; si++) {\n const bucketSiteDeploymentId = sites[siteKeys[si]].deploymentID;\n\n const rSite = groupSites[bucketSiteDeploymentId];\n\n if (si === 0) {\n sfRow.push(feature);\n }\n\n switch (fi) {\n case 0:\n sbStatus = syncStatus(rSite.GroupDescMismatch, rSite.HasGroup);\n sfRow.push(sbStatus);\n break;\n case 1:\n sbStatus = syncStatus(rSite.PolicyMismatch, rSite.HasPolicyMapping);\n sfRow.push(sbStatus);\n break;\n }\n }\n\n resultMatrix.push(sfRow);\n }\n }\n\n return (\n \n );\n};\n\nexport default UserEntityStatus;\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 { StatsResponseType } from \"../SiteReplicationStatus\";\nimport LookupStatusTable from \"./LookupStatusTable\";\nimport { EntityNotFound, isEntityNotFound, syncStatus } from \"./Utils\";\n\ntype PolicyEntityStatusProps = Partial & {\n lookupValue?: string;\n};\nconst UserEntityStatus = ({\n userStats = {},\n sites = {},\n lookupValue = \"\",\n}: PolicyEntityStatusProps) => {\n const rowsForStatus = [\"Info\", \"Policy mapping\"];\n\n const userSites: Record = userStats[lookupValue] || {};\n\n if (!lookupValue) return null;\n\n const siteKeys = Object.keys(sites);\n\n const notFound = isEntityNotFound(sites, userSites, \"HasUser\");\n\n const resultMatrix: any = [];\n if (notFound) {\n return ;\n } else {\n const row = [];\n for (let sCol = 0; sCol < siteKeys.length; sCol++) {\n if (sCol === 0) {\n row.push(\"\");\n }\n row.push(sites[siteKeys[sCol]].name);\n }\n resultMatrix.push(row);\n for (let fi = 0; fi < rowsForStatus.length; fi++) {\n const sfRow = [];\n const feature = rowsForStatus[fi];\n let sbStatus: string | boolean = \"\";\n\n for (let si = 0; si < siteKeys.length; si++) {\n const bucketSiteDeploymentId = sites[siteKeys[si]].deploymentID;\n\n const rSite = userSites[bucketSiteDeploymentId];\n\n if (si === 0) {\n sfRow.push(feature);\n }\n\n switch (fi) {\n case 0:\n sbStatus = syncStatus(rSite.UserInfoMismatch, rSite.HasUser);\n sfRow.push(sbStatus);\n break;\n case 1:\n sbStatus = syncStatus(rSite.PolicyMismatch, rSite.HasPolicyMapping);\n sfRow.push(sbStatus);\n break;\n }\n }\n\n resultMatrix.push(sfRow);\n }\n }\n\n return (\n \n );\n};\n\nexport default UserEntityStatus;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport {\n Box,\n breakPoints,\n Button,\n ClustersIcon,\n Grid,\n Loader,\n Select,\n InputBox,\n} from \"mds\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport { StatsResponseType } from \"./SiteReplicationStatus\";\nimport BucketEntityStatus from \"./LookupStatus/BucketEntityStatus\";\nimport PolicyEntityStatus from \"./LookupStatus/PolicyEntityStatus\";\nimport GroupEntityStatus from \"./LookupStatus/GroupEntityStatus\";\nimport UserEntityStatus from \"./LookupStatus/UserEntityStatus\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst EntityReplicationLookup = () => {\n const [entityType, setEntityType] = useState(\"bucket\");\n const [entityValue, setEntityValue] = useState(\"\");\n\n const [stats, setStats] = useState({});\n const [statsLoaded, setStatsLoaded] = useState(false);\n\n const [isStatsLoading, invokeSiteStatsApi] = useApi(\n (res: any) => {\n setStats(res);\n setStatsLoaded(true);\n },\n (err: any) => {\n setStats({});\n setStatsLoaded(true);\n },\n );\n\n const {\n bucketStats = {},\n sites = {},\n userStats = {},\n policyStats = {},\n groupStats = {},\n } = stats || {};\n\n const getStats = (entityType: string = \"\", entityValue: string = \"\") => {\n setStatsLoaded(false);\n if (entityType && entityValue) {\n let url = `api/v1/admin/site-replication/status?buckets=false&entityType=${entityType}&entityValue=${entityValue}&groups=false&policies=false&users=false`;\n invokeSiteStatsApi(\"GET\", url);\n }\n };\n\n return (\n \n \n \n View Replication Status for a:\n \n \n {\n setEntityType(value);\n setStatsLoaded(false);\n }}\n label=\"\"\n value={entityType}\n options={[\n {\n label: \"Bucket\",\n value: \"bucket\",\n },\n {\n label: \"User\",\n value: \"user\",\n },\n {\n label: \"Group\",\n value: \"group\",\n },\n {\n label: \"Policy\",\n value: \"policy\",\n },\n ]}\n disabled={false}\n />\n \n\n \n ) => {\n setEntityValue(e.target.value);\n setStatsLoaded(false);\n }}\n placeholder={`test-${entityType}`}\n label=\"\"\n value={entityValue}\n />\n \n \n \n {\n getStats(entityType, entityValue);\n }}\n label={`View`}\n icon={}\n collapseOnSmall={false}\n disabled={!entityValue || !entityType}\n />\n \n \n \n\n {isStatsLoading ? (\n \n \n \n ) : null}\n\n {statsLoaded ? (\n \n {!isStatsLoading && entityType === \"bucket\" && entityValue ? (\n \n ) : null}\n\n {!isStatsLoading && entityType === \"user\" && entityValue ? (\n \n ) : null}\n\n {!isStatsLoading && entityType === \"group\" && entityValue ? (\n \n ) : null}\n\n {!isStatsLoading && entityType === \"policy\" && entityValue ? (\n \n ) : null}\n \n ) : null}\n \n );\n};\n\nexport default EntityReplicationLookup;\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 {\n BackLink,\n Box,\n breakPoints,\n BucketsIcon,\n Button,\n Grid,\n GroupsIcon,\n IAMPoliciesIcon,\n Loader,\n PageLayout,\n RefreshIcon,\n UsersIcon,\n SectionTitle,\n} from \"mds\";\nimport { useNavigate } from \"react-router-dom\";\nimport { IAM_PAGES } from \"../../../../common/SecureComponent/permissions\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { setHelpName } from \"../../../../systemSlice\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport StatusCountCard from \"../../Dashboard/BasicDashboard/StatusCountCard\";\nimport EntityReplicationLookup from \"./EntityReplicationLookup\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../../HelpMenu\";\n\nexport type StatsResponseType = {\n maxBuckets?: number;\n bucketStats?: Record;\n maxGroups?: number;\n groupStats?: Record;\n maxUsers?: number;\n userStats?: Record;\n maxPolicies?: number;\n policyStats?: Record;\n sites?: Record;\n};\n\nconst SREntityStatus = ({\n maxValue = 0,\n entityStatObj = {},\n entityTextPlural = \"\",\n icon = null,\n}: {\n maxValue: number;\n entityStatObj: Record;\n entityTextPlural: string;\n icon?: React.ReactNode;\n}) => {\n const statEntityLen = Object.keys(entityStatObj || {})?.length;\n return (\n \n \n \n );\n};\n\nconst SiteReplicationStatus = () => {\n const navigate = useNavigate();\n\n const [stats, setStats] = useState({});\n\n const [isStatsLoading, invokeSiteStatsApi] = useApi(\n (res: any) => {\n setStats(res);\n },\n (err: any) => {\n setStats({});\n },\n );\n\n const {\n maxBuckets = 0,\n bucketStats = {},\n maxGroups = 0,\n groupStats = {},\n maxUsers = 0,\n userStats = {},\n maxPolicies = 0,\n policyStats = {},\n } = stats || {};\n\n const getStats = () => {\n let url = `api/v1/admin/site-replication/status?buckets=true&groups=true&policies=true&users=true`;\n invokeSiteStatsApi(\"GET\", url);\n };\n\n useEffect(() => {\n getStats();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(setHelpName(\"replication_status\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n navigate(IAM_PAGES.SITE_REPLICATION)}\n />\n }\n actions={}\n />\n\n \n \n \n {\n getStats();\n }}\n label={\"Refresh\"}\n icon={}\n variant={\"regular\"}\n collapseOnSmall={false}\n />\n \n \n }\n separator\n >\n Replication status from all Sites\n \n\n {!isStatsLoading ? (\n \n }\n />\n }\n />\n }\n />\n }\n />\n \n ) : (\n \n \n \n )}\n\n \n \n \n \n \n );\n};\n\nexport default SiteReplicationStatus;\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 styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { Box, breakPoints, CircleIcon } from \"mds\";\n\nconst StatusCountBase = styled.div(({ theme }) => ({\n fontFamily: \"Inter,sans-serif\",\n maxWidth: \"321px\",\n display: \"flex\",\n marginLeft: \"auto\",\n marginRight: \"auto\",\n cursor: \"default\",\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n \"& .mainBox\": {\n flex: 1,\n display: \"flex\",\n padding: \"0 8px 0 8px\",\n [`@media (max-width: ${breakPoints.sm}px)`]: {\n padding: \"0 10px 0 10px\",\n },\n \"& .indicatorIcon\": {\n width: \"20px\",\n height: \"20px\",\n marginTop: \"8px\",\n maxWidth: \"26px\",\n \"& .min-icon\": {\n width: \"16px\",\n height: \"16px\",\n },\n },\n \"& .indicatorContainer\": {\n flex: 1,\n display: \"flex\",\n flexFlow: \"column\",\n \"& .indicatorLabel\": {\n fontSize: \"16px\",\n fontWeight: 600,\n },\n \"& .counterIndicator\": {\n display: \"flex\",\n alignItems: \"center\",\n gap: \"5px\",\n justifyContent: \"space-between\",\n paddingBottom: 0,\n fontSize: \"55px\",\n [`@media (max-width: ${breakPoints.sm}px)`]: {\n paddingBottom: 10,\n fontSize: \"35px\",\n },\n [`@media (max-width: ${breakPoints.lg}px)`]: {\n fontSize: \"45px\",\n },\n [`@media (max-width: ${breakPoints.xl}px)`]: {\n fontSize: \"50px\",\n },\n flexFlow: \"row\",\n fontWeight: 600,\n\n \"& .stat-text\": {\n color: get(theme, \"mutedText\", \"#87888D\"),\n fontSize: \"12px\",\n marginTop: \"8px\",\n },\n \"& .stat-value\": {\n textAlign: \"center\",\n height: \"50px\",\n },\n \"& .min-icon\": {\n marginRight: \"8px\",\n marginTop: \"8px\",\n height: \"10px\",\n width: \"10px\",\n },\n },\n \"& .onlineCounter\": {\n display: \"flex\",\n alignItems: \"center\",\n marginTop: \"5px\",\n \"& .min-icon\": {\n fill: get(theme, \"signalColors.good\", \"#4CCB92\"),\n },\n },\n \"& .offlineCount\": {\n display: \"flex\",\n alignItems: \"center\",\n marginTop: \"8px\",\n \"& .min-icon\": {\n fill: get(theme, \"signalColors.danger\", \"#C51B3F\"),\n },\n },\n },\n },\n}));\n\nexport const StatusCountCard = ({\n onlineCount = 0,\n offlineCount = 0,\n icon = null,\n label = \"\",\n okStatusText = \"Online\",\n notOkStatusText = \"Offline\",\n}: {\n icon: any;\n onlineCount: number;\n offlineCount: number;\n label: string;\n okStatusText?: string;\n notOkStatusText?: string;\n}) => {\n return (\n \n \n \n {label}\n\n \n \n {onlineCount}\n \n \n
    {okStatusText}
    \n
    \n
    \n\n \n {offlineCount}\n \n {\" \"}\n
    {notOkStatusText}
    \n
    \n
    \n
    \n
    \n {icon}\n
    \n
    \n );\n};\n\nexport default StatusCountCard;\n"],"names":["LookupTableBase","styled","div","_ref","theme","marginTop","table","width","borderCollapse","fontWeight","fontSize","paddingLeft","textAlign","height","borderBottom","concat","get","display","alignItems","justifyContent","fill","_ref2","_ref2$matrixData","matrixData","_ref2$entityName","entityName","_ref2$entityType","entityType","_matrixData","_toArray","_matrixData$","header","rows","slice","tableHeader","map","hC","hcIdx","_jsx","className","children","tableRowsToRender","r","rIdx","v","cIdx","indicator","Box","CircleIcon","_jsxs","sx","marginBottom","syncStatus","mismatch","set","isEntityNotFound","sites","lookupList","lookupKey","Object","keys","find","sk","EntityNotFound","entityValue","marginLeft","marginRight","_ref$bucketStats","bucketStats","_ref$sites","_ref$lookupValue","lookupValue","rowsForStatus","bucketSites","siteKeys","resultMatrix","row","sCol","length","push","name","fi","sfRow","feature","sbStatus","si","rSite","deploymentID","TagMismatch","HasTagsSet","PolicyMismatch","HasPolicySet","QuotaCfgMismatch","HasQuotaCfgSet","OLockConfigMismatch","HasOLockConfigSet","SSEConfigMismatch","HasSSECfgSet","ReplicationCfgMismatch","HasReplicationCfg","LookupStatusTable","_ref$policyStats","policyStats","policySites","HasPolicy","_ref$groupStats","groupStats","groupSites","GroupDescMismatch","HasGroup","HasPolicyMapping","_ref$userStats","userStats","userSites","UserInfoMismatch","HasUser","_useState","useState","_useState2","_slicedToArray","setEntityType","_useState3","_useState4","setEntityValue","_useState5","_useState6","stats","setStats","_useState7","_useState8","statsLoaded","setStatsLoaded","_useApi","useApi","res","err","_useApi2","isStatsLoading","invokeSiteStatsApi","gridTemplateColumns","_defineProperty","breakPoints","sm","md","flexGrow","Select","id","onChange","value","label","options","disabled","flex","InputBox","e","target","placeholder","maxWidth","TooltipWrapper","tooltip","Button","type","onClick","arguments","undefined","url","getStats","icon","ClustersIcon","collapseOnSmall","Grid","item","xs","Loader","style","BucketEntityStatus","UserEntityStatus","GroupEntityStatus","PolicyEntityStatus","SREntityStatus","_Object$keys","_ref$maxValue","maxValue","_ref$entityStatObj","entityStatObj","_ref$entityTextPlural","entityTextPlural","_ref$icon","statEntityLen","withBorders","padding","StatusCountCard","onlineCount","offlineCount","okStatusText","notOkStatusText","_ref4","_ref5","navigate","useNavigate","_ref3","_ref3$maxBuckets","maxBuckets","_ref3$bucketStats","_ref3$maxGroups","maxGroups","_ref3$groupStats","_ref3$maxUsers","maxUsers","_ref3$userStats","_ref3$maxPolicies","maxPolicies","_ref3$policyStats","useEffect","dispatch","useAppDispatch","setHelpName","Fragment","PageHeaderWrapper","BackLink","IAM_PAGES","SITE_REPLICATION","actions","HelpMenu","PageLayout","SectionTitle","RefreshIcon","variant","separator","BucketsIcon","UsersIcon","GroupsIcon","IAMPoliciesIcon","minHeight","EntityReplicationLookup","StatusCountBase","_counterIndicator","_mainBox","fontFamily","cursor","color","flexFlow","gap","paddingBottom","lg","xl","_ref2$onlineCount","_ref2$offlineCount","_ref2$icon","_ref2$label","_ref2$okStatusText","_ref2$notOkStatusText"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/6686.aad068b5.chunk.js b/portal-ui/build/static/js/6686.3284b22b.chunk.js similarity index 95% rename from portal-ui/build/static/js/6686.aad068b5.chunk.js rename to portal-ui/build/static/js/6686.3284b22b.chunk.js index eefc2aab4d..9a6014986f 100644 --- a/portal-ui/build/static/js/6686.aad068b5.chunk.js +++ b/portal-ui/build/static/js/6686.3284b22b.chunk.js @@ -1,2 +1,2 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[6686],{86686:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return j}});var o=n(29439),r=n(1413),i=n(72791),a=n(29945),l=n(57689),s=n(11135),c=n(25787),u=n(82460),d=n(37267),p=n(61757),f=n(23814),m=n(81806),h=n(59114),g=n(56087),y=n(87995),b=n(81551),v=n(23508),S=n(80184),T=function(e){var t=e.onConfirm,n=e.onClose,o=e.serviceName,r=e.status;return(0,S.jsx)(v.Z,{title:"Delete Endpoint",confirmText:"Delete",isOpen:!0,titleIcon:(0,S.jsx)(a.EjK,{}),isLoading:!1,onConfirm:t,onClose:n,confirmationContent:(0,S.jsxs)(i.Fragment,{children:["Are you sure you want to delete the event destination ?",(0,S.jsx)("br",{}),(0,S.jsx)("b",{children:o})," which is ",(0,S.jsx)("b",{children:r})]})})},_=n(27454),x=n(78687),k=n(53669),E=n(31776),A=n(82342),j=(0,c.Z)((function(e){return(0,s.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({},f.OR),f.Je),f.Bz),{},{tableBlock:(0,r.Z)({},f.VX.tableBlock),rightActionItems:{display:"flex",alignItems:"center","& button":{whiteSpace:"nowrap"}},searchField:(0,r.Z)((0,r.Z)({},f.qg.searchField),{},{maxWidth:380})}))}))((function(e){var t=e.classes,n=(0,b.TL)(),r=(0,l.s0)(),s=(0,x.v9)((function(e){return e.destination.loading})),c=(0,i.useState)([]),f=(0,o.Z)(c,2),v=f[0],j=f[1],Z=(0,i.useState)(""),C=(0,o.Z)(Z,2),w=C[0],L=C[1],q=(0,i.useState)(!1),N=(0,o.Z)(q,2),I=N[0],P=N[1],D=(0,i.useState)(),Q=(0,o.Z)(D,2),M=Q[0],K=Q[1];(0,i.useEffect)((function(){if(s){E.h.admin.notificationEndpointList().then((function(e){var t=[];e.data.notification_endpoints&&(t=e.data.notification_endpoints),j((0,p.fk)(t)),n((0,k.iP)(!1))})).catch((function(e){n((0,y.Ih)((0,A.g)(e.error))),n((0,k.iP)(!1))}))}}),[s,n]),(0,i.useEffect)((function(){n((0,k.iP)(!0))}),[n]);var F=[{type:"delete",onClick:function(e){K(e),P(!0)}}],R=v.filter((function(e){return""===w||e.service_name.indexOf(w)>=0}));return(0,S.jsx)(i.Fragment,{children:(0,S.jsx)(a.Xgh,{children:(0,S.jsxs)(a.rjZ,{container:!0,sx:{width:"100%"},children:[(0,S.jsxs)(a.rjZ,{item:!0,xs:12,className:t.actionsTray,children:[(0,S.jsx)(h.Z,{placeholder:"Search target",onChange:L,overrideClass:t.searchField,value:w}),(0,S.jsxs)("div",{className:t.rightActionItems,children:[(0,S.jsx)(_.Z,{tooltip:"Refresh List",children:(0,S.jsx)(a.zxk,{id:"reload-event-destinations",label:"Refresh",variant:"regular",icon:(0,S.jsx)(a.DuK,{}),onClick:function(){n((0,k.iP)(!0))}})}),(0,S.jsx)(_.Z,{tooltip:"Add Event Destination",children:(0,S.jsx)(a.zxk,{id:"add-notification-target",label:"Add Event Destination",variant:"callAction",icon:(0,S.jsx)(a.dtP,{}),onClick:function(){r(g.gA.EVENT_DESTINATIONS_ADD)}})})]})]}),s&&(0,S.jsx)(a.kod,{}),!s&&(0,S.jsxs)(i.Fragment,{children:[v.length>0&&(0,S.jsxs)(i.Fragment,{children:[(0,S.jsx)(a.rjZ,{item:!0,xs:12,className:t.tableBlock,children:(0,S.jsx)(a.xuv,{sx:{width:"100%"},children:(0,S.jsx)(a.wQF,{itemActions:F,columns:[{label:"Status",elementKey:"status",renderFunction:function(e){return(0,S.jsxs)("div",{style:{display:"flex",alignItems:"center"},children:[(0,S.jsx)(d.Z,{style:"Offline"===e?{color:u.Z[500]}:{}}),e]})},width:150},{label:"Service",elementKey:"service_name"}],isLoading:s,records:R,entityName:"Event Destinations",idField:"service_name",customPaperHeight:"400px"})})}),(0,S.jsx)(a.rjZ,{item:!0,xs:12,sx:{marginTop:15},children:(0,S.jsx)(a.KfX,{title:"Event Destinations",iconComponent:(0,S.jsx)(a.cCG,{}),help:(0,S.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,S.jsx)("br",{}),(0,S.jsx)("br",{}),"You can learn more at our"," ",(0,S.jsx)("a",{href:"https://min.io/docs/minio/linux/administration/monitoring/bucket-notifications.html?ref=con",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})})]}),0===v.length&&(0,S.jsx)(a.rjZ,{container:!0,sx:{justifyContent:"center",alignContent:"center",alignItems:"center"},children:(0,S.jsx)(a.rjZ,{item:!0,xs:8,children:(0,S.jsx)(a.KfX,{title:"Event Destinations",iconComponent:(0,S.jsx)(a.cCG,{}),help:(0,S.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,S.jsx)("br",{}),(0,S.jsx)("br",{}),"To get started,"," ",(0,S.jsx)(m.Z,{onClick:function(){r(g.gA.EVENT_DESTINATIONS_ADD)},children:"Add an Event Destination"}),"."]})})})})]}),I?(0,S.jsx)(T,{onConfirm:function(){!function(e){if(null!==e&&void 0!==e&&e.name){var t=(0,p.L)(e.name),o=":".concat(e.account_id);t?E.h.configs.resetConfig("".concat(t).concat(o)).then((function(){n((0,y.cN)(!0)),K(null),P(!1),n((0,k.iP)(!0))})).catch((function(e){P(!1),n((0,y.Ih)((0,A.g)(e.error)))})):(K(null),P(!1),console.log("Unable to find Config key for ".concat(e.name)))}}(M)},status:"".concat(null===M||void 0===M?void 0:M.status),serviceName:"".concat(null===M||void 0===M?void 0:M.service_name),onClose:function(){P(!1)}}):null]})})})}))},61757:function(e,t,n){"use strict";n.d(t,{BI:function(){return v},DD:function(){return T},L:function(){return k},dM:function(){return s},ee:function(){return l},fk:function(){return y},oj:function(){return _},z5:function(){return b}});var o,r=n(4942),i=n(43144),a=n(15671),l="notify_postgres",s="notify_mysql",c="notify_kafka",u="notify_amqp",d="notify_mqtt",p="notify_redis",f="notify_nats",m="notify_elasticsearch",h="notify_webhook",g="notify_nsq",y=function(e){return e.map((function(e){return{service_name:"".concat(e.service,":").concat(e.account_id),name:e.service,account_id:e.account_id,status:e.status}}))},b=(0,i.Z)((function e(){(0,a.Z)(this,e)}));b.DB="database",b.Queue="queue",b.Func="functions";var v=[{actionTrigger:l,targetTitle:"PostgreSQL",logo:"/postgres-logo.svg",category:b.DB},{actionTrigger:c,targetTitle:"Kafka",logo:"/kafka-logo.svg",category:b.Queue},{actionTrigger:u,targetTitle:"AMQP",logo:"/amqp-logo.svg",category:b.Queue},{actionTrigger:d,targetTitle:"MQTT",logo:"/mqtt-logo.svg",category:b.Queue},{actionTrigger:p,targetTitle:"Redis",logo:"/redis-logo.svg",category:b.Queue},{actionTrigger:f,targetTitle:"NATS",logo:"/nats-logo.svg",category:b.Queue},{actionTrigger:s,targetTitle:"Mysql",logo:"/mysql-logo.svg",category:b.DB},{actionTrigger:m,targetTitle:"Elastic Search",logo:"/elasticsearch-logo.svg",category:b.DB},{actionTrigger:h,targetTitle:"Webhook",logo:"/webhooks-logo.svg",category:b.Func},{actionTrigger:g,targetTitle:"NSQ",logo:"/nsq-logo.svg",category:b.Queue}],S=[{name:"queue_dir",label:"Queue Directory",required:!1,tooltip:"Staging directory for undelivered messages e.g. '/home/events'",type:"string",placeholder:"Enter Queue Directory"},{name:"queue_limit",label:"Queue Limit",required:!1,tooltip:"Maximum limit for undelivered messages, defaults to '10000'",type:"number",placeholder:"Enter Queue Limit"},{name:"comment",label:"Comment",required:!1,type:"comment",placeholder:"Enter custom notes if any"}],T=function(e){return e.filter((function(e){return""!==e.value}))},_=(o={},(0,r.Z)(o,c,[{name:"brokers",label:"Brokers",required:!0,tooltip:"Comma separated list of Kafka broker addresses",type:"string",placeholder:"Enter Brokers"},{name:"topic",label:"Topic",tooltip:"Kafka topic used for bucket notifications",type:"string",placeholder:"Enter Topic"},{name:"sasl_username",label:"SASL Username",tooltip:"Username for SASL/PLAIN or SASL/SCRAM authentication",type:"string",placeholder:"Enter SASL Username"},{name:"sasl_password",label:"SASL Password",tooltip:"Password for SASL/PLAIN or SASL/SCRAM authentication",type:"string",placeholder:"Enter SASL Password"},{name:"sasl_mechanism",label:"SASL Mechanism",tooltip:"SASL authentication mechanism, default 'PLAIN'",type:"string"},{name:"tls_client_auth",label:"TLS Client Auth",tooltip:"Client Auth determines the Kafka server's policy for TLS client authorization",type:"string",placeholder:"Enter TLS Client Auth"},{name:"sasl",label:"SASL",tooltip:"Set to 'on' to enable SASL authentication",type:"on|off"},{name:"tls",label:"TLS",tooltip:"Set to 'on' to enable TLS",type:"on|off"},{name:"tls_skip_verify",label:"TLS skip verify",tooltip:'Trust server TLS without verification, defaults to "on" (verify)',type:"on|off"},{name:"client_tls_cert",label:"client TLS cert",tooltip:"Path to client certificate for mTLS authorization",type:"path",placeholder:"Enter TLS Client Cert"},{name:"client_tls_key",label:"client TLS key",tooltip:"Path to client key for mTLS authorization",type:"path",placeholder:"Enter TLS Client Key"},{name:"version",label:"Version",tooltip:"Specify the version of the Kafka cluster e.g '2.2.0'",type:"string",placeholder:"Enter Kafka Version"}].concat(S)),(0,r.Z)(o,u,[{name:"url",required:!0,label:"URL",tooltip:"AMQP server endpoint e.g. `amqp://myuser:mypassword@localhost:5672`",type:"url"},{name:"exchange",label:"Exchange",tooltip:"Name of the AMQP exchange",type:"string",placeholder:"Enter Exchange"},{name:"exchange_type",label:"Exchange Type",tooltip:"AMQP exchange type",type:"string",placeholder:"Enter Exchange Type"},{name:"routing_key",label:"Routing Key",tooltip:"Routing key for publishing",type:"string",placeholder:"Enter Routing Key"},{name:"mandatory",label:"Mandatory",tooltip:"Quietly ignore undelivered messages when set to 'off', default is 'on'",type:"on|off"},{name:"durable",label:"Durable",tooltip:"Persist queue across broker restarts when set to 'on', default is 'off'",type:"on|off"},{name:"no_wait",label:"No Wait",tooltip:"Non-blocking message delivery when set to 'on', default is 'off'",type:"on|off"},{name:"internal",label:"Internal",tooltip:"Set to 'on' for exchange to be not used directly by publishers, but only when bound to other exchanges",type:"on|off"},{name:"auto_deleted",label:"Auto Deleted",tooltip:"Auto delete queue when set to 'on', when there are no consumers",type:"on|off"},{name:"delivery_mode",label:"Delivery Mode",tooltip:"Set to '1' for non-persistent or '2' for persistent queue",type:"number",placeholder:"Enter Delivery Mode"}].concat(S)),(0,r.Z)(o,p,[{name:"address",required:!0,label:"Address",tooltip:"Redis server's address e.g. `localhost:6379`",type:"address",placeholder:"Enter Address"},{name:"key",required:!0,label:"Key",tooltip:"Redis key to store/update events, key is auto-created",type:"string",placeholder:"Enter Key"},{name:"password",label:"Password",tooltip:"Redis server password",type:"string",placeholder:"Enter Password"}].concat(S)),(0,r.Z)(o,d,[{name:"broker",required:!0,label:"Broker",tooltip:"MQTT server endpoint e.g. `tcp://localhost:1883`",type:"uri",placeholder:"Enter Brokers"},{name:"topic",required:!0,label:"Topic",tooltip:"Name of the MQTT topic to publish",type:"string",placeholder:"Enter Topic"},{name:"username",label:"Username",tooltip:"MQTT username",type:"string",placeholder:"Enter Username"},{name:"password",label:"Password",tooltip:"MQTT password",type:"string",placeholder:"Enter Password"},{name:"qos",label:"QOS",tooltip:"Set the quality of service priority, defaults to '0'",type:"number",placeholder:"Enter QOS"},{name:"keep_alive_interval",label:"Keep Alive Interval",tooltip:"Keep-alive interval for MQTT connections in s,m,h,d",type:"duration",placeholder:"Enter Keep Alive Interval"},{name:"reconnect_interval",label:"Reconnect Interval",tooltip:"Reconnect interval for MQTT connections in s,m,h,d",type:"duration",placeholder:"Enter Reconnect Interval"}].concat(S)),(0,r.Z)(o,f,[{name:"address",required:!0,label:"Address",tooltip:"NATS server address e.g. '0.0.0.0:4222'",type:"address",placeholder:"Enter Address"},{name:"subject",required:!0,label:"Subject",tooltip:"NATS subscription subject",type:"string",placeholder:"Enter NATS Subject"},{name:"username",label:"Username",tooltip:"NATS username",type:"string",placeholder:"Enter NATS Username"},{name:"password",label:"Password",tooltip:"NATS password",type:"string",placeholder:"Enter NATS password"},{name:"token",label:"Token",tooltip:"NATS token",type:"string",placeholder:"Enter NATS token"},{name:"tls",label:"TLS",tooltip:"Set to 'on' to enable TLS",type:"on|off"},{name:"tls_skip_verify",label:"TLS Skip Verify",tooltip:'Trust server TLS without verification, defaults to "on" (verify)',type:"on|off"},{name:"ping_interval",label:"Ping Interval",tooltip:"Client ping commands interval in s,m,h,d. Disabled by default",type:"duration",placeholder:"Enter Ping Interval"},{name:"streaming",label:"Streaming",tooltip:"Set to 'on' to use streaming NATS server",type:"on|off"},{name:"streaming_async",label:"Streaming async",tooltip:"Set to 'on' to enable asynchronous publish",type:"on|off"},{name:"streaming_max_pub_acks_in_flight",label:"Streaming max publish ACKS in flight",tooltip:"Number of messages to publish without waiting for ACKs",type:"number",placeholder:"Enter Streaming in flight value"},{name:"streaming_cluster_id",label:"Streaming Cluster ID",tooltip:"Unique ID for NATS streaming cluster",type:"string",placeholder:"Enter Streaming Cluster ID"},{name:"cert_authority",label:"Cert Authority",tooltip:"Path to certificate chain of the target NATS server",type:"string",placeholder:"Enter Cert Authority"},{name:"client_cert",label:"Client Cert",tooltip:"Client cert for NATS mTLS auth",type:"string",placeholder:"Enter Client Cert"},{name:"client_key",label:"Client Key",tooltip:"Client cert key for NATS mTLS authorization",type:"string",placeholder:"Enter Client Key"}].concat(S)),(0,r.Z)(o,m,[{name:"url",required:!0,label:"URL",tooltip:"Elasticsearch server's address, with optional authentication info",type:"url",placeholder:"Enter URL"},{name:"index",required:!0,label:"Index",tooltip:"Elasticsearch index to store/update events, index is auto-created",type:"string",placeholder:"Enter Index"},{name:"format",required:!0,label:"Format",tooltip:"'namespace' reflects current bucket/object list and 'access' reflects a journal of object operations, defaults to 'namespace'",type:"enum",placeholder:"Enter Format"}].concat(S)),(0,r.Z)(o,h,[{name:"endpoint",required:!0,label:"Endpoint",tooltip:"Webhook server endpoint e.g. http://localhost:8080/minio/events",type:"url",placeholder:"Enter Endpoint"},{name:"auth_token",label:"Auth Token",tooltip:"Opaque string or JWT authorization token",type:"string",placeholder:"Enter auth_token"}].concat(S)),(0,r.Z)(o,g,[{name:"nsqd_address",required:!0,label:"NSQD Address",tooltip:"NSQ server address e.g. '127.0.0.1:4150'",type:"address",placeholder:"Enter nsqd_address"},{name:"topic",required:!0,label:"Topic",tooltip:"NSQ topic",type:"string",placeholder:"Enter Topic"},{name:"tls",label:"TLS",tooltip:"Set to 'on' to enable TLS",type:"on|off"},{name:"tls_skip_verify",label:"TLS Skip Verify",tooltip:'Trust server TLS without verification, defaults to "on" (verify)',type:"on|off"}].concat(S)),o),x={webhook:"notify_webhook",amqp:"notify_amqp",kafka:"notify_kafka",mqtt:"notify_mqtt",nats:"notify_nats",nsq:"notify_nsq",mysql:"notify_mysql",postgresql:"notify_postgres",elasticsearch:"notify_elasticsearch",redis:"notify_redis"},k=function(e){return x[e]}},37267:function(e,t,n){"use strict";var o=n(64836);t.Z=void 0;var r=o(n(45649)),i=n(80184),a=(0,r.default)((0,i.jsx)("circle",{cx:"12",cy:"12",r:"8"}),"FiberManualRecord");t.Z=a},45649:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o.createSvgIcon}});var o=n(28610)},31260:function(e,t,n){"use strict";var o=n(78949);t.Z=o.Z},28610:function(e,t,n){"use strict";n.r(t),n.d(t,{capitalize:function(){return r.Z},createChainedFunction:function(){return i.Z},createSvgIcon:function(){return a.Z},debounce:function(){return l.Z},deprecatedPropType:function(){return s},isMuiElement:function(){return c.Z},ownerDocument:function(){return u.Z},ownerWindow:function(){return d.Z},requirePropFactory:function(){return p},setRef:function(){return f},unstable_ClassNameGenerator:function(){return T},unstable_useEnhancedEffect:function(){return m.Z},unstable_useId:function(){return h.Z},unsupportedProp:function(){return g},useControlled:function(){return y.Z},useEventCallback:function(){return b.Z},useForkRef:function(){return v.Z},useIsFocusVisible:function(){return S.Z}});var o=n(55902),r=n(14036),i=n(31260),a=n(76189),l=n(83199);var s=function(e,t){return function(){return null}},c=n(19103),u=n(98301),d=n(17602);n(87462);var p=function(e,t){return function(){return null}},f=n(62971).Z,m=n(40162),h=n(67384);var g=function(e,t,n,o,r){return null},y=n(98278),b=n(89683),v=n(42071),S=n(23031),T={configure:function(e){o.Z.configure(e)}}},19103:function(e,t,n){"use strict";n.d(t,{Z:function(){return r}});var o=n(72791);var r=function(e,t){return o.isValidElement(e)&&-1!==t.indexOf(e.type.muiName)}},78949:function(e,t,n){"use strict";function o(){for(var e=arguments.length,t=new Array(e),n=0;n=0}));return(0,S.jsx)(i.Fragment,{children:(0,S.jsx)(a.Xgh,{children:(0,S.jsxs)(a.rjZ,{container:!0,sx:{width:"100%"},children:[(0,S.jsxs)(a.rjZ,{item:!0,xs:12,className:t.actionsTray,children:[(0,S.jsx)(h.Z,{placeholder:"Search target",onChange:L,overrideClass:t.searchField,value:w}),(0,S.jsxs)("div",{className:t.rightActionItems,children:[(0,S.jsx)(_.Z,{tooltip:"Refresh List",children:(0,S.jsx)(a.zxk,{id:"reload-event-destinations",label:"Refresh",variant:"regular",icon:(0,S.jsx)(a.DuK,{}),onClick:function(){n((0,k.iP)(!0))}})}),(0,S.jsx)(_.Z,{tooltip:"Add Event Destination",children:(0,S.jsx)(a.zxk,{id:"add-notification-target",label:"Add Event Destination",variant:"callAction",icon:(0,S.jsx)(a.dtP,{}),onClick:function(){r(g.gA.EVENT_DESTINATIONS_ADD)}})})]})]}),s&&(0,S.jsx)(a.kod,{}),!s&&(0,S.jsxs)(i.Fragment,{children:[v.length>0&&(0,S.jsxs)(i.Fragment,{children:[(0,S.jsx)(a.rjZ,{item:!0,xs:12,className:t.tableBlock,children:(0,S.jsx)(a.xuv,{sx:{width:"100%"},children:(0,S.jsx)(a.wQF,{itemActions:F,columns:[{label:"Status",elementKey:"status",renderFunction:function(e){return(0,S.jsxs)("div",{style:{display:"flex",alignItems:"center"},children:[(0,S.jsx)(d.Z,{style:"Offline"===e?{color:u.Z[500]}:{}}),e]})},width:150},{label:"Service",elementKey:"service_name"}],isLoading:s,records:R,entityName:"Event Destinations",idField:"service_name",customPaperHeight:"400px"})})}),(0,S.jsx)(a.rjZ,{item:!0,xs:12,sx:{marginTop:15},children:(0,S.jsx)(a.KfX,{title:"Event Destinations",iconComponent:(0,S.jsx)(a.cCG,{}),help:(0,S.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,S.jsx)("br",{}),(0,S.jsx)("br",{}),"You can learn more at our"," ",(0,S.jsx)("a",{href:"https://min.io/docs/minio/linux/administration/monitoring/bucket-notifications.html?ref=con",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})})]}),0===v.length&&(0,S.jsx)(a.rjZ,{container:!0,sx:{justifyContent:"center",alignContent:"center",alignItems:"center"},children:(0,S.jsx)(a.rjZ,{item:!0,xs:8,children:(0,S.jsx)(a.KfX,{title:"Event Destinations",iconComponent:(0,S.jsx)(a.cCG,{}),help:(0,S.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,S.jsx)("br",{}),(0,S.jsx)("br",{}),"To get started,"," ",(0,S.jsx)(m.Z,{onClick:function(){r(g.gA.EVENT_DESTINATIONS_ADD)},children:"Add an Event Destination"}),"."]})})})})]}),I?(0,S.jsx)(T,{onConfirm:function(){!function(e){if(null!==e&&void 0!==e&&e.name){var t=(0,p.L)(e.name),o=":".concat(e.account_id);t?E.h.configs.resetConfig("".concat(t).concat(o)).then((function(){n((0,y.cN)(!0)),K(null),P(!1),n((0,k.iP)(!0))})).catch((function(e){P(!1),n((0,y.Ih)((0,A.g)(e.error)))})):(K(null),P(!1),console.log("Unable to find Config key for ".concat(e.name)))}}(M)},status:"".concat(null===M||void 0===M?void 0:M.status),serviceName:"".concat(null===M||void 0===M?void 0:M.service_name),onClose:function(){P(!1)}}):null]})})})}))},61757:function(e,t,n){"use strict";n.d(t,{BI:function(){return v},DD:function(){return T},L:function(){return k},dM:function(){return s},ee:function(){return l},fk:function(){return y},oj:function(){return _},z5:function(){return b}});var o,r=n(4942),i=n(43144),a=n(15671),l="notify_postgres",s="notify_mysql",c="notify_kafka",u="notify_amqp",d="notify_mqtt",p="notify_redis",f="notify_nats",m="notify_elasticsearch",h="notify_webhook",g="notify_nsq",y=function(e){return e.map((function(e){return{service_name:"".concat(e.service,":").concat(e.account_id),name:e.service,account_id:e.account_id,status:e.status}}))},b=(0,i.Z)((function e(){(0,a.Z)(this,e)}));b.DB="database",b.Queue="queue",b.Func="functions";var v=[{actionTrigger:l,targetTitle:"PostgreSQL",logo:"/postgres-logo.svg",category:b.DB},{actionTrigger:c,targetTitle:"Kafka",logo:"/kafka-logo.svg",category:b.Queue},{actionTrigger:u,targetTitle:"AMQP",logo:"/amqp-logo.svg",category:b.Queue},{actionTrigger:d,targetTitle:"MQTT",logo:"/mqtt-logo.svg",category:b.Queue},{actionTrigger:p,targetTitle:"Redis",logo:"/redis-logo.svg",category:b.Queue},{actionTrigger:f,targetTitle:"NATS",logo:"/nats-logo.svg",category:b.Queue},{actionTrigger:s,targetTitle:"Mysql",logo:"/mysql-logo.svg",category:b.DB},{actionTrigger:m,targetTitle:"Elastic Search",logo:"/elasticsearch-logo.svg",category:b.DB},{actionTrigger:h,targetTitle:"Webhook",logo:"/webhooks-logo.svg",category:b.Func},{actionTrigger:g,targetTitle:"NSQ",logo:"/nsq-logo.svg",category:b.Queue}],S=[{name:"queue_dir",label:"Queue Directory",required:!1,tooltip:"Staging directory for undelivered messages e.g. '/home/events'",type:"string",placeholder:"Enter Queue Directory"},{name:"queue_limit",label:"Queue Limit",required:!1,tooltip:"Maximum limit for undelivered messages, defaults to '10000'",type:"number",placeholder:"Enter Queue Limit"},{name:"comment",label:"Comment",required:!1,type:"comment",placeholder:"Enter custom notes if any"}],T=function(e){return e.filter((function(e){return""!==e.value}))},_=(o={},(0,r.Z)(o,c,[{name:"brokers",label:"Brokers",required:!0,tooltip:"Comma separated list of Kafka broker addresses",type:"string",placeholder:"Enter Brokers"},{name:"topic",label:"Topic",tooltip:"Kafka topic used for bucket notifications",type:"string",placeholder:"Enter Topic"},{name:"sasl_username",label:"SASL Username",tooltip:"Username for SASL/PLAIN or SASL/SCRAM authentication",type:"string",placeholder:"Enter SASL Username"},{name:"sasl_password",label:"SASL Password",tooltip:"Password for SASL/PLAIN or SASL/SCRAM authentication",type:"string",placeholder:"Enter SASL Password"},{name:"sasl_mechanism",label:"SASL Mechanism",tooltip:"SASL authentication mechanism, default 'PLAIN'",type:"string"},{name:"tls_client_auth",label:"TLS Client Auth",tooltip:"Client Auth determines the Kafka server's policy for TLS client authorization",type:"string",placeholder:"Enter TLS Client Auth"},{name:"sasl",label:"SASL",tooltip:"Set to 'on' to enable SASL authentication",type:"on|off"},{name:"tls",label:"TLS",tooltip:"Set to 'on' to enable TLS",type:"on|off"},{name:"tls_skip_verify",label:"TLS skip verify",tooltip:'Trust server TLS without verification, defaults to "on" (verify)',type:"on|off"},{name:"client_tls_cert",label:"client TLS cert",tooltip:"Path to client certificate for mTLS authorization",type:"path",placeholder:"Enter TLS Client Cert"},{name:"client_tls_key",label:"client TLS key",tooltip:"Path to client key for mTLS authorization",type:"path",placeholder:"Enter TLS Client Key"},{name:"version",label:"Version",tooltip:"Specify the version of the Kafka cluster e.g '2.2.0'",type:"string",placeholder:"Enter Kafka Version"}].concat(S)),(0,r.Z)(o,u,[{name:"url",required:!0,label:"URL",tooltip:"AMQP server endpoint e.g. `amqp://myuser:mypassword@localhost:5672`",type:"url"},{name:"exchange",label:"Exchange",tooltip:"Name of the AMQP exchange",type:"string",placeholder:"Enter Exchange"},{name:"exchange_type",label:"Exchange Type",tooltip:"AMQP exchange type",type:"string",placeholder:"Enter Exchange Type"},{name:"routing_key",label:"Routing Key",tooltip:"Routing key for publishing",type:"string",placeholder:"Enter Routing Key"},{name:"mandatory",label:"Mandatory",tooltip:"Quietly ignore undelivered messages when set to 'off', default is 'on'",type:"on|off"},{name:"durable",label:"Durable",tooltip:"Persist queue across broker restarts when set to 'on', default is 'off'",type:"on|off"},{name:"no_wait",label:"No Wait",tooltip:"Non-blocking message delivery when set to 'on', default is 'off'",type:"on|off"},{name:"internal",label:"Internal",tooltip:"Set to 'on' for exchange to be not used directly by publishers, but only when bound to other exchanges",type:"on|off"},{name:"auto_deleted",label:"Auto Deleted",tooltip:"Auto delete queue when set to 'on', when there are no consumers",type:"on|off"},{name:"delivery_mode",label:"Delivery Mode",tooltip:"Set to '1' for non-persistent or '2' for persistent queue",type:"number",placeholder:"Enter Delivery Mode"}].concat(S)),(0,r.Z)(o,p,[{name:"address",required:!0,label:"Address",tooltip:"Redis server's address e.g. `localhost:6379`",type:"address",placeholder:"Enter Address"},{name:"key",required:!0,label:"Key",tooltip:"Redis key to store/update events, key is auto-created",type:"string",placeholder:"Enter Key"},{name:"password",label:"Password",tooltip:"Redis server password",type:"string",placeholder:"Enter Password"}].concat(S)),(0,r.Z)(o,d,[{name:"broker",required:!0,label:"Broker",tooltip:"MQTT server endpoint e.g. `tcp://localhost:1883`",type:"uri",placeholder:"Enter Brokers"},{name:"topic",required:!0,label:"Topic",tooltip:"Name of the MQTT topic to publish",type:"string",placeholder:"Enter Topic"},{name:"username",label:"Username",tooltip:"MQTT username",type:"string",placeholder:"Enter Username"},{name:"password",label:"Password",tooltip:"MQTT password",type:"string",placeholder:"Enter Password"},{name:"qos",label:"QOS",tooltip:"Set the quality of service priority, defaults to '0'",type:"number",placeholder:"Enter QOS"},{name:"keep_alive_interval",label:"Keep Alive Interval",tooltip:"Keep-alive interval for MQTT connections in s,m,h,d",type:"duration",placeholder:"Enter Keep Alive Interval"},{name:"reconnect_interval",label:"Reconnect Interval",tooltip:"Reconnect interval for MQTT connections in s,m,h,d",type:"duration",placeholder:"Enter Reconnect Interval"}].concat(S)),(0,r.Z)(o,f,[{name:"address",required:!0,label:"Address",tooltip:"NATS server address e.g. '0.0.0.0:4222'",type:"address",placeholder:"Enter Address"},{name:"subject",required:!0,label:"Subject",tooltip:"NATS subscription subject",type:"string",placeholder:"Enter NATS Subject"},{name:"username",label:"Username",tooltip:"NATS username",type:"string",placeholder:"Enter NATS Username"},{name:"password",label:"Password",tooltip:"NATS password",type:"string",placeholder:"Enter NATS password"},{name:"token",label:"Token",tooltip:"NATS token",type:"string",placeholder:"Enter NATS token"},{name:"tls",label:"TLS",tooltip:"Set to 'on' to enable TLS",type:"on|off"},{name:"tls_skip_verify",label:"TLS Skip Verify",tooltip:'Trust server TLS without verification, defaults to "on" (verify)',type:"on|off"},{name:"ping_interval",label:"Ping Interval",tooltip:"Client ping commands interval in s,m,h,d. Disabled by default",type:"duration",placeholder:"Enter Ping Interval"},{name:"streaming",label:"Streaming",tooltip:"Set to 'on' to use streaming NATS server",type:"on|off"},{name:"streaming_async",label:"Streaming async",tooltip:"Set to 'on' to enable asynchronous publish",type:"on|off"},{name:"streaming_max_pub_acks_in_flight",label:"Streaming max publish ACKS in flight",tooltip:"Number of messages to publish without waiting for ACKs",type:"number",placeholder:"Enter Streaming in flight value"},{name:"streaming_cluster_id",label:"Streaming Cluster ID",tooltip:"Unique ID for NATS streaming cluster",type:"string",placeholder:"Enter Streaming Cluster ID"},{name:"cert_authority",label:"Cert Authority",tooltip:"Path to certificate chain of the target NATS server",type:"string",placeholder:"Enter Cert Authority"},{name:"client_cert",label:"Client Cert",tooltip:"Client cert for NATS mTLS auth",type:"string",placeholder:"Enter Client Cert"},{name:"client_key",label:"Client Key",tooltip:"Client cert key for NATS mTLS authorization",type:"string",placeholder:"Enter Client Key"}].concat(S)),(0,r.Z)(o,m,[{name:"url",required:!0,label:"URL",tooltip:"Elasticsearch server's address, with optional authentication info",type:"url",placeholder:"Enter URL"},{name:"index",required:!0,label:"Index",tooltip:"Elasticsearch index to store/update events, index is auto-created",type:"string",placeholder:"Enter Index"},{name:"format",required:!0,label:"Format",tooltip:"'namespace' reflects current bucket/object list and 'access' reflects a journal of object operations, defaults to 'namespace'",type:"enum",placeholder:"Enter Format"}].concat(S)),(0,r.Z)(o,h,[{name:"endpoint",required:!0,label:"Endpoint",tooltip:"Webhook server endpoint e.g. http://localhost:8080/minio/events",type:"url",placeholder:"Enter Endpoint"},{name:"auth_token",label:"Auth Token",tooltip:"Opaque string or JWT authorization token",type:"string",placeholder:"Enter auth_token"}].concat(S)),(0,r.Z)(o,g,[{name:"nsqd_address",required:!0,label:"NSQD Address",tooltip:"NSQ server address e.g. '127.0.0.1:4150'",type:"address",placeholder:"Enter nsqd_address"},{name:"topic",required:!0,label:"Topic",tooltip:"NSQ topic",type:"string",placeholder:"Enter Topic"},{name:"tls",label:"TLS",tooltip:"Set to 'on' to enable TLS",type:"on|off"},{name:"tls_skip_verify",label:"TLS Skip Verify",tooltip:'Trust server TLS without verification, defaults to "on" (verify)',type:"on|off"}].concat(S)),o),x={webhook:"notify_webhook",amqp:"notify_amqp",kafka:"notify_kafka",mqtt:"notify_mqtt",nats:"notify_nats",nsq:"notify_nsq",mysql:"notify_mysql",postgresql:"notify_postgres",elasticsearch:"notify_elasticsearch",redis:"notify_redis"},k=function(e){return x[e]}},37267:function(e,t,n){"use strict";var o=n(64836);t.Z=void 0;var r=o(n(45649)),i=n(80184),a=(0,r.default)((0,i.jsx)("circle",{cx:"12",cy:"12",r:"8"}),"FiberManualRecord");t.Z=a},45649:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o.createSvgIcon}});var o=n(28610)},31260:function(e,t,n){"use strict";var o=n(78949);t.Z=o.Z},28610:function(e,t,n){"use strict";n.r(t),n.d(t,{capitalize:function(){return r.Z},createChainedFunction:function(){return i.Z},createSvgIcon:function(){return a.Z},debounce:function(){return l.Z},deprecatedPropType:function(){return s},isMuiElement:function(){return c.Z},ownerDocument:function(){return u.Z},ownerWindow:function(){return d.Z},requirePropFactory:function(){return p},setRef:function(){return f},unstable_ClassNameGenerator:function(){return T},unstable_useEnhancedEffect:function(){return m.Z},unstable_useId:function(){return h.Z},unsupportedProp:function(){return g},useControlled:function(){return y.Z},useEventCallback:function(){return b.Z},useForkRef:function(){return v.Z},useIsFocusVisible:function(){return S.Z}});var o=n(55902),r=n(14036),i=n(31260),a=n(76189),l=n(83199);var s=function(e,t){return function(){return null}},c=n(19103),u=n(98301),d=n(17602);n(87462);var p=function(e,t){return function(){return null}},f=n(62971).Z,m=n(40162),h=n(67384);var g=function(e,t,n,o,r){return null},y=n(98278),b=n(89683),v=n(42071),S=n(23031),T={configure:function(e){o.Z.configure(e)}}},19103:function(e,t,n){"use strict";n.d(t,{Z:function(){return r}});var o=n(72791);var r=function(e,t){var n,r;return o.isValidElement(e)&&-1!==t.indexOf(null!=(n=e.type.muiName)?n:null==(r=e.type)||null==(r=r._payload)||null==(r=r.value)?void 0:r.muiName)}},78949:function(e,t,n){"use strict";function o(){for(var e=arguments.length,t=new Array(e),n=0;n.\n\nimport React from \"react\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmModalIcon } from \"mds\";\n\nconst ConfirmDeleteDestinationModal = ({\n onConfirm,\n onClose,\n serviceName,\n status,\n}: {\n onConfirm: () => void;\n onClose: () => void;\n serviceName: string;\n status: string;\n}) => {\n return (\n }\n isLoading={false}\n onConfirm={onConfirm}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the event destination ?\n
    \n {serviceName} which is {status}\n
    \n }\n />\n );\n};\n\nexport default ConfirmDeleteDestinationModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport {\n AddIcon,\n Box,\n Button,\n DataTable,\n Grid,\n HelpBox,\n LambdaIcon,\n PageLayout,\n ProgressBar,\n RefreshIcon,\n} from \"mds\";\nimport { useNavigate } from \"react-router-dom\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\nimport { red } from \"@mui/material/colors\";\nimport FiberManualRecordIcon from \"@mui/icons-material/FiberManualRecord\";\nimport { TransformedEndpointItem } from \"./types\";\nimport { getNotificationConfigKey, notificationTransform } from \"./utils\";\n\nimport {\n actionsTray,\n containerForHeader,\n searchField,\n settingsCommon,\n tableStyles,\n} from \"../Common/FormComponents/common/styleLibrary\";\nimport AButton from \"../Common/AButton/AButton\";\nimport SearchBox from \"../Common/SearchBox\";\n\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport {\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport ConfirmDeleteDestinationModal from \"./ConfirmDeleteDestinationModal\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport { useSelector } from \"react-redux\";\nimport { setDestinationLoading } from \"./destinationsSlice\";\nimport { api } from \"api\";\nimport { NotificationEndpointItem } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IListNotificationEndpoints {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...actionsTray,\n ...settingsCommon,\n ...containerForHeader,\n tableBlock: {\n ...tableStyles.tableBlock,\n },\n rightActionItems: {\n display: \"flex\",\n alignItems: \"center\",\n \"& button\": {\n whiteSpace: \"nowrap\",\n },\n },\n searchField: {\n ...searchField.searchField,\n maxWidth: 380,\n },\n });\n\nconst ListEventDestinations = ({ classes }: IListNotificationEndpoints) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n // Reducer States\n const isLoading = useSelector((state: AppState) => state.destination.loading);\n\n //Local States\n const [records, setRecords] = useState([]);\n const [filter, setFilter] = useState(\"\");\n\n const [isDelConfirmOpen, setIsDelConfirmOpen] = useState(false);\n const [selNotifyEndPoint, setSelNotifyEndpoint] =\n useState();\n\n //Effects\n // load records on mount\n useEffect(() => {\n if (isLoading) {\n const fetchRecords = () => {\n api.admin\n .notificationEndpointList()\n .then((res) => {\n let resNotEndList: NotificationEndpointItem[] = [];\n if (res.data.notification_endpoints) {\n resNotEndList = res.data.notification_endpoints;\n }\n setRecords(notificationTransform(resNotEndList));\n dispatch(setDestinationLoading(false));\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n dispatch(setDestinationLoading(false));\n });\n };\n fetchRecords();\n }\n }, [isLoading, dispatch]);\n\n useEffect(() => {\n dispatch(setDestinationLoading(true));\n }, [dispatch]);\n\n const resetNotificationConfig = (\n ep: TransformedEndpointItem | undefined | null,\n ) => {\n if (ep?.name) {\n const configKey = getNotificationConfigKey(ep.name);\n let accountId = `:${ep.account_id}`;\n if (configKey) {\n api.configs\n .resetConfig(`${configKey}${accountId}`)\n .then(() => {\n dispatch(setServerNeedsRestart(true));\n setSelNotifyEndpoint(null);\n setIsDelConfirmOpen(false);\n dispatch(setDestinationLoading(true));\n })\n .catch((err) => {\n setIsDelConfirmOpen(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n } else {\n setSelNotifyEndpoint(null);\n setIsDelConfirmOpen(false);\n console.log(`Unable to find Config key for ${ep.name}`);\n }\n }\n };\n\n const confirmDelNotifyEndpoint = (record: TransformedEndpointItem) => {\n setSelNotifyEndpoint(record);\n setIsDelConfirmOpen(true);\n };\n\n const tableActions = [{ type: \"delete\", onClick: confirmDelNotifyEndpoint }];\n\n const filteredRecords = records.filter((b: TransformedEndpointItem) => {\n if (filter === \"\") {\n return true;\n }\n return b.service_name.indexOf(filter) >= 0;\n });\n\n const statusDisplay = (status: string) => {\n return (\n \n \n {status}\n \n );\n };\n\n return (\n \n \n \n \n \n
    \n \n }\n onClick={() => {\n dispatch(setDestinationLoading(true));\n }}\n />\n \n \n }\n onClick={() => {\n navigate(IAM_PAGES.EVENT_DESTINATIONS_ADD);\n }}\n />\n \n
    \n
    \n {isLoading && }\n {!isLoading && (\n \n {records.length > 0 && (\n \n \n \n \n \n \n \n }\n help={\n \n MinIO bucket notifications allow administrators to\n send notifications to supported external services on\n certain object or bucket events. MinIO supports bucket\n and object-level S3 events similar to the Amazon S3\n Event Notifications.\n
    \n
    \n You can learn more at our{\" \"}\n \n documentation\n \n .\n
    \n }\n />\n
    \n
    \n )}\n {records.length === 0 && (\n \n \n }\n help={\n \n MinIO bucket notifications allow administrators to\n send notifications to supported external services on\n certain object or bucket events. MinIO supports bucket\n and object-level S3 events similar to the Amazon S3\n Event Notifications.\n
    \n
    \n To get started,{\" \"}\n {\n navigate(IAM_PAGES.EVENT_DESTINATIONS_ADD);\n }}\n >\n Add an Event Destination\n \n .\n
    \n }\n />\n
    \n
    \n )}\n
    \n )}\n\n {isDelConfirmOpen ? (\n {\n resetNotificationConfig(selNotifyEndPoint);\n }}\n status={`${selNotifyEndPoint?.status}`}\n serviceName={`${selNotifyEndPoint?.service_name}`}\n onClose={() => {\n setIsDelConfirmOpen(false);\n }}\n />\n ) : null}\n \n \n \n );\n};\n\nexport default withStyles(styles)(ListEventDestinations);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { NotificationEndpointItem } from \"api/consoleApi\";\nimport { IElementValue } from \"../Configurations/types\";\nimport { TransformedEndpointItem } from \"./types\";\n\nexport const notifyPostgres = \"notify_postgres\";\nexport const notifyMysql = \"notify_mysql\";\nexport const notifyKafka = \"notify_kafka\";\nexport const notifyAmqp = \"notify_amqp\";\nexport const notifyMqtt = \"notify_mqtt\";\nexport const notifyRedis = \"notify_redis\";\nexport const notifyNats = \"notify_nats\";\nexport const notifyElasticsearch = \"notify_elasticsearch\";\nexport const notifyWebhooks = \"notify_webhook\";\nexport const notifyNsq = \"notify_nsq\";\n\nexport const notificationTransform = (\n notificationElements: NotificationEndpointItem[],\n) => {\n return notificationElements.map((element) => {\n return {\n service_name: `${element.service}:${element.account_id}`,\n name: element.service,\n account_id: element.account_id,\n status: element.status,\n };\n }) as TransformedEndpointItem[];\n};\n\nexport class DestType {\n static DB: string = \"database\";\n static Queue: string = \"queue\";\n static Func: string = \"functions\";\n}\n\nexport const destinationList = [\n {\n actionTrigger: notifyPostgres,\n targetTitle: \"PostgreSQL\",\n logo: \"/postgres-logo.svg\",\n category: DestType.DB,\n },\n {\n actionTrigger: notifyKafka,\n targetTitle: \"Kafka\",\n logo: \"/kafka-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyAmqp,\n targetTitle: \"AMQP\",\n logo: \"/amqp-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyMqtt,\n targetTitle: \"MQTT\",\n logo: \"/mqtt-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyRedis,\n targetTitle: \"Redis\",\n logo: \"/redis-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyNats,\n targetTitle: \"NATS\",\n logo: \"/nats-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyMysql,\n targetTitle: \"Mysql\",\n logo: \"/mysql-logo.svg\",\n category: DestType.DB,\n },\n {\n actionTrigger: notifyElasticsearch,\n targetTitle: \"Elastic Search\",\n logo: \"/elasticsearch-logo.svg\",\n category: DestType.DB,\n },\n {\n actionTrigger: notifyWebhooks,\n targetTitle: \"Webhook\",\n logo: \"/webhooks-logo.svg\",\n category: DestType.Func,\n },\n {\n actionTrigger: notifyNsq,\n targetTitle: \"NSQ\",\n logo: \"/nsq-logo.svg\",\n category: DestType.Queue,\n },\n];\n\nconst commonFields = [\n {\n name: \"queue_dir\",\n label: \"Queue Directory\",\n required: false,\n\n tooltip: \"Staging directory for undelivered messages e.g. '/home/events'\",\n type: \"string\",\n placeholder: \"Enter Queue Directory\",\n },\n {\n name: \"queue_limit\",\n label: \"Queue Limit\",\n required: false,\n\n tooltip: \"Maximum limit for undelivered messages, defaults to '10000'\",\n type: \"number\",\n placeholder: \"Enter Queue Limit\",\n },\n {\n name: \"comment\",\n label: \"Comment\",\n required: false,\n type: \"comment\",\n placeholder: \"Enter custom notes if any\",\n },\n];\n\nexport const removeEmptyFields = (formFields: IElementValue[]) => {\n const nonEmptyFields = formFields.filter((field) => field.value !== \"\");\n\n return nonEmptyFields;\n};\n\nexport const notificationEndpointsFields: any = {\n [notifyKafka]: [\n {\n name: \"brokers\",\n label: \"Brokers\",\n required: true,\n\n tooltip: \"Comma separated list of Kafka broker addresses\",\n type: \"string\",\n placeholder: \"Enter Brokers\",\n },\n {\n name: \"topic\",\n label: \"Topic\",\n tooltip: \"Kafka topic used for bucket notifications\",\n type: \"string\",\n placeholder: \"Enter Topic\",\n },\n {\n name: \"sasl_username\",\n label: \"SASL Username\",\n tooltip: \"Username for SASL/PLAIN or SASL/SCRAM authentication\",\n type: \"string\",\n placeholder: \"Enter SASL Username\",\n },\n {\n name: \"sasl_password\",\n label: \"SASL Password\",\n tooltip: \"Password for SASL/PLAIN or SASL/SCRAM authentication\",\n type: \"string\",\n placeholder: \"Enter SASL Password\",\n },\n {\n name: \"sasl_mechanism\",\n label: \"SASL Mechanism\",\n tooltip: \"SASL authentication mechanism, default 'PLAIN'\",\n type: \"string\",\n },\n {\n name: \"tls_client_auth\",\n label: \"TLS Client Auth\",\n tooltip:\n \"Client Auth determines the Kafka server's policy for TLS client authorization\",\n type: \"string\",\n placeholder: \"Enter TLS Client Auth\",\n },\n {\n name: \"sasl\",\n label: \"SASL\",\n tooltip: \"Set to 'on' to enable SASL authentication\",\n type: \"on|off\",\n },\n {\n name: \"tls\",\n label: \"TLS\",\n tooltip: \"Set to 'on' to enable TLS\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n label: \"TLS skip verify\",\n tooltip:\n 'Trust server TLS without verification, defaults to \"on\" (verify)',\n type: \"on|off\",\n },\n {\n name: \"client_tls_cert\",\n label: \"client TLS cert\",\n tooltip: \"Path to client certificate for mTLS authorization\",\n type: \"path\",\n placeholder: \"Enter TLS Client Cert\",\n },\n {\n name: \"client_tls_key\",\n label: \"client TLS key\",\n tooltip: \"Path to client key for mTLS authorization\",\n type: \"path\",\n placeholder: \"Enter TLS Client Key\",\n },\n {\n name: \"version\",\n label: \"Version\",\n tooltip: \"Specify the version of the Kafka cluster e.g '2.2.0'\",\n type: \"string\",\n placeholder: \"Enter Kafka Version\",\n },\n ...commonFields,\n ],\n [notifyAmqp]: [\n {\n name: \"url\",\n required: true,\n label: \"URL\",\n tooltip:\n \"AMQP server endpoint e.g. `amqp://myuser:mypassword@localhost:5672`\",\n type: \"url\",\n },\n {\n name: \"exchange\",\n label: \"Exchange\",\n tooltip: \"Name of the AMQP exchange\",\n type: \"string\",\n placeholder: \"Enter Exchange\",\n },\n {\n name: \"exchange_type\",\n label: \"Exchange Type\",\n tooltip: \"AMQP exchange type\",\n type: \"string\",\n placeholder: \"Enter Exchange Type\",\n },\n {\n name: \"routing_key\",\n label: \"Routing Key\",\n tooltip: \"Routing key for publishing\",\n type: \"string\",\n placeholder: \"Enter Routing Key\",\n },\n {\n name: \"mandatory\",\n label: \"Mandatory\",\n tooltip:\n \"Quietly ignore undelivered messages when set to 'off', default is 'on'\",\n type: \"on|off\",\n },\n {\n name: \"durable\",\n label: \"Durable\",\n tooltip:\n \"Persist queue across broker restarts when set to 'on', default is 'off'\",\n type: \"on|off\",\n },\n {\n name: \"no_wait\",\n label: \"No Wait\",\n tooltip:\n \"Non-blocking message delivery when set to 'on', default is 'off'\",\n type: \"on|off\",\n },\n {\n name: \"internal\",\n label: \"Internal\",\n tooltip:\n \"Set to 'on' for exchange to be not used directly by publishers, but only when bound to other exchanges\",\n type: \"on|off\",\n },\n {\n name: \"auto_deleted\",\n label: \"Auto Deleted\",\n tooltip:\n \"Auto delete queue when set to 'on', when there are no consumers\",\n type: \"on|off\",\n },\n {\n name: \"delivery_mode\",\n label: \"Delivery Mode\",\n tooltip: \"Set to '1' for non-persistent or '2' for persistent queue\",\n type: \"number\",\n placeholder: \"Enter Delivery Mode\",\n },\n ...commonFields,\n ],\n [notifyRedis]: [\n {\n name: \"address\",\n required: true,\n label: \"Address\",\n tooltip: \"Redis server's address e.g. `localhost:6379`\",\n type: \"address\",\n placeholder: \"Enter Address\",\n },\n {\n name: \"key\",\n required: true,\n label: \"Key\",\n tooltip: \"Redis key to store/update events, key is auto-created\",\n type: \"string\",\n placeholder: \"Enter Key\",\n },\n {\n name: \"password\",\n label: \"Password\",\n tooltip: \"Redis server password\",\n type: \"string\",\n placeholder: \"Enter Password\",\n },\n ...commonFields,\n ],\n [notifyMqtt]: [\n {\n name: \"broker\",\n required: true,\n label: \"Broker\",\n tooltip: \"MQTT server endpoint e.g. `tcp://localhost:1883`\",\n type: \"uri\",\n placeholder: \"Enter Brokers\",\n },\n {\n name: \"topic\",\n required: true,\n label: \"Topic\",\n tooltip: \"Name of the MQTT topic to publish\",\n type: \"string\",\n placeholder: \"Enter Topic\",\n },\n {\n name: \"username\",\n label: \"Username\",\n tooltip: \"MQTT username\",\n type: \"string\",\n placeholder: \"Enter Username\",\n },\n {\n name: \"password\",\n label: \"Password\",\n tooltip: \"MQTT password\",\n type: \"string\",\n placeholder: \"Enter Password\",\n },\n {\n name: \"qos\",\n label: \"QOS\",\n tooltip: \"Set the quality of service priority, defaults to '0'\",\n type: \"number\",\n placeholder: \"Enter QOS\",\n },\n {\n name: \"keep_alive_interval\",\n label: \"Keep Alive Interval\",\n tooltip: \"Keep-alive interval for MQTT connections in s,m,h,d\",\n type: \"duration\",\n placeholder: \"Enter Keep Alive Interval\",\n },\n {\n name: \"reconnect_interval\",\n label: \"Reconnect Interval\",\n tooltip: \"Reconnect interval for MQTT connections in s,m,h,d\",\n type: \"duration\",\n placeholder: \"Enter Reconnect Interval\",\n },\n ...commonFields,\n ],\n [notifyNats]: [\n {\n name: \"address\",\n required: true,\n label: \"Address\",\n tooltip: \"NATS server address e.g. '0.0.0.0:4222'\",\n type: \"address\",\n placeholder: \"Enter Address\",\n },\n {\n name: \"subject\",\n required: true,\n label: \"Subject\",\n tooltip: \"NATS subscription subject\",\n type: \"string\",\n placeholder: \"Enter NATS Subject\",\n },\n {\n name: \"username\",\n label: \"Username\",\n tooltip: \"NATS username\",\n type: \"string\",\n placeholder: \"Enter NATS Username\",\n },\n {\n name: \"password\",\n label: \"Password\",\n tooltip: \"NATS password\",\n type: \"string\",\n placeholder: \"Enter NATS password\",\n },\n {\n name: \"token\",\n label: \"Token\",\n tooltip: \"NATS token\",\n type: \"string\",\n placeholder: \"Enter NATS token\",\n },\n {\n name: \"tls\",\n label: \"TLS\",\n tooltip: \"Set to 'on' to enable TLS\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n label: \"TLS Skip Verify\",\n tooltip:\n 'Trust server TLS without verification, defaults to \"on\" (verify)',\n type: \"on|off\",\n },\n {\n name: \"ping_interval\",\n label: \"Ping Interval\",\n tooltip: \"Client ping commands interval in s,m,h,d. Disabled by default\",\n type: \"duration\",\n placeholder: \"Enter Ping Interval\",\n },\n {\n name: \"streaming\",\n label: \"Streaming\",\n tooltip: \"Set to 'on' to use streaming NATS server\",\n type: \"on|off\",\n },\n {\n name: \"streaming_async\",\n label: \"Streaming async\",\n tooltip: \"Set to 'on' to enable asynchronous publish\",\n type: \"on|off\",\n },\n {\n name: \"streaming_max_pub_acks_in_flight\",\n label: \"Streaming max publish ACKS in flight\",\n tooltip: \"Number of messages to publish without waiting for ACKs\",\n type: \"number\",\n placeholder: \"Enter Streaming in flight value\",\n },\n {\n name: \"streaming_cluster_id\",\n label: \"Streaming Cluster ID\",\n tooltip: \"Unique ID for NATS streaming cluster\",\n type: \"string\",\n placeholder: \"Enter Streaming Cluster ID\",\n },\n {\n name: \"cert_authority\",\n label: \"Cert Authority\",\n tooltip: \"Path to certificate chain of the target NATS server\",\n type: \"string\",\n placeholder: \"Enter Cert Authority\",\n },\n {\n name: \"client_cert\",\n label: \"Client Cert\",\n tooltip: \"Client cert for NATS mTLS auth\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_key\",\n label: \"Client Key\",\n tooltip: \"Client cert key for NATS mTLS authorization\",\n type: \"string\",\n placeholder: \"Enter Client Key\",\n },\n ...commonFields,\n ],\n [notifyElasticsearch]: [\n {\n name: \"url\",\n required: true,\n label: \"URL\",\n tooltip:\n \"Elasticsearch server's address, with optional authentication info\",\n type: \"url\",\n placeholder: \"Enter URL\",\n },\n {\n name: \"index\",\n required: true,\n label: \"Index\",\n tooltip:\n \"Elasticsearch index to store/update events, index is auto-created\",\n type: \"string\",\n placeholder: \"Enter Index\",\n },\n {\n name: \"format\",\n required: true,\n label: \"Format\",\n tooltip:\n \"'namespace' reflects current bucket/object list and 'access' reflects a journal of object operations, defaults to 'namespace'\",\n type: \"enum\",\n placeholder: \"Enter Format\",\n },\n ...commonFields,\n ],\n [notifyWebhooks]: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n tooltip:\n \"Webhook server endpoint e.g. http://localhost:8080/minio/events\",\n type: \"url\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n label: \"Auth Token\",\n tooltip: \"Opaque string or JWT authorization token\",\n type: \"string\",\n placeholder: \"Enter auth_token\",\n },\n ...commonFields,\n ],\n [notifyNsq]: [\n {\n name: \"nsqd_address\",\n required: true,\n label: \"NSQD Address\",\n tooltip: \"NSQ server address e.g. '127.0.0.1:4150'\",\n type: \"address\",\n placeholder: \"Enter nsqd_address\",\n },\n {\n name: \"topic\",\n required: true,\n label: \"Topic\",\n tooltip: \"NSQ topic\",\n type: \"string\",\n placeholder: \"Enter Topic\",\n },\n {\n name: \"tls\",\n label: \"TLS\",\n tooltip: \"Set to 'on' to enable TLS\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n label: \"TLS Skip Verify\",\n tooltip:\n 'Trust server TLS without verification, defaults to \"on\" (verify)',\n type: \"on|off\",\n },\n ...commonFields,\n ],\n};\n\nconst serviceToConfigMap: Record = {\n webhook: \"notify_webhook\",\n amqp: \"notify_amqp\",\n kafka: \"notify_kafka\",\n mqtt: \"notify_mqtt\",\n nats: \"notify_nats\",\n nsq: \"notify_nsq\",\n mysql: \"notify_mysql\",\n postgresql: \"notify_postgres\", //looks different in server response(postgresql as opposed to postgres) from restapi/admin_notification_endpoints.go\n elasticsearch: \"notify_elasticsearch\",\n redis: \"notify_redis\",\n};\n\nexport const getNotificationConfigKey = (serviceName: string) => {\n return serviceToConfigMap[serviceName];\n};\n","\"use strict\";\n\"use client\";\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)(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"8\"\n}), 'FiberManualRecord');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n var _muiName, _element$type;\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf( // For server components `muiName` is avaialble in element.type._payload.value.muiName\n // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45\n // eslint-disable-next-line no-underscore-dangle\n (_muiName = element.type.muiName) != null ? _muiName : (_element$type = element.type) == null || (_element$type = _element$type._payload) == null || (_element$type = _element$type.value) == null ? void 0 : _element$type.muiName) !== -1;\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["_ref","onConfirm","onClose","serviceName","status","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmModalIcon","isLoading","confirmationContent","_jsxs","React","children","withStyles","theme","createStyles","_objectSpread","actionsTray","settingsCommon","containerForHeader","tableBlock","tableStyles","rightActionItems","display","alignItems","whiteSpace","searchField","maxWidth","classes","dispatch","useAppDispatch","navigate","useNavigate","useSelector","state","destination","loading","_useState","useState","_useState2","_slicedToArray","records","setRecords","_useState3","_useState4","filter","setFilter","_useState5","_useState6","isDelConfirmOpen","setIsDelConfirmOpen","_useState7","_useState8","selNotifyEndPoint","setSelNotifyEndpoint","useEffect","api","admin","notificationEndpointList","then","res","resNotEndList","data","notification_endpoints","notificationTransform","setDestinationLoading","catch","err","setErrorSnackMessage","errorToHandler","error","tableActions","type","onClick","record","filteredRecords","b","service_name","indexOf","Fragment","PageLayout","Grid","container","sx","width","item","xs","className","SearchBox","placeholder","onChange","overrideClass","value","TooltipWrapper","tooltip","Button","id","label","variant","icon","RefreshIcon","AddIcon","IAM_PAGES","EVENT_DESTINATIONS_ADD","ProgressBar","length","Box","DataTable","itemActions","columns","elementKey","renderFunction","style","FiberManualRecordIcon","color","red","entityName","idField","customPaperHeight","marginTop","HelpBox","iconComponent","LambdaIcon","help","href","target","rel","justifyContent","alignContent","AButton","ConfirmDeleteDestinationModal","ep","name","configKey","getNotificationConfigKey","accountId","concat","account_id","configs","resetConfig","setServerNeedsRestart","console","log","resetNotificationConfig","notifyPostgres","notifyMysql","notifyKafka","notifyAmqp","notifyMqtt","notifyRedis","notifyNats","notifyElasticsearch","notifyWebhooks","notifyNsq","notificationElements","map","element","service","DestType","_createClass","_classCallCheck","DB","Queue","Func","destinationList","actionTrigger","targetTitle","logo","category","commonFields","required","removeEmptyFields","formFields","field","notificationEndpointsFields","_notificationEndpoint","_defineProperty","serviceToConfigMap","webhook","amqp","kafka","mqtt","nats","nsq","mysql","postgresql","elasticsearch","redis","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","cx","cy","r","Object","defineProperty","enumerable","get","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","props","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","muiNames","_muiName","_element$type","muiName","_payload","_len","arguments","funcs","Array","_key","reduce","acc","func","_len2","args","_key2","apply","this","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/6686.aad068b5.chunk.js.map b/portal-ui/build/static/js/6686.aad068b5.chunk.js.map deleted file mode 100644 index 43d10df69a..0000000000 --- a/portal-ui/build/static/js/6686.aad068b5.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/6686.aad068b5.chunk.js","mappings":"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","sources":["screens/Console/EventDestinations/ConfirmDeleteDestinationModal.tsx","screens/Console/EventDestinations/ListEventDestinations.tsx","screens/Console/EventDestinations/utils.ts","../node_modules/@mui/icons-material/FiberManualRecord.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/esm/deprecatedPropType.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/esm/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/esm/unsupportedProp.js","../node_modules/@mui/material/utils/index.js","../node_modules/@mui/material/utils/isMuiElement.js","../node_modules/@mui/utils/esm/isMuiElement.js","../node_modules/@mui/utils/esm/createChainedFunction.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmModalIcon } from \"mds\";\n\nconst ConfirmDeleteDestinationModal = ({\n onConfirm,\n onClose,\n serviceName,\n status,\n}: {\n onConfirm: () => void;\n onClose: () => void;\n serviceName: string;\n status: string;\n}) => {\n return (\n }\n isLoading={false}\n onConfirm={onConfirm}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the event destination ?\n
    \n {serviceName} which is {status}\n
    \n }\n />\n );\n};\n\nexport default ConfirmDeleteDestinationModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport {\n AddIcon,\n Box,\n Button,\n DataTable,\n Grid,\n HelpBox,\n LambdaIcon,\n PageLayout,\n ProgressBar,\n RefreshIcon,\n} from \"mds\";\nimport { useNavigate } from \"react-router-dom\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\nimport { red } from \"@mui/material/colors\";\nimport FiberManualRecordIcon from \"@mui/icons-material/FiberManualRecord\";\nimport { TransformedEndpointItem } from \"./types\";\nimport { getNotificationConfigKey, notificationTransform } from \"./utils\";\n\nimport {\n actionsTray,\n containerForHeader,\n searchField,\n settingsCommon,\n tableStyles,\n} from \"../Common/FormComponents/common/styleLibrary\";\nimport AButton from \"../Common/AButton/AButton\";\nimport SearchBox from \"../Common/SearchBox\";\n\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport {\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport ConfirmDeleteDestinationModal from \"./ConfirmDeleteDestinationModal\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport { useSelector } from \"react-redux\";\nimport { setDestinationLoading } from \"./destinationsSlice\";\nimport { api } from \"api\";\nimport { NotificationEndpointItem } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IListNotificationEndpoints {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...actionsTray,\n ...settingsCommon,\n ...containerForHeader,\n tableBlock: {\n ...tableStyles.tableBlock,\n },\n rightActionItems: {\n display: \"flex\",\n alignItems: \"center\",\n \"& button\": {\n whiteSpace: \"nowrap\",\n },\n },\n searchField: {\n ...searchField.searchField,\n maxWidth: 380,\n },\n });\n\nconst ListEventDestinations = ({ classes }: IListNotificationEndpoints) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n // Reducer States\n const isLoading = useSelector((state: AppState) => state.destination.loading);\n\n //Local States\n const [records, setRecords] = useState([]);\n const [filter, setFilter] = useState(\"\");\n\n const [isDelConfirmOpen, setIsDelConfirmOpen] = useState(false);\n const [selNotifyEndPoint, setSelNotifyEndpoint] =\n useState();\n\n //Effects\n // load records on mount\n useEffect(() => {\n if (isLoading) {\n const fetchRecords = () => {\n api.admin\n .notificationEndpointList()\n .then((res) => {\n let resNotEndList: NotificationEndpointItem[] = [];\n if (res.data.notification_endpoints) {\n resNotEndList = res.data.notification_endpoints;\n }\n setRecords(notificationTransform(resNotEndList));\n dispatch(setDestinationLoading(false));\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n dispatch(setDestinationLoading(false));\n });\n };\n fetchRecords();\n }\n }, [isLoading, dispatch]);\n\n useEffect(() => {\n dispatch(setDestinationLoading(true));\n }, [dispatch]);\n\n const resetNotificationConfig = (\n ep: TransformedEndpointItem | undefined | null,\n ) => {\n if (ep?.name) {\n const configKey = getNotificationConfigKey(ep.name);\n let accountId = `:${ep.account_id}`;\n if (configKey) {\n api.configs\n .resetConfig(`${configKey}${accountId}`)\n .then(() => {\n dispatch(setServerNeedsRestart(true));\n setSelNotifyEndpoint(null);\n setIsDelConfirmOpen(false);\n dispatch(setDestinationLoading(true));\n })\n .catch((err) => {\n setIsDelConfirmOpen(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n } else {\n setSelNotifyEndpoint(null);\n setIsDelConfirmOpen(false);\n console.log(`Unable to find Config key for ${ep.name}`);\n }\n }\n };\n\n const confirmDelNotifyEndpoint = (record: TransformedEndpointItem) => {\n setSelNotifyEndpoint(record);\n setIsDelConfirmOpen(true);\n };\n\n const tableActions = [{ type: \"delete\", onClick: confirmDelNotifyEndpoint }];\n\n const filteredRecords = records.filter((b: TransformedEndpointItem) => {\n if (filter === \"\") {\n return true;\n }\n return b.service_name.indexOf(filter) >= 0;\n });\n\n const statusDisplay = (status: string) => {\n return (\n \n \n {status}\n \n );\n };\n\n return (\n \n \n \n \n \n
    \n \n }\n onClick={() => {\n dispatch(setDestinationLoading(true));\n }}\n />\n \n \n }\n onClick={() => {\n navigate(IAM_PAGES.EVENT_DESTINATIONS_ADD);\n }}\n />\n \n
    \n
    \n {isLoading && }\n {!isLoading && (\n \n {records.length > 0 && (\n \n \n \n \n \n \n \n }\n help={\n \n MinIO bucket notifications allow administrators to\n send notifications to supported external services on\n certain object or bucket events. MinIO supports bucket\n and object-level S3 events similar to the Amazon S3\n Event Notifications.\n
    \n
    \n You can learn more at our{\" \"}\n \n documentation\n \n .\n
    \n }\n />\n
    \n
    \n )}\n {records.length === 0 && (\n \n \n }\n help={\n \n MinIO bucket notifications allow administrators to\n send notifications to supported external services on\n certain object or bucket events. MinIO supports bucket\n and object-level S3 events similar to the Amazon S3\n Event Notifications.\n
    \n
    \n To get started,{\" \"}\n {\n navigate(IAM_PAGES.EVENT_DESTINATIONS_ADD);\n }}\n >\n Add an Event Destination\n \n .\n
    \n }\n />\n
    \n
    \n )}\n
    \n )}\n\n {isDelConfirmOpen ? (\n {\n resetNotificationConfig(selNotifyEndPoint);\n }}\n status={`${selNotifyEndPoint?.status}`}\n serviceName={`${selNotifyEndPoint?.service_name}`}\n onClose={() => {\n setIsDelConfirmOpen(false);\n }}\n />\n ) : null}\n \n \n \n );\n};\n\nexport default withStyles(styles)(ListEventDestinations);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { NotificationEndpointItem } from \"api/consoleApi\";\nimport { IElementValue } from \"../Configurations/types\";\nimport { TransformedEndpointItem } from \"./types\";\n\nexport const notifyPostgres = \"notify_postgres\";\nexport const notifyMysql = \"notify_mysql\";\nexport const notifyKafka = \"notify_kafka\";\nexport const notifyAmqp = \"notify_amqp\";\nexport const notifyMqtt = \"notify_mqtt\";\nexport const notifyRedis = \"notify_redis\";\nexport const notifyNats = \"notify_nats\";\nexport const notifyElasticsearch = \"notify_elasticsearch\";\nexport const notifyWebhooks = \"notify_webhook\";\nexport const notifyNsq = \"notify_nsq\";\n\nexport const notificationTransform = (\n notificationElements: NotificationEndpointItem[],\n) => {\n return notificationElements.map((element) => {\n return {\n service_name: `${element.service}:${element.account_id}`,\n name: element.service,\n account_id: element.account_id,\n status: element.status,\n };\n }) as TransformedEndpointItem[];\n};\n\nexport class DestType {\n static DB: string = \"database\";\n static Queue: string = \"queue\";\n static Func: string = \"functions\";\n}\n\nexport const destinationList = [\n {\n actionTrigger: notifyPostgres,\n targetTitle: \"PostgreSQL\",\n logo: \"/postgres-logo.svg\",\n category: DestType.DB,\n },\n {\n actionTrigger: notifyKafka,\n targetTitle: \"Kafka\",\n logo: \"/kafka-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyAmqp,\n targetTitle: \"AMQP\",\n logo: \"/amqp-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyMqtt,\n targetTitle: \"MQTT\",\n logo: \"/mqtt-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyRedis,\n targetTitle: \"Redis\",\n logo: \"/redis-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyNats,\n targetTitle: \"NATS\",\n logo: \"/nats-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyMysql,\n targetTitle: \"Mysql\",\n logo: \"/mysql-logo.svg\",\n category: DestType.DB,\n },\n {\n actionTrigger: notifyElasticsearch,\n targetTitle: \"Elastic Search\",\n logo: \"/elasticsearch-logo.svg\",\n category: DestType.DB,\n },\n {\n actionTrigger: notifyWebhooks,\n targetTitle: \"Webhook\",\n logo: \"/webhooks-logo.svg\",\n category: DestType.Func,\n },\n {\n actionTrigger: notifyNsq,\n targetTitle: \"NSQ\",\n logo: \"/nsq-logo.svg\",\n category: DestType.Queue,\n },\n];\n\nconst commonFields = [\n {\n name: \"queue_dir\",\n label: \"Queue Directory\",\n required: false,\n\n tooltip: \"Staging directory for undelivered messages e.g. '/home/events'\",\n type: \"string\",\n placeholder: \"Enter Queue Directory\",\n },\n {\n name: \"queue_limit\",\n label: \"Queue Limit\",\n required: false,\n\n tooltip: \"Maximum limit for undelivered messages, defaults to '10000'\",\n type: \"number\",\n placeholder: \"Enter Queue Limit\",\n },\n {\n name: \"comment\",\n label: \"Comment\",\n required: false,\n type: \"comment\",\n placeholder: \"Enter custom notes if any\",\n },\n];\n\nexport const removeEmptyFields = (formFields: IElementValue[]) => {\n const nonEmptyFields = formFields.filter((field) => field.value !== \"\");\n\n return nonEmptyFields;\n};\n\nexport const notificationEndpointsFields: any = {\n [notifyKafka]: [\n {\n name: \"brokers\",\n label: \"Brokers\",\n required: true,\n\n tooltip: \"Comma separated list of Kafka broker addresses\",\n type: \"string\",\n placeholder: \"Enter Brokers\",\n },\n {\n name: \"topic\",\n label: \"Topic\",\n tooltip: \"Kafka topic used for bucket notifications\",\n type: \"string\",\n placeholder: \"Enter Topic\",\n },\n {\n name: \"sasl_username\",\n label: \"SASL Username\",\n tooltip: \"Username for SASL/PLAIN or SASL/SCRAM authentication\",\n type: \"string\",\n placeholder: \"Enter SASL Username\",\n },\n {\n name: \"sasl_password\",\n label: \"SASL Password\",\n tooltip: \"Password for SASL/PLAIN or SASL/SCRAM authentication\",\n type: \"string\",\n placeholder: \"Enter SASL Password\",\n },\n {\n name: \"sasl_mechanism\",\n label: \"SASL Mechanism\",\n tooltip: \"SASL authentication mechanism, default 'PLAIN'\",\n type: \"string\",\n },\n {\n name: \"tls_client_auth\",\n label: \"TLS Client Auth\",\n tooltip:\n \"Client Auth determines the Kafka server's policy for TLS client authorization\",\n type: \"string\",\n placeholder: \"Enter TLS Client Auth\",\n },\n {\n name: \"sasl\",\n label: \"SASL\",\n tooltip: \"Set to 'on' to enable SASL authentication\",\n type: \"on|off\",\n },\n {\n name: \"tls\",\n label: \"TLS\",\n tooltip: \"Set to 'on' to enable TLS\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n label: \"TLS skip verify\",\n tooltip:\n 'Trust server TLS without verification, defaults to \"on\" (verify)',\n type: \"on|off\",\n },\n {\n name: \"client_tls_cert\",\n label: \"client TLS cert\",\n tooltip: \"Path to client certificate for mTLS authorization\",\n type: \"path\",\n placeholder: \"Enter TLS Client Cert\",\n },\n {\n name: \"client_tls_key\",\n label: \"client TLS key\",\n tooltip: \"Path to client key for mTLS authorization\",\n type: \"path\",\n placeholder: \"Enter TLS Client Key\",\n },\n {\n name: \"version\",\n label: \"Version\",\n tooltip: \"Specify the version of the Kafka cluster e.g '2.2.0'\",\n type: \"string\",\n placeholder: \"Enter Kafka Version\",\n },\n ...commonFields,\n ],\n [notifyAmqp]: [\n {\n name: \"url\",\n required: true,\n label: \"URL\",\n tooltip:\n \"AMQP server endpoint e.g. `amqp://myuser:mypassword@localhost:5672`\",\n type: \"url\",\n },\n {\n name: \"exchange\",\n label: \"Exchange\",\n tooltip: \"Name of the AMQP exchange\",\n type: \"string\",\n placeholder: \"Enter Exchange\",\n },\n {\n name: \"exchange_type\",\n label: \"Exchange Type\",\n tooltip: \"AMQP exchange type\",\n type: \"string\",\n placeholder: \"Enter Exchange Type\",\n },\n {\n name: \"routing_key\",\n label: \"Routing Key\",\n tooltip: \"Routing key for publishing\",\n type: \"string\",\n placeholder: \"Enter Routing Key\",\n },\n {\n name: \"mandatory\",\n label: \"Mandatory\",\n tooltip:\n \"Quietly ignore undelivered messages when set to 'off', default is 'on'\",\n type: \"on|off\",\n },\n {\n name: \"durable\",\n label: \"Durable\",\n tooltip:\n \"Persist queue across broker restarts when set to 'on', default is 'off'\",\n type: \"on|off\",\n },\n {\n name: \"no_wait\",\n label: \"No Wait\",\n tooltip:\n \"Non-blocking message delivery when set to 'on', default is 'off'\",\n type: \"on|off\",\n },\n {\n name: \"internal\",\n label: \"Internal\",\n tooltip:\n \"Set to 'on' for exchange to be not used directly by publishers, but only when bound to other exchanges\",\n type: \"on|off\",\n },\n {\n name: \"auto_deleted\",\n label: \"Auto Deleted\",\n tooltip:\n \"Auto delete queue when set to 'on', when there are no consumers\",\n type: \"on|off\",\n },\n {\n name: \"delivery_mode\",\n label: \"Delivery Mode\",\n tooltip: \"Set to '1' for non-persistent or '2' for persistent queue\",\n type: \"number\",\n placeholder: \"Enter Delivery Mode\",\n },\n ...commonFields,\n ],\n [notifyRedis]: [\n {\n name: \"address\",\n required: true,\n label: \"Address\",\n tooltip: \"Redis server's address e.g. `localhost:6379`\",\n type: \"address\",\n placeholder: \"Enter Address\",\n },\n {\n name: \"key\",\n required: true,\n label: \"Key\",\n tooltip: \"Redis key to store/update events, key is auto-created\",\n type: \"string\",\n placeholder: \"Enter Key\",\n },\n {\n name: \"password\",\n label: \"Password\",\n tooltip: \"Redis server password\",\n type: \"string\",\n placeholder: \"Enter Password\",\n },\n ...commonFields,\n ],\n [notifyMqtt]: [\n {\n name: \"broker\",\n required: true,\n label: \"Broker\",\n tooltip: \"MQTT server endpoint e.g. `tcp://localhost:1883`\",\n type: \"uri\",\n placeholder: \"Enter Brokers\",\n },\n {\n name: \"topic\",\n required: true,\n label: \"Topic\",\n tooltip: \"Name of the MQTT topic to publish\",\n type: \"string\",\n placeholder: \"Enter Topic\",\n },\n {\n name: \"username\",\n label: \"Username\",\n tooltip: \"MQTT username\",\n type: \"string\",\n placeholder: \"Enter Username\",\n },\n {\n name: \"password\",\n label: \"Password\",\n tooltip: \"MQTT password\",\n type: \"string\",\n placeholder: \"Enter Password\",\n },\n {\n name: \"qos\",\n label: \"QOS\",\n tooltip: \"Set the quality of service priority, defaults to '0'\",\n type: \"number\",\n placeholder: \"Enter QOS\",\n },\n {\n name: \"keep_alive_interval\",\n label: \"Keep Alive Interval\",\n tooltip: \"Keep-alive interval for MQTT connections in s,m,h,d\",\n type: \"duration\",\n placeholder: \"Enter Keep Alive Interval\",\n },\n {\n name: \"reconnect_interval\",\n label: \"Reconnect Interval\",\n tooltip: \"Reconnect interval for MQTT connections in s,m,h,d\",\n type: \"duration\",\n placeholder: \"Enter Reconnect Interval\",\n },\n ...commonFields,\n ],\n [notifyNats]: [\n {\n name: \"address\",\n required: true,\n label: \"Address\",\n tooltip: \"NATS server address e.g. '0.0.0.0:4222'\",\n type: \"address\",\n placeholder: \"Enter Address\",\n },\n {\n name: \"subject\",\n required: true,\n label: \"Subject\",\n tooltip: \"NATS subscription subject\",\n type: \"string\",\n placeholder: \"Enter NATS Subject\",\n },\n {\n name: \"username\",\n label: \"Username\",\n tooltip: \"NATS username\",\n type: \"string\",\n placeholder: \"Enter NATS Username\",\n },\n {\n name: \"password\",\n label: \"Password\",\n tooltip: \"NATS password\",\n type: \"string\",\n placeholder: \"Enter NATS password\",\n },\n {\n name: \"token\",\n label: \"Token\",\n tooltip: \"NATS token\",\n type: \"string\",\n placeholder: \"Enter NATS token\",\n },\n {\n name: \"tls\",\n label: \"TLS\",\n tooltip: \"Set to 'on' to enable TLS\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n label: \"TLS Skip Verify\",\n tooltip:\n 'Trust server TLS without verification, defaults to \"on\" (verify)',\n type: \"on|off\",\n },\n {\n name: \"ping_interval\",\n label: \"Ping Interval\",\n tooltip: \"Client ping commands interval in s,m,h,d. Disabled by default\",\n type: \"duration\",\n placeholder: \"Enter Ping Interval\",\n },\n {\n name: \"streaming\",\n label: \"Streaming\",\n tooltip: \"Set to 'on' to use streaming NATS server\",\n type: \"on|off\",\n },\n {\n name: \"streaming_async\",\n label: \"Streaming async\",\n tooltip: \"Set to 'on' to enable asynchronous publish\",\n type: \"on|off\",\n },\n {\n name: \"streaming_max_pub_acks_in_flight\",\n label: \"Streaming max publish ACKS in flight\",\n tooltip: \"Number of messages to publish without waiting for ACKs\",\n type: \"number\",\n placeholder: \"Enter Streaming in flight value\",\n },\n {\n name: \"streaming_cluster_id\",\n label: \"Streaming Cluster ID\",\n tooltip: \"Unique ID for NATS streaming cluster\",\n type: \"string\",\n placeholder: \"Enter Streaming Cluster ID\",\n },\n {\n name: \"cert_authority\",\n label: \"Cert Authority\",\n tooltip: \"Path to certificate chain of the target NATS server\",\n type: \"string\",\n placeholder: \"Enter Cert Authority\",\n },\n {\n name: \"client_cert\",\n label: \"Client Cert\",\n tooltip: \"Client cert for NATS mTLS auth\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_key\",\n label: \"Client Key\",\n tooltip: \"Client cert key for NATS mTLS authorization\",\n type: \"string\",\n placeholder: \"Enter Client Key\",\n },\n ...commonFields,\n ],\n [notifyElasticsearch]: [\n {\n name: \"url\",\n required: true,\n label: \"URL\",\n tooltip:\n \"Elasticsearch server's address, with optional authentication info\",\n type: \"url\",\n placeholder: \"Enter URL\",\n },\n {\n name: \"index\",\n required: true,\n label: \"Index\",\n tooltip:\n \"Elasticsearch index to store/update events, index is auto-created\",\n type: \"string\",\n placeholder: \"Enter Index\",\n },\n {\n name: \"format\",\n required: true,\n label: \"Format\",\n tooltip:\n \"'namespace' reflects current bucket/object list and 'access' reflects a journal of object operations, defaults to 'namespace'\",\n type: \"enum\",\n placeholder: \"Enter Format\",\n },\n ...commonFields,\n ],\n [notifyWebhooks]: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n tooltip:\n \"Webhook server endpoint e.g. http://localhost:8080/minio/events\",\n type: \"url\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n label: \"Auth Token\",\n tooltip: \"Opaque string or JWT authorization token\",\n type: \"string\",\n placeholder: \"Enter auth_token\",\n },\n ...commonFields,\n ],\n [notifyNsq]: [\n {\n name: \"nsqd_address\",\n required: true,\n label: \"NSQD Address\",\n tooltip: \"NSQ server address e.g. '127.0.0.1:4150'\",\n type: \"address\",\n placeholder: \"Enter nsqd_address\",\n },\n {\n name: \"topic\",\n required: true,\n label: \"Topic\",\n tooltip: \"NSQ topic\",\n type: \"string\",\n placeholder: \"Enter Topic\",\n },\n {\n name: \"tls\",\n label: \"TLS\",\n tooltip: \"Set to 'on' to enable TLS\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n label: \"TLS Skip Verify\",\n tooltip:\n 'Trust server TLS without verification, defaults to \"on\" (verify)',\n type: \"on|off\",\n },\n ...commonFields,\n ],\n};\n\nconst serviceToConfigMap: Record = {\n webhook: \"notify_webhook\",\n amqp: \"notify_amqp\",\n kafka: \"notify_kafka\",\n mqtt: \"notify_mqtt\",\n nats: \"notify_nats\",\n nsq: \"notify_nsq\",\n mysql: \"notify_mysql\",\n postgresql: \"notify_postgres\", //looks different in server response(postgresql as opposed to postgres) from restapi/admin_notification_endpoints.go\n elasticsearch: \"notify_elasticsearch\",\n redis: \"notify_redis\",\n};\n\nexport const getNotificationConfigKey = (serviceName: string) => {\n return serviceToConfigMap[serviceName];\n};\n","\"use strict\";\n\"use client\";\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)(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"8\"\n}), 'FiberManualRecord');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1;\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["_ref","onConfirm","onClose","serviceName","status","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmModalIcon","isLoading","confirmationContent","_jsxs","React","children","withStyles","theme","createStyles","_objectSpread","actionsTray","settingsCommon","containerForHeader","tableBlock","tableStyles","rightActionItems","display","alignItems","whiteSpace","searchField","maxWidth","classes","dispatch","useAppDispatch","navigate","useNavigate","useSelector","state","destination","loading","_useState","useState","_useState2","_slicedToArray","records","setRecords","_useState3","_useState4","filter","setFilter","_useState5","_useState6","isDelConfirmOpen","setIsDelConfirmOpen","_useState7","_useState8","selNotifyEndPoint","setSelNotifyEndpoint","useEffect","api","admin","notificationEndpointList","then","res","resNotEndList","data","notification_endpoints","notificationTransform","setDestinationLoading","catch","err","setErrorSnackMessage","errorToHandler","error","tableActions","type","onClick","record","filteredRecords","b","service_name","indexOf","Fragment","PageLayout","Grid","container","sx","width","item","xs","className","SearchBox","placeholder","onChange","overrideClass","value","TooltipWrapper","tooltip","Button","id","label","variant","icon","RefreshIcon","AddIcon","IAM_PAGES","EVENT_DESTINATIONS_ADD","ProgressBar","length","Box","DataTable","itemActions","columns","elementKey","renderFunction","style","FiberManualRecordIcon","color","red","entityName","idField","customPaperHeight","marginTop","HelpBox","iconComponent","LambdaIcon","help","href","target","rel","justifyContent","alignContent","AButton","ConfirmDeleteDestinationModal","ep","name","configKey","getNotificationConfigKey","accountId","concat","account_id","configs","resetConfig","setServerNeedsRestart","console","log","resetNotificationConfig","notifyPostgres","notifyMysql","notifyKafka","notifyAmqp","notifyMqtt","notifyRedis","notifyNats","notifyElasticsearch","notifyWebhooks","notifyNsq","notificationElements","map","element","service","DestType","_createClass","_classCallCheck","DB","Queue","Func","destinationList","actionTrigger","targetTitle","logo","category","commonFields","required","removeEmptyFields","formFields","field","notificationEndpointsFields","_notificationEndpoint","_defineProperty","serviceToConfigMap","webhook","amqp","kafka","mqtt","nats","nsq","mysql","postgresql","elasticsearch","redis","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","cx","cy","r","Object","defineProperty","enumerable","get","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","props","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","muiNames","muiName","_len","arguments","funcs","Array","_key","reduce","acc","func","_len2","args","_key2","apply","this","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/6786.1f6da6c6.chunk.js.map b/portal-ui/build/static/js/6786.1f6da6c6.chunk.js.map index 6c5623afd8..945b58a442 100644 --- a/portal-ui/build/static/js/6786.1f6da6c6.chunk.js.map +++ b/portal-ui/build/static/js/6786.1f6da6c6.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/6786.1f6da6c6.chunk.js","mappings":"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","sources":["../node_modules/@mui/base/useAutocomplete/useAutocomplete.js","../node_modules/@mui/material/ListSubheader/listSubheaderClasses.js","../node_modules/@mui/material/ListSubheader/ListSubheader.js","../node_modules/@mui/material/internal/svg-icons/Close.js","../node_modules/@mui/material/Autocomplete/autocompleteClasses.js","../node_modules/@mui/material/Autocomplete/Autocomplete.js"],"sourcesContent":["'use client';\n\n/* eslint-disable no-constant-condition */\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { unstable_setRef as setRef, unstable_useEventCallback as useEventCallback, unstable_useControlled as useControlled, unstable_useId as useId, usePreviousProps } from '@mui/utils';\n\n// https://stackoverflow.com/questions/990904/remove-accents-diacritics-in-a-string-in-javascript\n// Give up on IE11 support for this feature\nfunction stripDiacritics(string) {\n return typeof string.normalize !== 'undefined' ? string.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') : string;\n}\nexport function createFilterOptions(config = {}) {\n const {\n ignoreAccents = true,\n ignoreCase = true,\n limit,\n matchFrom = 'any',\n stringify,\n trim = false\n } = config;\n return (options, {\n inputValue,\n getOptionLabel\n }) => {\n let input = trim ? inputValue.trim() : inputValue;\n if (ignoreCase) {\n input = input.toLowerCase();\n }\n if (ignoreAccents) {\n input = stripDiacritics(input);\n }\n const filteredOptions = !input ? options : options.filter(option => {\n let candidate = (stringify || getOptionLabel)(option);\n if (ignoreCase) {\n candidate = candidate.toLowerCase();\n }\n if (ignoreAccents) {\n candidate = stripDiacritics(candidate);\n }\n return matchFrom === 'start' ? candidate.indexOf(input) === 0 : candidate.indexOf(input) > -1;\n });\n return typeof limit === 'number' ? filteredOptions.slice(0, limit) : filteredOptions;\n };\n}\n\n// To replace with .findIndex() once we stop IE11 support.\nfunction findIndex(array, comp) {\n for (let i = 0; i < array.length; i += 1) {\n if (comp(array[i])) {\n return i;\n }\n }\n return -1;\n}\nconst defaultFilterOptions = createFilterOptions();\n\n// Number of options to jump in list box when `Page Up` and `Page Down` keys are used.\nconst pageSize = 5;\nconst defaultIsActiveElementInListbox = listboxRef => {\n var _listboxRef$current$p;\n return listboxRef.current !== null && ((_listboxRef$current$p = listboxRef.current.parentElement) == null ? void 0 : _listboxRef$current$p.contains(document.activeElement));\n};\nexport function useAutocomplete(props) {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n unstable_isActiveElementInListbox = defaultIsActiveElementInListbox,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n unstable_classNamePrefix = 'Mui',\n autoComplete = false,\n autoHighlight = false,\n autoSelect = false,\n blurOnSelect = false,\n clearOnBlur = !props.freeSolo,\n clearOnEscape = false,\n componentName = 'useAutocomplete',\n defaultValue = props.multiple ? [] : null,\n disableClearable = false,\n disableCloseOnSelect = false,\n disabled: disabledProp,\n disabledItemsFocusable = false,\n disableListWrap = false,\n filterOptions = defaultFilterOptions,\n filterSelectedOptions = false,\n freeSolo = false,\n getOptionDisabled,\n getOptionLabel: getOptionLabelProp = option => {\n var _option$label;\n return (_option$label = option.label) != null ? _option$label : option;\n },\n groupBy,\n handleHomeEndKeys = !props.freeSolo,\n id: idProp,\n includeInputInList = false,\n inputValue: inputValueProp,\n isOptionEqualToValue = (option, value) => option === value,\n multiple = false,\n onChange,\n onClose,\n onHighlightChange,\n onInputChange,\n onOpen,\n open: openProp,\n openOnFocus = false,\n options,\n readOnly = false,\n selectOnFocus = !props.freeSolo,\n value: valueProp\n } = props;\n const id = useId(idProp);\n let getOptionLabel = getOptionLabelProp;\n getOptionLabel = option => {\n const optionLabel = getOptionLabelProp(option);\n if (typeof optionLabel !== 'string') {\n if (process.env.NODE_ENV !== 'production') {\n const erroneousReturn = optionLabel === undefined ? 'undefined' : `${typeof optionLabel} (${optionLabel})`;\n console.error(`MUI: The \\`getOptionLabel\\` method of ${componentName} returned ${erroneousReturn} instead of a string for ${JSON.stringify(option)}.`);\n }\n return String(optionLabel);\n }\n return optionLabel;\n };\n const ignoreFocus = React.useRef(false);\n const firstFocus = React.useRef(true);\n const inputRef = React.useRef(null);\n const listboxRef = React.useRef(null);\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [focusedTag, setFocusedTag] = React.useState(-1);\n const defaultHighlighted = autoHighlight ? 0 : -1;\n const highlightedIndexRef = React.useRef(defaultHighlighted);\n const [value, setValueState] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: componentName\n });\n const [inputValue, setInputValueState] = useControlled({\n controlled: inputValueProp,\n default: '',\n name: componentName,\n state: 'inputValue'\n });\n const [focused, setFocused] = React.useState(false);\n const resetInputValue = React.useCallback((event, newValue) => {\n // retain current `inputValue` if new option isn't selected and `clearOnBlur` is false\n // When `multiple` is enabled, `newValue` is an array of all selected items including the newly selected item\n const isOptionSelected = multiple ? value.length < newValue.length : newValue !== null;\n if (!isOptionSelected && !clearOnBlur) {\n return;\n }\n let newInputValue;\n if (multiple) {\n newInputValue = '';\n } else if (newValue == null) {\n newInputValue = '';\n } else {\n const optionLabel = getOptionLabel(newValue);\n newInputValue = typeof optionLabel === 'string' ? optionLabel : '';\n }\n if (inputValue === newInputValue) {\n return;\n }\n setInputValueState(newInputValue);\n if (onInputChange) {\n onInputChange(event, newInputValue, 'reset');\n }\n }, [getOptionLabel, inputValue, multiple, onInputChange, setInputValueState, clearOnBlur, value]);\n const [open, setOpenState] = useControlled({\n controlled: openProp,\n default: false,\n name: componentName,\n state: 'open'\n });\n const [inputPristine, setInputPristine] = React.useState(true);\n const inputValueIsSelectedValue = !multiple && value != null && inputValue === getOptionLabel(value);\n const popupOpen = open && !readOnly;\n const filteredOptions = popupOpen ? filterOptions(options.filter(option => {\n if (filterSelectedOptions && (multiple ? value : [value]).some(value2 => value2 !== null && isOptionEqualToValue(option, value2))) {\n return false;\n }\n return true;\n }),\n // we use the empty string to manipulate `filterOptions` to not filter any options\n // i.e. the filter predicate always returns true\n {\n inputValue: inputValueIsSelectedValue && inputPristine ? '' : inputValue,\n getOptionLabel\n }) : [];\n const previousProps = usePreviousProps({\n filteredOptions,\n value,\n inputValue\n });\n React.useEffect(() => {\n const valueChange = value !== previousProps.value;\n if (focused && !valueChange) {\n return;\n }\n\n // Only reset the input's value when freeSolo if the component's value changes.\n if (freeSolo && !valueChange) {\n return;\n }\n resetInputValue(null, value);\n }, [value, resetInputValue, focused, previousProps.value, freeSolo]);\n const listboxAvailable = open && filteredOptions.length > 0 && !readOnly;\n if (process.env.NODE_ENV !== 'production') {\n if (value !== null && !freeSolo && options.length > 0) {\n const missingValue = (multiple ? value : [value]).filter(value2 => !options.some(option => isOptionEqualToValue(option, value2)));\n if (missingValue.length > 0) {\n console.warn([`MUI: The value provided to ${componentName} is invalid.`, `None of the options match with \\`${missingValue.length > 1 ? JSON.stringify(missingValue) : JSON.stringify(missingValue[0])}\\`.`, 'You can use the `isOptionEqualToValue` prop to customize the equality test.'].join('\\n'));\n }\n }\n }\n const focusTag = useEventCallback(tagToFocus => {\n if (tagToFocus === -1) {\n inputRef.current.focus();\n } else {\n anchorEl.querySelector(`[data-tag-index=\"${tagToFocus}\"]`).focus();\n }\n });\n\n // Ensure the focusedTag is never inconsistent\n React.useEffect(() => {\n if (multiple && focusedTag > value.length - 1) {\n setFocusedTag(-1);\n focusTag(-1);\n }\n }, [value, multiple, focusedTag, focusTag]);\n function validOptionIndex(index, direction) {\n if (!listboxRef.current || index === -1) {\n return -1;\n }\n let nextFocus = index;\n while (true) {\n // Out of range\n if (direction === 'next' && nextFocus === filteredOptions.length || direction === 'previous' && nextFocus === -1) {\n return -1;\n }\n const option = listboxRef.current.querySelector(`[data-option-index=\"${nextFocus}\"]`);\n\n // Same logic as MenuList.js\n const nextFocusDisabled = disabledItemsFocusable ? false : !option || option.disabled || option.getAttribute('aria-disabled') === 'true';\n if (option && !option.hasAttribute('tabindex') || nextFocusDisabled) {\n // Move to the next element.\n nextFocus += direction === 'next' ? 1 : -1;\n } else {\n return nextFocus;\n }\n }\n }\n const setHighlightedIndex = useEventCallback(({\n event,\n index,\n reason = 'auto'\n }) => {\n highlightedIndexRef.current = index;\n\n // does the index exist?\n if (index === -1) {\n inputRef.current.removeAttribute('aria-activedescendant');\n } else {\n inputRef.current.setAttribute('aria-activedescendant', `${id}-option-${index}`);\n }\n if (onHighlightChange) {\n onHighlightChange(event, index === -1 ? null : filteredOptions[index], reason);\n }\n if (!listboxRef.current) {\n return;\n }\n const prev = listboxRef.current.querySelector(`[role=\"option\"].${unstable_classNamePrefix}-focused`);\n if (prev) {\n prev.classList.remove(`${unstable_classNamePrefix}-focused`);\n prev.classList.remove(`${unstable_classNamePrefix}-focusVisible`);\n }\n let listboxNode = listboxRef.current;\n if (listboxRef.current.getAttribute('role') !== 'listbox') {\n listboxNode = listboxRef.current.parentElement.querySelector('[role=\"listbox\"]');\n }\n\n // \"No results\"\n if (!listboxNode) {\n return;\n }\n if (index === -1) {\n listboxNode.scrollTop = 0;\n return;\n }\n const option = listboxRef.current.querySelector(`[data-option-index=\"${index}\"]`);\n if (!option) {\n return;\n }\n option.classList.add(`${unstable_classNamePrefix}-focused`);\n if (reason === 'keyboard') {\n option.classList.add(`${unstable_classNamePrefix}-focusVisible`);\n }\n\n // Scroll active descendant into view.\n // Logic copied from https://www.w3.org/WAI/content-assets/wai-aria-practices/patterns/combobox/examples/js/select-only.js\n // In case of mouse clicks and touch (in mobile devices) we avoid scrolling the element and keep both behaviors same.\n // Consider this API instead once it has a better browser support:\n // .scrollIntoView({ scrollMode: 'if-needed', block: 'nearest' });\n if (listboxNode.scrollHeight > listboxNode.clientHeight && reason !== 'mouse' && reason !== 'touch') {\n const element = option;\n const scrollBottom = listboxNode.clientHeight + listboxNode.scrollTop;\n const elementBottom = element.offsetTop + element.offsetHeight;\n if (elementBottom > scrollBottom) {\n listboxNode.scrollTop = elementBottom - listboxNode.clientHeight;\n } else if (element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0) < listboxNode.scrollTop) {\n listboxNode.scrollTop = element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0);\n }\n }\n });\n const changeHighlightedIndex = useEventCallback(({\n event,\n diff,\n direction = 'next',\n reason = 'auto'\n }) => {\n if (!popupOpen) {\n return;\n }\n const getNextIndex = () => {\n const maxIndex = filteredOptions.length - 1;\n if (diff === 'reset') {\n return defaultHighlighted;\n }\n if (diff === 'start') {\n return 0;\n }\n if (diff === 'end') {\n return maxIndex;\n }\n const newIndex = highlightedIndexRef.current + diff;\n if (newIndex < 0) {\n if (newIndex === -1 && includeInputInList) {\n return -1;\n }\n if (disableListWrap && highlightedIndexRef.current !== -1 || Math.abs(diff) > 1) {\n return 0;\n }\n return maxIndex;\n }\n if (newIndex > maxIndex) {\n if (newIndex === maxIndex + 1 && includeInputInList) {\n return -1;\n }\n if (disableListWrap || Math.abs(diff) > 1) {\n return maxIndex;\n }\n return 0;\n }\n return newIndex;\n };\n const nextIndex = validOptionIndex(getNextIndex(), direction);\n setHighlightedIndex({\n index: nextIndex,\n reason,\n event\n });\n\n // Sync the content of the input with the highlighted option.\n if (autoComplete && diff !== 'reset') {\n if (nextIndex === -1) {\n inputRef.current.value = inputValue;\n } else {\n const option = getOptionLabel(filteredOptions[nextIndex]);\n inputRef.current.value = option;\n\n // The portion of the selected suggestion that has not been typed by the user,\n // a completion string, appears inline after the input cursor in the textbox.\n const index = option.toLowerCase().indexOf(inputValue.toLowerCase());\n if (index === 0 && inputValue.length > 0) {\n inputRef.current.setSelectionRange(inputValue.length, option.length);\n }\n }\n }\n });\n const checkHighlightedOptionExists = () => {\n const isSameValue = (value1, value2) => {\n const label1 = value1 ? getOptionLabel(value1) : '';\n const label2 = value2 ? getOptionLabel(value2) : '';\n return label1 === label2;\n };\n if (highlightedIndexRef.current !== -1 && previousProps.filteredOptions && previousProps.filteredOptions.length !== filteredOptions.length && previousProps.inputValue === inputValue && (multiple ? value.length === previousProps.value.length && previousProps.value.every((val, i) => getOptionLabel(value[i]) === getOptionLabel(val)) : isSameValue(previousProps.value, value))) {\n const previousHighlightedOption = previousProps.filteredOptions[highlightedIndexRef.current];\n if (previousHighlightedOption) {\n const previousHighlightedOptionExists = filteredOptions.some(option => {\n return getOptionLabel(option) === getOptionLabel(previousHighlightedOption);\n });\n if (previousHighlightedOptionExists) {\n return true;\n }\n }\n }\n return false;\n };\n const syncHighlightedIndex = React.useCallback(() => {\n if (!popupOpen) {\n return;\n }\n\n // Check if the previously highlighted option still exists in the updated filtered options list and if the value and inputValue haven't changed\n // If it exists and the value and the inputValue haven't changed, return, otherwise continue execution\n if (checkHighlightedOptionExists()) {\n return;\n }\n const valueItem = multiple ? value[0] : value;\n\n // The popup is empty, reset\n if (filteredOptions.length === 0 || valueItem == null) {\n changeHighlightedIndex({\n diff: 'reset'\n });\n return;\n }\n if (!listboxRef.current) {\n return;\n }\n\n // Synchronize the value with the highlighted index\n if (valueItem != null) {\n const currentOption = filteredOptions[highlightedIndexRef.current];\n\n // Keep the current highlighted index if possible\n if (multiple && currentOption && findIndex(value, val => isOptionEqualToValue(currentOption, val)) !== -1) {\n return;\n }\n const itemIndex = findIndex(filteredOptions, optionItem => isOptionEqualToValue(optionItem, valueItem));\n if (itemIndex === -1) {\n changeHighlightedIndex({\n diff: 'reset'\n });\n } else {\n setHighlightedIndex({\n index: itemIndex\n });\n }\n return;\n }\n\n // Prevent the highlighted index to leak outside the boundaries.\n if (highlightedIndexRef.current >= filteredOptions.length - 1) {\n setHighlightedIndex({\n index: filteredOptions.length - 1\n });\n return;\n }\n\n // Restore the focus to the previous index.\n setHighlightedIndex({\n index: highlightedIndexRef.current\n });\n // Ignore filteredOptions (and options, isOptionEqualToValue, getOptionLabel) not to break the scroll position\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n // Only sync the highlighted index when the option switch between empty and not\n filteredOptions.length,\n // Don't sync the highlighted index with the value when multiple\n // eslint-disable-next-line react-hooks/exhaustive-deps\n multiple ? false : value, filterSelectedOptions, changeHighlightedIndex, setHighlightedIndex, popupOpen, inputValue, multiple]);\n const handleListboxRef = useEventCallback(node => {\n setRef(listboxRef, node);\n if (!node) {\n return;\n }\n syncHighlightedIndex();\n });\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (!inputRef.current || inputRef.current.nodeName !== 'INPUT') {\n if (inputRef.current && inputRef.current.nodeName === 'TEXTAREA') {\n console.warn([`A textarea element was provided to ${componentName} where input was expected.`, `This is not a supported scenario but it may work under certain conditions.`, `A textarea keyboard navigation may conflict with Autocomplete controls (e.g. enter and arrow keys).`, `Make sure to test keyboard navigation and add custom event handlers if necessary.`].join('\\n'));\n } else {\n console.error([`MUI: Unable to find the input element. It was resolved to ${inputRef.current} while an HTMLInputElement was expected.`, `Instead, ${componentName} expects an input element.`, '', componentName === 'useAutocomplete' ? 'Make sure you have bound getInputProps correctly and that the normal ref/effect resolutions order is guaranteed.' : 'Make sure you have customized the input component correctly.'].join('\\n'));\n }\n }\n }, [componentName]);\n }\n React.useEffect(() => {\n syncHighlightedIndex();\n }, [syncHighlightedIndex]);\n const handleOpen = event => {\n if (open) {\n return;\n }\n setOpenState(true);\n setInputPristine(true);\n if (onOpen) {\n onOpen(event);\n }\n };\n const handleClose = (event, reason) => {\n if (!open) {\n return;\n }\n setOpenState(false);\n if (onClose) {\n onClose(event, reason);\n }\n };\n const handleValue = (event, newValue, reason, details) => {\n if (multiple) {\n if (value.length === newValue.length && value.every((val, i) => val === newValue[i])) {\n return;\n }\n } else if (value === newValue) {\n return;\n }\n if (onChange) {\n onChange(event, newValue, reason, details);\n }\n setValueState(newValue);\n };\n const isTouch = React.useRef(false);\n const selectNewValue = (event, option, reasonProp = 'selectOption', origin = 'options') => {\n let reason = reasonProp;\n let newValue = option;\n if (multiple) {\n newValue = Array.isArray(value) ? value.slice() : [];\n if (process.env.NODE_ENV !== 'production') {\n const matches = newValue.filter(val => isOptionEqualToValue(option, val));\n if (matches.length > 1) {\n console.error([`MUI: The \\`isOptionEqualToValue\\` method of ${componentName} does not handle the arguments correctly.`, `The component expects a single value to match a given option but found ${matches.length} matches.`].join('\\n'));\n }\n }\n const itemIndex = findIndex(newValue, valueItem => isOptionEqualToValue(option, valueItem));\n if (itemIndex === -1) {\n newValue.push(option);\n } else if (origin !== 'freeSolo') {\n newValue.splice(itemIndex, 1);\n reason = 'removeOption';\n }\n }\n resetInputValue(event, newValue);\n handleValue(event, newValue, reason, {\n option\n });\n if (!disableCloseOnSelect && (!event || !event.ctrlKey && !event.metaKey)) {\n handleClose(event, reason);\n }\n if (blurOnSelect === true || blurOnSelect === 'touch' && isTouch.current || blurOnSelect === 'mouse' && !isTouch.current) {\n inputRef.current.blur();\n }\n };\n function validTagIndex(index, direction) {\n if (index === -1) {\n return -1;\n }\n let nextFocus = index;\n while (true) {\n // Out of range\n if (direction === 'next' && nextFocus === value.length || direction === 'previous' && nextFocus === -1) {\n return -1;\n }\n const option = anchorEl.querySelector(`[data-tag-index=\"${nextFocus}\"]`);\n\n // Same logic as MenuList.js\n if (!option || !option.hasAttribute('tabindex') || option.disabled || option.getAttribute('aria-disabled') === 'true') {\n nextFocus += direction === 'next' ? 1 : -1;\n } else {\n return nextFocus;\n }\n }\n }\n const handleFocusTag = (event, direction) => {\n if (!multiple) {\n return;\n }\n if (inputValue === '') {\n handleClose(event, 'toggleInput');\n }\n let nextTag = focusedTag;\n if (focusedTag === -1) {\n if (inputValue === '' && direction === 'previous') {\n nextTag = value.length - 1;\n }\n } else {\n nextTag += direction === 'next' ? 1 : -1;\n if (nextTag < 0) {\n nextTag = 0;\n }\n if (nextTag === value.length) {\n nextTag = -1;\n }\n }\n nextTag = validTagIndex(nextTag, direction);\n setFocusedTag(nextTag);\n focusTag(nextTag);\n };\n const handleClear = event => {\n ignoreFocus.current = true;\n setInputValueState('');\n if (onInputChange) {\n onInputChange(event, '', 'clear');\n }\n handleValue(event, multiple ? [] : null, 'clear');\n };\n const handleKeyDown = other => event => {\n if (other.onKeyDown) {\n other.onKeyDown(event);\n }\n if (event.defaultMuiPrevented) {\n return;\n }\n if (focusedTag !== -1 && ['ArrowLeft', 'ArrowRight'].indexOf(event.key) === -1) {\n setFocusedTag(-1);\n focusTag(-1);\n }\n\n // Wait until IME is settled.\n if (event.which !== 229) {\n switch (event.key) {\n case 'Home':\n if (popupOpen && handleHomeEndKeys) {\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: 'start',\n direction: 'next',\n reason: 'keyboard',\n event\n });\n }\n break;\n case 'End':\n if (popupOpen && handleHomeEndKeys) {\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: 'end',\n direction: 'previous',\n reason: 'keyboard',\n event\n });\n }\n break;\n case 'PageUp':\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: -pageSize,\n direction: 'previous',\n reason: 'keyboard',\n event\n });\n handleOpen(event);\n break;\n case 'PageDown':\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: pageSize,\n direction: 'next',\n reason: 'keyboard',\n event\n });\n handleOpen(event);\n break;\n case 'ArrowDown':\n // Prevent cursor move\n event.preventDefault();\n changeHighlightedIndex({\n diff: 1,\n direction: 'next',\n reason: 'keyboard',\n event\n });\n handleOpen(event);\n break;\n case 'ArrowUp':\n // Prevent cursor move\n event.preventDefault();\n changeHighlightedIndex({\n diff: -1,\n direction: 'previous',\n reason: 'keyboard',\n event\n });\n handleOpen(event);\n break;\n case 'ArrowLeft':\n handleFocusTag(event, 'previous');\n break;\n case 'ArrowRight':\n handleFocusTag(event, 'next');\n break;\n case 'Enter':\n if (highlightedIndexRef.current !== -1 && popupOpen) {\n const option = filteredOptions[highlightedIndexRef.current];\n const disabled = getOptionDisabled ? getOptionDisabled(option) : false;\n\n // Avoid early form validation, let the end-users continue filling the form.\n event.preventDefault();\n if (disabled) {\n return;\n }\n selectNewValue(event, option, 'selectOption');\n\n // Move the selection to the end.\n if (autoComplete) {\n inputRef.current.setSelectionRange(inputRef.current.value.length, inputRef.current.value.length);\n }\n } else if (freeSolo && inputValue !== '' && inputValueIsSelectedValue === false) {\n if (multiple) {\n // Allow people to add new values before they submit the form.\n event.preventDefault();\n }\n selectNewValue(event, inputValue, 'createOption', 'freeSolo');\n }\n break;\n case 'Escape':\n if (popupOpen) {\n // Avoid Opera to exit fullscreen mode.\n event.preventDefault();\n // Avoid the Modal to handle the event.\n event.stopPropagation();\n handleClose(event, 'escape');\n } else if (clearOnEscape && (inputValue !== '' || multiple && value.length > 0)) {\n // Avoid Opera to exit fullscreen mode.\n event.preventDefault();\n // Avoid the Modal to handle the event.\n event.stopPropagation();\n handleClear(event);\n }\n break;\n case 'Backspace':\n if (multiple && !readOnly && inputValue === '' && value.length > 0) {\n const index = focusedTag === -1 ? value.length - 1 : focusedTag;\n const newValue = value.slice();\n newValue.splice(index, 1);\n handleValue(event, newValue, 'removeOption', {\n option: value[index]\n });\n }\n break;\n case 'Delete':\n if (multiple && !readOnly && inputValue === '' && value.length > 0 && focusedTag !== -1) {\n const index = focusedTag;\n const newValue = value.slice();\n newValue.splice(index, 1);\n handleValue(event, newValue, 'removeOption', {\n option: value[index]\n });\n }\n break;\n default:\n }\n }\n };\n const handleFocus = event => {\n setFocused(true);\n if (openOnFocus && !ignoreFocus.current) {\n handleOpen(event);\n }\n };\n const handleBlur = event => {\n // Ignore the event when using the scrollbar with IE11\n if (unstable_isActiveElementInListbox(listboxRef)) {\n inputRef.current.focus();\n return;\n }\n setFocused(false);\n firstFocus.current = true;\n ignoreFocus.current = false;\n if (autoSelect && highlightedIndexRef.current !== -1 && popupOpen) {\n selectNewValue(event, filteredOptions[highlightedIndexRef.current], 'blur');\n } else if (autoSelect && freeSolo && inputValue !== '') {\n selectNewValue(event, inputValue, 'blur', 'freeSolo');\n } else if (clearOnBlur) {\n resetInputValue(event, value);\n }\n handleClose(event, 'blur');\n };\n const handleInputChange = event => {\n const newValue = event.target.value;\n if (inputValue !== newValue) {\n setInputValueState(newValue);\n setInputPristine(false);\n if (onInputChange) {\n onInputChange(event, newValue, 'input');\n }\n }\n if (newValue === '') {\n if (!disableClearable && !multiple) {\n handleValue(event, null, 'clear');\n }\n } else {\n handleOpen(event);\n }\n };\n const handleOptionMouseMove = event => {\n const index = Number(event.currentTarget.getAttribute('data-option-index'));\n if (highlightedIndexRef.current !== index) {\n setHighlightedIndex({\n event,\n index,\n reason: 'mouse'\n });\n }\n };\n const handleOptionTouchStart = event => {\n setHighlightedIndex({\n event,\n index: Number(event.currentTarget.getAttribute('data-option-index')),\n reason: 'touch'\n });\n isTouch.current = true;\n };\n const handleOptionClick = event => {\n const index = Number(event.currentTarget.getAttribute('data-option-index'));\n selectNewValue(event, filteredOptions[index], 'selectOption');\n isTouch.current = false;\n };\n const handleTagDelete = index => event => {\n const newValue = value.slice();\n newValue.splice(index, 1);\n handleValue(event, newValue, 'removeOption', {\n option: value[index]\n });\n };\n const handlePopupIndicator = event => {\n if (open) {\n handleClose(event, 'toggleInput');\n } else {\n handleOpen(event);\n }\n };\n\n // Prevent input blur when interacting with the combobox\n const handleMouseDown = event => {\n // Prevent focusing the input if click is anywhere outside the Autocomplete\n if (!event.currentTarget.contains(event.target)) {\n return;\n }\n if (event.target.getAttribute('id') !== id) {\n event.preventDefault();\n }\n };\n\n // Focus the input when interacting with the combobox\n const handleClick = event => {\n // Prevent focusing the input if click is anywhere outside the Autocomplete\n if (!event.currentTarget.contains(event.target)) {\n return;\n }\n inputRef.current.focus();\n if (selectOnFocus && firstFocus.current && inputRef.current.selectionEnd - inputRef.current.selectionStart === 0) {\n inputRef.current.select();\n }\n firstFocus.current = false;\n };\n const handleInputMouseDown = event => {\n if (!disabledProp && (inputValue === '' || !open)) {\n handlePopupIndicator(event);\n }\n };\n let dirty = freeSolo && inputValue.length > 0;\n dirty = dirty || (multiple ? value.length > 0 : value !== null);\n let groupedOptions = filteredOptions;\n if (groupBy) {\n // used to keep track of key and indexes in the result array\n const indexBy = new Map();\n let warn = false;\n groupedOptions = filteredOptions.reduce((acc, option, index) => {\n const group = groupBy(option);\n if (acc.length > 0 && acc[acc.length - 1].group === group) {\n acc[acc.length - 1].options.push(option);\n } else {\n if (process.env.NODE_ENV !== 'production') {\n if (indexBy.get(group) && !warn) {\n console.warn(`MUI: The options provided combined with the \\`groupBy\\` method of ${componentName} returns duplicated headers.`, 'You can solve the issue by sorting the options with the output of `groupBy`.');\n warn = true;\n }\n indexBy.set(group, true);\n }\n acc.push({\n key: index,\n index,\n group,\n options: [option]\n });\n }\n return acc;\n }, []);\n }\n if (disabledProp && focused) {\n handleBlur();\n }\n return {\n getRootProps: (other = {}) => _extends({\n 'aria-owns': listboxAvailable ? `${id}-listbox` : null\n }, other, {\n onKeyDown: handleKeyDown(other),\n onMouseDown: handleMouseDown,\n onClick: handleClick\n }),\n getInputLabelProps: () => ({\n id: `${id}-label`,\n htmlFor: id\n }),\n getInputProps: () => ({\n id,\n value: inputValue,\n onBlur: handleBlur,\n onFocus: handleFocus,\n onChange: handleInputChange,\n onMouseDown: handleInputMouseDown,\n // if open then this is handled imperatively so don't let react override\n // only have an opinion about this when closed\n 'aria-activedescendant': popupOpen ? '' : null,\n 'aria-autocomplete': autoComplete ? 'both' : 'list',\n 'aria-controls': listboxAvailable ? `${id}-listbox` : undefined,\n 'aria-expanded': listboxAvailable,\n // Disable browser's suggestion that might overlap with the popup.\n // Handle autocomplete but not autofill.\n autoComplete: 'off',\n ref: inputRef,\n autoCapitalize: 'none',\n spellCheck: 'false',\n role: 'combobox',\n disabled: disabledProp\n }),\n getClearProps: () => ({\n tabIndex: -1,\n onClick: handleClear\n }),\n getPopupIndicatorProps: () => ({\n tabIndex: -1,\n onClick: handlePopupIndicator\n }),\n getTagProps: ({\n index\n }) => _extends({\n key: index,\n 'data-tag-index': index,\n tabIndex: -1\n }, !readOnly && {\n onDelete: handleTagDelete(index)\n }),\n getListboxProps: () => ({\n role: 'listbox',\n id: `${id}-listbox`,\n 'aria-labelledby': `${id}-label`,\n ref: handleListboxRef,\n onMouseDown: event => {\n // Prevent blur\n event.preventDefault();\n }\n }),\n getOptionProps: ({\n index,\n option\n }) => {\n const selected = (multiple ? value : [value]).some(value2 => value2 != null && isOptionEqualToValue(option, value2));\n const disabled = getOptionDisabled ? getOptionDisabled(option) : false;\n return {\n key: getOptionLabel(option),\n tabIndex: -1,\n role: 'option',\n id: `${id}-option-${index}`,\n onMouseMove: handleOptionMouseMove,\n onClick: handleOptionClick,\n onTouchStart: handleOptionTouchStart,\n 'data-option-index': index,\n 'aria-disabled': disabled,\n 'aria-selected': selected\n };\n },\n id,\n inputValue,\n value,\n dirty,\n expanded: popupOpen && anchorEl,\n popupOpen,\n focused: focused || focusedTag !== -1,\n anchorEl,\n setAnchorEl,\n focusedTag,\n groupedOptions\n };\n}","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListSubheaderUtilityClass(slot) {\n return generateUtilityClass('MuiListSubheader', slot);\n}\nconst listSubheaderClasses = generateUtilityClasses('MuiListSubheader', ['root', 'colorPrimary', 'colorInherit', 'gutters', 'inset', 'sticky']);\nexport default listSubheaderClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"component\", \"disableGutters\", \"disableSticky\", \"inset\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport { getListSubheaderUtilityClass } from './listSubheaderClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color,\n disableGutters,\n inset,\n disableSticky\n } = ownerState;\n const slots = {\n root: ['root', color !== 'default' && `color${capitalize(color)}`, !disableGutters && 'gutters', inset && 'inset', !disableSticky && 'sticky']\n };\n return composeClasses(slots, getListSubheaderUtilityClass, classes);\n};\nconst ListSubheaderRoot = styled('li', {\n name: 'MuiListSubheader',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], !ownerState.disableGutters && styles.gutters, ownerState.inset && styles.inset, !ownerState.disableSticky && styles.sticky];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n boxSizing: 'border-box',\n lineHeight: '48px',\n listStyle: 'none',\n color: (theme.vars || theme).palette.text.secondary,\n fontFamily: theme.typography.fontFamily,\n fontWeight: theme.typography.fontWeightMedium,\n fontSize: theme.typography.pxToRem(14)\n}, ownerState.color === 'primary' && {\n color: (theme.vars || theme).palette.primary.main\n}, ownerState.color === 'inherit' && {\n color: 'inherit'\n}, !ownerState.disableGutters && {\n paddingLeft: 16,\n paddingRight: 16\n}, ownerState.inset && {\n paddingLeft: 72\n}, !ownerState.disableSticky && {\n position: 'sticky',\n top: 0,\n zIndex: 1,\n backgroundColor: (theme.vars || theme).palette.background.paper\n}));\nconst ListSubheader = /*#__PURE__*/React.forwardRef(function ListSubheader(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiListSubheader'\n });\n const {\n className,\n color = 'default',\n component = 'li',\n disableGutters = false,\n disableSticky = false,\n inset = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n component,\n disableGutters,\n disableSticky,\n inset\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(ListSubheaderRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState\n }, other));\n});\nListSubheader.muiSkipListHighlight = true;\nprocess.env.NODE_ENV !== \"production\" ? ListSubheader.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n * @default 'default'\n */\n color: PropTypes.oneOf(['default', 'inherit', 'primary']),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the List Subheader will not have gutters.\n * @default false\n */\n disableGutters: PropTypes.bool,\n /**\n * If `true`, the List Subheader will not stick to the top during scroll.\n * @default false\n */\n disableSticky: PropTypes.bool,\n /**\n * If `true`, the List Subheader is indented.\n * @default false\n */\n inset: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListSubheader;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n *\n * Alias to `Clear`.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getAutocompleteUtilityClass(slot) {\n return generateUtilityClass('MuiAutocomplete', slot);\n}\nconst autocompleteClasses = generateUtilityClasses('MuiAutocomplete', ['root', 'expanded', 'fullWidth', 'focused', 'focusVisible', 'tag', 'tagSizeSmall', 'tagSizeMedium', 'hasPopupIcon', 'hasClearIcon', 'inputRoot', 'input', 'inputFocused', 'endAdornment', 'clearIndicator', 'popupIndicator', 'popupIndicatorOpen', 'popper', 'popperDisablePortal', 'paper', 'listbox', 'loading', 'noOptions', 'option', 'groupLabel', 'groupUl']);\nexport default autocompleteClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _ClearIcon, _ArrowDropDownIcon;\nconst _excluded = [\"autoComplete\", \"autoHighlight\", \"autoSelect\", \"blurOnSelect\", \"ChipProps\", \"className\", \"clearIcon\", \"clearOnBlur\", \"clearOnEscape\", \"clearText\", \"closeText\", \"componentsProps\", \"defaultValue\", \"disableClearable\", \"disableCloseOnSelect\", \"disabled\", \"disabledItemsFocusable\", \"disableListWrap\", \"disablePortal\", \"filterOptions\", \"filterSelectedOptions\", \"forcePopupIcon\", \"freeSolo\", \"fullWidth\", \"getLimitTagsText\", \"getOptionDisabled\", \"getOptionLabel\", \"isOptionEqualToValue\", \"groupBy\", \"handleHomeEndKeys\", \"id\", \"includeInputInList\", \"inputValue\", \"limitTags\", \"ListboxComponent\", \"ListboxProps\", \"loading\", \"loadingText\", \"multiple\", \"noOptionsText\", \"onChange\", \"onClose\", \"onHighlightChange\", \"onInputChange\", \"onOpen\", \"open\", \"openOnFocus\", \"openText\", \"options\", \"PaperComponent\", \"PopperComponent\", \"popupIcon\", \"readOnly\", \"renderGroup\", \"renderInput\", \"renderOption\", \"renderTags\", \"selectOnFocus\", \"size\", \"slotProps\", \"value\"],\n _excluded2 = [\"ref\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes, integerPropType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses, useAutocomplete, createFilterOptions } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport Popper from '../Popper';\nimport ListSubheader from '../ListSubheader';\nimport Paper from '../Paper';\nimport IconButton from '../IconButton';\nimport Chip from '../Chip';\nimport inputClasses from '../Input/inputClasses';\nimport inputBaseClasses from '../InputBase/inputBaseClasses';\nimport outlinedInputClasses from '../OutlinedInput/outlinedInputClasses';\nimport filledInputClasses from '../FilledInput/filledInputClasses';\nimport ClearIcon from '../internal/svg-icons/Close';\nimport ArrowDropDownIcon from '../internal/svg-icons/ArrowDropDown';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport autocompleteClasses, { getAutocompleteUtilityClass } from './autocompleteClasses';\nimport capitalize from '../utils/capitalize';\nimport useForkRef from '../utils/useForkRef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disablePortal,\n expanded,\n focused,\n fullWidth,\n hasClearIcon,\n hasPopupIcon,\n inputFocused,\n popupOpen,\n size\n } = ownerState;\n const slots = {\n root: ['root', expanded && 'expanded', focused && 'focused', fullWidth && 'fullWidth', hasClearIcon && 'hasClearIcon', hasPopupIcon && 'hasPopupIcon'],\n inputRoot: ['inputRoot'],\n input: ['input', inputFocused && 'inputFocused'],\n tag: ['tag', `tagSize${capitalize(size)}`],\n endAdornment: ['endAdornment'],\n clearIndicator: ['clearIndicator'],\n popupIndicator: ['popupIndicator', popupOpen && 'popupIndicatorOpen'],\n popper: ['popper', disablePortal && 'popperDisablePortal'],\n paper: ['paper'],\n listbox: ['listbox'],\n loading: ['loading'],\n noOptions: ['noOptions'],\n option: ['option'],\n groupLabel: ['groupLabel'],\n groupUl: ['groupUl']\n };\n return composeClasses(slots, getAutocompleteUtilityClass, classes);\n};\nconst AutocompleteRoot = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n const {\n fullWidth,\n hasClearIcon,\n hasPopupIcon,\n inputFocused,\n size\n } = ownerState;\n return [{\n [`& .${autocompleteClasses.tag}`]: styles.tag\n }, {\n [`& .${autocompleteClasses.tag}`]: styles[`tagSize${capitalize(size)}`]\n }, {\n [`& .${autocompleteClasses.inputRoot}`]: styles.inputRoot\n }, {\n [`& .${autocompleteClasses.input}`]: styles.input\n }, {\n [`& .${autocompleteClasses.input}`]: inputFocused && styles.inputFocused\n }, styles.root, fullWidth && styles.fullWidth, hasPopupIcon && styles.hasPopupIcon, hasClearIcon && styles.hasClearIcon];\n }\n})(({\n ownerState\n}) => _extends({\n [`&.${autocompleteClasses.focused} .${autocompleteClasses.clearIndicator}`]: {\n visibility: 'visible'\n },\n /* Avoid double tap issue on iOS */\n '@media (pointer: fine)': {\n [`&:hover .${autocompleteClasses.clearIndicator}`]: {\n visibility: 'visible'\n }\n }\n}, ownerState.fullWidth && {\n width: '100%'\n}, {\n [`& .${autocompleteClasses.tag}`]: _extends({\n margin: 3,\n maxWidth: 'calc(100% - 6px)'\n }, ownerState.size === 'small' && {\n margin: 2,\n maxWidth: 'calc(100% - 4px)'\n }),\n [`& .${autocompleteClasses.inputRoot}`]: {\n flexWrap: 'wrap',\n [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 26 + 4\n },\n [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 52 + 4\n },\n [`& .${autocompleteClasses.input}`]: {\n width: 0,\n minWidth: 30\n }\n },\n [`& .${inputClasses.root}`]: {\n paddingBottom: 1,\n '& .MuiInput-input': {\n padding: '4px 4px 4px 0px'\n }\n },\n [`& .${inputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n [`& .${inputClasses.input}`]: {\n padding: '2px 4px 3px 0'\n }\n },\n [`& .${outlinedInputClasses.root}`]: {\n padding: 9,\n [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 26 + 4 + 9\n },\n [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 52 + 4 + 9\n },\n [`& .${autocompleteClasses.input}`]: {\n padding: '7.5px 4px 7.5px 5px'\n },\n [`& .${autocompleteClasses.endAdornment}`]: {\n right: 9\n }\n },\n [`& .${outlinedInputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n // Don't specify paddingRight, as it overrides the default value set when there is only\n // one of the popup or clear icon as the specificity is equal so the latter one wins\n paddingTop: 6,\n paddingBottom: 6,\n paddingLeft: 6,\n [`& .${autocompleteClasses.input}`]: {\n padding: '2.5px 4px 2.5px 8px'\n }\n },\n [`& .${filledInputClasses.root}`]: {\n paddingTop: 19,\n paddingLeft: 8,\n [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 26 + 4 + 9\n },\n [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 52 + 4 + 9\n },\n [`& .${filledInputClasses.input}`]: {\n padding: '7px 4px'\n },\n [`& .${autocompleteClasses.endAdornment}`]: {\n right: 9\n }\n },\n [`& .${filledInputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n paddingBottom: 1,\n [`& .${filledInputClasses.input}`]: {\n padding: '2.5px 4px'\n }\n },\n [`& .${inputBaseClasses.hiddenLabel}`]: {\n paddingTop: 8\n },\n [`& .${filledInputClasses.root}.${inputBaseClasses.hiddenLabel}`]: {\n paddingTop: 0,\n paddingBottom: 0,\n [`& .${autocompleteClasses.input}`]: {\n paddingTop: 16,\n paddingBottom: 17\n }\n },\n [`& .${filledInputClasses.root}.${inputBaseClasses.hiddenLabel}.${inputBaseClasses.sizeSmall}`]: {\n [`& .${autocompleteClasses.input}`]: {\n paddingTop: 8,\n paddingBottom: 9\n }\n },\n [`& .${autocompleteClasses.input}`]: _extends({\n flexGrow: 1,\n textOverflow: 'ellipsis',\n opacity: 0\n }, ownerState.inputFocused && {\n opacity: 1\n })\n}));\nconst AutocompleteEndAdornment = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'EndAdornment',\n overridesResolver: (props, styles) => styles.endAdornment\n})({\n // We use a position absolute to support wrapping tags.\n position: 'absolute',\n right: 0,\n top: 'calc(50% - 14px)' // Center vertically\n});\n\nconst AutocompleteClearIndicator = styled(IconButton, {\n name: 'MuiAutocomplete',\n slot: 'ClearIndicator',\n overridesResolver: (props, styles) => styles.clearIndicator\n})({\n marginRight: -2,\n padding: 4,\n visibility: 'hidden'\n});\nconst AutocompletePopupIndicator = styled(IconButton, {\n name: 'MuiAutocomplete',\n slot: 'PopupIndicator',\n overridesResolver: ({\n ownerState\n }, styles) => _extends({}, styles.popupIndicator, ownerState.popupOpen && styles.popupIndicatorOpen)\n})(({\n ownerState\n}) => _extends({\n padding: 2,\n marginRight: -2\n}, ownerState.popupOpen && {\n transform: 'rotate(180deg)'\n}));\nconst AutocompletePopper = styled(Popper, {\n name: 'MuiAutocomplete',\n slot: 'Popper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${autocompleteClasses.option}`]: styles.option\n }, styles.popper, ownerState.disablePortal && styles.popperDisablePortal];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n zIndex: (theme.vars || theme).zIndex.modal\n}, ownerState.disablePortal && {\n position: 'absolute'\n}));\nconst AutocompletePaper = styled(Paper, {\n name: 'MuiAutocomplete',\n slot: 'Paper',\n overridesResolver: (props, styles) => styles.paper\n})(({\n theme\n}) => _extends({}, theme.typography.body1, {\n overflow: 'auto'\n}));\nconst AutocompleteLoading = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'Loading',\n overridesResolver: (props, styles) => styles.loading\n})(({\n theme\n}) => ({\n color: (theme.vars || theme).palette.text.secondary,\n padding: '14px 16px'\n}));\nconst AutocompleteNoOptions = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'NoOptions',\n overridesResolver: (props, styles) => styles.noOptions\n})(({\n theme\n}) => ({\n color: (theme.vars || theme).palette.text.secondary,\n padding: '14px 16px'\n}));\nconst AutocompleteListbox = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'Listbox',\n overridesResolver: (props, styles) => styles.listbox\n})(({\n theme\n}) => ({\n listStyle: 'none',\n margin: 0,\n padding: '8px 0',\n maxHeight: '40vh',\n overflow: 'auto',\n position: 'relative',\n [`& .${autocompleteClasses.option}`]: {\n minHeight: 48,\n display: 'flex',\n overflow: 'hidden',\n justifyContent: 'flex-start',\n alignItems: 'center',\n cursor: 'pointer',\n paddingTop: 6,\n boxSizing: 'border-box',\n outline: '0',\n WebkitTapHighlightColor: 'transparent',\n paddingBottom: 6,\n paddingLeft: 16,\n paddingRight: 16,\n [theme.breakpoints.up('sm')]: {\n minHeight: 'auto'\n },\n [`&.${autocompleteClasses.focused}`]: {\n backgroundColor: (theme.vars || theme).palette.action.hover,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n '&[aria-disabled=\"true\"]': {\n opacity: (theme.vars || theme).palette.action.disabledOpacity,\n pointerEvents: 'none'\n },\n [`&.${autocompleteClasses.focusVisible}`]: {\n backgroundColor: (theme.vars || theme).palette.action.focus\n },\n '&[aria-selected=\"true\"]': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n [`&.${autocompleteClasses.focused}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: (theme.vars || theme).palette.action.selected\n }\n },\n [`&.${autocompleteClasses.focusVisible}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n }\n }\n }\n}));\nconst AutocompleteGroupLabel = styled(ListSubheader, {\n name: 'MuiAutocomplete',\n slot: 'GroupLabel',\n overridesResolver: (props, styles) => styles.groupLabel\n})(({\n theme\n}) => ({\n backgroundColor: (theme.vars || theme).palette.background.paper,\n top: -8\n}));\nconst AutocompleteGroupUl = styled('ul', {\n name: 'MuiAutocomplete',\n slot: 'GroupUl',\n overridesResolver: (props, styles) => styles.groupUl\n})({\n padding: 0,\n [`& .${autocompleteClasses.option}`]: {\n paddingLeft: 24\n }\n});\nexport { createFilterOptions };\nconst Autocomplete = /*#__PURE__*/React.forwardRef(function Autocomplete(inProps, ref) {\n var _slotProps$clearIndic, _slotProps$paper, _slotProps$popper, _slotProps$popupIndic;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiAutocomplete'\n });\n\n /* eslint-disable @typescript-eslint/no-unused-vars */\n const {\n autoComplete = false,\n autoHighlight = false,\n autoSelect = false,\n blurOnSelect = false,\n ChipProps,\n className,\n clearIcon = _ClearIcon || (_ClearIcon = /*#__PURE__*/_jsx(ClearIcon, {\n fontSize: \"small\"\n })),\n clearOnBlur = !props.freeSolo,\n clearOnEscape = false,\n clearText = 'Clear',\n closeText = 'Close',\n componentsProps = {},\n defaultValue = props.multiple ? [] : null,\n disableClearable = false,\n disableCloseOnSelect = false,\n disabled = false,\n disabledItemsFocusable = false,\n disableListWrap = false,\n disablePortal = false,\n filterSelectedOptions = false,\n forcePopupIcon = 'auto',\n freeSolo = false,\n fullWidth = false,\n getLimitTagsText = more => `+${more}`,\n getOptionLabel: getOptionLabelProp,\n groupBy,\n handleHomeEndKeys = !props.freeSolo,\n includeInputInList = false,\n limitTags = -1,\n ListboxComponent = 'ul',\n ListboxProps,\n loading = false,\n loadingText = 'Loading…',\n multiple = false,\n noOptionsText = 'No options',\n openOnFocus = false,\n openText = 'Open',\n PaperComponent = Paper,\n PopperComponent = Popper,\n popupIcon = _ArrowDropDownIcon || (_ArrowDropDownIcon = /*#__PURE__*/_jsx(ArrowDropDownIcon, {})),\n readOnly = false,\n renderGroup: renderGroupProp,\n renderInput,\n renderOption: renderOptionProp,\n renderTags,\n selectOnFocus = !props.freeSolo,\n size = 'medium',\n slotProps = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n /* eslint-enable @typescript-eslint/no-unused-vars */\n\n const {\n getRootProps,\n getInputProps,\n getInputLabelProps,\n getPopupIndicatorProps,\n getClearProps,\n getTagProps,\n getListboxProps,\n getOptionProps,\n value,\n dirty,\n expanded,\n id,\n popupOpen,\n focused,\n focusedTag,\n anchorEl,\n setAnchorEl,\n inputValue,\n groupedOptions\n } = useAutocomplete(_extends({}, props, {\n componentName: 'Autocomplete'\n }));\n const hasClearIcon = !disableClearable && !disabled && dirty && !readOnly;\n const hasPopupIcon = (!freeSolo || forcePopupIcon === true) && forcePopupIcon !== false;\n const {\n onMouseDown: handleInputMouseDown\n } = getInputProps();\n const {\n ref: externalListboxRef\n } = ListboxProps != null ? ListboxProps : {};\n const _getListboxProps = getListboxProps(),\n {\n ref: listboxRef\n } = _getListboxProps,\n otherListboxProps = _objectWithoutPropertiesLoose(_getListboxProps, _excluded2);\n const combinedListboxRef = useForkRef(listboxRef, externalListboxRef);\n const defaultGetOptionLabel = option => {\n var _option$label;\n return (_option$label = option.label) != null ? _option$label : option;\n };\n const getOptionLabel = getOptionLabelProp || defaultGetOptionLabel;\n\n // If you modify this, make sure to keep the `AutocompleteOwnerState` type in sync.\n const ownerState = _extends({}, props, {\n disablePortal,\n expanded,\n focused,\n fullWidth,\n getOptionLabel,\n hasClearIcon,\n hasPopupIcon,\n inputFocused: focusedTag === -1,\n popupOpen,\n size\n });\n const classes = useUtilityClasses(ownerState);\n let startAdornment;\n if (multiple && value.length > 0) {\n const getCustomizedTagProps = params => _extends({\n className: classes.tag,\n disabled\n }, getTagProps(params));\n if (renderTags) {\n startAdornment = renderTags(value, getCustomizedTagProps, ownerState);\n } else {\n startAdornment = value.map((option, index) => /*#__PURE__*/_jsx(Chip, _extends({\n label: getOptionLabel(option),\n size: size\n }, getCustomizedTagProps({\n index\n }), ChipProps)));\n }\n }\n if (limitTags > -1 && Array.isArray(startAdornment)) {\n const more = startAdornment.length - limitTags;\n if (!focused && more > 0) {\n startAdornment = startAdornment.splice(0, limitTags);\n startAdornment.push( /*#__PURE__*/_jsx(\"span\", {\n className: classes.tag,\n children: getLimitTagsText(more)\n }, startAdornment.length));\n }\n }\n const defaultRenderGroup = params => /*#__PURE__*/_jsxs(\"li\", {\n children: [/*#__PURE__*/_jsx(AutocompleteGroupLabel, {\n className: classes.groupLabel,\n ownerState: ownerState,\n component: \"div\",\n children: params.group\n }), /*#__PURE__*/_jsx(AutocompleteGroupUl, {\n className: classes.groupUl,\n ownerState: ownerState,\n children: params.children\n })]\n }, params.key);\n const renderGroup = renderGroupProp || defaultRenderGroup;\n const defaultRenderOption = (props2, option) => /*#__PURE__*/_jsx(\"li\", _extends({}, props2, {\n children: getOptionLabel(option)\n }));\n const renderOption = renderOptionProp || defaultRenderOption;\n const renderListOption = (option, index) => {\n const optionProps = getOptionProps({\n option,\n index\n });\n return renderOption(_extends({}, optionProps, {\n className: classes.option\n }), option, {\n selected: optionProps['aria-selected'],\n index,\n inputValue\n }, ownerState);\n };\n const clearIndicatorSlotProps = (_slotProps$clearIndic = slotProps.clearIndicator) != null ? _slotProps$clearIndic : componentsProps.clearIndicator;\n const paperSlotProps = (_slotProps$paper = slotProps.paper) != null ? _slotProps$paper : componentsProps.paper;\n const popperSlotProps = (_slotProps$popper = slotProps.popper) != null ? _slotProps$popper : componentsProps.popper;\n const popupIndicatorSlotProps = (_slotProps$popupIndic = slotProps.popupIndicator) != null ? _slotProps$popupIndic : componentsProps.popupIndicator;\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(AutocompleteRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, getRootProps(other), {\n children: renderInput({\n id,\n disabled,\n fullWidth: true,\n size: size === 'small' ? 'small' : undefined,\n InputLabelProps: getInputLabelProps(),\n InputProps: _extends({\n ref: setAnchorEl,\n className: classes.inputRoot,\n startAdornment,\n onClick: event => {\n if (event.target === event.currentTarget) {\n handleInputMouseDown(event);\n }\n }\n }, (hasClearIcon || hasPopupIcon) && {\n endAdornment: /*#__PURE__*/_jsxs(AutocompleteEndAdornment, {\n className: classes.endAdornment,\n ownerState: ownerState,\n children: [hasClearIcon ? /*#__PURE__*/_jsx(AutocompleteClearIndicator, _extends({}, getClearProps(), {\n \"aria-label\": clearText,\n title: clearText,\n ownerState: ownerState\n }, clearIndicatorSlotProps, {\n className: clsx(classes.clearIndicator, clearIndicatorSlotProps == null ? void 0 : clearIndicatorSlotProps.className),\n children: clearIcon\n })) : null, hasPopupIcon ? /*#__PURE__*/_jsx(AutocompletePopupIndicator, _extends({}, getPopupIndicatorProps(), {\n disabled: disabled,\n \"aria-label\": popupOpen ? closeText : openText,\n title: popupOpen ? closeText : openText,\n ownerState: ownerState\n }, popupIndicatorSlotProps, {\n className: clsx(classes.popupIndicator, popupIndicatorSlotProps == null ? void 0 : popupIndicatorSlotProps.className),\n children: popupIcon\n })) : null]\n })\n }),\n inputProps: _extends({\n className: classes.input,\n disabled,\n readOnly\n }, getInputProps())\n })\n })), anchorEl ? /*#__PURE__*/_jsx(AutocompletePopper, _extends({\n as: PopperComponent,\n disablePortal: disablePortal,\n style: {\n width: anchorEl ? anchorEl.clientWidth : null\n },\n ownerState: ownerState,\n role: \"presentation\",\n anchorEl: anchorEl,\n open: popupOpen\n }, popperSlotProps, {\n className: clsx(classes.popper, popperSlotProps == null ? void 0 : popperSlotProps.className),\n children: /*#__PURE__*/_jsxs(AutocompletePaper, _extends({\n ownerState: ownerState,\n as: PaperComponent\n }, paperSlotProps, {\n className: clsx(classes.paper, paperSlotProps == null ? void 0 : paperSlotProps.className),\n children: [loading && groupedOptions.length === 0 ? /*#__PURE__*/_jsx(AutocompleteLoading, {\n className: classes.loading,\n ownerState: ownerState,\n children: loadingText\n }) : null, groupedOptions.length === 0 && !freeSolo && !loading ? /*#__PURE__*/_jsx(AutocompleteNoOptions, {\n className: classes.noOptions,\n ownerState: ownerState,\n role: \"presentation\",\n onMouseDown: event => {\n // Prevent input blur when interacting with the \"no options\" content\n event.preventDefault();\n },\n children: noOptionsText\n }) : null, groupedOptions.length > 0 ? /*#__PURE__*/_jsx(AutocompleteListbox, _extends({\n as: ListboxComponent,\n className: classes.listbox,\n ownerState: ownerState\n }, otherListboxProps, ListboxProps, {\n ref: combinedListboxRef,\n children: groupedOptions.map((option, index) => {\n if (groupBy) {\n return renderGroup({\n key: option.key,\n group: option.group,\n children: option.options.map((option2, index2) => renderListOption(option2, option.index + index2))\n });\n }\n return renderListOption(option, index);\n })\n })) : null]\n }))\n })) : null]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Autocomplete.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * If `true`, the portion of the selected suggestion that has not been typed by the user,\n * known as the completion string, appears inline after the input cursor in the textbox.\n * The inline completion string is visually highlighted and has a selected state.\n * @default false\n */\n autoComplete: PropTypes.bool,\n /**\n * If `true`, the first option is automatically highlighted.\n * @default false\n */\n autoHighlight: PropTypes.bool,\n /**\n * If `true`, the selected option becomes the value of the input\n * when the Autocomplete loses focus unless the user chooses\n * a different option or changes the character string in the input.\n *\n * When using `freeSolo` mode, the typed value will be the input value\n * if the Autocomplete loses focus without highlighting an option.\n * @default false\n */\n autoSelect: PropTypes.bool,\n /**\n * Control if the input should be blurred when an option is selected:\n *\n * - `false` the input is not blurred.\n * - `true` the input is always blurred.\n * - `touch` the input is blurred after a touch event.\n * - `mouse` the input is blurred after a mouse event.\n * @default false\n */\n blurOnSelect: PropTypes.oneOfType([PropTypes.oneOf(['mouse', 'touch']), PropTypes.bool]),\n /**\n * Props applied to the [`Chip`](/material-ui/api/chip/) element.\n */\n ChipProps: PropTypes.object,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The icon to display in place of the default clear icon.\n * @default \n */\n clearIcon: PropTypes.node,\n /**\n * If `true`, the input's text is cleared on blur if no value is selected.\n *\n * Set to `true` if you want to help the user enter a new value.\n * Set to `false` if you want to help the user resume their search.\n * @default !props.freeSolo\n */\n clearOnBlur: PropTypes.bool,\n /**\n * If `true`, clear all values when the user presses escape and the popup is closed.\n * @default false\n */\n clearOnEscape: PropTypes.bool,\n /**\n * Override the default text for the *clear* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Clear'\n */\n clearText: PropTypes.string,\n /**\n * Override the default text for the *close popup* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Close'\n */\n closeText: PropTypes.string,\n /**\n * The props used for each slot inside.\n * @default {}\n */\n componentsProps: PropTypes.shape({\n clearIndicator: PropTypes.object,\n paper: PropTypes.object,\n popper: PropTypes.object,\n popupIndicator: PropTypes.object\n }),\n /**\n * The default value. Use when the component is not controlled.\n * @default props.multiple ? [] : null\n */\n defaultValue: chainPropTypes(PropTypes.any, props => {\n if (props.multiple && props.defaultValue !== undefined && !Array.isArray(props.defaultValue)) {\n return new Error(['MUI: The Autocomplete expects the `defaultValue` prop to be an array when `multiple={true}` or undefined.', `However, ${props.defaultValue} was provided.`].join('\\n'));\n }\n return null;\n }),\n /**\n * If `true`, the input can't be cleared.\n * @default false\n */\n disableClearable: PropTypes.bool,\n /**\n * If `true`, the popup won't close when a value is selected.\n * @default false\n */\n disableCloseOnSelect: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, will allow focus on disabled items.\n * @default false\n */\n disabledItemsFocusable: PropTypes.bool,\n /**\n * If `true`, the list box in the popup will not wrap focus.\n * @default false\n */\n disableListWrap: PropTypes.bool,\n /**\n * If `true`, the `Popper` content will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n /**\n * A function that determines the filtered options to be rendered on search.\n *\n * @default createFilterOptions()\n * @param {Value[]} options The options to render.\n * @param {object} state The state of the component.\n * @returns {Value[]}\n */\n filterOptions: PropTypes.func,\n /**\n * If `true`, hide the selected options from the list box.\n * @default false\n */\n filterSelectedOptions: PropTypes.bool,\n /**\n * Force the visibility display of the popup icon.\n * @default 'auto'\n */\n forcePopupIcon: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.bool]),\n /**\n * If `true`, the Autocomplete is free solo, meaning that the user input is not bound to provided options.\n * @default false\n */\n freeSolo: PropTypes.bool,\n /**\n * If `true`, the input will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * The label to display when the tags are truncated (`limitTags`).\n *\n * @param {number} more The number of truncated tags.\n * @returns {ReactNode}\n * @default (more) => `+${more}`\n */\n getLimitTagsText: PropTypes.func,\n /**\n * Used to determine the disabled state for a given option.\n *\n * @param {Value} option The option to test.\n * @returns {boolean}\n */\n getOptionDisabled: PropTypes.func,\n /**\n * Used to determine the string value for a given option.\n * It's used to fill the input (and the list box options if `renderOption` is not provided).\n *\n * If used in free solo mode, it must accept both the type of the options and a string.\n *\n * @param {Value} option\n * @returns {string}\n * @default (option) => option.label ?? option\n */\n getOptionLabel: PropTypes.func,\n /**\n * If provided, the options will be grouped under the returned string.\n * The groupBy value is also used as the text for group headings when `renderGroup` is not provided.\n *\n * @param {Value} options The options to group.\n * @returns {string}\n */\n groupBy: PropTypes.func,\n /**\n * If `true`, the component handles the \"Home\" and \"End\" keys when the popup is open.\n * It should move focus to the first option and last option, respectively.\n * @default !props.freeSolo\n */\n handleHomeEndKeys: PropTypes.bool,\n /**\n * This prop is used to help implement the accessibility logic.\n * If you don't provide an id it will fall back to a randomly generated one.\n */\n id: PropTypes.string,\n /**\n * If `true`, the highlight can move to the input.\n * @default false\n */\n includeInputInList: PropTypes.bool,\n /**\n * The input value.\n */\n inputValue: PropTypes.string,\n /**\n * Used to determine if the option represents the given value.\n * Uses strict equality by default.\n * ⚠️ Both arguments need to be handled, an option can only match with one value.\n *\n * @param {Value} option The option to test.\n * @param {Value} value The value to test against.\n * @returns {boolean}\n */\n isOptionEqualToValue: PropTypes.func,\n /**\n * The maximum number of tags that will be visible when not focused.\n * Set `-1` to disable the limit.\n * @default -1\n */\n limitTags: integerPropType,\n /**\n * The component used to render the listbox.\n * @default 'ul'\n */\n ListboxComponent: PropTypes.elementType,\n /**\n * Props applied to the Listbox element.\n */\n ListboxProps: PropTypes.object,\n /**\n * If `true`, the component is in a loading state.\n * This shows the `loadingText` in place of suggestions (only if there are no suggestions to show, e.g. `options` are empty).\n * @default false\n */\n loading: PropTypes.bool,\n /**\n * Text to display when in a loading state.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Loading…'\n */\n loadingText: PropTypes.node,\n /**\n * If `true`, `value` must be an array and the menu will support multiple selections.\n * @default false\n */\n multiple: PropTypes.bool,\n /**\n * Text to display when there are no options.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'No options'\n */\n noOptionsText: PropTypes.node,\n /**\n * Callback fired when the value changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {Value|Value[]} value The new value of the component.\n * @param {string} reason One of \"createOption\", \"selectOption\", \"removeOption\", \"blur\" or \"clear\".\n * @param {string} [details]\n */\n onChange: PropTypes.func,\n /**\n * Callback fired when the popup requests to be closed.\n * Use in controlled mode (see open).\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {string} reason Can be: `\"toggleInput\"`, `\"escape\"`, `\"selectOption\"`, `\"removeOption\"`, `\"blur\"`.\n */\n onClose: PropTypes.func,\n /**\n * Callback fired when the highlight option changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {Value} option The highlighted option.\n * @param {string} reason Can be: `\"keyboard\"`, `\"auto\"`, `\"mouse\"`, `\"touch\"`.\n */\n onHighlightChange: PropTypes.func,\n /**\n * Callback fired when the input value changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {string} value The new value of the text input.\n * @param {string} reason Can be: `\"input\"` (user input), `\"reset\"` (programmatic change), `\"clear\"`.\n */\n onInputChange: PropTypes.func,\n /**\n * Callback fired when the popup requests to be opened.\n * Use in controlled mode (see open).\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n */\n onOpen: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool,\n /**\n * If `true`, the popup will open on input focus.\n * @default false\n */\n openOnFocus: PropTypes.bool,\n /**\n * Override the default text for the *open popup* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Open'\n */\n openText: PropTypes.string,\n /**\n * Array of options.\n */\n options: PropTypes.array.isRequired,\n /**\n * The component used to render the body of the popup.\n * @default Paper\n */\n PaperComponent: PropTypes.elementType,\n /**\n * The component used to position the popup.\n * @default Popper\n */\n PopperComponent: PropTypes.elementType,\n /**\n * The icon to display in place of the default popup icon.\n * @default \n */\n popupIcon: PropTypes.node,\n /**\n * If `true`, the component becomes readonly. It is also supported for multiple tags where the tag cannot be deleted.\n * @default false\n */\n readOnly: PropTypes.bool,\n /**\n * Render the group.\n *\n * @param {AutocompleteRenderGroupParams} params The group to render.\n * @returns {ReactNode}\n */\n renderGroup: PropTypes.func,\n /**\n * Render the input.\n *\n * @param {object} params\n * @returns {ReactNode}\n */\n renderInput: PropTypes.func.isRequired,\n /**\n * Render the option, use `getOptionLabel` by default.\n *\n * @param {object} props The props to apply on the li element.\n * @param {Value} option The option to render.\n * @param {object} state The state of each option.\n * @param {object} ownerState The state of the Autocomplete component.\n * @returns {ReactNode}\n */\n renderOption: PropTypes.func,\n /**\n * Render the selected value.\n *\n * @param {Value[]} value The `value` provided to the component.\n * @param {function} getTagProps A tag props getter.\n * @param {object} ownerState The state of the Autocomplete component.\n * @returns {ReactNode}\n */\n renderTags: PropTypes.func,\n /**\n * If `true`, the input's text is selected on focus.\n * It helps the user clear the selected value.\n * @default !props.freeSolo\n */\n selectOnFocus: PropTypes.bool,\n /**\n * The size of the component.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium']), PropTypes.string]),\n /**\n * The props used for each slot inside.\n * @default {}\n */\n slotProps: PropTypes.shape({\n clearIndicator: PropTypes.object,\n paper: PropTypes.object,\n popper: PropTypes.object,\n popupIndicator: PropTypes.object\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The value of the autocomplete.\n *\n * The value must have reference equality with the option in order to be selected.\n * You can customize the equality behavior with the `isOptionEqualToValue` prop.\n */\n value: chainPropTypes(PropTypes.any, props => {\n if (props.multiple && props.value !== undefined && !Array.isArray(props.value)) {\n return new Error(['MUI: The Autocomplete expects the `value` prop to be an array when `multiple={true}` or undefined.', `However, ${props.value} was provided.`].join('\\n'));\n }\n return null;\n })\n} : void 0;\nexport default Autocomplete;"],"names":["stripDiacritics","string","normalize","replace","findIndex","array","comp","i","length","defaultFilterOptions","config","arguments","undefined","_config$ignoreAccents","ignoreAccents","_config$ignoreCase","ignoreCase","limit","_config$matchFrom","matchFrom","stringify","_config$trim","trim","options","_ref","inputValue","getOptionLabel","input","toLowerCase","filteredOptions","filter","option","candidate","indexOf","slice","createFilterOptions","defaultIsActiveElementInListbox","listboxRef","_listboxRef$current$p","current","parentElement","contains","document","activeElement","useAutocomplete","props","_props$unstable_isAct","unstable_isActiveElementInListbox","_props$unstable_class","unstable_classNamePrefix","_props$autoComplete","autoComplete","_props$autoHighlight","autoHighlight","_props$autoSelect","autoSelect","_props$blurOnSelect","blurOnSelect","_props$clearOnBlur","clearOnBlur","freeSolo","_props$clearOnEscape","clearOnEscape","_props$componentName","componentName","_props$defaultValue","defaultValue","multiple","_props$disableClearab","disableClearable","_props$disableCloseOn","disableCloseOnSelect","disabledProp","disabled","_props$disabledItemsF","disabledItemsFocusable","_props$disableListWra","disableListWrap","_props$filterOptions","filterOptions","_props$filterSelected","filterSelectedOptions","_props$freeSolo","getOptionDisabled","_props$getOptionLabel","getOptionLabelProp","_option$label","label","groupBy","_props$handleHomeEndK","handleHomeEndKeys","idProp","id","_props$includeInputIn","includeInputInList","inputValueProp","_props$isOptionEqualT","isOptionEqualToValue","value","_props$multiple","onChange","onClose","onHighlightChange","onInputChange","onOpen","openProp","open","_props$openOnFocus","openOnFocus","_props$readOnly","readOnly","_props$selectOnFocus","selectOnFocus","valueProp","useId","optionLabel","String","ignoreFocus","React","firstFocus","inputRef","_React$useState","_React$useState2","_slicedToArray","anchorEl","setAnchorEl","_React$useState3","_React$useState4","focusedTag","setFocusedTag","defaultHighlighted","highlightedIndexRef","_useControlled","useControlled","controlled","default","name","_useControlled2","setValueState","_useControlled3","state","_useControlled4","setInputValueState","_React$useState5","_React$useState6","focused","setFocused","resetInputValue","event","newValue","newInputValue","_useControlled5","_useControlled6","setOpenState","_React$useState7","_React$useState8","inputPristine","setInputPristine","inputValueIsSelectedValue","popupOpen","some","value2","previousProps","usePreviousProps","valueChange","listboxAvailable","focusTag","useEventCallback","tagToFocus","focus","querySelector","concat","setHighlightedIndex","_ref2","index","_ref2$reason","reason","removeAttribute","setAttribute","prev","classList","remove","listboxNode","getAttribute","add","scrollHeight","clientHeight","element","scrollBottom","scrollTop","elementBottom","offsetTop","offsetHeight","changeHighlightedIndex","_ref3","diff","_ref3$direction","direction","_ref3$reason","nextIndex","nextFocus","nextFocusDisabled","hasAttribute","validOptionIndex","maxIndex","newIndex","Math","abs","getNextIndex","setSelectionRange","syncHighlightedIndex","value1","every","val","previousHighlightedOption","checkHighlightedOptionExists","valueItem","currentOption","itemIndex","optionItem","handleListboxRef","node","setRef","handleOpen","handleClose","handleValue","details","isTouch","selectNewValue","origin","Array","isArray","push","splice","ctrlKey","metaKey","blur","handleFocusTag","nextTag","validTagIndex","handleClear","handleKeyDown","other","onKeyDown","defaultMuiPrevented","key","which","preventDefault","stopPropagation","handleFocus","handleBlur","handleInputChange","target","handleOptionMouseMove","Number","currentTarget","handleOptionTouchStart","handleOptionClick","handleTagDelete","handlePopupIndicator","handleMouseDown","handleClick","selectionEnd","selectionStart","select","handleInputMouseDown","dirty","groupedOptions","Map","reduce","acc","group","getRootProps","_extends","onMouseDown","onClick","getInputLabelProps","htmlFor","getInputProps","onBlur","onFocus","ref","autoCapitalize","spellCheck","role","getClearProps","tabIndex","getPopupIndicatorProps","getTagProps","_ref4","onDelete","getListboxProps","getOptionProps","_ref5","selected","onMouseMove","onTouchStart","expanded","getListSubheaderUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","ListSubheaderRoot","styled","overridesResolver","styles","ownerState","root","color","capitalize","disableGutters","gutters","inset","disableSticky","sticky","theme","boxSizing","lineHeight","listStyle","vars","palette","text","secondary","fontFamily","typography","fontWeight","fontWeightMedium","fontSize","pxToRem","primary","main","paddingLeft","paddingRight","position","top","zIndex","backgroundColor","background","paper","ListSubheader","inProps","useThemeProps","className","_props$color","_props$component","component","_props$disableGutters","_props$disableSticky","_props$inset","_objectWithoutPropertiesLoose","classes","slots","composeClasses","useUtilityClasses","_jsx","as","clsx","muiSkipListHighlight","createSvgIcon","d","getAutocompleteUtilityClass","_ClearIcon","_ArrowDropDownIcon","_excluded2","AutocompleteRoot","fullWidth","hasClearIcon","hasPopupIcon","inputFocused","size","_defineProperty","autocompleteClasses","tag","inputRoot","_ref6","_extends2","_$concat","_$concat2","_$concat3","_extends3","clearIndicator","visibility","width","margin","maxWidth","flexWrap","minWidth","inputClasses","paddingBottom","padding","inputBaseClasses","sizeSmall","outlinedInputClasses","endAdornment","right","paddingTop","filledInputClasses","hiddenLabel","flexGrow","textOverflow","opacity","AutocompleteEndAdornment","AutocompleteClearIndicator","IconButton","marginRight","AutocompletePopupIndicator","_ref7","popupIndicator","popupIndicatorOpen","_ref8","transform","AutocompletePopper","Popper","popper","disablePortal","popperDisablePortal","_ref10","modal","AutocompletePaper","Paper","_ref11","body1","overflow","AutocompleteLoading","loading","_ref12","AutocompleteNoOptions","noOptions","_ref13","AutocompleteListbox","listbox","_ref14","_ariaSelectedTru","_$concat4","maxHeight","minHeight","display","justifyContent","alignItems","cursor","outline","WebkitTapHighlightColor","breakpoints","up","action","hover","disabledOpacity","pointerEvents","focusVisible","mainChannel","selectedOpacity","alpha","hoverOpacity","focusOpacity","AutocompleteGroupLabel","groupLabel","_ref16","AutocompleteGroupUl","groupUl","_slotProps$clearIndic","_slotProps$paper","_slotProps$popper","_slotProps$popupIndic","startAdornment","ChipProps","_props$clearIcon","clearIcon","ClearIcon","_props$clearText","clearText","_props$closeText","closeText","_props$componentsProp","componentsProps","_props$disabled","_props$disablePortal","_props$forcePopupIcon","forcePopupIcon","_props$fullWidth","_props$getLimitTagsTe","getLimitTagsText","more","_props$limitTags","limitTags","_props$ListboxCompone","ListboxComponent","ListboxProps","_props$loading","_props$loadingText","loadingText","_props$noOptionsText","noOptionsText","_props$openText","openText","_props$PaperComponent","PaperComponent","_props$PopperComponen","PopperComponent","_props$popupIcon","popupIcon","ArrowDropDownIcon","renderGroupProp","renderGroup","renderInput","renderOptionProp","renderOption","renderTags","_props$size","_props$slotProps","slotProps","_useAutocomplete","externalListboxRef","_getListboxProps","otherListboxProps","combinedListboxRef","useForkRef","getCustomizedTagProps","params","map","Chip","children","_jsxs","props2","renderListOption","optionProps","clearIndicatorSlotProps","paperSlotProps","popperSlotProps","popupIndicatorSlotProps","InputLabelProps","InputProps","title","inputProps","style","clientWidth","option2","index2"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/6786.1f6da6c6.chunk.js","mappings":"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","sources":["../node_modules/@mui/base/useAutocomplete/useAutocomplete.js","../node_modules/@mui/material/ListSubheader/listSubheaderClasses.js","../node_modules/@mui/material/ListSubheader/ListSubheader.js","../node_modules/@mui/material/internal/svg-icons/Close.js","../node_modules/@mui/material/Autocomplete/autocompleteClasses.js","../node_modules/@mui/material/Autocomplete/Autocomplete.js"],"sourcesContent":["'use client';\n\n/* eslint-disable no-constant-condition */\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { unstable_setRef as setRef, unstable_useEventCallback as useEventCallback, unstable_useControlled as useControlled, unstable_useId as useId, usePreviousProps } from '@mui/utils';\n\n// https://stackoverflow.com/questions/990904/remove-accents-diacritics-in-a-string-in-javascript\n// Give up on IE11 support for this feature\nfunction stripDiacritics(string) {\n return typeof string.normalize !== 'undefined' ? string.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') : string;\n}\nexport function createFilterOptions(config = {}) {\n const {\n ignoreAccents = true,\n ignoreCase = true,\n limit,\n matchFrom = 'any',\n stringify,\n trim = false\n } = config;\n return (options, {\n inputValue,\n getOptionLabel\n }) => {\n let input = trim ? inputValue.trim() : inputValue;\n if (ignoreCase) {\n input = input.toLowerCase();\n }\n if (ignoreAccents) {\n input = stripDiacritics(input);\n }\n const filteredOptions = !input ? options : options.filter(option => {\n let candidate = (stringify || getOptionLabel)(option);\n if (ignoreCase) {\n candidate = candidate.toLowerCase();\n }\n if (ignoreAccents) {\n candidate = stripDiacritics(candidate);\n }\n return matchFrom === 'start' ? candidate.indexOf(input) === 0 : candidate.indexOf(input) > -1;\n });\n return typeof limit === 'number' ? filteredOptions.slice(0, limit) : filteredOptions;\n };\n}\n\n// To replace with .findIndex() once we stop IE11 support.\nfunction findIndex(array, comp) {\n for (let i = 0; i < array.length; i += 1) {\n if (comp(array[i])) {\n return i;\n }\n }\n return -1;\n}\nconst defaultFilterOptions = createFilterOptions();\n\n// Number of options to jump in list box when `Page Up` and `Page Down` keys are used.\nconst pageSize = 5;\nconst defaultIsActiveElementInListbox = listboxRef => {\n var _listboxRef$current$p;\n return listboxRef.current !== null && ((_listboxRef$current$p = listboxRef.current.parentElement) == null ? void 0 : _listboxRef$current$p.contains(document.activeElement));\n};\nexport function useAutocomplete(props) {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n unstable_isActiveElementInListbox = defaultIsActiveElementInListbox,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n unstable_classNamePrefix = 'Mui',\n autoComplete = false,\n autoHighlight = false,\n autoSelect = false,\n blurOnSelect = false,\n clearOnBlur = !props.freeSolo,\n clearOnEscape = false,\n componentName = 'useAutocomplete',\n defaultValue = props.multiple ? [] : null,\n disableClearable = false,\n disableCloseOnSelect = false,\n disabled: disabledProp,\n disabledItemsFocusable = false,\n disableListWrap = false,\n filterOptions = defaultFilterOptions,\n filterSelectedOptions = false,\n freeSolo = false,\n getOptionDisabled,\n getOptionLabel: getOptionLabelProp = option => {\n var _option$label;\n return (_option$label = option.label) != null ? _option$label : option;\n },\n groupBy,\n handleHomeEndKeys = !props.freeSolo,\n id: idProp,\n includeInputInList = false,\n inputValue: inputValueProp,\n isOptionEqualToValue = (option, value) => option === value,\n multiple = false,\n onChange,\n onClose,\n onHighlightChange,\n onInputChange,\n onOpen,\n open: openProp,\n openOnFocus = false,\n options,\n readOnly = false,\n selectOnFocus = !props.freeSolo,\n value: valueProp\n } = props;\n const id = useId(idProp);\n let getOptionLabel = getOptionLabelProp;\n getOptionLabel = option => {\n const optionLabel = getOptionLabelProp(option);\n if (typeof optionLabel !== 'string') {\n if (process.env.NODE_ENV !== 'production') {\n const erroneousReturn = optionLabel === undefined ? 'undefined' : `${typeof optionLabel} (${optionLabel})`;\n console.error(`MUI: The \\`getOptionLabel\\` method of ${componentName} returned ${erroneousReturn} instead of a string for ${JSON.stringify(option)}.`);\n }\n return String(optionLabel);\n }\n return optionLabel;\n };\n const ignoreFocus = React.useRef(false);\n const firstFocus = React.useRef(true);\n const inputRef = React.useRef(null);\n const listboxRef = React.useRef(null);\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [focusedTag, setFocusedTag] = React.useState(-1);\n const defaultHighlighted = autoHighlight ? 0 : -1;\n const highlightedIndexRef = React.useRef(defaultHighlighted);\n const [value, setValueState] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: componentName\n });\n const [inputValue, setInputValueState] = useControlled({\n controlled: inputValueProp,\n default: '',\n name: componentName,\n state: 'inputValue'\n });\n const [focused, setFocused] = React.useState(false);\n const resetInputValue = React.useCallback((event, newValue) => {\n // retain current `inputValue` if new option isn't selected and `clearOnBlur` is false\n // When `multiple` is enabled, `newValue` is an array of all selected items including the newly selected item\n const isOptionSelected = multiple ? value.length < newValue.length : newValue !== null;\n if (!isOptionSelected && !clearOnBlur) {\n return;\n }\n let newInputValue;\n if (multiple) {\n newInputValue = '';\n } else if (newValue == null) {\n newInputValue = '';\n } else {\n const optionLabel = getOptionLabel(newValue);\n newInputValue = typeof optionLabel === 'string' ? optionLabel : '';\n }\n if (inputValue === newInputValue) {\n return;\n }\n setInputValueState(newInputValue);\n if (onInputChange) {\n onInputChange(event, newInputValue, 'reset');\n }\n }, [getOptionLabel, inputValue, multiple, onInputChange, setInputValueState, clearOnBlur, value]);\n const [open, setOpenState] = useControlled({\n controlled: openProp,\n default: false,\n name: componentName,\n state: 'open'\n });\n const [inputPristine, setInputPristine] = React.useState(true);\n const inputValueIsSelectedValue = !multiple && value != null && inputValue === getOptionLabel(value);\n const popupOpen = open && !readOnly;\n const filteredOptions = popupOpen ? filterOptions(options.filter(option => {\n if (filterSelectedOptions && (multiple ? value : [value]).some(value2 => value2 !== null && isOptionEqualToValue(option, value2))) {\n return false;\n }\n return true;\n }),\n // we use the empty string to manipulate `filterOptions` to not filter any options\n // i.e. the filter predicate always returns true\n {\n inputValue: inputValueIsSelectedValue && inputPristine ? '' : inputValue,\n getOptionLabel\n }) : [];\n const previousProps = usePreviousProps({\n filteredOptions,\n value,\n inputValue\n });\n React.useEffect(() => {\n const valueChange = value !== previousProps.value;\n if (focused && !valueChange) {\n return;\n }\n\n // Only reset the input's value when freeSolo if the component's value changes.\n if (freeSolo && !valueChange) {\n return;\n }\n resetInputValue(null, value);\n }, [value, resetInputValue, focused, previousProps.value, freeSolo]);\n const listboxAvailable = open && filteredOptions.length > 0 && !readOnly;\n if (process.env.NODE_ENV !== 'production') {\n if (value !== null && !freeSolo && options.length > 0) {\n const missingValue = (multiple ? value : [value]).filter(value2 => !options.some(option => isOptionEqualToValue(option, value2)));\n if (missingValue.length > 0) {\n console.warn([`MUI: The value provided to ${componentName} is invalid.`, `None of the options match with \\`${missingValue.length > 1 ? JSON.stringify(missingValue) : JSON.stringify(missingValue[0])}\\`.`, 'You can use the `isOptionEqualToValue` prop to customize the equality test.'].join('\\n'));\n }\n }\n }\n const focusTag = useEventCallback(tagToFocus => {\n if (tagToFocus === -1) {\n inputRef.current.focus();\n } else {\n anchorEl.querySelector(`[data-tag-index=\"${tagToFocus}\"]`).focus();\n }\n });\n\n // Ensure the focusedTag is never inconsistent\n React.useEffect(() => {\n if (multiple && focusedTag > value.length - 1) {\n setFocusedTag(-1);\n focusTag(-1);\n }\n }, [value, multiple, focusedTag, focusTag]);\n function validOptionIndex(index, direction) {\n if (!listboxRef.current || index === -1) {\n return -1;\n }\n let nextFocus = index;\n while (true) {\n // Out of range\n if (direction === 'next' && nextFocus === filteredOptions.length || direction === 'previous' && nextFocus === -1) {\n return -1;\n }\n const option = listboxRef.current.querySelector(`[data-option-index=\"${nextFocus}\"]`);\n\n // Same logic as MenuList.js\n const nextFocusDisabled = disabledItemsFocusable ? false : !option || option.disabled || option.getAttribute('aria-disabled') === 'true';\n if (option && !option.hasAttribute('tabindex') || nextFocusDisabled) {\n // Move to the next element.\n nextFocus += direction === 'next' ? 1 : -1;\n } else {\n return nextFocus;\n }\n }\n }\n const setHighlightedIndex = useEventCallback(({\n event,\n index,\n reason = 'auto'\n }) => {\n highlightedIndexRef.current = index;\n\n // does the index exist?\n if (index === -1) {\n inputRef.current.removeAttribute('aria-activedescendant');\n } else {\n inputRef.current.setAttribute('aria-activedescendant', `${id}-option-${index}`);\n }\n if (onHighlightChange) {\n onHighlightChange(event, index === -1 ? null : filteredOptions[index], reason);\n }\n if (!listboxRef.current) {\n return;\n }\n const prev = listboxRef.current.querySelector(`[role=\"option\"].${unstable_classNamePrefix}-focused`);\n if (prev) {\n prev.classList.remove(`${unstable_classNamePrefix}-focused`);\n prev.classList.remove(`${unstable_classNamePrefix}-focusVisible`);\n }\n let listboxNode = listboxRef.current;\n if (listboxRef.current.getAttribute('role') !== 'listbox') {\n listboxNode = listboxRef.current.parentElement.querySelector('[role=\"listbox\"]');\n }\n\n // \"No results\"\n if (!listboxNode) {\n return;\n }\n if (index === -1) {\n listboxNode.scrollTop = 0;\n return;\n }\n const option = listboxRef.current.querySelector(`[data-option-index=\"${index}\"]`);\n if (!option) {\n return;\n }\n option.classList.add(`${unstable_classNamePrefix}-focused`);\n if (reason === 'keyboard') {\n option.classList.add(`${unstable_classNamePrefix}-focusVisible`);\n }\n\n // Scroll active descendant into view.\n // Logic copied from https://www.w3.org/WAI/content-assets/wai-aria-practices/patterns/combobox/examples/js/select-only.js\n // In case of mouse clicks and touch (in mobile devices) we avoid scrolling the element and keep both behaviors same.\n // Consider this API instead once it has a better browser support:\n // .scrollIntoView({ scrollMode: 'if-needed', block: 'nearest' });\n if (listboxNode.scrollHeight > listboxNode.clientHeight && reason !== 'mouse' && reason !== 'touch') {\n const element = option;\n const scrollBottom = listboxNode.clientHeight + listboxNode.scrollTop;\n const elementBottom = element.offsetTop + element.offsetHeight;\n if (elementBottom > scrollBottom) {\n listboxNode.scrollTop = elementBottom - listboxNode.clientHeight;\n } else if (element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0) < listboxNode.scrollTop) {\n listboxNode.scrollTop = element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0);\n }\n }\n });\n const changeHighlightedIndex = useEventCallback(({\n event,\n diff,\n direction = 'next',\n reason = 'auto'\n }) => {\n if (!popupOpen) {\n return;\n }\n const getNextIndex = () => {\n const maxIndex = filteredOptions.length - 1;\n if (diff === 'reset') {\n return defaultHighlighted;\n }\n if (diff === 'start') {\n return 0;\n }\n if (diff === 'end') {\n return maxIndex;\n }\n const newIndex = highlightedIndexRef.current + diff;\n if (newIndex < 0) {\n if (newIndex === -1 && includeInputInList) {\n return -1;\n }\n if (disableListWrap && highlightedIndexRef.current !== -1 || Math.abs(diff) > 1) {\n return 0;\n }\n return maxIndex;\n }\n if (newIndex > maxIndex) {\n if (newIndex === maxIndex + 1 && includeInputInList) {\n return -1;\n }\n if (disableListWrap || Math.abs(diff) > 1) {\n return maxIndex;\n }\n return 0;\n }\n return newIndex;\n };\n const nextIndex = validOptionIndex(getNextIndex(), direction);\n setHighlightedIndex({\n index: nextIndex,\n reason,\n event\n });\n\n // Sync the content of the input with the highlighted option.\n if (autoComplete && diff !== 'reset') {\n if (nextIndex === -1) {\n inputRef.current.value = inputValue;\n } else {\n const option = getOptionLabel(filteredOptions[nextIndex]);\n inputRef.current.value = option;\n\n // The portion of the selected suggestion that has not been typed by the user,\n // a completion string, appears inline after the input cursor in the textbox.\n const index = option.toLowerCase().indexOf(inputValue.toLowerCase());\n if (index === 0 && inputValue.length > 0) {\n inputRef.current.setSelectionRange(inputValue.length, option.length);\n }\n }\n }\n });\n const checkHighlightedOptionExists = () => {\n const isSameValue = (value1, value2) => {\n const label1 = value1 ? getOptionLabel(value1) : '';\n const label2 = value2 ? getOptionLabel(value2) : '';\n return label1 === label2;\n };\n if (highlightedIndexRef.current !== -1 && previousProps.filteredOptions && previousProps.filteredOptions.length !== filteredOptions.length && previousProps.inputValue === inputValue && (multiple ? value.length === previousProps.value.length && previousProps.value.every((val, i) => getOptionLabel(value[i]) === getOptionLabel(val)) : isSameValue(previousProps.value, value))) {\n const previousHighlightedOption = previousProps.filteredOptions[highlightedIndexRef.current];\n if (previousHighlightedOption) {\n const previousHighlightedOptionExists = filteredOptions.some(option => {\n return getOptionLabel(option) === getOptionLabel(previousHighlightedOption);\n });\n if (previousHighlightedOptionExists) {\n return true;\n }\n }\n }\n return false;\n };\n const syncHighlightedIndex = React.useCallback(() => {\n if (!popupOpen) {\n return;\n }\n\n // Check if the previously highlighted option still exists in the updated filtered options list and if the value and inputValue haven't changed\n // If it exists and the value and the inputValue haven't changed, return, otherwise continue execution\n if (checkHighlightedOptionExists()) {\n return;\n }\n const valueItem = multiple ? value[0] : value;\n\n // The popup is empty, reset\n if (filteredOptions.length === 0 || valueItem == null) {\n changeHighlightedIndex({\n diff: 'reset'\n });\n return;\n }\n if (!listboxRef.current) {\n return;\n }\n\n // Synchronize the value with the highlighted index\n if (valueItem != null) {\n const currentOption = filteredOptions[highlightedIndexRef.current];\n\n // Keep the current highlighted index if possible\n if (multiple && currentOption && findIndex(value, val => isOptionEqualToValue(currentOption, val)) !== -1) {\n return;\n }\n const itemIndex = findIndex(filteredOptions, optionItem => isOptionEqualToValue(optionItem, valueItem));\n if (itemIndex === -1) {\n changeHighlightedIndex({\n diff: 'reset'\n });\n } else {\n setHighlightedIndex({\n index: itemIndex\n });\n }\n return;\n }\n\n // Prevent the highlighted index to leak outside the boundaries.\n if (highlightedIndexRef.current >= filteredOptions.length - 1) {\n setHighlightedIndex({\n index: filteredOptions.length - 1\n });\n return;\n }\n\n // Restore the focus to the previous index.\n setHighlightedIndex({\n index: highlightedIndexRef.current\n });\n // Ignore filteredOptions (and options, isOptionEqualToValue, getOptionLabel) not to break the scroll position\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n // Only sync the highlighted index when the option switch between empty and not\n filteredOptions.length,\n // Don't sync the highlighted index with the value when multiple\n // eslint-disable-next-line react-hooks/exhaustive-deps\n multiple ? false : value, filterSelectedOptions, changeHighlightedIndex, setHighlightedIndex, popupOpen, inputValue, multiple]);\n const handleListboxRef = useEventCallback(node => {\n setRef(listboxRef, node);\n if (!node) {\n return;\n }\n syncHighlightedIndex();\n });\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (!inputRef.current || inputRef.current.nodeName !== 'INPUT') {\n if (inputRef.current && inputRef.current.nodeName === 'TEXTAREA') {\n console.warn([`A textarea element was provided to ${componentName} where input was expected.`, `This is not a supported scenario but it may work under certain conditions.`, `A textarea keyboard navigation may conflict with Autocomplete controls (e.g. enter and arrow keys).`, `Make sure to test keyboard navigation and add custom event handlers if necessary.`].join('\\n'));\n } else {\n console.error([`MUI: Unable to find the input element. It was resolved to ${inputRef.current} while an HTMLInputElement was expected.`, `Instead, ${componentName} expects an input element.`, '', componentName === 'useAutocomplete' ? 'Make sure you have bound getInputProps correctly and that the normal ref/effect resolutions order is guaranteed.' : 'Make sure you have customized the input component correctly.'].join('\\n'));\n }\n }\n }, [componentName]);\n }\n React.useEffect(() => {\n syncHighlightedIndex();\n }, [syncHighlightedIndex]);\n const handleOpen = event => {\n if (open) {\n return;\n }\n setOpenState(true);\n setInputPristine(true);\n if (onOpen) {\n onOpen(event);\n }\n };\n const handleClose = (event, reason) => {\n if (!open) {\n return;\n }\n setOpenState(false);\n if (onClose) {\n onClose(event, reason);\n }\n };\n const handleValue = (event, newValue, reason, details) => {\n if (multiple) {\n if (value.length === newValue.length && value.every((val, i) => val === newValue[i])) {\n return;\n }\n } else if (value === newValue) {\n return;\n }\n if (onChange) {\n onChange(event, newValue, reason, details);\n }\n setValueState(newValue);\n };\n const isTouch = React.useRef(false);\n const selectNewValue = (event, option, reasonProp = 'selectOption', origin = 'options') => {\n let reason = reasonProp;\n let newValue = option;\n if (multiple) {\n newValue = Array.isArray(value) ? value.slice() : [];\n if (process.env.NODE_ENV !== 'production') {\n const matches = newValue.filter(val => isOptionEqualToValue(option, val));\n if (matches.length > 1) {\n console.error([`MUI: The \\`isOptionEqualToValue\\` method of ${componentName} does not handle the arguments correctly.`, `The component expects a single value to match a given option but found ${matches.length} matches.`].join('\\n'));\n }\n }\n const itemIndex = findIndex(newValue, valueItem => isOptionEqualToValue(option, valueItem));\n if (itemIndex === -1) {\n newValue.push(option);\n } else if (origin !== 'freeSolo') {\n newValue.splice(itemIndex, 1);\n reason = 'removeOption';\n }\n }\n resetInputValue(event, newValue);\n handleValue(event, newValue, reason, {\n option\n });\n if (!disableCloseOnSelect && (!event || !event.ctrlKey && !event.metaKey)) {\n handleClose(event, reason);\n }\n if (blurOnSelect === true || blurOnSelect === 'touch' && isTouch.current || blurOnSelect === 'mouse' && !isTouch.current) {\n inputRef.current.blur();\n }\n };\n function validTagIndex(index, direction) {\n if (index === -1) {\n return -1;\n }\n let nextFocus = index;\n while (true) {\n // Out of range\n if (direction === 'next' && nextFocus === value.length || direction === 'previous' && nextFocus === -1) {\n return -1;\n }\n const option = anchorEl.querySelector(`[data-tag-index=\"${nextFocus}\"]`);\n\n // Same logic as MenuList.js\n if (!option || !option.hasAttribute('tabindex') || option.disabled || option.getAttribute('aria-disabled') === 'true') {\n nextFocus += direction === 'next' ? 1 : -1;\n } else {\n return nextFocus;\n }\n }\n }\n const handleFocusTag = (event, direction) => {\n if (!multiple) {\n return;\n }\n if (inputValue === '') {\n handleClose(event, 'toggleInput');\n }\n let nextTag = focusedTag;\n if (focusedTag === -1) {\n if (inputValue === '' && direction === 'previous') {\n nextTag = value.length - 1;\n }\n } else {\n nextTag += direction === 'next' ? 1 : -1;\n if (nextTag < 0) {\n nextTag = 0;\n }\n if (nextTag === value.length) {\n nextTag = -1;\n }\n }\n nextTag = validTagIndex(nextTag, direction);\n setFocusedTag(nextTag);\n focusTag(nextTag);\n };\n const handleClear = event => {\n ignoreFocus.current = true;\n setInputValueState('');\n if (onInputChange) {\n onInputChange(event, '', 'clear');\n }\n handleValue(event, multiple ? [] : null, 'clear');\n };\n const handleKeyDown = other => event => {\n if (other.onKeyDown) {\n other.onKeyDown(event);\n }\n if (event.defaultMuiPrevented) {\n return;\n }\n if (focusedTag !== -1 && ['ArrowLeft', 'ArrowRight'].indexOf(event.key) === -1) {\n setFocusedTag(-1);\n focusTag(-1);\n }\n\n // Wait until IME is settled.\n if (event.which !== 229) {\n switch (event.key) {\n case 'Home':\n if (popupOpen && handleHomeEndKeys) {\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: 'start',\n direction: 'next',\n reason: 'keyboard',\n event\n });\n }\n break;\n case 'End':\n if (popupOpen && handleHomeEndKeys) {\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: 'end',\n direction: 'previous',\n reason: 'keyboard',\n event\n });\n }\n break;\n case 'PageUp':\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: -pageSize,\n direction: 'previous',\n reason: 'keyboard',\n event\n });\n handleOpen(event);\n break;\n case 'PageDown':\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: pageSize,\n direction: 'next',\n reason: 'keyboard',\n event\n });\n handleOpen(event);\n break;\n case 'ArrowDown':\n // Prevent cursor move\n event.preventDefault();\n changeHighlightedIndex({\n diff: 1,\n direction: 'next',\n reason: 'keyboard',\n event\n });\n handleOpen(event);\n break;\n case 'ArrowUp':\n // Prevent cursor move\n event.preventDefault();\n changeHighlightedIndex({\n diff: -1,\n direction: 'previous',\n reason: 'keyboard',\n event\n });\n handleOpen(event);\n break;\n case 'ArrowLeft':\n handleFocusTag(event, 'previous');\n break;\n case 'ArrowRight':\n handleFocusTag(event, 'next');\n break;\n case 'Enter':\n if (highlightedIndexRef.current !== -1 && popupOpen) {\n const option = filteredOptions[highlightedIndexRef.current];\n const disabled = getOptionDisabled ? getOptionDisabled(option) : false;\n\n // Avoid early form validation, let the end-users continue filling the form.\n event.preventDefault();\n if (disabled) {\n return;\n }\n selectNewValue(event, option, 'selectOption');\n\n // Move the selection to the end.\n if (autoComplete) {\n inputRef.current.setSelectionRange(inputRef.current.value.length, inputRef.current.value.length);\n }\n } else if (freeSolo && inputValue !== '' && inputValueIsSelectedValue === false) {\n if (multiple) {\n // Allow people to add new values before they submit the form.\n event.preventDefault();\n }\n selectNewValue(event, inputValue, 'createOption', 'freeSolo');\n }\n break;\n case 'Escape':\n if (popupOpen) {\n // Avoid Opera to exit fullscreen mode.\n event.preventDefault();\n // Avoid the Modal to handle the event.\n event.stopPropagation();\n handleClose(event, 'escape');\n } else if (clearOnEscape && (inputValue !== '' || multiple && value.length > 0)) {\n // Avoid Opera to exit fullscreen mode.\n event.preventDefault();\n // Avoid the Modal to handle the event.\n event.stopPropagation();\n handleClear(event);\n }\n break;\n case 'Backspace':\n if (multiple && !readOnly && inputValue === '' && value.length > 0) {\n const index = focusedTag === -1 ? value.length - 1 : focusedTag;\n const newValue = value.slice();\n newValue.splice(index, 1);\n handleValue(event, newValue, 'removeOption', {\n option: value[index]\n });\n }\n break;\n case 'Delete':\n if (multiple && !readOnly && inputValue === '' && value.length > 0 && focusedTag !== -1) {\n const index = focusedTag;\n const newValue = value.slice();\n newValue.splice(index, 1);\n handleValue(event, newValue, 'removeOption', {\n option: value[index]\n });\n }\n break;\n default:\n }\n }\n };\n const handleFocus = event => {\n setFocused(true);\n if (openOnFocus && !ignoreFocus.current) {\n handleOpen(event);\n }\n };\n const handleBlur = event => {\n // Ignore the event when using the scrollbar with IE11\n if (unstable_isActiveElementInListbox(listboxRef)) {\n inputRef.current.focus();\n return;\n }\n setFocused(false);\n firstFocus.current = true;\n ignoreFocus.current = false;\n if (autoSelect && highlightedIndexRef.current !== -1 && popupOpen) {\n selectNewValue(event, filteredOptions[highlightedIndexRef.current], 'blur');\n } else if (autoSelect && freeSolo && inputValue !== '') {\n selectNewValue(event, inputValue, 'blur', 'freeSolo');\n } else if (clearOnBlur) {\n resetInputValue(event, value);\n }\n handleClose(event, 'blur');\n };\n const handleInputChange = event => {\n const newValue = event.target.value;\n if (inputValue !== newValue) {\n setInputValueState(newValue);\n setInputPristine(false);\n if (onInputChange) {\n onInputChange(event, newValue, 'input');\n }\n }\n if (newValue === '') {\n if (!disableClearable && !multiple) {\n handleValue(event, null, 'clear');\n }\n } else {\n handleOpen(event);\n }\n };\n const handleOptionMouseMove = event => {\n const index = Number(event.currentTarget.getAttribute('data-option-index'));\n if (highlightedIndexRef.current !== index) {\n setHighlightedIndex({\n event,\n index,\n reason: 'mouse'\n });\n }\n };\n const handleOptionTouchStart = event => {\n setHighlightedIndex({\n event,\n index: Number(event.currentTarget.getAttribute('data-option-index')),\n reason: 'touch'\n });\n isTouch.current = true;\n };\n const handleOptionClick = event => {\n const index = Number(event.currentTarget.getAttribute('data-option-index'));\n selectNewValue(event, filteredOptions[index], 'selectOption');\n isTouch.current = false;\n };\n const handleTagDelete = index => event => {\n const newValue = value.slice();\n newValue.splice(index, 1);\n handleValue(event, newValue, 'removeOption', {\n option: value[index]\n });\n };\n const handlePopupIndicator = event => {\n if (open) {\n handleClose(event, 'toggleInput');\n } else {\n handleOpen(event);\n }\n };\n\n // Prevent input blur when interacting with the combobox\n const handleMouseDown = event => {\n // Prevent focusing the input if click is anywhere outside the Autocomplete\n if (!event.currentTarget.contains(event.target)) {\n return;\n }\n if (event.target.getAttribute('id') !== id) {\n event.preventDefault();\n }\n };\n\n // Focus the input when interacting with the combobox\n const handleClick = event => {\n // Prevent focusing the input if click is anywhere outside the Autocomplete\n if (!event.currentTarget.contains(event.target)) {\n return;\n }\n inputRef.current.focus();\n if (selectOnFocus && firstFocus.current && inputRef.current.selectionEnd - inputRef.current.selectionStart === 0) {\n inputRef.current.select();\n }\n firstFocus.current = false;\n };\n const handleInputMouseDown = event => {\n if (!disabledProp && (inputValue === '' || !open)) {\n handlePopupIndicator(event);\n }\n };\n let dirty = freeSolo && inputValue.length > 0;\n dirty = dirty || (multiple ? value.length > 0 : value !== null);\n let groupedOptions = filteredOptions;\n if (groupBy) {\n // used to keep track of key and indexes in the result array\n const indexBy = new Map();\n let warn = false;\n groupedOptions = filteredOptions.reduce((acc, option, index) => {\n const group = groupBy(option);\n if (acc.length > 0 && acc[acc.length - 1].group === group) {\n acc[acc.length - 1].options.push(option);\n } else {\n if (process.env.NODE_ENV !== 'production') {\n if (indexBy.get(group) && !warn) {\n console.warn(`MUI: The options provided combined with the \\`groupBy\\` method of ${componentName} returns duplicated headers.`, 'You can solve the issue by sorting the options with the output of `groupBy`.');\n warn = true;\n }\n indexBy.set(group, true);\n }\n acc.push({\n key: index,\n index,\n group,\n options: [option]\n });\n }\n return acc;\n }, []);\n }\n if (disabledProp && focused) {\n handleBlur();\n }\n return {\n getRootProps: (other = {}) => _extends({\n 'aria-owns': listboxAvailable ? `${id}-listbox` : null\n }, other, {\n onKeyDown: handleKeyDown(other),\n onMouseDown: handleMouseDown,\n onClick: handleClick\n }),\n getInputLabelProps: () => ({\n id: `${id}-label`,\n htmlFor: id\n }),\n getInputProps: () => ({\n id,\n value: inputValue,\n onBlur: handleBlur,\n onFocus: handleFocus,\n onChange: handleInputChange,\n onMouseDown: handleInputMouseDown,\n // if open then this is handled imperatively so don't let react override\n // only have an opinion about this when closed\n 'aria-activedescendant': popupOpen ? '' : null,\n 'aria-autocomplete': autoComplete ? 'both' : 'list',\n 'aria-controls': listboxAvailable ? `${id}-listbox` : undefined,\n 'aria-expanded': listboxAvailable,\n // Disable browser's suggestion that might overlap with the popup.\n // Handle autocomplete but not autofill.\n autoComplete: 'off',\n ref: inputRef,\n autoCapitalize: 'none',\n spellCheck: 'false',\n role: 'combobox',\n disabled: disabledProp\n }),\n getClearProps: () => ({\n tabIndex: -1,\n onClick: handleClear\n }),\n getPopupIndicatorProps: () => ({\n tabIndex: -1,\n onClick: handlePopupIndicator\n }),\n getTagProps: ({\n index\n }) => _extends({\n key: index,\n 'data-tag-index': index,\n tabIndex: -1\n }, !readOnly && {\n onDelete: handleTagDelete(index)\n }),\n getListboxProps: () => ({\n role: 'listbox',\n id: `${id}-listbox`,\n 'aria-labelledby': `${id}-label`,\n ref: handleListboxRef,\n onMouseDown: event => {\n // Prevent blur\n event.preventDefault();\n }\n }),\n getOptionProps: ({\n index,\n option\n }) => {\n const selected = (multiple ? value : [value]).some(value2 => value2 != null && isOptionEqualToValue(option, value2));\n const disabled = getOptionDisabled ? getOptionDisabled(option) : false;\n return {\n key: getOptionLabel(option),\n tabIndex: -1,\n role: 'option',\n id: `${id}-option-${index}`,\n onMouseMove: handleOptionMouseMove,\n onClick: handleOptionClick,\n onTouchStart: handleOptionTouchStart,\n 'data-option-index': index,\n 'aria-disabled': disabled,\n 'aria-selected': selected\n };\n },\n id,\n inputValue,\n value,\n dirty,\n expanded: popupOpen && anchorEl,\n popupOpen,\n focused: focused || focusedTag !== -1,\n anchorEl,\n setAnchorEl,\n focusedTag,\n groupedOptions\n };\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListSubheaderUtilityClass(slot) {\n return generateUtilityClass('MuiListSubheader', slot);\n}\nconst listSubheaderClasses = generateUtilityClasses('MuiListSubheader', ['root', 'colorPrimary', 'colorInherit', 'gutters', 'inset', 'sticky']);\nexport default listSubheaderClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"component\", \"disableGutters\", \"disableSticky\", \"inset\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport { getListSubheaderUtilityClass } from './listSubheaderClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color,\n disableGutters,\n inset,\n disableSticky\n } = ownerState;\n const slots = {\n root: ['root', color !== 'default' && `color${capitalize(color)}`, !disableGutters && 'gutters', inset && 'inset', !disableSticky && 'sticky']\n };\n return composeClasses(slots, getListSubheaderUtilityClass, classes);\n};\nconst ListSubheaderRoot = styled('li', {\n name: 'MuiListSubheader',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], !ownerState.disableGutters && styles.gutters, ownerState.inset && styles.inset, !ownerState.disableSticky && styles.sticky];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n boxSizing: 'border-box',\n lineHeight: '48px',\n listStyle: 'none',\n color: (theme.vars || theme).palette.text.secondary,\n fontFamily: theme.typography.fontFamily,\n fontWeight: theme.typography.fontWeightMedium,\n fontSize: theme.typography.pxToRem(14)\n}, ownerState.color === 'primary' && {\n color: (theme.vars || theme).palette.primary.main\n}, ownerState.color === 'inherit' && {\n color: 'inherit'\n}, !ownerState.disableGutters && {\n paddingLeft: 16,\n paddingRight: 16\n}, ownerState.inset && {\n paddingLeft: 72\n}, !ownerState.disableSticky && {\n position: 'sticky',\n top: 0,\n zIndex: 1,\n backgroundColor: (theme.vars || theme).palette.background.paper\n}));\nconst ListSubheader = /*#__PURE__*/React.forwardRef(function ListSubheader(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiListSubheader'\n });\n const {\n className,\n color = 'default',\n component = 'li',\n disableGutters = false,\n disableSticky = false,\n inset = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n component,\n disableGutters,\n disableSticky,\n inset\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(ListSubheaderRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState\n }, other));\n});\nListSubheader.muiSkipListHighlight = true;\nprocess.env.NODE_ENV !== \"production\" ? ListSubheader.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n * @default 'default'\n */\n color: PropTypes.oneOf(['default', 'inherit', 'primary']),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the List Subheader will not have gutters.\n * @default false\n */\n disableGutters: PropTypes.bool,\n /**\n * If `true`, the List Subheader will not stick to the top during scroll.\n * @default false\n */\n disableSticky: PropTypes.bool,\n /**\n * If `true`, the List Subheader is indented.\n * @default false\n */\n inset: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListSubheader;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n *\n * Alias to `Clear`.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getAutocompleteUtilityClass(slot) {\n return generateUtilityClass('MuiAutocomplete', slot);\n}\nconst autocompleteClasses = generateUtilityClasses('MuiAutocomplete', ['root', 'expanded', 'fullWidth', 'focused', 'focusVisible', 'tag', 'tagSizeSmall', 'tagSizeMedium', 'hasPopupIcon', 'hasClearIcon', 'inputRoot', 'input', 'inputFocused', 'endAdornment', 'clearIndicator', 'popupIndicator', 'popupIndicatorOpen', 'popper', 'popperDisablePortal', 'paper', 'listbox', 'loading', 'noOptions', 'option', 'groupLabel', 'groupUl']);\nexport default autocompleteClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _ClearIcon, _ArrowDropDownIcon;\nconst _excluded = [\"autoComplete\", \"autoHighlight\", \"autoSelect\", \"blurOnSelect\", \"ChipProps\", \"className\", \"clearIcon\", \"clearOnBlur\", \"clearOnEscape\", \"clearText\", \"closeText\", \"componentsProps\", \"defaultValue\", \"disableClearable\", \"disableCloseOnSelect\", \"disabled\", \"disabledItemsFocusable\", \"disableListWrap\", \"disablePortal\", \"filterOptions\", \"filterSelectedOptions\", \"forcePopupIcon\", \"freeSolo\", \"fullWidth\", \"getLimitTagsText\", \"getOptionDisabled\", \"getOptionLabel\", \"isOptionEqualToValue\", \"groupBy\", \"handleHomeEndKeys\", \"id\", \"includeInputInList\", \"inputValue\", \"limitTags\", \"ListboxComponent\", \"ListboxProps\", \"loading\", \"loadingText\", \"multiple\", \"noOptionsText\", \"onChange\", \"onClose\", \"onHighlightChange\", \"onInputChange\", \"onOpen\", \"open\", \"openOnFocus\", \"openText\", \"options\", \"PaperComponent\", \"PopperComponent\", \"popupIcon\", \"readOnly\", \"renderGroup\", \"renderInput\", \"renderOption\", \"renderTags\", \"selectOnFocus\", \"size\", \"slotProps\", \"value\"],\n _excluded2 = [\"ref\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes, integerPropType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses, useAutocomplete, createFilterOptions } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport Popper from '../Popper';\nimport ListSubheader from '../ListSubheader';\nimport Paper from '../Paper';\nimport IconButton from '../IconButton';\nimport Chip from '../Chip';\nimport inputClasses from '../Input/inputClasses';\nimport inputBaseClasses from '../InputBase/inputBaseClasses';\nimport outlinedInputClasses from '../OutlinedInput/outlinedInputClasses';\nimport filledInputClasses from '../FilledInput/filledInputClasses';\nimport ClearIcon from '../internal/svg-icons/Close';\nimport ArrowDropDownIcon from '../internal/svg-icons/ArrowDropDown';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport autocompleteClasses, { getAutocompleteUtilityClass } from './autocompleteClasses';\nimport capitalize from '../utils/capitalize';\nimport useForkRef from '../utils/useForkRef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disablePortal,\n expanded,\n focused,\n fullWidth,\n hasClearIcon,\n hasPopupIcon,\n inputFocused,\n popupOpen,\n size\n } = ownerState;\n const slots = {\n root: ['root', expanded && 'expanded', focused && 'focused', fullWidth && 'fullWidth', hasClearIcon && 'hasClearIcon', hasPopupIcon && 'hasPopupIcon'],\n inputRoot: ['inputRoot'],\n input: ['input', inputFocused && 'inputFocused'],\n tag: ['tag', `tagSize${capitalize(size)}`],\n endAdornment: ['endAdornment'],\n clearIndicator: ['clearIndicator'],\n popupIndicator: ['popupIndicator', popupOpen && 'popupIndicatorOpen'],\n popper: ['popper', disablePortal && 'popperDisablePortal'],\n paper: ['paper'],\n listbox: ['listbox'],\n loading: ['loading'],\n noOptions: ['noOptions'],\n option: ['option'],\n groupLabel: ['groupLabel'],\n groupUl: ['groupUl']\n };\n return composeClasses(slots, getAutocompleteUtilityClass, classes);\n};\nconst AutocompleteRoot = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n const {\n fullWidth,\n hasClearIcon,\n hasPopupIcon,\n inputFocused,\n size\n } = ownerState;\n return [{\n [`& .${autocompleteClasses.tag}`]: styles.tag\n }, {\n [`& .${autocompleteClasses.tag}`]: styles[`tagSize${capitalize(size)}`]\n }, {\n [`& .${autocompleteClasses.inputRoot}`]: styles.inputRoot\n }, {\n [`& .${autocompleteClasses.input}`]: styles.input\n }, {\n [`& .${autocompleteClasses.input}`]: inputFocused && styles.inputFocused\n }, styles.root, fullWidth && styles.fullWidth, hasPopupIcon && styles.hasPopupIcon, hasClearIcon && styles.hasClearIcon];\n }\n})(({\n ownerState\n}) => _extends({\n [`&.${autocompleteClasses.focused} .${autocompleteClasses.clearIndicator}`]: {\n visibility: 'visible'\n },\n /* Avoid double tap issue on iOS */\n '@media (pointer: fine)': {\n [`&:hover .${autocompleteClasses.clearIndicator}`]: {\n visibility: 'visible'\n }\n }\n}, ownerState.fullWidth && {\n width: '100%'\n}, {\n [`& .${autocompleteClasses.tag}`]: _extends({\n margin: 3,\n maxWidth: 'calc(100% - 6px)'\n }, ownerState.size === 'small' && {\n margin: 2,\n maxWidth: 'calc(100% - 4px)'\n }),\n [`& .${autocompleteClasses.inputRoot}`]: {\n flexWrap: 'wrap',\n [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 26 + 4\n },\n [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 52 + 4\n },\n [`& .${autocompleteClasses.input}`]: {\n width: 0,\n minWidth: 30\n }\n },\n [`& .${inputClasses.root}`]: {\n paddingBottom: 1,\n '& .MuiInput-input': {\n padding: '4px 4px 4px 0px'\n }\n },\n [`& .${inputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n [`& .${inputClasses.input}`]: {\n padding: '2px 4px 3px 0'\n }\n },\n [`& .${outlinedInputClasses.root}`]: {\n padding: 9,\n [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 26 + 4 + 9\n },\n [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 52 + 4 + 9\n },\n [`& .${autocompleteClasses.input}`]: {\n padding: '7.5px 4px 7.5px 5px'\n },\n [`& .${autocompleteClasses.endAdornment}`]: {\n right: 9\n }\n },\n [`& .${outlinedInputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n // Don't specify paddingRight, as it overrides the default value set when there is only\n // one of the popup or clear icon as the specificity is equal so the latter one wins\n paddingTop: 6,\n paddingBottom: 6,\n paddingLeft: 6,\n [`& .${autocompleteClasses.input}`]: {\n padding: '2.5px 4px 2.5px 8px'\n }\n },\n [`& .${filledInputClasses.root}`]: {\n paddingTop: 19,\n paddingLeft: 8,\n [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 26 + 4 + 9\n },\n [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 52 + 4 + 9\n },\n [`& .${filledInputClasses.input}`]: {\n padding: '7px 4px'\n },\n [`& .${autocompleteClasses.endAdornment}`]: {\n right: 9\n }\n },\n [`& .${filledInputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n paddingBottom: 1,\n [`& .${filledInputClasses.input}`]: {\n padding: '2.5px 4px'\n }\n },\n [`& .${inputBaseClasses.hiddenLabel}`]: {\n paddingTop: 8\n },\n [`& .${filledInputClasses.root}.${inputBaseClasses.hiddenLabel}`]: {\n paddingTop: 0,\n paddingBottom: 0,\n [`& .${autocompleteClasses.input}`]: {\n paddingTop: 16,\n paddingBottom: 17\n }\n },\n [`& .${filledInputClasses.root}.${inputBaseClasses.hiddenLabel}.${inputBaseClasses.sizeSmall}`]: {\n [`& .${autocompleteClasses.input}`]: {\n paddingTop: 8,\n paddingBottom: 9\n }\n },\n [`& .${autocompleteClasses.input}`]: _extends({\n flexGrow: 1,\n textOverflow: 'ellipsis',\n opacity: 0\n }, ownerState.inputFocused && {\n opacity: 1\n })\n}));\nconst AutocompleteEndAdornment = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'EndAdornment',\n overridesResolver: (props, styles) => styles.endAdornment\n})({\n // We use a position absolute to support wrapping tags.\n position: 'absolute',\n right: 0,\n top: 'calc(50% - 14px)' // Center vertically\n});\n\nconst AutocompleteClearIndicator = styled(IconButton, {\n name: 'MuiAutocomplete',\n slot: 'ClearIndicator',\n overridesResolver: (props, styles) => styles.clearIndicator\n})({\n marginRight: -2,\n padding: 4,\n visibility: 'hidden'\n});\nconst AutocompletePopupIndicator = styled(IconButton, {\n name: 'MuiAutocomplete',\n slot: 'PopupIndicator',\n overridesResolver: ({\n ownerState\n }, styles) => _extends({}, styles.popupIndicator, ownerState.popupOpen && styles.popupIndicatorOpen)\n})(({\n ownerState\n}) => _extends({\n padding: 2,\n marginRight: -2\n}, ownerState.popupOpen && {\n transform: 'rotate(180deg)'\n}));\nconst AutocompletePopper = styled(Popper, {\n name: 'MuiAutocomplete',\n slot: 'Popper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${autocompleteClasses.option}`]: styles.option\n }, styles.popper, ownerState.disablePortal && styles.popperDisablePortal];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n zIndex: (theme.vars || theme).zIndex.modal\n}, ownerState.disablePortal && {\n position: 'absolute'\n}));\nconst AutocompletePaper = styled(Paper, {\n name: 'MuiAutocomplete',\n slot: 'Paper',\n overridesResolver: (props, styles) => styles.paper\n})(({\n theme\n}) => _extends({}, theme.typography.body1, {\n overflow: 'auto'\n}));\nconst AutocompleteLoading = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'Loading',\n overridesResolver: (props, styles) => styles.loading\n})(({\n theme\n}) => ({\n color: (theme.vars || theme).palette.text.secondary,\n padding: '14px 16px'\n}));\nconst AutocompleteNoOptions = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'NoOptions',\n overridesResolver: (props, styles) => styles.noOptions\n})(({\n theme\n}) => ({\n color: (theme.vars || theme).palette.text.secondary,\n padding: '14px 16px'\n}));\nconst AutocompleteListbox = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'Listbox',\n overridesResolver: (props, styles) => styles.listbox\n})(({\n theme\n}) => ({\n listStyle: 'none',\n margin: 0,\n padding: '8px 0',\n maxHeight: '40vh',\n overflow: 'auto',\n position: 'relative',\n [`& .${autocompleteClasses.option}`]: {\n minHeight: 48,\n display: 'flex',\n overflow: 'hidden',\n justifyContent: 'flex-start',\n alignItems: 'center',\n cursor: 'pointer',\n paddingTop: 6,\n boxSizing: 'border-box',\n outline: '0',\n WebkitTapHighlightColor: 'transparent',\n paddingBottom: 6,\n paddingLeft: 16,\n paddingRight: 16,\n [theme.breakpoints.up('sm')]: {\n minHeight: 'auto'\n },\n [`&.${autocompleteClasses.focused}`]: {\n backgroundColor: (theme.vars || theme).palette.action.hover,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n '&[aria-disabled=\"true\"]': {\n opacity: (theme.vars || theme).palette.action.disabledOpacity,\n pointerEvents: 'none'\n },\n [`&.${autocompleteClasses.focusVisible}`]: {\n backgroundColor: (theme.vars || theme).palette.action.focus\n },\n '&[aria-selected=\"true\"]': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n [`&.${autocompleteClasses.focused}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: (theme.vars || theme).palette.action.selected\n }\n },\n [`&.${autocompleteClasses.focusVisible}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n }\n }\n }\n}));\nconst AutocompleteGroupLabel = styled(ListSubheader, {\n name: 'MuiAutocomplete',\n slot: 'GroupLabel',\n overridesResolver: (props, styles) => styles.groupLabel\n})(({\n theme\n}) => ({\n backgroundColor: (theme.vars || theme).palette.background.paper,\n top: -8\n}));\nconst AutocompleteGroupUl = styled('ul', {\n name: 'MuiAutocomplete',\n slot: 'GroupUl',\n overridesResolver: (props, styles) => styles.groupUl\n})({\n padding: 0,\n [`& .${autocompleteClasses.option}`]: {\n paddingLeft: 24\n }\n});\nexport { createFilterOptions };\nconst Autocomplete = /*#__PURE__*/React.forwardRef(function Autocomplete(inProps, ref) {\n var _slotProps$clearIndic, _slotProps$paper, _slotProps$popper, _slotProps$popupIndic;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiAutocomplete'\n });\n\n /* eslint-disable @typescript-eslint/no-unused-vars */\n const {\n autoComplete = false,\n autoHighlight = false,\n autoSelect = false,\n blurOnSelect = false,\n ChipProps,\n className,\n clearIcon = _ClearIcon || (_ClearIcon = /*#__PURE__*/_jsx(ClearIcon, {\n fontSize: \"small\"\n })),\n clearOnBlur = !props.freeSolo,\n clearOnEscape = false,\n clearText = 'Clear',\n closeText = 'Close',\n componentsProps = {},\n defaultValue = props.multiple ? [] : null,\n disableClearable = false,\n disableCloseOnSelect = false,\n disabled = false,\n disabledItemsFocusable = false,\n disableListWrap = false,\n disablePortal = false,\n filterSelectedOptions = false,\n forcePopupIcon = 'auto',\n freeSolo = false,\n fullWidth = false,\n getLimitTagsText = more => `+${more}`,\n getOptionLabel: getOptionLabelProp,\n groupBy,\n handleHomeEndKeys = !props.freeSolo,\n includeInputInList = false,\n limitTags = -1,\n ListboxComponent = 'ul',\n ListboxProps,\n loading = false,\n loadingText = 'Loading…',\n multiple = false,\n noOptionsText = 'No options',\n openOnFocus = false,\n openText = 'Open',\n PaperComponent = Paper,\n PopperComponent = Popper,\n popupIcon = _ArrowDropDownIcon || (_ArrowDropDownIcon = /*#__PURE__*/_jsx(ArrowDropDownIcon, {})),\n readOnly = false,\n renderGroup: renderGroupProp,\n renderInput,\n renderOption: renderOptionProp,\n renderTags,\n selectOnFocus = !props.freeSolo,\n size = 'medium',\n slotProps = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n /* eslint-enable @typescript-eslint/no-unused-vars */\n\n const {\n getRootProps,\n getInputProps,\n getInputLabelProps,\n getPopupIndicatorProps,\n getClearProps,\n getTagProps,\n getListboxProps,\n getOptionProps,\n value,\n dirty,\n expanded,\n id,\n popupOpen,\n focused,\n focusedTag,\n anchorEl,\n setAnchorEl,\n inputValue,\n groupedOptions\n } = useAutocomplete(_extends({}, props, {\n componentName: 'Autocomplete'\n }));\n const hasClearIcon = !disableClearable && !disabled && dirty && !readOnly;\n const hasPopupIcon = (!freeSolo || forcePopupIcon === true) && forcePopupIcon !== false;\n const {\n onMouseDown: handleInputMouseDown\n } = getInputProps();\n const {\n ref: externalListboxRef\n } = ListboxProps != null ? ListboxProps : {};\n const _getListboxProps = getListboxProps(),\n {\n ref: listboxRef\n } = _getListboxProps,\n otherListboxProps = _objectWithoutPropertiesLoose(_getListboxProps, _excluded2);\n const combinedListboxRef = useForkRef(listboxRef, externalListboxRef);\n const defaultGetOptionLabel = option => {\n var _option$label;\n return (_option$label = option.label) != null ? _option$label : option;\n };\n const getOptionLabel = getOptionLabelProp || defaultGetOptionLabel;\n\n // If you modify this, make sure to keep the `AutocompleteOwnerState` type in sync.\n const ownerState = _extends({}, props, {\n disablePortal,\n expanded,\n focused,\n fullWidth,\n getOptionLabel,\n hasClearIcon,\n hasPopupIcon,\n inputFocused: focusedTag === -1,\n popupOpen,\n size\n });\n const classes = useUtilityClasses(ownerState);\n let startAdornment;\n if (multiple && value.length > 0) {\n const getCustomizedTagProps = params => _extends({\n className: classes.tag,\n disabled\n }, getTagProps(params));\n if (renderTags) {\n startAdornment = renderTags(value, getCustomizedTagProps, ownerState);\n } else {\n startAdornment = value.map((option, index) => /*#__PURE__*/_jsx(Chip, _extends({\n label: getOptionLabel(option),\n size: size\n }, getCustomizedTagProps({\n index\n }), ChipProps)));\n }\n }\n if (limitTags > -1 && Array.isArray(startAdornment)) {\n const more = startAdornment.length - limitTags;\n if (!focused && more > 0) {\n startAdornment = startAdornment.splice(0, limitTags);\n startAdornment.push( /*#__PURE__*/_jsx(\"span\", {\n className: classes.tag,\n children: getLimitTagsText(more)\n }, startAdornment.length));\n }\n }\n const defaultRenderGroup = params => /*#__PURE__*/_jsxs(\"li\", {\n children: [/*#__PURE__*/_jsx(AutocompleteGroupLabel, {\n className: classes.groupLabel,\n ownerState: ownerState,\n component: \"div\",\n children: params.group\n }), /*#__PURE__*/_jsx(AutocompleteGroupUl, {\n className: classes.groupUl,\n ownerState: ownerState,\n children: params.children\n })]\n }, params.key);\n const renderGroup = renderGroupProp || defaultRenderGroup;\n const defaultRenderOption = (props2, option) => /*#__PURE__*/_jsx(\"li\", _extends({}, props2, {\n children: getOptionLabel(option)\n }));\n const renderOption = renderOptionProp || defaultRenderOption;\n const renderListOption = (option, index) => {\n const optionProps = getOptionProps({\n option,\n index\n });\n return renderOption(_extends({}, optionProps, {\n className: classes.option\n }), option, {\n selected: optionProps['aria-selected'],\n index,\n inputValue\n }, ownerState);\n };\n const clearIndicatorSlotProps = (_slotProps$clearIndic = slotProps.clearIndicator) != null ? _slotProps$clearIndic : componentsProps.clearIndicator;\n const paperSlotProps = (_slotProps$paper = slotProps.paper) != null ? _slotProps$paper : componentsProps.paper;\n const popperSlotProps = (_slotProps$popper = slotProps.popper) != null ? _slotProps$popper : componentsProps.popper;\n const popupIndicatorSlotProps = (_slotProps$popupIndic = slotProps.popupIndicator) != null ? _slotProps$popupIndic : componentsProps.popupIndicator;\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(AutocompleteRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, getRootProps(other), {\n children: renderInput({\n id,\n disabled,\n fullWidth: true,\n size: size === 'small' ? 'small' : undefined,\n InputLabelProps: getInputLabelProps(),\n InputProps: _extends({\n ref: setAnchorEl,\n className: classes.inputRoot,\n startAdornment,\n onClick: event => {\n if (event.target === event.currentTarget) {\n handleInputMouseDown(event);\n }\n }\n }, (hasClearIcon || hasPopupIcon) && {\n endAdornment: /*#__PURE__*/_jsxs(AutocompleteEndAdornment, {\n className: classes.endAdornment,\n ownerState: ownerState,\n children: [hasClearIcon ? /*#__PURE__*/_jsx(AutocompleteClearIndicator, _extends({}, getClearProps(), {\n \"aria-label\": clearText,\n title: clearText,\n ownerState: ownerState\n }, clearIndicatorSlotProps, {\n className: clsx(classes.clearIndicator, clearIndicatorSlotProps == null ? void 0 : clearIndicatorSlotProps.className),\n children: clearIcon\n })) : null, hasPopupIcon ? /*#__PURE__*/_jsx(AutocompletePopupIndicator, _extends({}, getPopupIndicatorProps(), {\n disabled: disabled,\n \"aria-label\": popupOpen ? closeText : openText,\n title: popupOpen ? closeText : openText,\n ownerState: ownerState\n }, popupIndicatorSlotProps, {\n className: clsx(classes.popupIndicator, popupIndicatorSlotProps == null ? void 0 : popupIndicatorSlotProps.className),\n children: popupIcon\n })) : null]\n })\n }),\n inputProps: _extends({\n className: classes.input,\n disabled,\n readOnly\n }, getInputProps())\n })\n })), anchorEl ? /*#__PURE__*/_jsx(AutocompletePopper, _extends({\n as: PopperComponent,\n disablePortal: disablePortal,\n style: {\n width: anchorEl ? anchorEl.clientWidth : null\n },\n ownerState: ownerState,\n role: \"presentation\",\n anchorEl: anchorEl,\n open: popupOpen\n }, popperSlotProps, {\n className: clsx(classes.popper, popperSlotProps == null ? void 0 : popperSlotProps.className),\n children: /*#__PURE__*/_jsxs(AutocompletePaper, _extends({\n ownerState: ownerState,\n as: PaperComponent\n }, paperSlotProps, {\n className: clsx(classes.paper, paperSlotProps == null ? void 0 : paperSlotProps.className),\n children: [loading && groupedOptions.length === 0 ? /*#__PURE__*/_jsx(AutocompleteLoading, {\n className: classes.loading,\n ownerState: ownerState,\n children: loadingText\n }) : null, groupedOptions.length === 0 && !freeSolo && !loading ? /*#__PURE__*/_jsx(AutocompleteNoOptions, {\n className: classes.noOptions,\n ownerState: ownerState,\n role: \"presentation\",\n onMouseDown: event => {\n // Prevent input blur when interacting with the \"no options\" content\n event.preventDefault();\n },\n children: noOptionsText\n }) : null, groupedOptions.length > 0 ? /*#__PURE__*/_jsx(AutocompleteListbox, _extends({\n as: ListboxComponent,\n className: classes.listbox,\n ownerState: ownerState\n }, otherListboxProps, ListboxProps, {\n ref: combinedListboxRef,\n children: groupedOptions.map((option, index) => {\n if (groupBy) {\n return renderGroup({\n key: option.key,\n group: option.group,\n children: option.options.map((option2, index2) => renderListOption(option2, option.index + index2))\n });\n }\n return renderListOption(option, index);\n })\n })) : null]\n }))\n })) : null]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Autocomplete.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * If `true`, the portion of the selected suggestion that has not been typed by the user,\n * known as the completion string, appears inline after the input cursor in the textbox.\n * The inline completion string is visually highlighted and has a selected state.\n * @default false\n */\n autoComplete: PropTypes.bool,\n /**\n * If `true`, the first option is automatically highlighted.\n * @default false\n */\n autoHighlight: PropTypes.bool,\n /**\n * If `true`, the selected option becomes the value of the input\n * when the Autocomplete loses focus unless the user chooses\n * a different option or changes the character string in the input.\n *\n * When using `freeSolo` mode, the typed value will be the input value\n * if the Autocomplete loses focus without highlighting an option.\n * @default false\n */\n autoSelect: PropTypes.bool,\n /**\n * Control if the input should be blurred when an option is selected:\n *\n * - `false` the input is not blurred.\n * - `true` the input is always blurred.\n * - `touch` the input is blurred after a touch event.\n * - `mouse` the input is blurred after a mouse event.\n * @default false\n */\n blurOnSelect: PropTypes.oneOfType([PropTypes.oneOf(['mouse', 'touch']), PropTypes.bool]),\n /**\n * Props applied to the [`Chip`](/material-ui/api/chip/) element.\n */\n ChipProps: PropTypes.object,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The icon to display in place of the default clear icon.\n * @default \n */\n clearIcon: PropTypes.node,\n /**\n * If `true`, the input's text is cleared on blur if no value is selected.\n *\n * Set to `true` if you want to help the user enter a new value.\n * Set to `false` if you want to help the user resume their search.\n * @default !props.freeSolo\n */\n clearOnBlur: PropTypes.bool,\n /**\n * If `true`, clear all values when the user presses escape and the popup is closed.\n * @default false\n */\n clearOnEscape: PropTypes.bool,\n /**\n * Override the default text for the *clear* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Clear'\n */\n clearText: PropTypes.string,\n /**\n * Override the default text for the *close popup* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Close'\n */\n closeText: PropTypes.string,\n /**\n * The props used for each slot inside.\n * @default {}\n */\n componentsProps: PropTypes.shape({\n clearIndicator: PropTypes.object,\n paper: PropTypes.object,\n popper: PropTypes.object,\n popupIndicator: PropTypes.object\n }),\n /**\n * The default value. Use when the component is not controlled.\n * @default props.multiple ? [] : null\n */\n defaultValue: chainPropTypes(PropTypes.any, props => {\n if (props.multiple && props.defaultValue !== undefined && !Array.isArray(props.defaultValue)) {\n return new Error(['MUI: The Autocomplete expects the `defaultValue` prop to be an array when `multiple={true}` or undefined.', `However, ${props.defaultValue} was provided.`].join('\\n'));\n }\n return null;\n }),\n /**\n * If `true`, the input can't be cleared.\n * @default false\n */\n disableClearable: PropTypes.bool,\n /**\n * If `true`, the popup won't close when a value is selected.\n * @default false\n */\n disableCloseOnSelect: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, will allow focus on disabled items.\n * @default false\n */\n disabledItemsFocusable: PropTypes.bool,\n /**\n * If `true`, the list box in the popup will not wrap focus.\n * @default false\n */\n disableListWrap: PropTypes.bool,\n /**\n * If `true`, the `Popper` content will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n /**\n * A function that determines the filtered options to be rendered on search.\n *\n * @default createFilterOptions()\n * @param {Value[]} options The options to render.\n * @param {object} state The state of the component.\n * @returns {Value[]}\n */\n filterOptions: PropTypes.func,\n /**\n * If `true`, hide the selected options from the list box.\n * @default false\n */\n filterSelectedOptions: PropTypes.bool,\n /**\n * Force the visibility display of the popup icon.\n * @default 'auto'\n */\n forcePopupIcon: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.bool]),\n /**\n * If `true`, the Autocomplete is free solo, meaning that the user input is not bound to provided options.\n * @default false\n */\n freeSolo: PropTypes.bool,\n /**\n * If `true`, the input will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * The label to display when the tags are truncated (`limitTags`).\n *\n * @param {number} more The number of truncated tags.\n * @returns {ReactNode}\n * @default (more) => `+${more}`\n */\n getLimitTagsText: PropTypes.func,\n /**\n * Used to determine the disabled state for a given option.\n *\n * @param {Value} option The option to test.\n * @returns {boolean}\n */\n getOptionDisabled: PropTypes.func,\n /**\n * Used to determine the string value for a given option.\n * It's used to fill the input (and the list box options if `renderOption` is not provided).\n *\n * If used in free solo mode, it must accept both the type of the options and a string.\n *\n * @param {Value} option\n * @returns {string}\n * @default (option) => option.label ?? option\n */\n getOptionLabel: PropTypes.func,\n /**\n * If provided, the options will be grouped under the returned string.\n * The groupBy value is also used as the text for group headings when `renderGroup` is not provided.\n *\n * @param {Value} options The options to group.\n * @returns {string}\n */\n groupBy: PropTypes.func,\n /**\n * If `true`, the component handles the \"Home\" and \"End\" keys when the popup is open.\n * It should move focus to the first option and last option, respectively.\n * @default !props.freeSolo\n */\n handleHomeEndKeys: PropTypes.bool,\n /**\n * This prop is used to help implement the accessibility logic.\n * If you don't provide an id it will fall back to a randomly generated one.\n */\n id: PropTypes.string,\n /**\n * If `true`, the highlight can move to the input.\n * @default false\n */\n includeInputInList: PropTypes.bool,\n /**\n * The input value.\n */\n inputValue: PropTypes.string,\n /**\n * Used to determine if the option represents the given value.\n * Uses strict equality by default.\n * ⚠️ Both arguments need to be handled, an option can only match with one value.\n *\n * @param {Value} option The option to test.\n * @param {Value} value The value to test against.\n * @returns {boolean}\n */\n isOptionEqualToValue: PropTypes.func,\n /**\n * The maximum number of tags that will be visible when not focused.\n * Set `-1` to disable the limit.\n * @default -1\n */\n limitTags: integerPropType,\n /**\n * The component used to render the listbox.\n * @default 'ul'\n */\n ListboxComponent: PropTypes.elementType,\n /**\n * Props applied to the Listbox element.\n */\n ListboxProps: PropTypes.object,\n /**\n * If `true`, the component is in a loading state.\n * This shows the `loadingText` in place of suggestions (only if there are no suggestions to show, e.g. `options` are empty).\n * @default false\n */\n loading: PropTypes.bool,\n /**\n * Text to display when in a loading state.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Loading…'\n */\n loadingText: PropTypes.node,\n /**\n * If `true`, `value` must be an array and the menu will support multiple selections.\n * @default false\n */\n multiple: PropTypes.bool,\n /**\n * Text to display when there are no options.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'No options'\n */\n noOptionsText: PropTypes.node,\n /**\n * Callback fired when the value changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {Value|Value[]} value The new value of the component.\n * @param {string} reason One of \"createOption\", \"selectOption\", \"removeOption\", \"blur\" or \"clear\".\n * @param {string} [details]\n */\n onChange: PropTypes.func,\n /**\n * Callback fired when the popup requests to be closed.\n * Use in controlled mode (see open).\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {string} reason Can be: `\"toggleInput\"`, `\"escape\"`, `\"selectOption\"`, `\"removeOption\"`, `\"blur\"`.\n */\n onClose: PropTypes.func,\n /**\n * Callback fired when the highlight option changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {Value} option The highlighted option.\n * @param {string} reason Can be: `\"keyboard\"`, `\"auto\"`, `\"mouse\"`, `\"touch\"`.\n */\n onHighlightChange: PropTypes.func,\n /**\n * Callback fired when the input value changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {string} value The new value of the text input.\n * @param {string} reason Can be: `\"input\"` (user input), `\"reset\"` (programmatic change), `\"clear\"`.\n */\n onInputChange: PropTypes.func,\n /**\n * Callback fired when the popup requests to be opened.\n * Use in controlled mode (see open).\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n */\n onOpen: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool,\n /**\n * If `true`, the popup will open on input focus.\n * @default false\n */\n openOnFocus: PropTypes.bool,\n /**\n * Override the default text for the *open popup* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Open'\n */\n openText: PropTypes.string,\n /**\n * Array of options.\n */\n options: PropTypes.array.isRequired,\n /**\n * The component used to render the body of the popup.\n * @default Paper\n */\n PaperComponent: PropTypes.elementType,\n /**\n * The component used to position the popup.\n * @default Popper\n */\n PopperComponent: PropTypes.elementType,\n /**\n * The icon to display in place of the default popup icon.\n * @default \n */\n popupIcon: PropTypes.node,\n /**\n * If `true`, the component becomes readonly. It is also supported for multiple tags where the tag cannot be deleted.\n * @default false\n */\n readOnly: PropTypes.bool,\n /**\n * Render the group.\n *\n * @param {AutocompleteRenderGroupParams} params The group to render.\n * @returns {ReactNode}\n */\n renderGroup: PropTypes.func,\n /**\n * Render the input.\n *\n * @param {object} params\n * @returns {ReactNode}\n */\n renderInput: PropTypes.func.isRequired,\n /**\n * Render the option, use `getOptionLabel` by default.\n *\n * @param {object} props The props to apply on the li element.\n * @param {Value} option The option to render.\n * @param {object} state The state of each option.\n * @param {object} ownerState The state of the Autocomplete component.\n * @returns {ReactNode}\n */\n renderOption: PropTypes.func,\n /**\n * Render the selected value.\n *\n * @param {Value[]} value The `value` provided to the component.\n * @param {function} getTagProps A tag props getter.\n * @param {object} ownerState The state of the Autocomplete component.\n * @returns {ReactNode}\n */\n renderTags: PropTypes.func,\n /**\n * If `true`, the input's text is selected on focus.\n * It helps the user clear the selected value.\n * @default !props.freeSolo\n */\n selectOnFocus: PropTypes.bool,\n /**\n * The size of the component.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium']), PropTypes.string]),\n /**\n * The props used for each slot inside.\n * @default {}\n */\n slotProps: PropTypes.shape({\n clearIndicator: PropTypes.object,\n paper: PropTypes.object,\n popper: PropTypes.object,\n popupIndicator: PropTypes.object\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The value of the autocomplete.\n *\n * The value must have reference equality with the option in order to be selected.\n * You can customize the equality behavior with the `isOptionEqualToValue` prop.\n */\n value: chainPropTypes(PropTypes.any, props => {\n if (props.multiple && props.value !== undefined && !Array.isArray(props.value)) {\n return new Error(['MUI: The Autocomplete expects the `value` prop to be an array when `multiple={true}` or undefined.', `However, ${props.value} was provided.`].join('\\n'));\n }\n return null;\n })\n} : void 0;\nexport default Autocomplete;"],"names":["stripDiacritics","string","normalize","replace","findIndex","array","comp","i","length","defaultFilterOptions","config","arguments","undefined","_config$ignoreAccents","ignoreAccents","_config$ignoreCase","ignoreCase","limit","_config$matchFrom","matchFrom","stringify","_config$trim","trim","options","_ref","inputValue","getOptionLabel","input","toLowerCase","filteredOptions","filter","option","candidate","indexOf","slice","createFilterOptions","defaultIsActiveElementInListbox","listboxRef","_listboxRef$current$p","current","parentElement","contains","document","activeElement","useAutocomplete","props","_props$unstable_isAct","unstable_isActiveElementInListbox","_props$unstable_class","unstable_classNamePrefix","_props$autoComplete","autoComplete","_props$autoHighlight","autoHighlight","_props$autoSelect","autoSelect","_props$blurOnSelect","blurOnSelect","_props$clearOnBlur","clearOnBlur","freeSolo","_props$clearOnEscape","clearOnEscape","_props$componentName","componentName","_props$defaultValue","defaultValue","multiple","_props$disableClearab","disableClearable","_props$disableCloseOn","disableCloseOnSelect","disabledProp","disabled","_props$disabledItemsF","disabledItemsFocusable","_props$disableListWra","disableListWrap","_props$filterOptions","filterOptions","_props$filterSelected","filterSelectedOptions","_props$freeSolo","getOptionDisabled","_props$getOptionLabel","getOptionLabelProp","_option$label","label","groupBy","_props$handleHomeEndK","handleHomeEndKeys","idProp","id","_props$includeInputIn","includeInputInList","inputValueProp","_props$isOptionEqualT","isOptionEqualToValue","value","_props$multiple","onChange","onClose","onHighlightChange","onInputChange","onOpen","openProp","open","_props$openOnFocus","openOnFocus","_props$readOnly","readOnly","_props$selectOnFocus","selectOnFocus","valueProp","useId","optionLabel","String","ignoreFocus","React","firstFocus","inputRef","_React$useState","_React$useState2","_slicedToArray","anchorEl","setAnchorEl","_React$useState3","_React$useState4","focusedTag","setFocusedTag","defaultHighlighted","highlightedIndexRef","_useControlled","useControlled","controlled","default","name","_useControlled2","setValueState","_useControlled3","state","_useControlled4","setInputValueState","_React$useState5","_React$useState6","focused","setFocused","resetInputValue","event","newValue","newInputValue","_useControlled5","_useControlled6","setOpenState","_React$useState7","_React$useState8","inputPristine","setInputPristine","inputValueIsSelectedValue","popupOpen","some","value2","previousProps","usePreviousProps","valueChange","listboxAvailable","focusTag","useEventCallback","tagToFocus","focus","querySelector","concat","setHighlightedIndex","_ref2","index","_ref2$reason","reason","removeAttribute","setAttribute","prev","classList","remove","listboxNode","getAttribute","add","scrollHeight","clientHeight","element","scrollBottom","scrollTop","elementBottom","offsetTop","offsetHeight","changeHighlightedIndex","_ref3","diff","_ref3$direction","direction","_ref3$reason","nextIndex","nextFocus","nextFocusDisabled","hasAttribute","validOptionIndex","maxIndex","newIndex","Math","abs","getNextIndex","setSelectionRange","syncHighlightedIndex","value1","every","val","previousHighlightedOption","checkHighlightedOptionExists","valueItem","currentOption","itemIndex","optionItem","handleListboxRef","node","setRef","handleOpen","handleClose","handleValue","details","isTouch","selectNewValue","origin","Array","isArray","push","splice","ctrlKey","metaKey","blur","handleFocusTag","nextTag","validTagIndex","handleClear","handleKeyDown","other","onKeyDown","defaultMuiPrevented","key","which","preventDefault","stopPropagation","handleFocus","handleBlur","handleInputChange","target","handleOptionMouseMove","Number","currentTarget","handleOptionTouchStart","handleOptionClick","handleTagDelete","handlePopupIndicator","handleMouseDown","handleClick","selectionEnd","selectionStart","select","handleInputMouseDown","dirty","groupedOptions","Map","reduce","acc","group","getRootProps","_extends","onMouseDown","onClick","getInputLabelProps","htmlFor","getInputProps","onBlur","onFocus","ref","autoCapitalize","spellCheck","role","getClearProps","tabIndex","getPopupIndicatorProps","getTagProps","_ref4","onDelete","getListboxProps","getOptionProps","_ref5","selected","onMouseMove","onTouchStart","expanded","getListSubheaderUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","ListSubheaderRoot","styled","overridesResolver","styles","ownerState","root","color","capitalize","disableGutters","gutters","inset","disableSticky","sticky","theme","boxSizing","lineHeight","listStyle","vars","palette","text","secondary","fontFamily","typography","fontWeight","fontWeightMedium","fontSize","pxToRem","primary","main","paddingLeft","paddingRight","position","top","zIndex","backgroundColor","background","paper","ListSubheader","inProps","useThemeProps","className","_props$color","_props$component","component","_props$disableGutters","_props$disableSticky","_props$inset","_objectWithoutPropertiesLoose","classes","slots","composeClasses","useUtilityClasses","_jsx","as","clsx","muiSkipListHighlight","createSvgIcon","d","getAutocompleteUtilityClass","_ClearIcon","_ArrowDropDownIcon","_excluded2","AutocompleteRoot","fullWidth","hasClearIcon","hasPopupIcon","inputFocused","size","_defineProperty","autocompleteClasses","tag","inputRoot","_ref6","_extends2","_$concat","_$concat2","_$concat3","_extends3","clearIndicator","visibility","width","margin","maxWidth","flexWrap","minWidth","inputClasses","paddingBottom","padding","inputBaseClasses","sizeSmall","outlinedInputClasses","endAdornment","right","paddingTop","filledInputClasses","hiddenLabel","flexGrow","textOverflow","opacity","AutocompleteEndAdornment","AutocompleteClearIndicator","IconButton","marginRight","AutocompletePopupIndicator","_ref7","popupIndicator","popupIndicatorOpen","_ref8","transform","AutocompletePopper","Popper","popper","disablePortal","popperDisablePortal","_ref10","modal","AutocompletePaper","Paper","_ref11","body1","overflow","AutocompleteLoading","loading","_ref12","AutocompleteNoOptions","noOptions","_ref13","AutocompleteListbox","listbox","_ref14","_ariaSelectedTru","_$concat4","maxHeight","minHeight","display","justifyContent","alignItems","cursor","outline","WebkitTapHighlightColor","breakpoints","up","action","hover","disabledOpacity","pointerEvents","focusVisible","mainChannel","selectedOpacity","alpha","hoverOpacity","focusOpacity","AutocompleteGroupLabel","groupLabel","_ref16","AutocompleteGroupUl","groupUl","_slotProps$clearIndic","_slotProps$paper","_slotProps$popper","_slotProps$popupIndic","startAdornment","ChipProps","_props$clearIcon","clearIcon","ClearIcon","_props$clearText","clearText","_props$closeText","closeText","_props$componentsProp","componentsProps","_props$disabled","_props$disablePortal","_props$forcePopupIcon","forcePopupIcon","_props$fullWidth","_props$getLimitTagsTe","getLimitTagsText","more","_props$limitTags","limitTags","_props$ListboxCompone","ListboxComponent","ListboxProps","_props$loading","_props$loadingText","loadingText","_props$noOptionsText","noOptionsText","_props$openText","openText","_props$PaperComponent","PaperComponent","_props$PopperComponen","PopperComponent","_props$popupIcon","popupIcon","ArrowDropDownIcon","renderGroupProp","renderGroup","renderInput","renderOptionProp","renderOption","renderTags","_props$size","_props$slotProps","slotProps","_useAutocomplete","externalListboxRef","_getListboxProps","otherListboxProps","combinedListboxRef","useForkRef","getCustomizedTagProps","params","map","Chip","children","_jsxs","props2","renderListOption","optionProps","clearIndicatorSlotProps","paperSlotProps","popperSlotProps","popupIndicatorSlotProps","InputLabelProps","InputProps","title","inputProps","style","clientWidth","option2","index2"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/6895.48dbd0ce.chunk.js b/portal-ui/build/static/js/6895.f365fd4e.chunk.js similarity index 97% rename from portal-ui/build/static/js/6895.48dbd0ce.chunk.js rename to portal-ui/build/static/js/6895.f365fd4e.chunk.js index c19f05e099..d50539cec3 100644 --- a/portal-ui/build/static/js/6895.48dbd0ce.chunk.js +++ b/portal-ui/build/static/js/6895.f365fd4e.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[6895],{66895:function(e,t,n){n.r(t);var i=n(29439),s=n(1413),c=n(72791),a=n(57689),l=n(29945),o=n(78687),r=n(11135),u=n(25787),d=n(23814),f=n(56087),b=n(38442),_=n(75578),T=n(87995),h=n(9859),x=n(81551),C=n(27454),I=n(47974),j=n(31776),F=n(82342),S=n(99670),m=n(80184),E=(0,_.Z)(c.lazy((function(){return n.e(9968).then(n.bind(n,39968))}))),p=(0,_.Z)(c.lazy((function(){return n.e(7494).then(n.bind(n,47494))}))),O=(0,_.Z)(c.lazy((function(){return n.e(4738).then(n.bind(n,84738))}))),k=(0,_.Z)(c.lazy((function(){return n.e(3989).then(n.bind(n,93989))}))),A=(0,_.Z)(c.lazy((function(){return n.e(5702).then(n.bind(n,25702))}))),N=(0,_.Z)(c.lazy((function(){return n.e(5759).then(n.bind(n,85759))}))),y=(0,_.Z)(c.lazy((function(){return Promise.all([n.e(911),n.e(9955),n.e(6008),n.e(51)]).then(n.bind(n,51))})));t.default=(0,u.Z)((function(e){return(0,r.Z)((0,s.Z)((0,s.Z)({pageContainer:{height:"100%"}},d.qg),{},{capitalize:{textTransform:"capitalize"}},d.Bz))}))((function(e){var t,n=e.classes,s=(0,x.TL)(),r=(0,a.s0)(),u=(0,a.UO)(),d=(0,a.TH)(),_=(0,o.v9)(T.N5),g=(0,o.v9)(h.HQ),v=(0,o.v9)(h.G6),U=(0,o.v9)(T.gw),Z=(0,c.useState)(!1),B=(0,i.Z)(Z,2),L=B[0],z=B[1],G=(0,c.useState)(!1),P=(0,i.Z)(G,2),R=P[0],w=P[1],K=u.bucketName||"",D=(0,b.F)(K,f.o3),W=(0,b.F)(K,f.B);(0,c.useEffect)((function(){s((0,T.Sc)("bucket_details"))}),[]),(0,c.useEffect)((function(){L||(s((0,h.d5)(!0)),z(!0))}),[L,s,z]),(0,c.useEffect)((function(){g&&j.h.buckets.bucketInfo(K).then((function(e){s((0,h.d5)(!1)),s((0,h.f4)(e.data))})).catch((function(e){s((0,h.d5)(!1)),s((0,T.Ih)((0,F.g)(e)))}))}),[K,g,s]);var M="/buckets/".concat(K),Y={events:"/admin/events",replication:"/admin/replication",lifecycle:"/admin/lifecycle",access:"/admin/access",prefix:"/admin/prefix"},H=function(e){var t=Y[e];return t=t?"".concat(M).concat(t):"".concat(M).concat("/admin/summary")};return(0,m.jsxs)(c.Fragment,{children:[R&&(0,m.jsx)(E,{deleteOpen:R,selectedBucket:K,closeDeleteModalAndRefresh:function(e){!function(e){w(!1),e&&r("/buckets")}(e)}}),(0,m.jsx)(I.Z,{label:(0,m.jsx)(l.hbI,{label:"Buckets",onClick:function(){return r("/buckets")}}),actions:(0,m.jsxs)(c.Fragment,{children:[(0,m.jsx)(C.Z,{tooltip:W?"Browse Bucket":(0,f.MK)(f.D[f.EI.BUCKET_VIEWER],"browsing this bucket"),children:(0,m.jsx)(l.zxk,{id:"switch-browse-view","aria-label":"Browse Bucket",onClick:function(){r("/browser/".concat(K))},icon:(0,m.jsx)(l.ROc,{style:{width:20,height:20,marginTop:-3}}),style:{padding:"0 10px"},disabled:!W})}),(0,m.jsx)(S.Z,{})]})}),(0,m.jsxs)(l.Xgh,{children:[(0,m.jsx)(l.UHn,{icon:(0,m.jsx)(c.Fragment,{children:(0,m.jsx)(l.wNb,{width:40})}),title:K,subTitle:(0,m.jsxs)(b.s,{scopes:[f.Ft.S3_GET_BUCKET_POLICY,f.Ft.S3_GET_ACTIONS],resource:K,children:[(0,m.jsx)("span",{style:{fontSize:15},children:"Access: "}),(0,m.jsx)("span",{className:n.capitalize,style:{fontWeight:600,fontSize:15},children:null===v||void 0===v||null===(t=v.access)||void 0===t?void 0:t.toLowerCase()})]}),actions:(0,m.jsxs)(c.Fragment,{children:[(0,m.jsx)(b.s,{scopes:f.o3,resource:K,errorProps:{disabled:!0},children:(0,m.jsx)(C.Z,{tooltip:D?"":(0,f.MK)([f.Ft.S3_DELETE_BUCKET,f.Ft.S3_FORCE_DELETE_BUCKET],"deleting this bucket"),children:(0,m.jsx)(l.zxk,{id:"delete-bucket-button",onClick:function(){w(!0)},label:"Delete Bucket",icon:(0,m.jsx)(l.XHJ,{}),variant:"secondary",disabled:!D})})}),(0,m.jsx)(l.zxk,{id:"refresh-bucket-info",onClick:function(){s((0,h.d5)(!0))},label:"Refresh",icon:(0,m.jsx)(l.DuK,{})})]}),sx:{marginBottom:15}}),(0,m.jsx)(l.xuv,{children:(0,m.jsx)(l.mQc,{currentTabOrPath:d.pathname,useRouteTabs:!0,onTabClick:function(e){r(e)},options:[{tabConfig:{label:"Summary",id:"summary",to:H("summary")}},{tabConfig:{label:"Events",id:"events",disabled:!(0,b.F)(K,[f.Ft.S3_GET_BUCKET_NOTIFICATIONS,f.Ft.S3_PUT_BUCKET_NOTIFICATIONS,f.Ft.S3_GET_ACTIONS,f.Ft.S3_PUT_ACTIONS]),to:H("events")}},{tabConfig:{label:"Replication",id:"replication",disabled:!_||U.enabled&&U.curSite||!(0,b.F)(K,[f.Ft.S3_GET_REPLICATION_CONFIGURATION,f.Ft.S3_PUT_REPLICATION_CONFIGURATION,f.Ft.S3_GET_ACTIONS,f.Ft.S3_PUT_ACTIONS]),to:H("replication")}},{tabConfig:{label:"Lifecycle",id:"lifecycle",disabled:!_||!(0,b.F)(K,[f.Ft.S3_GET_LIFECYCLE_CONFIGURATION,f.Ft.S3_PUT_LIFECYCLE_CONFIGURATION,f.Ft.S3_GET_ACTIONS,f.Ft.S3_PUT_ACTIONS]),to:H("lifecycle")}},{tabConfig:{label:"Access",id:"access",disabled:!(0,b.F)(K,[f.Ft.ADMIN_GET_POLICY,f.Ft.ADMIN_LIST_USER_POLICIES,f.Ft.ADMIN_LIST_USERS]),to:H("access")}},{tabConfig:{label:"Anonymous",id:"anonymous",disabled:!(0,b.F)(K,[f.Ft.S3_GET_BUCKET_POLICY,f.Ft.S3_GET_ACTIONS]),to:H("prefix")}}],routes:(0,m.jsxs)(a.Z5,{children:[(0,m.jsx)(a.AW,{path:"summary",element:(0,m.jsx)(k,{})}),(0,m.jsx)(a.AW,{path:"events",element:(0,m.jsx)(A,{})}),_&&(0,m.jsx)(a.AW,{path:"replication",element:(0,m.jsx)(N,{})}),_&&(0,m.jsx)(a.AW,{path:"lifecycle",element:(0,m.jsx)(y,{})}),(0,m.jsx)(a.AW,{path:"access",element:(0,m.jsx)(O,{})}),(0,m.jsx)(a.AW,{path:"prefix",element:(0,m.jsx)(p,{})}),(0,m.jsx)(a.AW,{path:"*",element:(0,m.jsx)(a.Fg,{to:"/buckets/".concat(K,"/admin/summary")})})]})})})]})]})}))},75578:function(e,t,n){var i=n(1413),s=n(72791),c=n(80184);t.Z=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(n){return(0,c.jsx)(s.Suspense,{fallback:t,children:(0,c.jsx)(e,(0,i.Z)({},n))})}}}}]); -//# sourceMappingURL=6895.48dbd0ce.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[6895],{66895:function(e,t,n){n.r(t);var i=n(29439),s=n(1413),c=n(72791),a=n(57689),l=n(29945),o=n(78687),r=n(11135),u=n(25787),d=n(23814),f=n(56087),b=n(38442),_=n(75578),T=n(87995),h=n(9859),x=n(44690),C=n(27454),I=n(47974),j=n(31776),F=n(82342),S=n(99670),m=n(80184),E=(0,_.Z)(c.lazy((function(){return n.e(9968).then(n.bind(n,39968))}))),p=(0,_.Z)(c.lazy((function(){return n.e(7494).then(n.bind(n,47494))}))),O=(0,_.Z)(c.lazy((function(){return n.e(4738).then(n.bind(n,84738))}))),k=(0,_.Z)(c.lazy((function(){return n.e(3989).then(n.bind(n,93989))}))),A=(0,_.Z)(c.lazy((function(){return n.e(5702).then(n.bind(n,25702))}))),N=(0,_.Z)(c.lazy((function(){return n.e(5759).then(n.bind(n,85759))}))),y=(0,_.Z)(c.lazy((function(){return Promise.all([n.e(911),n.e(9955),n.e(6008),n.e(51)]).then(n.bind(n,51))})));t.default=(0,u.Z)((function(e){return(0,r.Z)((0,s.Z)((0,s.Z)({pageContainer:{height:"100%"}},d.qg),{},{capitalize:{textTransform:"capitalize"}},d.Bz))}))((function(e){var t,n=e.classes,s=(0,x.TL)(),r=(0,a.s0)(),u=(0,a.UO)(),d=(0,a.TH)(),_=(0,o.v9)(T.N5),g=(0,o.v9)(h.HQ),v=(0,o.v9)(h.G6),U=(0,o.v9)(T.gw),Z=(0,c.useState)(!1),B=(0,i.Z)(Z,2),L=B[0],z=B[1],G=(0,c.useState)(!1),P=(0,i.Z)(G,2),R=P[0],w=P[1],K=u.bucketName||"",D=(0,b.F)(K,f.o3),W=(0,b.F)(K,f.B);(0,c.useEffect)((function(){s((0,T.Sc)("bucket_details"))}),[]),(0,c.useEffect)((function(){L||(s((0,h.d5)(!0)),z(!0))}),[L,s,z]),(0,c.useEffect)((function(){g&&j.h.buckets.bucketInfo(K).then((function(e){s((0,h.d5)(!1)),s((0,h.f4)(e.data))})).catch((function(e){s((0,h.d5)(!1)),s((0,T.Ih)((0,F.g)(e)))}))}),[K,g,s]);var M="/buckets/".concat(K),Y={events:"/admin/events",replication:"/admin/replication",lifecycle:"/admin/lifecycle",access:"/admin/access",prefix:"/admin/prefix"},H=function(e){var t=Y[e];return t=t?"".concat(M).concat(t):"".concat(M).concat("/admin/summary")};return(0,m.jsxs)(c.Fragment,{children:[R&&(0,m.jsx)(E,{deleteOpen:R,selectedBucket:K,closeDeleteModalAndRefresh:function(e){!function(e){w(!1),e&&r("/buckets")}(e)}}),(0,m.jsx)(I.Z,{label:(0,m.jsx)(l.hbI,{label:"Buckets",onClick:function(){return r("/buckets")}}),actions:(0,m.jsxs)(c.Fragment,{children:[(0,m.jsx)(C.Z,{tooltip:W?"Browse Bucket":(0,f.MK)(f.D[f.EI.BUCKET_VIEWER],"browsing this bucket"),children:(0,m.jsx)(l.zxk,{id:"switch-browse-view","aria-label":"Browse Bucket",onClick:function(){r("/browser/".concat(K))},icon:(0,m.jsx)(l.ROc,{style:{width:20,height:20,marginTop:-3}}),style:{padding:"0 10px"},disabled:!W})}),(0,m.jsx)(S.Z,{})]})}),(0,m.jsxs)(l.Xgh,{children:[(0,m.jsx)(l.UHn,{icon:(0,m.jsx)(c.Fragment,{children:(0,m.jsx)(l.wNb,{width:40})}),title:K,subTitle:(0,m.jsxs)(b.s,{scopes:[f.Ft.S3_GET_BUCKET_POLICY,f.Ft.S3_GET_ACTIONS],resource:K,children:[(0,m.jsx)("span",{style:{fontSize:15},children:"Access: "}),(0,m.jsx)("span",{className:n.capitalize,style:{fontWeight:600,fontSize:15},children:null===v||void 0===v||null===(t=v.access)||void 0===t?void 0:t.toLowerCase()})]}),actions:(0,m.jsxs)(c.Fragment,{children:[(0,m.jsx)(b.s,{scopes:f.o3,resource:K,errorProps:{disabled:!0},children:(0,m.jsx)(C.Z,{tooltip:D?"":(0,f.MK)([f.Ft.S3_DELETE_BUCKET,f.Ft.S3_FORCE_DELETE_BUCKET],"deleting this bucket"),children:(0,m.jsx)(l.zxk,{id:"delete-bucket-button",onClick:function(){w(!0)},label:"Delete Bucket",icon:(0,m.jsx)(l.XHJ,{}),variant:"secondary",disabled:!D})})}),(0,m.jsx)(l.zxk,{id:"refresh-bucket-info",onClick:function(){s((0,h.d5)(!0))},label:"Refresh",icon:(0,m.jsx)(l.DuK,{})})]}),sx:{marginBottom:15}}),(0,m.jsx)(l.xuv,{children:(0,m.jsx)(l.mQc,{currentTabOrPath:d.pathname,useRouteTabs:!0,onTabClick:function(e){r(e)},options:[{tabConfig:{label:"Summary",id:"summary",to:H("summary")}},{tabConfig:{label:"Events",id:"events",disabled:!(0,b.F)(K,[f.Ft.S3_GET_BUCKET_NOTIFICATIONS,f.Ft.S3_PUT_BUCKET_NOTIFICATIONS,f.Ft.S3_GET_ACTIONS,f.Ft.S3_PUT_ACTIONS]),to:H("events")}},{tabConfig:{label:"Replication",id:"replication",disabled:!_||U.enabled&&U.curSite||!(0,b.F)(K,[f.Ft.S3_GET_REPLICATION_CONFIGURATION,f.Ft.S3_PUT_REPLICATION_CONFIGURATION,f.Ft.S3_GET_ACTIONS,f.Ft.S3_PUT_ACTIONS]),to:H("replication")}},{tabConfig:{label:"Lifecycle",id:"lifecycle",disabled:!_||!(0,b.F)(K,[f.Ft.S3_GET_LIFECYCLE_CONFIGURATION,f.Ft.S3_PUT_LIFECYCLE_CONFIGURATION,f.Ft.S3_GET_ACTIONS,f.Ft.S3_PUT_ACTIONS]),to:H("lifecycle")}},{tabConfig:{label:"Access",id:"access",disabled:!(0,b.F)(K,[f.Ft.ADMIN_GET_POLICY,f.Ft.ADMIN_LIST_USER_POLICIES,f.Ft.ADMIN_LIST_USERS]),to:H("access")}},{tabConfig:{label:"Anonymous",id:"anonymous",disabled:!(0,b.F)(K,[f.Ft.S3_GET_BUCKET_POLICY,f.Ft.S3_GET_ACTIONS]),to:H("prefix")}}],routes:(0,m.jsxs)(a.Z5,{children:[(0,m.jsx)(a.AW,{path:"summary",element:(0,m.jsx)(k,{})}),(0,m.jsx)(a.AW,{path:"events",element:(0,m.jsx)(A,{})}),_&&(0,m.jsx)(a.AW,{path:"replication",element:(0,m.jsx)(N,{})}),_&&(0,m.jsx)(a.AW,{path:"lifecycle",element:(0,m.jsx)(y,{})}),(0,m.jsx)(a.AW,{path:"access",element:(0,m.jsx)(O,{})}),(0,m.jsx)(a.AW,{path:"prefix",element:(0,m.jsx)(p,{})}),(0,m.jsx)(a.AW,{path:"*",element:(0,m.jsx)(a.Fg,{to:"/buckets/".concat(K,"/admin/summary")})})]})})})]})]})}))},75578:function(e,t,n){var i=n(1413),s=n(72791),c=n(80184);t.Z=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(n){return(0,c.jsx)(s.Suspense,{fallback:t,children:(0,c.jsx)(e,(0,i.Z)({},n))})}}}}]); +//# sourceMappingURL=6895.f365fd4e.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/6895.48dbd0ce.chunk.js.map b/portal-ui/build/static/js/6895.f365fd4e.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/6895.48dbd0ce.chunk.js.map rename to portal-ui/build/static/js/6895.f365fd4e.chunk.js.map index 7b86efc711..acc36c6532 100644 --- a/portal-ui/build/static/js/6895.48dbd0ce.chunk.js.map +++ b/portal-ui/build/static/js/6895.f365fd4e.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/6895.48dbd0ce.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/BucketDetails.tsx","screens/Console/Common/Components/withSuspense.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport {\n Navigate,\n Route,\n Routes,\n useLocation,\n useNavigate,\n useParams,\n} from \"react-router-dom\";\nimport {\n BackLink,\n Box,\n BucketsIcon,\n Button,\n FolderIcon,\n PageLayout,\n RefreshIcon,\n ScreenTitle,\n Tabs,\n TrashIcon,\n} from \"mds\";\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 containerForHeader,\n searchField,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport {\n browseBucketPermissions,\n deleteBucketPermissions,\n IAM_PERMISSIONS,\n IAM_ROLES,\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../common/SecureComponent/permissions\";\n\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../common/SecureComponent\";\n\nimport withSuspense from \"../../Common/Components/withSuspense\";\nimport {\n selDistSet,\n selSiteRep,\n setErrorSnackMessage,\n setHelpName,\n} from \"../../../../systemSlice\";\nimport {\n selBucketDetailsInfo,\n selBucketDetailsLoading,\n setBucketDetailsLoad,\n setBucketInfo,\n} from \"./bucketDetailsSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport HelpMenu from \"../../HelpMenu\";\n\nconst DeleteBucket = withSuspense(\n React.lazy(() => import(\"../ListBuckets/DeleteBucket\")),\n);\nconst AccessRulePanel = withSuspense(\n React.lazy(() => import(\"./AccessRulePanel\")),\n);\nconst AccessDetailsPanel = withSuspense(\n React.lazy(() => import(\"./AccessDetailsPanel\")),\n);\nconst BucketSummaryPanel = withSuspense(\n React.lazy(() => import(\"./BucketSummaryPanel\")),\n);\nconst BucketEventsPanel = withSuspense(\n React.lazy(() => import(\"./BucketEventsPanel\")),\n);\nconst BucketReplicationPanel = withSuspense(\n React.lazy(() => import(\"./BucketReplicationPanel\")),\n);\nconst BucketLifecyclePanel = withSuspense(\n React.lazy(() => import(\"./BucketLifecyclePanel\")),\n);\n\nconst styles = (theme: Theme) =>\n createStyles({\n pageContainer: {\n height: \"100%\",\n },\n ...searchField,\n capitalize: {\n textTransform: \"capitalize\",\n },\n\n ...containerForHeader,\n });\n\ninterface IBucketDetailsProps {\n classes: any;\n}\n\nconst BucketDetails = ({ classes }: IBucketDetailsProps) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const params = useParams();\n const location = useLocation();\n\n const distributedSetup = useSelector(selDistSet);\n const loadingBucket = useSelector(selBucketDetailsLoading);\n const bucketInfo = useSelector(selBucketDetailsInfo);\n const siteReplicationInfo = useSelector(selSiteRep);\n\n const [iniLoad, setIniLoad] = useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const bucketName = params.bucketName || \"\";\n\n const canDelete = hasPermission(bucketName, deleteBucketPermissions);\n const canBrowse = hasPermission(bucketName, browseBucketPermissions);\n\n useEffect(() => {\n dispatch(setHelpName(\"bucket_details\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (!iniLoad) {\n dispatch(setBucketDetailsLoad(true));\n setIniLoad(true);\n }\n }, [iniLoad, dispatch, setIniLoad]);\n\n useEffect(() => {\n if (loadingBucket) {\n api.buckets\n .bucketInfo(bucketName)\n .then((res) => {\n dispatch(setBucketDetailsLoad(false));\n dispatch(setBucketInfo(res.data));\n })\n .catch((err) => {\n dispatch(setBucketDetailsLoad(false));\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n });\n }\n }, [bucketName, loadingBucket, dispatch]);\n\n let topLevelRoute = `/buckets/${bucketName}`;\n const defaultRoute = \"/admin/summary\";\n\n const manageBucketRoutes: Record = {\n events: \"/admin/events\",\n replication: \"/admin/replication\",\n lifecycle: \"/admin/lifecycle\",\n access: \"/admin/access\",\n prefix: \"/admin/prefix\",\n };\n\n const getRoutePath = (routeKey: string) => {\n let path = manageBucketRoutes[routeKey];\n if (!path) {\n path = `${topLevelRoute}${defaultRoute}`;\n } else {\n path = `${topLevelRoute}${path}`;\n }\n return path;\n };\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n if (refresh) {\n navigate(\"/buckets\");\n }\n };\n\n return (\n \n {deleteOpen && (\n {\n closeDeleteModalAndRefresh(refresh);\n }}\n />\n )}\n navigate(\"/buckets\")} />\n }\n actions={\n \n \n {\n navigate(`/browser/${bucketName}`);\n }}\n icon={\n \n }\n style={{\n padding: \"0 10px\",\n }}\n disabled={!canBrowse}\n />\n \n \n \n }\n />\n \n \n \n \n }\n title={bucketName}\n subTitle={\n \n Access: \n \n {bucketInfo?.access?.toLowerCase()}\n \n \n }\n actions={\n \n \n \n {\n setDeleteOpen(true);\n }}\n label={\"Delete Bucket\"}\n icon={}\n variant={\"secondary\"}\n disabled={!canDelete}\n />\n \n \n {\n dispatch(setBucketDetailsLoad(true));\n }}\n label={\"Refresh\"}\n icon={}\n />\n \n }\n sx={{ marginBottom: 15 }}\n />\n \n {\n navigate(tab);\n }}\n options={[\n {\n tabConfig: {\n label: \"Summary\",\n id: \"summary\",\n to: getRoutePath(\"summary\"),\n },\n },\n {\n tabConfig: {\n label: \"Events\",\n id: \"events\",\n disabled: !hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_NOTIFICATIONS,\n IAM_SCOPES.S3_PUT_BUCKET_NOTIFICATIONS,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]),\n to: getRoutePath(\"events\"),\n },\n },\n {\n tabConfig: {\n label: \"Replication\",\n id: \"replication\",\n disabled:\n !distributedSetup ||\n (siteReplicationInfo.enabled &&\n siteReplicationInfo.curSite) ||\n !hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_REPLICATION_CONFIGURATION,\n IAM_SCOPES.S3_PUT_REPLICATION_CONFIGURATION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]),\n to: getRoutePath(\"replication\"),\n },\n },\n {\n tabConfig: {\n label: \"Lifecycle\",\n id: \"lifecycle\",\n disabled:\n !distributedSetup ||\n !hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_LIFECYCLE_CONFIGURATION,\n IAM_SCOPES.S3_PUT_LIFECYCLE_CONFIGURATION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]),\n to: getRoutePath(\"lifecycle\"),\n },\n },\n {\n tabConfig: {\n label: \"Access\",\n id: \"access\",\n disabled: !hasPermission(bucketName, [\n IAM_SCOPES.ADMIN_GET_POLICY,\n IAM_SCOPES.ADMIN_LIST_USER_POLICIES,\n IAM_SCOPES.ADMIN_LIST_USERS,\n ]),\n to: getRoutePath(\"access\"),\n },\n },\n {\n tabConfig: {\n label: \"Anonymous\",\n id: \"anonymous\",\n disabled: !hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_POLICY,\n IAM_SCOPES.S3_GET_ACTIONS,\n ]),\n to: getRoutePath(\"prefix\"),\n },\n },\n ]}\n routes={\n \n } />\n } />\n {distributedSetup && (\n }\n />\n )}\n {distributedSetup && (\n } />\n )}\n\n } />\n } />\n \n }\n />\n \n }\n />\n \n \n \n );\n};\n\nexport default withStyles(styles)(BucketDetails);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

    (\n WrappedComponent: ComponentType

    ,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n"],"names":["DeleteBucket","withSuspense","React","AccessRulePanel","AccessDetailsPanel","BucketSummaryPanel","BucketEventsPanel","BucketReplicationPanel","BucketLifecyclePanel","withStyles","theme","createStyles","_objectSpread","pageContainer","height","searchField","capitalize","textTransform","containerForHeader","_ref","_bucketInfo$access","classes","dispatch","useAppDispatch","navigate","useNavigate","params","useParams","location","useLocation","distributedSetup","useSelector","selDistSet","loadingBucket","selBucketDetailsLoading","bucketInfo","selBucketDetailsInfo","siteReplicationInfo","selSiteRep","_useState","useState","_useState2","_slicedToArray","iniLoad","setIniLoad","_useState3","_useState4","deleteOpen","setDeleteOpen","bucketName","canDelete","hasPermission","deleteBucketPermissions","canBrowse","browseBucketPermissions","useEffect","setHelpName","setBucketDetailsLoad","api","buckets","then","res","setBucketInfo","data","catch","err","setErrorSnackMessage","errorToHandler","topLevelRoute","concat","manageBucketRoutes","events","replication","lifecycle","access","prefix","getRoutePath","routeKey","path","_jsxs","Fragment","children","_jsx","selectedBucket","closeDeleteModalAndRefresh","refresh","PageHeaderWrapper","label","BackLink","onClick","actions","TooltipWrapper","tooltip","permissionTooltipHelper","IAM_PERMISSIONS","IAM_ROLES","BUCKET_VIEWER","Button","id","icon","FolderIcon","style","width","marginTop","padding","disabled","HelpMenu","PageLayout","ScreenTitle","BucketsIcon","title","subTitle","SecureComponent","scopes","IAM_SCOPES","S3_GET_BUCKET_POLICY","S3_GET_ACTIONS","resource","fontSize","className","fontWeight","toLowerCase","errorProps","S3_DELETE_BUCKET","S3_FORCE_DELETE_BUCKET","TrashIcon","variant","RefreshIcon","sx","marginBottom","Box","Tabs","currentTabOrPath","pathname","useRouteTabs","onTabClick","tab","options","tabConfig","to","S3_GET_BUCKET_NOTIFICATIONS","S3_PUT_BUCKET_NOTIFICATIONS","S3_PUT_ACTIONS","enabled","curSite","S3_GET_REPLICATION_CONFIGURATION","S3_PUT_REPLICATION_CONFIGURATION","S3_GET_LIFECYCLE_CONFIGURATION","S3_PUT_LIFECYCLE_CONFIGURATION","ADMIN_GET_POLICY","ADMIN_LIST_USER_POLICIES","ADMIN_LIST_USERS","routes","Routes","Route","element","Navigate","WrappedComponent","fallback","arguments","length","undefined","props","Suspense"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/6895.f365fd4e.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/BucketDetails.tsx","screens/Console/Common/Components/withSuspense.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport {\n Navigate,\n Route,\n Routes,\n useLocation,\n useNavigate,\n useParams,\n} from \"react-router-dom\";\nimport {\n BackLink,\n Box,\n BucketsIcon,\n Button,\n FolderIcon,\n PageLayout,\n RefreshIcon,\n ScreenTitle,\n Tabs,\n TrashIcon,\n} from \"mds\";\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 containerForHeader,\n searchField,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport {\n browseBucketPermissions,\n deleteBucketPermissions,\n IAM_PERMISSIONS,\n IAM_ROLES,\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../common/SecureComponent/permissions\";\n\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../common/SecureComponent\";\n\nimport withSuspense from \"../../Common/Components/withSuspense\";\nimport {\n selDistSet,\n selSiteRep,\n setErrorSnackMessage,\n setHelpName,\n} from \"../../../../systemSlice\";\nimport {\n selBucketDetailsInfo,\n selBucketDetailsLoading,\n setBucketDetailsLoad,\n setBucketInfo,\n} from \"./bucketDetailsSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport HelpMenu from \"../../HelpMenu\";\n\nconst DeleteBucket = withSuspense(\n React.lazy(() => import(\"../ListBuckets/DeleteBucket\")),\n);\nconst AccessRulePanel = withSuspense(\n React.lazy(() => import(\"./AccessRulePanel\")),\n);\nconst AccessDetailsPanel = withSuspense(\n React.lazy(() => import(\"./AccessDetailsPanel\")),\n);\nconst BucketSummaryPanel = withSuspense(\n React.lazy(() => import(\"./BucketSummaryPanel\")),\n);\nconst BucketEventsPanel = withSuspense(\n React.lazy(() => import(\"./BucketEventsPanel\")),\n);\nconst BucketReplicationPanel = withSuspense(\n React.lazy(() => import(\"./BucketReplicationPanel\")),\n);\nconst BucketLifecyclePanel = withSuspense(\n React.lazy(() => import(\"./BucketLifecyclePanel\")),\n);\n\nconst styles = (theme: Theme) =>\n createStyles({\n pageContainer: {\n height: \"100%\",\n },\n ...searchField,\n capitalize: {\n textTransform: \"capitalize\",\n },\n\n ...containerForHeader,\n });\n\ninterface IBucketDetailsProps {\n classes: any;\n}\n\nconst BucketDetails = ({ classes }: IBucketDetailsProps) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const params = useParams();\n const location = useLocation();\n\n const distributedSetup = useSelector(selDistSet);\n const loadingBucket = useSelector(selBucketDetailsLoading);\n const bucketInfo = useSelector(selBucketDetailsInfo);\n const siteReplicationInfo = useSelector(selSiteRep);\n\n const [iniLoad, setIniLoad] = useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const bucketName = params.bucketName || \"\";\n\n const canDelete = hasPermission(bucketName, deleteBucketPermissions);\n const canBrowse = hasPermission(bucketName, browseBucketPermissions);\n\n useEffect(() => {\n dispatch(setHelpName(\"bucket_details\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (!iniLoad) {\n dispatch(setBucketDetailsLoad(true));\n setIniLoad(true);\n }\n }, [iniLoad, dispatch, setIniLoad]);\n\n useEffect(() => {\n if (loadingBucket) {\n api.buckets\n .bucketInfo(bucketName)\n .then((res) => {\n dispatch(setBucketDetailsLoad(false));\n dispatch(setBucketInfo(res.data));\n })\n .catch((err) => {\n dispatch(setBucketDetailsLoad(false));\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n });\n }\n }, [bucketName, loadingBucket, dispatch]);\n\n let topLevelRoute = `/buckets/${bucketName}`;\n const defaultRoute = \"/admin/summary\";\n\n const manageBucketRoutes: Record = {\n events: \"/admin/events\",\n replication: \"/admin/replication\",\n lifecycle: \"/admin/lifecycle\",\n access: \"/admin/access\",\n prefix: \"/admin/prefix\",\n };\n\n const getRoutePath = (routeKey: string) => {\n let path = manageBucketRoutes[routeKey];\n if (!path) {\n path = `${topLevelRoute}${defaultRoute}`;\n } else {\n path = `${topLevelRoute}${path}`;\n }\n return path;\n };\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n if (refresh) {\n navigate(\"/buckets\");\n }\n };\n\n return (\n \n {deleteOpen && (\n {\n closeDeleteModalAndRefresh(refresh);\n }}\n />\n )}\n navigate(\"/buckets\")} />\n }\n actions={\n \n \n {\n navigate(`/browser/${bucketName}`);\n }}\n icon={\n \n }\n style={{\n padding: \"0 10px\",\n }}\n disabled={!canBrowse}\n />\n \n \n \n }\n />\n \n \n \n \n }\n title={bucketName}\n subTitle={\n \n Access: \n \n {bucketInfo?.access?.toLowerCase()}\n \n \n }\n actions={\n \n \n \n {\n setDeleteOpen(true);\n }}\n label={\"Delete Bucket\"}\n icon={}\n variant={\"secondary\"}\n disabled={!canDelete}\n />\n \n \n {\n dispatch(setBucketDetailsLoad(true));\n }}\n label={\"Refresh\"}\n icon={}\n />\n \n }\n sx={{ marginBottom: 15 }}\n />\n \n {\n navigate(tab);\n }}\n options={[\n {\n tabConfig: {\n label: \"Summary\",\n id: \"summary\",\n to: getRoutePath(\"summary\"),\n },\n },\n {\n tabConfig: {\n label: \"Events\",\n id: \"events\",\n disabled: !hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_NOTIFICATIONS,\n IAM_SCOPES.S3_PUT_BUCKET_NOTIFICATIONS,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]),\n to: getRoutePath(\"events\"),\n },\n },\n {\n tabConfig: {\n label: \"Replication\",\n id: \"replication\",\n disabled:\n !distributedSetup ||\n (siteReplicationInfo.enabled &&\n siteReplicationInfo.curSite) ||\n !hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_REPLICATION_CONFIGURATION,\n IAM_SCOPES.S3_PUT_REPLICATION_CONFIGURATION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]),\n to: getRoutePath(\"replication\"),\n },\n },\n {\n tabConfig: {\n label: \"Lifecycle\",\n id: \"lifecycle\",\n disabled:\n !distributedSetup ||\n !hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_LIFECYCLE_CONFIGURATION,\n IAM_SCOPES.S3_PUT_LIFECYCLE_CONFIGURATION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]),\n to: getRoutePath(\"lifecycle\"),\n },\n },\n {\n tabConfig: {\n label: \"Access\",\n id: \"access\",\n disabled: !hasPermission(bucketName, [\n IAM_SCOPES.ADMIN_GET_POLICY,\n IAM_SCOPES.ADMIN_LIST_USER_POLICIES,\n IAM_SCOPES.ADMIN_LIST_USERS,\n ]),\n to: getRoutePath(\"access\"),\n },\n },\n {\n tabConfig: {\n label: \"Anonymous\",\n id: \"anonymous\",\n disabled: !hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_POLICY,\n IAM_SCOPES.S3_GET_ACTIONS,\n ]),\n to: getRoutePath(\"prefix\"),\n },\n },\n ]}\n routes={\n \n } />\n } />\n {distributedSetup && (\n }\n />\n )}\n {distributedSetup && (\n } />\n )}\n\n } />\n } />\n \n }\n />\n \n }\n />\n \n \n \n );\n};\n\nexport default withStyles(styles)(BucketDetails);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

    (\n WrappedComponent: ComponentType

    ,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n"],"names":["DeleteBucket","withSuspense","React","AccessRulePanel","AccessDetailsPanel","BucketSummaryPanel","BucketEventsPanel","BucketReplicationPanel","BucketLifecyclePanel","withStyles","theme","createStyles","_objectSpread","pageContainer","height","searchField","capitalize","textTransform","containerForHeader","_ref","_bucketInfo$access","classes","dispatch","useAppDispatch","navigate","useNavigate","params","useParams","location","useLocation","distributedSetup","useSelector","selDistSet","loadingBucket","selBucketDetailsLoading","bucketInfo","selBucketDetailsInfo","siteReplicationInfo","selSiteRep","_useState","useState","_useState2","_slicedToArray","iniLoad","setIniLoad","_useState3","_useState4","deleteOpen","setDeleteOpen","bucketName","canDelete","hasPermission","deleteBucketPermissions","canBrowse","browseBucketPermissions","useEffect","setHelpName","setBucketDetailsLoad","api","buckets","then","res","setBucketInfo","data","catch","err","setErrorSnackMessage","errorToHandler","topLevelRoute","concat","manageBucketRoutes","events","replication","lifecycle","access","prefix","getRoutePath","routeKey","path","_jsxs","Fragment","children","_jsx","selectedBucket","closeDeleteModalAndRefresh","refresh","PageHeaderWrapper","label","BackLink","onClick","actions","TooltipWrapper","tooltip","permissionTooltipHelper","IAM_PERMISSIONS","IAM_ROLES","BUCKET_VIEWER","Button","id","icon","FolderIcon","style","width","marginTop","padding","disabled","HelpMenu","PageLayout","ScreenTitle","BucketsIcon","title","subTitle","SecureComponent","scopes","IAM_SCOPES","S3_GET_BUCKET_POLICY","S3_GET_ACTIONS","resource","fontSize","className","fontWeight","toLowerCase","errorProps","S3_DELETE_BUCKET","S3_FORCE_DELETE_BUCKET","TrashIcon","variant","RefreshIcon","sx","marginBottom","Box","Tabs","currentTabOrPath","pathname","useRouteTabs","onTabClick","tab","options","tabConfig","to","S3_GET_BUCKET_NOTIFICATIONS","S3_PUT_BUCKET_NOTIFICATIONS","S3_PUT_ACTIONS","enabled","curSite","S3_GET_REPLICATION_CONFIGURATION","S3_PUT_REPLICATION_CONFIGURATION","S3_GET_LIFECYCLE_CONFIGURATION","S3_PUT_LIFECYCLE_CONFIGURATION","ADMIN_GET_POLICY","ADMIN_LIST_USER_POLICIES","ADMIN_LIST_USERS","routes","Routes","Route","element","Navigate","WrappedComponent","fallback","arguments","length","undefined","props","Suspense"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/6901.4bbd899c.chunk.js.map b/portal-ui/build/static/js/6901.4bbd899c.chunk.js.map deleted file mode 100644 index de91ee01d2..0000000000 --- a/portal-ui/build/static/js/6901.4bbd899c.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/6901.4bbd899c.chunk.js","mappings":"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","sources":["screens/Console/Buckets/ListBuckets/Objects/ListObjects/RewindEnable.tsx","screens/Console/Common/FormComponents/DateTimePickerWrapper/DateTimePickerWrapper.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 { useSelector } from \"react-redux\";\n\nimport { Button, Grid, ProgressBar, Switch } from \"mds\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport DateTimePickerWrapper from \"../../../../Common/FormComponents/DateTimePickerWrapper/DateTimePickerWrapper\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport {\n resetRewind,\n setLoadingObjects,\n setRewindEnable,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport { DateTime } from \"luxon\";\n\ninterface IRewindEnable {\n closeModalAndRefresh: () => void;\n open: boolean;\n bucketName: string;\n}\n\nconst RewindEnable = ({\n closeModalAndRefresh,\n open,\n bucketName,\n}: IRewindEnable) => {\n const dispatch = useAppDispatch();\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled,\n );\n const dateRewind = useSelector(\n (state: AppState) => state.objectBrowser.rewind.dateToRewind,\n );\n\n const [rewindEnabling, setRewindEnabling] = useState(false);\n const [rewindEnableButton, setRewindEnableButton] = useState(true);\n const [dateSelected, setDateSelected] = useState(\n DateTime.fromJSDate(new Date()),\n );\n\n useEffect(() => {\n if (rewindEnabled) {\n setRewindEnableButton(true);\n setDateSelected(\n DateTime.fromISO(dateRewind || DateTime.now().toISO() || \"\"),\n );\n }\n }, [rewindEnabled, dateRewind]);\n\n const rewindApply = () => {\n if (!rewindEnableButton && rewindEnabled) {\n dispatch(resetRewind());\n } else {\n setRewindEnabling(true);\n dispatch(\n setRewindEnable({\n state: true,\n bucket: bucketName,\n dateRewind: dateSelected.toISO(),\n }),\n );\n }\n dispatch(setLoadingObjects(true));\n\n closeModalAndRefresh();\n };\n\n return (\n {\n closeModalAndRefresh();\n }}\n title={`Rewind - ${bucketName}`}\n >\n \n (dateTime ? setDateSelected(dateTime) : null)}\n id=\"rewind-selector\"\n label=\"Rewind to\"\n disabled={!rewindEnableButton}\n />\n \n \n {rewindEnabled && (\n \n ) => {\n setRewindEnableButton(e.target.checked);\n }}\n label={\"Current Status\"}\n indicatorLabels={[\"Enabled\", \"Disabled\"]}\n />\n \n )}\n \n \n \n {rewindEnabling && (\n \n \n \n )}\n \n \n );\n};\n\nexport default RewindEnable;\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 { DateTime } from \"luxon\";\nimport { HelpIcon, OpenListIcon, Grid, InputLabel, Tooltip, Box } from \"mds\";\nimport { TextField } from \"@mui/material\";\nimport { DateTimePicker, LocalizationProvider } from \"@mui/x-date-pickers\";\nimport { AdapterLuxon } from \"@mui/x-date-pickers/AdapterLuxon\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport ScheduleIcon from \"@mui/icons-material/Schedule\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\n\ninterface IDateTimePicker {\n value: DateTime | null;\n onChange: (value: DateTime | null) => void;\n classes: any;\n forSearchBlock?: boolean;\n forFilterContained?: boolean;\n label?: string;\n required?: boolean;\n tooltip?: string;\n id: string;\n disabled?: boolean;\n noInputIcon?: boolean;\n classNamePrefix?: string;\n openPickerIcon?: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n dateSelectorOverride: {\n height: 40,\n border: \"#EAEDEE 1px solid\",\n marginLeft: 15,\n backgroundColor: \"#fff\",\n padding: \"0 16px\",\n borderRadius: 5,\n \"&.MuiInput-underline:hover:not(.Mui-disabled):before\": {\n borderBottom: 0,\n },\n \"&:hover\": {\n borderColor: \"#000\",\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n },\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n \"& input\": {\n fontSize: 12,\n fontWeight: 600,\n color: \"#393939\",\n },\n },\n dateSelectorFilterOverride: {\n width: 180,\n height: 42,\n marginLeft: 20,\n padding: 0,\n borderRadius: 5,\n \"&.MuiInput-underline:hover:not(.Mui-disabled):before\": {\n borderBottom: 0,\n },\n \"&:hover\": {\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n },\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n \"& input\": {\n fontSize: 12,\n fontWeight: \"bold\",\n color: \"#081C42\",\n },\n \"@media (max-width: 900px)\": {\n width: 103,\n },\n },\n dateSelectorFormOverride: {\n width: \"100%\",\n maxWidth: 840,\n },\n parentDateOverride: {\n flexGrow: 1,\n },\n textBoxContainer: {\n width: \"calc(100% - 190px)\",\n },\n openListIcon: {\n color: \"#9D9E9D\",\n width: 8,\n marginTop: 2,\n },\n paperOverride: {\n \"& .MuiCalendarPicker-root\": {\n padding: \"0 22px\",\n \"& > div\": {\n padding: 0,\n \"& > div > div.PrivatePickersFadeTransitionGroup-root:first-of-type\":\n {\n color: \"#0A224C\",\n fontWeight: \"bold\",\n },\n \"& > div > div.PrivatePickersFadeTransitionGroup-root:last-of-type\": {\n color: \"#9D9E9D\",\n \"& + button.MuiButtonBase-root\": {\n color: \"#9D9E9D\",\n },\n },\n \"& > div:nth-child(2)\": {\n \"& > div\": {\n width: 0,\n },\n \"& > button.MuiButtonBase-root\": {\n color: \"#0A224C\",\n },\n },\n },\n },\n \"& .MuiTypography-root.MuiTypography-caption\": {\n width: 26,\n height: 26,\n margin: 5,\n color: \"#BCBCBC\",\n fontSize: 10,\n },\n \"& button.MuiPickersDay-root\": {\n fontWeight: \"bold\",\n width: 26,\n height: 26,\n margin: 5,\n textAlign: \"center\",\n \"&.Mui-selected\": {\n backgroundColor: theme.palette.primary.main,\n color: \"#fff\",\n },\n },\n \"& div.MuiPickersDay-hiddenDaySpacingFiller\": {\n width: 26,\n height: 26,\n margin: 5,\n },\n \"& div.PrivatePickersSlideTransition-root\": {\n minHeight: 240,\n },\n \"& div.MuiCalendarPicker-viewTransitionContainer\": {\n borderTop: \"#F0F3F5 1px solid\",\n },\n \"& .MuiClockPicker-arrowSwitcher\": {\n marginRight: 10,\n marginTop: -1,\n \"& > div\": {\n width: 0,\n },\n \"& > button.MuiButtonBase-root\": {\n color: \"#0A224C\",\n },\n \"& + div > div\": {\n width: 255,\n height: 255,\n backgroundColor: \"#fff\",\n marginTop: 30,\n marginBottom: 14,\n border: \"#F0F3F5 3px solid\",\n \"& > div:nth-child(2)\": {\n backgroundColor: \"#B4B5B4\",\n width: 12,\n height: 12,\n \"&::before\": {\n content: \"' '\",\n width: 35,\n height: 35,\n display: \"block\",\n position: \"absolute\",\n border: \"#F0F3F5 3px solid\",\n top: -12,\n left: -12,\n borderRadius: \"100%\",\n },\n },\n \"& > div:nth-child(3)\": {\n backgroundColor: \"#B4B5B4\",\n width: 4,\n },\n \"& > div:last-of-type\": {\n marginTop: 15,\n \"& > span\": {\n color: \"#0A224C\",\n \"&.Mui-selected\": {\n color: \"#fff\",\n },\n \"&[aria-label='1 hours'], &[aria-label='2 hours'], &[aria-label='3 hours'], &[aria-label='4 hours'], &[aria-label='5 hours'], &[aria-label='6 hours'], &[aria-label='7 hours'], &[aria-label='8 hours'], &[aria-label='9 hours'], &[aria-label='10 hours'], &[aria-label='11 hours'], &[aria-label='12 hours']\":\n {\n fontWeight: \"bold\",\n fontSize: 20,\n marginTop: -1,\n },\n },\n },\n },\n },\n },\n ...fieldBasic,\n ...tooltipHelper,\n });\n\nconst DateTimePickerWrapper = ({\n value,\n onChange,\n classes,\n forSearchBlock = false,\n forFilterContained = false,\n label,\n tooltip = \"\",\n required,\n id,\n disabled = false,\n noInputIcon = false,\n classNamePrefix = \"\",\n openPickerIcon,\n}: IDateTimePicker) => {\n let adornment = {};\n\n if (!noInputIcon) {\n adornment = {\n startAdornment: (\n \n \n \n ),\n };\n }\n\n if (forFilterContained) {\n adornment = {\n endAdornment: (\n \n \n \n ),\n };\n }\n\n const classOverridden = `${classNamePrefix}date-time-input ${\n forSearchBlock ? classes.dateSelectorOverride : \"\"\n } ${\n forFilterContained && !forSearchBlock\n ? classes.dateSelectorFilterOverride\n : \"\"\n }`;\n\n const clsName = forSearchBlock\n ? classes.parentDateOverride\n : classes.dateSelectorFormOverride;\n\n const inputItem = (\n \n (\n \n )}\n ampm={false}\n PopperProps={{\n className: classes.paperOverride,\n }}\n inputFormat={\"LL/dd/yyyy HH:mm\"}\n />\n \n );\n\n if (forSearchBlock) {\n return inputItem;\n }\n\n const containerCls = !forFilterContained ? classes.fieldContainer : \"\";\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n

    \n \n
    \n \n
    \n
    \n
    \n )}\n \n )}\n\n \n {inputItem}\n \n \n \n );\n};\n\nexport default withStyles(styles)(DateTimePickerWrapper);\n"],"names":["_ref","closeModalAndRefresh","open","bucketName","dispatch","useAppDispatch","rewindEnabled","useSelector","state","objectBrowser","rewind","dateRewind","dateToRewind","_useState","useState","_useState2","_slicedToArray","rewindEnabling","setRewindEnabling","_useState3","_useState4","rewindEnableButton","setRewindEnableButton","_useState5","DateTime","fromJSDate","Date","_useState6","dateSelected","setDateSelected","useEffect","fromISO","now","toISO","_jsxs","ModalWrapper","modalOpen","onClose","title","concat","children","_jsx","Grid","item","xs","DateTimePickerWrapper","value","onChange","dateTime","id","label","disabled","container","sx","marginBottom","Switch","name","checked","e","target","indicatorLabels","style","justifyContent","display","Button","type","variant","onClick","resetRewind","setRewindEnable","bucket","setLoadingObjects","ProgressBar","withStyles","theme","createStyles","_objectSpread","dateSelectorOverride","height","border","marginLeft","backgroundColor","padding","borderRadius","borderBottom","borderColor","fontSize","fontWeight","color","dateSelectorFilterOverride","width","dateSelectorFormOverride","maxWidth","parentDateOverride","flexGrow","textBoxContainer","openListIcon","marginTop","paperOverride","margin","textAlign","palette","primary","main","minHeight","borderTop","marginRight","content","position","top","left","fieldBasic","tooltipHelper","classes","_ref$forSearchBlock","forSearchBlock","_ref$forFilterContain","forFilterContained","_ref$tooltip","tooltip","required","_ref$disabled","_ref$noInputIcon","noInputIcon","_ref$classNamePrefix","classNamePrefix","openPickerIcon","adornment","startAdornment","InputAdornment","ScheduleIcon","endAdornment","OpenListIcon","className","classOverridden","clsName","inputItem","LocalizationProvider","dateAdapter","AdapterLuxon","DateTimePicker","InputProps","components","OpenPickerIcon","renderInput","props","TextField","ampm","PopperProps","inputFormat","containerCls","fieldContainer","Fragment","gridAutoColumns","InputLabel","htmlFor","tooltipContainer","Tooltip","placement","HelpIcon","Box"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/6901.4bbd899c.chunk.js b/portal-ui/build/static/js/6901.9f19a060.chunk.js similarity index 83% rename from portal-ui/build/static/js/6901.4bbd899c.chunk.js rename to portal-ui/build/static/js/6901.9f19a060.chunk.js index 0ee312d3f5..0fce42e0a7 100644 --- a/portal-ui/build/static/js/6901.4bbd899c.chunk.js +++ b/portal-ui/build/static/js/6901.9f19a060.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[6901],{26901:function(e,r,o){o.r(r);var t=o(29439),i=o(72791),a=o(78687),n=o(29945),d=o(56028),l=o(80705),s=o(81551),c=o(54756),u=o(99779),h=o(80184);r.default=function(e){var r=e.closeModalAndRefresh,o=e.open,p=e.bucketName,b=(0,s.TL)(),f=(0,a.v9)((function(e){return e.objectBrowser.rewind.rewindEnabled})),m=(0,a.v9)((function(e){return e.objectBrowser.rewind.dateToRewind})),v=(0,i.useState)(!1),x=(0,t.Z)(v,2),g=x[0],C=x[1],w=(0,i.useState)(!0),j=(0,t.Z)(w,2),k=j[0],B=j[1],Z=(0,i.useState)(u.ou.fromJSDate(new Date)),S=(0,t.Z)(Z,2),y=S[0],F=S[1];(0,i.useEffect)((function(){f&&(B(!0),F(u.ou.fromISO(m||u.ou.now().toISO()||"")))}),[f,m]);return(0,h.jsxs)(d.Z,{modalOpen:o,onClose:function(){r()},title:"Rewind - ".concat(p),children:[(0,h.jsx)(n.rjZ,{item:!0,xs:12,children:(0,h.jsx)(l.Z,{value:y,onChange:function(e){return e?F(e):null},id:"rewind-selector",label:"Rewind to",disabled:!k})}),(0,h.jsxs)(n.rjZ,{container:!0,children:[f&&(0,h.jsx)(n.rjZ,{item:!0,xs:12,sx:{marginBottom:"10px"},children:(0,h.jsx)(n.rsf,{value:"status",id:"status",name:"status",checked:k,onChange:function(e){B(e.target.checked)},label:"Current Status",indicatorLabels:["Enabled","Disabled"]})}),(0,h.jsx)(n.rjZ,{item:!0,xs:12,style:{justifyContent:"flex-end",display:"flex"},children:(0,h.jsx)(n.zxk,{type:"button",variant:"callAction",disabled:g||!y&&k,onClick:function(){!k&&f?b((0,c._w)()):(C(!0),b((0,c.SV)({state:!0,bucket:p,dateRewind:y.toISO()}))),b((0,c.Cn)(!0)),r()},id:"rewind-apply-button",label:!k&&f?"Show Current Data":"Show Rewind Data"})}),g&&(0,h.jsx)(n.rjZ,{item:!0,xs:12,children:(0,h.jsx)(n.kod,{})})]})]})}},80705:function(e,r,o){var t=o(1413),i=o(72791),a=o(29945),n=o(20817),d=o(36571),l=o(80916),s=o(36612),c=o(63466),u=o(27197),h=o(11135),p=o(25787),b=o(23814),f=o(80184);r.Z=(0,p.Z)((function(e){return(0,h.Z)((0,t.Z)((0,t.Z)({dateSelectorOverride:{height:40,border:"#EAEDEE 1px solid",marginLeft:15,backgroundColor:"#fff",padding:"0 16px",borderRadius:5,"&.MuiInput-underline:hover:not(.Mui-disabled):before":{borderBottom:0},"&:hover":{borderColor:"#000","&:before, &:after":{borderColor:"transparent",borderBottom:0}},"&:before, &:after":{borderColor:"transparent",borderBottom:0},"& input":{fontSize:12,fontWeight:600,color:"#393939"}},dateSelectorFilterOverride:{width:180,height:42,marginLeft:20,padding:0,borderRadius:5,"&.MuiInput-underline:hover:not(.Mui-disabled):before":{borderBottom:0},"&:hover":{"&:before, &:after":{borderColor:"transparent",borderBottom:0}},"&:before, &:after":{borderColor:"transparent",borderBottom:0},"& input":{fontSize:12,fontWeight:"bold",color:"#081C42"},"@media (max-width: 900px)":{width:103}},dateSelectorFormOverride:{width:"100%",maxWidth:840},parentDateOverride:{flexGrow:1},textBoxContainer:{width:"calc(100% - 190px)"},openListIcon:{color:"#9D9E9D",width:8,marginTop:2},paperOverride:{"& .MuiCalendarPicker-root":{padding:"0 22px","& > div":{padding:0,"& > div > div.PrivatePickersFadeTransitionGroup-root:first-of-type":{color:"#0A224C",fontWeight:"bold"},"& > div > div.PrivatePickersFadeTransitionGroup-root:last-of-type":{color:"#9D9E9D","& + button.MuiButtonBase-root":{color:"#9D9E9D"}},"& > div:nth-child(2)":{"& > div":{width:0},"& > button.MuiButtonBase-root":{color:"#0A224C"}}}},"& .MuiTypography-root.MuiTypography-caption":{width:26,height:26,margin:5,color:"#BCBCBC",fontSize:10},"& button.MuiPickersDay-root":{fontWeight:"bold",width:26,height:26,margin:5,textAlign:"center","&.Mui-selected":{backgroundColor:e.palette.primary.main,color:"#fff"}},"& div.MuiPickersDay-hiddenDaySpacingFiller":{width:26,height:26,margin:5},"& div.PrivatePickersSlideTransition-root":{minHeight:240},"& div.MuiCalendarPicker-viewTransitionContainer":{borderTop:"#F0F3F5 1px solid"},"& .MuiClockPicker-arrowSwitcher":{marginRight:10,marginTop:-1,"& > div":{width:0},"& > button.MuiButtonBase-root":{color:"#0A224C"},"& + div > div":{width:255,height:255,backgroundColor:"#fff",marginTop:30,marginBottom:14,border:"#F0F3F5 3px solid","& > div:nth-child(2)":{backgroundColor:"#B4B5B4",width:12,height:12,"&::before":{content:"' '",width:35,height:35,display:"block",position:"absolute",border:"#F0F3F5 3px solid",top:-12,left:-12,borderRadius:"100%"}},"& > div:nth-child(3)":{backgroundColor:"#B4B5B4",width:4},"& > div:last-of-type":{marginTop:15,"& > span":{color:"#0A224C","&.Mui-selected":{color:"#fff"},"&[aria-label='1 hours'], &[aria-label='2 hours'], &[aria-label='3 hours'], &[aria-label='4 hours'], &[aria-label='5 hours'], &[aria-label='6 hours'], &[aria-label='7 hours'], &[aria-label='8 hours'], &[aria-label='9 hours'], &[aria-label='10 hours'], &[aria-label='11 hours'], &[aria-label='12 hours']":{fontWeight:"bold",fontSize:20,marginTop:-1}}}}}}},b.YI),b.Hr))}))((function(e){var r=e.value,o=e.onChange,h=e.classes,p=e.forSearchBlock,b=void 0!==p&&p,m=e.forFilterContained,v=void 0!==m&&m,x=e.label,g=e.tooltip,C=void 0===g?"":g,w=e.required,j=e.id,k=e.disabled,B=void 0!==k&&k,Z=e.noInputIcon,S=void 0!==Z&&Z,y=e.classNamePrefix,F=void 0===y?"":y,D=e.openPickerIcon,M={};S||(M={startAdornment:(0,f.jsx)(c.Z,{position:"start",children:(0,f.jsx)(u.Z,{})})}),v&&(M={endAdornment:(0,f.jsx)(c.Z,{position:"end",children:(0,f.jsx)(a.Q2V,{className:h.openListIcon})})});var P="".concat(F,"date-time-input ").concat(b?h.dateSelectorOverride:""," ").concat(v&&!b?h.dateSelectorFilterOverride:""),O=b?h.parentDateOverride:h.dateSelectorFormOverride,I=(0,f.jsx)(d._,{dateAdapter:s.Z,children:(0,f.jsx)(l.x,{value:r,onChange:o,InputProps:(0,t.Z)((0,t.Z)({},M),{},{className:P}),components:{OpenPickerIcon:D},label:"",className:O,disabled:B,renderInput:function(e){return(0,f.jsx)(n.Z,(0,t.Z)((0,t.Z)({id:j,variant:"standard"},e),{},{disabled:!0}))},ampm:!1,PopperProps:{className:h.paperOverride},inputFormat:"LL/dd/yyyy HH:mm"})});if(b)return I;var T=v?"":h.fieldContainer;return(0,f.jsx)(i.Fragment,{children:(0,f.jsxs)(a.rjZ,{item:!0,xs:12,className:"".concat(T," ").concat(F,"input-field-container"),sx:{display:"grid",gridAutoColumns:"max-content"},children:[""!==x&&(0,f.jsxs)(a.AZs,{htmlFor:j,children:[(0,f.jsxs)("span",{children:[x,w?"*":""]}),""!==C&&(0,f.jsx)("div",{className:h.tooltipContainer,children:(0,f.jsx)(a.ua7,{tooltip:C,placement:"top",children:(0,f.jsx)("div",{className:h.tooltip,children:(0,f.jsx)(a.byK,{})})})})]}),(0,f.jsx)(a.xuv,{className:"".concat(h.textBoxContainer," ").concat(F,"input-wrapper"),children:I})]})})}))}}]); -//# sourceMappingURL=6901.4bbd899c.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[6901],{26901:function(e,r,o){o.r(r);var t=o(29439),i=o(72791),a=o(99779),n=o(29945),d=o(78687),l=o(56028),s=o(80705),c=o(44690),u=o(54756),h=o(80184);r.default=function(e){var r=e.closeModalAndRefresh,o=e.open,p=e.bucketName,b=(0,c.TL)(),f=(0,d.v9)((function(e){return e.objectBrowser.rewind.rewindEnabled})),m=(0,d.v9)((function(e){return e.objectBrowser.rewind.dateToRewind})),v=(0,i.useState)(!1),x=(0,t.Z)(v,2),g=x[0],w=x[1],C=(0,i.useState)(!0),j=(0,t.Z)(C,2),k=j[0],B=j[1],Z=(0,i.useState)(a.ou.fromJSDate(new Date)),S=(0,t.Z)(Z,2),y=S[0],F=S[1];(0,i.useEffect)((function(){f&&(B(!0),F(a.ou.fromISO(m||a.ou.now().toISO()||"")))}),[f,m]);return(0,h.jsxs)(l.Z,{modalOpen:o,onClose:function(){r()},title:"Rewind - ".concat(p),children:[(0,h.jsx)(n.rjZ,{item:!0,xs:12,children:(0,h.jsx)(s.Z,{value:y,onChange:function(e){return e?F(e):null},id:"rewind-selector",label:"Rewind to",disabled:!k})}),(0,h.jsxs)(n.rjZ,{container:!0,children:[f&&(0,h.jsx)(n.rjZ,{item:!0,xs:12,sx:{marginBottom:"10px"},children:(0,h.jsx)(n.rsf,{value:"status",id:"status",name:"status",checked:k,onChange:function(e){B(e.target.checked)},label:"Current Status",indicatorLabels:["Enabled","Disabled"]})}),(0,h.jsx)(n.rjZ,{item:!0,xs:12,style:{justifyContent:"flex-end",display:"flex"},children:(0,h.jsx)(n.zxk,{type:"button",variant:"callAction",disabled:g||!y&&k,onClick:function(){!k&&f?b((0,u._w)()):(w(!0),b((0,u.SV)({state:!0,bucket:p,dateRewind:y.toISO()}))),b((0,u.$3)(!0)),r()},id:"rewind-apply-button",label:!k&&f?"Show Current Data":"Show Rewind Data"})}),g&&(0,h.jsx)(n.rjZ,{item:!0,xs:12,children:(0,h.jsx)(n.kod,{})})]})]})}},80705:function(e,r,o){var t=o(1413),i=o(72791),a=o(29945),n=o(20817),d=o(36571),l=o(80916),s=o(36612),c=o(63466),u=o(27197),h=o(11135),p=o(25787),b=o(23814),f=o(80184);r.Z=(0,p.Z)((function(e){return(0,h.Z)((0,t.Z)((0,t.Z)({dateSelectorOverride:{height:40,border:"#EAEDEE 1px solid",marginLeft:15,backgroundColor:"#fff",padding:"0 16px",borderRadius:5,"&.MuiInput-underline:hover:not(.Mui-disabled):before":{borderBottom:0},"&:hover":{borderColor:"#000","&:before, &:after":{borderColor:"transparent",borderBottom:0}},"&:before, &:after":{borderColor:"transparent",borderBottom:0},"& input":{fontSize:12,fontWeight:600,color:"#393939"}},dateSelectorFilterOverride:{width:180,height:42,marginLeft:20,padding:0,borderRadius:5,"&.MuiInput-underline:hover:not(.Mui-disabled):before":{borderBottom:0},"&:hover":{"&:before, &:after":{borderColor:"transparent",borderBottom:0}},"&:before, &:after":{borderColor:"transparent",borderBottom:0},"& input":{fontSize:12,fontWeight:"bold",color:"#081C42"},"@media (max-width: 900px)":{width:103}},dateSelectorFormOverride:{width:"100%",maxWidth:840},parentDateOverride:{flexGrow:1},textBoxContainer:{width:"calc(100% - 190px)"},openListIcon:{color:"#9D9E9D",width:8,marginTop:2},paperOverride:{"& .MuiCalendarPicker-root":{padding:"0 22px","& > div":{padding:0,"& > div > div.PrivatePickersFadeTransitionGroup-root:first-of-type":{color:"#0A224C",fontWeight:"bold"},"& > div > div.PrivatePickersFadeTransitionGroup-root:last-of-type":{color:"#9D9E9D","& + button.MuiButtonBase-root":{color:"#9D9E9D"}},"& > div:nth-child(2)":{"& > div":{width:0},"& > button.MuiButtonBase-root":{color:"#0A224C"}}}},"& .MuiTypography-root.MuiTypography-caption":{width:26,height:26,margin:5,color:"#BCBCBC",fontSize:10},"& button.MuiPickersDay-root":{fontWeight:"bold",width:26,height:26,margin:5,textAlign:"center","&.Mui-selected":{backgroundColor:e.palette.primary.main,color:"#fff"}},"& div.MuiPickersDay-hiddenDaySpacingFiller":{width:26,height:26,margin:5},"& div.PrivatePickersSlideTransition-root":{minHeight:240},"& div.MuiCalendarPicker-viewTransitionContainer":{borderTop:"#F0F3F5 1px solid"},"& .MuiClockPicker-arrowSwitcher":{marginRight:10,marginTop:-1,"& > div":{width:0},"& > button.MuiButtonBase-root":{color:"#0A224C"},"& + div > div":{width:255,height:255,backgroundColor:"#fff",marginTop:30,marginBottom:14,border:"#F0F3F5 3px solid","& > div:nth-child(2)":{backgroundColor:"#B4B5B4",width:12,height:12,"&::before":{content:"' '",width:35,height:35,display:"block",position:"absolute",border:"#F0F3F5 3px solid",top:-12,left:-12,borderRadius:"100%"}},"& > div:nth-child(3)":{backgroundColor:"#B4B5B4",width:4},"& > div:last-of-type":{marginTop:15,"& > span":{color:"#0A224C","&.Mui-selected":{color:"#fff"},"&[aria-label='1 hours'], &[aria-label='2 hours'], &[aria-label='3 hours'], &[aria-label='4 hours'], &[aria-label='5 hours'], &[aria-label='6 hours'], &[aria-label='7 hours'], &[aria-label='8 hours'], &[aria-label='9 hours'], &[aria-label='10 hours'], &[aria-label='11 hours'], &[aria-label='12 hours']":{fontWeight:"bold",fontSize:20,marginTop:-1}}}}}}},b.YI),b.Hr))}))((function(e){var r=e.value,o=e.onChange,h=e.classes,p=e.forSearchBlock,b=void 0!==p&&p,m=e.forFilterContained,v=void 0!==m&&m,x=e.label,g=e.tooltip,w=void 0===g?"":g,C=e.required,j=e.id,k=e.disabled,B=void 0!==k&&k,Z=e.noInputIcon,S=void 0!==Z&&Z,y=e.classNamePrefix,F=void 0===y?"":y,D=e.openPickerIcon,M={};S||(M={startAdornment:(0,f.jsx)(c.Z,{position:"start",children:(0,f.jsx)(u.Z,{})})}),v&&(M={endAdornment:(0,f.jsx)(c.Z,{position:"end",children:(0,f.jsx)(a.Q2V,{className:h.openListIcon})})});var P="".concat(F,"date-time-input ").concat(b?h.dateSelectorOverride:""," ").concat(v&&!b?h.dateSelectorFilterOverride:""),O=b?h.parentDateOverride:h.dateSelectorFormOverride,I=(0,f.jsx)(d._,{dateAdapter:s.Z,children:(0,f.jsx)(l.x,{value:r,onChange:o,InputProps:(0,t.Z)((0,t.Z)({},M),{},{className:P}),components:{OpenPickerIcon:D},label:"",className:O,disabled:B,renderInput:function(e){return(0,f.jsx)(n.Z,(0,t.Z)((0,t.Z)({id:j,variant:"standard"},e),{},{disabled:!0}))},ampm:!1,PopperProps:{className:h.paperOverride},inputFormat:"LL/dd/yyyy HH:mm"})});if(b)return I;var T=v?"":h.fieldContainer;return(0,f.jsx)(i.Fragment,{children:(0,f.jsxs)(a.rjZ,{item:!0,xs:12,className:"".concat(T," ").concat(F,"input-field-container"),sx:{display:"grid",gridAutoColumns:"max-content"},children:[""!==x&&(0,f.jsxs)(a.AZs,{htmlFor:j,children:[(0,f.jsxs)("span",{children:[x,C?"*":""]}),""!==w&&(0,f.jsx)("div",{className:h.tooltipContainer,children:(0,f.jsx)(a.ua7,{tooltip:w,placement:"top",children:(0,f.jsx)("div",{className:h.tooltip,children:(0,f.jsx)(a.byK,{})})})})]}),(0,f.jsx)(a.xuv,{className:"".concat(h.textBoxContainer," ").concat(F,"input-wrapper"),children:I})]})})}))}}]); +//# sourceMappingURL=6901.9f19a060.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/6901.9f19a060.chunk.js.map b/portal-ui/build/static/js/6901.9f19a060.chunk.js.map new file mode 100644 index 0000000000..72cbc452ae --- /dev/null +++ b/portal-ui/build/static/js/6901.9f19a060.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/6901.9f19a060.chunk.js","mappings":"sOA+IA,UA5GqB,SAAHA,GAII,IAHpBC,EAAoBD,EAApBC,qBACAC,EAAIF,EAAJE,KACAC,EAAUH,EAAVG,WAEMC,GAAWC,EAAAA,EAAAA,MAEXC,GAAgBC,EAAAA,EAAAA,KACpB,SAACC,GAAe,OAAKA,EAAMC,cAAcC,OAAOJ,aAAa,IAEzDK,GAAaJ,EAAAA,EAAAA,KACjB,SAACC,GAAe,OAAKA,EAAMC,cAAcC,OAAOE,YAAY,IAG9DC,GAA4CC,EAAAA,EAAAA,WAAkB,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA7DI,EAAcF,EAAA,GAAEG,EAAiBH,EAAA,GACxCI,GAAoDL,EAAAA,EAAAA,WAAkB,GAAKM,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAApEE,EAAkBD,EAAA,GAAEE,EAAqBF,EAAA,GAChDG,GAAwCT,EAAAA,EAAAA,UACtCU,EAAAA,GAASC,WAAW,IAAIC,OACzBC,GAAAX,EAAAA,EAAAA,GAAAO,EAAA,GAFMK,EAAYD,EAAA,GAAEE,EAAeF,EAAA,IAIpCG,EAAAA,EAAAA,YAAU,WACJxB,IACFgB,GAAsB,GACtBO,EACEL,EAAAA,GAASO,QAAQpB,GAAca,EAAAA,GAASQ,MAAMC,SAAW,KAG/D,GAAG,CAAC3B,EAAeK,IAoBnB,OACEuB,EAAAA,EAAAA,MAACC,EAAAA,EAAY,CACXC,UAAWlC,EACXmC,QAAS,WACPpC,GACF,EACAqC,MAAK,YAAAC,OAAcpC,GAAaqC,SAAA,EAEhCC,EAAAA,EAAAA,KAACC,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAGJ,UAChBC,EAAAA,EAAAA,KAACI,EAAAA,EAAqB,CACpBC,MAAOlB,EACPmB,SAAU,SAACC,GAAQ,OAAMA,EAAWnB,EAAgBmB,GAAY,IAAI,EACpEC,GAAG,kBACHC,MAAM,YACNC,UAAW9B,OAGfa,EAAAA,EAAAA,MAACQ,EAAAA,IAAI,CAACU,WAAS,EAAAZ,SAAA,CACZlC,IACCmC,EAAAA,EAAAA,KAACC,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAIS,GAAI,CAAEC,aAAc,QAASd,UAC9CC,EAAAA,EAAAA,KAACc,EAAAA,IAAM,CACLT,MAAM,SACNG,GAAG,SACHO,KAAK,SACLC,QAASpC,EACT0B,SAAU,SAACW,GACTpC,EAAsBoC,EAAEC,OAAOF,QACjC,EACAP,MAAO,iBACPU,gBAAiB,CAAC,UAAW,iBAInCnB,EAAAA,EAAAA,KAACC,EAAAA,IAAI,CACHC,MAAI,EACJC,GAAI,GACJiB,MAAO,CAAEC,eAAgB,WAAYC,QAAS,QAASvB,UAEvDC,EAAAA,EAAAA,KAACuB,EAAAA,IAAM,CACLC,KAAK,SACLC,QAAQ,aACRf,SAAUlC,IAAoBW,GAAgBP,EAC9C8C,QA5DU,YACb9C,GAAsBf,EACzBF,GAASgE,EAAAA,EAAAA,QAETlD,GAAkB,GAClBd,GACEiE,EAAAA,EAAAA,IAAgB,CACd7D,OAAO,EACP8D,OAAQnE,EACRQ,WAAYiB,EAAaK,YAI/B7B,GAASmE,EAAAA,EAAAA,KAAqB,IAE9BtE,GACF,EA6CUgD,GAAI,sBACJC,OACG7B,GAAsBf,EACnB,oBACA,uBAITW,IACCwB,EAAAA,EAAAA,KAACC,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAGJ,UAChBC,EAAAA,EAAAA,KAAC+B,EAAAA,IAAW,WAMxB,C,0KCiNA,KAAeC,EAAAA,EAAAA,IAjTA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,IAAYC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CACXC,qBAAsB,CACpBC,OAAQ,GACRC,OAAQ,oBACRC,WAAY,GACZC,gBAAiB,OACjBC,QAAS,SACTC,aAAc,EACd,uDAAwD,CACtDC,aAAc,GAEhB,UAAW,CACTC,YAAa,OACb,oBAAqB,CACnBA,YAAa,cACbD,aAAc,IAGlB,oBAAqB,CACnBC,YAAa,cACbD,aAAc,GAEhB,UAAW,CACTE,SAAU,GACVC,WAAY,IACZC,MAAO,YAGXC,2BAA4B,CAC1BC,MAAO,IACPZ,OAAQ,GACRE,WAAY,GACZE,QAAS,EACTC,aAAc,EACd,uDAAwD,CACtDC,aAAc,GAEhB,UAAW,CACT,oBAAqB,CACnBC,YAAa,cACbD,aAAc,IAGlB,oBAAqB,CACnBC,YAAa,cACbD,aAAc,GAEhB,UAAW,CACTE,SAAU,GACVC,WAAY,OACZC,MAAO,WAET,4BAA6B,CAC3BE,MAAO,MAGXC,yBAA0B,CACxBD,MAAO,OACPE,SAAU,KAEZC,mBAAoB,CAClBC,SAAU,GAEZC,iBAAkB,CAChBL,MAAO,sBAETM,aAAc,CACZR,MAAO,UACPE,MAAO,EACPO,UAAW,GAEbC,cAAe,CACb,4BAA6B,CAC3BhB,QAAS,SACT,UAAW,CACTA,QAAS,EACT,qEACE,CACEM,MAAO,UACPD,WAAY,QAEhB,oEAAqE,CACnEC,MAAO,UACP,iCAAkC,CAChCA,MAAO,YAGX,uBAAwB,CACtB,UAAW,CACTE,MAAO,GAET,gCAAiC,CAC/BF,MAAO,cAKf,8CAA+C,CAC7CE,MAAO,GACPZ,OAAQ,GACRqB,OAAQ,EACRX,MAAO,UACPF,SAAU,IAEZ,8BAA+B,CAC7BC,WAAY,OACZG,MAAO,GACPZ,OAAQ,GACRqB,OAAQ,EACRC,UAAW,SACX,iBAAkB,CAChBnB,gBAAiBP,EAAM2B,QAAQC,QAAQC,KACvCf,MAAO,SAGX,6CAA8C,CAC5CE,MAAO,GACPZ,OAAQ,GACRqB,OAAQ,GAEV,2CAA4C,CAC1CK,UAAW,KAEb,kDAAmD,CACjDC,UAAW,qBAEb,kCAAmC,CACjCC,YAAa,GACbT,WAAY,EACZ,UAAW,CACTP,MAAO,GAET,gCAAiC,CAC/BF,MAAO,WAET,gBAAiB,CACfE,MAAO,IACPZ,OAAQ,IACRG,gBAAiB,OACjBgB,UAAW,GACX3C,aAAc,GACdyB,OAAQ,oBACR,uBAAwB,CACtBE,gBAAiB,UACjBS,MAAO,GACPZ,OAAQ,GACR,YAAa,CACX6B,QAAS,MACTjB,MAAO,GACPZ,OAAQ,GACRf,QAAS,QACT6C,SAAU,WACV7B,OAAQ,oBACR8B,KAAM,GACNC,MAAO,GACP3B,aAAc,SAGlB,uBAAwB,CACtBF,gBAAiB,UACjBS,MAAO,GAET,uBAAwB,CACtBO,UAAW,GACX,WAAY,CACVT,MAAO,UACP,iBAAkB,CAChBA,MAAO,QAET,gTACE,CACED,WAAY,OACZD,SAAU,GACVW,WAAY,SAOvBc,EAAAA,IACAC,EAAAA,IACF,GA0HL,EAxH8B,SAAHhH,GAcH,IAbtB8C,EAAK9C,EAAL8C,MACAC,EAAQ/C,EAAR+C,SACAkE,EAAOjH,EAAPiH,QAAOC,EAAAlH,EACPmH,eAAAA,OAAc,IAAAD,GAAQA,EAAAE,EAAApH,EACtBqH,mBAAAA,OAAkB,IAAAD,GAAQA,EAC1BlE,EAAKlD,EAALkD,MAAKoE,EAAAtH,EACLuH,QAAAA,OAAO,IAAAD,EAAG,GAAEA,EACZE,EAAQxH,EAARwH,SACAvE,EAAEjD,EAAFiD,GAAEwE,EAAAzH,EACFmD,SAAAA,OAAQ,IAAAsE,GAAQA,EAAAC,EAAA1H,EAChB2H,YAAAA,OAAW,IAAAD,GAAQA,EAAAE,EAAA5H,EACnB6H,gBAAAA,OAAe,IAAAD,EAAG,GAAEA,EACpBE,EAAc9H,EAAd8H,eAEIC,EAAY,CAAC,EAEZJ,IACHI,EAAY,CACVC,gBACEvF,EAAAA,EAAAA,KAACwF,EAAAA,EAAc,CAACrB,SAAS,QAAOpE,UAC9BC,EAAAA,EAAAA,KAACyF,EAAAA,EAAY,QAMjBb,IACFU,EAAY,CACVI,cACE1F,EAAAA,EAAAA,KAACwF,EAAAA,EAAc,CAACrB,SAAS,MAAKpE,UAC5BC,EAAAA,EAAAA,KAAC2F,EAAAA,IAAY,CAACC,UAAWpB,EAAQjB,mBAMzC,IAAMsC,EAAe,GAAA/F,OAAMsF,EAAe,qBAAAtF,OACxC4E,EAAiBF,EAAQpC,qBAAuB,GAAE,KAAAtC,OAElD8E,IAAuBF,EACnBF,EAAQxB,2BACR,IAGA8C,EAAUpB,EACZF,EAAQpB,mBACRoB,EAAQtB,yBAEN6C,GACJ/F,EAAAA,EAAAA,KAACgG,EAAAA,EAAoB,CAACC,YAAaC,EAAAA,EAAanG,UAC9CC,EAAAA,EAAAA,KAACmG,EAAAA,EAAc,CACb9F,MAAOA,EACPC,SAAUA,EACV8F,YAAUjE,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACLmD,GAAS,IACZM,UAAWC,IAEbQ,WAAY,CACVC,eAAgBjB,GAElB5E,MAAM,GACNmF,UAAWE,EACXpF,SAAUA,EACV6F,YAAa,SAACC,GAAU,OACtBxG,EAAAA,EAAAA,KAACyG,EAAAA,GAAStE,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CAAC3B,GAAIA,EAAIiB,QAAQ,YAAe+E,GAAK,IAAE9F,UAAQ,IAAG,EAE9DgG,MAAM,EACNC,YAAa,CACXf,UAAWpB,EAAQf,eAErBmD,YAAa,uBAKnB,GAAIlC,EACF,OAAOqB,EAGT,IAAMc,EAAgBjC,EAA8C,GAAzBJ,EAAQsC,eACnD,OACE9G,EAAAA,EAAAA,KAAC+G,EAAAA,SAAQ,CAAAhH,UACPN,EAAAA,EAAAA,MAACQ,EAAAA,IAAI,CACHC,MAAI,EACJC,GAAI,GACJyF,UAAS,GAAA9F,OAAK+G,EAAY,KAAA/G,OAAIsF,EAAe,yBAC7CxE,GAAI,CACFU,QAAS,OACT0F,gBAAiB,eACjBjH,SAAA,CAES,KAAVU,IACChB,EAAAA,EAAAA,MAACwH,EAAAA,IAAU,CAACC,QAAS1G,EAAGT,SAAA,EACtBN,EAAAA,EAAAA,MAAA,QAAAM,SAAA,CACGU,EACAsE,EAAW,IAAM,MAEP,KAAZD,IACC9E,EAAAA,EAAAA,KAAA,OAAK4F,UAAWpB,EAAQ2C,iBAAiBpH,UACvCC,EAAAA,EAAAA,KAACoH,EAAAA,IAAO,CAACtC,QAASA,EAASuC,UAAU,MAAKtH,UACxCC,EAAAA,EAAAA,KAAA,OAAK4F,UAAWpB,EAAQM,QAAQ/E,UAC9BC,EAAAA,EAAAA,KAACsH,EAAAA,IAAQ,cAQrBtH,EAAAA,EAAAA,KAACuH,EAAAA,IAAG,CACF3B,UAAS,GAAA9F,OAAK0E,EAAQlB,iBAAgB,KAAAxD,OAAIsF,EAAe,iBAAgBrF,SAExEgG,QAKX,G","sources":["screens/Console/Buckets/ListBuckets/Objects/ListObjects/RewindEnable.tsx","screens/Console/Common/FormComponents/DateTimePickerWrapper/DateTimePickerWrapper.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 { DateTime } from \"luxon\";\nimport { Button, Grid, ProgressBar, Switch } from \"mds\";\nimport { useSelector } from \"react-redux\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport DateTimePickerWrapper from \"../../../../Common/FormComponents/DateTimePickerWrapper/DateTimePickerWrapper\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport {\n resetRewind,\n setReloadObjectsList,\n setRewindEnable,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\n\ninterface IRewindEnable {\n closeModalAndRefresh: () => void;\n open: boolean;\n bucketName: string;\n}\n\nconst RewindEnable = ({\n closeModalAndRefresh,\n open,\n bucketName,\n}: IRewindEnable) => {\n const dispatch = useAppDispatch();\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled,\n );\n const dateRewind = useSelector(\n (state: AppState) => state.objectBrowser.rewind.dateToRewind,\n );\n\n const [rewindEnabling, setRewindEnabling] = useState(false);\n const [rewindEnableButton, setRewindEnableButton] = useState(true);\n const [dateSelected, setDateSelected] = useState(\n DateTime.fromJSDate(new Date()),\n );\n\n useEffect(() => {\n if (rewindEnabled) {\n setRewindEnableButton(true);\n setDateSelected(\n DateTime.fromISO(dateRewind || DateTime.now().toISO() || \"\"),\n );\n }\n }, [rewindEnabled, dateRewind]);\n\n const rewindApply = () => {\n if (!rewindEnableButton && rewindEnabled) {\n dispatch(resetRewind());\n } else {\n setRewindEnabling(true);\n dispatch(\n setRewindEnable({\n state: true,\n bucket: bucketName,\n dateRewind: dateSelected.toISO(),\n }),\n );\n }\n dispatch(setReloadObjectsList(true));\n\n closeModalAndRefresh();\n };\n\n return (\n {\n closeModalAndRefresh();\n }}\n title={`Rewind - ${bucketName}`}\n >\n \n (dateTime ? setDateSelected(dateTime) : null)}\n id=\"rewind-selector\"\n label=\"Rewind to\"\n disabled={!rewindEnableButton}\n />\n \n \n {rewindEnabled && (\n \n ) => {\n setRewindEnableButton(e.target.checked);\n }}\n label={\"Current Status\"}\n indicatorLabels={[\"Enabled\", \"Disabled\"]}\n />\n \n )}\n \n \n \n {rewindEnabling && (\n \n \n \n )}\n \n \n );\n};\n\nexport default RewindEnable;\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 { DateTime } from \"luxon\";\nimport { HelpIcon, OpenListIcon, Grid, InputLabel, Tooltip, Box } from \"mds\";\nimport { TextField } from \"@mui/material\";\nimport { DateTimePicker, LocalizationProvider } from \"@mui/x-date-pickers\";\nimport { AdapterLuxon } from \"@mui/x-date-pickers/AdapterLuxon\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport ScheduleIcon from \"@mui/icons-material/Schedule\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\n\ninterface IDateTimePicker {\n value: DateTime | null;\n onChange: (value: DateTime | null) => void;\n classes: any;\n forSearchBlock?: boolean;\n forFilterContained?: boolean;\n label?: string;\n required?: boolean;\n tooltip?: string;\n id: string;\n disabled?: boolean;\n noInputIcon?: boolean;\n classNamePrefix?: string;\n openPickerIcon?: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n dateSelectorOverride: {\n height: 40,\n border: \"#EAEDEE 1px solid\",\n marginLeft: 15,\n backgroundColor: \"#fff\",\n padding: \"0 16px\",\n borderRadius: 5,\n \"&.MuiInput-underline:hover:not(.Mui-disabled):before\": {\n borderBottom: 0,\n },\n \"&:hover\": {\n borderColor: \"#000\",\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n },\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n \"& input\": {\n fontSize: 12,\n fontWeight: 600,\n color: \"#393939\",\n },\n },\n dateSelectorFilterOverride: {\n width: 180,\n height: 42,\n marginLeft: 20,\n padding: 0,\n borderRadius: 5,\n \"&.MuiInput-underline:hover:not(.Mui-disabled):before\": {\n borderBottom: 0,\n },\n \"&:hover\": {\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n },\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n \"& input\": {\n fontSize: 12,\n fontWeight: \"bold\",\n color: \"#081C42\",\n },\n \"@media (max-width: 900px)\": {\n width: 103,\n },\n },\n dateSelectorFormOverride: {\n width: \"100%\",\n maxWidth: 840,\n },\n parentDateOverride: {\n flexGrow: 1,\n },\n textBoxContainer: {\n width: \"calc(100% - 190px)\",\n },\n openListIcon: {\n color: \"#9D9E9D\",\n width: 8,\n marginTop: 2,\n },\n paperOverride: {\n \"& .MuiCalendarPicker-root\": {\n padding: \"0 22px\",\n \"& > div\": {\n padding: 0,\n \"& > div > div.PrivatePickersFadeTransitionGroup-root:first-of-type\":\n {\n color: \"#0A224C\",\n fontWeight: \"bold\",\n },\n \"& > div > div.PrivatePickersFadeTransitionGroup-root:last-of-type\": {\n color: \"#9D9E9D\",\n \"& + button.MuiButtonBase-root\": {\n color: \"#9D9E9D\",\n },\n },\n \"& > div:nth-child(2)\": {\n \"& > div\": {\n width: 0,\n },\n \"& > button.MuiButtonBase-root\": {\n color: \"#0A224C\",\n },\n },\n },\n },\n \"& .MuiTypography-root.MuiTypography-caption\": {\n width: 26,\n height: 26,\n margin: 5,\n color: \"#BCBCBC\",\n fontSize: 10,\n },\n \"& button.MuiPickersDay-root\": {\n fontWeight: \"bold\",\n width: 26,\n height: 26,\n margin: 5,\n textAlign: \"center\",\n \"&.Mui-selected\": {\n backgroundColor: theme.palette.primary.main,\n color: \"#fff\",\n },\n },\n \"& div.MuiPickersDay-hiddenDaySpacingFiller\": {\n width: 26,\n height: 26,\n margin: 5,\n },\n \"& div.PrivatePickersSlideTransition-root\": {\n minHeight: 240,\n },\n \"& div.MuiCalendarPicker-viewTransitionContainer\": {\n borderTop: \"#F0F3F5 1px solid\",\n },\n \"& .MuiClockPicker-arrowSwitcher\": {\n marginRight: 10,\n marginTop: -1,\n \"& > div\": {\n width: 0,\n },\n \"& > button.MuiButtonBase-root\": {\n color: \"#0A224C\",\n },\n \"& + div > div\": {\n width: 255,\n height: 255,\n backgroundColor: \"#fff\",\n marginTop: 30,\n marginBottom: 14,\n border: \"#F0F3F5 3px solid\",\n \"& > div:nth-child(2)\": {\n backgroundColor: \"#B4B5B4\",\n width: 12,\n height: 12,\n \"&::before\": {\n content: \"' '\",\n width: 35,\n height: 35,\n display: \"block\",\n position: \"absolute\",\n border: \"#F0F3F5 3px solid\",\n top: -12,\n left: -12,\n borderRadius: \"100%\",\n },\n },\n \"& > div:nth-child(3)\": {\n backgroundColor: \"#B4B5B4\",\n width: 4,\n },\n \"& > div:last-of-type\": {\n marginTop: 15,\n \"& > span\": {\n color: \"#0A224C\",\n \"&.Mui-selected\": {\n color: \"#fff\",\n },\n \"&[aria-label='1 hours'], &[aria-label='2 hours'], &[aria-label='3 hours'], &[aria-label='4 hours'], &[aria-label='5 hours'], &[aria-label='6 hours'], &[aria-label='7 hours'], &[aria-label='8 hours'], &[aria-label='9 hours'], &[aria-label='10 hours'], &[aria-label='11 hours'], &[aria-label='12 hours']\":\n {\n fontWeight: \"bold\",\n fontSize: 20,\n marginTop: -1,\n },\n },\n },\n },\n },\n },\n ...fieldBasic,\n ...tooltipHelper,\n });\n\nconst DateTimePickerWrapper = ({\n value,\n onChange,\n classes,\n forSearchBlock = false,\n forFilterContained = false,\n label,\n tooltip = \"\",\n required,\n id,\n disabled = false,\n noInputIcon = false,\n classNamePrefix = \"\",\n openPickerIcon,\n}: IDateTimePicker) => {\n let adornment = {};\n\n if (!noInputIcon) {\n adornment = {\n startAdornment: (\n \n \n \n ),\n };\n }\n\n if (forFilterContained) {\n adornment = {\n endAdornment: (\n \n \n \n ),\n };\n }\n\n const classOverridden = `${classNamePrefix}date-time-input ${\n forSearchBlock ? classes.dateSelectorOverride : \"\"\n } ${\n forFilterContained && !forSearchBlock\n ? classes.dateSelectorFilterOverride\n : \"\"\n }`;\n\n const clsName = forSearchBlock\n ? classes.parentDateOverride\n : classes.dateSelectorFormOverride;\n\n const inputItem = (\n \n (\n \n )}\n ampm={false}\n PopperProps={{\n className: classes.paperOverride,\n }}\n inputFormat={\"LL/dd/yyyy HH:mm\"}\n />\n \n );\n\n if (forSearchBlock) {\n return inputItem;\n }\n\n const containerCls = !forFilterContained ? classes.fieldContainer : \"\";\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
    \n \n
    \n \n
    \n
    \n
    \n )}\n
    \n )}\n\n \n {inputItem}\n \n \n
    \n );\n};\n\nexport default withStyles(styles)(DateTimePickerWrapper);\n"],"names":["_ref","closeModalAndRefresh","open","bucketName","dispatch","useAppDispatch","rewindEnabled","useSelector","state","objectBrowser","rewind","dateRewind","dateToRewind","_useState","useState","_useState2","_slicedToArray","rewindEnabling","setRewindEnabling","_useState3","_useState4","rewindEnableButton","setRewindEnableButton","_useState5","DateTime","fromJSDate","Date","_useState6","dateSelected","setDateSelected","useEffect","fromISO","now","toISO","_jsxs","ModalWrapper","modalOpen","onClose","title","concat","children","_jsx","Grid","item","xs","DateTimePickerWrapper","value","onChange","dateTime","id","label","disabled","container","sx","marginBottom","Switch","name","checked","e","target","indicatorLabels","style","justifyContent","display","Button","type","variant","onClick","resetRewind","setRewindEnable","bucket","setReloadObjectsList","ProgressBar","withStyles","theme","createStyles","_objectSpread","dateSelectorOverride","height","border","marginLeft","backgroundColor","padding","borderRadius","borderBottom","borderColor","fontSize","fontWeight","color","dateSelectorFilterOverride","width","dateSelectorFormOverride","maxWidth","parentDateOverride","flexGrow","textBoxContainer","openListIcon","marginTop","paperOverride","margin","textAlign","palette","primary","main","minHeight","borderTop","marginRight","content","position","top","left","fieldBasic","tooltipHelper","classes","_ref$forSearchBlock","forSearchBlock","_ref$forFilterContain","forFilterContained","_ref$tooltip","tooltip","required","_ref$disabled","_ref$noInputIcon","noInputIcon","_ref$classNamePrefix","classNamePrefix","openPickerIcon","adornment","startAdornment","InputAdornment","ScheduleIcon","endAdornment","OpenListIcon","className","classOverridden","clsName","inputItem","LocalizationProvider","dateAdapter","AdapterLuxon","DateTimePicker","InputProps","components","OpenPickerIcon","renderInput","props","TextField","ampm","PopperProps","inputFormat","containerCls","fieldContainer","Fragment","gridAutoColumns","InputLabel","htmlFor","tooltipContainer","Tooltip","placement","HelpIcon","Box"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/6914.9ab32297.chunk.js b/portal-ui/build/static/js/6914.62c54850.chunk.js similarity index 65% rename from portal-ui/build/static/js/6914.9ab32297.chunk.js rename to portal-ui/build/static/js/6914.62c54850.chunk.js index 31d81ac1cd..4cd655103a 100644 --- a/portal-ui/build/static/js/6914.9ab32297.chunk.js +++ b/portal-ui/build/static/js/6914.62c54850.chunk.js @@ -1,2 +1,2 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[6914],{76914:function(e,t,n){"use strict";n.r(t);var r=n(29439),o=n(72791),i=n(57689),a=n(81207),u=n(25787),c=n(11135),s=n(62666),l=n(35527),f=n(61889),d=n(20890),p=n(29945),g=n(15146),h=n(80184);t.default=(0,u.Z)((function(e){return(0,c.Z)({paper:{borderRadius:8,display:"flex",flexDirection:"column",alignItems:"center",width:800,height:424,margin:"auto",position:"absolute",top:"50%",left:"50%",marginLeft:-400,marginTop:-212,"&.MuiPaper-root":{borderRadius:8}},mainContainer:{position:"relative",height:424},theOcean:{borderTopLeftRadius:8,borderBottomLeftRadius:8,background:"transparent linear-gradient(to bottom, #073052 0%,#05122b 100%); 0% 0% no-repeat padding-box;"},oceanBg:{backgroundImage:"url(/images/BG_Illustration.svg)",backgroundRepeat:"no-repeat",backgroundPosition:"bottom left",height:"100%",width:324},theLogin:{padding:"40px 45px 20px 45px"},extraDetailsContainer:{fontStyle:"italic",color:"#9C9C9C",transition:"all .2s ease-in-out",padding:"0 5px",marginTop:5,overflow:"auto"},errorLabel:{color:"#000",fontSize:18,fontWeight:500,marginLeft:5},simpleError:{marginTop:5,padding:"2px 5px",fontSize:16,color:"#000"},messageIcon:{color:"#C72C48",display:"flex","& svg":{width:32,height:32}},errorTitle:{display:"flex",alignItems:"center"}})}))((function(e){var t=e.classes,n=(0,i.s0)(),u=(0,o.useState)(""),c=(0,r.Z)(u,2),m=c[0],x=c[1],v=(0,o.useState)(""),Z=(0,r.Z)(v,2),b=Z[0],C=Z[1],j=(0,o.useState)(!0),w=(0,r.Z)(j,2),I=w[0],S=w[1];return(0,o.useEffect)((function(){if(I){var e=window.location.search,t=new URLSearchParams(e),r=t.get("code"),o=t.get("state"),i=t.get("error"),u=t.get("errorDescription");i||u?(x(i||""),C(u||""),S(!1)):a.Z.invoke("POST","/api/v1/login/oauth2/auth",{code:r,state:o}).then((function(){var e="/";localStorage.getItem("redirect-path")&&""!==localStorage.getItem("redirect-path")&&(e="".concat(localStorage.getItem("redirect-path")),localStorage.setItem("redirect-path","")),o&&localStorage.setItem("auth-state",o),S(!1),n(e)})).catch((function(e){x(e.errorMessage),C(e.detailedError),S(!1)}))}}),[I,n]),""!==m||""!==b?(0,h.jsx)(o.Fragment,{children:(0,h.jsx)(l.Z,{className:t.paper,children:(0,h.jsxs)(f.ZP,{container:!0,className:t.mainContainer,children:[(0,h.jsx)(f.ZP,{item:!0,xs:7,className:t.theOcean,children:(0,h.jsx)("div",{className:t.oceanBg})}),(0,h.jsxs)(f.ZP,{item:!0,xs:5,className:t.theLogin,children:[(0,h.jsxs)("div",{className:t.errorTitle,children:[(0,h.jsx)("span",{className:t.messageIcon,children:(0,h.jsx)(g.Z,{})}),(0,h.jsx)("span",{className:t.errorLabel,children:"Error from IDP"})]}),(0,h.jsx)("div",{className:t.simpleError,children:m}),(0,h.jsx)(d.Z,{variant:"body1",gutterBottom:!0,component:"div",className:t.extraDetailsContainer,children:b}),(0,h.jsx)(p.zxk,{id:"back-to-login",onClick:function(){window.location.href="".concat(s.F,"login")},type:"submit",variant:"callAction",fullWidth:!0,children:"Back to Login"})]})]})})}):null}))},15146:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var o=r(n(45649)),i=n(80184),a=(0,o.default)((0,i.jsx)("path",{d:"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"ErrorOutline");t.Z=a},45649:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r.createSvgIcon}});var r=n(28610)},31260:function(e,t,n){"use strict";var r=n(78949);t.Z=r.Z},28610:function(e,t,n){"use strict";n.r(t),n.d(t,{capitalize:function(){return o.Z},createChainedFunction:function(){return i.Z},createSvgIcon:function(){return a.Z},debounce:function(){return u.Z},deprecatedPropType:function(){return c},isMuiElement:function(){return s.Z},ownerDocument:function(){return l.Z},ownerWindow:function(){return f.Z},requirePropFactory:function(){return d},setRef:function(){return p},unstable_ClassNameGenerator:function(){return C},unstable_useEnhancedEffect:function(){return g.Z},unstable_useId:function(){return h.Z},unsupportedProp:function(){return m},useControlled:function(){return x.Z},useEventCallback:function(){return v.Z},useForkRef:function(){return Z.Z},useIsFocusVisible:function(){return b.Z}});var r=n(55902),o=n(14036),i=n(31260),a=n(76189),u=n(83199);var c=function(e,t){return function(){return null}},s=n(19103),l=n(98301),f=n(17602);n(87462);var d=function(e,t){return function(){return null}},p=n(62971).Z,g=n(40162),h=n(67384);var m=function(e,t,n,r,o){return null},x=n(98278),v=n(89683),Z=n(42071),b=n(23031),C={configure:function(e){r.Z.configure(e)}}},19103:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(72791);var o=function(e,t){return r.isValidElement(e)&&-1!==t.indexOf(e.type.muiName)}},78949:function(e,t,n){"use strict";function r(){for(var e=arguments.length,t=new Array(e),n=0;n.\n\nimport React, { useEffect, useState } from \"react\"; // eslint-disable-line @typescript-eslint/no-unused-vars\nimport { useNavigate } from \"react-router-dom\";\nimport api from \"../../common/api\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { baseUrl } from \"../../history\";\nimport { Paper } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport Typography from \"@mui/material/Typography\";\nimport { Button } from \"mds\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n paper: {\n borderRadius: 8,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n width: 800,\n height: 424,\n margin: \"auto\",\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginLeft: -400,\n marginTop: -212,\n \"&.MuiPaper-root\": {\n borderRadius: 8,\n },\n },\n mainContainer: {\n position: \"relative\",\n height: 424,\n },\n theOcean: {\n borderTopLeftRadius: 8,\n borderBottomLeftRadius: 8,\n background:\n \"transparent linear-gradient(to bottom, #073052 0%,#05122b 100%); 0% 0% no-repeat padding-box;\",\n },\n oceanBg: {\n backgroundImage: \"url(/images/BG_Illustration.svg)\",\n backgroundRepeat: \"no-repeat\",\n backgroundPosition: \"bottom left\",\n height: \"100%\",\n width: 324,\n },\n theLogin: {\n padding: \"40px 45px 20px 45px\",\n },\n extraDetailsContainer: {\n fontStyle: \"italic\",\n color: \"#9C9C9C\",\n transition: \"all .2s ease-in-out\",\n padding: \"0 5px\",\n marginTop: 5,\n overflow: \"auto\",\n },\n errorLabel: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 500,\n marginLeft: 5,\n },\n simpleError: {\n marginTop: 5,\n padding: \"2px 5px\",\n fontSize: 16,\n color: \"#000\",\n },\n messageIcon: {\n color: \"#C72C48\",\n display: \"flex\",\n \"& svg\": {\n width: 32,\n height: 32,\n },\n },\n errorTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n });\n\ninterface ILoginCallBackProps {\n classes: any;\n}\n\nconst LoginCallback = ({ classes }: ILoginCallBackProps) => {\n const navigate = useNavigate();\n\n const [error, setError] = useState(\"\");\n const [errorDescription, setErrorDescription] = useState(\"\");\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n if (loading) {\n const queryString = window.location.search;\n const urlParams = new URLSearchParams(queryString);\n const code = urlParams.get(\"code\");\n const state = urlParams.get(\"state\");\n const error = urlParams.get(\"error\");\n const errorDescription = urlParams.get(\"errorDescription\");\n if (error || errorDescription) {\n setError(error || \"\");\n setErrorDescription(errorDescription || \"\");\n setLoading(false);\n } else {\n api\n .invoke(\"POST\", \"/api/v1/login/oauth2/auth\", { code, state })\n .then(() => {\n // We push to history the new URL.\n let targetPath = \"/\";\n if (\n localStorage.getItem(\"redirect-path\") &&\n localStorage.getItem(\"redirect-path\") !== \"\"\n ) {\n targetPath = `${localStorage.getItem(\"redirect-path\")}`;\n localStorage.setItem(\"redirect-path\", \"\");\n }\n if (state) {\n localStorage.setItem(\"auth-state\", state);\n }\n setLoading(false);\n navigate(targetPath);\n })\n .catch((error) => {\n setError(error.errorMessage);\n setErrorDescription(error.detailedError);\n setLoading(false);\n });\n }\n }\n }, [loading, navigate]);\n return error !== \"\" || errorDescription !== \"\" ? (\n \n \n \n \n
    \n \n \n
    \n \n \n \n Error from IDP\n
    \n
    {error}
    \n \n {errorDescription}\n \n {\n window.location.href = `${baseUrl}login`;\n }}\n type=\"submit\"\n variant=\"callAction\"\n fullWidth\n >\n Back to Login\n \n
    \n \n \n \n ) : null;\n};\n\nexport default withStyles(styles)(LoginCallback);\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'ErrorOutline');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n var _muiName, _element$type;\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf( // For server components `muiName` is avaialble in element.type._payload.value.muiName\n // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45\n // eslint-disable-next-line no-underscore-dangle\n (_muiName = element.type.muiName) != null ? _muiName : (_element$type = element.type) == null || (_element$type = _element$type._payload) == null || (_element$type = _element$type.value) == null ? void 0 : _element$type.muiName) !== -1;\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["withStyles","theme","createStyles","paper","borderRadius","display","flexDirection","alignItems","width","height","margin","position","top","left","marginLeft","marginTop","mainContainer","theOcean","borderTopLeftRadius","borderBottomLeftRadius","background","oceanBg","backgroundImage","backgroundRepeat","backgroundPosition","theLogin","padding","extraDetailsContainer","fontStyle","color","transition","overflow","errorLabel","fontSize","fontWeight","simpleError","messageIcon","errorTitle","_ref","classes","navigate","useNavigate","_useState","useState","_useState2","_slicedToArray","error","setError","_useState3","_useState4","errorDescription","setErrorDescription","_useState5","_useState6","loading","setLoading","useEffect","queryString","window","location","search","urlParams","URLSearchParams","code","get","state","api","invoke","then","targetPath","localStorage","getItem","concat","setItem","catch","errorMessage","detailedError","_jsx","React","children","Paper","className","_jsxs","Grid","container","item","xs","ErrorOutlineIcon","Typography","variant","gutterBottom","component","Button","id","onClick","href","baseUrl","type","fullWidth","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Object","defineProperty","value","enumerable","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","props","propName","componentName","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","element","muiNames","_muiName","_element$type","indexOf","muiName","_payload","_len","arguments","length","funcs","Array","_key","reduce","acc","func","_len2","args","_key2","apply","this","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/6914.9ab32297.chunk.js.map b/portal-ui/build/static/js/6914.9ab32297.chunk.js.map deleted file mode 100644 index 9bbaf22ed4..0000000000 --- a/portal-ui/build/static/js/6914.9ab32297.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/6914.9ab32297.chunk.js","mappings":"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","sources":["screens/LoginPage/LoginCallback.tsx","../node_modules/@mui/icons-material/ErrorOutline.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/esm/deprecatedPropType.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/esm/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/esm/unsupportedProp.js","../node_modules/@mui/material/utils/index.js","../node_modules/@mui/material/utils/isMuiElement.js","../node_modules/@mui/utils/esm/isMuiElement.js","../node_modules/@mui/utils/esm/createChainedFunction.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.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, { useEffect, useState } from \"react\"; // eslint-disable-line @typescript-eslint/no-unused-vars\nimport { useNavigate } from \"react-router-dom\";\nimport api from \"../../common/api\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { baseUrl } from \"../../history\";\nimport { Paper } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport Typography from \"@mui/material/Typography\";\nimport { Button } from \"mds\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n paper: {\n borderRadius: 8,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n width: 800,\n height: 424,\n margin: \"auto\",\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginLeft: -400,\n marginTop: -212,\n \"&.MuiPaper-root\": {\n borderRadius: 8,\n },\n },\n mainContainer: {\n position: \"relative\",\n height: 424,\n },\n theOcean: {\n borderTopLeftRadius: 8,\n borderBottomLeftRadius: 8,\n background:\n \"transparent linear-gradient(to bottom, #073052 0%,#05122b 100%); 0% 0% no-repeat padding-box;\",\n },\n oceanBg: {\n backgroundImage: \"url(/images/BG_Illustration.svg)\",\n backgroundRepeat: \"no-repeat\",\n backgroundPosition: \"bottom left\",\n height: \"100%\",\n width: 324,\n },\n theLogin: {\n padding: \"40px 45px 20px 45px\",\n },\n extraDetailsContainer: {\n fontStyle: \"italic\",\n color: \"#9C9C9C\",\n transition: \"all .2s ease-in-out\",\n padding: \"0 5px\",\n marginTop: 5,\n overflow: \"auto\",\n },\n errorLabel: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 500,\n marginLeft: 5,\n },\n simpleError: {\n marginTop: 5,\n padding: \"2px 5px\",\n fontSize: 16,\n color: \"#000\",\n },\n messageIcon: {\n color: \"#C72C48\",\n display: \"flex\",\n \"& svg\": {\n width: 32,\n height: 32,\n },\n },\n errorTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n });\n\ninterface ILoginCallBackProps {\n classes: any;\n}\n\nconst LoginCallback = ({ classes }: ILoginCallBackProps) => {\n const navigate = useNavigate();\n\n const [error, setError] = useState(\"\");\n const [errorDescription, setErrorDescription] = useState(\"\");\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n if (loading) {\n const queryString = window.location.search;\n const urlParams = new URLSearchParams(queryString);\n const code = urlParams.get(\"code\");\n const state = urlParams.get(\"state\");\n const error = urlParams.get(\"error\");\n const errorDescription = urlParams.get(\"errorDescription\");\n if (error || errorDescription) {\n setError(error || \"\");\n setErrorDescription(errorDescription || \"\");\n setLoading(false);\n } else {\n api\n .invoke(\"POST\", \"/api/v1/login/oauth2/auth\", { code, state })\n .then(() => {\n // We push to history the new URL.\n let targetPath = \"/\";\n if (\n localStorage.getItem(\"redirect-path\") &&\n localStorage.getItem(\"redirect-path\") !== \"\"\n ) {\n targetPath = `${localStorage.getItem(\"redirect-path\")}`;\n localStorage.setItem(\"redirect-path\", \"\");\n }\n if (state) {\n localStorage.setItem(\"auth-state\", state);\n }\n setLoading(false);\n navigate(targetPath);\n })\n .catch((error) => {\n setError(error.errorMessage);\n setErrorDescription(error.detailedError);\n setLoading(false);\n });\n }\n }\n }, [loading, navigate]);\n return error !== \"\" || errorDescription !== \"\" ? (\n \n \n \n \n
    \n \n \n
    \n \n \n \n Error from IDP\n
    \n
    {error}
    \n \n {errorDescription}\n \n {\n window.location.href = `${baseUrl}login`;\n }}\n type=\"submit\"\n variant=\"callAction\"\n fullWidth\n >\n Back to Login\n \n
    \n \n \n \n ) : null;\n};\n\nexport default withStyles(styles)(LoginCallback);\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'ErrorOutline');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1;\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["withStyles","theme","createStyles","paper","borderRadius","display","flexDirection","alignItems","width","height","margin","position","top","left","marginLeft","marginTop","mainContainer","theOcean","borderTopLeftRadius","borderBottomLeftRadius","background","oceanBg","backgroundImage","backgroundRepeat","backgroundPosition","theLogin","padding","extraDetailsContainer","fontStyle","color","transition","overflow","errorLabel","fontSize","fontWeight","simpleError","messageIcon","errorTitle","_ref","classes","navigate","useNavigate","_useState","useState","_useState2","_slicedToArray","error","setError","_useState3","_useState4","errorDescription","setErrorDescription","_useState5","_useState6","loading","setLoading","useEffect","queryString","window","location","search","urlParams","URLSearchParams","code","get","state","api","invoke","then","targetPath","localStorage","getItem","concat","setItem","catch","errorMessage","detailedError","_jsx","React","children","Paper","className","_jsxs","Grid","container","item","xs","ErrorOutlineIcon","Typography","variant","gutterBottom","component","Button","id","onClick","href","baseUrl","type","fullWidth","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Object","defineProperty","value","enumerable","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","props","propName","componentName","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","element","muiNames","indexOf","muiName","_len","arguments","length","funcs","Array","_key","reduce","acc","func","_len2","args","_key2","apply","this","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/7082.dc493620.chunk.js.map b/portal-ui/build/static/js/7082.dc493620.chunk.js.map deleted file mode 100644 index 74f98334f9..0000000000 --- a/portal-ui/build/static/js/7082.dc493620.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/7082.dc493620.chunk.js","mappings":"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","sources":["../node_modules/@mui/icons-material/CheckCircleOutline.js","../node_modules/@mui/icons-material/ErrorOutline.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/ListItem/listItemClasses.js","../node_modules/@mui/material/ListItemButton/listItemButtonClasses.js","../node_modules/@mui/material/ListItemSecondaryAction/listItemSecondaryActionClasses.js","../node_modules/@mui/material/ListItemSecondaryAction/ListItemSecondaryAction.js","../node_modules/@mui/material/ListItem/ListItem.js","../node_modules/@mui/material/ListItemText/ListItemText.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/esm/deprecatedPropType.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/esm/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/esm/unsupportedProp.js","../node_modules/@mui/material/utils/index.js","../node_modules/@mui/material/utils/isMuiElement.js","../node_modules/@mui/utils/esm/isMuiElement.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js"],"sourcesContent":["\"use strict\";\n\"use client\";\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.59 7.58 10 14.17l-3.59-3.58L5 12l5 5 8-8zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'CheckCircleOutline');\nexports.default = _default;","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'ErrorOutline');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListItemUtilityClass(slot) {\n return generateUtilityClass('MuiListItem', slot);\n}\nconst listItemClasses = generateUtilityClasses('MuiListItem', ['root', 'container', 'focusVisible', 'dense', 'alignItemsFlexStart', 'disabled', 'divider', 'gutters', 'padding', 'button', 'secondaryAction', 'selected']);\nexport default listItemClasses;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListItemButtonUtilityClass(slot) {\n return generateUtilityClass('MuiListItemButton', slot);\n}\nconst listItemButtonClasses = generateUtilityClasses('MuiListItemButton', ['root', 'focusVisible', 'dense', 'alignItemsFlexStart', 'disabled', 'divider', 'gutters', 'selected']);\nexport default listItemButtonClasses;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListItemSecondaryActionClassesUtilityClass(slot) {\n return generateUtilityClass('MuiListItemSecondaryAction', slot);\n}\nconst listItemSecondaryActionClasses = generateUtilityClasses('MuiListItemSecondaryAction', ['root', 'disableGutters']);\nexport default listItemSecondaryActionClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ListContext from '../List/ListContext';\nimport { getListItemSecondaryActionClassesUtilityClass } from './listItemSecondaryActionClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n disableGutters,\n classes\n } = ownerState;\n const slots = {\n root: ['root', disableGutters && 'disableGutters']\n };\n return composeClasses(slots, getListItemSecondaryActionClassesUtilityClass, classes);\n};\nconst ListItemSecondaryActionRoot = styled('div', {\n name: 'MuiListItemSecondaryAction',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.disableGutters && styles.disableGutters];\n }\n})(({\n ownerState\n}) => _extends({\n position: 'absolute',\n right: 16,\n top: '50%',\n transform: 'translateY(-50%)'\n}, ownerState.disableGutters && {\n right: 0\n}));\n\n/**\n * Must be used as the last child of ListItem to function properly.\n */\nconst ListItemSecondaryAction = /*#__PURE__*/React.forwardRef(function ListItemSecondaryAction(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiListItemSecondaryAction'\n });\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const context = React.useContext(ListContext);\n const ownerState = _extends({}, props, {\n disableGutters: context.disableGutters\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(ListItemSecondaryActionRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemSecondaryAction.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component, normally an `IconButton` or selection control.\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} : void 0;\nListItemSecondaryAction.muiName = 'ListItemSecondaryAction';\nexport default ListItemSecondaryAction;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\"],\n _excluded2 = [\"alignItems\", \"autoFocus\", \"button\", \"children\", \"className\", \"component\", \"components\", \"componentsProps\", \"ContainerComponent\", \"ContainerProps\", \"dense\", \"disabled\", \"disableGutters\", \"disablePadding\", \"divider\", \"focusVisibleClassName\", \"secondaryAction\", \"selected\", \"slotProps\", \"slots\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses, isHostComponent } from '@mui/base';\nimport { chainPropTypes, elementTypeAcceptingRef } from '@mui/utils';\nimport { alpha } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ButtonBase from '../ButtonBase';\nimport isMuiElement from '../utils/isMuiElement';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\nimport useForkRef from '../utils/useForkRef';\nimport ListContext from '../List/ListContext';\nimport listItemClasses, { getListItemUtilityClass } from './listItemClasses';\nimport { listItemButtonClasses } from '../ListItemButton';\nimport ListItemSecondaryAction from '../ListItemSecondaryAction';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const overridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.dense && styles.dense, ownerState.alignItems === 'flex-start' && styles.alignItemsFlexStart, ownerState.divider && styles.divider, !ownerState.disableGutters && styles.gutters, !ownerState.disablePadding && styles.padding, ownerState.button && styles.button, ownerState.hasSecondaryAction && styles.secondaryAction];\n};\nconst useUtilityClasses = ownerState => {\n const {\n alignItems,\n button,\n classes,\n dense,\n disabled,\n disableGutters,\n disablePadding,\n divider,\n hasSecondaryAction,\n selected\n } = ownerState;\n const slots = {\n root: ['root', dense && 'dense', !disableGutters && 'gutters', !disablePadding && 'padding', divider && 'divider', disabled && 'disabled', button && 'button', alignItems === 'flex-start' && 'alignItemsFlexStart', hasSecondaryAction && 'secondaryAction', selected && 'selected'],\n container: ['container']\n };\n return composeClasses(slots, getListItemUtilityClass, classes);\n};\nexport const ListItemRoot = styled('div', {\n name: 'MuiListItem',\n slot: 'Root',\n overridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n position: 'relative',\n textDecoration: 'none',\n width: '100%',\n boxSizing: 'border-box',\n textAlign: 'left'\n}, !ownerState.disablePadding && _extends({\n paddingTop: 8,\n paddingBottom: 8\n}, ownerState.dense && {\n paddingTop: 4,\n paddingBottom: 4\n}, !ownerState.disableGutters && {\n paddingLeft: 16,\n paddingRight: 16\n}, !!ownerState.secondaryAction && {\n // Add some space to avoid collision as `ListItemSecondaryAction`\n // is absolutely positioned.\n paddingRight: 48\n}), !!ownerState.secondaryAction && {\n [`& > .${listItemButtonClasses.root}`]: {\n paddingRight: 48\n }\n}, {\n [`&.${listItemClasses.focusVisible}`]: {\n backgroundColor: (theme.vars || theme).palette.action.focus\n },\n [`&.${listItemClasses.selected}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n [`&.${listItemClasses.focusVisible}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n }\n },\n [`&.${listItemClasses.disabled}`]: {\n opacity: (theme.vars || theme).palette.action.disabledOpacity\n }\n}, ownerState.alignItems === 'flex-start' && {\n alignItems: 'flex-start'\n}, ownerState.divider && {\n borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`,\n backgroundClip: 'padding-box'\n}, ownerState.button && {\n transition: theme.transitions.create('background-color', {\n duration: theme.transitions.duration.shortest\n }),\n '&:hover': {\n textDecoration: 'none',\n backgroundColor: (theme.vars || theme).palette.action.hover,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n [`&.${listItemClasses.selected}:hover`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)\n }\n }\n}, ownerState.hasSecondaryAction && {\n // Add some space to avoid collision as `ListItemSecondaryAction`\n // is absolutely positioned.\n paddingRight: 48\n}));\nconst ListItemContainer = styled('li', {\n name: 'MuiListItem',\n slot: 'Container',\n overridesResolver: (props, styles) => styles.container\n})({\n position: 'relative'\n});\n\n/**\n * Uses an additional container component if `ListItemSecondaryAction` is the last child.\n */\nconst ListItem = /*#__PURE__*/React.forwardRef(function ListItem(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiListItem'\n });\n const {\n alignItems = 'center',\n autoFocus = false,\n button = false,\n children: childrenProp,\n className,\n component: componentProp,\n components = {},\n componentsProps = {},\n ContainerComponent = 'li',\n ContainerProps: {\n className: ContainerClassName\n } = {},\n dense = false,\n disabled = false,\n disableGutters = false,\n disablePadding = false,\n divider = false,\n focusVisibleClassName,\n secondaryAction,\n selected = false,\n slotProps = {},\n slots = {}\n } = props,\n ContainerProps = _objectWithoutPropertiesLoose(props.ContainerProps, _excluded),\n other = _objectWithoutPropertiesLoose(props, _excluded2);\n const context = React.useContext(ListContext);\n const childContext = React.useMemo(() => ({\n dense: dense || context.dense || false,\n alignItems,\n disableGutters\n }), [alignItems, context.dense, dense, disableGutters]);\n const listItemRef = React.useRef(null);\n useEnhancedEffect(() => {\n if (autoFocus) {\n if (listItemRef.current) {\n listItemRef.current.focus();\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('MUI: Unable to set focus to a ListItem whose component has not been rendered.');\n }\n }\n }, [autoFocus]);\n const children = React.Children.toArray(childrenProp);\n\n // v4 implementation, deprecated in v5, will be removed in v6\n const hasSecondaryAction = children.length && isMuiElement(children[children.length - 1], ['ListItemSecondaryAction']);\n const ownerState = _extends({}, props, {\n alignItems,\n autoFocus,\n button,\n dense: childContext.dense,\n disabled,\n disableGutters,\n disablePadding,\n divider,\n hasSecondaryAction,\n selected\n });\n const classes = useUtilityClasses(ownerState);\n const handleRef = useForkRef(listItemRef, ref);\n const Root = slots.root || components.Root || ListItemRoot;\n const rootProps = slotProps.root || componentsProps.root || {};\n const componentProps = _extends({\n className: clsx(classes.root, rootProps.className, className),\n disabled\n }, other);\n let Component = componentProp || 'li';\n if (button) {\n componentProps.component = componentProp || 'div';\n componentProps.focusVisibleClassName = clsx(listItemClasses.focusVisible, focusVisibleClassName);\n Component = ButtonBase;\n }\n\n // v4 implementation, deprecated in v5, will be removed in v6\n if (hasSecondaryAction) {\n // Use div by default.\n Component = !componentProps.component && !componentProp ? 'div' : Component;\n\n // Avoid nesting of li > li.\n if (ContainerComponent === 'li') {\n if (Component === 'li') {\n Component = 'div';\n } else if (componentProps.component === 'li') {\n componentProps.component = 'div';\n }\n }\n return /*#__PURE__*/_jsx(ListContext.Provider, {\n value: childContext,\n children: /*#__PURE__*/_jsxs(ListItemContainer, _extends({\n as: ContainerComponent,\n className: clsx(classes.container, ContainerClassName),\n ref: handleRef,\n ownerState: ownerState\n }, ContainerProps, {\n children: [/*#__PURE__*/_jsx(Root, _extends({}, rootProps, !isHostComponent(Root) && {\n as: Component,\n ownerState: _extends({}, ownerState, rootProps.ownerState)\n }, componentProps, {\n children: children\n })), children.pop()]\n }))\n });\n }\n return /*#__PURE__*/_jsx(ListContext.Provider, {\n value: childContext,\n children: /*#__PURE__*/_jsxs(Root, _extends({}, rootProps, {\n as: Component,\n ref: handleRef\n }, !isHostComponent(Root) && {\n ownerState: _extends({}, ownerState, rootProps.ownerState)\n }, componentProps, {\n children: [children, secondaryAction && /*#__PURE__*/_jsx(ListItemSecondaryAction, {\n children: secondaryAction\n })]\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItem.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 * Defines the `align-items` style property.\n * @default 'center'\n */\n alignItems: PropTypes.oneOf(['center', 'flex-start']),\n /**\n * If `true`, the list item is focused during the first mount.\n * Focus will also be triggered if the value changes from false to true.\n * @default false\n * @deprecated checkout [ListItemButton](/material-ui/api/list-item-button/) instead\n */\n autoFocus: PropTypes.bool,\n /**\n * If `true`, the list item is a button (using `ButtonBase`). Props intended\n * for `ButtonBase` can then be applied to `ListItem`.\n * @default false\n * @deprecated checkout [ListItemButton](/material-ui/api/list-item-button/) instead\n */\n button: PropTypes.bool,\n /**\n * The content of the component if a `ListItemSecondaryAction` is used it must\n * be the last child.\n */\n children: chainPropTypes(PropTypes.node, props => {\n const children = React.Children.toArray(props.children);\n\n // React.Children.toArray(props.children).findLastIndex(isListItemSecondaryAction)\n let secondaryActionIndex = -1;\n for (let i = children.length - 1; i >= 0; i -= 1) {\n const child = children[i];\n if (isMuiElement(child, ['ListItemSecondaryAction'])) {\n secondaryActionIndex = i;\n break;\n }\n }\n\n // is ListItemSecondaryAction the last child of ListItem\n if (secondaryActionIndex !== -1 && secondaryActionIndex !== children.length - 1) {\n return new Error('MUI: You used an element after ListItemSecondaryAction. ' + 'For ListItem to detect that it has a secondary action ' + 'you must pass it as the last child to ListItem.');\n }\n return null;\n }),\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Root: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `slotProps` prop.\n * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n root: PropTypes.object\n }),\n /**\n * The container component used when a `ListItemSecondaryAction` is the last child.\n * @default 'li'\n * @deprecated\n */\n ContainerComponent: elementTypeAcceptingRef,\n /**\n * Props applied to the container component if used.\n * @default {}\n * @deprecated\n */\n ContainerProps: PropTypes.object,\n /**\n * If `true`, compact vertical padding designed for keyboard and mouse input is used.\n * The prop defaults to the value inherited from the parent List component.\n * @default false\n */\n dense: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n * @default false\n * @deprecated checkout [ListItemButton](/material-ui/api/list-item-button/) instead\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the left and right padding is removed.\n * @default false\n */\n disableGutters: PropTypes.bool,\n /**\n * If `true`, all padding is removed.\n * @default false\n */\n disablePadding: PropTypes.bool,\n /**\n * If `true`, a 1px light border is added to the bottom of the list item.\n * @default false\n */\n divider: PropTypes.bool,\n /**\n * @ignore\n */\n focusVisibleClassName: PropTypes.string,\n /**\n * The element to display at the end of ListItem.\n */\n secondaryAction: PropTypes.node,\n /**\n * Use to apply selected styling.\n * @default false\n * @deprecated checkout [ListItemButton](/material-ui/api/list-item-button/) instead\n */\n selected: PropTypes.bool,\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slotProps: PropTypes.shape({\n root: PropTypes.object\n }),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `components` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slots: PropTypes.shape({\n root: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListItem;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"disableTypography\", \"inset\", \"primary\", \"primaryTypographyProps\", \"secondary\", \"secondaryTypographyProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport Typography from '../Typography';\nimport ListContext from '../List/ListContext';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport listItemTextClasses, { getListItemTextUtilityClass } from './listItemTextClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n inset,\n primary,\n secondary,\n dense\n } = ownerState;\n const slots = {\n root: ['root', inset && 'inset', dense && 'dense', primary && secondary && 'multiline'],\n primary: ['primary'],\n secondary: ['secondary']\n };\n return composeClasses(slots, getListItemTextUtilityClass, classes);\n};\nconst ListItemTextRoot = styled('div', {\n name: 'MuiListItemText',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${listItemTextClasses.primary}`]: styles.primary\n }, {\n [`& .${listItemTextClasses.secondary}`]: styles.secondary\n }, styles.root, ownerState.inset && styles.inset, ownerState.primary && ownerState.secondary && styles.multiline, ownerState.dense && styles.dense];\n }\n})(({\n ownerState\n}) => _extends({\n flex: '1 1 auto',\n minWidth: 0,\n marginTop: 4,\n marginBottom: 4\n}, ownerState.primary && ownerState.secondary && {\n marginTop: 6,\n marginBottom: 6\n}, ownerState.inset && {\n paddingLeft: 56\n}));\nconst ListItemText = /*#__PURE__*/React.forwardRef(function ListItemText(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiListItemText'\n });\n const {\n children,\n className,\n disableTypography = false,\n inset = false,\n primary: primaryProp,\n primaryTypographyProps,\n secondary: secondaryProp,\n secondaryTypographyProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n dense\n } = React.useContext(ListContext);\n let primary = primaryProp != null ? primaryProp : children;\n let secondary = secondaryProp;\n const ownerState = _extends({}, props, {\n disableTypography,\n inset,\n primary: !!primary,\n secondary: !!secondary,\n dense\n });\n const classes = useUtilityClasses(ownerState);\n if (primary != null && primary.type !== Typography && !disableTypography) {\n primary = /*#__PURE__*/_jsx(Typography, _extends({\n variant: dense ? 'body2' : 'body1',\n className: classes.primary,\n component: primaryTypographyProps != null && primaryTypographyProps.variant ? undefined : 'span',\n display: \"block\"\n }, primaryTypographyProps, {\n children: primary\n }));\n }\n if (secondary != null && secondary.type !== Typography && !disableTypography) {\n secondary = /*#__PURE__*/_jsx(Typography, _extends({\n variant: \"body2\",\n className: classes.secondary,\n color: \"text.secondary\",\n display: \"block\"\n }, secondaryTypographyProps, {\n children: secondary\n }));\n }\n return /*#__PURE__*/_jsxs(ListItemTextRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other, {\n children: [primary, secondary]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemText.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 * Alias for the `primary` prop.\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 * If `true`, the children won't be wrapped by a Typography component.\n * This can be useful to render an alternative Typography variant by wrapping\n * the `children` (or `primary`) text, and optional `secondary` text\n * with the Typography component.\n * @default false\n */\n disableTypography: PropTypes.bool,\n /**\n * If `true`, the children are indented.\n * This should be used if there is no left avatar or left icon.\n * @default false\n */\n inset: PropTypes.bool,\n /**\n * The main content element.\n */\n primary: PropTypes.node,\n /**\n * These props will be forwarded to the primary typography component\n * (as long as disableTypography is not `true`).\n */\n primaryTypographyProps: PropTypes.object,\n /**\n * The secondary content element.\n */\n secondary: PropTypes.node,\n /**\n * These props will be forwarded to the secondary typography component\n * (as long as disableTypography is not `true`).\n */\n secondaryTypographyProps: PropTypes.object,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListItemText;","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1;\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Object","defineProperty","value","enumerable","get","_utils","createSvgIcon","getListItemUtilityClass","slot","generateUtilityClass","generateUtilityClasses","getListItemSecondaryActionClassesUtilityClass","_excluded","ListItemSecondaryActionRoot","styled","name","overridesResolver","props","styles","ownerState","root","disableGutters","_ref","_extends","position","right","top","transform","ListItemSecondaryAction","React","inProps","ref","useThemeProps","className","other","_objectWithoutPropertiesLoose","context","ListContext","classes","slots","composeClasses","useUtilityClasses","_jsx","clsx","muiName","_excluded2","ListItemRoot","dense","alignItems","alignItemsFlexStart","divider","gutters","disablePadding","padding","button","hasSecondaryAction","secondaryAction","_extends2","theme","display","justifyContent","textDecoration","width","boxSizing","textAlign","paddingTop","paddingBottom","paddingLeft","paddingRight","_defineProperty","concat","listItemButtonClasses","listItemClasses","focusVisible","backgroundColor","vars","palette","action","focus","selected","primary","mainChannel","selectedOpacity","alpha","main","focusOpacity","disabled","opacity","disabledOpacity","borderBottom","backgroundClip","transition","transitions","create","duration","shortest","hover","hoverOpacity","ListItemContainer","container","_props$alignItems","_props$autoFocus","autoFocus","_props$button","childrenProp","children","componentProp","component","_props$components","components","_props$componentsProp","componentsProps","_props$ContainerCompo","ContainerComponent","_props$ContainerProps","ContainerProps","ContainerClassName","_props$dense","_props$disabled","_props$disableGutters","_props$disablePadding","_props$divider","focusVisibleClassName","_props$selected","_props$slotProps","slotProps","_props$slots","childContext","listItemRef","useEnhancedEffect","current","toArray","length","isMuiElement","handleRef","useForkRef","Root","rootProps","componentProps","Component","ButtonBase","Provider","_jsxs","as","isHostComponent","pop","ListItemTextRoot","listItemTextClasses","secondary","inset","multiline","_ref3","flex","minWidth","marginTop","marginBottom","ListItemText","_props$disableTypogra","disableTypography","_props$inset","primaryProp","primaryTypographyProps","secondaryProp","secondaryTypographyProps","getListItemTextUtilityClass","type","Typography","variant","undefined","color","createChainedFunction","validator","reason","componentNameInError","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","element","muiNames","indexOf","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/7082.dc493620.chunk.js b/portal-ui/build/static/js/7082.e66ba30d.chunk.js similarity index 90% rename from portal-ui/build/static/js/7082.dc493620.chunk.js rename to portal-ui/build/static/js/7082.e66ba30d.chunk.js index 5d71315db6..2cb5b1df5e 100644 --- a/portal-ui/build/static/js/7082.dc493620.chunk.js +++ b/portal-ui/build/static/js/7082.e66ba30d.chunk.js @@ -1,2 +1,2 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[7082],{98946:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var o=r(n(45649)),a=n(80184),i=(0,o.default)((0,a.jsx)("path",{d:"M16.59 7.58 10 14.17l-3.59-3.58L5 12l5 5 8-8zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"CheckCircleOutline");t.Z=i},15146:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var o=r(n(45649)),a=n(80184),i=(0,o.default)((0,a.jsx)("path",{d:"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"ErrorOutline");t.Z=i},45649:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r.createSvgIcon}});var r=n(28610)},84852:function(e,t,n){"use strict";n.d(t,{ZP:function(){return R}});var r=n(4942),o=n(63366),a=n(87462),i=n(72791),s=n(63733),c=n(94419),d=n(20627),l=n(12065),u=n(66934),p=n(31402),m=n(95080),v=n(19103),f=n(40162),y=n(42071),Z=n(66199),b=n(75878),g=n(21217);function h(e){return(0,g.Z)("MuiListItem",e)}var x=(0,b.Z)("MuiListItem",["root","container","focusVisible","dense","alignItemsFlexStart","disabled","divider","gutters","padding","button","secondaryAction","selected"]);var C=(0,b.Z)("MuiListItemButton",["root","focusVisible","dense","alignItemsFlexStart","disabled","divider","gutters","selected"]);function S(e){return(0,g.Z)("MuiListItemSecondaryAction",e)}(0,b.Z)("MuiListItemSecondaryAction",["root","disableGutters"]);var I=n(80184),P=["className"],w=(0,u.ZP)("div",{name:"MuiListItemSecondaryAction",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState;return[t.root,n.disableGutters&&t.disableGutters]}})((function(e){var t=e.ownerState;return(0,a.Z)({position:"absolute",right:16,top:"50%",transform:"translateY(-50%)"},t.disableGutters&&{right:0})})),M=i.forwardRef((function(e,t){var n=(0,p.Z)({props:e,name:"MuiListItemSecondaryAction"}),r=n.className,d=(0,o.Z)(n,P),l=i.useContext(Z.Z),u=(0,a.Z)({},n,{disableGutters:l.disableGutters}),m=function(e){var t=e.disableGutters,n=e.classes,r={root:["root",t&&"disableGutters"]};return(0,c.Z)(r,S,n)}(u);return(0,I.jsx)(w,(0,a.Z)({className:(0,s.Z)(m.root,r),ownerState:u,ref:t},d))}));M.muiName="ListItemSecondaryAction";var N=M,A=["className"],k=["alignItems","autoFocus","button","children","className","component","components","componentsProps","ContainerComponent","ContainerProps","dense","disabled","disableGutters","disablePadding","divider","focusVisibleClassName","secondaryAction","selected","slotProps","slots"],L=(0,u.ZP)("div",{name:"MuiListItem",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState;return[t.root,n.dense&&t.dense,"flex-start"===n.alignItems&&t.alignItemsFlexStart,n.divider&&t.divider,!n.disableGutters&&t.gutters,!n.disablePadding&&t.padding,n.button&&t.button,n.hasSecondaryAction&&t.secondaryAction]}})((function(e){var t,n=e.theme,o=e.ownerState;return(0,a.Z)({display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",width:"100%",boxSizing:"border-box",textAlign:"left"},!o.disablePadding&&(0,a.Z)({paddingTop:8,paddingBottom:8},o.dense&&{paddingTop:4,paddingBottom:4},!o.disableGutters&&{paddingLeft:16,paddingRight:16},!!o.secondaryAction&&{paddingRight:48}),!!o.secondaryAction&&(0,r.Z)({},"& > .".concat(C.root),{paddingRight:48}),(t={},(0,r.Z)(t,"&.".concat(x.focusVisible),{backgroundColor:(n.vars||n).palette.action.focus}),(0,r.Z)(t,"&.".concat(x.selected),(0,r.Z)({backgroundColor:n.vars?"rgba(".concat(n.vars.palette.primary.mainChannel," / ").concat(n.vars.palette.action.selectedOpacity,")"):(0,l.Fq)(n.palette.primary.main,n.palette.action.selectedOpacity)},"&.".concat(x.focusVisible),{backgroundColor:n.vars?"rgba(".concat(n.vars.palette.primary.mainChannel," / calc(").concat(n.vars.palette.action.selectedOpacity," + ").concat(n.vars.palette.action.focusOpacity,"))"):(0,l.Fq)(n.palette.primary.main,n.palette.action.selectedOpacity+n.palette.action.focusOpacity)})),(0,r.Z)(t,"&.".concat(x.disabled),{opacity:(n.vars||n).palette.action.disabledOpacity}),t),"flex-start"===o.alignItems&&{alignItems:"flex-start"},o.divider&&{borderBottom:"1px solid ".concat((n.vars||n).palette.divider),backgroundClip:"padding-box"},o.button&&(0,r.Z)({transition:n.transitions.create("background-color",{duration:n.transitions.duration.shortest}),"&:hover":{textDecoration:"none",backgroundColor:(n.vars||n).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}}},"&.".concat(x.selected,":hover"),{backgroundColor:n.vars?"rgba(".concat(n.vars.palette.primary.mainChannel," / calc(").concat(n.vars.palette.action.selectedOpacity," + ").concat(n.vars.palette.action.hoverOpacity,"))"):(0,l.Fq)(n.palette.primary.main,n.palette.action.selectedOpacity+n.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:n.vars?"rgba(".concat(n.vars.palette.primary.mainChannel," / ").concat(n.vars.palette.action.selectedOpacity,")"):(0,l.Fq)(n.palette.primary.main,n.palette.action.selectedOpacity)}}),o.hasSecondaryAction&&{paddingRight:48})})),O=(0,u.ZP)("li",{name:"MuiListItem",slot:"Container",overridesResolver:function(e,t){return t.container}})({position:"relative"}),R=i.forwardRef((function(e,t){var n=(0,p.Z)({props:e,name:"MuiListItem"}),r=n.alignItems,l=void 0===r?"center":r,u=n.autoFocus,b=void 0!==u&&u,g=n.button,C=void 0!==g&&g,S=n.children,P=n.className,w=n.component,M=n.components,R=void 0===M?{}:M,G=n.componentsProps,j=void 0===G?{}:G,F=n.ContainerComponent,T=void 0===F?"li":F,_=n.ContainerProps,V=(void 0===_?{}:_).className,z=n.dense,B=void 0!==z&&z,E=n.disabled,q=void 0!==E&&E,D=n.disableGutters,W=void 0!==D&&D,X=n.disablePadding,Y=void 0!==X&&X,H=n.divider,J=void 0!==H&&H,K=n.focusVisibleClassName,Q=n.secondaryAction,U=n.selected,$=void 0!==U&&U,ee=n.slotProps,te=void 0===ee?{}:ee,ne=n.slots,re=void 0===ne?{}:ne,oe=(0,o.Z)(n.ContainerProps,A),ae=(0,o.Z)(n,k),ie=i.useContext(Z.Z),se=i.useMemo((function(){return{dense:B||ie.dense||!1,alignItems:l,disableGutters:W}}),[l,ie.dense,B,W]),ce=i.useRef(null);(0,f.Z)((function(){b&&ce.current&&ce.current.focus()}),[b]);var de=i.Children.toArray(S),le=de.length&&(0,v.Z)(de[de.length-1],["ListItemSecondaryAction"]),ue=(0,a.Z)({},n,{alignItems:l,autoFocus:b,button:C,dense:se.dense,disabled:q,disableGutters:W,disablePadding:Y,divider:J,hasSecondaryAction:le,selected:$}),pe=function(e){var t=e.alignItems,n=e.button,r=e.classes,o=e.dense,a=e.disabled,i={root:["root",o&&"dense",!e.disableGutters&&"gutters",!e.disablePadding&&"padding",e.divider&&"divider",a&&"disabled",n&&"button","flex-start"===t&&"alignItemsFlexStart",e.hasSecondaryAction&&"secondaryAction",e.selected&&"selected"],container:["container"]};return(0,c.Z)(i,h,r)}(ue),me=(0,y.Z)(ce,t),ve=re.root||R.Root||L,fe=te.root||j.root||{},ye=(0,a.Z)({className:(0,s.Z)(pe.root,fe.className,P),disabled:q},ae),Ze=w||"li";return C&&(ye.component=w||"div",ye.focusVisibleClassName=(0,s.Z)(x.focusVisible,K),Ze=m.Z),le?(Ze=ye.component||w?Ze:"div","li"===T&&("li"===Ze?Ze="div":"li"===ye.component&&(ye.component="div")),(0,I.jsx)(Z.Z.Provider,{value:se,children:(0,I.jsxs)(O,(0,a.Z)({as:T,className:(0,s.Z)(pe.container,V),ref:me,ownerState:ue},oe,{children:[(0,I.jsx)(ve,(0,a.Z)({},fe,!(0,d.X)(ve)&&{as:Ze,ownerState:(0,a.Z)({},ue,fe.ownerState)},ye,{children:de})),de.pop()]}))})):(0,I.jsx)(Z.Z.Provider,{value:se,children:(0,I.jsxs)(ve,(0,a.Z)({},fe,{as:Ze,ref:me},!(0,d.X)(ve)&&{ownerState:(0,a.Z)({},ue,fe.ownerState)},ye,{children:[de,Q&&(0,I.jsx)(N,{children:Q})]}))})}))},49900:function(e,t,n){"use strict";var r=n(4942),o=n(63366),a=n(87462),i=n(72791),s=n(63733),c=n(94419),d=n(20890),l=n(66199),u=n(31402),p=n(66934),m=n(29849),v=n(80184),f=["children","className","disableTypography","inset","primary","primaryTypographyProps","secondary","secondaryTypographyProps"],y=(0,p.ZP)("div",{name:"MuiListItemText",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState;return[(0,r.Z)({},"& .".concat(m.Z.primary),t.primary),(0,r.Z)({},"& .".concat(m.Z.secondary),t.secondary),t.root,n.inset&&t.inset,n.primary&&n.secondary&&t.multiline,n.dense&&t.dense]}})((function(e){var t=e.ownerState;return(0,a.Z)({flex:"1 1 auto",minWidth:0,marginTop:4,marginBottom:4},t.primary&&t.secondary&&{marginTop:6,marginBottom:6},t.inset&&{paddingLeft:56})})),Z=i.forwardRef((function(e,t){var n=(0,u.Z)({props:e,name:"MuiListItemText"}),r=n.children,p=n.className,Z=n.disableTypography,b=void 0!==Z&&Z,g=n.inset,h=void 0!==g&&g,x=n.primary,C=n.primaryTypographyProps,S=n.secondary,I=n.secondaryTypographyProps,P=(0,o.Z)(n,f),w=i.useContext(l.Z).dense,M=null!=x?x:r,N=S,A=(0,a.Z)({},n,{disableTypography:b,inset:h,primary:!!M,secondary:!!N,dense:w}),k=function(e){var t=e.classes,n=e.inset,r=e.primary,o=e.secondary,a={root:["root",n&&"inset",e.dense&&"dense",r&&o&&"multiline"],primary:["primary"],secondary:["secondary"]};return(0,c.Z)(a,m.L,t)}(A);return null==M||M.type===d.Z||b||(M=(0,v.jsx)(d.Z,(0,a.Z)({variant:w?"body2":"body1",className:k.primary,component:null!=C&&C.variant?void 0:"span",display:"block"},C,{children:M}))),null==N||N.type===d.Z||b||(N=(0,v.jsx)(d.Z,(0,a.Z)({variant:"body2",className:k.secondary,color:"text.secondary",display:"block"},I,{children:N}))),(0,v.jsxs)(y,(0,a.Z)({className:(0,s.Z)(k.root,p),ownerState:A,ref:t},P,{children:[M,N]}))}));t.Z=Z},31260:function(e,t,n){"use strict";var r=n(78949);t.Z=r.Z},28610:function(e,t,n){"use strict";n.r(t),n.d(t,{capitalize:function(){return o.Z},createChainedFunction:function(){return a.Z},createSvgIcon:function(){return i.Z},debounce:function(){return s.Z},deprecatedPropType:function(){return c},isMuiElement:function(){return d.Z},ownerDocument:function(){return l.Z},ownerWindow:function(){return u.Z},requirePropFactory:function(){return p},setRef:function(){return m},unstable_ClassNameGenerator:function(){return x},unstable_useEnhancedEffect:function(){return v.Z},unstable_useId:function(){return f.Z},unsupportedProp:function(){return y},useControlled:function(){return Z.Z},useEventCallback:function(){return b.Z},useForkRef:function(){return g.Z},useIsFocusVisible:function(){return h.Z}});var r=n(55902),o=n(14036),a=n(31260),i=n(76189),s=n(83199);var c=function(e,t){return function(){return null}},d=n(19103),l=n(98301),u=n(17602);n(87462);var p=function(e,t){return function(){return null}},m=n(62971).Z,v=n(40162),f=n(67384);var y=function(e,t,n,r,o){return null},Z=n(98278),b=n(89683),g=n(42071),h=n(23031),x={configure:function(e){r.Z.configure(e)}}},19103:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(72791);var o=function(e,t){return r.isValidElement(e)&&-1!==t.indexOf(e.type.muiName)}},64836:function(e){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); -//# sourceMappingURL=7082.dc493620.chunk.js.map \ No newline at end of file +(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[7082],{98946:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var o=r(n(45649)),a=n(80184),i=(0,o.default)((0,a.jsx)("path",{d:"M16.59 7.58 10 14.17l-3.59-3.58L5 12l5 5 8-8zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"CheckCircleOutline");t.Z=i},15146:function(e,t,n){"use strict";var r=n(64836);t.Z=void 0;var o=r(n(45649)),a=n(80184),i=(0,o.default)((0,a.jsx)("path",{d:"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"ErrorOutline");t.Z=i},45649:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r.createSvgIcon}});var r=n(28610)},84852:function(e,t,n){"use strict";n.d(t,{ZP:function(){return R}});var r=n(4942),o=n(63366),a=n(87462),i=n(72791),s=n(63733),c=n(94419),d=n(20627),l=n(12065),u=n(66934),p=n(31402),m=n(95080),v=n(19103),f=n(40162),y=n(42071),Z=n(66199),b=n(75878),g=n(21217);function h(e){return(0,g.Z)("MuiListItem",e)}var x=(0,b.Z)("MuiListItem",["root","container","focusVisible","dense","alignItemsFlexStart","disabled","divider","gutters","padding","button","secondaryAction","selected"]);var C=(0,b.Z)("MuiListItemButton",["root","focusVisible","dense","alignItemsFlexStart","disabled","divider","gutters","selected"]);function S(e){return(0,g.Z)("MuiListItemSecondaryAction",e)}(0,b.Z)("MuiListItemSecondaryAction",["root","disableGutters"]);var I=n(80184),P=["className"],w=(0,u.ZP)("div",{name:"MuiListItemSecondaryAction",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState;return[t.root,n.disableGutters&&t.disableGutters]}})((function(e){var t=e.ownerState;return(0,a.Z)({position:"absolute",right:16,top:"50%",transform:"translateY(-50%)"},t.disableGutters&&{right:0})})),N=i.forwardRef((function(e,t){var n=(0,p.Z)({props:e,name:"MuiListItemSecondaryAction"}),r=n.className,d=(0,o.Z)(n,P),l=i.useContext(Z.Z),u=(0,a.Z)({},n,{disableGutters:l.disableGutters}),m=function(e){var t=e.disableGutters,n=e.classes,r={root:["root",t&&"disableGutters"]};return(0,c.Z)(r,S,n)}(u);return(0,I.jsx)(w,(0,a.Z)({className:(0,s.Z)(m.root,r),ownerState:u,ref:t},d))}));N.muiName="ListItemSecondaryAction";var M=N,A=["className"],k=["alignItems","autoFocus","button","children","className","component","components","componentsProps","ContainerComponent","ContainerProps","dense","disabled","disableGutters","disablePadding","divider","focusVisibleClassName","secondaryAction","selected","slotProps","slots"],L=(0,u.ZP)("div",{name:"MuiListItem",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState;return[t.root,n.dense&&t.dense,"flex-start"===n.alignItems&&t.alignItemsFlexStart,n.divider&&t.divider,!n.disableGutters&&t.gutters,!n.disablePadding&&t.padding,n.button&&t.button,n.hasSecondaryAction&&t.secondaryAction]}})((function(e){var t,n=e.theme,o=e.ownerState;return(0,a.Z)({display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",width:"100%",boxSizing:"border-box",textAlign:"left"},!o.disablePadding&&(0,a.Z)({paddingTop:8,paddingBottom:8},o.dense&&{paddingTop:4,paddingBottom:4},!o.disableGutters&&{paddingLeft:16,paddingRight:16},!!o.secondaryAction&&{paddingRight:48}),!!o.secondaryAction&&(0,r.Z)({},"& > .".concat(C.root),{paddingRight:48}),(t={},(0,r.Z)(t,"&.".concat(x.focusVisible),{backgroundColor:(n.vars||n).palette.action.focus}),(0,r.Z)(t,"&.".concat(x.selected),(0,r.Z)({backgroundColor:n.vars?"rgba(".concat(n.vars.palette.primary.mainChannel," / ").concat(n.vars.palette.action.selectedOpacity,")"):(0,l.Fq)(n.palette.primary.main,n.palette.action.selectedOpacity)},"&.".concat(x.focusVisible),{backgroundColor:n.vars?"rgba(".concat(n.vars.palette.primary.mainChannel," / calc(").concat(n.vars.palette.action.selectedOpacity," + ").concat(n.vars.palette.action.focusOpacity,"))"):(0,l.Fq)(n.palette.primary.main,n.palette.action.selectedOpacity+n.palette.action.focusOpacity)})),(0,r.Z)(t,"&.".concat(x.disabled),{opacity:(n.vars||n).palette.action.disabledOpacity}),t),"flex-start"===o.alignItems&&{alignItems:"flex-start"},o.divider&&{borderBottom:"1px solid ".concat((n.vars||n).palette.divider),backgroundClip:"padding-box"},o.button&&(0,r.Z)({transition:n.transitions.create("background-color",{duration:n.transitions.duration.shortest}),"&:hover":{textDecoration:"none",backgroundColor:(n.vars||n).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}}},"&.".concat(x.selected,":hover"),{backgroundColor:n.vars?"rgba(".concat(n.vars.palette.primary.mainChannel," / calc(").concat(n.vars.palette.action.selectedOpacity," + ").concat(n.vars.palette.action.hoverOpacity,"))"):(0,l.Fq)(n.palette.primary.main,n.palette.action.selectedOpacity+n.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:n.vars?"rgba(".concat(n.vars.palette.primary.mainChannel," / ").concat(n.vars.palette.action.selectedOpacity,")"):(0,l.Fq)(n.palette.primary.main,n.palette.action.selectedOpacity)}}),o.hasSecondaryAction&&{paddingRight:48})})),O=(0,u.ZP)("li",{name:"MuiListItem",slot:"Container",overridesResolver:function(e,t){return t.container}})({position:"relative"}),R=i.forwardRef((function(e,t){var n=(0,p.Z)({props:e,name:"MuiListItem"}),r=n.alignItems,l=void 0===r?"center":r,u=n.autoFocus,b=void 0!==u&&u,g=n.button,C=void 0!==g&&g,S=n.children,P=n.className,w=n.component,N=n.components,R=void 0===N?{}:N,G=n.componentsProps,j=void 0===G?{}:G,F=n.ContainerComponent,T=void 0===F?"li":F,_=n.ContainerProps,V=(void 0===_?{}:_).className,z=n.dense,B=void 0!==z&&z,E=n.disabled,q=void 0!==E&&E,D=n.disableGutters,W=void 0!==D&&D,X=n.disablePadding,Y=void 0!==X&&X,H=n.divider,J=void 0!==H&&H,K=n.focusVisibleClassName,Q=n.secondaryAction,U=n.selected,$=void 0!==U&&U,ee=n.slotProps,te=void 0===ee?{}:ee,ne=n.slots,re=void 0===ne?{}:ne,oe=(0,o.Z)(n.ContainerProps,A),ae=(0,o.Z)(n,k),ie=i.useContext(Z.Z),se=i.useMemo((function(){return{dense:B||ie.dense||!1,alignItems:l,disableGutters:W}}),[l,ie.dense,B,W]),ce=i.useRef(null);(0,f.Z)((function(){b&&ce.current&&ce.current.focus()}),[b]);var de=i.Children.toArray(S),le=de.length&&(0,v.Z)(de[de.length-1],["ListItemSecondaryAction"]),ue=(0,a.Z)({},n,{alignItems:l,autoFocus:b,button:C,dense:se.dense,disabled:q,disableGutters:W,disablePadding:Y,divider:J,hasSecondaryAction:le,selected:$}),pe=function(e){var t=e.alignItems,n=e.button,r=e.classes,o=e.dense,a=e.disabled,i={root:["root",o&&"dense",!e.disableGutters&&"gutters",!e.disablePadding&&"padding",e.divider&&"divider",a&&"disabled",n&&"button","flex-start"===t&&"alignItemsFlexStart",e.hasSecondaryAction&&"secondaryAction",e.selected&&"selected"],container:["container"]};return(0,c.Z)(i,h,r)}(ue),me=(0,y.Z)(ce,t),ve=re.root||R.Root||L,fe=te.root||j.root||{},ye=(0,a.Z)({className:(0,s.Z)(pe.root,fe.className,P),disabled:q},ae),Ze=w||"li";return C&&(ye.component=w||"div",ye.focusVisibleClassName=(0,s.Z)(x.focusVisible,K),Ze=m.Z),le?(Ze=ye.component||w?Ze:"div","li"===T&&("li"===Ze?Ze="div":"li"===ye.component&&(ye.component="div")),(0,I.jsx)(Z.Z.Provider,{value:se,children:(0,I.jsxs)(O,(0,a.Z)({as:T,className:(0,s.Z)(pe.container,V),ref:me,ownerState:ue},oe,{children:[(0,I.jsx)(ve,(0,a.Z)({},fe,!(0,d.X)(ve)&&{as:Ze,ownerState:(0,a.Z)({},ue,fe.ownerState)},ye,{children:de})),de.pop()]}))})):(0,I.jsx)(Z.Z.Provider,{value:se,children:(0,I.jsxs)(ve,(0,a.Z)({},fe,{as:Ze,ref:me},!(0,d.X)(ve)&&{ownerState:(0,a.Z)({},ue,fe.ownerState)},ye,{children:[de,Q&&(0,I.jsx)(M,{children:Q})]}))})}))},49900:function(e,t,n){"use strict";var r=n(4942),o=n(63366),a=n(87462),i=n(72791),s=n(63733),c=n(94419),d=n(20890),l=n(66199),u=n(31402),p=n(66934),m=n(29849),v=n(80184),f=["children","className","disableTypography","inset","primary","primaryTypographyProps","secondary","secondaryTypographyProps"],y=(0,p.ZP)("div",{name:"MuiListItemText",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState;return[(0,r.Z)({},"& .".concat(m.Z.primary),t.primary),(0,r.Z)({},"& .".concat(m.Z.secondary),t.secondary),t.root,n.inset&&t.inset,n.primary&&n.secondary&&t.multiline,n.dense&&t.dense]}})((function(e){var t=e.ownerState;return(0,a.Z)({flex:"1 1 auto",minWidth:0,marginTop:4,marginBottom:4},t.primary&&t.secondary&&{marginTop:6,marginBottom:6},t.inset&&{paddingLeft:56})})),Z=i.forwardRef((function(e,t){var n=(0,u.Z)({props:e,name:"MuiListItemText"}),r=n.children,p=n.className,Z=n.disableTypography,b=void 0!==Z&&Z,g=n.inset,h=void 0!==g&&g,x=n.primary,C=n.primaryTypographyProps,S=n.secondary,I=n.secondaryTypographyProps,P=(0,o.Z)(n,f),w=i.useContext(l.Z).dense,N=null!=x?x:r,M=S,A=(0,a.Z)({},n,{disableTypography:b,inset:h,primary:!!N,secondary:!!M,dense:w}),k=function(e){var t=e.classes,n=e.inset,r=e.primary,o=e.secondary,a={root:["root",n&&"inset",e.dense&&"dense",r&&o&&"multiline"],primary:["primary"],secondary:["secondary"]};return(0,c.Z)(a,m.L,t)}(A);return null==N||N.type===d.Z||b||(N=(0,v.jsx)(d.Z,(0,a.Z)({variant:w?"body2":"body1",className:k.primary,component:null!=C&&C.variant?void 0:"span",display:"block"},C,{children:N}))),null==M||M.type===d.Z||b||(M=(0,v.jsx)(d.Z,(0,a.Z)({variant:"body2",className:k.secondary,color:"text.secondary",display:"block"},I,{children:M}))),(0,v.jsxs)(y,(0,a.Z)({className:(0,s.Z)(k.root,p),ownerState:A,ref:t},P,{children:[N,M]}))}));t.Z=Z},31260:function(e,t,n){"use strict";var r=n(78949);t.Z=r.Z},28610:function(e,t,n){"use strict";n.r(t),n.d(t,{capitalize:function(){return o.Z},createChainedFunction:function(){return a.Z},createSvgIcon:function(){return i.Z},debounce:function(){return s.Z},deprecatedPropType:function(){return c},isMuiElement:function(){return d.Z},ownerDocument:function(){return l.Z},ownerWindow:function(){return u.Z},requirePropFactory:function(){return p},setRef:function(){return m},unstable_ClassNameGenerator:function(){return x},unstable_useEnhancedEffect:function(){return v.Z},unstable_useId:function(){return f.Z},unsupportedProp:function(){return y},useControlled:function(){return Z.Z},useEventCallback:function(){return b.Z},useForkRef:function(){return g.Z},useIsFocusVisible:function(){return h.Z}});var r=n(55902),o=n(14036),a=n(31260),i=n(76189),s=n(83199);var c=function(e,t){return function(){return null}},d=n(19103),l=n(98301),u=n(17602);n(87462);var p=function(e,t){return function(){return null}},m=n(62971).Z,v=n(40162),f=n(67384);var y=function(e,t,n,r,o){return null},Z=n(98278),b=n(89683),g=n(42071),h=n(23031),x={configure:function(e){r.Z.configure(e)}}},19103:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(72791);var o=function(e,t){var n,o;return r.isValidElement(e)&&-1!==t.indexOf(null!=(n=e.type.muiName)?n:null==(o=e.type)||null==(o=o._payload)||null==(o=o.value)?void 0:o.muiName)}},64836:function(e){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); +//# sourceMappingURL=7082.e66ba30d.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/7082.e66ba30d.chunk.js.map b/portal-ui/build/static/js/7082.e66ba30d.chunk.js.map new file mode 100644 index 0000000000..b1826e80d6 --- /dev/null +++ b/portal-ui/build/static/js/7082.e66ba30d.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/7082.e66ba30d.chunk.js","mappings":"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","sources":["../node_modules/@mui/icons-material/CheckCircleOutline.js","../node_modules/@mui/icons-material/ErrorOutline.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/ListItem/listItemClasses.js","../node_modules/@mui/material/ListItemButton/listItemButtonClasses.js","../node_modules/@mui/material/ListItemSecondaryAction/listItemSecondaryActionClasses.js","../node_modules/@mui/material/ListItemSecondaryAction/ListItemSecondaryAction.js","../node_modules/@mui/material/ListItem/ListItem.js","../node_modules/@mui/material/ListItemText/ListItemText.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/esm/deprecatedPropType.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/esm/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/esm/unsupportedProp.js","../node_modules/@mui/material/utils/index.js","../node_modules/@mui/material/utils/isMuiElement.js","../node_modules/@mui/utils/esm/isMuiElement.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js"],"sourcesContent":["\"use strict\";\n\"use client\";\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.59 7.58 10 14.17l-3.59-3.58L5 12l5 5 8-8zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'CheckCircleOutline');\nexports.default = _default;","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'ErrorOutline');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListItemUtilityClass(slot) {\n return generateUtilityClass('MuiListItem', slot);\n}\nconst listItemClasses = generateUtilityClasses('MuiListItem', ['root', 'container', 'focusVisible', 'dense', 'alignItemsFlexStart', 'disabled', 'divider', 'gutters', 'padding', 'button', 'secondaryAction', 'selected']);\nexport default listItemClasses;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListItemButtonUtilityClass(slot) {\n return generateUtilityClass('MuiListItemButton', slot);\n}\nconst listItemButtonClasses = generateUtilityClasses('MuiListItemButton', ['root', 'focusVisible', 'dense', 'alignItemsFlexStart', 'disabled', 'divider', 'gutters', 'selected']);\nexport default listItemButtonClasses;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListItemSecondaryActionClassesUtilityClass(slot) {\n return generateUtilityClass('MuiListItemSecondaryAction', slot);\n}\nconst listItemSecondaryActionClasses = generateUtilityClasses('MuiListItemSecondaryAction', ['root', 'disableGutters']);\nexport default listItemSecondaryActionClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ListContext from '../List/ListContext';\nimport { getListItemSecondaryActionClassesUtilityClass } from './listItemSecondaryActionClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n disableGutters,\n classes\n } = ownerState;\n const slots = {\n root: ['root', disableGutters && 'disableGutters']\n };\n return composeClasses(slots, getListItemSecondaryActionClassesUtilityClass, classes);\n};\nconst ListItemSecondaryActionRoot = styled('div', {\n name: 'MuiListItemSecondaryAction',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.disableGutters && styles.disableGutters];\n }\n})(({\n ownerState\n}) => _extends({\n position: 'absolute',\n right: 16,\n top: '50%',\n transform: 'translateY(-50%)'\n}, ownerState.disableGutters && {\n right: 0\n}));\n\n/**\n * Must be used as the last child of ListItem to function properly.\n */\nconst ListItemSecondaryAction = /*#__PURE__*/React.forwardRef(function ListItemSecondaryAction(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiListItemSecondaryAction'\n });\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const context = React.useContext(ListContext);\n const ownerState = _extends({}, props, {\n disableGutters: context.disableGutters\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(ListItemSecondaryActionRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemSecondaryAction.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component, normally an `IconButton` or selection control.\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} : void 0;\nListItemSecondaryAction.muiName = 'ListItemSecondaryAction';\nexport default ListItemSecondaryAction;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\"],\n _excluded2 = [\"alignItems\", \"autoFocus\", \"button\", \"children\", \"className\", \"component\", \"components\", \"componentsProps\", \"ContainerComponent\", \"ContainerProps\", \"dense\", \"disabled\", \"disableGutters\", \"disablePadding\", \"divider\", \"focusVisibleClassName\", \"secondaryAction\", \"selected\", \"slotProps\", \"slots\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses, isHostComponent } from '@mui/base';\nimport { chainPropTypes, elementTypeAcceptingRef } from '@mui/utils';\nimport { alpha } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ButtonBase from '../ButtonBase';\nimport isMuiElement from '../utils/isMuiElement';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\nimport useForkRef from '../utils/useForkRef';\nimport ListContext from '../List/ListContext';\nimport listItemClasses, { getListItemUtilityClass } from './listItemClasses';\nimport { listItemButtonClasses } from '../ListItemButton';\nimport ListItemSecondaryAction from '../ListItemSecondaryAction';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const overridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.dense && styles.dense, ownerState.alignItems === 'flex-start' && styles.alignItemsFlexStart, ownerState.divider && styles.divider, !ownerState.disableGutters && styles.gutters, !ownerState.disablePadding && styles.padding, ownerState.button && styles.button, ownerState.hasSecondaryAction && styles.secondaryAction];\n};\nconst useUtilityClasses = ownerState => {\n const {\n alignItems,\n button,\n classes,\n dense,\n disabled,\n disableGutters,\n disablePadding,\n divider,\n hasSecondaryAction,\n selected\n } = ownerState;\n const slots = {\n root: ['root', dense && 'dense', !disableGutters && 'gutters', !disablePadding && 'padding', divider && 'divider', disabled && 'disabled', button && 'button', alignItems === 'flex-start' && 'alignItemsFlexStart', hasSecondaryAction && 'secondaryAction', selected && 'selected'],\n container: ['container']\n };\n return composeClasses(slots, getListItemUtilityClass, classes);\n};\nexport const ListItemRoot = styled('div', {\n name: 'MuiListItem',\n slot: 'Root',\n overridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n position: 'relative',\n textDecoration: 'none',\n width: '100%',\n boxSizing: 'border-box',\n textAlign: 'left'\n}, !ownerState.disablePadding && _extends({\n paddingTop: 8,\n paddingBottom: 8\n}, ownerState.dense && {\n paddingTop: 4,\n paddingBottom: 4\n}, !ownerState.disableGutters && {\n paddingLeft: 16,\n paddingRight: 16\n}, !!ownerState.secondaryAction && {\n // Add some space to avoid collision as `ListItemSecondaryAction`\n // is absolutely positioned.\n paddingRight: 48\n}), !!ownerState.secondaryAction && {\n [`& > .${listItemButtonClasses.root}`]: {\n paddingRight: 48\n }\n}, {\n [`&.${listItemClasses.focusVisible}`]: {\n backgroundColor: (theme.vars || theme).palette.action.focus\n },\n [`&.${listItemClasses.selected}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n [`&.${listItemClasses.focusVisible}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n }\n },\n [`&.${listItemClasses.disabled}`]: {\n opacity: (theme.vars || theme).palette.action.disabledOpacity\n }\n}, ownerState.alignItems === 'flex-start' && {\n alignItems: 'flex-start'\n}, ownerState.divider && {\n borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`,\n backgroundClip: 'padding-box'\n}, ownerState.button && {\n transition: theme.transitions.create('background-color', {\n duration: theme.transitions.duration.shortest\n }),\n '&:hover': {\n textDecoration: 'none',\n backgroundColor: (theme.vars || theme).palette.action.hover,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n [`&.${listItemClasses.selected}:hover`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)\n }\n }\n}, ownerState.hasSecondaryAction && {\n // Add some space to avoid collision as `ListItemSecondaryAction`\n // is absolutely positioned.\n paddingRight: 48\n}));\nconst ListItemContainer = styled('li', {\n name: 'MuiListItem',\n slot: 'Container',\n overridesResolver: (props, styles) => styles.container\n})({\n position: 'relative'\n});\n\n/**\n * Uses an additional container component if `ListItemSecondaryAction` is the last child.\n */\nconst ListItem = /*#__PURE__*/React.forwardRef(function ListItem(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiListItem'\n });\n const {\n alignItems = 'center',\n autoFocus = false,\n button = false,\n children: childrenProp,\n className,\n component: componentProp,\n components = {},\n componentsProps = {},\n ContainerComponent = 'li',\n ContainerProps: {\n className: ContainerClassName\n } = {},\n dense = false,\n disabled = false,\n disableGutters = false,\n disablePadding = false,\n divider = false,\n focusVisibleClassName,\n secondaryAction,\n selected = false,\n slotProps = {},\n slots = {}\n } = props,\n ContainerProps = _objectWithoutPropertiesLoose(props.ContainerProps, _excluded),\n other = _objectWithoutPropertiesLoose(props, _excluded2);\n const context = React.useContext(ListContext);\n const childContext = React.useMemo(() => ({\n dense: dense || context.dense || false,\n alignItems,\n disableGutters\n }), [alignItems, context.dense, dense, disableGutters]);\n const listItemRef = React.useRef(null);\n useEnhancedEffect(() => {\n if (autoFocus) {\n if (listItemRef.current) {\n listItemRef.current.focus();\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('MUI: Unable to set focus to a ListItem whose component has not been rendered.');\n }\n }\n }, [autoFocus]);\n const children = React.Children.toArray(childrenProp);\n\n // v4 implementation, deprecated in v5, will be removed in v6\n const hasSecondaryAction = children.length && isMuiElement(children[children.length - 1], ['ListItemSecondaryAction']);\n const ownerState = _extends({}, props, {\n alignItems,\n autoFocus,\n button,\n dense: childContext.dense,\n disabled,\n disableGutters,\n disablePadding,\n divider,\n hasSecondaryAction,\n selected\n });\n const classes = useUtilityClasses(ownerState);\n const handleRef = useForkRef(listItemRef, ref);\n const Root = slots.root || components.Root || ListItemRoot;\n const rootProps = slotProps.root || componentsProps.root || {};\n const componentProps = _extends({\n className: clsx(classes.root, rootProps.className, className),\n disabled\n }, other);\n let Component = componentProp || 'li';\n if (button) {\n componentProps.component = componentProp || 'div';\n componentProps.focusVisibleClassName = clsx(listItemClasses.focusVisible, focusVisibleClassName);\n Component = ButtonBase;\n }\n\n // v4 implementation, deprecated in v5, will be removed in v6\n if (hasSecondaryAction) {\n // Use div by default.\n Component = !componentProps.component && !componentProp ? 'div' : Component;\n\n // Avoid nesting of li > li.\n if (ContainerComponent === 'li') {\n if (Component === 'li') {\n Component = 'div';\n } else if (componentProps.component === 'li') {\n componentProps.component = 'div';\n }\n }\n return /*#__PURE__*/_jsx(ListContext.Provider, {\n value: childContext,\n children: /*#__PURE__*/_jsxs(ListItemContainer, _extends({\n as: ContainerComponent,\n className: clsx(classes.container, ContainerClassName),\n ref: handleRef,\n ownerState: ownerState\n }, ContainerProps, {\n children: [/*#__PURE__*/_jsx(Root, _extends({}, rootProps, !isHostComponent(Root) && {\n as: Component,\n ownerState: _extends({}, ownerState, rootProps.ownerState)\n }, componentProps, {\n children: children\n })), children.pop()]\n }))\n });\n }\n return /*#__PURE__*/_jsx(ListContext.Provider, {\n value: childContext,\n children: /*#__PURE__*/_jsxs(Root, _extends({}, rootProps, {\n as: Component,\n ref: handleRef\n }, !isHostComponent(Root) && {\n ownerState: _extends({}, ownerState, rootProps.ownerState)\n }, componentProps, {\n children: [children, secondaryAction && /*#__PURE__*/_jsx(ListItemSecondaryAction, {\n children: secondaryAction\n })]\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItem.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 * Defines the `align-items` style property.\n * @default 'center'\n */\n alignItems: PropTypes.oneOf(['center', 'flex-start']),\n /**\n * If `true`, the list item is focused during the first mount.\n * Focus will also be triggered if the value changes from false to true.\n * @default false\n * @deprecated checkout [ListItemButton](/material-ui/api/list-item-button/) instead\n */\n autoFocus: PropTypes.bool,\n /**\n * If `true`, the list item is a button (using `ButtonBase`). Props intended\n * for `ButtonBase` can then be applied to `ListItem`.\n * @default false\n * @deprecated checkout [ListItemButton](/material-ui/api/list-item-button/) instead\n */\n button: PropTypes.bool,\n /**\n * The content of the component if a `ListItemSecondaryAction` is used it must\n * be the last child.\n */\n children: chainPropTypes(PropTypes.node, props => {\n const children = React.Children.toArray(props.children);\n\n // React.Children.toArray(props.children).findLastIndex(isListItemSecondaryAction)\n let secondaryActionIndex = -1;\n for (let i = children.length - 1; i >= 0; i -= 1) {\n const child = children[i];\n if (isMuiElement(child, ['ListItemSecondaryAction'])) {\n secondaryActionIndex = i;\n break;\n }\n }\n\n // is ListItemSecondaryAction the last child of ListItem\n if (secondaryActionIndex !== -1 && secondaryActionIndex !== children.length - 1) {\n return new Error('MUI: You used an element after ListItemSecondaryAction. ' + 'For ListItem to detect that it has a secondary action ' + 'you must pass it as the last child to ListItem.');\n }\n return null;\n }),\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Root: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `slotProps` prop.\n * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n root: PropTypes.object\n }),\n /**\n * The container component used when a `ListItemSecondaryAction` is the last child.\n * @default 'li'\n * @deprecated\n */\n ContainerComponent: elementTypeAcceptingRef,\n /**\n * Props applied to the container component if used.\n * @default {}\n * @deprecated\n */\n ContainerProps: PropTypes.object,\n /**\n * If `true`, compact vertical padding designed for keyboard and mouse input is used.\n * The prop defaults to the value inherited from the parent List component.\n * @default false\n */\n dense: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n * @default false\n * @deprecated checkout [ListItemButton](/material-ui/api/list-item-button/) instead\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the left and right padding is removed.\n * @default false\n */\n disableGutters: PropTypes.bool,\n /**\n * If `true`, all padding is removed.\n * @default false\n */\n disablePadding: PropTypes.bool,\n /**\n * If `true`, a 1px light border is added to the bottom of the list item.\n * @default false\n */\n divider: PropTypes.bool,\n /**\n * @ignore\n */\n focusVisibleClassName: PropTypes.string,\n /**\n * The element to display at the end of ListItem.\n */\n secondaryAction: PropTypes.node,\n /**\n * Use to apply selected styling.\n * @default false\n * @deprecated checkout [ListItemButton](/material-ui/api/list-item-button/) instead\n */\n selected: PropTypes.bool,\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slotProps: PropTypes.shape({\n root: PropTypes.object\n }),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `components` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slots: PropTypes.shape({\n root: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListItem;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"disableTypography\", \"inset\", \"primary\", \"primaryTypographyProps\", \"secondary\", \"secondaryTypographyProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport Typography from '../Typography';\nimport ListContext from '../List/ListContext';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport listItemTextClasses, { getListItemTextUtilityClass } from './listItemTextClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n inset,\n primary,\n secondary,\n dense\n } = ownerState;\n const slots = {\n root: ['root', inset && 'inset', dense && 'dense', primary && secondary && 'multiline'],\n primary: ['primary'],\n secondary: ['secondary']\n };\n return composeClasses(slots, getListItemTextUtilityClass, classes);\n};\nconst ListItemTextRoot = styled('div', {\n name: 'MuiListItemText',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${listItemTextClasses.primary}`]: styles.primary\n }, {\n [`& .${listItemTextClasses.secondary}`]: styles.secondary\n }, styles.root, ownerState.inset && styles.inset, ownerState.primary && ownerState.secondary && styles.multiline, ownerState.dense && styles.dense];\n }\n})(({\n ownerState\n}) => _extends({\n flex: '1 1 auto',\n minWidth: 0,\n marginTop: 4,\n marginBottom: 4\n}, ownerState.primary && ownerState.secondary && {\n marginTop: 6,\n marginBottom: 6\n}, ownerState.inset && {\n paddingLeft: 56\n}));\nconst ListItemText = /*#__PURE__*/React.forwardRef(function ListItemText(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiListItemText'\n });\n const {\n children,\n className,\n disableTypography = false,\n inset = false,\n primary: primaryProp,\n primaryTypographyProps,\n secondary: secondaryProp,\n secondaryTypographyProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n dense\n } = React.useContext(ListContext);\n let primary = primaryProp != null ? primaryProp : children;\n let secondary = secondaryProp;\n const ownerState = _extends({}, props, {\n disableTypography,\n inset,\n primary: !!primary,\n secondary: !!secondary,\n dense\n });\n const classes = useUtilityClasses(ownerState);\n if (primary != null && primary.type !== Typography && !disableTypography) {\n primary = /*#__PURE__*/_jsx(Typography, _extends({\n variant: dense ? 'body2' : 'body1',\n className: classes.primary,\n component: primaryTypographyProps != null && primaryTypographyProps.variant ? undefined : 'span',\n display: \"block\"\n }, primaryTypographyProps, {\n children: primary\n }));\n }\n if (secondary != null && secondary.type !== Typography && !disableTypography) {\n secondary = /*#__PURE__*/_jsx(Typography, _extends({\n variant: \"body2\",\n className: classes.secondary,\n color: \"text.secondary\",\n display: \"block\"\n }, secondaryTypographyProps, {\n children: secondary\n }));\n }\n return /*#__PURE__*/_jsxs(ListItemTextRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other, {\n children: [primary, secondary]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemText.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 * Alias for the `primary` prop.\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 * If `true`, the children won't be wrapped by a Typography component.\n * This can be useful to render an alternative Typography variant by wrapping\n * the `children` (or `primary`) text, and optional `secondary` text\n * with the Typography component.\n * @default false\n */\n disableTypography: PropTypes.bool,\n /**\n * If `true`, the children are indented.\n * This should be used if there is no left avatar or left icon.\n * @default false\n */\n inset: PropTypes.bool,\n /**\n * The main content element.\n */\n primary: PropTypes.node,\n /**\n * These props will be forwarded to the primary typography component\n * (as long as disableTypography is not `true`).\n */\n primaryTypographyProps: PropTypes.object,\n /**\n * The secondary content element.\n */\n secondary: PropTypes.node,\n /**\n * These props will be forwarded to the secondary typography component\n * (as long as disableTypography is not `true`).\n */\n secondaryTypographyProps: PropTypes.object,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListItemText;","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n var _muiName, _element$type;\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf( // For server components `muiName` is avaialble in element.type._payload.value.muiName\n // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45\n // eslint-disable-next-line no-underscore-dangle\n (_muiName = element.type.muiName) != null ? _muiName : (_element$type = element.type) == null || (_element$type = _element$type._payload) == null || (_element$type = _element$type.value) == null ? void 0 : _element$type.muiName) !== -1;\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Object","defineProperty","value","enumerable","get","_utils","createSvgIcon","getListItemUtilityClass","slot","generateUtilityClass","generateUtilityClasses","getListItemSecondaryActionClassesUtilityClass","_excluded","ListItemSecondaryActionRoot","styled","name","overridesResolver","props","styles","ownerState","root","disableGutters","_ref","_extends","position","right","top","transform","ListItemSecondaryAction","React","inProps","ref","useThemeProps","className","other","_objectWithoutPropertiesLoose","context","ListContext","classes","slots","composeClasses","useUtilityClasses","_jsx","clsx","muiName","_excluded2","ListItemRoot","dense","alignItems","alignItemsFlexStart","divider","gutters","disablePadding","padding","button","hasSecondaryAction","secondaryAction","_extends2","theme","display","justifyContent","textDecoration","width","boxSizing","textAlign","paddingTop","paddingBottom","paddingLeft","paddingRight","_defineProperty","concat","listItemButtonClasses","listItemClasses","focusVisible","backgroundColor","vars","palette","action","focus","selected","primary","mainChannel","selectedOpacity","alpha","main","focusOpacity","disabled","opacity","disabledOpacity","borderBottom","backgroundClip","transition","transitions","create","duration","shortest","hover","hoverOpacity","ListItemContainer","container","_props$alignItems","_props$autoFocus","autoFocus","_props$button","childrenProp","children","componentProp","component","_props$components","components","_props$componentsProp","componentsProps","_props$ContainerCompo","ContainerComponent","_props$ContainerProps","ContainerProps","ContainerClassName","_props$dense","_props$disabled","_props$disableGutters","_props$disablePadding","_props$divider","focusVisibleClassName","_props$selected","_props$slotProps","slotProps","_props$slots","childContext","listItemRef","useEnhancedEffect","current","toArray","length","isMuiElement","handleRef","useForkRef","Root","rootProps","componentProps","Component","ButtonBase","Provider","_jsxs","as","isHostComponent","pop","ListItemTextRoot","listItemTextClasses","secondary","inset","multiline","_ref3","flex","minWidth","marginTop","marginBottom","ListItemText","_props$disableTypogra","disableTypography","_props$inset","primaryProp","primaryTypographyProps","secondaryProp","secondaryTypographyProps","getListItemTextUtilityClass","type","Typography","variant","undefined","color","createChainedFunction","validator","reason","componentNameInError","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","element","muiNames","_muiName","_element$type","indexOf","_payload","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/711.aec34a54.chunk.js b/portal-ui/build/static/js/711.bc7ee5ed.chunk.js similarity index 92% rename from portal-ui/build/static/js/711.aec34a54.chunk.js rename to portal-ui/build/static/js/711.bc7ee5ed.chunk.js index 10f8cc4314..1e8d8a0a06 100644 --- a/portal-ui/build/static/js/711.aec34a54.chunk.js +++ b/portal-ui/build/static/js/711.bc7ee5ed.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[711],{50711:function(e,n,s){s.r(n);var t=s(29439),r=s(72791),o=s(9505),i=s(23508),l=s(29945),a=s(87995),c=s(81551),u=s(38442),d=s(56087),v=s(78687),b=s(80184);n.default=function(e){var n=e.closeDeleteModalAndRefresh,s=e.deleteOpen,h=e.selectedBucket,p=e.selectedObjects,f=e.versioning,j=(0,c.TL)(),g=(0,o.Z)((function(){return n(!0)}),(function(e){return j((0,a.Ih)(e))})),x=(0,t.Z)(g,2),m=x[0],y=x[1],C=(0,r.useState)(!1),T=(0,t.Z)(C,2),_=T[0],k=T[1],w=(0,r.useState)(!1),N=(0,t.Z)(w,2),O=N[0],S=N[1],A=(0,v.v9)((function(e){return e.objectBrowser.retentionConfig})),D=(0,u.F)([h],[d.Ft.S3_BYPASS_GOVERNANCE_RETENTION])&&"governance"===(null===A||void 0===A?void 0:A.mode);if(!p)return null;var F="Enabled"===(null===f||void 0===f?void 0:f.status)||"Suspended"===(null===f||void 0===f?void 0:f.status);return(0,b.jsx)(i.Z,{title:"Delete Objects",confirmText:"Delete",isOpen:s,titleIcon:(0,b.jsx)(l.NvT,{}),isLoading:m,onConfirm:function(){for(var e=[],n=0;n.\n\nimport React, { Fragment, useState } from \"react\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport useApi from \"../../../../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon, Switch } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { useSelector } from \"react-redux\";\nimport { BucketVersioningResponse } from \"api/consoleApi\";\n\ninterface IDeleteObjectProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedObjects: string[];\n selectedBucket: string;\n\n versioning: BucketVersioningResponse;\n}\n\nconst DeleteObject = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedObjects,\n\n versioning,\n}: IDeleteObjectProps) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n const [deleteVersions, setDeleteVersions] = useState(false);\n const [bypassGovernance, setBypassGovernance] = useState(false);\n\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig,\n );\n\n const canBypass =\n hasPermission(\n [selectedBucket],\n [IAM_SCOPES.S3_BYPASS_GOVERNANCE_RETENTION],\n ) && retentionConfig?.mode === \"governance\";\n\n if (!selectedObjects) {\n return null;\n }\n const onConfirmDelete = () => {\n let toSend = [];\n for (let i = 0; i < selectedObjects.length; i++) {\n if (selectedObjects[i].endsWith(\"/\")) {\n toSend.push({\n path: selectedObjects[i],\n versionID: \"\",\n recursive: true,\n });\n } else {\n toSend.push({\n path: selectedObjects[i],\n versionID: \"\",\n recursive: false,\n });\n }\n }\n\n if (toSend) {\n invokeDeleteApi(\n \"POST\",\n `/api/v1/buckets/${selectedBucket}/delete-objects?all_versions=${deleteVersions}${\n bypassGovernance ? \"&bypass=true\" : \"\"\n }`,\n toSend,\n );\n }\n };\n\n const isVersionedDelete =\n versioning?.status === \"Enabled\" || versioning?.status === \"Suspended\";\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the selected {selectedObjects.length}{\" \"}\n objects?{\" \"}\n {isVersionedDelete && (\n \n
    \n
    \n {\n setDeleteVersions(!deleteVersions);\n }}\n description=\"\"\n />\n {canBypass && deleteVersions && (\n \n \n {\n setBypassGovernance(!bypassGovernance);\n }}\n description=\"\"\n />\n
    \n \n )}\n {deleteVersions && (\n \n \n This will remove the objects as well as all of their\n versions,
    \n This action is irreversible.\n
    \n
    \n Are you sure you want to continue?\n \n )}\n \n )}\n \n }\n />\n );\n};\n\nexport default DeleteObject;\n"],"names":["_ref","closeDeleteModalAndRefresh","deleteOpen","selectedBucket","selectedObjects","versioning","dispatch","useAppDispatch","_useApi","useApi","err","setErrorSnackMessage","_useApi2","_slicedToArray","deleteLoading","invokeDeleteApi","_useState","useState","_useState2","deleteVersions","setDeleteVersions","_useState3","_useState4","bypassGovernance","setBypassGovernance","retentionConfig","useSelector","state","objectBrowser","canBypass","hasPermission","IAM_SCOPES","S3_BYPASS_GOVERNANCE_RETENTION","mode","isVersionedDelete","status","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","toSend","i","length","endsWith","push","path","versionID","recursive","concat","onClose","confirmationContent","_jsxs","Fragment","children","Switch","label","indicatorLabels","checked","value","id","name","onChange","e","description","style","marginTop","border","borderRadius","padding","backgroundColor","color"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/711.bc7ee5ed.chunk.js","mappings":"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","sources":["screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteMultipleObjects.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport useApi from \"../../../../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon, Switch } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { useSelector } from \"react-redux\";\nimport { BucketVersioningResponse } from \"api/consoleApi\";\n\ninterface IDeleteObjectProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedObjects: string[];\n selectedBucket: string;\n\n versioning: BucketVersioningResponse;\n}\n\nconst DeleteObject = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedObjects,\n\n versioning,\n}: IDeleteObjectProps) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n const [deleteVersions, setDeleteVersions] = useState(false);\n const [bypassGovernance, setBypassGovernance] = useState(false);\n\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig,\n );\n\n const canBypass =\n hasPermission(\n [selectedBucket],\n [IAM_SCOPES.S3_BYPASS_GOVERNANCE_RETENTION],\n ) && retentionConfig?.mode === \"governance\";\n\n if (!selectedObjects) {\n return null;\n }\n const onConfirmDelete = () => {\n let toSend = [];\n for (let i = 0; i < selectedObjects.length; i++) {\n if (selectedObjects[i].endsWith(\"/\")) {\n toSend.push({\n path: selectedObjects[i],\n versionID: \"\",\n recursive: true,\n });\n } else {\n toSend.push({\n path: selectedObjects[i],\n versionID: \"\",\n recursive: false,\n });\n }\n }\n\n if (toSend) {\n invokeDeleteApi(\n \"POST\",\n `/api/v1/buckets/${selectedBucket}/delete-objects?all_versions=${deleteVersions}${\n bypassGovernance ? \"&bypass=true\" : \"\"\n }`,\n toSend,\n );\n }\n };\n\n const isVersionedDelete =\n versioning?.status === \"Enabled\" || versioning?.status === \"Suspended\";\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the selected {selectedObjects.length}{\" \"}\n objects?{\" \"}\n {isVersionedDelete && (\n \n
    \n
    \n {\n setDeleteVersions(!deleteVersions);\n }}\n description=\"\"\n />\n {canBypass && deleteVersions && (\n \n \n {\n setBypassGovernance(!bypassGovernance);\n }}\n description=\"\"\n />\n \n \n )}\n {deleteVersions && (\n \n \n This will remove the objects as well as all of their\n versions,
    \n This action is irreversible.\n \n
    \n Are you sure you want to continue?\n
    \n )}\n
    \n )}\n
    \n }\n />\n );\n};\n\nexport default DeleteObject;\n"],"names":["_ref","closeDeleteModalAndRefresh","deleteOpen","selectedBucket","selectedObjects","versioning","dispatch","useAppDispatch","_useApi","useApi","err","setErrorSnackMessage","_useApi2","_slicedToArray","deleteLoading","invokeDeleteApi","_useState","useState","_useState2","deleteVersions","setDeleteVersions","_useState3","_useState4","bypassGovernance","setBypassGovernance","retentionConfig","useSelector","state","objectBrowser","canBypass","hasPermission","IAM_SCOPES","S3_BYPASS_GOVERNANCE_RETENTION","mode","isVersionedDelete","status","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","toSend","i","length","endsWith","push","path","versionID","recursive","concat","onClose","confirmationContent","_jsxs","Fragment","children","Switch","label","indicatorLabels","checked","value","id","name","onChange","e","description","style","marginTop","border","borderRadius","padding","backgroundColor","color"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/7134.fceb3ed9.chunk.js b/portal-ui/build/static/js/7134.1a5a0c34.chunk.js similarity index 96% rename from portal-ui/build/static/js/7134.fceb3ed9.chunk.js rename to portal-ui/build/static/js/7134.1a5a0c34.chunk.js index cd5924b7e3..76f11719f6 100644 --- a/portal-ui/build/static/js/7134.fceb3ed9.chunk.js +++ b/portal-ui/build/static/js/7134.1a5a0c34.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[7134],{17134:function(e,t,n){n.r(t);var s=n(29439),r=n(72791),i=n(29945),c=n(57689),o=n(81207),l=n(38442),a=n(56087),u=n(81551),d=n(87995),f=n(75578),x=n(59114),p=n(27454),K=n(47974),h=n(99670),j=n(80184),S=(0,f.Z)(r.lazy((function(){return Promise.all([n.e(911),n.e(4549),n.e(817),n.e(2032)]).then(n.bind(n,62032))})));t.default=function(){var e=(0,u.TL)(),t=(0,c.s0)(),n=(0,r.useState)(""),f=(0,s.Z)(n,2),y=f[0],m=f[1],_=(0,r.useState)(!1),k=(0,s.Z)(_,2),C=k[0],E=k[1],Z=(0,r.useState)(""),b=(0,s.Z)(Z,2),F=b[0],M=b[1],v=(0,r.useState)(!1),g=(0,s.Z)(v,2),I=g[0],T=g[1],A=(0,r.useState)([]),P=(0,s.Z)(A,2),Y=P[0],L=P[1],D=(0,l.F)(a.C3,[a.Ft.KMS_DELETE_KEY]),R=(0,l.F)(a.C3,[a.Ft.KMS_LIST_KEYS]);(0,r.useEffect)((function(){w()}),[]),(0,r.useEffect)((function(){T(!0)}),[y]),(0,r.useEffect)((function(){if(I)if(R){var t=""===y.trim()?"*":y.trim();o.Z.invoke("GET","/api/v1/kms/keys?pattern=".concat(t)).then((function(e){T(!1),L(e.results)})).catch((function(t){T(!1),e((0,d.Ih)(t))}))}else T(!1)}),[I,T,L,e,R,y]);var w=function(){T(!0)},z=[{type:"delete",onClick:function(e){E(!0),M(e)},sendOnlyId:!0,disableButtonFunction:function(){return!D}}];return(0,r.useEffect)((function(){e((0,d.Sc)("list_keys"))}),[e]),(0,j.jsxs)(r.Fragment,{children:[C&&(0,j.jsx)(S,{deleteOpen:C,selectedItem:F,endpoint:"/api/v1/kms/keys/",element:"Key",closeDeleteModalAndRefresh:function(e){E(!1),e&&w()}}),(0,j.jsx)(K.Z,{label:"Key Management Service Keys",actions:(0,j.jsx)(h.Z,{})}),(0,j.jsx)(i.Xgh,{children:(0,j.jsxs)(i.rjZ,{container:!0,children:[(0,j.jsxs)(i.rjZ,{item:!0,xs:12,sx:{display:"flex",alignItems:"center",justifyContent:"flex-end","& button":{marginLeft:"8px"}},children:[(0,j.jsx)(l.s,{scopes:[a.Ft.KMS_LIST_KEYS],resource:a.C3,errorProps:{disabled:!0},children:(0,j.jsx)(x.Z,{onChange:m,placeholder:"Search Keys with pattern",value:y})}),(0,j.jsx)(l.s,{scopes:[a.Ft.KMS_LIST_KEYS],resource:a.C3,errorProps:{disabled:!0},children:(0,j.jsx)(p.Z,{tooltip:"Refresh",children:(0,j.jsx)(i.zxk,{id:"refresh-keys",variant:"regular",icon:(0,j.jsx)(i.DuK,{}),onClick:function(){return T(!0)}})})}),(0,j.jsx)(l.s,{scopes:[a.Ft.KMS_IMPORT_KEY],resource:a.C3,errorProps:{disabled:!0},children:(0,j.jsx)(p.Z,{tooltip:"Import Key",children:(0,j.jsx)(i.zxk,{id:"import-key",variant:"regular",icon:(0,j.jsx)(i.rG2,{}),onClick:function(){t(a.gA.KMS_KEYS_IMPORT)}})})}),(0,j.jsx)(l.s,{scopes:[a.Ft.KMS_CREATE_KEY],resource:a.C3,errorProps:{disabled:!0},children:(0,j.jsx)(p.Z,{tooltip:"Create Key",children:(0,j.jsx)(i.zxk,{id:"create-key",label:"Create Key",variant:"callAction",icon:(0,j.jsx)(i.dtP,{}),onClick:function(){return t(a.gA.KMS_KEYS_ADD)}})})})]}),(0,j.jsx)(i.rjZ,{item:!0,xs:12,children:(0,j.jsx)(l.s,{scopes:[a.Ft.KMS_LIST_KEYS],resource:a.C3,errorProps:{disabled:!0},children:(0,j.jsx)(i.wQF,{itemActions:z,columns:[{label:"Name",elementKey:"name"},{label:"Created By",elementKey:"createdBy"},{label:"Created At",elementKey:"createdAt"}],isLoading:I,records:Y,entityName:"Keys",idField:"name"})})})]})})]})}}}]); -//# sourceMappingURL=7134.fceb3ed9.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[7134],{17134:function(e,t,n){n.r(t);var s=n(29439),r=n(72791),i=n(29945),c=n(57689),o=n(81207),l=n(38442),a=n(56087),u=n(44690),d=n(87995),f=n(75578),x=n(59114),p=n(27454),K=n(47974),h=n(99670),j=n(80184),S=(0,f.Z)(r.lazy((function(){return Promise.all([n.e(911),n.e(4549),n.e(817),n.e(2032)]).then(n.bind(n,62032))})));t.default=function(){var e=(0,u.TL)(),t=(0,c.s0)(),n=(0,r.useState)(""),f=(0,s.Z)(n,2),y=f[0],m=f[1],_=(0,r.useState)(!1),k=(0,s.Z)(_,2),C=k[0],E=k[1],Z=(0,r.useState)(""),b=(0,s.Z)(Z,2),F=b[0],M=b[1],v=(0,r.useState)(!1),g=(0,s.Z)(v,2),I=g[0],T=g[1],A=(0,r.useState)([]),P=(0,s.Z)(A,2),Y=P[0],L=P[1],D=(0,l.F)(a.C3,[a.Ft.KMS_DELETE_KEY]),R=(0,l.F)(a.C3,[a.Ft.KMS_LIST_KEYS]);(0,r.useEffect)((function(){w()}),[]),(0,r.useEffect)((function(){T(!0)}),[y]),(0,r.useEffect)((function(){if(I)if(R){var t=""===y.trim()?"*":y.trim();o.Z.invoke("GET","/api/v1/kms/keys?pattern=".concat(t)).then((function(e){T(!1),L(e.results)})).catch((function(t){T(!1),e((0,d.Ih)(t))}))}else T(!1)}),[I,T,L,e,R,y]);var w=function(){T(!0)},z=[{type:"delete",onClick:function(e){E(!0),M(e)},sendOnlyId:!0,disableButtonFunction:function(){return!D}}];return(0,r.useEffect)((function(){e((0,d.Sc)("list_keys"))}),[e]),(0,j.jsxs)(r.Fragment,{children:[C&&(0,j.jsx)(S,{deleteOpen:C,selectedItem:F,endpoint:"/api/v1/kms/keys/",element:"Key",closeDeleteModalAndRefresh:function(e){E(!1),e&&w()}}),(0,j.jsx)(K.Z,{label:"Key Management Service Keys",actions:(0,j.jsx)(h.Z,{})}),(0,j.jsx)(i.Xgh,{children:(0,j.jsxs)(i.rjZ,{container:!0,children:[(0,j.jsxs)(i.rjZ,{item:!0,xs:12,sx:{display:"flex",alignItems:"center",justifyContent:"flex-end","& button":{marginLeft:"8px"}},children:[(0,j.jsx)(l.s,{scopes:[a.Ft.KMS_LIST_KEYS],resource:a.C3,errorProps:{disabled:!0},children:(0,j.jsx)(x.Z,{onChange:m,placeholder:"Search Keys with pattern",value:y})}),(0,j.jsx)(l.s,{scopes:[a.Ft.KMS_LIST_KEYS],resource:a.C3,errorProps:{disabled:!0},children:(0,j.jsx)(p.Z,{tooltip:"Refresh",children:(0,j.jsx)(i.zxk,{id:"refresh-keys",variant:"regular",icon:(0,j.jsx)(i.DuK,{}),onClick:function(){return T(!0)}})})}),(0,j.jsx)(l.s,{scopes:[a.Ft.KMS_IMPORT_KEY],resource:a.C3,errorProps:{disabled:!0},children:(0,j.jsx)(p.Z,{tooltip:"Import Key",children:(0,j.jsx)(i.zxk,{id:"import-key",variant:"regular",icon:(0,j.jsx)(i.rG2,{}),onClick:function(){t(a.gA.KMS_KEYS_IMPORT)}})})}),(0,j.jsx)(l.s,{scopes:[a.Ft.KMS_CREATE_KEY],resource:a.C3,errorProps:{disabled:!0},children:(0,j.jsx)(p.Z,{tooltip:"Create Key",children:(0,j.jsx)(i.zxk,{id:"create-key",label:"Create Key",variant:"callAction",icon:(0,j.jsx)(i.dtP,{}),onClick:function(){return t(a.gA.KMS_KEYS_ADD)}})})})]}),(0,j.jsx)(i.rjZ,{item:!0,xs:12,children:(0,j.jsx)(l.s,{scopes:[a.Ft.KMS_LIST_KEYS],resource:a.C3,errorProps:{disabled:!0},children:(0,j.jsx)(i.wQF,{itemActions:z,columns:[{label:"Name",elementKey:"name"},{label:"Created By",elementKey:"createdBy"},{label:"Created At",elementKey:"createdAt"}],isLoading:I,records:Y,entityName:"Keys",idField:"name"})})})]})})]})}}}]); +//# sourceMappingURL=7134.1a5a0c34.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/7134.fceb3ed9.chunk.js.map b/portal-ui/build/static/js/7134.1a5a0c34.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/7134.fceb3ed9.chunk.js.map rename to portal-ui/build/static/js/7134.1a5a0c34.chunk.js.map index 14719beed9..8930f16927 100644 --- a/portal-ui/build/static/js/7134.fceb3ed9.chunk.js.map +++ b/portal-ui/build/static/js/7134.1a5a0c34.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/7134.fceb3ed9.chunk.js","mappings":"6RA8CMA,GAAiBC,EAAAA,EAAAA,GACrBC,EAAAA,MAAW,kBAAM,0EAA0B,KAiM7C,UA9LiB,WACf,IAAMC,GAAWC,EAAAA,EAAAA,MACXC,GAAWC,EAAAA,EAAAA,MAEjBC,GAA4BC,EAAAA,EAAAA,UAAiB,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAzCI,EAAMF,EAAA,GAAEG,EAASH,EAAA,GACxBI,GAAoCL,EAAAA,EAAAA,WAAkB,GAAMM,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAArDE,EAAUD,EAAA,GAAEE,EAAaF,EAAA,GAChCG,GAAsCT,EAAAA,EAAAA,UAAiB,IAAGU,GAAAR,EAAAA,EAAAA,GAAAO,EAAA,GAAnDE,EAAWD,EAAA,GAAEE,EAAcF,EAAA,GAClCG,GAA8Bb,EAAAA,EAAAA,WAAkB,GAAMc,GAAAZ,EAAAA,EAAAA,GAAAW,EAAA,GAA/CE,EAAOD,EAAA,GAAEE,EAAUF,EAAA,GAC1BG,GAA8BjB,EAAAA,EAAAA,UAAa,IAAGkB,GAAAhB,EAAAA,EAAAA,GAAAe,EAAA,GAAvCE,EAAOD,EAAA,GAAEE,EAAUF,EAAA,GAEpBG,GAAYC,EAAAA,EAAAA,GAAcC,EAAAA,GAAqB,CACnDC,EAAAA,GAAWC,iBAGPC,GAAcJ,EAAAA,EAAAA,GAAcC,EAAAA,GAAqB,CACrDC,EAAAA,GAAWG,iBAGbC,EAAAA,EAAAA,YAAU,WACRC,GACF,GAAG,KAEHD,EAAAA,EAAAA,YAAU,WACRZ,GAAW,EACb,GAAG,CAACb,KAEJyB,EAAAA,EAAAA,YAAU,WACR,GAAIb,EACF,GAAIW,EAAa,CACf,IAAII,EAA4B,KAAlB3B,EAAO4B,OAAgB,IAAM5B,EAAO4B,OAClDC,EAAAA,EACGC,OAAO,MAAM,4BAADC,OAA8BJ,IAC1CK,MAAK,SAACC,GACLpB,GAAW,GACXI,EAAWgB,EAAIC,QACjB,IACCC,OAAM,SAACC,GACNvB,GAAW,GACXrB,GAAS6C,EAAAA,EAAAA,IAAqBD,GAChC,GACJ,MACEvB,GAAW,EAGjB,GAAG,CAACD,EAASC,EAAYI,EAAYzB,EAAU+B,EAAavB,IAE5D,IAAM0B,EAAe,WACnBb,GAAW,EACb,EAeMyB,EAAe,CACnB,CACEC,KAAM,SACNC,QAhBqB,SAACC,GACxBpC,GAAc,GACdI,EAAegC,EACjB,EAcIC,YAAY,EACZC,sBAAuB,kBAAOzB,CAAS,IAQ3C,OAJAO,EAAAA,EAAAA,YAAU,WACRjC,GAASoD,EAAAA,EAAAA,IAAY,aACvB,GAAG,CAACpD,KAGFqD,EAAAA,EAAAA,MAACtD,EAAAA,SAAc,CAAAuD,SAAA,CACZ1C,IACC2C,EAAAA,EAAAA,KAAC1D,EAAc,CACbe,WAAYA,EACZ4C,aAAcxC,EACdyC,SAAU,oBACVC,QAAS,MACTC,2BA7B2B,SAACC,GAClC/C,GAAc,GAEV+C,GACF1B,GAEJ,KA0BIqB,EAAAA,EAAAA,KAACM,EAAAA,EAAiB,CAChBC,MAAM,8BACNC,SAASR,EAAAA,EAAAA,KAACS,EAAAA,EAAQ,OAGpBT,EAAAA,EAAAA,KAACU,EAAAA,IAAU,CAAAX,UACTD,EAAAA,EAAAA,MAACa,EAAAA,IAAI,CAACC,WAAS,EAAAb,SAAA,EACbD,EAAAA,EAAAA,MAACa,EAAAA,IAAI,CACHE,MAAI,EACJC,GAAI,GACJC,GAAI,CACFC,QAAS,OACTC,WAAY,SACZC,eAAgB,WAChB,WAAY,CACVC,WAAY,QAEdpB,SAAA,EAEFC,EAAAA,EAAAA,KAACoB,EAAAA,EAAe,CACdC,OAAQ,CAAC/C,EAAAA,GAAWG,eACpB6C,SAAUjD,EAAAA,GACVkD,WAAY,CAAEC,UAAU,GAAOzB,UAE/BC,EAAAA,EAAAA,KAACyB,EAAAA,EAAS,CACRC,SAAUxE,EACVyE,YAAY,2BACZC,MAAO3E,OAIX+C,EAAAA,EAAAA,KAACoB,EAAAA,EAAe,CACdC,OAAQ,CAAC/C,EAAAA,GAAWG,eACpB6C,SAAUjD,EAAAA,GACVkD,WAAY,CAAEC,UAAU,GAAOzB,UAE/BC,EAAAA,EAAAA,KAAC6B,EAAAA,EAAc,CAACC,QAAS,UAAU/B,UACjCC,EAAAA,EAAAA,KAAC+B,EAAAA,IAAM,CACLC,GAAI,eACJC,QAAQ,UACRC,MAAMlC,EAAAA,EAAAA,KAACmC,EAAAA,IAAW,IAClB1C,QAAS,kBAAM3B,GAAW,EAAK,SAIrCkC,EAAAA,EAAAA,KAACoB,EAAAA,EAAe,CACdC,OAAQ,CAAC/C,EAAAA,GAAW8D,gBACpBd,SAAUjD,EAAAA,GACVkD,WAAY,CAAEC,UAAU,GAAOzB,UAE/BC,EAAAA,EAAAA,KAAC6B,EAAAA,EAAc,CAACC,QAAS,aAAa/B,UACpCC,EAAAA,EAAAA,KAAC+B,EAAAA,IAAM,CACLC,GAAI,aACJC,QAAS,UACTC,MAAMlC,EAAAA,EAAAA,KAACqC,EAAAA,IAAU,IACjB5C,QAAS,WACP9C,EAAS2F,EAAAA,GAAUC,gBACrB,SAINvC,EAAAA,EAAAA,KAACoB,EAAAA,EAAe,CACdC,OAAQ,CAAC/C,EAAAA,GAAWkE,gBACpBlB,SAAUjD,EAAAA,GACVkD,WAAY,CAAEC,UAAU,GAAOzB,UAE/BC,EAAAA,EAAAA,KAAC6B,EAAAA,EAAc,CAACC,QAAS,aAAa/B,UACpCC,EAAAA,EAAAA,KAAC+B,EAAAA,IAAM,CACLC,GAAI,aACJzB,MAAO,aACP0B,QAAS,aACTC,MAAMlC,EAAAA,EAAAA,KAACyC,EAAAA,IAAO,IACdhD,QAAS,kBAAM9C,EAAS2F,EAAAA,GAAUI,aAAa,YAKvD1C,EAAAA,EAAAA,KAACW,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAGf,UAChBC,EAAAA,EAAAA,KAACoB,EAAAA,EAAe,CACdC,OAAQ,CAAC/C,EAAAA,GAAWG,eACpB6C,SAAUjD,EAAAA,GACVkD,WAAY,CAAEC,UAAU,GAAOzB,UAE/BC,EAAAA,EAAAA,KAAC2C,EAAAA,IAAS,CACRC,YAAarD,EACbsD,QAAS,CACP,CAAEtC,MAAO,OAAQuC,WAAY,QAC7B,CAAEvC,MAAO,aAAcuC,WAAY,aACnC,CAAEvC,MAAO,aAAcuC,WAAY,cAErCC,UAAWlF,EACXI,QAASA,EACT+E,WAAW,OACXC,QAAQ,oBAQxB,C","sources":["screens/Console/KMS/ListKeys.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport {\n AddIcon,\n Button,\n DataTable,\n Grid,\n PageLayout,\n RefreshIcon,\n UploadIcon,\n} from \"mds\";\nimport { useNavigate } from \"react-router-dom\";\nimport api from \"../../../common/api\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../common/SecureComponent\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_PAGES,\n IAM_SCOPES,\n} from \"../../../common/SecureComponent/permissions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { useAppDispatch } from \"../../../store\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport SearchBox from \"../Common/SearchBox\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst DeleteKMSModal = withSuspense(\n React.lazy(() => import(\"./DeleteKMSModal\")),\n);\n\nconst ListKeys = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [filter, setFilter] = useState(\"\");\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedKey, setSelectedKey] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [records, setRecords] = useState<[]>([]);\n\n const deleteKey = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.KMS_DELETE_KEY,\n ]);\n\n const displayKeys = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.KMS_LIST_KEYS,\n ]);\n\n useEffect(() => {\n fetchRecords();\n }, []);\n\n useEffect(() => {\n setLoading(true);\n }, [filter]);\n\n useEffect(() => {\n if (loading) {\n if (displayKeys) {\n let pattern = filter.trim() === \"\" ? \"*\" : filter.trim();\n api\n .invoke(\"GET\", `/api/v1/kms/keys?pattern=${pattern}`)\n .then((res) => {\n setLoading(false);\n setRecords(res.results);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setErrorSnackMessage(err));\n });\n } else {\n setLoading(false);\n }\n }\n }, [loading, setLoading, setRecords, dispatch, displayKeys, filter]);\n\n const fetchRecords = () => {\n setLoading(true);\n };\n\n const confirmDeleteKey = (key: string) => {\n setDeleteOpen(true);\n setSelectedKey(key);\n };\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n\n if (refresh) {\n fetchRecords();\n }\n };\n\n const tableActions = [\n {\n type: \"delete\",\n onClick: confirmDeleteKey,\n sendOnlyId: true,\n disableButtonFunction: () => !deleteKey,\n },\n ];\n\n useEffect(() => {\n dispatch(setHelpName(\"list_keys\"));\n }, [dispatch]);\n\n return (\n \n {deleteOpen && (\n \n )}\n }\n />\n\n \n \n \n \n \n \n\n \n \n }\n onClick={() => setLoading(true)}\n />\n \n \n \n \n }\n onClick={() => {\n navigate(IAM_PAGES.KMS_KEYS_IMPORT);\n }}\n />\n \n \n \n \n }\n onClick={() => navigate(IAM_PAGES.KMS_KEYS_ADD)}\n />\n \n \n \n \n \n \n \n \n
    \n \n
    \n );\n};\n\nexport default ListKeys;\n"],"names":["DeleteKMSModal","withSuspense","React","dispatch","useAppDispatch","navigate","useNavigate","_useState","useState","_useState2","_slicedToArray","filter","setFilter","_useState3","_useState4","deleteOpen","setDeleteOpen","_useState5","_useState6","selectedKey","setSelectedKey","_useState7","_useState8","loading","setLoading","_useState9","_useState10","records","setRecords","deleteKey","hasPermission","CONSOLE_UI_RESOURCE","IAM_SCOPES","KMS_DELETE_KEY","displayKeys","KMS_LIST_KEYS","useEffect","fetchRecords","pattern","trim","api","invoke","concat","then","res","results","catch","err","setErrorSnackMessage","tableActions","type","onClick","key","sendOnlyId","disableButtonFunction","setHelpName","_jsxs","children","_jsx","selectedItem","endpoint","element","closeDeleteModalAndRefresh","refresh","PageHeaderWrapper","label","actions","HelpMenu","PageLayout","Grid","container","item","xs","sx","display","alignItems","justifyContent","marginLeft","SecureComponent","scopes","resource","errorProps","disabled","SearchBox","onChange","placeholder","value","TooltipWrapper","tooltip","Button","id","variant","icon","RefreshIcon","KMS_IMPORT_KEY","UploadIcon","IAM_PAGES","KMS_KEYS_IMPORT","KMS_CREATE_KEY","AddIcon","KMS_KEYS_ADD","DataTable","itemActions","columns","elementKey","isLoading","entityName","idField"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/7134.1a5a0c34.chunk.js","mappings":"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","sources":["screens/Console/KMS/ListKeys.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport {\n AddIcon,\n Button,\n DataTable,\n Grid,\n PageLayout,\n RefreshIcon,\n UploadIcon,\n} from \"mds\";\nimport { useNavigate } from \"react-router-dom\";\nimport api from \"../../../common/api\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../common/SecureComponent\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_PAGES,\n IAM_SCOPES,\n} from \"../../../common/SecureComponent/permissions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { useAppDispatch } from \"../../../store\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../systemSlice\";\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport SearchBox from \"../Common/SearchBox\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst DeleteKMSModal = withSuspense(\n React.lazy(() => import(\"./DeleteKMSModal\")),\n);\n\nconst ListKeys = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [filter, setFilter] = useState(\"\");\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedKey, setSelectedKey] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [records, setRecords] = useState<[]>([]);\n\n const deleteKey = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.KMS_DELETE_KEY,\n ]);\n\n const displayKeys = hasPermission(CONSOLE_UI_RESOURCE, [\n IAM_SCOPES.KMS_LIST_KEYS,\n ]);\n\n useEffect(() => {\n fetchRecords();\n }, []);\n\n useEffect(() => {\n setLoading(true);\n }, [filter]);\n\n useEffect(() => {\n if (loading) {\n if (displayKeys) {\n let pattern = filter.trim() === \"\" ? \"*\" : filter.trim();\n api\n .invoke(\"GET\", `/api/v1/kms/keys?pattern=${pattern}`)\n .then((res) => {\n setLoading(false);\n setRecords(res.results);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setErrorSnackMessage(err));\n });\n } else {\n setLoading(false);\n }\n }\n }, [loading, setLoading, setRecords, dispatch, displayKeys, filter]);\n\n const fetchRecords = () => {\n setLoading(true);\n };\n\n const confirmDeleteKey = (key: string) => {\n setDeleteOpen(true);\n setSelectedKey(key);\n };\n\n const closeDeleteModalAndRefresh = (refresh: boolean) => {\n setDeleteOpen(false);\n\n if (refresh) {\n fetchRecords();\n }\n };\n\n const tableActions = [\n {\n type: \"delete\",\n onClick: confirmDeleteKey,\n sendOnlyId: true,\n disableButtonFunction: () => !deleteKey,\n },\n ];\n\n useEffect(() => {\n dispatch(setHelpName(\"list_keys\"));\n }, [dispatch]);\n\n return (\n \n {deleteOpen && (\n \n )}\n }\n />\n\n \n \n \n \n \n \n\n \n \n }\n onClick={() => setLoading(true)}\n />\n \n \n \n \n }\n onClick={() => {\n navigate(IAM_PAGES.KMS_KEYS_IMPORT);\n }}\n />\n \n \n \n \n }\n onClick={() => navigate(IAM_PAGES.KMS_KEYS_ADD)}\n />\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default ListKeys;\n"],"names":["DeleteKMSModal","withSuspense","React","dispatch","useAppDispatch","navigate","useNavigate","_useState","useState","_useState2","_slicedToArray","filter","setFilter","_useState3","_useState4","deleteOpen","setDeleteOpen","_useState5","_useState6","selectedKey","setSelectedKey","_useState7","_useState8","loading","setLoading","_useState9","_useState10","records","setRecords","deleteKey","hasPermission","CONSOLE_UI_RESOURCE","IAM_SCOPES","KMS_DELETE_KEY","displayKeys","KMS_LIST_KEYS","useEffect","fetchRecords","pattern","trim","api","invoke","concat","then","res","results","catch","err","setErrorSnackMessage","tableActions","type","onClick","key","sendOnlyId","disableButtonFunction","setHelpName","_jsxs","children","_jsx","selectedItem","endpoint","element","closeDeleteModalAndRefresh","refresh","PageHeaderWrapper","label","actions","HelpMenu","PageLayout","Grid","container","item","xs","sx","display","alignItems","justifyContent","marginLeft","SecureComponent","scopes","resource","errorProps","disabled","SearchBox","onChange","placeholder","value","TooltipWrapper","tooltip","Button","id","variant","icon","RefreshIcon","KMS_IMPORT_KEY","UploadIcon","IAM_PAGES","KMS_KEYS_IMPORT","KMS_CREATE_KEY","AddIcon","KMS_KEYS_ADD","DataTable","itemActions","columns","elementKey","isLoading","entityName","idField"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/7374.f3d5edc4.chunk.js b/portal-ui/build/static/js/7374.f3d5edc4.chunk.js deleted file mode 100644 index 8f33c54b3f..0000000000 --- a/portal-ui/build/static/js/7374.f3d5edc4.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[7374],{25643:function(e,t,n){n.d(t,{r:function(){return i}});n(72791);var o=n(99779),r=n(80184),i=[{label:"Access Key",elementKey:"accessKey"},{label:"Expiry",elementKey:"expiration",renderFunction:function(e){if(e){var t=o.ou.fromISO(e).toUTC().toFormat("y/M/d hh:mm:ss z");return(0,r.jsx)("span",{title:t,children:t})}return""}},{label:"Status",elementKey:"accountStatus",renderFunction:function(e){return"off"===e?"Disabled":"Enabled"}},{label:"Name",elementKey:"name"},{label:"Description",elementKey:"description"}]},14048:function(e,t,n){var o=n(74165),r=n(15861),i=n(29439),a=n(72791),l=n(29945),c=n(31776),s=n(82342),u=n(92217),p=n(81551),d=n(45248),f=n(87995),m=n(56028),h=n(23814),y=n(80184);t.Z=function(e){var t=e.open,n=e.selectedAccessKey,b=e.closeModalAndRefresh,g=(0,p.TL)(),x=(0,a.useState)(!1),v=(0,i.Z)(x,2),S=v[0],k=v[1],_=(0,a.useState)(""),E=(0,i.Z)(_,2),C=E[0],q=E[1];(0,a.useEffect)((function(){if(!S&&""!==n){var e=(0,d.LL)(n);k(!0),c.h.serviceAccounts.getServiceAccountPolicy(e).then((function(e){k(!1),q(e.data)})).catch((function(e){k(!1),g((0,f.zb)((0,s.g)(e)))}))}}),[n]);return(0,y.jsx)(m.Z,{title:"Access Key Policy",modalOpen:t,onClose:function(){b()},titleIcon:(0,y.jsx)(l.QXQ,{}),children:(0,y.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){var t;t=C,e.preventDefault(),c.h.serviceAccounts.setServiceAccountPolicy((0,d.LL)(n),{policy:t}).then((function(){b()})).catch(function(){var e=(0,r.Z)((0,o.Z)().mark((function e(t){var n;return(0,o.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.json();case 2:n=e.sent,g((0,f.Ih)((0,s.g)(n)));case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}())},children:(0,y.jsxs)(l.rjZ,{container:!0,children:[(0,y.jsx)(l.rjZ,{item:!0,xs:12,children:(0,y.jsx)(u.Z,{label:"Access Key Policy",value:C,onChange:function(e){q(e)},editorHeight:"350px"})}),(0,y.jsxs)(l.rjZ,{item:!0,xs:12,sx:h.ID.modalButtonBar,children:[(0,y.jsx)(l.zxk,{id:"cancel-sa-policy",type:"button",variant:"regular",onClick:function(){b()},disabled:S,label:"Cancel"}),(0,y.jsx)(l.zxk,{id:"save-sa-policy",type:"submit",variant:"callAction",color:"primary",disabled:S,label:"Set"})]})]})})})}},75578:function(e,t,n){var o=n(1413),r=n(72791),i=n(80184);t.Z=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(n){return(0,i.jsx)(r.Suspense,{fallback:t,children:(0,i.jsx)(e,(0,o.Z)({},n))})}}},92217:function(e,t,n){var o=n(72791),r=n(29945),i=n(78029),a=n.n(i),l=n(27454),c=n(80184);t.Z=function(e){var t=e.value,n=e.label,i=void 0===n?"":n,s=e.tooltip,u=void 0===s?"":s,p=e.mode,d=void 0===p?"json":p,f=e.onChange,m=e.editorHeight,h=void 0===m?250:m;return(0,c.jsx)(r.pq4,{value:t,onChange:function(e){return f(e)},mode:d,tooltip:u,editorHeight:h,label:i,helpTools:(0,c.jsx)(o.Fragment,{children:(0,c.jsx)(l.Z,{tooltip:"Copy to Clipboard",children:(0,c.jsx)(a(),{text:t,children:(0,c.jsx)(r.zxk,{type:"button",id:"copy-code-mirror",icon:(0,c.jsx)(r.TIy,{}),color:"primary",variant:"regular"})})})})})}},58493:function(e,t,n){n.d(t,{DD:function(){return g},DP:function(){return b},F_:function(){return v},_0:function(){return x},bx:function(){return y}});var o=n(4942),r=n(1413),i=n(93433),a=(n(72791),n(87569)),l=n(61809),c=n(31292),s=n(98095),u=n(67055),p=n(21141),d=n(36909),f=n(13901),m=n(29945),h=n(80184),y=[{icon:(0,h.jsx)(a.Z,{}),configuration_id:"region",configuration_label:"Region"},{icon:(0,h.jsx)(l.Z,{}),configuration_id:"compression",configuration_label:"Compression"},{icon:(0,h.jsx)(c.Z,{}),configuration_id:"api",configuration_label:"API"},{icon:(0,h.jsx)(s.Z,{}),configuration_id:"heal",configuration_label:"Heal"},{icon:(0,h.jsx)(u.Z,{}),configuration_id:"scanner",configuration_label:"Scanner"},{icon:(0,h.jsx)(p.Z,{}),configuration_id:"etcd",configuration_label:"Etcd"},{icon:(0,h.jsx)(f.Z,{}),configuration_id:"logger_webhook",configuration_label:"Logger Webhook"},{icon:(0,h.jsx)(d.Z,{}),configuration_id:"audit_webhook",configuration_label:"Audit Webhook"},{icon:(0,h.jsx)(m.I$E,{className:"MuiSvgIcon-root MuiSvgIcon-fontSizeMedium MuiTab-iconWrapper css-i4bv87-MuiSvgIcon-root",style:{width:24,height:24}}),configuration_id:"audit_kafka",configuration_label:"Audit Kafka"}],b={region:[{name:"name",required:!0,label:"Server Location",tooltip:'Name of the location of the server e.g. "us-west-rack2"',type:"string",placeholder:"e.g. us-west-rack-2"},{name:"comment",required:!1,label:"Comment",tooltip:"You can add a comment to this setting",type:"comment",placeholder:"Enter custom notes if any"}],compression:[{name:"extensions",required:!1,label:"Extensions",tooltip:'Extensions to compress e.g. ".txt", ".log" or ".csv" - you can write one per field',type:"csv",placeholder:"Enter an Extension",withBorder:!0},{name:"mime_types",required:!1,label:"Mime Types",tooltip:'Mime types e.g. "text/*", "application/json" or "application/xml" - you can write one per field',type:"csv",placeholder:"Enter a Mime Type",withBorder:!0}],api:[{name:"requests_max",required:!1,label:"Requests Max",tooltip:"Maximum number of concurrent requests, e.g. '1600'",type:"number",placeholder:"Enter Requests Max"},{name:"cors_allow_origin",required:!1,label:"Cors Allow Origin",tooltip:"List of origins allowed for CORS requests",type:"csv",placeholder:"Enter allowed origin e.g. https://example.com"},{name:"replication_workers",required:!1,label:"Replication Workers",tooltip:"Number of replication workers, defaults to 100",type:"number",placeholder:"Enter Replication Workers"},{name:"replication_failed_workers",required:!1,label:"Replication Failed Workers",tooltip:"Number of replication workers for recently failed replicas, defaults to 4",type:"number",placeholder:"Enter Replication Failed Workers"}],heal:[{name:"bitrotscan",required:!1,label:"Bitrot Scan",tooltip:"Perform bitrot scan on disks when checking objects during scanner",type:"on|off"},{name:"max_sleep",required:!1,label:"Max Sleep",tooltip:"Maximum sleep duration between objects to slow down heal operation, e.g. 2s",type:"duration",placeholder:"Enter Max Sleep Duration"},{name:"max_io",required:!1,label:"Max IO",tooltip:"Maximum IO requests allowed between objects to slow down heal operation, e.g. 3",type:"number",placeholder:"Enter Max IO"}],scanner:[{name:"delay",required:!1,label:"Delay Multiplier",tooltip:"Scanner delay multiplier, defaults to '10.0'",type:"number",placeholder:"Enter Delay"},{name:"max_wait",required:!1,label:"Max Wait",tooltip:"Maximum wait time between operations, defaults to '15s'",type:"duration",placeholder:"Enter Max Wait"},{name:"cycle",required:!1,label:"Cycle",tooltip:"Time duration between scanner cycles, defaults to '1m'",type:"duration",placeholder:"Enter Cycle"}],etcd:[{name:"endpoints",required:!0,label:"Endpoints",tooltip:'List of etcd endpoints e.g. "http://localhost:2379" - you can write one per field',type:"csv",placeholder:"Enter Endpoint"},{name:"path_prefix",required:!1,label:"Path Prefix",tooltip:'Namespace prefix to isolate tenants e.g. "customer1/"',type:"string",placeholder:"Enter Path Prefix"},{name:"coredns_path",required:!1,label:"Coredns Path",tooltip:'Shared bucket DNS records, default is "/skydns"',type:"string",placeholder:"Enter Coredns Path"},{name:"client_cert",required:!1,label:"Client Cert",tooltip:"Client cert for mTLS authentication",type:"string",placeholder:"Enter Client Cert"},{name:"client_cert_key",required:!1,label:"Client Cert Key",tooltip:"Client cert key for mTLS authentication",type:"string",placeholder:"Enter Client Cert Key"},{name:"comment",required:!1,label:"Comment",tooltip:"You can add a comment to this setting",type:"comment",multiline:!0,placeholder:"Enter custom notes if any"}],logger_webhook:[{name:"endpoint",required:!0,label:"Endpoint",type:"string",placeholder:"Enter Endpoint"},{name:"auth_token",required:!0,label:"Auth Token",type:"string",placeholder:"Enter Auth Token"}],audit_webhook:[{name:"endpoint",required:!0,label:"Endpoint",type:"string",placeholder:"Enter Endpoint"},{name:"auth_token",required:!0,label:"Auth Token",type:"string",placeholder:"Enter Auth Token"}],audit_kafka:[{name:"enable",required:!1,label:"Enable",tooltip:"Enable audit_kafka target",type:"on|off",customValueProcess:function(e){return""===e||"on"===e?"on":"off"}},{name:"brokers",required:!0,label:"Brokers",type:"csv",placeholder:"Enter Kafka Broker"},{name:"topic",required:!1,label:"Topic",type:"string",placeholder:"Enter Kafka Topic",tooltip:"Kafka topic used for bucket notifications"},{name:"sasl",required:!1,label:"Use SASL",tooltip:"Enable SASL (Simple Authentication and Security Layer) authentication",type:"on|off"},{name:"sasl_username",required:!1,label:"SASL Username",type:"string",placeholder:"Enter SASL Username",tooltip:"Username for SASL/PLAIN or SASL/SCRAM authentication"},{name:"sasl_password",required:!1,label:"SASL Password",type:"password",placeholder:"Enter SASL Password",tooltip:"Password for SASL/PLAIN or SASL/SCRAM authentication"},{name:"sasl_mechanism",required:!1,label:"SASL Mechanism",type:"string",placeholder:"Enter SASL Mechanism",tooltip:"SASL authentication mechanism"},{name:"tls",required:!1,label:"Use TLS",tooltip:"Enable TLS (Transport Layer Security)",type:"on|off"},{name:"tls_skip_verify",required:!1,label:"Skip TLS Verification",tooltip:"Trust server TLS without verification",type:"on|off"},{name:"client_tls_cert",required:!1,label:"Client Cert",tooltip:"Client cert for mTLS authentication",type:"string",placeholder:"Enter Client Cert"},{name:"client_tls_key",required:!1,label:"Client Cert Key",tooltip:"Client cert key for mTLS authentication",type:"string",placeholder:"Enter Client Cert Key"},{name:"tls_client_auth",required:!1,label:"TLS Client Auth",tooltip:"ClientAuth determines the Kafka server's policy for TLS client authorization",type:"string"},{name:"version",required:!1,label:"Version",tooltip:"Specify the version of the Kafka cluster",type:"string"}]},g=function(e){return e.filter((function(e){return""!==e.value}))},x=function(e,t,n){var o=e.target,r=o.value,a=o.checked,l=(0,i.Z)(n);return a?l.push(r):l=l.filter((function(e){return e!==r})),t(l),l},v=function(e){var t={};return e.forEach((function(e){if(e.env_override){var n={value:e.env_override.value,overrideEnv:e.env_override.name};t=(0,r.Z)((0,r.Z)({},t),{},(0,o.Z)({},e.key,n))}})),t}},18303:function(e,t,n){var o=n(29439),r=n(72791),i=n(29945),a=n(9505),l=n(23508),c=n(87995),s=n(81551),u=n(80184);t.Z=function(e){var t=e.closeDeleteModalAndRefresh,n=e.deleteOpen,p=e.selectedSAs,d=(0,s.TL)(),f=(0,a.Z)((function(){return t(!0)}),(function(e){return d((0,c.Ih)(e))})),m=(0,o.Z)(f,2),h=m[0],y=m[1];if(!p)return null;return(0,u.jsx)(l.Z,{title:"Delete Access Keys",confirmText:"Delete",isOpen:n,titleIcon:(0,u.jsx)(i.NvT,{}),isLoading:h,onConfirm:function(){y("DELETE","/api/v1/service-accounts/delete-multi",p)},onClose:function(){return t(!1)},confirmationContent:(0,u.jsxs)(r.Fragment,{children:["Are you sure you want to delete the selected ",p.length," ","Access Keys?"," "]})})}},21639:function(e,t,n){n.d(t,{KE:function(){return a},LQ:function(){return o},V2:function(){return i},g4:function(){return r}});var o=function(e,t){if(e.accessKey&&t.accessKey){if(e.accessKey>t.accessKey)return 1;if(e.accessKeyt.name?1:e.namet?1:et.policy?1:e.policy.\n\nimport React from \"react\";\nimport { DateTime } from \"luxon\";\n\nexport const ACCOUNT_TABLE_COLUMNS = [\n { label: \"Access Key\", elementKey: \"accessKey\" },\n {\n label: \"Expiry\",\n elementKey: \"expiration\",\n renderFunction: (expTime: string) => {\n if (expTime) {\n const fmtDate = DateTime.fromISO(expTime)\n .toUTC()\n .toFormat(\"y/M/d hh:mm:ss z\");\n\n return {fmtDate};\n }\n return \"\";\n },\n },\n {\n label: \"Status\",\n elementKey: \"accountStatus\",\n renderFunction: (status: string) => {\n if (status === \"off\") {\n return \"Disabled\";\n } else {\n return \"Enabled\";\n }\n },\n },\n { label: \"Name\", elementKey: \"name\" },\n { label: \"Description\", elementKey: \"description\" },\n];\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { Button, ChangeAccessPolicyIcon, Grid } from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport { ApiError } from \"api/consoleApi\";\nimport { useAppDispatch } from \"store\";\nimport { encodeURLString } from \"common/utils\";\nimport { setErrorSnackMessage, setModalErrorSnackMessage } from \"systemSlice\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\n\ninterface IServiceAccountPolicyProps {\n open: boolean;\n selectedAccessKey: string | null;\n closeModalAndRefresh: () => void;\n}\n\nconst ServiceAccountPolicy = ({\n open,\n selectedAccessKey,\n closeModalAndRefresh,\n}: IServiceAccountPolicyProps) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [policyDefinition, setPolicyDefinition] = useState(\"\");\n useEffect(() => {\n if (!loading && selectedAccessKey !== \"\") {\n const sourceAccKey = encodeURLString(selectedAccessKey);\n setLoading(true);\n api.serviceAccounts\n .getServiceAccountPolicy(sourceAccKey)\n .then((res) => {\n setLoading(false);\n setPolicyDefinition(res.data);\n })\n .catch((err) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err)));\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedAccessKey]);\n\n const setPolicy = (event: React.FormEvent, newPolicy: string) => {\n event.preventDefault();\n api.serviceAccounts\n .setServiceAccountPolicy(encodeURLString(selectedAccessKey), {\n policy: newPolicy,\n })\n .then(() => {\n closeModalAndRefresh();\n })\n .catch(async (res) => {\n const err = (await res.json()) as ApiError;\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n });\n };\n\n return (\n {\n closeModalAndRefresh();\n }}\n titleIcon={}\n >\n ) => {\n setPolicy(e, policyDefinition);\n }}\n >\n \n \n {\n setPolicyDefinition(value);\n }}\n editorHeight={\"350px\"}\n />\n \n \n {\n closeModalAndRefresh();\n }}\n disabled={loading}\n label={\"Cancel\"}\n />\n \n \n \n \n \n );\n};\n\nexport default ServiceAccountPolicy;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

    (\n WrappedComponent: ComponentType

    ,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Button, CodeEditor, CopyIcon } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n onChange: (value: string) => any;\n editorHeight?: string | number;\n}\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n onChange,\n editorHeight = 250,\n}: ICodeWrapper) => {\n return (\n onChange(value)}\n mode={mode}\n tooltip={tooltip}\n editorHeight={editorHeight}\n label={label}\n helpTools={\n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n }\n />\n );\n};\n\nexport default CodeMirrorWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport PublicIcon from \"@mui/icons-material/Public\";\nimport CompressIcon from \"@mui/icons-material/Compress\";\nimport CodeIcon from \"@mui/icons-material/Code\";\nimport LocalHospitalIcon from \"@mui/icons-material/LocalHospital\";\nimport FindReplaceIcon from \"@mui/icons-material/FindReplace\";\nimport VpnKeyIcon from \"@mui/icons-material/VpnKey\";\nimport PendingActionsIcon from \"@mui/icons-material/PendingActions\";\nimport CallToActionIcon from \"@mui/icons-material/CallToAction\";\nimport { IElement, IElementValue, IOverrideEnv, OverrideValue } from \"./types\";\nimport { LogsIcon } from \"mds\";\n\nexport const configurationElements: IElement[] = [\n {\n icon: ,\n configuration_id: \"region\",\n configuration_label: \"Region\",\n },\n {\n icon: ,\n configuration_id: \"compression\",\n configuration_label: \"Compression\",\n },\n {\n icon: ,\n configuration_id: \"api\",\n configuration_label: \"API\",\n },\n {\n icon: ,\n configuration_id: \"heal\",\n configuration_label: \"Heal\",\n },\n {\n icon: ,\n configuration_id: \"scanner\",\n configuration_label: \"Scanner\",\n },\n {\n icon: ,\n configuration_id: \"etcd\",\n configuration_label: \"Etcd\",\n },\n {\n icon: ,\n configuration_id: \"logger_webhook\",\n configuration_label: \"Logger Webhook\",\n },\n {\n icon: ,\n configuration_id: \"audit_webhook\",\n configuration_label: \"Audit Webhook\",\n },\n {\n icon: (\n \n ),\n configuration_id: \"audit_kafka\",\n configuration_label: \"Audit Kafka\",\n },\n];\n\nexport const fieldsConfigurations: any = {\n region: [\n {\n name: \"name\",\n required: true,\n label: \"Server Location\",\n tooltip: 'Name of the location of the server e.g. \"us-west-rack2\"',\n type: \"string\",\n placeholder: \"e.g. us-west-rack-2\",\n },\n {\n name: \"comment\",\n required: false,\n label: \"Comment\",\n tooltip: \"You can add a comment to this setting\",\n type: \"comment\",\n placeholder: \"Enter custom notes if any\",\n },\n ],\n compression: [\n {\n name: \"extensions\",\n required: false,\n label: \"Extensions\",\n tooltip:\n 'Extensions to compress e.g. \".txt\", \".log\" or \".csv\" - you can write one per field',\n type: \"csv\",\n placeholder: \"Enter an Extension\",\n withBorder: true,\n },\n {\n name: \"mime_types\",\n required: false,\n label: \"Mime Types\",\n tooltip:\n 'Mime types e.g. \"text/*\", \"application/json\" or \"application/xml\" - you can write one per field',\n type: \"csv\",\n placeholder: \"Enter a Mime Type\",\n withBorder: true,\n },\n ],\n api: [\n {\n name: \"requests_max\",\n required: false,\n label: \"Requests Max\",\n tooltip: \"Maximum number of concurrent requests, e.g. '1600'\",\n type: \"number\",\n placeholder: \"Enter Requests Max\",\n },\n {\n name: \"cors_allow_origin\",\n required: false,\n label: \"Cors Allow Origin\",\n tooltip: \"List of origins allowed for CORS requests\",\n type: \"csv\",\n placeholder: \"Enter allowed origin e.g. https://example.com\",\n },\n {\n name: \"replication_workers\",\n required: false,\n label: \"Replication Workers\",\n tooltip: \"Number of replication workers, defaults to 100\",\n type: \"number\",\n placeholder: \"Enter Replication Workers\",\n },\n {\n name: \"replication_failed_workers\",\n required: false,\n label: \"Replication Failed Workers\",\n tooltip:\n \"Number of replication workers for recently failed replicas, defaults to 4\",\n type: \"number\",\n placeholder: \"Enter Replication Failed Workers\",\n },\n ],\n heal: [\n {\n name: \"bitrotscan\",\n required: false,\n label: \"Bitrot Scan\",\n tooltip:\n \"Perform bitrot scan on disks when checking objects during scanner\",\n type: \"on|off\",\n },\n {\n name: \"max_sleep\",\n required: false,\n label: \"Max Sleep\",\n tooltip:\n \"Maximum sleep duration between objects to slow down heal operation, e.g. 2s\",\n type: \"duration\",\n placeholder: \"Enter Max Sleep Duration\",\n },\n {\n name: \"max_io\",\n required: false,\n label: \"Max IO\",\n tooltip:\n \"Maximum IO requests allowed between objects to slow down heal operation, e.g. 3\",\n type: \"number\",\n placeholder: \"Enter Max IO\",\n },\n ],\n scanner: [\n {\n name: \"delay\",\n required: false,\n label: \"Delay Multiplier\",\n tooltip: \"Scanner delay multiplier, defaults to '10.0'\",\n type: \"number\",\n placeholder: \"Enter Delay\",\n },\n {\n name: \"max_wait\",\n required: false,\n label: \"Max Wait\",\n tooltip: \"Maximum wait time between operations, defaults to '15s'\",\n type: \"duration\",\n placeholder: \"Enter Max Wait\",\n },\n {\n name: \"cycle\",\n required: false,\n label: \"Cycle\",\n tooltip: \"Time duration between scanner cycles, defaults to '1m'\",\n type: \"duration\",\n placeholder: \"Enter Cycle\",\n },\n ],\n etcd: [\n {\n name: \"endpoints\",\n required: true,\n label: \"Endpoints\",\n tooltip:\n 'List of etcd endpoints e.g. \"http://localhost:2379\" - you can write one per field',\n type: \"csv\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"path_prefix\",\n required: false,\n label: \"Path Prefix\",\n tooltip: 'Namespace prefix to isolate tenants e.g. \"customer1/\"',\n type: \"string\",\n placeholder: \"Enter Path Prefix\",\n },\n {\n name: \"coredns_path\",\n required: false,\n label: \"Coredns Path\",\n tooltip: 'Shared bucket DNS records, default is \"/skydns\"',\n type: \"string\",\n placeholder: \"Enter Coredns Path\",\n },\n {\n name: \"client_cert\",\n required: false,\n label: \"Client Cert\",\n tooltip: \"Client cert for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_cert_key\",\n required: false,\n label: \"Client Cert Key\",\n tooltip: \"Client cert key for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert Key\",\n },\n {\n name: \"comment\",\n required: false,\n label: \"Comment\",\n tooltip: \"You can add a comment to this setting\",\n type: \"comment\",\n multiline: true,\n placeholder: \"Enter custom notes if any\",\n },\n ],\n logger_webhook: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n type: \"string\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n required: true,\n label: \"Auth Token\",\n type: \"string\",\n placeholder: \"Enter Auth Token\",\n },\n ],\n audit_webhook: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n type: \"string\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n required: true,\n label: \"Auth Token\",\n type: \"string\",\n placeholder: \"Enter Auth Token\",\n },\n ],\n audit_kafka: [\n {\n name: \"enable\",\n required: false,\n label: \"Enable\",\n tooltip: \"Enable audit_kafka target\",\n type: \"on|off\",\n customValueProcess: (origValue: string) => {\n return origValue === \"\" || origValue === \"on\" ? \"on\" : \"off\";\n },\n },\n {\n name: \"brokers\",\n required: true,\n label: \"Brokers\",\n type: \"csv\",\n placeholder: \"Enter Kafka Broker\",\n },\n {\n name: \"topic\",\n required: false,\n label: \"Topic\",\n type: \"string\",\n placeholder: \"Enter Kafka Topic\",\n tooltip: \"Kafka topic used for bucket notifications\",\n },\n {\n name: \"sasl\",\n required: false,\n label: \"Use SASL\",\n tooltip:\n \"Enable SASL (Simple Authentication and Security Layer) authentication\",\n type: \"on|off\",\n },\n {\n name: \"sasl_username\",\n required: false,\n label: \"SASL Username\",\n type: \"string\",\n placeholder: \"Enter SASL Username\",\n tooltip: \"Username for SASL/PLAIN or SASL/SCRAM authentication\",\n },\n {\n name: \"sasl_password\",\n required: false,\n label: \"SASL Password\",\n type: \"password\",\n placeholder: \"Enter SASL Password\",\n tooltip: \"Password for SASL/PLAIN or SASL/SCRAM authentication\",\n },\n {\n name: \"sasl_mechanism\",\n required: false,\n label: \"SASL Mechanism\",\n type: \"string\",\n placeholder: \"Enter SASL Mechanism\",\n tooltip: \"SASL authentication mechanism\",\n },\n {\n name: \"tls\",\n required: false,\n label: \"Use TLS\",\n tooltip: \"Enable TLS (Transport Layer Security)\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n required: false,\n label: \"Skip TLS Verification\",\n tooltip: \"Trust server TLS without verification\",\n type: \"on|off\",\n },\n {\n name: \"client_tls_cert\",\n required: false,\n label: \"Client Cert\",\n tooltip: \"Client cert for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_tls_key\",\n required: false,\n label: \"Client Cert Key\",\n tooltip: \"Client cert key for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert Key\",\n },\n {\n name: \"tls_client_auth\",\n required: false,\n label: \"TLS Client Auth\",\n tooltip:\n \"ClientAuth determines the Kafka server's policy for TLS client authorization\",\n type: \"string\",\n },\n {\n name: \"version\",\n required: false,\n label: \"Version\",\n tooltip: \"Specify the version of the Kafka cluster\",\n type: \"string\",\n },\n ],\n};\n\nexport const removeEmptyFields = (formFields: IElementValue[]) => {\n const nonEmptyFields = formFields.filter((field) => field.value !== \"\");\n\n return nonEmptyFields;\n};\n\nexport const selectSAs = (\n e: React.ChangeEvent,\n setSelectedSAs: Function,\n selectedSAs: string[],\n) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selectedSAs]; // We clone the selectedSAs array\n if (checked) {\n // If the user has checked this field we need to push this to selectedSAs\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedSAs(elements);\n return elements;\n};\n\nexport const overrideFields = (formFields: IElementValue[]): IOverrideEnv => {\n let overrideReturn: IOverrideEnv = {};\n\n formFields.forEach((envItem) => {\n // it has override values, we construct the value\n if (envItem.env_override) {\n const value: OverrideValue = {\n value: envItem.env_override.value,\n overrideEnv: envItem.env_override.name,\n };\n\n overrideReturn = { ...overrideReturn, [envItem.key]: value };\n }\n });\n\n return overrideReturn;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 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 { ConfirmDeleteIcon } from \"mds\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport useApi from \"../../../screens/Console/Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../../screens/Console/Common/ModalWrapper/ConfirmDialog\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\n\ninterface IDeleteMultiSAsProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedSAs: string[];\n}\n\nconst DeleteMultipleSAs = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedSAs,\n}: IDeleteMultiSAsProps) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => closeDeleteModalAndRefresh(false);\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n if (!selectedSAs) {\n return null;\n }\n const onConfirmDelete = () => {\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/service-accounts/delete-multi`,\n selectedSAs,\n );\n };\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the selected {selectedSAs.length}{\" \"}\n Access Keys?{\" \"}\n \n }\n />\n );\n};\n\nexport default DeleteMultipleSAs;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Policy, User } from \"api/consoleApi\";\n\ninterface policyDetailsInterface {\n policy: string;\n}\n\nexport const usersSort = (a: User, b: User) => {\n if (a.accessKey && b.accessKey) {\n if (a.accessKey > b.accessKey) {\n return 1;\n }\n if (a.accessKey < b.accessKey) {\n return -1;\n }\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policySort = (a: Policy, b: Policy) => {\n if (a.name! > b.name!) {\n return 1;\n }\n if (a.name! < b.name!) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const stringSort = (a: string, b: string) => {\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policyDetailsSort = (\n a: policyDetailsInterface,\n b: policyDetailsInterface,\n) => {\n if (a.policy > b.policy) {\n return 1;\n }\n if (a.policy < b.policy) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n"],"names":["ACCOUNT_TABLE_COLUMNS","label","elementKey","renderFunction","expTime","fmtDate","DateTime","fromISO","toUTC","toFormat","_jsx","title","children","status","_ref","open","selectedAccessKey","closeModalAndRefresh","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","loading","setLoading","_useState3","_useState4","policyDefinition","setPolicyDefinition","useEffect","sourceAccKey","encodeURLString","api","serviceAccounts","getServiceAccountPolicy","then","res","data","catch","err","setModalErrorSnackMessage","errorToHandler","ModalWrapper","modalOpen","onClose","titleIcon","ChangeAccessPolicyIcon","noValidate","autoComplete","onSubmit","e","newPolicy","preventDefault","setServiceAccountPolicy","policy","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","json","sent","setErrorSnackMessage","stop","_x","apply","arguments","_jsxs","Grid","container","item","xs","CodeMirrorWrapper","value","onChange","editorHeight","sx","modalStyleUtils","modalButtonBar","Button","id","type","variant","onClick","disabled","color","WrappedComponent","fallback","length","undefined","props","Suspense","_objectSpread","_ref$label","_ref$tooltip","tooltip","_ref$mode","mode","_ref$editorHeight","CodeEditor","helpTools","Fragment","TooltipWrapper","CopyToClipboard","text","icon","CopyIcon","configurationElements","PublicIcon","configuration_id","configuration_label","CompressIcon","CodeIcon","LocalHospitalIcon","FindReplaceIcon","VpnKeyIcon","CallToActionIcon","PendingActionsIcon","LogsIcon","className","style","width","height","fieldsConfigurations","region","name","required","placeholder","compression","withBorder","heal","scanner","etcd","multiline","logger_webhook","audit_webhook","audit_kafka","customValueProcess","origValue","removeEmptyFields","formFields","filter","field","selectSAs","setSelectedSAs","selectedSAs","targetD","target","checked","elements","_toConsumableArray","push","element","overrideFields","overrideReturn","forEach","envItem","env_override","overrideEnv","_defineProperty","key","closeDeleteModalAndRefresh","deleteOpen","_useApi","useApi","_useApi2","deleteLoading","invokeDeleteApi","ConfirmDialog","confirmText","isOpen","ConfirmDeleteIcon","isLoading","onConfirm","confirmationContent","usersSort","a","b","accessKey","policySort","stringSort","policyDetailsSort"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/7494.bad4da61.chunk.js b/portal-ui/build/static/js/7494.883411d0.chunk.js similarity index 96% rename from portal-ui/build/static/js/7494.bad4da61.chunk.js rename to portal-ui/build/static/js/7494.883411d0.chunk.js index db1c49a9b4..cebbb9e65a 100644 --- a/portal-ui/build/static/js/7494.bad4da61.chunk.js +++ b/portal-ui/build/static/js/7494.883411d0.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[7494],{47494:function(e,t,n){n.r(t);var c=n(29439),s=n(72791),i=n(29945),u=n(78687),o=n(57689),r=n(31776),l=n(82342),a=n(56087),d=n(38442),f=n(87995),_=n(9859),C=n(81551),S=n(75578),T=n(27454),p=n(80184),F=(0,S.Z)(s.lazy((function(){return n.e(4619).then(n.bind(n,94619))}))),b=(0,S.Z)(s.lazy((function(){return n.e(8990).then(n.bind(n,8990))}))),x=(0,S.Z)(s.lazy((function(){return n.e(8455).then(n.bind(n,58455))})));t.default=function(){var e=(0,C.TL)(),t=(0,o.UO)(),n=(0,u.v9)(_.HQ),S=(0,s.useState)(!0),E=(0,c.Z)(S,2),h=E[0],A=E[1],k=(0,s.useState)([]),O=(0,c.Z)(k,2),m=O[0],P=O[1],Z=(0,s.useState)(!1),I=(0,c.Z)(Z,2),j=I[0],U=I[1],B=(0,s.useState)(!1),y=(0,c.Z)(B,2),L=y[0],K=y[1],N=(0,s.useState)(""),v=(0,c.Z)(N,2),G=v[0],Y=v[1],R=(0,s.useState)(!1),g=(0,c.Z)(R,2),w=g[0],z=g[1],D=(0,s.useState)(""),Q=(0,c.Z)(D,2),H=Q[0],W=Q[1],q=(0,s.useState)(""),J=(0,c.Z)(q,2),M=J[0],V=J[1],X=t.bucketName||"",$=(0,d.F)(X,[a.Ft.S3_GET_BUCKET_POLICY,a.Ft.S3_GET_ACTIONS]),ee=(0,d.F)(X,[a.Ft.S3_DELETE_BUCKET_POLICY]),te=(0,d.F)(X,[a.Ft.S3_PUT_BUCKET_POLICY,a.Ft.S3_PUT_ACTIONS]);(0,s.useEffect)((function(){n&&A(!0)}),[n,A]);var ne=[{type:"delete",disableButtonFunction:function(){return!ee},onClick:function(e){K(!0),Y(e.prefix)}},{type:"view",disableButtonFunction:function(){return!te},onClick:function(e){W(e.prefix),V(e.access),z(!0)}}];(0,s.useEffect)((function(){e((0,f.Sc)("bucket_detail_prefix"))}),[]),(0,s.useEffect)((function(){h&&($?r.h.bucket.listAccessRulesWithBucket(X).then((function(e){P(e.data.accessRules),A(!1)})).catch((function(t){e((0,f.Ih)((0,l.g)(t))),A(!1)})):A(!1))}),[h,e,$,X]);return(0,p.jsxs)(s.Fragment,{children:[j&&(0,p.jsx)(F,{modalOpen:j,onClose:function(){U(!1),A(!0)},bucket:X}),L&&(0,p.jsx)(b,{modalOpen:L,onClose:function(){K(!1),A(!0)},bucket:X,toDelete:G}),w&&(0,p.jsx)(x,{modalOpen:w,onClose:function(){z(!1),A(!0)},bucket:X,toEdit:H,initial:M}),(0,p.jsx)(i.NZf,{separator:!0,sx:{marginBottom:15},actions:(0,p.jsx)(d.s,{scopes:[a.Ft.S3_GET_BUCKET_POLICY,a.Ft.S3_PUT_BUCKET_POLICY,a.Ft.S3_GET_ACTIONS,a.Ft.S3_PUT_ACTIONS],resource:X,matchAll:!0,errorProps:{disabled:!0},children:(0,p.jsx)(T.Z,{tooltip:"Add Access Rule",children:(0,p.jsx)(i.zxk,{id:"add-bucket-access-rule",onClick:function(){U(!0)},label:"Add Access Rule",icon:(0,p.jsx)(i.dtP,{}),variant:"callAction"})})}),children:"Anonymous Access"}),(0,p.jsx)(d.s,{scopes:[a.Ft.S3_GET_BUCKET_POLICY,a.Ft.S3_GET_ACTIONS],resource:X,errorProps:{disabled:!0},children:(0,p.jsx)(i.wQF,{itemActions:ne,columns:[{label:"Prefix",elementKey:"prefix",renderFunction:function(e){return e||"/"}},{label:"Access",elementKey:"access"}],isLoading:h,records:m||[],entityName:"Access Rules",idField:"prefix"})})]})}}}]); -//# sourceMappingURL=7494.bad4da61.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[7494],{47494:function(e,t,n){n.r(t);var c=n(29439),s=n(72791),i=n(29945),u=n(78687),o=n(57689),r=n(31776),l=n(82342),a=n(56087),d=n(38442),f=n(87995),_=n(9859),C=n(44690),S=n(75578),T=n(27454),p=n(80184),F=(0,S.Z)(s.lazy((function(){return n.e(4619).then(n.bind(n,94619))}))),b=(0,S.Z)(s.lazy((function(){return n.e(8990).then(n.bind(n,8990))}))),x=(0,S.Z)(s.lazy((function(){return n.e(8455).then(n.bind(n,58455))})));t.default=function(){var e=(0,C.TL)(),t=(0,o.UO)(),n=(0,u.v9)(_.HQ),S=(0,s.useState)(!0),E=(0,c.Z)(S,2),h=E[0],A=E[1],k=(0,s.useState)([]),O=(0,c.Z)(k,2),m=O[0],P=O[1],Z=(0,s.useState)(!1),I=(0,c.Z)(Z,2),j=I[0],U=I[1],B=(0,s.useState)(!1),y=(0,c.Z)(B,2),L=y[0],K=y[1],N=(0,s.useState)(""),v=(0,c.Z)(N,2),G=v[0],Y=v[1],R=(0,s.useState)(!1),g=(0,c.Z)(R,2),w=g[0],z=g[1],D=(0,s.useState)(""),Q=(0,c.Z)(D,2),H=Q[0],W=Q[1],q=(0,s.useState)(""),J=(0,c.Z)(q,2),M=J[0],V=J[1],X=t.bucketName||"",$=(0,d.F)(X,[a.Ft.S3_GET_BUCKET_POLICY,a.Ft.S3_GET_ACTIONS]),ee=(0,d.F)(X,[a.Ft.S3_DELETE_BUCKET_POLICY]),te=(0,d.F)(X,[a.Ft.S3_PUT_BUCKET_POLICY,a.Ft.S3_PUT_ACTIONS]);(0,s.useEffect)((function(){n&&A(!0)}),[n,A]);var ne=[{type:"delete",disableButtonFunction:function(){return!ee},onClick:function(e){K(!0),Y(e.prefix)}},{type:"view",disableButtonFunction:function(){return!te},onClick:function(e){W(e.prefix),V(e.access),z(!0)}}];(0,s.useEffect)((function(){e((0,f.Sc)("bucket_detail_prefix"))}),[]),(0,s.useEffect)((function(){h&&($?r.h.bucket.listAccessRulesWithBucket(X).then((function(e){P(e.data.accessRules),A(!1)})).catch((function(t){e((0,f.Ih)((0,l.g)(t))),A(!1)})):A(!1))}),[h,e,$,X]);return(0,p.jsxs)(s.Fragment,{children:[j&&(0,p.jsx)(F,{modalOpen:j,onClose:function(){U(!1),A(!0)},bucket:X}),L&&(0,p.jsx)(b,{modalOpen:L,onClose:function(){K(!1),A(!0)},bucket:X,toDelete:G}),w&&(0,p.jsx)(x,{modalOpen:w,onClose:function(){z(!1),A(!0)},bucket:X,toEdit:H,initial:M}),(0,p.jsx)(i.NZf,{separator:!0,sx:{marginBottom:15},actions:(0,p.jsx)(d.s,{scopes:[a.Ft.S3_GET_BUCKET_POLICY,a.Ft.S3_PUT_BUCKET_POLICY,a.Ft.S3_GET_ACTIONS,a.Ft.S3_PUT_ACTIONS],resource:X,matchAll:!0,errorProps:{disabled:!0},children:(0,p.jsx)(T.Z,{tooltip:"Add Access Rule",children:(0,p.jsx)(i.zxk,{id:"add-bucket-access-rule",onClick:function(){U(!0)},label:"Add Access Rule",icon:(0,p.jsx)(i.dtP,{}),variant:"callAction"})})}),children:"Anonymous Access"}),(0,p.jsx)(d.s,{scopes:[a.Ft.S3_GET_BUCKET_POLICY,a.Ft.S3_GET_ACTIONS],resource:X,errorProps:{disabled:!0},children:(0,p.jsx)(i.wQF,{itemActions:ne,columns:[{label:"Prefix",elementKey:"prefix",renderFunction:function(e){return e||"/"}},{label:"Access",elementKey:"access"}],isLoading:h,records:m||[],entityName:"Access Rules",idField:"prefix"})})]})}}}]); +//# sourceMappingURL=7494.883411d0.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/7494.bad4da61.chunk.js.map b/portal-ui/build/static/js/7494.883411d0.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/7494.bad4da61.chunk.js.map rename to portal-ui/build/static/js/7494.883411d0.chunk.js.map index 13ad3bd8cc..7131c07322 100644 --- a/portal-ui/build/static/js/7494.bad4da61.chunk.js.map +++ b/portal-ui/build/static/js/7494.883411d0.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/7494.bad4da61.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/AccessRulePanel.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { AddIcon, Button, DataTable, SectionTitle } from \"mds\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router-dom\";\nimport { api } from \"api\";\nimport { AccessRule as IAccessRule } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport { IAM_SCOPES } from \"../../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../common/SecureComponent\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../../systemSlice\";\nimport { selBucketDetailsLoading } from \"./bucketDetailsSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport withSuspense from \"../../Common/Components/withSuspense\";\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 AccessRule = () => {\n const dispatch = useAppDispatch();\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 dispatch(setHelpName(\"bucket_detail_prefix\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (loadingAccessRules) {\n if (displayAccessRules) {\n api.bucket\n .listAccessRulesWithBucket(bucketName)\n .then((res) => {\n setAccessRules(res.data.accessRules);\n setLoadingAccessRules(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(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 \n {\n setAddAccessRuleOpen(true);\n }}\n label={\"Add Access Rule\"}\n icon={}\n variant={\"callAction\"}\n />\n \n \n }\n >\n Anonymous Access\n \n \n {\n return prefix || \"/\";\n },\n },\n { label: \"Access\", elementKey: \"access\" },\n ]}\n isLoading={loadingAccessRules}\n records={accessRules || []}\n entityName=\"Access Rules\"\n idField=\"prefix\"\n />\n \n \n );\n};\n\nexport default AccessRule;\n"],"names":["AddAccessRuleModal","withSuspense","React","DeleteAccessRuleModal","EditAccessRuleModal","dispatch","useAppDispatch","params","useParams","loadingBucket","useSelector","selBucketDetailsLoading","_useState","useState","_useState2","_slicedToArray","loadingAccessRules","setLoadingAccessRules","_useState3","_useState4","accessRules","setAccessRules","_useState5","_useState6","addAccessRuleOpen","setAddAccessRuleOpen","_useState7","_useState8","deleteAccessRuleOpen","setDeleteAccessRuleOpen","_useState9","_useState10","accessRuleToDelete","setAccessRuleToDelete","_useState11","_useState12","editAccessRuleOpen","setEditAccessRuleOpen","_useState13","_useState14","accessRuleToEdit","setAccessRuleToEdit","_useState15","_useState16","initialAccess","setInitialAccess","bucketName","displayAccessRules","hasPermission","IAM_SCOPES","S3_GET_BUCKET_POLICY","S3_GET_ACTIONS","deleteAccessRules","S3_DELETE_BUCKET_POLICY","editAccessRules","S3_PUT_BUCKET_POLICY","S3_PUT_ACTIONS","useEffect","AccessRuleActions","type","disableButtonFunction","onClick","accessRule","prefix","access","setHelpName","api","bucket","listAccessRulesWithBucket","then","res","data","catch","err","setErrorSnackMessage","errorToHandler","_jsxs","Fragment","children","_jsx","modalOpen","onClose","toDelete","toEdit","initial","SectionTitle","separator","sx","marginBottom","actions","SecureComponent","scopes","resource","matchAll","errorProps","disabled","TooltipWrapper","tooltip","Button","id","label","icon","AddIcon","variant","DataTable","itemActions","columns","elementKey","renderFunction","isLoading","records","entityName","idField"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/7494.883411d0.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/AccessRulePanel.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { AddIcon, Button, DataTable, SectionTitle } from \"mds\";\nimport { useSelector } from \"react-redux\";\nimport { useParams } from \"react-router-dom\";\nimport { api } from \"api\";\nimport { AccessRule as IAccessRule } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport { IAM_SCOPES } from \"../../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../common/SecureComponent\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../../systemSlice\";\nimport { selBucketDetailsLoading } from \"./bucketDetailsSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport withSuspense from \"../../Common/Components/withSuspense\";\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 AccessRule = () => {\n const dispatch = useAppDispatch();\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 dispatch(setHelpName(\"bucket_detail_prefix\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (loadingAccessRules) {\n if (displayAccessRules) {\n api.bucket\n .listAccessRulesWithBucket(bucketName)\n .then((res) => {\n setAccessRules(res.data.accessRules);\n setLoadingAccessRules(false);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(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 \n {\n setAddAccessRuleOpen(true);\n }}\n label={\"Add Access Rule\"}\n icon={}\n variant={\"callAction\"}\n />\n \n \n }\n >\n Anonymous Access\n \n \n {\n return prefix || \"/\";\n },\n },\n { label: \"Access\", elementKey: \"access\" },\n ]}\n isLoading={loadingAccessRules}\n records={accessRules || []}\n entityName=\"Access Rules\"\n idField=\"prefix\"\n />\n \n \n );\n};\n\nexport default AccessRule;\n"],"names":["AddAccessRuleModal","withSuspense","React","DeleteAccessRuleModal","EditAccessRuleModal","dispatch","useAppDispatch","params","useParams","loadingBucket","useSelector","selBucketDetailsLoading","_useState","useState","_useState2","_slicedToArray","loadingAccessRules","setLoadingAccessRules","_useState3","_useState4","accessRules","setAccessRules","_useState5","_useState6","addAccessRuleOpen","setAddAccessRuleOpen","_useState7","_useState8","deleteAccessRuleOpen","setDeleteAccessRuleOpen","_useState9","_useState10","accessRuleToDelete","setAccessRuleToDelete","_useState11","_useState12","editAccessRuleOpen","setEditAccessRuleOpen","_useState13","_useState14","accessRuleToEdit","setAccessRuleToEdit","_useState15","_useState16","initialAccess","setInitialAccess","bucketName","displayAccessRules","hasPermission","IAM_SCOPES","S3_GET_BUCKET_POLICY","S3_GET_ACTIONS","deleteAccessRules","S3_DELETE_BUCKET_POLICY","editAccessRules","S3_PUT_BUCKET_POLICY","S3_PUT_ACTIONS","useEffect","AccessRuleActions","type","disableButtonFunction","onClick","accessRule","prefix","access","setHelpName","api","bucket","listAccessRulesWithBucket","then","res","data","catch","err","setErrorSnackMessage","errorToHandler","_jsxs","Fragment","children","_jsx","modalOpen","onClose","toDelete","toEdit","initial","SectionTitle","separator","sx","marginBottom","actions","SecureComponent","scopes","resource","matchAll","errorProps","disabled","TooltipWrapper","tooltip","Button","id","label","icon","AddIcon","variant","DataTable","itemActions","columns","elementKey","renderFunction","isLoading","records","entityName","idField"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/7614.9c703164.chunk.js b/portal-ui/build/static/js/7614.9c703164.chunk.js deleted file mode 100644 index 64707091cb..0000000000 --- a/portal-ui/build/static/js/7614.9c703164.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[7614],{37099:function(e,r,n){"use strict";var t=n(72791),i=n(29945),o=n(80184),a=function(e){var r=e.icon,n=e.description;return(0,o.jsxs)(i.xuv,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[r," ",(0,o.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:n})]})};r.Z=function(e){var r=e.helpText,n=e.docLink,l=e.docText,u=e.contents;return(0,o.jsxs)(i.xuv,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px"},children:[(0,o.jsxs)(i.xuv,{sx:{fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center",marginBottom:"16px",paddingBottom:"20px","& .min-icon":{height:"21px",width:"21px",marginRight:"15px"}},children:[(0,o.jsx)(i.M9A,{}),(0,o.jsx)("div",{children:r})]}),(0,o.jsxs)(i.xuv,{sx:{fontSize:"14px",marginBottom:"15px"},children:[u.map((function(e,r){return(0,o.jsxs)(t.Fragment,{children:[e.icon&&(0,o.jsx)(i.xuv,{sx:{paddingBottom:"20px"},children:(0,o.jsx)(a,{icon:e.icon,description:e.iconDescription})}),(0,o.jsx)(i.xuv,{sx:{paddingBottom:"20px"},children:e.text})]},"feature-item-".concat(r))})),(0,o.jsx)(i.xuv,{sx:{paddingBottom:"20px"},children:(0,o.jsx)("a",{href:n,target:"_blank",rel:"noopener",children:l})})]})]})}},47614:function(e,r,n){"use strict";n.r(r),n.d(r,{default:function(){return v}});var t=n(72791),i=n(56087),o=n(29945),a=n(4942),l=n(29439),u=n(1413),c=n(57689),s=n(81551),d=n(23814),p=n(87995),f=n(9505),h=n(47974),x=n(99670),m=n(80184),g=function(e){var r=e.icon,n=e.helpBox,i=e.header,g=e.backLink,y=e.title,b=e.formFields,v=e.endpoint,D=(0,u.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"}},b),C=(0,c.s0)(),_=(0,s.TL)(),I=(0,t.useState)({}),j=(0,l.Z)(I,2),Z=j[0],k=j[1],E=(0,f.Z)((function(e){C(g),_((0,p.cN)(!0===e.restart))}),(function(e){return _((0,p.Ih)(e))})),q=(0,l.Z)(E,2),O=q[0],S=q[1];return(0,t.useEffect)((function(){_((0,p.Sc)("add_idp_config"))}),[]),(0,m.jsxs)(o.rjZ,{item:!0,xs:12,children:[(0,m.jsx)(h.Z,{label:(0,m.jsx)(o.hbI,{onClick:function(){return C(g)},label:i}),actions:(0,m.jsx)(x.Z,{})}),(0,m.jsx)(o.Xgh,{children:(0,m.jsxs)(o.ltY,{helpBox:n,children:[(0,m.jsx)(o.NZf,{icon:r,children:y}),(0,m.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){e.preventDefault();for(var r=Z.name,n="",t=0,i=Object.keys(b);t.\n\nimport React, { Fragment } from \"react\";\nimport { HelpIconFilled, Box } from \"mds\";\n\ninterface IContent {\n icon: React.ReactNode;\n text: string;\n iconDescription: string;\n}\n\ninterface IAddIDPConfigurationHelpBoxProps {\n helpText: string;\n docLink: string;\n docText: string;\n contents: IContent[];\n}\n\nconst FeatureItem = ({\n icon,\n description,\n}: {\n icon: any;\n description: string;\n}) => {\n return (\n \n {icon}{\" \"}\n

    \n {description}\n
    \n \n );\n};\n\nconst AddIDPConfigurationHelpBox = ({\n helpText,\n docLink,\n docText,\n contents,\n}: IAddIDPConfigurationHelpBoxProps) => {\n return (\n \n \n \n
    {helpText}
    \n \n \n {contents.map((content, index) => (\n \n {content.icon && (\n \n \n \n )}\n {content.text}\n \n ))}\n \n \n {docText}\n \n \n \n \n );\n};\n\nexport default AddIDPConfigurationHelpBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 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 {\n BackLink,\n Button,\n FormLayout,\n Grid,\n InputBox,\n PageLayout,\n SectionTitle,\n Switch,\n} from \"mds\";\nimport { useNavigate } from \"react-router-dom\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { useAppDispatch } from \"../../../store\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport {\n setErrorSnackMessage,\n setHelpName,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\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 AddIDPConfiguration = ({\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 useEffect(() => {\n dispatch(setHelpName(\"add_idp_config\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n navigate(backLink)} label={header} />}\n actions={}\n />\n \n \n {title}\n ) => {\n addRecord(e);\n }}\n >\n \n \n {Object.entries(extraFormFields).map(([key, value]) =>\n renderFormField(key, value),\n )}\n \n \n\n \n \n \n \n \n \n \n \n );\n};\n\nexport default AddIDPConfiguration;\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 { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport { LockIcon } from \"mds\";\nimport AddIDPConfiguration from \"./AddIDPConfiguration\";\nimport { openIDFormFields, openIDHelpBoxContents } from \"./utils\";\nimport AddIDPConfigurationHelpBox from \"./AddIDPConfigurationHelpbox\";\n\nconst AddIDPOpenIDConfiguration = () => {\n return (\n }\n helpBox={\n \n }\n header={\"OpenID Configurations\"}\n backLink={IAM_PAGES.IDP_OPENID_CONFIGURATIONS}\n title={\"Create OpenID Configuration\"}\n endpoint={\"/api/v1/idp/openid/\"}\n formFields={openIDFormFields}\n />\n );\n};\n\nexport default AddIDPOpenIDConfiguration;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport LoginIcon from \"@mui/icons-material/Login\";\nimport { LockIcon } from \"mds\";\n\nexport const ldapHelpBoxContents = [\n {\n text: \"MinIO supports using an Active Directory or LDAP (AD/LDAP) service for external management of user identities. Configuring an external IDentity Provider (IDP) enables Single-Sign On (SSO) workflows, where applications authenticate against the external IDP before accessing MinIO.\",\n icon: ,\n iconDescription: \"Create Configurations\",\n },\n {\n text: \"MinIO queries the configured Active Directory / LDAP server to verify the credentials specified by the application and optionally return a list of groups in which the user has membership. MinIO supports two modes (Lookup-Bind Mode and Username-Bind Mode) for performing these queries\",\n icon: null,\n iconDescription: \"\",\n },\n {\n text: \"MinIO recommends using Lookup-Bind mode as the preferred method for verifying AD/LDAP credentials. Username-Bind mode is a legacy method retained for backwards compatibility only.\",\n icon: null,\n iconDescription: \"\",\n },\n];\n\nexport const openIDHelpBoxContents = [\n {\n text: \"MinIO supports using an OpenID Connect (OIDC) compatible IDentity Provider (IDP) such as Okta, KeyCloak, Dex, Google, or Facebook for external management of user identities.\",\n icon: ,\n iconDescription: \"Create Configurations\",\n },\n {\n text: \"Configuring an external IDP enables Single-Sign On workflows, where applications authenticate against the external IDP before accessing MinIO.\",\n icon: null,\n iconDescription: \"\",\n },\n];\n\nexport const openIDFormFields = {\n config_url: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Config URL is required\" : \"\";\n },\n label: \"Config URL\",\n tooltip: \"Config URL for identity provider configuration\",\n placeholder:\n \"https://identity-provider-url/.well-known/openid-configuration\",\n type: \"text\",\n },\n client_id: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Client ID is required\" : \"\";\n },\n label: \"Client ID\",\n tooltip: \"Identity provider Client ID\",\n placeholder: \"Enter Client ID\",\n type: \"text\",\n },\n client_secret: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Client Secret is required\" : \"\";\n },\n label: \"Client Secret\",\n tooltip: \"Identity provider Client Secret\",\n placeholder: \"Enter Client Secret\",\n type: \"password\",\n },\n claim_name: {\n required: false,\n label: \"Claim Name\",\n tooltip: \"Claim from which MinIO will read the policy or role to use\",\n placeholder: \"Enter Claim Name\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n },\n display_name: {\n required: false,\n label: \"Display Name\",\n tooltip: \"\",\n placeholder: \"Enter Display Name\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n },\n claim_prefix: {\n required: false,\n label: \"Claim Prefix\",\n tooltip: \"\",\n placeholder: \"Enter Claim Prefix\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n },\n scopes: {\n required: false,\n label: \"Scopes\",\n tooltip: \"\",\n placeholder: \"openid,profile,email\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n },\n redirect_uri: {\n required: false,\n label: \"Redirect URI\",\n tooltip: \"\",\n placeholder: \"https://console-endpoint-url/oauth_callback\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n },\n role_policy: {\n required: false,\n label: \"Role Policy\",\n tooltip: \"\",\n placeholder: \"readonly\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n },\n claim_userinfo: {\n required: false,\n label: \"Claim User Info\",\n tooltip: \"\",\n placeholder: \"Claim User Info\",\n type: \"toggle\",\n hasError: (s: string, editMode: boolean) => \"\",\n },\n redirect_uri_dynamic: {\n required: false,\n label: \"Redirect URI Dynamic\",\n tooltip: \"\",\n placeholder: \"Redirect URI Dynamic\",\n type: \"toggle\",\n hasError: (s: string, editMode: boolean) => \"\",\n },\n};\n\nexport const ldapFormFields = {\n server_insecure: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Server Address is required\" : \"\";\n },\n label: \"Server Insecure\",\n tooltip: \"Disable SSL certificate verification \",\n placeholder: \"myldapserver.com:636\",\n type: \"toggle\",\n editOnly: false,\n },\n server_addr: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Server Address is required\" : \"\";\n },\n label: \"Server Address\",\n tooltip: 'AD/LDAP server address e.g. \"myldapserver.com:636\"',\n placeholder: \"myldapserver.com:636\",\n type: \"text\",\n editOnly: false,\n },\n lookup_bind_dn: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Lookup Bind DN is required\" : \"\";\n },\n label: \"Lookup Bind DN\",\n tooltip:\n \"DN (Distinguished Name) for LDAP read-only service account used to perform DN and group lookups\",\n placeholder: \"cn=admin,dc=min,dc=io\",\n type: \"text\",\n editOnly: false,\n },\n lookup_bind_password: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Lookup Bind Password is required\" : \"\";\n },\n label: \"Lookup Bind Password\",\n tooltip:\n \"Password for LDAP read-only service account used to perform DN and group lookups\",\n placeholder: \"admin\",\n type: \"password\",\n editOnly: true,\n },\n user_dn_search_base_dn: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"User DN Search Base DN is required\" : \"\";\n },\n label: \"User DN Search Base\",\n tooltip: \"\",\n placeholder: \"DC=example,DC=net\",\n type: \"text\",\n editOnly: false,\n },\n user_dn_search_filter: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"User DN Search Filter is required\" : \"\";\n },\n label: \"User DN Search Filter\",\n tooltip: \"\",\n placeholder: \"(sAMAcountName=%s)\",\n type: \"text\",\n editOnly: false,\n },\n group_search_base_dn: {\n required: false,\n hasError: (s: string, editMode: boolean) => \"\",\n label: \"Group Search Base DN\",\n tooltip: \"\",\n placeholder: \"ou=swengg,dc=min,dc=io\",\n type: \"text\",\n editOnly: false,\n },\n group_search_filter: {\n required: false,\n hasError: (s: string, editMode: boolean) => \"\",\n label: \"Group Search Filter\",\n tooltip: \"\",\n placeholder: \"(&(objectclass=groupofnames)(member=%d))\",\n type: \"text\",\n editOnly: false,\n },\n};\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11 7 9.6 8.4l2.6 2.6H2v2h10.2l-2.6 2.6L11 17l5-5-5-5zm9 12h-8v2h8c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-8v2h8v14z\"\n}), 'Login');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1;\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["FeatureItem","_ref","icon","description","_jsxs","Box","sx","display","marginRight","height","width","marginBottom","children","_jsx","style","fontSize","fontStyle","color","_ref2","helpText","docLink","docText","contents","flex","border","borderRadius","flexFlow","padding","fontWeight","alignItems","paddingBottom","HelpIconFilled","map","content","index","Fragment","iconDescription","text","concat","href","target","rel","helpBox","header","backLink","title","formFields","endpoint","extraFormFields","_objectSpread","name","required","hasError","s","editMode","label","tooltip","placeholder","type","navigate","useNavigate","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","fields","setFields","_useApi","useApi","res","setServerNeedsRestart","restart","err","setErrorSnackMessage","_useApi2","loading","invokeApi","useEffect","setHelpName","Grid","item","xs","PageHeaderWrapper","BackLink","onClick","actions","HelpMenu","PageLayout","FormLayout","SectionTitle","noValidate","autoComplete","onSubmit","e","event","preventDefault","input","_i2","_Object$keys","Object","keys","length","key","addRecord","container","entries","_ref3","value","Switch","indicatorLabels","checked","id","onChange","_defineProperty","InputBox","error","renderFormField","modalStyleUtils","modalButtonBar","Button","variant","disabled","_i","_Object$entries","_Object$entries$_i","undefined","validSave","AddIDPConfiguration","LockIcon","AddIDPConfigurationHelpBox","openIDHelpBoxContents","IAM_PAGES","IDP_OPENID_CONFIGURATIONS","openIDFormFields","ldapHelpBoxContents","LoginIcon","config_url","client_id","client_secret","claim_name","display_name","claim_prefix","scopes","redirect_uri","role_policy","claim_userinfo","redirect_uri_dynamic","ldapFormFields","server_insecure","editOnly","server_addr","lookup_bind_dn","lookup_bind_password","user_dn_search_base_dn","user_dn_search_filter","group_search_base_dn","group_search_filter","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","defineProperty","enumerable","get","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","props","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","element","muiNames","React","indexOf","muiName","_len","arguments","funcs","Array","_key","reduce","acc","func","_len2","args","_key2","apply","this","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/7614.b687ba7f.chunk.js b/portal-ui/build/static/js/7614.b687ba7f.chunk.js new file mode 100644 index 0000000000..f00f32340d --- /dev/null +++ b/portal-ui/build/static/js/7614.b687ba7f.chunk.js @@ -0,0 +1,2 @@ +(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[7614],{37099:function(e,r,n){"use strict";var t=n(72791),i=n(29945),o=n(80184),l=function(e){var r=e.icon,n=e.description;return(0,o.jsxs)(i.xuv,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[r," ",(0,o.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:n})]})};r.Z=function(e){var r=e.helpText,n=e.docLink,a=e.docText,u=e.contents;return(0,o.jsxs)(i.xuv,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px"},children:[(0,o.jsxs)(i.xuv,{sx:{fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center",marginBottom:"16px",paddingBottom:"20px","& .min-icon":{height:"21px",width:"21px",marginRight:"15px"}},children:[(0,o.jsx)(i.M9A,{}),(0,o.jsx)("div",{children:r})]}),(0,o.jsxs)(i.xuv,{sx:{fontSize:"14px",marginBottom:"15px"},children:[u.map((function(e,r){return(0,o.jsxs)(t.Fragment,{children:[e.icon&&(0,o.jsx)(i.xuv,{sx:{paddingBottom:"20px"},children:(0,o.jsx)(l,{icon:e.icon,description:e.iconDescription})}),(0,o.jsx)(i.xuv,{sx:{paddingBottom:"20px"},children:e.text})]},"feature-item-".concat(r))})),(0,o.jsx)(i.xuv,{sx:{paddingBottom:"20px"},children:(0,o.jsx)("a",{href:n,target:"_blank",rel:"noopener",children:a})})]})]})}},47614:function(e,r,n){"use strict";n.r(r),n.d(r,{default:function(){return b}});var t=n(72791),i=n(56087),o=n(29945),l=n(4942),a=n(29439),u=n(1413),c=n(57689),s=n(44690),d=n(23814),p=n(87995),f=n(9505),h=n(47974),x=n(99670),m=n(80184),y=function(e){var r=e.icon,n=e.helpBox,i=e.header,y=e.backLink,g=e.title,v=e.formFields,b=e.endpoint,D=(0,u.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"}},v),C=(0,c.s0)(),O=(0,s.TL)(),_=(0,t.useState)({}),I=(0,a.Z)(_,2),j=I[0],Z=I[1],k=(0,f.Z)((function(e){C(y),O((0,p.cN)(!0===e.restart))}),(function(e){return O((0,p.Ih)(e))})),E=(0,a.Z)(k,2),q=E[0],S=E[1];return(0,t.useEffect)((function(){O((0,p.Sc)("add_idp_config"))}),[]),(0,m.jsxs)(o.rjZ,{item:!0,xs:12,children:[(0,m.jsx)(h.Z,{label:(0,m.jsx)(o.hbI,{onClick:function(){return C(y)},label:i}),actions:(0,m.jsx)(x.Z,{})}),(0,m.jsx)(o.Xgh,{children:(0,m.jsxs)(o.ltY,{helpBox:n,children:[(0,m.jsx)(o.NZf,{icon:r,children:g}),(0,m.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){e.preventDefault();for(var r=j.name,n="",t=0,i=Object.keys(v);t.\n\nimport React, { Fragment } from \"react\";\nimport { HelpIconFilled, Box } from \"mds\";\n\ninterface IContent {\n icon: React.ReactNode;\n text: string;\n iconDescription: string;\n}\n\ninterface IAddIDPConfigurationHelpBoxProps {\n helpText: string;\n docLink: string;\n docText: string;\n contents: IContent[];\n}\n\nconst FeatureItem = ({\n icon,\n description,\n}: {\n icon: any;\n description: string;\n}) => {\n return (\n \n {icon}{\" \"}\n
    \n {description}\n
    \n \n );\n};\n\nconst AddIDPConfigurationHelpBox = ({\n helpText,\n docLink,\n docText,\n contents,\n}: IAddIDPConfigurationHelpBoxProps) => {\n return (\n \n \n \n
    {helpText}
    \n \n \n {contents.map((content, index) => (\n \n {content.icon && (\n \n \n \n )}\n {content.text}\n \n ))}\n \n \n {docText}\n \n \n \n \n );\n};\n\nexport default AddIDPConfigurationHelpBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 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 {\n BackLink,\n Button,\n FormLayout,\n Grid,\n InputBox,\n PageLayout,\n SectionTitle,\n Switch,\n} from \"mds\";\nimport { useNavigate } from \"react-router-dom\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { useAppDispatch } from \"../../../store\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\nimport {\n setErrorSnackMessage,\n setHelpName,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\nimport useApi from \"../Common/Hooks/useApi\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\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 AddIDPConfiguration = ({\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 useEffect(() => {\n dispatch(setHelpName(\"add_idp_config\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n navigate(backLink)} label={header} />}\n actions={}\n />\n \n \n {title}\n ) => {\n addRecord(e);\n }}\n >\n \n \n {Object.entries(extraFormFields).map(([key, value]) =>\n renderFormField(key, value),\n )}\n \n \n\n \n \n \n \n \n \n \n \n );\n};\n\nexport default AddIDPConfiguration;\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 { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport { LockIcon } from \"mds\";\nimport AddIDPConfiguration from \"./AddIDPConfiguration\";\nimport { openIDFormFields, openIDHelpBoxContents } from \"./utils\";\nimport AddIDPConfigurationHelpBox from \"./AddIDPConfigurationHelpbox\";\n\nconst AddIDPOpenIDConfiguration = () => {\n return (\n }\n helpBox={\n \n }\n header={\"OpenID Configurations\"}\n backLink={IAM_PAGES.IDP_OPENID_CONFIGURATIONS}\n title={\"Create OpenID Configuration\"}\n endpoint={\"/api/v1/idp/openid/\"}\n formFields={openIDFormFields}\n />\n );\n};\n\nexport default AddIDPOpenIDConfiguration;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport LoginIcon from \"@mui/icons-material/Login\";\nimport { LockIcon } from \"mds\";\n\nexport const ldapHelpBoxContents = [\n {\n text: \"MinIO supports using an Active Directory or LDAP (AD/LDAP) service for external management of user identities. Configuring an external IDentity Provider (IDP) enables Single-Sign On (SSO) workflows, where applications authenticate against the external IDP before accessing MinIO.\",\n icon: ,\n iconDescription: \"Create Configurations\",\n },\n {\n text: \"MinIO queries the configured Active Directory / LDAP server to verify the credentials specified by the application and optionally return a list of groups in which the user has membership. MinIO supports two modes (Lookup-Bind Mode and Username-Bind Mode) for performing these queries\",\n icon: null,\n iconDescription: \"\",\n },\n {\n text: \"MinIO recommends using Lookup-Bind mode as the preferred method for verifying AD/LDAP credentials. Username-Bind mode is a legacy method retained for backwards compatibility only.\",\n icon: null,\n iconDescription: \"\",\n },\n];\n\nexport const openIDHelpBoxContents = [\n {\n text: \"MinIO supports using an OpenID Connect (OIDC) compatible IDentity Provider (IDP) such as Okta, KeyCloak, Dex, Google, or Facebook for external management of user identities.\",\n icon: ,\n iconDescription: \"Create Configurations\",\n },\n {\n text: \"Configuring an external IDP enables Single-Sign On workflows, where applications authenticate against the external IDP before accessing MinIO.\",\n icon: null,\n iconDescription: \"\",\n },\n];\n\nexport const openIDFormFields = {\n config_url: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Config URL is required\" : \"\";\n },\n label: \"Config URL\",\n tooltip: \"Config URL for identity provider configuration\",\n placeholder:\n \"https://identity-provider-url/.well-known/openid-configuration\",\n type: \"text\",\n editOnly: false,\n },\n client_id: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Client ID is required\" : \"\";\n },\n label: \"Client ID\",\n tooltip: \"Identity provider Client ID\",\n placeholder: \"Enter Client ID\",\n type: \"text\",\n editOnly: false,\n },\n client_secret: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Client Secret is required\" : \"\";\n },\n label: \"Client Secret\",\n tooltip: \"Identity provider Client Secret\",\n placeholder: \"Enter Client Secret\",\n type: \"password\",\n editOnly: true,\n },\n claim_name: {\n required: false,\n label: \"Claim Name\",\n tooltip: \"Claim from which MinIO will read the policy or role to use\",\n placeholder: \"Enter Claim Name\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n display_name: {\n required: false,\n label: \"Display Name\",\n tooltip: \"\",\n placeholder: \"Enter Display Name\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n claim_prefix: {\n required: false,\n label: \"Claim Prefix\",\n tooltip: \"\",\n placeholder: \"Enter Claim Prefix\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n scopes: {\n required: false,\n label: \"Scopes\",\n tooltip: \"\",\n placeholder: \"openid,profile,email\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n redirect_uri: {\n required: false,\n label: \"Redirect URI\",\n tooltip: \"\",\n placeholder: \"https://console-endpoint-url/oauth_callback\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n role_policy: {\n required: false,\n label: \"Role Policy\",\n tooltip: \"\",\n placeholder: \"readonly\",\n type: \"text\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n claim_userinfo: {\n required: false,\n label: \"Claim User Info\",\n tooltip: \"\",\n placeholder: \"Claim User Info\",\n type: \"toggle\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n redirect_uri_dynamic: {\n required: false,\n label: \"Redirect URI Dynamic\",\n tooltip: \"\",\n placeholder: \"Redirect URI Dynamic\",\n type: \"toggle\",\n hasError: (s: string, editMode: boolean) => \"\",\n editOnly: false,\n },\n};\n\nexport const ldapFormFields = {\n server_insecure: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Server Address is required\" : \"\";\n },\n label: \"Server Insecure\",\n tooltip: \"Disable SSL certificate verification \",\n placeholder: \"myldapserver.com:636\",\n type: \"toggle\",\n editOnly: false,\n },\n server_addr: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Server Address is required\" : \"\";\n },\n label: \"Server Address\",\n tooltip: 'AD/LDAP server address e.g. \"myldapserver.com:636\"',\n placeholder: \"myldapserver.com:636\",\n type: \"text\",\n editOnly: false,\n },\n lookup_bind_dn: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Lookup Bind DN is required\" : \"\";\n },\n label: \"Lookup Bind DN\",\n tooltip:\n \"DN (Distinguished Name) for LDAP read-only service account used to perform DN and group lookups\",\n placeholder: \"cn=admin,dc=min,dc=io\",\n type: \"text\",\n editOnly: false,\n },\n lookup_bind_password: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"Lookup Bind Password is required\" : \"\";\n },\n label: \"Lookup Bind Password\",\n tooltip:\n \"Password for LDAP read-only service account used to perform DN and group lookups\",\n placeholder: \"admin\",\n type: \"password\",\n editOnly: true,\n },\n user_dn_search_base_dn: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"User DN Search Base DN is required\" : \"\";\n },\n label: \"User DN Search Base\",\n tooltip: \"\",\n placeholder: \"DC=example,DC=net\",\n type: \"text\",\n editOnly: false,\n },\n user_dn_search_filter: {\n required: true,\n hasError: (s: string, editMode: boolean) => {\n return !s && editMode ? \"User DN Search Filter is required\" : \"\";\n },\n label: \"User DN Search Filter\",\n tooltip: \"\",\n placeholder: \"(sAMAcountName=%s)\",\n type: \"text\",\n editOnly: false,\n },\n group_search_base_dn: {\n required: false,\n hasError: (s: string, editMode: boolean) => \"\",\n label: \"Group Search Base DN\",\n tooltip: \"\",\n placeholder: \"ou=swengg,dc=min,dc=io\",\n type: \"text\",\n editOnly: false,\n },\n group_search_filter: {\n required: false,\n hasError: (s: string, editMode: boolean) => \"\",\n label: \"Group Search Filter\",\n tooltip: \"\",\n placeholder: \"(&(objectclass=groupofnames)(member=%d))\",\n type: \"text\",\n editOnly: false,\n },\n};\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11 7 9.6 8.4l2.6 2.6H2v2h10.2l-2.6 2.6L11 17l5-5-5-5zm9 12h-8v2h8c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-8v2h8v14z\"\n}), 'Login');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n var _muiName, _element$type;\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf( // For server components `muiName` is avaialble in element.type._payload.value.muiName\n // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45\n // eslint-disable-next-line no-underscore-dangle\n (_muiName = element.type.muiName) != null ? _muiName : (_element$type = element.type) == null || (_element$type = _element$type._payload) == null || (_element$type = _element$type.value) == null ? void 0 : _element$type.muiName) !== -1;\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["FeatureItem","_ref","icon","description","_jsxs","Box","sx","display","marginRight","height","width","marginBottom","children","_jsx","style","fontSize","fontStyle","color","_ref2","helpText","docLink","docText","contents","flex","border","borderRadius","flexFlow","padding","fontWeight","alignItems","paddingBottom","HelpIconFilled","map","content","index","Fragment","iconDescription","text","concat","href","target","rel","helpBox","header","backLink","title","formFields","endpoint","extraFormFields","_objectSpread","name","required","hasError","s","editMode","label","tooltip","placeholder","type","navigate","useNavigate","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","fields","setFields","_useApi","useApi","res","setServerNeedsRestart","restart","err","setErrorSnackMessage","_useApi2","loading","invokeApi","useEffect","setHelpName","Grid","item","xs","PageHeaderWrapper","BackLink","onClick","actions","HelpMenu","PageLayout","FormLayout","SectionTitle","noValidate","autoComplete","onSubmit","e","event","preventDefault","input","_i2","_Object$keys","Object","keys","length","key","addRecord","container","entries","_ref3","value","Switch","indicatorLabels","checked","id","onChange","_defineProperty","InputBox","error","renderFormField","modalStyleUtils","modalButtonBar","Button","variant","disabled","_i","_Object$entries","_Object$entries$_i","undefined","validSave","AddIDPConfiguration","LockIcon","AddIDPConfigurationHelpBox","openIDHelpBoxContents","IAM_PAGES","IDP_OPENID_CONFIGURATIONS","openIDFormFields","ldapHelpBoxContents","LoginIcon","config_url","editOnly","client_id","client_secret","claim_name","display_name","claim_prefix","scopes","redirect_uri","role_policy","claim_userinfo","redirect_uri_dynamic","ldapFormFields","server_insecure","server_addr","lookup_bind_dn","lookup_bind_password","user_dn_search_base_dn","user_dn_search_filter","group_search_base_dn","group_search_filter","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","defineProperty","enumerable","get","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","props","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","element","muiNames","_muiName","_element$type","React","indexOf","muiName","_payload","_len","arguments","funcs","Array","_key","reduce","acc","func","_len2","args","_key2","apply","this","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/7784.c0448d91.chunk.js b/portal-ui/build/static/js/7784.c0448d91.chunk.js new file mode 100644 index 0000000000..4130154413 --- /dev/null +++ b/portal-ui/build/static/js/7784.c0448d91.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[7784],{25643:function(e,t,n){n.d(t,{r:function(){return i}});n(72791);var o=n(99779),r=n(80184),i=[{label:"Access Key",elementKey:"accessKey"},{label:"Expiry",elementKey:"expiration",renderFunction:function(e){if(e){var t=o.ou.fromISO(e).toUTC().toFormat("y/M/d hh:mm:ss z");return(0,r.jsx)("span",{title:t,children:t})}return""}},{label:"Status",elementKey:"accountStatus",renderFunction:function(e){return"off"===e?"Disabled":"Enabled"}},{label:"Name",elementKey:"name"},{label:"Description",elementKey:"description"}]},14048:function(e,t,n){var o=n(74165),r=n(15861),i=n(29439),a=n(72791),l=n(29945),c=n(31776),s=n(82342),u=n(92217),d=n(44690),p=n(45248),f=n(87995),m=n(56028),h=n(23814),y=n(80184);t.Z=function(e){var t=e.open,n=e.selectedAccessKey,b=e.closeModalAndRefresh,g=(0,d.TL)(),x=(0,a.useState)(!1),v=(0,i.Z)(x,2),S=v[0],k=v[1],_=(0,a.useState)(""),E=(0,i.Z)(_,2),C=E[0],q=E[1];(0,a.useEffect)((function(){if(!S&&""!==n){var e=(0,p.LL)(n);k(!0),c.h.serviceAccounts.getServiceAccountPolicy(e).then((function(e){k(!1),q(e.data)})).catch((function(e){k(!1),g((0,f.zb)((0,s.g)(e)))}))}}),[n]);return(0,y.jsx)(m.Z,{title:"Access Key Policy",modalOpen:t,onClose:function(){b()},titleIcon:(0,y.jsx)(l.QXQ,{}),children:(0,y.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){var t;t=C,e.preventDefault(),c.h.serviceAccounts.setServiceAccountPolicy((0,p.LL)(n),{policy:t}).then((function(){b()})).catch(function(){var e=(0,r.Z)((0,o.Z)().mark((function e(t){var n;return(0,o.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.json();case 2:n=e.sent,g((0,f.Ih)((0,s.g)(n)));case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}())},children:(0,y.jsxs)(l.rjZ,{container:!0,children:[(0,y.jsx)(l.rjZ,{item:!0,xs:12,children:(0,y.jsx)(u.Z,{label:"Access Key Policy",value:C,onChange:function(e){q(e)},editorHeight:"350px"})}),(0,y.jsxs)(l.rjZ,{item:!0,xs:12,sx:h.ID.modalButtonBar,children:[(0,y.jsx)(l.zxk,{id:"cancel-sa-policy",type:"button",variant:"regular",onClick:function(){b()},disabled:S,label:"Cancel"}),(0,y.jsx)(l.zxk,{id:"save-sa-policy",type:"submit",variant:"callAction",color:"primary",disabled:S,label:"Set"})]})]})})})}},75578:function(e,t,n){var o=n(1413),r=n(72791),i=n(80184);t.Z=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(n){return(0,i.jsx)(r.Suspense,{fallback:t,children:(0,i.jsx)(e,(0,o.Z)({},n))})}}},92217:function(e,t,n){var o=n(72791),r=n(29945),i=n(78029),a=n.n(i),l=n(27454),c=n(80184);t.Z=function(e){var t=e.value,n=e.label,i=void 0===n?"":n,s=e.tooltip,u=void 0===s?"":s,d=e.mode,p=void 0===d?"json":d,f=e.onChange,m=e.editorHeight,h=void 0===m?250:m;return(0,c.jsx)(r.pq4,{value:t,onChange:function(e){return f(e)},mode:p,tooltip:u,editorHeight:h,label:i,helpTools:(0,c.jsx)(o.Fragment,{children:(0,c.jsx)(l.Z,{tooltip:"Copy to Clipboard",children:(0,c.jsx)(a(),{text:t,children:(0,c.jsx)(r.zxk,{type:"button",id:"copy-code-mirror",icon:(0,c.jsx)(r.TIy,{}),color:"primary",variant:"regular"})})})})})}},16502:function(e,t,n){n(72791);var o=n(11135),r=n(25787),i=n(80184);t.Z=(0,r.Z)((function(e){return(0,o.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 t=e.classes,n=e.label,o=e.title;return(0,i.jsxs)("div",{className:t.headerContainer,children:[(0,i.jsx)("h4",{className:t.labelHeadline,children:o}),(0,i.jsx)("div",{className:t.labelText,children:n})]})}))},58493:function(e,t,n){n.d(t,{DD:function(){return g},DP:function(){return b},F_:function(){return v},_0:function(){return x},bx:function(){return y}});var o=n(4942),r=n(1413),i=n(93433),a=(n(72791),n(87569)),l=n(61809),c=n(31292),s=n(98095),u=n(67055),d=n(21141),p=n(36909),f=n(13901),m=n(29945),h=n(80184),y=[{icon:(0,h.jsx)(a.Z,{}),configuration_id:"region",configuration_label:"Region"},{icon:(0,h.jsx)(l.Z,{}),configuration_id:"compression",configuration_label:"Compression"},{icon:(0,h.jsx)(c.Z,{}),configuration_id:"api",configuration_label:"API"},{icon:(0,h.jsx)(s.Z,{}),configuration_id:"heal",configuration_label:"Heal"},{icon:(0,h.jsx)(u.Z,{}),configuration_id:"scanner",configuration_label:"Scanner"},{icon:(0,h.jsx)(d.Z,{}),configuration_id:"etcd",configuration_label:"Etcd"},{icon:(0,h.jsx)(f.Z,{}),configuration_id:"logger_webhook",configuration_label:"Logger Webhook"},{icon:(0,h.jsx)(p.Z,{}),configuration_id:"audit_webhook",configuration_label:"Audit Webhook"},{icon:(0,h.jsx)(m.I$E,{className:"MuiSvgIcon-root MuiSvgIcon-fontSizeMedium MuiTab-iconWrapper css-i4bv87-MuiSvgIcon-root",style:{width:24,height:24}}),configuration_id:"audit_kafka",configuration_label:"Audit Kafka"}],b={region:[{name:"name",required:!0,label:"Server Location",tooltip:'Name of the location of the server e.g. "us-west-rack2"',type:"string",placeholder:"e.g. us-west-rack-2"},{name:"comment",required:!1,label:"Comment",tooltip:"You can add a comment to this setting",type:"comment",placeholder:"Enter custom notes if any"}],compression:[{name:"extensions",required:!1,label:"Extensions",tooltip:'Extensions to compress e.g. ".txt", ".log" or ".csv" - you can write one per field',type:"csv",placeholder:"Enter an Extension",withBorder:!0},{name:"mime_types",required:!1,label:"Mime Types",tooltip:'Mime types e.g. "text/*", "application/json" or "application/xml" - you can write one per field',type:"csv",placeholder:"Enter a Mime Type",withBorder:!0}],api:[{name:"requests_max",required:!1,label:"Requests Max",tooltip:"Maximum number of concurrent requests, e.g. '1600'",type:"number",placeholder:"Enter Requests Max"},{name:"cors_allow_origin",required:!1,label:"Cors Allow Origin",tooltip:"List of origins allowed for CORS requests",type:"csv",placeholder:"Enter allowed origin e.g. https://example.com"},{name:"replication_workers",required:!1,label:"Replication Workers",tooltip:"Number of replication workers, defaults to 100",type:"number",placeholder:"Enter Replication Workers"},{name:"replication_failed_workers",required:!1,label:"Replication Failed Workers",tooltip:"Number of replication workers for recently failed replicas, defaults to 4",type:"number",placeholder:"Enter Replication Failed Workers"}],heal:[{name:"bitrotscan",required:!1,label:"Bitrot Scan",tooltip:"Perform bitrot scan on disks when checking objects during scanner",type:"on|off"},{name:"max_sleep",required:!1,label:"Max Sleep",tooltip:"Maximum sleep duration between objects to slow down heal operation, e.g. 2s",type:"duration",placeholder:"Enter Max Sleep Duration"},{name:"max_io",required:!1,label:"Max IO",tooltip:"Maximum IO requests allowed between objects to slow down heal operation, e.g. 3",type:"number",placeholder:"Enter Max IO"}],scanner:[{name:"delay",required:!1,label:"Delay Multiplier",tooltip:"Scanner delay multiplier, defaults to '10.0'",type:"number",placeholder:"Enter Delay"},{name:"max_wait",required:!1,label:"Max Wait",tooltip:"Maximum wait time between operations, defaults to '15s'",type:"duration",placeholder:"Enter Max Wait"},{name:"cycle",required:!1,label:"Cycle",tooltip:"Time duration between scanner cycles, defaults to '1m'",type:"duration",placeholder:"Enter Cycle"}],etcd:[{name:"endpoints",required:!0,label:"Endpoints",tooltip:'List of etcd endpoints e.g. "http://localhost:2379" - you can write one per field',type:"csv",placeholder:"Enter Endpoint"},{name:"path_prefix",required:!1,label:"Path Prefix",tooltip:'Namespace prefix to isolate tenants e.g. "customer1/"',type:"string",placeholder:"Enter Path Prefix"},{name:"coredns_path",required:!1,label:"Coredns Path",tooltip:'Shared bucket DNS records, default is "/skydns"',type:"string",placeholder:"Enter Coredns Path"},{name:"client_cert",required:!1,label:"Client Cert",tooltip:"Client cert for mTLS authentication",type:"string",placeholder:"Enter Client Cert"},{name:"client_cert_key",required:!1,label:"Client Cert Key",tooltip:"Client cert key for mTLS authentication",type:"string",placeholder:"Enter Client Cert Key"},{name:"comment",required:!1,label:"Comment",tooltip:"You can add a comment to this setting",type:"comment",multiline:!0,placeholder:"Enter custom notes if any"}],logger_webhook:[{name:"endpoint",required:!0,label:"Endpoint",type:"string",placeholder:"Enter Endpoint"},{name:"auth_token",required:!0,label:"Auth Token",type:"string",placeholder:"Enter Auth Token"}],audit_webhook:[{name:"endpoint",required:!0,label:"Endpoint",type:"string",placeholder:"Enter Endpoint"},{name:"auth_token",required:!0,label:"Auth Token",type:"string",placeholder:"Enter Auth Token"}],audit_kafka:[{name:"enable",required:!1,label:"Enable",tooltip:"Enable audit_kafka target",type:"on|off",customValueProcess:function(e){return""===e||"on"===e?"on":"off"}},{name:"brokers",required:!0,label:"Brokers",type:"csv",placeholder:"Enter Kafka Broker"},{name:"topic",required:!1,label:"Topic",type:"string",placeholder:"Enter Kafka Topic",tooltip:"Kafka topic used for bucket notifications"},{name:"sasl",required:!1,label:"Use SASL",tooltip:"Enable SASL (Simple Authentication and Security Layer) authentication",type:"on|off"},{name:"sasl_username",required:!1,label:"SASL Username",type:"string",placeholder:"Enter SASL Username",tooltip:"Username for SASL/PLAIN or SASL/SCRAM authentication"},{name:"sasl_password",required:!1,label:"SASL Password",type:"password",placeholder:"Enter SASL Password",tooltip:"Password for SASL/PLAIN or SASL/SCRAM authentication"},{name:"sasl_mechanism",required:!1,label:"SASL Mechanism",type:"string",placeholder:"Enter SASL Mechanism",tooltip:"SASL authentication mechanism"},{name:"tls",required:!1,label:"Use TLS",tooltip:"Enable TLS (Transport Layer Security)",type:"on|off"},{name:"tls_skip_verify",required:!1,label:"Skip TLS Verification",tooltip:"Trust server TLS without verification",type:"on|off"},{name:"client_tls_cert",required:!1,label:"Client Cert",tooltip:"Client cert for mTLS authentication",type:"string",placeholder:"Enter Client Cert"},{name:"client_tls_key",required:!1,label:"Client Cert Key",tooltip:"Client cert key for mTLS authentication",type:"string",placeholder:"Enter Client Cert Key"},{name:"tls_client_auth",required:!1,label:"TLS Client Auth",tooltip:"ClientAuth determines the Kafka server's policy for TLS client authorization",type:"string"},{name:"version",required:!1,label:"Version",tooltip:"Specify the version of the Kafka cluster",type:"string"}]},g=function(e){return e.filter((function(e){return""!==e.value}))},x=function(e,t,n){var o=e.target,r=o.value,a=o.checked,l=(0,i.Z)(n);return a?l.push(r):l=l.filter((function(e){return e!==r})),t(l),l},v=function(e){var t={};return e.forEach((function(e){if(e.env_override){var n={value:e.env_override.value,overrideEnv:e.env_override.name};t=(0,r.Z)((0,r.Z)({},t),{},(0,o.Z)({},e.key,n))}})),t}},18303:function(e,t,n){var o=n(29439),r=n(72791),i=n(29945),a=n(9505),l=n(23508),c=n(87995),s=n(44690),u=n(80184);t.Z=function(e){var t=e.closeDeleteModalAndRefresh,n=e.deleteOpen,d=e.selectedSAs,p=(0,s.TL)(),f=(0,a.Z)((function(){return t(!0)}),(function(e){return p((0,c.Ih)(e))})),m=(0,o.Z)(f,2),h=m[0],y=m[1];if(!d)return null;return(0,u.jsx)(l.Z,{title:"Delete Access Keys",confirmText:"Delete",isOpen:n,titleIcon:(0,u.jsx)(i.NvT,{}),isLoading:h,onConfirm:function(){y("DELETE","/api/v1/service-accounts/delete-multi",d)},onClose:function(){return t(!1)},confirmationContent:(0,u.jsxs)(r.Fragment,{children:["Are you sure you want to delete the selected ",d.length," ","Access Keys?"," "]})})}},21639:function(e,t,n){n.d(t,{KE:function(){return a},LQ:function(){return o},V2:function(){return i},g4:function(){return r}});var o=function(e,t){if(e.accessKey&&t.accessKey){if(e.accessKey>t.accessKey)return 1;if(e.accessKeyt.name?1:e.namet?1:et.policy?1:e.policy.\n\nimport React from \"react\";\nimport { DateTime } from \"luxon\";\n\nexport const ACCOUNT_TABLE_COLUMNS = [\n { label: \"Access Key\", elementKey: \"accessKey\" },\n {\n label: \"Expiry\",\n elementKey: \"expiration\",\n renderFunction: (expTime: string) => {\n if (expTime) {\n const fmtDate = DateTime.fromISO(expTime)\n .toUTC()\n .toFormat(\"y/M/d hh:mm:ss z\");\n\n return {fmtDate};\n }\n return \"\";\n },\n },\n {\n label: \"Status\",\n elementKey: \"accountStatus\",\n renderFunction: (status: string) => {\n if (status === \"off\") {\n return \"Disabled\";\n } else {\n return \"Enabled\";\n }\n },\n },\n { label: \"Name\", elementKey: \"name\" },\n { label: \"Description\", elementKey: \"description\" },\n];\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { Button, ChangeAccessPolicyIcon, Grid } from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport { ApiError } from \"api/consoleApi\";\nimport { useAppDispatch } from \"store\";\nimport { encodeURLString } from \"common/utils\";\nimport { setErrorSnackMessage, setModalErrorSnackMessage } from \"systemSlice\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport { modalStyleUtils } from \"../Common/FormComponents/common/styleLibrary\";\n\ninterface IServiceAccountPolicyProps {\n open: boolean;\n selectedAccessKey: string | null;\n closeModalAndRefresh: () => void;\n}\n\nconst ServiceAccountPolicy = ({\n open,\n selectedAccessKey,\n closeModalAndRefresh,\n}: IServiceAccountPolicyProps) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [policyDefinition, setPolicyDefinition] = useState(\"\");\n useEffect(() => {\n if (!loading && selectedAccessKey !== \"\") {\n const sourceAccKey = encodeURLString(selectedAccessKey);\n setLoading(true);\n api.serviceAccounts\n .getServiceAccountPolicy(sourceAccKey)\n .then((res) => {\n setLoading(false);\n setPolicyDefinition(res.data);\n })\n .catch((err) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err)));\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedAccessKey]);\n\n const setPolicy = (event: React.FormEvent, newPolicy: string) => {\n event.preventDefault();\n api.serviceAccounts\n .setServiceAccountPolicy(encodeURLString(selectedAccessKey), {\n policy: newPolicy,\n })\n .then(() => {\n closeModalAndRefresh();\n })\n .catch(async (res) => {\n const err = (await res.json()) as ApiError;\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n });\n };\n\n return (\n {\n closeModalAndRefresh();\n }}\n titleIcon={}\n >\n ) => {\n setPolicy(e, policyDefinition);\n }}\n >\n \n \n {\n setPolicyDefinition(value);\n }}\n editorHeight={\"350px\"}\n />\n \n \n {\n closeModalAndRefresh();\n }}\n disabled={loading}\n label={\"Cancel\"}\n />\n \n \n \n \n \n );\n};\n\nexport default ServiceAccountPolicy;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

    (\n WrappedComponent: ComponentType

    ,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Button, CodeEditor, CopyIcon } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n onChange: (value: string) => any;\n editorHeight?: string | number;\n}\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n onChange,\n editorHeight = 250,\n}: ICodeWrapper) => {\n return (\n onChange(value)}\n mode={mode}\n tooltip={tooltip}\n editorHeight={editorHeight}\n label={label}\n helpTools={\n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n }\n />\n );\n};\n\nexport default CodeMirrorWrapper;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\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

    {title}

    \n
    {label}
    \n
    \n );\n};\n\nexport default withStyles(styles)(WarningMessage);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport PublicIcon from \"@mui/icons-material/Public\";\nimport CompressIcon from \"@mui/icons-material/Compress\";\nimport CodeIcon from \"@mui/icons-material/Code\";\nimport LocalHospitalIcon from \"@mui/icons-material/LocalHospital\";\nimport FindReplaceIcon from \"@mui/icons-material/FindReplace\";\nimport VpnKeyIcon from \"@mui/icons-material/VpnKey\";\nimport PendingActionsIcon from \"@mui/icons-material/PendingActions\";\nimport CallToActionIcon from \"@mui/icons-material/CallToAction\";\nimport { IElement, IElementValue, IOverrideEnv, OverrideValue } from \"./types\";\nimport { LogsIcon } from \"mds\";\n\nexport const configurationElements: IElement[] = [\n {\n icon: ,\n configuration_id: \"region\",\n configuration_label: \"Region\",\n },\n {\n icon: ,\n configuration_id: \"compression\",\n configuration_label: \"Compression\",\n },\n {\n icon: ,\n configuration_id: \"api\",\n configuration_label: \"API\",\n },\n {\n icon: ,\n configuration_id: \"heal\",\n configuration_label: \"Heal\",\n },\n {\n icon: ,\n configuration_id: \"scanner\",\n configuration_label: \"Scanner\",\n },\n {\n icon: ,\n configuration_id: \"etcd\",\n configuration_label: \"Etcd\",\n },\n {\n icon: ,\n configuration_id: \"logger_webhook\",\n configuration_label: \"Logger Webhook\",\n },\n {\n icon: ,\n configuration_id: \"audit_webhook\",\n configuration_label: \"Audit Webhook\",\n },\n {\n icon: (\n \n ),\n configuration_id: \"audit_kafka\",\n configuration_label: \"Audit Kafka\",\n },\n];\n\nexport const fieldsConfigurations: any = {\n region: [\n {\n name: \"name\",\n required: true,\n label: \"Server Location\",\n tooltip: 'Name of the location of the server e.g. \"us-west-rack2\"',\n type: \"string\",\n placeholder: \"e.g. us-west-rack-2\",\n },\n {\n name: \"comment\",\n required: false,\n label: \"Comment\",\n tooltip: \"You can add a comment to this setting\",\n type: \"comment\",\n placeholder: \"Enter custom notes if any\",\n },\n ],\n compression: [\n {\n name: \"extensions\",\n required: false,\n label: \"Extensions\",\n tooltip:\n 'Extensions to compress e.g. \".txt\", \".log\" or \".csv\" - you can write one per field',\n type: \"csv\",\n placeholder: \"Enter an Extension\",\n withBorder: true,\n },\n {\n name: \"mime_types\",\n required: false,\n label: \"Mime Types\",\n tooltip:\n 'Mime types e.g. \"text/*\", \"application/json\" or \"application/xml\" - you can write one per field',\n type: \"csv\",\n placeholder: \"Enter a Mime Type\",\n withBorder: true,\n },\n ],\n api: [\n {\n name: \"requests_max\",\n required: false,\n label: \"Requests Max\",\n tooltip: \"Maximum number of concurrent requests, e.g. '1600'\",\n type: \"number\",\n placeholder: \"Enter Requests Max\",\n },\n {\n name: \"cors_allow_origin\",\n required: false,\n label: \"Cors Allow Origin\",\n tooltip: \"List of origins allowed for CORS requests\",\n type: \"csv\",\n placeholder: \"Enter allowed origin e.g. https://example.com\",\n },\n {\n name: \"replication_workers\",\n required: false,\n label: \"Replication Workers\",\n tooltip: \"Number of replication workers, defaults to 100\",\n type: \"number\",\n placeholder: \"Enter Replication Workers\",\n },\n {\n name: \"replication_failed_workers\",\n required: false,\n label: \"Replication Failed Workers\",\n tooltip:\n \"Number of replication workers for recently failed replicas, defaults to 4\",\n type: \"number\",\n placeholder: \"Enter Replication Failed Workers\",\n },\n ],\n heal: [\n {\n name: \"bitrotscan\",\n required: false,\n label: \"Bitrot Scan\",\n tooltip:\n \"Perform bitrot scan on disks when checking objects during scanner\",\n type: \"on|off\",\n },\n {\n name: \"max_sleep\",\n required: false,\n label: \"Max Sleep\",\n tooltip:\n \"Maximum sleep duration between objects to slow down heal operation, e.g. 2s\",\n type: \"duration\",\n placeholder: \"Enter Max Sleep Duration\",\n },\n {\n name: \"max_io\",\n required: false,\n label: \"Max IO\",\n tooltip:\n \"Maximum IO requests allowed between objects to slow down heal operation, e.g. 3\",\n type: \"number\",\n placeholder: \"Enter Max IO\",\n },\n ],\n scanner: [\n {\n name: \"delay\",\n required: false,\n label: \"Delay Multiplier\",\n tooltip: \"Scanner delay multiplier, defaults to '10.0'\",\n type: \"number\",\n placeholder: \"Enter Delay\",\n },\n {\n name: \"max_wait\",\n required: false,\n label: \"Max Wait\",\n tooltip: \"Maximum wait time between operations, defaults to '15s'\",\n type: \"duration\",\n placeholder: \"Enter Max Wait\",\n },\n {\n name: \"cycle\",\n required: false,\n label: \"Cycle\",\n tooltip: \"Time duration between scanner cycles, defaults to '1m'\",\n type: \"duration\",\n placeholder: \"Enter Cycle\",\n },\n ],\n etcd: [\n {\n name: \"endpoints\",\n required: true,\n label: \"Endpoints\",\n tooltip:\n 'List of etcd endpoints e.g. \"http://localhost:2379\" - you can write one per field',\n type: \"csv\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"path_prefix\",\n required: false,\n label: \"Path Prefix\",\n tooltip: 'Namespace prefix to isolate tenants e.g. \"customer1/\"',\n type: \"string\",\n placeholder: \"Enter Path Prefix\",\n },\n {\n name: \"coredns_path\",\n required: false,\n label: \"Coredns Path\",\n tooltip: 'Shared bucket DNS records, default is \"/skydns\"',\n type: \"string\",\n placeholder: \"Enter Coredns Path\",\n },\n {\n name: \"client_cert\",\n required: false,\n label: \"Client Cert\",\n tooltip: \"Client cert for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_cert_key\",\n required: false,\n label: \"Client Cert Key\",\n tooltip: \"Client cert key for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert Key\",\n },\n {\n name: \"comment\",\n required: false,\n label: \"Comment\",\n tooltip: \"You can add a comment to this setting\",\n type: \"comment\",\n multiline: true,\n placeholder: \"Enter custom notes if any\",\n },\n ],\n logger_webhook: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n type: \"string\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n required: true,\n label: \"Auth Token\",\n type: \"string\",\n placeholder: \"Enter Auth Token\",\n },\n ],\n audit_webhook: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n type: \"string\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n required: true,\n label: \"Auth Token\",\n type: \"string\",\n placeholder: \"Enter Auth Token\",\n },\n ],\n audit_kafka: [\n {\n name: \"enable\",\n required: false,\n label: \"Enable\",\n tooltip: \"Enable audit_kafka target\",\n type: \"on|off\",\n customValueProcess: (origValue: string) => {\n return origValue === \"\" || origValue === \"on\" ? \"on\" : \"off\";\n },\n },\n {\n name: \"brokers\",\n required: true,\n label: \"Brokers\",\n type: \"csv\",\n placeholder: \"Enter Kafka Broker\",\n },\n {\n name: \"topic\",\n required: false,\n label: \"Topic\",\n type: \"string\",\n placeholder: \"Enter Kafka Topic\",\n tooltip: \"Kafka topic used for bucket notifications\",\n },\n {\n name: \"sasl\",\n required: false,\n label: \"Use SASL\",\n tooltip:\n \"Enable SASL (Simple Authentication and Security Layer) authentication\",\n type: \"on|off\",\n },\n {\n name: \"sasl_username\",\n required: false,\n label: \"SASL Username\",\n type: \"string\",\n placeholder: \"Enter SASL Username\",\n tooltip: \"Username for SASL/PLAIN or SASL/SCRAM authentication\",\n },\n {\n name: \"sasl_password\",\n required: false,\n label: \"SASL Password\",\n type: \"password\",\n placeholder: \"Enter SASL Password\",\n tooltip: \"Password for SASL/PLAIN or SASL/SCRAM authentication\",\n },\n {\n name: \"sasl_mechanism\",\n required: false,\n label: \"SASL Mechanism\",\n type: \"string\",\n placeholder: \"Enter SASL Mechanism\",\n tooltip: \"SASL authentication mechanism\",\n },\n {\n name: \"tls\",\n required: false,\n label: \"Use TLS\",\n tooltip: \"Enable TLS (Transport Layer Security)\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n required: false,\n label: \"Skip TLS Verification\",\n tooltip: \"Trust server TLS without verification\",\n type: \"on|off\",\n },\n {\n name: \"client_tls_cert\",\n required: false,\n label: \"Client Cert\",\n tooltip: \"Client cert for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_tls_key\",\n required: false,\n label: \"Client Cert Key\",\n tooltip: \"Client cert key for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert Key\",\n },\n {\n name: \"tls_client_auth\",\n required: false,\n label: \"TLS Client Auth\",\n tooltip:\n \"ClientAuth determines the Kafka server's policy for TLS client authorization\",\n type: \"string\",\n },\n {\n name: \"version\",\n required: false,\n label: \"Version\",\n tooltip: \"Specify the version of the Kafka cluster\",\n type: \"string\",\n },\n ],\n};\n\nexport const removeEmptyFields = (formFields: IElementValue[]) => {\n const nonEmptyFields = formFields.filter((field) => field.value !== \"\");\n\n return nonEmptyFields;\n};\n\nexport const selectSAs = (\n e: React.ChangeEvent,\n setSelectedSAs: Function,\n selectedSAs: string[],\n) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selectedSAs]; // We clone the selectedSAs array\n if (checked) {\n // If the user has checked this field we need to push this to selectedSAs\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedSAs(elements);\n return elements;\n};\n\nexport const overrideFields = (formFields: IElementValue[]): IOverrideEnv => {\n let overrideReturn: IOverrideEnv = {};\n\n formFields.forEach((envItem) => {\n // it has override values, we construct the value\n if (envItem.env_override) {\n const value: OverrideValue = {\n value: envItem.env_override.value,\n overrideEnv: envItem.env_override.name,\n };\n\n overrideReturn = { ...overrideReturn, [envItem.key]: value };\n }\n });\n\n return overrideReturn;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 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 { ConfirmDeleteIcon } from \"mds\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport useApi from \"../../../screens/Console/Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../../screens/Console/Common/ModalWrapper/ConfirmDialog\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\n\ninterface IDeleteMultiSAsProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedSAs: string[];\n}\n\nconst DeleteMultipleSAs = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedSAs,\n}: IDeleteMultiSAsProps) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => closeDeleteModalAndRefresh(false);\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n if (!selectedSAs) {\n return null;\n }\n const onConfirmDelete = () => {\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/service-accounts/delete-multi`,\n selectedSAs,\n );\n };\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the selected {selectedSAs.length}{\" \"}\n Access Keys?{\" \"}\n \n }\n />\n );\n};\n\nexport default DeleteMultipleSAs;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Policy, User } from \"api/consoleApi\";\n\ninterface policyDetailsInterface {\n policy: string;\n}\n\nexport const usersSort = (a: User, b: User) => {\n if (a.accessKey && b.accessKey) {\n if (a.accessKey > b.accessKey) {\n return 1;\n }\n if (a.accessKey < b.accessKey) {\n return -1;\n }\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policySort = (a: Policy, b: Policy) => {\n if (a.name! > b.name!) {\n return 1;\n }\n if (a.name! < b.name!) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const stringSort = (a: string, b: string) => {\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policyDetailsSort = (\n a: policyDetailsInterface,\n b: policyDetailsInterface,\n) => {\n if (a.policy > b.policy) {\n return 1;\n }\n if (a.policy < b.policy) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n"],"names":["ACCOUNT_TABLE_COLUMNS","label","elementKey","renderFunction","expTime","fmtDate","DateTime","fromISO","toUTC","toFormat","_jsx","title","children","status","_ref","open","selectedAccessKey","closeModalAndRefresh","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","loading","setLoading","_useState3","_useState4","policyDefinition","setPolicyDefinition","useEffect","sourceAccKey","encodeURLString","api","serviceAccounts","getServiceAccountPolicy","then","res","data","catch","err","setModalErrorSnackMessage","errorToHandler","ModalWrapper","modalOpen","onClose","titleIcon","ChangeAccessPolicyIcon","noValidate","autoComplete","onSubmit","e","newPolicy","preventDefault","setServiceAccountPolicy","policy","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","json","sent","setErrorSnackMessage","stop","_x","apply","arguments","_jsxs","Grid","container","item","xs","CodeMirrorWrapper","value","onChange","editorHeight","sx","modalStyleUtils","modalButtonBar","Button","id","type","variant","onClick","disabled","color","WrappedComponent","fallback","length","undefined","props","Suspense","_objectSpread","_ref$label","_ref$tooltip","tooltip","_ref$mode","mode","_ref$editorHeight","CodeEditor","helpTools","Fragment","TooltipWrapper","CopyToClipboard","text","icon","CopyIcon","withStyles","theme","createStyles","headerContainer","backgroundColor","borderRadius","marginBottom","padding","paddingBottom","labelHeadline","fontSize","marginLeft","labelText","marginRight","classes","className","configurationElements","PublicIcon","configuration_id","configuration_label","CompressIcon","CodeIcon","LocalHospitalIcon","FindReplaceIcon","VpnKeyIcon","CallToActionIcon","PendingActionsIcon","LogsIcon","style","width","height","fieldsConfigurations","region","name","required","placeholder","compression","withBorder","heal","scanner","etcd","multiline","logger_webhook","audit_webhook","audit_kafka","customValueProcess","origValue","removeEmptyFields","formFields","filter","field","selectSAs","setSelectedSAs","selectedSAs","targetD","target","checked","elements","_toConsumableArray","push","element","overrideFields","overrideReturn","forEach","envItem","env_override","overrideEnv","_defineProperty","key","closeDeleteModalAndRefresh","deleteOpen","_useApi","useApi","_useApi2","deleteLoading","invokeDeleteApi","ConfirmDialog","confirmText","isOpen","ConfirmDeleteIcon","isLoading","onConfirm","confirmationContent","usersSort","a","b","accessKey","policySort","stringSort","policyDetailsSort"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/8045.428d49a9.chunk.js b/portal-ui/build/static/js/8045.428d49a9.chunk.js deleted file mode 100644 index dbf66e5f75..0000000000 --- a/portal-ui/build/static/js/8045.428d49a9.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[8045],{68045:function(e,t,n){n.r(t),n.d(t,{default:function(){return J}});var a=n(4942),i=n(93433),r=n(29439),s=n(72791),o=n(57689),c=n(29945),l=n(23814),u=n(38442),d=n(56087),h=n(87995),x=n(81551),g=n(78687),m=n(46078),p=n(54756),f=n(47974),b=n(31776),j=n(82342),v=n(99670),k=n(73996),C=n(27454),Z=n(81806),S=n(59114),y=n(66514),_=n(1413),w=n(11135),E=n(25787),T=n(26181),B=n.n(T),N=n(15146),F=n(98946),z=n(56028),L=n(80184),R=(0,E.Z)((function(e){return(0,w.Z)({wizardStepContainer:{display:"flex",flexDirection:"column",flex:1},wizardComponent:{overflowY:"auto",marginBottom:10,height:"calc(100vh - 100px - 80px)",minHeight:400,flex:1,width:"100%"},wizardModal:{overflowY:"auto",marginBottom:10,height:"calc(100vh - 515px)"},buttonsContainer:{display:"flex",flexDirection:"row",justifyContent:"flex-start",padding:"10px 0",borderTop:"#EAEAEA 1px solid","& button":{marginLeft:10},"&.forModal":{paddingBottom:0}},buttonInnerContainer:{width:"100%",display:"flex",justifyContent:"flex-end",marginRight:15}})}))((function(e){var t=e.classes,n=e.page,a=e.pageChange,i=e.loadingStep,r=e.forModal;return(0,L.jsxs)("div",{className:t.wizardStepContainer,children:[(0,L.jsx)("div",{className:r?t.wizardModal:t.wizardComponent,children:n.componentRender}),i&&(0,L.jsx)("div",{children:(0,L.jsx)(c.kod,{})}),(0,L.jsx)("div",{className:"".concat(t.buttonsContainer," ").concat(r?"forModal":""),children:(0,L.jsx)("div",{className:t.buttonInnerContainer,children:n.buttons.map((function(e){return e.componentRender?e.componentRender:(0,L.jsx)(c.zxk,{id:"wizard-button-"+e.label,variant:"regular",onClick:function(){!function(e){switch(e.type){case"next":a("++");break;case"back":a("--");break;case"to":a(e.toPage||0)}e.action&&e.action(a)}(e)},disabled:!e.enabled,label:e.label},"button-".concat(n.label,"-").concat(e.label))}))})})]})})),I=n(90493),M=n(61889),A=n(84852),K=n(49900),P=(0,E.Z)((function(e){return(0,w.Z)({wizFromContainer:{},wizFromModal:{position:"relative"},modalWizardSteps:{padding:5,borderBottom:"#eaeaea 1px solid","& ul":{padding:0,marginTop:0,display:"flex",justifyContent:"space-evenly","& li":{listStyle:"lower-roman","&::marker":{paddingLeft:15}}}},buttonList:{backgroundColor:"transparent",border:"none",cursor:"pointer","&:not(:disabled):hover":{textDecoration:"underline"},"&:selected, &:active, &:focus, &:focus:active":{border:"none",outline:0,boxShadow:"none"}},paddedContentGrid:{marginTop:8,padding:"0 10px",minHeight:400},stepsLabel:{fontSize:20,color:"#393939",fontWeight:600,margin:"15px 12px","&.stepsModalTitle":{textAlign:"center",width:"100%",marginTop:0,marginBottom:10}},stepsMasterContainer:{position:"sticky",top:0,backgroundColor:"#FFFFFF",width:"100%",maxHeight:90},verticalSteps:{borderRight:"1px solid #E5E5E5",background:"#F8F8F8"},stepsContainer:{paddingTop:0,"& .MuiButtonBase-root.Mui-selected":{background:"#E5E5E5"}},stepItem:{minHeight:60,borderBottom:"1px solid #E5E5E5","&:hover":{background:"rgba(247,247,247,0.7)"}}})}))((function(e){var t=e.classes,n=e.wizardSteps,a=e.loadingStep,i=e.forModal,o=(0,s.useState)(0),c=(0,r.Z)(o,2),l=c[0],u=c[1],d=function(e){var t=n.length-1;if("++"===e){var a=l+1;a>t&&(a=t),u(a)}if("--"===e){var i=l-1;i<0&&(i=0),u(i)}if("number"===typeof e){var r=e;e<0&&(r=0),e>t&&(r=t),u(r)}};if(0===n.length)return null;return(0,L.jsxs)(M.ZP,{container:!0,className:i?t.wizFromModal:t.wizFromContainer,children:[i?(0,L.jsx)(s.Fragment,{children:(0,L.jsxs)("div",{className:t.stepsMasterContainer,children:[(0,L.jsx)("div",{className:"".concat(t.stepsLabel," stepsModalTitle"),children:"Steps"}),(0,L.jsx)("div",{className:t.modalWizardSteps,children:(0,L.jsx)("ul",{children:n.map((function(e,n){return(0,L.jsx)("li",{children:(0,L.jsx)("button",{onClick:function(){return d(n)},disabled:n>l,className:t.buttonList,children:e.label})},"wizard-".concat(n.toString()))}))})})]})}):(0,L.jsx)(s.Fragment,{children:(0,L.jsx)(M.ZP,{item:!0,xs:12,sm:2,md:2,lg:2,xl:2,className:t.verticalSteps,children:(0,L.jsx)(s.Fragment,{children:(0,L.jsx)(I.Z,{component:"nav",dense:!0,classes:{root:t.stepsContainer},children:n.map((function(e,n){return(0,L.jsx)(A.ZP,{id:"wizard-step-"+e.label.toLowerCase().replaceAll(" ","-"),button:!0,disableRipple:!0,onClick:function(){return d(n)},selected:l===n,classes:{root:t.stepItem},children:(0,L.jsx)(K.Z,{primary:e.label})},"wizard-".concat(n.toString()))}))})})})}),(0,L.jsx)(M.ZP,{item:!0,xs:12,sm:i?12:10,md:i?12:10,lg:i?12:10,xl:i?12:10,className:i?"":t.paddedContentGrid,children:(0,L.jsx)(R,{page:n[l],pageChange:d,loadingStep:a,forModal:i})})]})})),D=n(17420),U=(0,E.Z)((function(e){return(0,w.Z)((0,_.Z)((0,_.Z)((0,_.Z)((0,_.Z)({resultGrid:{display:"grid",gridTemplateColumns:"45px auto",alignItems:"center",justifyContent:"stretch"},errorIcon:{paddingTop:5,color:"#C72C48"},successIcon:{paddingTop:5,color:"#42C91A"}},l.bK),l.ID),l.DF),l.QV))}))((function(e){var t,n=e.open,a=e.closeModalAndRefresh,i=e.classes,o=e.buckets,l=(0,x.TL)(),u=(0,s.useState)(!1),d=(0,r.Z)(u,2),g=d[0],m=d[1],p=(0,s.useState)(!0),f=(0,r.Z)(p,2),v=f[0],k=f[1],C=(0,s.useState)([]),Z=(0,r.Z)(C,2),S=Z[0],y=Z[1],w=(0,s.useState)(""),E=(0,r.Z)(w,2),T=E[0],R=E[1],I=(0,s.useState)(""),M=(0,r.Z)(I,2),A=M[0],K=M[1],U=(0,s.useState)(""),W=(0,r.Z)(U,2),O=W[0],q=W[1],Y=(0,s.useState)(""),H=(0,r.Z)(Y,2),V=H[0],G=H[1],Q=(0,s.useState)(!1),X=(0,r.Z)(Q,2),J=X[0],$=X[1],ee=(0,s.useState)("0"),te=(0,r.Z)(ee,2),ne=te[0],ae=te[1],ie=(0,s.useState)("0"),re=(0,r.Z)(ie,2),se=re[0],oe=re[1],ce=(0,s.useState)("expiry"),le=(0,r.Z)(ce,2),ue=le[0],de=le[1],he=(0,s.useState)("0"),xe=(0,r.Z)(he,2),ge=xe[0],me=xe[1],pe=(0,s.useState)("0"),fe=(0,r.Z)(pe,2),be=fe[0],je=fe[1],ve=(0,s.useState)(!1),ke=(0,r.Z)(ve,2),Ce=ke[0],Ze=ke[1],Se=(0,s.useState)(null),ye=(0,r.Z)(Se,2),_e=ye[0],we=ye[1];(0,s.useEffect)((function(){v&&b.h.admin.tiersList().then((function(e){var t=B()(e.data,"items",[]);if(null!==t&&t.length>=1){var n=t.map((function(e){var t=e.type,n=B()(e,"".concat(t,".name"),"");return{label:n,value:n}}));y(n),n.length>0&&q(n[0].value)}k(!1)})).catch((function(e){k(!1),l((0,h.zb)((0,j.g)(e.error)))}))}),[v,l]),(0,s.useEffect)((function(){var e=!0;"expiry"!==ue&&""===O&&(e=!1),Ze(e)}),[ue,ge,be,O]);var Ee=function(e){var t=e.errString;switch(t){case"":return(0,L.jsx)("div",{className:i.successIcon,children:(0,L.jsx)(F.Z,{})});case"n/a":return null;default:if(t)return(0,L.jsx)("div",{className:i.errorIcon,children:(0,L.jsx)(c.ua7,{tooltip:t,placement:"top",children:(0,L.jsx)(N.Z,{})})})}return null};return(0,L.jsx)(z.Z,{modalOpen:n,onClose:function(){a(!1)},title:"Set Lifecycle to multiple buckets",children:(0,L.jsx)(P,{loadingStep:g||v,wizardSteps:[{label:"Lifecycle Configuration",componentRender:(0,L.jsxs)(s.Fragment,{children:[(0,L.jsx)(c.rjZ,{item:!0,xs:12,children:(0,L.jsx)(c.bSr,{label:"Local Buckets to replicate",children:o.join(", ")})}),(0,L.jsx)("h4",{children:"Remote Endpoint Configuration"}),(0,L.jsxs)(c.ltY,{withBorders:!1,containerPadding:!1,children:[(0,L.jsxs)("fieldset",{className:"inputItem",children:[(0,L.jsx)("legend",{children:"Lifecycle Configuration"}),(0,L.jsx)(c.Eep,{currentValue:ue,id:"quota_type",name:"quota_type",label:"ILM Rule",onChange:function(e){de(e.target.value)},selectorOptions:[{value:"expiry",label:"Expiry"},{value:"transition",label:"Transition"}]}),"expiry"===ue?(0,L.jsxs)(s.Fragment,{children:[(0,L.jsx)(c.Wzg,{type:"number",id:"expiry_days",name:"expiry_days",onChange:function(e){me(e.target.value)},label:"Expiry Days",value:ge,min:"0"}),(0,L.jsx)(c.Wzg,{type:"number",id:"noncurrentversion_expiration_days",name:"noncurrentversion_expiration_days",onChange:function(e){ae(e.target.value)},label:"Non-current Expiration Days",value:ne,min:"0"})]}):(0,L.jsxs)(s.Fragment,{children:[(0,L.jsx)(c.Wzg,{type:"number",id:"transition_days",name:"transition_days",onChange:function(e){je(e.target.value)},label:"Transition Days",value:be,min:"0"}),(0,L.jsx)(c.Wzg,{type:"number",id:"noncurrentversion_transition_days",name:"noncurrentversion_transition_days",onChange:function(e){oe(e.target.value)},label:"Non-current Transition Days",value:se,min:"0"}),(0,L.jsx)(c.Wzg,{id:"noncurrentversion_t_SC",name:"noncurrentversion_t_SC",onChange:function(e){G(e.target.value)},placeholder:"Set Non-current Version Transition Storage Class",label:"Non-current Version Transition Storage Class",value:V}),(0,L.jsx)(c.PhF,{label:"Storage Class",id:"storage_class",name:"storage_class",value:O,onChange:function(e){q(e)},options:S})]})]}),(0,L.jsxs)("fieldset",{className:"inputItem",children:[(0,L.jsx)("legend",{children:"File Configuration"}),(0,L.jsx)(c.Wzg,{id:"prefix",name:"prefix",onChange:function(e){R(e.target.value)},label:"Prefix",value:T}),(0,L.jsx)(D.Z,{name:"tags",label:"Tags",elements:A,onChange:function(e){K(e)},keyPlaceholder:"Tag Key",valuePlaceholder:"Tag Value",withBorder:!0}),(0,L.jsx)(c.rsf,{value:"expired_delete_marker",id:"expired_delete_marker",name:"expired_delete_marker",checked:J,onChange:function(e){$(e.target.checked)},label:"Expired Object Delete Marker"})]})]})]}),buttons:[{type:"custom",label:"Create Rules",enabled:!v&&!g&&Ce,action:function(e){var t={};if("expiry"===ue){var n={expiry_days:parseInt(ge)};t=(0,_.Z)((0,_.Z)({},n),{},{noncurrentversion_expiration_days:parseInt(ne)})}else{var a={transition_days:parseInt(be)};t=(0,_.Z)((0,_.Z)({},a),{},{noncurrentversion_transition_days:parseInt(se),noncurrentversion_transition_storage_class:V,storage_class:O})}var i=(0,_.Z)({buckets:o,type:ue,prefix:T,tags:A,expired_object_delete_marker:J},t);b.h.buckets.addMultiBucketLifecycle(i).then((function(t){m(!1),we(t.data),e("++")})).catch((function(e){m(!1),l((0,h.zb)((0,j.g)(e.error)))}))}}]},{label:"Results",componentRender:(0,L.jsxs)(s.Fragment,{children:[(0,L.jsx)("h3",{children:"Multi Bucket lifecycle Assignments Results"}),(0,L.jsx)(c.rjZ,{container:!0,children:(0,L.jsxs)(c.rjZ,{item:!0,xs:12,className:i.formScrollable,children:[(0,L.jsx)("h4",{children:"Buckets Results"}),null===_e||void 0===_e||null===(t=_e.results)||void 0===t?void 0:t.map((function(e){return(0,L.jsxs)("div",{className:i.resultGrid,children:[Ee({errString:e.error||""}),(0,L.jsx)("span",{children:e.bucketName})]})}))]})})]}),buttons:[{type:"custom",label:"Done",enabled:!g,action:function(){return a(!0)}}]}],forModal:!0})})})),W=n(49535),O=n(17691),q=n(11087),Y=n(45248),H=O.ZP.div((function(e){var t=e.theme;return{border:"".concat(B()(t,"borderColor","#eaeaea")," 1px solid"),borderRadius:3,padding:15,cursor:"pointer","&.disabled":{backgroundColor:B()(t,"signalColors.danger","red")},"&:hover":{backgroundColor:B()(t,"boxBackground","#FBFAFA")},"& .bucketTitle":{display:"flex",alignItems:"center",justifyContent:"flex-start",gap:10,"& h1":(0,a.Z)({padding:0,margin:0,marginBottom:5,fontSize:22,color:B()(t,"screenTitle.iconColor","#07193E")},"@media (max-width: ".concat(c.Egj.md,"px)"),{marginBottom:0})},"& .bucketDetails":(0,a.Z)({display:"flex",gap:40,"& span":{fontSize:14}},"@media (max-width: ".concat(c.Egj.md,"px)"),{flexFlow:"column-reverse",gap:5}),"& .bucketMetrics":(0,a.Z)({display:"flex",alignItems:"center",marginTop:20,gap:25,borderTop:"".concat(B()(t,"borderColor","#E2E2E2")," 1px solid"),paddingTop:20,"& svg.bucketIcon":{color:B()(t,"screenTitle.iconColor","#07193E"),fill:B()(t,"screenTitle.iconColor","#07193E")},"& .metric":{"& .min-icon":{color:B()(t,"fontColor","#000"),width:13,marginRight:5}},"& .metricLabel":{fontSize:14,fontWeight:"bold",color:B()(t,"fontColor","#000")},"& .metricText":{fontSize:24,fontWeight:"bold"},"& .unit":{fontSize:12,fontWeight:"normal"}},"@media (max-width: ".concat(c.Egj.md,"px)"),{marginTop:8,paddingTop:8})}})),V=function(e){var t=e.bucket,n=e.onSelect,a=e.selected,i=e.bulkSelect,r=(0,o.s0)(),l=(0,Y.ae)("".concat(t.size)||"0"),h=l.split(" ")[0],x=l.split(" ")[1],g=B()(t,"details.quota.quota","0"),m=(0,Y.Am)(g,!0,!1),p=(0,u.F)(t.name,d.D[d.EI.BUCKET_ADMIN])&&!1;return(0,L.jsxs)(H,{onClick:function(){r("/buckets/".concat(t.name,"/admin"))},id:"manageBucket-".concat(t.name),className:"bucket-item ".concat(p?"disabled":""),children:[(0,L.jsxs)(c.xuv,{className:"bucketTitle",children:[i&&(0,L.jsx)(c.xuv,{onClick:function(e){e.stopPropagation()},children:(0,L.jsx)(c.XZJ,{checked:a,id:"select-".concat(t.name),label:"",name:"select-".concat(t.name),onChange:function(e){n(e)},value:t.name})}),(0,L.jsxs)("h1",{children:[t.name," ",p]})]}),(0,L.jsxs)(c.xuv,{className:"bucketDetails",children:[(0,L.jsxs)("span",{id:"created-".concat(t.name),children:[(0,L.jsx)("strong",{children:"Created:"})," ",t.creation_date?new Date(t.creation_date).toString():"n/a"]}),(0,L.jsxs)("span",{id:"access-".concat(t.name),children:[(0,L.jsx)("strong",{children:"Access:"})," ",function(e){var t,n,a,i,r,s;return null===(t=e.rw_access)||void 0===t||!t.read||null!==(n=e.rw_access)&&void 0!==n&&n.write?null!==(a=e.rw_access)&&void 0!==a&&a.read||null===(i=e.rw_access)||void 0===i||!i.write?null!==(r=e.rw_access)&&void 0!==r&&r.read&&null!==(s=e.rw_access)&&void 0!==s&&s.write?"R/W":"":"W":"R"}(t)]})]}),(0,L.jsxs)(c.xuv,{className:"bucketMetrics",children:[(0,L.jsx)(q.rU,{to:"/buckets/".concat(t.name,"/admin"),children:(0,L.jsx)(c.wNb,{className:"bucketIcon",style:{height:48,width:48}})}),(0,L.jsxs)(c.rjZ,{item:!0,className:"metric",children:[(0,L.jsx)(c.rHZ,{}),(0,L.jsx)("span",{className:"metricLabel",children:"Usage"}),(0,L.jsxs)("div",{className:"metricText",children:[h,(0,L.jsx)("span",{className:"unit",children:x}),"0"!==g&&(0,L.jsxs)(s.Fragment,{children:[" ","/ ",m.total,(0,L.jsx)("span",{className:"unit",children:m.unit})]})]})]}),(0,L.jsxs)(c.rjZ,{item:!0,className:"metric",children:[(0,L.jsx)(c.xpX,{}),(0,L.jsx)("span",{className:"metricLabel",children:"Objects"}),(0,L.jsx)("div",{className:"metricText",children:t.objects?(0,Y.CE)(t.objects):0})]})]})]})},G=n(64163),Q=n(84741),X=(0,E.Z)((function(e){return(0,w.Z)((0,_.Z)((0,_.Z)({remoteBucketList:{display:"grid",gridTemplateColumns:"auto auto 45px",alignItems:"center",justifyContent:"stretch"},errorIcon:{color:"#C72C48"},successIcon:{color:"#42C91A"},hide:{opacity:0,transitionDuration:"0.3s"}},l.oO),l.AK))}))((function(e){var t=e.open,n=e.closeModalAndRefresh,a=e.classes,o=e.buckets,l=(0,x.TL)(),u=(0,s.useState)([]),d=(0,r.Z)(u,2),g=d[0],m=d[1],p=(0,s.useState)(!1),f=(0,r.Z)(p,2),v=f[0],k=f[1],C=(0,s.useState)(!1),Z=(0,r.Z)(C,2),S=Z[0],y=Z[1],_=(0,s.useState)(""),w=(0,r.Z)(_,2),E=w[0],T=w[1],R=(0,s.useState)(""),I=(0,r.Z)(R,2),M=I[0],A=I[1],K=(0,s.useState)(""),D=(0,r.Z)(K,2),U=D[0],W=D[1],O=(0,s.useState)(""),q=(0,r.Z)(O,2),H=q[0],V=q[1],X=(0,s.useState)(!0),J=(0,r.Z)(X,2),$=J[0],ee=J[1],te=(0,s.useState)("async"),ne=(0,r.Z)(te,2),ae=ne[0],ie=ne[1],re=(0,s.useState)("100"),se=(0,r.Z)(re,2),oe=se[0],ce=se[1],le=(0,s.useState)("Gi"),ue=(0,r.Z)(le,2),de=ue[0],he=ue[1],xe=(0,s.useState)("60"),ge=(0,r.Z)(xe,2),me=ge[0],pe=ge[1],fe=(0,s.useState)([]),be=(0,r.Z)(fe,2),je=be[0],ve=be[1],ke=(0,s.useState)([]),Ce=(0,r.Z)(ke,2),Ze=Ce[0],Se=Ce[1],ye=(0,s.useState)([]),_e=(0,r.Z)(ye,2),we=_e[0],Ee=_e[1],Te=Ze.map((function(e){return{label:e,value:e}}));(0,s.useEffect)((function(){if(0===je.length){var e=[],t=[];o.forEach((function(n){e.push(n),t.push("")})),ve(t),m(e)}}),[o,je.length]);var Be=function(e){var t=e.errString;switch(t){case"":return(0,L.jsx)("div",{className:a.successIcon,children:(0,L.jsx)(F.Z,{})});case"n/a":return null;default:if(t)return(0,L.jsx)("div",{className:a.errorIcon,children:(0,L.jsx)(c.ua7,{tooltip:t,placement:"top",children:(0,L.jsx)(N.Z,{})})})}return null},Ne=function(e,t){var n=(0,i.Z)(je);n[e]=t,ve(n)},Fe=function(e){var t=(0,i.Z)(g),n=(0,i.Z)(je);null===e||void 0===e||e.forEach((function(e){var a=B()(e,"errorString","");if(!a||""===a){var i=t.indexOf(e.originBucket||"");t.splice(i,1),n.splice(i,1)}})),m(t),ve(n)};return(0,L.jsx)(z.Z,{modalOpen:t,onClose:function(){n(!1)},title:"Set Multiple Bucket Replication",children:(0,L.jsx)(P,{loadingStep:v||S,wizardSteps:[{label:"Remote Configuration",componentRender:(0,L.jsxs)(s.Fragment,{children:[(0,L.jsx)(c.rjZ,{item:!0,xs:12,children:(0,L.jsx)(G.Z,{label:"Local Buckets to replicate",content:g.join(", ")})}),(0,L.jsx)("h4",{children:"Remote Endpoint Configuration"}),(0,L.jsx)("span",{className:a.descriptionText,children:"Please avoid the use of root credentials for this feature"}),(0,L.jsx)("br",{}),(0,L.jsx)("br",{}),(0,L.jsxs)(c.ltY,{containerPadding:!1,withBorders:!1,children:[(0,L.jsx)(c.Wzg,{id:"accessKey",name:"accessKey",onChange:function(e){T(e.target.value)},label:"Access Key",value:E}),(0,L.jsx)(c.Wzg,{id:"secretKey",name:"secretKey",onChange:function(e){A(e.target.value)},label:"Secret Key",value:M}),(0,L.jsx)(c.Wzg,{id:"targetURL",name:"targetURL",onChange:function(e){W(e.target.value)},placeholder:"play.min.io:9000",label:"Target URL",value:U}),(0,L.jsx)(c.rsf,{checked:$,id:"useTLS",name:"useTLS",label:"Use TLS",onChange:function(e){ee(e.target.checked)},value:"yes"}),(0,L.jsx)(c.Wzg,{id:"region",name:"region",onChange:function(e){V(e.target.value)},label:"Region",value:H}),(0,L.jsx)(c.PhF,{id:"replication_mode",name:"replication_mode",onChange:function(e){ie(e)},label:"Replication Mode",value:ae,options:[{label:"Asynchronous",value:"async"},{label:"Synchronous",value:"sync"}]}),"async"===ae&&(0,L.jsx)(c.Wzg,{type:"number",id:"bandwidth_scalar",name:"bandwidth_scalar",onChange:function(e){e.target.validity.valid&&ce(e.target.value)},label:"Bandwidth",value:oe,min:"0",pattern:"[0-9]*",overlayObject:(0,L.jsx)(Q.Z,{id:"quota_unit",onUnitChange:function(e){he(e)},unitSelected:de,unitsList:(0,Y.zQ)(["Ki"]),disabled:!1})}),(0,L.jsx)(c.Wzg,{id:"healthCheck",name:"healthCheck",onChange:function(e){pe(e.target.value)},label:"Health Check Duration",value:me})]})]}),buttons:[{type:"custom",label:"Next",enabled:!S,action:function(e){var t={accessKey:E,secretKey:M,targetURL:U,useTLS:$};y(!0),b.h.listExternalBuckets.listExternalBuckets(t).then((function(t){var n=B()(t.data,"buckets",[]);if(n&&n.length>0){var a=n.map((function(e){return e.name}));Se(a)}e("++"),y(!1)})).catch((function(e){y(!1),l((0,h.zb)((0,j.g)(e.error)))}))}}]},{label:"Bucket Assignments",componentRender:(0,L.jsxs)(s.Fragment,{children:[(0,L.jsx)("h3",{children:"Remote Bucket Assignments"}),(0,L.jsx)("span",{className:a.descriptionText,children:"Please select / type the desired remote bucket were you want the local data to be replicated."}),(0,L.jsx)("div",{className:a.remoteBucketList,children:g.map((function(e,t){var n,i=function(e){if(we&&we.length>0){var t=we.find((function(t){return t.originBucket===e}));if(t)return B()(t,"errorString","")||""}return"n/a"}(e);return(0,L.jsxs)(s.Fragment,{children:[(0,L.jsx)("div",{className:""===i?a.hide:"",children:e}),(0,L.jsx)("div",{className:""===i?a.hide:"",children:(n=t,Ze.length>0?(0,L.jsx)(s.Fragment,{children:(0,L.jsx)(c.PhF,{label:"",id:"assign-bucket-".concat(n),name:"assign-bucket-".concat(n),value:je[n],onChange:function(e){Ne(n,e)},options:Te,disabled:v})}):(0,L.jsx)(s.Fragment,{children:(0,L.jsx)(c.Wzg,{id:"assign-bucket-".concat(n),name:"assign-bucket-".concat(n),label:"",onChange:function(e){Ne(n,e.target.value)},value:je[n],disabled:v})}))}),(0,L.jsx)("div",{className:""===i?a.hide:"",children:we&&we.length>0&&(0,L.jsx)(Be,{errString:i})})]},"buckets-assignation-".concat(t.toString(),"-").concat(e))}))})]}),buttons:[{type:"back",label:"Back",enabled:!0},{type:"next",label:"Create",enabled:!v,action:function(){k(!0);var e=g.map((function(e,t){return{originBucket:e,destinationBucket:je[t]}})),t="".concat($?"https://":"http://").concat(U),a=parseInt(me),i={accessKey:E,secretKey:M,targetURL:t,region:H,bucketsRelation:e,syncMode:ae,bandwidth:"async"===ae?parseInt((0,Y.Pw)(oe,de,!0)):0,healthCheckPeriod:a};b.h.bucketsReplication.setMultiBucketReplication(i).then((function(e){k(!1);var t=e.data.replicationState;Ee(t);var a=null===t||void 0===t?void 0:t.filter((function(e){return e.errorString&&""!==e.errorString}));0===(null===a||void 0===a?void 0:a.length)?n(!0):setTimeout((function(){Fe(t)}),500)})).catch((function(e){k(!1),l((0,h.zb)((0,j.g)(e.error)))}))}}]}],forModal:!0})})})),J=function(){var e=(0,x.TL)(),t=(0,o.s0)(),n=(0,s.useState)([]),_=(0,r.Z)(n,2),w=_[0],E=_[1],T=(0,s.useState)(!0),B=(0,r.Z)(T,2),N=B[0],F=B[1],z=(0,s.useState)(""),R=(0,r.Z)(z,2),I=R[0],M=R[1],A=(0,s.useState)([]),K=(0,r.Z)(A,2),P=K[0],D=K[1],O=(0,s.useState)(!1),q=(0,r.Z)(O,2),Y=q[0],H=q[1],G=(0,s.useState)(!1),Q=(0,r.Z)(G,2),J=Q[0],$=Q[1],ee=(0,s.useState)(!1),te=(0,r.Z)(ee,2),ne=te[0],ae=te[1],ie=(0,s.useState)(!1),re=(0,r.Z)(ie,2),se=re[0],oe=re[1],ce=(0,g.v9)(m.$4),le=!(null===ce||void 0===ce||!ce.includes("object-browser-only"));(0,s.useEffect)((function(){e((0,h.Sc)("ob_bucket_list"))}),[e]),(0,s.useEffect)((function(){if(N){F(!0),b.h.buckets.listBuckets().then((function(t){t.data?(F(!1),E(t.data.buckets||[]),e((0,p.Cn)(!0))):t.error&&(F(!1),e((0,h.Ih)((0,j.g)(t.error))))}))}}),[N,e]);var ue=w.filter((function(e){return""===I||e.name.indexOf(I)>=0})),de=w.length>0,he=function(e){var t=e.target,n=t.value,a=t.checked,r=(0,i.Z)(P);return a?r.push(n):r=r.filter((function(e){return e!==n})),D(r),r};(0,s.useEffect)((function(){var e=!1;P.forEach((function(t){(0,W.Z)(t,d.D[d.EI.BUCKET_LIFECYCLE],!0)?ae(!0):e=!0})),ae(!e)}),[P]);var xe=(0,W.Z)("*",[d.Ft.S3_CREATE_BUCKET]),ge=(0,W.Z)("*",[d.Ft.S3_LIST_BUCKET,d.Ft.S3_ALL_LIST_BUCKET]);return(0,L.jsxs)(s.Fragment,{children:[Y&&(0,L.jsx)(X,{open:Y,buckets:P,closeModalAndRefresh:function(e){H(!1),e&&D([])}}),J&&(0,L.jsx)(U,{buckets:P,closeModalAndRefresh:function(e){$(!1),e&&D([])},open:J}),!le&&(0,L.jsx)(f.Z,{label:"Buckets",actions:(0,L.jsx)(v.Z,{})}),(0,L.jsxs)(c.Xgh,{children:[(0,L.jsxs)(c.rjZ,{item:!0,xs:12,sx:l.OR.actionsTray,children:[le&&(0,L.jsx)(c.rjZ,{item:!0,xs:!0,children:(0,L.jsx)(k.Z,{marginRight:15,marginTop:10})}),de&&(0,L.jsx)(S.Z,{onChange:M,placeholder:"Search Buckets",value:I,sx:(0,a.Z)({minWidth:380},"@media (max-width: ".concat(c.Egj.md,"px)"),{minWidth:220})}),(0,L.jsxs)(c.rjZ,{item:!0,xs:12,sx:{display:"flex",alignItems:"center",justifyContent:"flex-end",gap:5},children:[!le&&(0,L.jsxs)(s.Fragment,{children:[(0,L.jsx)(C.Z,{tooltip:de?se?"Unselect Buckets":"Select Multiple Buckets":"",children:(0,L.jsx)(c.zxk,{id:"multiple-bucket-seection",onClick:function(){oe(!se),D([])},icon:(0,L.jsx)(c.amE,{}),variant:se?"callAction":"regular",disabled:!de})}),se&&(0,L.jsx)(C.Z,{tooltip:de?P.length===ue.length?"Unselect All Buckets":"Select All Buckets":"",children:(0,L.jsx)(c.zxk,{id:"select-all-buckets",onClick:function(){if(P.length!==ue.length){var e=ue.map((function(e){return e.name}));D(e)}else D([])},icon:(0,L.jsx)(c.QQb,{}),variant:"regular"})}),(0,L.jsx)(C.Z,{tooltip:de?ne?0===P.length?se?"Please select at least one bucket on which to configure Lifecycle":"Use the Select Multiple Buckets button to choose buckets on which to configure Lifecycle":"Set Lifecycle":(0,d.MK)(d.D[d.EI.BUCKET_LIFECYCLE],"configure lifecycle for the selected buckets"):"",children:(0,L.jsx)(c.zxk,{id:"set-lifecycle",onClick:function(){$(!0)},icon:(0,L.jsx)(c.QIv,{}),variant:"regular",disabled:0===P.length||!ne})}),(0,L.jsx)(C.Z,{tooltip:de?0===P.length?se?"Please select at least one bucket on which to configure Replication":"Use the Select Multiple Buckets button to choose buckets on which to configure Replication":"Set Replication":"",children:(0,L.jsx)(c.zxk,{id:"set-replication",onClick:function(){H(!0)},icon:(0,L.jsx)(c.D6F,{}),variant:"regular",disabled:0===P.length})})]}),(0,L.jsx)(C.Z,{tooltip:"Refresh",children:(0,L.jsx)(c.zxk,{id:"refresh-buckets",onClick:function(){F(!0)},icon:(0,L.jsx)(c.DuK,{}),variant:"regular"})}),!le&&(0,L.jsx)(C.Z,{tooltip:xe?"":(0,d.MK)([d.Ft.S3_CREATE_BUCKET],"create a bucket"),children:(0,L.jsx)(c.zxk,{id:"create-bucket",onClick:function(){t(d.gA.ADD_BUCKETS)},icon:(0,L.jsx)(c.dtP,{}),variant:"callAction",disabled:!xe,label:"Create Bucket"})})]})]}),N&&(0,L.jsx)(c.kod,{}),!N&&(0,L.jsxs)(c.rjZ,{item:!0,xs:12,sx:{marginTop:25,height:"calc(100vh - 211px)","&.isEmbedded":{height:"calc(100vh - 128px)"}},className:le?"isEmbedded":"",children:[0!==ue.length&&(0,L.jsx)(y.Z,{rowRenderFunction:function(e){var t=ue[e]||null;return t?(0,L.jsx)(V,{bucket:t,onSelect:he,selected:P.includes(t.name),bulkSelect:se}):null},totalItems:ue.length}),0===ue.length&&""!==I&&(0,L.jsx)(c.rjZ,{container:!0,children:(0,L.jsx)(c.rjZ,{item:!0,xs:8,children:(0,L.jsx)(c.KfX,{iconComponent:(0,L.jsx)(c.wNb,{}),title:"No Results",help:(0,L.jsx)(s.Fragment,{children:"No buckets match the filtering condition"})})})}),!de&&(0,L.jsx)(c.rjZ,{container:!0,children:(0,L.jsx)(c.rjZ,{item:!0,xs:8,children:(0,L.jsx)(c.KfX,{iconComponent:(0,L.jsx)(c.wNb,{}),title:"Buckets",help:(0,L.jsxs)(s.Fragment,{children:["MinIO uses buckets to organize objects. A bucket is similar to a folder or directory in a filesystem, where each bucket can hold an arbitrary number of objects.",(0,L.jsx)("br",{}),ge?"":(0,L.jsxs)(s.Fragment,{children:[(0,L.jsx)("br",{}),(0,d.MK)([d.Ft.S3_LIST_BUCKET,d.Ft.S3_ALL_LIST_BUCKET],"view the buckets on this server"),(0,L.jsx)("br",{})]}),(0,L.jsxs)(u.s,{scopes:[d.Ft.S3_CREATE_BUCKET],resource:d.C3,children:[(0,L.jsx)("br",{}),"To get started,\xa0",(0,L.jsx)(Z.Z,{onClick:function(){t(d.gA.ADD_BUCKETS)},children:"Create a Bucket."})]})]})})})})]})]})]})}},84741:function(e,t,n){var a=n(29439),i=n(72791),r=n(11135),s=n(25787),o=n(80911),c=n(77865),l=n(80184);t.Z=(0,s.Z)((function(e){return(0,r.Z)({buttonTrigger:{border:"#F0F2F2 1px solid",borderRadius:3,color:"#838383",backgroundColor:"#fff",fontSize:12}})}))((function(e){var t=e.classes,n=e.id,r=e.unitSelected,s=e.unitsList,u=e.disabled,d=void 0!==u&&u,h=e.onUnitChange,x=i.useState(null),g=(0,a.Z)(x,2),m=g[0],p=g[1],f=Boolean(m),b=function(e){p(null),""!==e&&h&&h(e)};return(0,l.jsxs)(i.Fragment,{children:[(0,l.jsx)("button",{id:"".concat(n,"-button"),"aria-controls":"".concat(n,"-menu"),"aria-haspopup":"true","aria-expanded":f?"true":void 0,onClick:function(e){p(e.currentTarget)},className:t.buttonTrigger,disabled:d,type:"button",children:r}),(0,l.jsx)(o.Z,{id:"".concat(n,"-menu"),"aria-labelledby":"".concat(n,"-button"),anchorEl:m,open:f,onClose:function(){b("")},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},children:s.map((function(e){return(0,l.jsx)(c.Z,{onClick:function(){return b(e.value)},children:e.label},"itemUnit-".concat(e.value,"-").concat(e.label))}))})]})}))},64163:function(e,t,n){var a=n(1413),i=n(72791),r=n(61889),s=n(11135),o=n(25787),c=n(23814),l=n(80184);t.Z=(0,o.Z)((function(e){return(0,s.Z)((0,a.Z)({},c.xx))}))((function(e){var t=e.classes,n=e.label,a=void 0===n?"":n,s=e.content,o=e.multiLine,c=void 0!==o&&o,u=e.actionButton;return(0,l.jsx)(i.Fragment,{children:(0,l.jsxs)(r.ZP,{className:t.prefinedContainer,children:[""!==a&&(0,l.jsx)(r.ZP,{item:!0,xs:12,className:t.predefinedTitle,children:a}),(0,l.jsxs)(r.ZP,{item:!0,xs:12,className:"".concat(t.predefinedList," ").concat(u?t.includesActionButton:""),children:[(0,l.jsx)(r.ZP,{item:!0,xs:12,className:c?t.innerContentMultiline:t.innerContent,children:s}),u&&(0,l.jsx)("div",{className:t.overlayShareOption,children:u})]})]})})}))},17420:function(e,t,n){var a=n(93433),i=n(29439),r=n(72791),s=n(26181),o=n.n(s),c=n(48573),l=n.n(c),u=n(29945),d=n(80184);t.Z=function(e){var t=e.elements,n=e.name,s=e.label,c=e.tooltip,h=void 0===c?"":c,x=e.keyPlaceholder,g=void 0===x?"":x,m=e.valuePlaceholder,p=void 0===m?"":m,f=e.onChange,b=e.withBorder,j=void 0!==b&&b,v=(0,r.useState)([""]),k=(0,i.Z)(v,2),C=k[0],Z=k[1],S=(0,r.useState)([""]),y=(0,i.Z)(S,2),_=y[0],w=y[1],E=(0,r.createRef)();(0,r.useEffect)((function(){if(1===C.length&&""===C[0]&&1===_.length&&""===_[0]&&t&&""!==t){var e=t.split("&"),n=[],a=[];e.forEach((function(e){var t=e.split("=");2===t.length&&(n.push(t[0]),a.push(t[1]))})),n.push(""),a.push(""),Z(n),w(a)}}),[C,_,t]),(0,r.useEffect)((function(){var e=E.current;e&&C.length>1&&e.scrollIntoView(!1)}),[C]);var T=(0,r.useRef)(!0);(0,r.useLayoutEffect)((function(){T.current?T.current=!1:F()}),[C,_]);var B=function(e){e.persist();var t=(0,a.Z)(C),n=o()(e.target,"dataset.index","0");t[parseInt(n)]=e.target.value,Z(t)},N=function(e){e.persist();var t=(0,a.Z)(_),n=o()(e.target,"dataset.index","0");t[parseInt(n)]=e.target.value,w(t)},F=l()((function(){var e="";C.forEach((function(t,n){if(C[n]&&_[n]){var a="".concat(t,"=").concat(_[n]);0!==n&&(a="&".concat(a)),e="".concat(e).concat(a)}})),f(e)}),500),z=_.map((function(e,t){return(0,d.jsxs)(u.rjZ,{item:!0,xs:12,className:"lineInputBoxes inputItem",children:[(0,d.jsx)(u.Wzg,{id:"".concat(n,"-key-").concat(t.toString()),label:"",name:"".concat(n,"-").concat(t.toString()),value:C[t],onChange:B,index:t,placeholder:g}),(0,d.jsx)("span",{className:"queryDiv",children:":"}),(0,d.jsx)(u.Wzg,{id:"".concat(n,"-value-").concat(t.toString()),label:"",name:"".concat(n,"-").concat(t.toString()),value:_[t],onChange:N,index:t,placeholder:p,overlayIcon:t===_.length-1?(0,d.jsx)(u.dtP,{}):null,overlayAction:function(){!function(){if(""!==C[C.length-1].trim()&&""!==_[_.length-1].trim()){var e=(0,a.Z)(C),t=(0,a.Z)(_);e.push(""),t.push(""),Z(e),w(t)}}()}})]},"query-pair-".concat(n,"-").concat(t.toString()))}));return(0,d.jsx)(r.Fragment,{children:(0,d.jsxs)(u.rjZ,{item:!0,xs:12,sx:{"& .lineInputBoxes":{display:"flex"},"& .queryDiv":{alignSelf:"center",margin:"-15px 4px 0",fontWeight:600}},children:[(0,d.jsxs)(u.AZs,{children:[s,""!==h&&(0,d.jsx)(u.xuv,{sx:{marginLeft:5,display:"flex",alignItems:"center","& .min-icon":{width:13}},children:(0,d.jsx)(u.ua7,{tooltip:h,placement:"top",children:(0,d.jsx)(u.byK,{style:{width:13,height:13}})})})]}),(0,d.jsxs)(u.xuv,{withBorders:j,sx:{padding:15,height:150,overflowY:"auto",position:"relative",marginTop:15},children:[z,(0,d.jsx)("div",{ref:E})]})]})})}}}]); -//# sourceMappingURL=8045.428d49a9.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/8045.428d49a9.chunk.js.map b/portal-ui/build/static/js/8045.428d49a9.chunk.js.map deleted file mode 100644 index 752da77729..0000000000 --- a/portal-ui/build/static/js/8045.428d49a9.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/8045.428d49a9.chunk.js","mappings":"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","sources":["screens/Console/Common/GenericWizard/WizardPage.tsx","screens/Console/Common/GenericWizard/GenericWizard.tsx","screens/Console/Buckets/ListBuckets/BulkLifecycleModal.tsx","screens/Console/Buckets/ListBuckets/BucketListItem.tsx","screens/Console/Buckets/ListBuckets/BulkReplicationModal.tsx","screens/Console/Buckets/ListBuckets/ListBuckets.tsx","screens/Console/Common/FormComponents/InputUnitMenu/InputUnitMenu.tsx","screens/Console/Common/FormComponents/PredefinedList/PredefinedList.tsx","screens/Console/Common/FormComponents/QueryMultiSelector/QueryMultiSelector.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 { Button, ProgressBar } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { IWizardButton, IWizardPage } from \"./types\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n wizardStepContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n flex: 1,\n },\n wizardComponent: {\n overflowY: \"auto\",\n marginBottom: 10,\n height: \"calc(100vh - 100px - 80px)\",\n minHeight: 400,\n flex: 1,\n width: \"100%\",\n },\n wizardModal: {\n overflowY: \"auto\",\n marginBottom: 10,\n height: \"calc(100vh - 515px)\",\n },\n buttonsContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flex-start\" as const,\n padding: \"10px 0\",\n borderTop: \"#EAEAEA 1px solid\",\n \"& button\": {\n marginLeft: 10,\n },\n \"&.forModal\": {\n paddingBottom: 0,\n },\n },\n buttonInnerContainer: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"flex-end\",\n marginRight: 15,\n },\n });\n\nconst WizardPage = ({\n classes,\n page,\n pageChange,\n loadingStep,\n forModal,\n}: IWizardPage) => {\n const buttonAction = (btn: IWizardButton) => {\n switch (btn.type) {\n case \"next\":\n pageChange(\"++\");\n break;\n case \"back\":\n pageChange(\"--\");\n break;\n case \"to\":\n pageChange(btn.toPage || 0);\n break;\n case \"custom\":\n default:\n }\n\n if (btn.action) {\n btn.action(pageChange);\n }\n };\n\n return (\n
    \n
    \n {page.componentRender}\n
    \n {loadingStep && (\n
    \n \n
    \n )}\n \n
    \n {page.buttons.map((btn) => {\n if (btn.componentRender) {\n return btn.componentRender;\n }\n return (\n {\n buttonAction(btn);\n }}\n disabled={!btn.enabled}\n key={`button-${page.label}-${btn.label}`}\n label={btn.label}\n />\n );\n })}\n
    \n
    \n \n );\n};\n\nexport default withStyles(styles)(WizardPage);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { IWizardMain } from \"./types\";\nimport WizardPage from \"./WizardPage\";\nimport { Grid, List } from \"@mui/material\";\nimport ListItem from \"@mui/material/ListItem\";\nimport ListItemText from \"@mui/material/ListItemText\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n wizFromContainer: {},\n wizFromModal: {\n position: \"relative\",\n },\n modalWizardSteps: {\n padding: 5,\n borderBottom: \"#eaeaea 1px solid\",\n \"& ul\": {\n padding: 0,\n marginTop: 0,\n display: \"flex\",\n justifyContent: \"space-evenly\",\n\n \"& li\": {\n listStyle: \"lower-roman\",\n \"&::marker\": {\n paddingLeft: 15,\n },\n },\n },\n },\n buttonList: {\n backgroundColor: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n \"&:not(:disabled):hover\": {\n textDecoration: \"underline\",\n },\n \"&:selected, &:active, &:focus, &:focus:active\": {\n border: \"none\",\n outline: 0,\n boxShadow: \"none\",\n },\n },\n paddedContentGrid: {\n marginTop: 8,\n padding: \"0 10px\",\n minHeight: 400,\n },\n stepsLabel: {\n fontSize: 20,\n color: \"#393939\",\n fontWeight: 600,\n margin: \"15px 12px\",\n \"&.stepsModalTitle\": {\n textAlign: \"center\",\n width: \"100%\",\n marginTop: 0,\n marginBottom: 10,\n },\n },\n stepsMasterContainer: {\n position: \"sticky\",\n top: 0,\n backgroundColor: \"#FFFFFF\",\n width: \"100%\",\n maxHeight: 90,\n },\n verticalSteps: {\n borderRight: \"1px solid #E5E5E5\",\n background: \"#F8F8F8\",\n },\n stepsContainer: {\n paddingTop: 0,\n \"& .MuiButtonBase-root.Mui-selected\": {\n background: \"#E5E5E5\",\n },\n },\n stepItem: {\n minHeight: 60,\n borderBottom: \"1px solid #E5E5E5\",\n \"&:hover\": {\n background: \"rgba(247,247,247,0.7)\",\n },\n },\n });\n\nconst GenericWizard = ({\n classes,\n wizardSteps,\n loadingStep,\n forModal,\n}: IWizardMain) => {\n const [currentStep, setCurrentStep] = useState(0);\n\n const pageChange = (toElement: string | number) => {\n const lastPage = wizardSteps.length - 1;\n\n if (toElement === \"++\") {\n let nextPage = currentStep + 1;\n\n if (nextPage > lastPage) {\n nextPage = lastPage;\n }\n\n setCurrentStep(nextPage);\n }\n\n if (toElement === \"--\") {\n let prevPage = currentStep - 1;\n\n if (prevPage < 0) {\n prevPage = 0;\n }\n\n setCurrentStep(prevPage);\n }\n\n if (typeof toElement === \"number\") {\n let pg = toElement;\n if (toElement < 0) {\n pg = 0;\n }\n\n if (toElement > lastPage) {\n pg = lastPage;\n }\n\n setCurrentStep(pg);\n }\n };\n\n if (wizardSteps.length === 0) {\n return null;\n }\n\n const stepsList = () => {\n return (\n \n \n {wizardSteps.map((step, index) => {\n return (\n pageChange(index)}\n key={`wizard-${index.toString()}`}\n selected={currentStep === index}\n classes={{\n root: classes.stepItem,\n }}\n >\n \n \n );\n })}\n \n \n );\n };\n const stepsListModal = () => {\n return (\n
      \n {wizardSteps.map((step, index) => {\n return (\n
    • \n pageChange(index)}\n disabled={index > currentStep}\n className={classes.buttonList}\n >\n {step.label}\n \n
    • \n );\n })}\n
    \n );\n };\n\n return (\n \n {forModal ? (\n \n
    \n
    Steps
    \n
    {stepsListModal()}
    \n
    \n
    \n ) : (\n \n \n {stepsList()}\n \n \n )}\n\n \n \n \n \n );\n};\n\nexport default withStyles(styles)(GenericWizard);\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 {\n FormLayout,\n Grid,\n InputBox,\n RadioGroup,\n ReadBox,\n Select,\n Switch,\n Tooltip,\n} from \"mds\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport get from \"lodash/get\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport CheckCircleOutlineIcon from \"@mui/icons-material/CheckCircleOutline\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport GenericWizard from \"../../Common/GenericWizard/GenericWizard\";\nimport QueryMultiSelector from \"../../Common/FormComponents/QueryMultiSelector/QueryMultiSelector\";\nimport { ITiersDropDown } from \"../types\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { api } from \"api\";\nimport { MultiLifecycleResult, Tier } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IBulkReplicationModal {\n open: boolean;\n closeModalAndRefresh: (clearSelection: boolean) => any;\n classes: any;\n buckets: string[];\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n resultGrid: {\n display: \"grid\",\n gridTemplateColumns: \"45px auto\",\n alignItems: \"center\",\n justifyContent: \"stretch\",\n },\n errorIcon: {\n paddingTop: 5,\n color: \"#C72C48\",\n },\n successIcon: {\n paddingTop: 5,\n color: \"#42C91A\",\n },\n ...spacingUtils,\n ...modalStyleUtils,\n ...formFieldStyles,\n ...createTenantCommon,\n });\n\nconst AddBulkReplicationModal = ({\n open,\n closeModalAndRefresh,\n classes,\n buckets,\n}: IBulkReplicationModal) => {\n const dispatch = useAppDispatch();\n const [addLoading, setAddLoading] = useState(false);\n const [loadingTiers, setLoadingTiers] = useState(true);\n const [tiersList, setTiersList] = useState([]);\n const [prefix, setPrefix] = useState(\"\");\n const [tags, setTags] = useState(\"\");\n const [storageClass, setStorageClass] = useState(\"\");\n const [NCTransitionSC, setNCTransitionSC] = useState(\"\");\n const [expiredObjectDM, setExpiredObjectDM] = useState(false);\n const [NCExpirationDays, setNCExpirationDays] = useState(\"0\");\n const [NCTransitionDays, setNCTransitionDays] = useState(\"0\");\n const [ilmType, setIlmType] = useState<\"expiry\" | \"transition\">(\"expiry\");\n const [expiryDays, setExpiryDays] = useState(\"0\");\n const [transitionDays, setTransitionDays] = useState(\"0\");\n const [isFormValid, setIsFormValid] = useState(false);\n const [results, setResults] = useState(null);\n\n useEffect(() => {\n if (loadingTiers) {\n api.admin\n .tiersList()\n .then((res) => {\n const tiersList: Tier[] | null = get(res.data, \"items\", []);\n\n if (tiersList !== null && tiersList.length >= 1) {\n const objList = tiersList.map((tier: Tier) => {\n const tierType = tier.type;\n const value = get(tier, `${tierType}.name`, \"\");\n\n return { label: value, value: value };\n });\n\n setTiersList(objList);\n if (objList.length > 0) {\n setStorageClass(objList[0].value);\n }\n }\n setLoadingTiers(false);\n })\n .catch((err) => {\n setLoadingTiers(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n }, [loadingTiers, dispatch]);\n\n useEffect(() => {\n let valid = true;\n\n if (ilmType !== \"expiry\") {\n if (storageClass === \"\") {\n valid = false;\n }\n }\n setIsFormValid(valid);\n }, [ilmType, expiryDays, transitionDays, storageClass]);\n\n const LogoToShow = ({ errString }: { errString: string }) => {\n switch (errString) {\n case \"\":\n return (\n
    \n \n
    \n );\n case \"n/a\":\n return null;\n default:\n if (errString) {\n return (\n
    \n \n \n \n
    \n );\n }\n }\n return null;\n };\n\n const createLifecycleRules = (to: any) => {\n let rules = {};\n\n if (ilmType === \"expiry\") {\n let expiry = {\n expiry_days: parseInt(expiryDays),\n };\n\n rules = {\n ...expiry,\n noncurrentversion_expiration_days: parseInt(NCExpirationDays),\n };\n } else {\n let transition = {\n transition_days: parseInt(transitionDays),\n };\n\n rules = {\n ...transition,\n noncurrentversion_transition_days: parseInt(NCTransitionDays),\n noncurrentversion_transition_storage_class: NCTransitionSC,\n storage_class: storageClass,\n };\n }\n\n const lifecycleInsert = {\n buckets,\n type: ilmType,\n prefix,\n tags,\n expired_object_delete_marker: expiredObjectDM,\n ...rules,\n };\n\n api.buckets\n .addMultiBucketLifecycle(lifecycleInsert)\n .then((res) => {\n setAddLoading(false);\n setResults(res.data);\n to(\"++\");\n })\n .catch((err) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n return (\n {\n closeModalAndRefresh(false);\n }}\n title=\"Set Lifecycle to multiple buckets\"\n >\n \n \n \n {buckets.join(\", \")}\n \n \n

    Remote Endpoint Configuration

    \n \n
    \n Lifecycle Configuration\n ) => {\n setIlmType(e.target.value as \"expiry\" | \"transition\");\n }}\n selectorOptions={[\n { value: \"expiry\", label: \"Expiry\" },\n { value: \"transition\", label: \"Transition\" },\n ]}\n />\n {ilmType === \"expiry\" ? (\n \n ,\n ) => {\n setExpiryDays(e.target.value);\n }}\n label=\"Expiry Days\"\n value={expiryDays}\n min=\"0\"\n />\n ,\n ) => {\n setNCExpirationDays(e.target.value);\n }}\n label=\"Non-current Expiration Days\"\n value={NCExpirationDays}\n min=\"0\"\n />\n \n ) : (\n \n ,\n ) => {\n setTransitionDays(e.target.value);\n }}\n label=\"Transition Days\"\n value={transitionDays}\n min=\"0\"\n />\n ,\n ) => {\n setNCTransitionDays(e.target.value);\n }}\n label=\"Non-current Transition Days\"\n value={NCTransitionDays}\n min=\"0\"\n />\n ,\n ) => {\n setNCTransitionSC(e.target.value);\n }}\n placeholder=\"Set Non-current Version Transition Storage Class\"\n label=\"Non-current Version Transition Storage Class\"\n value={NCTransitionSC}\n />\n {\n setStorageClass(value);\n }}\n options={tiersList}\n />\n \n )}\n
    \n
    \n File Configuration\n ) => {\n setPrefix(e.target.value);\n }}\n label=\"Prefix\"\n value={prefix}\n />\n {\n setTags(vl);\n }}\n keyPlaceholder=\"Tag Key\"\n valuePlaceholder=\"Tag Value\"\n withBorder\n />\n ,\n ) => {\n setExpiredObjectDM(event.target.checked);\n }}\n label={\"Expired Object Delete Marker\"}\n />\n
    \n
    \n \n ),\n buttons: [\n {\n type: \"custom\",\n label: \"Create Rules\",\n enabled: !loadingTiers && !addLoading && isFormValid,\n action: createLifecycleRules,\n },\n ],\n },\n {\n label: \"Results\",\n componentRender: (\n \n

    Multi Bucket lifecycle Assignments Results

    \n \n \n

    Buckets Results

    \n {results?.results?.map((resultItem) => {\n return (\n
    \n {LogoToShow({ errString: resultItem.error || \"\" })}\n {resultItem.bucketName}\n
    \n );\n })}\n
    \n
    \n
    \n ),\n buttons: [\n {\n type: \"custom\",\n label: \"Done\",\n enabled: !addLoading,\n action: () => closeModalAndRefresh(true),\n },\n ],\n },\n ]}\n forModal\n />\n \n );\n};\n\nexport default withStyles(styles)(AddBulkReplicationModal);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more 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, { Fragment } from \"react\";\nimport get from \"lodash/get\";\nimport styled from \"styled-components\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport {\n Box,\n breakPoints,\n BucketsIcon,\n Checkbox,\n Grid,\n ReportedUsageIcon,\n TotalObjectsIcon,\n} from \"mds\";\nimport {\n calculateBytes,\n niceBytes,\n prettyNumber,\n} from \"../../../../common/utils\";\nimport {\n IAM_PERMISSIONS,\n IAM_ROLES,\n} from \"../../../../common/SecureComponent/permissions\";\nimport { hasPermission } from \"../../../../common/SecureComponent\";\nimport { Bucket } from \"../../../../api/consoleApi\";\n\nconst BucketItemMain = styled.div(({ theme }) => ({\n border: `${get(theme, \"borderColor\", \"#eaeaea\")} 1px solid`,\n borderRadius: 3,\n padding: 15,\n cursor: \"pointer\",\n \"&.disabled\": {\n backgroundColor: get(theme, \"signalColors.danger\", \"red\"),\n },\n \"&:hover\": {\n backgroundColor: get(theme, \"boxBackground\", \"#FBFAFA\"),\n },\n \"& .bucketTitle\": {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n gap: 10,\n \"& h1\": {\n padding: 0,\n margin: 0,\n marginBottom: 5,\n fontSize: 22,\n color: get(theme, \"screenTitle.iconColor\", \"#07193E\"),\n [`@media (max-width: ${breakPoints.md}px)`]: {\n marginBottom: 0,\n },\n },\n },\n \"& .bucketDetails\": {\n display: \"flex\",\n gap: 40,\n \"& span\": {\n fontSize: 14,\n },\n [`@media (max-width: ${breakPoints.md}px)`]: {\n flexFlow: \"column-reverse\",\n gap: 5,\n },\n },\n \"& .bucketMetrics\": {\n display: \"flex\",\n alignItems: \"center\",\n marginTop: 20,\n gap: 25,\n borderTop: `${get(theme, \"borderColor\", \"#E2E2E2\")} 1px solid`,\n paddingTop: 20,\n \"& svg.bucketIcon\": {\n color: get(theme, \"screenTitle.iconColor\", \"#07193E\"),\n fill: get(theme, \"screenTitle.iconColor\", \"#07193E\"),\n },\n \"& .metric\": {\n \"& .min-icon\": {\n color: get(theme, \"fontColor\", \"#000\"),\n width: 13,\n marginRight: 5,\n },\n },\n \"& .metricLabel\": {\n fontSize: 14,\n fontWeight: \"bold\",\n color: get(theme, \"fontColor\", \"#000\"),\n },\n \"& .metricText\": {\n fontSize: 24,\n fontWeight: \"bold\",\n },\n \"& .unit\": {\n fontSize: 12,\n fontWeight: \"normal\",\n },\n [`@media (max-width: ${breakPoints.md}px)`]: {\n marginTop: 8,\n paddingTop: 8,\n },\n },\n}));\n\ninterface IBucketListItem {\n bucket: Bucket;\n onSelect: (e: React.ChangeEvent) => void;\n selected: boolean;\n bulkSelect: boolean;\n}\n\nconst BucketListItem = ({\n bucket,\n onSelect,\n selected,\n bulkSelect,\n}: IBucketListItem) => {\n const navigate = useNavigate();\n\n const usage = niceBytes(`${bucket.size}` || \"0\");\n const usageScalar = usage.split(\" \")[0];\n const usageUnit = usage.split(\" \")[1];\n\n const quota = get(bucket, \"details.quota.quota\", \"0\");\n const quotaForString = calculateBytes(quota, true, false);\n\n const manageAllowed =\n hasPermission(bucket.name, IAM_PERMISSIONS[IAM_ROLES.BUCKET_ADMIN]) &&\n false;\n\n const accessToStr = (bucket: Bucket): string => {\n if (bucket.rw_access?.read && !bucket.rw_access?.write) {\n return \"R\";\n } else if (!bucket.rw_access?.read && bucket.rw_access?.write) {\n return \"W\";\n } else if (bucket.rw_access?.read && bucket.rw_access?.write) {\n return \"R/W\";\n }\n return \"\";\n };\n const onCheckboxClick = (e: React.ChangeEvent) => {\n onSelect(e);\n };\n\n return (\n {\n navigate(`/buckets/${bucket.name}/admin`);\n }}\n id={`manageBucket-${bucket.name}`}\n className={`bucket-item ${manageAllowed ? \"disabled\" : \"\"}`}\n >\n \n {bulkSelect && (\n {\n e.stopPropagation();\n }}\n >\n \n \n )}\n

    \n {bucket.name} {manageAllowed}\n

    \n \n \n \n Created:{\" \"}\n {bucket.creation_date\n ? new Date(bucket.creation_date).toString()\n : \"n/a\"}\n \n \n Access: {accessToStr(bucket)}\n \n \n \n \n \n \n\n \n \n Usage\n
    \n {usageScalar}\n {usageUnit}\n {quota !== \"0\" && (\n \n {\" \"}\n / {quotaForString.total}\n {quotaForString.unit}\n \n )}\n
    \n
    \n\n \n \n Objects\n
    \n {bucket.objects ? prettyNumber(bucket.objects) : 0}\n
    \n
    \n
    \n \n );\n};\n\nexport default BucketListItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { Select, InputBox, Switch, FormLayout, Tooltip, Grid } from \"mds\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport get from \"lodash/get\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport CheckCircleOutlineIcon from \"@mui/icons-material/CheckCircleOutline\";\nimport {\n modalBasic,\n wizardCommon,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport PredefinedList from \"../../Common/FormComponents/PredefinedList/PredefinedList\";\nimport GenericWizard from \"../../Common/GenericWizard/GenericWizard\";\nimport { getBytes, k8sScalarUnitsExcluding } from \"../../../../common/utils\";\nimport InputUnitMenu from \"../../Common/FormComponents/InputUnitMenu/InputUnitMenu\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { api } from \"api\";\nimport { MultiBucketResponseItem } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport { SelectorTypes } from \"../../../../common/types\";\n\ninterface IBulkReplicationModal {\n open: boolean;\n closeModalAndRefresh: (clearSelection: boolean) => any;\n classes: any;\n buckets: string[];\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n remoteBucketList: {\n display: \"grid\",\n gridTemplateColumns: \"auto auto 45px\",\n alignItems: \"center\",\n justifyContent: \"stretch\",\n },\n errorIcon: {\n color: \"#C72C48\",\n },\n successIcon: {\n color: \"#42C91A\",\n },\n hide: {\n opacity: 0,\n transitionDuration: \"0.3s\",\n },\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst AddBulkReplicationModal = ({\n open,\n closeModalAndRefresh,\n classes,\n buckets,\n}: IBulkReplicationModal) => {\n const dispatch = useAppDispatch();\n const [bucketsToAlter, setBucketsToAlter] = useState([]);\n const [addLoading, setAddLoading] = useState(false);\n const [externalLoading, setExternalLoading] = useState(false);\n const [accessKey, setAccessKey] = useState(\"\");\n const [secretKey, setSecretKey] = useState(\"\");\n const [targetURL, setTargetURL] = useState(\"\");\n const [region, setRegion] = useState(\"\");\n const [useTLS, setUseTLS] = useState(true);\n const [replicationMode, setReplicationMode] = useState<\"async\" | \"sync\">(\n \"async\",\n );\n const [bandwidthScalar, setBandwidthScalar] = useState(\"100\");\n const [bandwidthUnit, setBandwidthUnit] = useState(\"Gi\");\n const [healthCheck, setHealthCheck] = useState(\"60\");\n const [relationBuckets, setRelationBuckets] = useState([]);\n const [remoteBucketsOpts, setRemoteBucketOpts] = useState([]);\n const [responseItem, setResponseItem] = useState<\n MultiBucketResponseItem[] | undefined\n >([]);\n\n const optionsForBucketsDrop: SelectorTypes[] = remoteBucketsOpts.map(\n (remoteBucketName: string) => {\n return {\n label: remoteBucketName,\n value: remoteBucketName,\n };\n },\n );\n\n useEffect(() => {\n if (relationBuckets.length === 0) {\n const bucketsAlter: string[] = [];\n const relationBucketsAlter: string[] = [];\n\n buckets.forEach((item: string) => {\n bucketsAlter.push(item);\n relationBucketsAlter.push(\"\");\n });\n\n setRelationBuckets(relationBucketsAlter);\n setBucketsToAlter(bucketsAlter);\n }\n }, [buckets, relationBuckets.length]);\n\n const addRecord = () => {\n setAddLoading(true);\n const replicate = bucketsToAlter.map((bucketName, index) => {\n return {\n originBucket: bucketName,\n destinationBucket: relationBuckets[index],\n };\n });\n\n const endURL = `${useTLS ? \"https://\" : \"http://\"}${targetURL}`;\n const hc = parseInt(healthCheck);\n\n const remoteBucketsInfo = {\n accessKey: accessKey,\n secretKey: secretKey,\n targetURL: endURL,\n region: region,\n bucketsRelation: replicate,\n syncMode: replicationMode,\n bandwidth:\n replicationMode === \"async\"\n ? parseInt(getBytes(bandwidthScalar, bandwidthUnit, true))\n : 0,\n healthCheckPeriod: hc,\n };\n\n api.bucketsReplication\n .setMultiBucketReplication(remoteBucketsInfo)\n .then((response) => {\n setAddLoading(false);\n\n const states = response.data.replicationState;\n setResponseItem(states);\n\n const filterErrors = states?.filter(\n (itm) => itm.errorString && itm.errorString !== \"\",\n );\n\n if (filterErrors?.length === 0) {\n closeModalAndRefresh(true);\n } else {\n setTimeout(() => {\n removeSuccessItems(states);\n }, 500);\n }\n })\n .catch((err) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n const retrieveRemoteBuckets = (\n wizardPageJump: (page: number | string) => void,\n ) => {\n const remoteConnectInfo = {\n accessKey: accessKey,\n secretKey: secretKey,\n targetURL: targetURL,\n useTLS,\n };\n setExternalLoading(true);\n\n api.listExternalBuckets\n .listExternalBuckets(remoteConnectInfo)\n .then((res) => {\n const buckets = get(res.data, \"buckets\", []);\n\n if (buckets && buckets.length > 0) {\n const arrayReplaceBuckets = buckets.map((element: any) => {\n return element.name;\n });\n\n setRemoteBucketOpts(arrayReplaceBuckets);\n }\n\n wizardPageJump(\"++\");\n setExternalLoading(false);\n })\n .catch((err) => {\n setExternalLoading(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n const stateOfItem = (initialBucket: string) => {\n if (responseItem && responseItem.length > 0) {\n const bucketResponse = responseItem.find(\n (item) => item.originBucket === initialBucket,\n );\n\n if (bucketResponse) {\n const errString = get(bucketResponse, \"errorString\", \"\");\n\n if (errString) {\n return errString;\n }\n\n return \"\";\n }\n }\n return \"n/a\";\n };\n\n const LogoToShow = ({ errString }: { errString: string }) => {\n switch (errString) {\n case \"\":\n return (\n
    \n \n
    \n );\n case \"n/a\":\n return null;\n default:\n if (errString) {\n return (\n
    \n \n \n \n
    \n );\n }\n }\n return null;\n };\n\n const updateItem = (indexItem: number, value: string) => {\n const updatedList = [...relationBuckets];\n updatedList[indexItem] = value;\n setRelationBuckets(updatedList);\n };\n\n const itemDisplayBulk = (indexItem: number) => {\n if (remoteBucketsOpts.length > 0) {\n return (\n \n {\n updateItem(indexItem, value);\n }}\n options={optionsForBucketsDrop}\n disabled={addLoading}\n />\n \n );\n }\n return (\n \n ) => {\n updateItem(indexItem, event.target.value);\n }}\n value={relationBuckets[indexItem]}\n disabled={addLoading}\n />\n \n );\n };\n\n const removeSuccessItems = (\n responseItem: MultiBucketResponseItem[] | undefined,\n ) => {\n let newBucketsToAlter = [...bucketsToAlter];\n let newRelationBuckets = [...relationBuckets];\n\n responseItem?.forEach((successElement) => {\n const errorString = get(successElement, \"errorString\", \"\");\n\n if (!errorString || errorString === \"\") {\n const indexToRemove = newBucketsToAlter.indexOf(\n successElement.originBucket || \"\",\n );\n\n newBucketsToAlter.splice(indexToRemove, 1);\n newRelationBuckets.splice(indexToRemove, 1);\n }\n });\n\n setBucketsToAlter(newBucketsToAlter);\n setRelationBuckets(newRelationBuckets);\n };\n\n return (\n {\n closeModalAndRefresh(false);\n }}\n title=\"Set Multiple Bucket Replication\"\n >\n \n \n \n \n

    Remote Endpoint Configuration

    \n \n Please avoid the use of root credentials for this feature\n \n
    \n
    \n \n ) => {\n setAccessKey(e.target.value);\n }}\n label=\"Access Key\"\n value={accessKey}\n />\n ) => {\n setSecretKey(e.target.value);\n }}\n label=\"Secret Key\"\n value={secretKey}\n />\n ) => {\n setTargetURL(e.target.value);\n }}\n placeholder=\"play.min.io:9000\"\n label=\"Target URL\"\n value={targetURL}\n />\n {\n setUseTLS(e.target.checked);\n }}\n value=\"yes\"\n />\n ) => {\n setRegion(e.target.value);\n }}\n label=\"Region\"\n value={region}\n />\n {\n setReplicationMode(value as \"sync\" | \"async\");\n }}\n label=\"Replication Mode\"\n value={replicationMode}\n options={[\n { label: \"Asynchronous\", value: \"async\" },\n { label: \"Synchronous\", value: \"sync\" },\n ]}\n />\n {replicationMode === \"async\" && (\n ) => {\n if (e.target.validity.valid) {\n setBandwidthScalar(e.target.value as string);\n }\n }}\n label=\"Bandwidth\"\n value={bandwidthScalar}\n min=\"0\"\n pattern={\"[0-9]*\"}\n overlayObject={\n {\n setBandwidthUnit(newValue);\n }}\n unitSelected={bandwidthUnit}\n unitsList={k8sScalarUnitsExcluding([\"Ki\"])}\n disabled={false}\n />\n }\n />\n )}\n ) => {\n setHealthCheck(e.target.value as string);\n }}\n label=\"Health Check Duration\"\n value={healthCheck}\n />\n \n \n ),\n buttons: [\n {\n type: \"custom\",\n label: \"Next\",\n enabled: !externalLoading,\n action: retrieveRemoteBuckets,\n },\n ],\n },\n {\n label: \"Bucket Assignments\",\n componentRender: (\n \n

    Remote Bucket Assignments

    \n \n Please select / type the desired remote bucket were you want\n the local data to be replicated.\n \n
    \n {bucketsToAlter.map((bucketName: string, index: number) => {\n const errorItem = stateOfItem(bucketName);\n return (\n \n
    \n {bucketName}\n
    \n
    \n {itemDisplayBulk(index)}\n
    \n
    \n {responseItem && responseItem.length > 0 && (\n \n )}\n
    \n \n );\n })}\n
    \n
    \n ),\n buttons: [\n {\n type: \"back\",\n label: \"Back\",\n enabled: true,\n },\n {\n type: \"next\",\n label: \"Create\",\n enabled: !addLoading,\n action: addRecord,\n },\n ],\n },\n ]}\n forModal\n />\n \n );\n};\n\nexport default withStyles(styles)(AddBulkReplicationModal);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n AddIcon,\n BucketsIcon,\n Button,\n HelpBox,\n LifecycleConfigIcon,\n MultipleBucketsIcon,\n PageLayout,\n RefreshIcon,\n SelectAllIcon,\n SelectMultipleIcon,\n Grid,\n breakPoints,\n ProgressBar,\n} from \"mds\";\n\nimport { actionsTray } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { SecureComponent } from \"../../../../common/SecureComponent\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_PAGES,\n IAM_PERMISSIONS,\n IAM_ROLES,\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../common/SecureComponent/permissions\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { useSelector } from \"react-redux\";\nimport { selFeatures } from \"../../consoleSlice\";\nimport { setLoadingObjects } from \"../../ObjectBrowser/objectBrowserSlice\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport { api } from \"../../../../api\";\nimport { Bucket } from \"../../../../api/consoleApi\";\nimport { errorToHandler } from \"../../../../api/errors\";\nimport HelpMenu from \"../../HelpMenu\";\nimport AutoColorIcon from \"../../Common/Components/AutoColorIcon\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport AButton from \"../../Common/AButton/AButton\";\nimport SearchBox from \"../../Common/SearchBox\";\nimport VirtualizedList from \"../../Common/VirtualizedList/VirtualizedList\";\nimport BulkLifecycleModal from \"./BulkLifecycleModal\";\nimport hasPermission from \"../../../../common/SecureComponent/accessControl\";\nimport BucketListItem from \"./BucketListItem\";\nimport BulkReplicationModal from \"./BulkReplicationModal\";\n\nconst ListBuckets = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [records, setRecords] = useState([]);\n const [loading, setLoading] = useState(true);\n const [filterBuckets, setFilterBuckets] = useState(\"\");\n const [selectedBuckets, setSelectedBuckets] = useState([]);\n const [replicationModalOpen, setReplicationModalOpen] =\n useState(false);\n const [lifecycleModalOpen, setLifecycleModalOpen] = useState(false);\n const [canPutLifecycle, setCanPutLifecycle] = useState(false);\n const [bulkSelect, setBulkSelect] = useState(false);\n\n const features = useSelector(selFeatures);\n const obOnly = !!features?.includes(\"object-browser-only\");\n\n useEffect(() => {\n dispatch(setHelpName(\"ob_bucket_list\"));\n }, [dispatch]);\n\n useEffect(() => {\n if (loading) {\n const fetchRecords = () => {\n setLoading(true);\n api.buckets.listBuckets().then((res) => {\n if (res.data) {\n setLoading(false);\n setRecords(res.data.buckets || []);\n dispatch(setLoadingObjects(true));\n } else if (res.error) {\n setLoading(false);\n dispatch(setErrorSnackMessage(errorToHandler(res.error)));\n }\n });\n };\n fetchRecords();\n }\n }, [loading, dispatch]);\n\n const filteredRecords = records.filter((b: Bucket) => {\n if (filterBuckets === \"\") {\n return true;\n } else {\n return b.name.indexOf(filterBuckets) >= 0;\n }\n });\n\n const hasBuckets = records.length > 0;\n\n const selectListBuckets = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selectedBuckets]; // We clone the selectedBuckets array\n\n if (checked) {\n // If the user has checked this field we need to push this to selectedBucketsList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedBuckets(elements);\n\n return elements;\n };\n\n const closeBulkReplicationModal = (unselectAll: boolean) => {\n setReplicationModalOpen(false);\n\n if (unselectAll) {\n setSelectedBuckets([]);\n }\n };\n\n const closeBulkLifecycleModal = (unselectAll: boolean) => {\n setLifecycleModalOpen(false);\n\n if (unselectAll) {\n setSelectedBuckets([]);\n }\n };\n\n useEffect(() => {\n var failLifecycle = false;\n selectedBuckets.forEach((bucket: string) => {\n hasPermission(bucket, IAM_PERMISSIONS[IAM_ROLES.BUCKET_LIFECYCLE], true)\n ? setCanPutLifecycle(true)\n : (failLifecycle = true);\n });\n failLifecycle ? setCanPutLifecycle(false) : setCanPutLifecycle(true);\n }, [selectedBuckets]);\n\n const renderItemLine = (index: number) => {\n const bucket = filteredRecords[index] || null;\n if (bucket) {\n return (\n \n );\n }\n return null;\n };\n\n const selectAllBuckets = () => {\n if (selectedBuckets.length === filteredRecords.length) {\n setSelectedBuckets([]);\n return;\n }\n\n const selectAllBuckets = filteredRecords.map((bucket) => {\n return bucket.name;\n });\n\n setSelectedBuckets(selectAllBuckets);\n };\n\n const canCreateBucket = hasPermission(\"*\", [IAM_SCOPES.S3_CREATE_BUCKET]);\n const canListBuckets = hasPermission(\"*\", [\n IAM_SCOPES.S3_LIST_BUCKET,\n IAM_SCOPES.S3_ALL_LIST_BUCKET,\n ]);\n\n return (\n \n {replicationModalOpen && (\n \n )}\n {lifecycleModalOpen && (\n \n )}\n {!obOnly && (\n } />\n )}\n\n \n \n {obOnly && (\n \n \n \n )}\n {hasBuckets && (\n \n )}\n\n \n {!obOnly && (\n \n \n {\n setBulkSelect(!bulkSelect);\n setSelectedBuckets([]);\n }}\n icon={}\n variant={bulkSelect ? \"callAction\" : \"regular\"}\n disabled={!hasBuckets}\n />\n \n\n {bulkSelect && (\n \n }\n variant={\"regular\"}\n />\n \n )}\n\n \n {\n setLifecycleModalOpen(true);\n }}\n icon={}\n variant={\"regular\"}\n disabled={selectedBuckets.length === 0 || !canPutLifecycle}\n />\n \n\n \n {\n setReplicationModalOpen(true);\n }}\n icon={}\n variant={\"regular\"}\n disabled={selectedBuckets.length === 0}\n />\n \n \n )}\n\n \n {\n setLoading(true);\n }}\n icon={}\n variant={\"regular\"}\n />\n \n\n {!obOnly && (\n \n {\n navigate(IAM_PAGES.ADD_BUCKETS);\n }}\n icon={}\n variant={\"callAction\"}\n disabled={!canCreateBucket}\n label={\"Create Bucket\"}\n />\n \n )}\n \n \n\n {loading && }\n {!loading && (\n \n {filteredRecords.length !== 0 && (\n \n )}\n {filteredRecords.length === 0 && filterBuckets !== \"\" && (\n \n \n }\n title={\"No Results\"}\n help={\n \n No buckets match the filtering condition\n \n }\n />\n \n \n )}\n {!hasBuckets && (\n \n \n }\n title={\"Buckets\"}\n help={\n \n MinIO uses buckets to organize objects. A bucket is\n similar to a folder or directory in a filesystem, where\n each bucket can hold an arbitrary number of objects.\n
    \n {canListBuckets ? (\n \"\"\n ) : (\n \n
    \n {permissionTooltipHelper(\n [\n IAM_SCOPES.S3_LIST_BUCKET,\n IAM_SCOPES.S3_ALL_LIST_BUCKET,\n ],\n \"view the buckets on this server\",\n )}\n
    \n
    \n )}\n \n
    \n To get started, \n {\n navigate(IAM_PAGES.ADD_BUCKETS);\n }}\n >\n Create a Bucket.\n \n \n
    \n }\n />\n
    \n
    \n )}\n \n )}\n
    \n
    \n );\n};\n\nexport default ListBuckets;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { SelectorType } from \"mds\";\nimport { Menu, MenuItem } from \"@mui/material\";\n\ninterface IInputUnitBox {\n classes: any;\n id: string;\n unitSelected: string;\n unitsList: SelectorType[];\n disabled?: boolean;\n onUnitChange?: (newValue: string) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonTrigger: {\n border: \"#F0F2F2 1px solid\",\n borderRadius: 3,\n color: \"#838383\",\n backgroundColor: \"#fff\",\n fontSize: 12,\n },\n });\n\nconst InputUnitMenu = ({\n classes,\n id,\n unitSelected,\n unitsList,\n disabled = false,\n onUnitChange,\n}: IInputUnitBox) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const open = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleClose = (newUnit: string) => {\n setAnchorEl(null);\n if (newUnit !== \"\" && onUnitChange) {\n onUnitChange(newUnit);\n }\n };\n\n return (\n \n \n {unitSelected}\n \n {\n handleClose(\"\");\n }}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"center\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"center\",\n }}\n >\n {unitsList.map((unit) => (\n handleClose(unit.value)}\n key={`itemUnit-${unit.value}-${unit.label}`}\n >\n {unit.label}\n \n ))}\n \n \n );\n};\n\nexport default withStyles(styles)(InputUnitMenu);\n","import React, { Fragment } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { predefinedList } from \"../common/styleLibrary\";\n\ninterface IPredefinedList {\n classes: any;\n label?: string;\n content: any;\n multiLine?: boolean;\n actionButton?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...predefinedList,\n });\n\nconst PredefinedList = ({\n classes,\n label = \"\",\n content,\n multiLine = false,\n actionButton,\n}: IPredefinedList) => {\n return (\n \n \n {label !== \"\" && (\n \n {label}\n \n )}\n \n \n {content}\n \n {actionButton && (\n
    {actionButton}
    \n )}\n \n \n
    \n );\n};\n\nexport default withStyles(styles)(PredefinedList);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, {\n ChangeEvent,\n createRef,\n Fragment,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport get from \"lodash/get\";\nimport debounce from \"lodash/debounce\";\nimport {\n AddIcon,\n Box,\n Grid,\n HelpIcon,\n InputBox,\n InputLabel,\n Tooltip,\n} from \"mds\";\n\ninterface IQueryMultiSelector {\n elements: string;\n name: string;\n label: string;\n tooltip?: string;\n keyPlaceholder?: string;\n valuePlaceholder?: string;\n withBorder?: boolean;\n onChange: (elements: string) => void;\n}\n\nconst QueryMultiSelector = ({\n elements,\n name,\n label,\n tooltip = \"\",\n keyPlaceholder = \"\",\n valuePlaceholder = \"\",\n onChange,\n withBorder = false,\n}: IQueryMultiSelector) => {\n const [currentKeys, setCurrentKeys] = useState([\"\"]);\n const [currentValues, setCurrentValues] = useState([\"\"]);\n const bottomList = createRef();\n\n // Use effect to get the initial values from props\n useEffect(() => {\n if (\n currentKeys.length === 1 &&\n currentKeys[0] === \"\" &&\n currentValues.length === 1 &&\n currentValues[0] === \"\" &&\n elements &&\n elements !== \"\"\n ) {\n const elementsSplit = elements.split(\"&\");\n let keys = [];\n let values = [];\n\n elementsSplit.forEach((element: string) => {\n const splittedVals = element.split(\"=\");\n if (splittedVals.length === 2) {\n keys.push(splittedVals[0]);\n values.push(splittedVals[1]);\n }\n });\n\n keys.push(\"\");\n values.push(\"\");\n\n setCurrentKeys(keys);\n setCurrentValues(values);\n }\n }, [currentKeys, currentValues, elements]);\n\n // Use effect to send new values to onChange\n useEffect(() => {\n const refScroll = bottomList.current;\n if (refScroll && currentKeys.length > 1) {\n refScroll.scrollIntoView(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentKeys]);\n\n // We avoid multiple re-renders / hang issue typing too fast\n const firstUpdate = useRef(true);\n useLayoutEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = false;\n return;\n }\n debouncedOnChange();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentKeys, currentValues]);\n\n // If the last input is not empty, we add a new one\n const addEmptyLine = () => {\n if (\n currentKeys[currentKeys.length - 1].trim() !== \"\" &&\n currentValues[currentValues.length - 1].trim() !== \"\"\n ) {\n const keysList = [...currentKeys];\n const valuesList = [...currentValues];\n\n keysList.push(\"\");\n valuesList.push(\"\");\n\n setCurrentKeys(keysList);\n setCurrentValues(valuesList);\n }\n };\n\n // Onchange function for input box, we get the dataset-index & only update that value in the array\n const onChangeKey = (e: ChangeEvent) => {\n e.persist();\n\n let updatedElement = [...currentKeys];\n const index = get(e.target, \"dataset.index\", \"0\");\n const indexNum = parseInt(index);\n updatedElement[indexNum] = e.target.value;\n\n setCurrentKeys(updatedElement);\n };\n\n const onChangeValue = (e: ChangeEvent) => {\n e.persist();\n\n let updatedElement = [...currentValues];\n const index = get(e.target, \"dataset.index\", \"0\");\n const indexNum = parseInt(index);\n updatedElement[indexNum] = e.target.value;\n\n setCurrentValues(updatedElement);\n };\n\n // Debounce for On Change\n const debouncedOnChange = debounce(() => {\n let queryString = \"\";\n\n currentKeys.forEach((keyVal, index) => {\n if (currentKeys[index] && currentValues[index]) {\n let insertString = `${keyVal}=${currentValues[index]}`;\n if (index !== 0) {\n insertString = `&${insertString}`;\n }\n queryString = `${queryString}${insertString}`;\n }\n });\n\n onChange(queryString);\n }, 500);\n\n const inputs = currentValues.map((element, index) => {\n return (\n \n \n :\n : null}\n overlayAction={() => {\n addEmptyLine();\n }}\n />\n \n );\n });\n\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n \n \n \n \n \n )}\n \n \n {inputs}\n
    \n \n \n \n );\n};\nexport default QueryMultiSelector;\n"],"names":["withStyles","theme","createStyles","wizardStepContainer","display","flexDirection","flex","wizardComponent","overflowY","marginBottom","height","minHeight","width","wizardModal","buttonsContainer","justifyContent","padding","borderTop","marginLeft","paddingBottom","buttonInnerContainer","marginRight","_ref","classes","page","pageChange","loadingStep","forModal","_jsxs","className","children","_jsx","componentRender","ProgressBar","concat","buttons","map","btn","Button","id","label","variant","onClick","type","toPage","action","buttonAction","disabled","enabled","wizFromContainer","wizFromModal","position","modalWizardSteps","borderBottom","marginTop","listStyle","paddingLeft","buttonList","backgroundColor","border","cursor","textDecoration","outline","boxShadow","paddedContentGrid","stepsLabel","fontSize","color","fontWeight","margin","textAlign","stepsMasterContainer","top","maxHeight","verticalSteps","borderRight","background","stepsContainer","paddingTop","stepItem","wizardSteps","_useState","useState","_useState2","_slicedToArray","currentStep","setCurrentStep","toElement","lastPage","length","nextPage","prevPage","pg","Grid","container","Fragment","step","index","toString","item","xs","sm","md","lg","xl","List","component","dense","root","ListItem","toLowerCase","replaceAll","button","disableRipple","selected","ListItemText","primary","WizardPage","_objectSpread","resultGrid","gridTemplateColumns","alignItems","errorIcon","successIcon","spacingUtils","modalStyleUtils","formFieldStyles","createTenantCommon","_results$results","open","closeModalAndRefresh","buckets","dispatch","useAppDispatch","addLoading","setAddLoading","_useState3","_useState4","loadingTiers","setLoadingTiers","_useState5","_useState6","tiersList","setTiersList","_useState7","_useState8","prefix","setPrefix","_useState9","_useState10","tags","setTags","_useState11","_useState12","storageClass","setStorageClass","_useState13","_useState14","NCTransitionSC","setNCTransitionSC","_useState15","_useState16","expiredObjectDM","setExpiredObjectDM","_useState17","_useState18","NCExpirationDays","setNCExpirationDays","_useState19","_useState20","NCTransitionDays","setNCTransitionDays","_useState21","_useState22","ilmType","setIlmType","_useState23","_useState24","expiryDays","setExpiryDays","_useState25","_useState26","transitionDays","setTransitionDays","_useState27","_useState28","isFormValid","setIsFormValid","_useState29","_useState30","results","setResults","useEffect","api","admin","then","res","get","data","objList","tier","tierType","value","catch","err","setModalErrorSnackMessage","errorToHandler","error","valid","LogoToShow","_ref2","errString","CheckCircleOutlineIcon","Tooltip","tooltip","placement","ErrorOutlineIcon","ModalWrapper","modalOpen","onClose","title","GenericWizard","ReadBox","join","FormLayout","withBorders","containerPadding","RadioGroup","currentValue","name","onChange","e","target","selectorOptions","InputBox","min","placeholder","Select","options","QueryMultiSelector","elements","vl","keyPlaceholder","valuePlaceholder","withBorder","Switch","checked","event","to","rules","expiry","expiry_days","parseInt","noncurrentversion_expiration_days","transition","transition_days","noncurrentversion_transition_days","noncurrentversion_transition_storage_class","storage_class","lifecycleInsert","expired_object_delete_marker","addMultiBucketLifecycle","formScrollable","resultItem","bucketName","BucketItemMain","styled","div","borderRadius","gap","_defineProperty","breakPoints","flexFlow","fill","bucket","onSelect","bulkSelect","navigate","useNavigate","usage","niceBytes","size","usageScalar","split","usageUnit","quota","quotaForString","calculateBytes","manageAllowed","hasPermission","IAM_PERMISSIONS","IAM_ROLES","BUCKET_ADMIN","Box","stopPropagation","Checkbox","creation_date","Date","_bucket$rw_access","_bucket$rw_access2","_bucket$rw_access3","_bucket$rw_access4","_bucket$rw_access5","_bucket$rw_access6","rw_access","read","write","accessToStr","Link","BucketsIcon","style","ReportedUsageIcon","total","unit","TotalObjectsIcon","objects","prettyNumber","remoteBucketList","hide","opacity","transitionDuration","modalBasic","wizardCommon","bucketsToAlter","setBucketsToAlter","externalLoading","setExternalLoading","accessKey","setAccessKey","secretKey","setSecretKey","targetURL","setTargetURL","region","setRegion","useTLS","setUseTLS","replicationMode","setReplicationMode","bandwidthScalar","setBandwidthScalar","bandwidthUnit","setBandwidthUnit","healthCheck","setHealthCheck","relationBuckets","setRelationBuckets","remoteBucketsOpts","setRemoteBucketOpts","responseItem","setResponseItem","optionsForBucketsDrop","remoteBucketName","bucketsAlter","relationBucketsAlter","forEach","push","updateItem","indexItem","updatedList","_toConsumableArray","removeSuccessItems","newBucketsToAlter","newRelationBuckets","successElement","errorString","indexToRemove","indexOf","originBucket","splice","PredefinedList","content","descriptionText","validity","pattern","overlayObject","InputUnitMenu","onUnitChange","newValue","unitSelected","unitsList","k8sScalarUnitsExcluding","wizardPageJump","remoteConnectInfo","listExternalBuckets","arrayReplaceBuckets","element","errorItem","initialBucket","bucketResponse","find","stateOfItem","replicate","destinationBucket","endURL","hc","remoteBucketsInfo","bucketsRelation","syncMode","bandwidth","getBytes","healthCheckPeriod","bucketsReplication","setMultiBucketReplication","response","states","replicationState","filterErrors","filter","itm","setTimeout","records","setRecords","loading","setLoading","filterBuckets","setFilterBuckets","selectedBuckets","setSelectedBuckets","replicationModalOpen","setReplicationModalOpen","lifecycleModalOpen","setLifecycleModalOpen","canPutLifecycle","setCanPutLifecycle","setBulkSelect","features","useSelector","selFeatures","obOnly","includes","setHelpName","listBuckets","setLoadingObjects","setErrorSnackMessage","filteredRecords","b","hasBuckets","selectListBuckets","targetD","failLifecycle","BUCKET_LIFECYCLE","canCreateBucket","IAM_SCOPES","S3_CREATE_BUCKET","canListBuckets","S3_LIST_BUCKET","S3_ALL_LIST_BUCKET","BulkReplicationModal","unselectAll","BulkLifecycleModal","PageHeaderWrapper","actions","HelpMenu","PageLayout","sx","actionsTray","AutoColorIcon","SearchBox","minWidth","TooltipWrapper","icon","SelectMultipleIcon","selectAllBuckets","SelectAllIcon","permissionTooltipHelper","LifecycleConfigIcon","MultipleBucketsIcon","RefreshIcon","IAM_PAGES","ADD_BUCKETS","AddIcon","VirtualizedList","rowRenderFunction","BucketListItem","totalItems","HelpBox","iconComponent","help","SecureComponent","scopes","resource","CONSOLE_UI_RESOURCE","AButton","buttonTrigger","_ref$disabled","_React$useState","React","_React$useState2","anchorEl","setAnchorEl","Boolean","handleClose","newUnit","undefined","currentTarget","Menu","anchorOrigin","vertical","horizontal","transformOrigin","MenuItem","predefinedList","_ref$label","_ref$multiLine","multiLine","actionButton","prefinedContainer","predefinedTitle","includesActionButton","innerContentMultiline","innerContent","overlayShareOption","_ref$tooltip","_ref$keyPlaceholder","_ref$valuePlaceholder","_ref$withBorder","currentKeys","setCurrentKeys","currentValues","setCurrentValues","bottomList","createRef","elementsSplit","keys","values","splittedVals","refScroll","current","scrollIntoView","firstUpdate","useRef","useLayoutEffect","debouncedOnChange","onChangeKey","persist","updatedElement","onChangeValue","debounce","queryString","keyVal","insertString","inputs","overlayIcon","overlayAction","trim","keysList","valuesList","addEmptyLine","alignSelf","InputLabel","HelpIcon","ref"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/8045.820a2282.chunk.js b/portal-ui/build/static/js/8045.820a2282.chunk.js new file mode 100644 index 0000000000..1e2ff5493d --- /dev/null +++ b/portal-ui/build/static/js/8045.820a2282.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[8045],{68045:function(e,t,n){n.r(t),n.d(t,{default:function(){return X}});var a=n(4942),i=n(93433),r=n(29439),s=n(72791),o=n(57689),c=n(29945),l=n(23814),u=n(38442),d=n(56087),h=n(87995),x=n(44690),g=n(78687),m=n(46078),p=n(47974),f=n(31776),b=n(82342),j=n(99670),v=n(73996),k=n(27454),C=n(81806),Z=n(59114),S=n(66514),y=n(1413),_=n(11135),w=n(25787),E=n(26181),T=n.n(E),B=n(15146),N=n(98946),F=n(56028),z=n(80184),L=(0,w.Z)((function(e){return(0,_.Z)({wizardStepContainer:{display:"flex",flexDirection:"column",flex:1},wizardComponent:{overflowY:"auto",marginBottom:10,height:"calc(100vh - 100px - 80px)",minHeight:400,flex:1,width:"100%"},wizardModal:{overflowY:"auto",marginBottom:10,height:"calc(100vh - 515px)"},buttonsContainer:{display:"flex",flexDirection:"row",justifyContent:"flex-start",padding:"10px 0",borderTop:"#EAEAEA 1px solid","& button":{marginLeft:10},"&.forModal":{paddingBottom:0}},buttonInnerContainer:{width:"100%",display:"flex",justifyContent:"flex-end",marginRight:15}})}))((function(e){var t=e.classes,n=e.page,a=e.pageChange,i=e.loadingStep,r=e.forModal;return(0,z.jsxs)("div",{className:t.wizardStepContainer,children:[(0,z.jsx)("div",{className:r?t.wizardModal:t.wizardComponent,children:n.componentRender}),i&&(0,z.jsx)("div",{children:(0,z.jsx)(c.kod,{})}),(0,z.jsx)("div",{className:"".concat(t.buttonsContainer," ").concat(r?"forModal":""),children:(0,z.jsx)("div",{className:t.buttonInnerContainer,children:n.buttons.map((function(e){return e.componentRender?e.componentRender:(0,z.jsx)(c.zxk,{id:"wizard-button-"+e.label,variant:"regular",onClick:function(){!function(e){switch(e.type){case"next":a("++");break;case"back":a("--");break;case"to":a(e.toPage||0)}e.action&&e.action(a)}(e)},disabled:!e.enabled,label:e.label},"button-".concat(n.label,"-").concat(e.label))}))})})]})})),R=n(90493),I=n(61889),M=n(84852),A=n(49900),K=(0,w.Z)((function(e){return(0,_.Z)({wizFromContainer:{},wizFromModal:{position:"relative"},modalWizardSteps:{padding:5,borderBottom:"#eaeaea 1px solid","& ul":{padding:0,marginTop:0,display:"flex",justifyContent:"space-evenly","& li":{listStyle:"lower-roman","&::marker":{paddingLeft:15}}}},buttonList:{backgroundColor:"transparent",border:"none",cursor:"pointer","&:not(:disabled):hover":{textDecoration:"underline"},"&:selected, &:active, &:focus, &:focus:active":{border:"none",outline:0,boxShadow:"none"}},paddedContentGrid:{marginTop:8,padding:"0 10px",minHeight:400},stepsLabel:{fontSize:20,color:"#393939",fontWeight:600,margin:"15px 12px","&.stepsModalTitle":{textAlign:"center",width:"100%",marginTop:0,marginBottom:10}},stepsMasterContainer:{position:"sticky",top:0,backgroundColor:"#FFFFFF",width:"100%",maxHeight:90},verticalSteps:{borderRight:"1px solid #E5E5E5",background:"#F8F8F8"},stepsContainer:{paddingTop:0,"& .MuiButtonBase-root.Mui-selected":{background:"#E5E5E5"}},stepItem:{minHeight:60,borderBottom:"1px solid #E5E5E5","&:hover":{background:"rgba(247,247,247,0.7)"}}})}))((function(e){var t=e.classes,n=e.wizardSteps,a=e.loadingStep,i=e.forModal,o=(0,s.useState)(0),c=(0,r.Z)(o,2),l=c[0],u=c[1],d=function(e){var t=n.length-1;if("++"===e){var a=l+1;a>t&&(a=t),u(a)}if("--"===e){var i=l-1;i<0&&(i=0),u(i)}if("number"===typeof e){var r=e;e<0&&(r=0),e>t&&(r=t),u(r)}};if(0===n.length)return null;return(0,z.jsxs)(I.ZP,{container:!0,className:i?t.wizFromModal:t.wizFromContainer,children:[i?(0,z.jsx)(s.Fragment,{children:(0,z.jsxs)("div",{className:t.stepsMasterContainer,children:[(0,z.jsx)("div",{className:"".concat(t.stepsLabel," stepsModalTitle"),children:"Steps"}),(0,z.jsx)("div",{className:t.modalWizardSteps,children:(0,z.jsx)("ul",{children:n.map((function(e,n){return(0,z.jsx)("li",{children:(0,z.jsx)("button",{onClick:function(){return d(n)},disabled:n>l,className:t.buttonList,children:e.label})},"wizard-".concat(n.toString()))}))})})]})}):(0,z.jsx)(s.Fragment,{children:(0,z.jsx)(I.ZP,{item:!0,xs:12,sm:2,md:2,lg:2,xl:2,className:t.verticalSteps,children:(0,z.jsx)(s.Fragment,{children:(0,z.jsx)(R.Z,{component:"nav",dense:!0,classes:{root:t.stepsContainer},children:n.map((function(e,n){return(0,z.jsx)(M.ZP,{id:"wizard-step-"+e.label.toLowerCase().replaceAll(" ","-"),button:!0,disableRipple:!0,onClick:function(){return d(n)},selected:l===n,classes:{root:t.stepItem},children:(0,z.jsx)(A.Z,{primary:e.label})},"wizard-".concat(n.toString()))}))})})})}),(0,z.jsx)(I.ZP,{item:!0,xs:12,sm:i?12:10,md:i?12:10,lg:i?12:10,xl:i?12:10,className:i?"":t.paddedContentGrid,children:(0,z.jsx)(L,{page:n[l],pageChange:d,loadingStep:a,forModal:i})})]})})),P=n(17420),D=(0,w.Z)((function(e){return(0,_.Z)((0,y.Z)((0,y.Z)((0,y.Z)((0,y.Z)({resultGrid:{display:"grid",gridTemplateColumns:"45px auto",alignItems:"center",justifyContent:"stretch"},errorIcon:{paddingTop:5,color:"#C72C48"},successIcon:{paddingTop:5,color:"#42C91A"}},l.bK),l.ID),l.DF),l.QV))}))((function(e){var t,n=e.open,a=e.closeModalAndRefresh,i=e.classes,o=e.buckets,l=(0,x.TL)(),u=(0,s.useState)(!1),d=(0,r.Z)(u,2),g=d[0],m=d[1],p=(0,s.useState)(!0),j=(0,r.Z)(p,2),v=j[0],k=j[1],C=(0,s.useState)([]),Z=(0,r.Z)(C,2),S=Z[0],_=Z[1],w=(0,s.useState)(""),E=(0,r.Z)(w,2),L=E[0],R=E[1],I=(0,s.useState)(""),M=(0,r.Z)(I,2),A=M[0],D=M[1],U=(0,s.useState)(""),W=(0,r.Z)(U,2),O=W[0],q=W[1],Y=(0,s.useState)(""),H=(0,r.Z)(Y,2),V=H[0],G=H[1],Q=(0,s.useState)(!1),X=(0,r.Z)(Q,2),J=X[0],$=X[1],ee=(0,s.useState)("0"),te=(0,r.Z)(ee,2),ne=te[0],ae=te[1],ie=(0,s.useState)("0"),re=(0,r.Z)(ie,2),se=re[0],oe=re[1],ce=(0,s.useState)("expiry"),le=(0,r.Z)(ce,2),ue=le[0],de=le[1],he=(0,s.useState)("0"),xe=(0,r.Z)(he,2),ge=xe[0],me=xe[1],pe=(0,s.useState)("0"),fe=(0,r.Z)(pe,2),be=fe[0],je=fe[1],ve=(0,s.useState)(!1),ke=(0,r.Z)(ve,2),Ce=ke[0],Ze=ke[1],Se=(0,s.useState)(null),ye=(0,r.Z)(Se,2),_e=ye[0],we=ye[1];(0,s.useEffect)((function(){v&&f.h.admin.tiersList().then((function(e){var t=T()(e.data,"items",[]);if(null!==t&&t.length>=1){var n=t.map((function(e){var t=e.type,n=T()(e,"".concat(t,".name"),"");return{label:n,value:n}}));_(n),n.length>0&&q(n[0].value)}k(!1)})).catch((function(e){k(!1),l((0,h.zb)((0,b.g)(e.error)))}))}),[v,l]),(0,s.useEffect)((function(){var e=!0;"expiry"!==ue&&""===O&&(e=!1),Ze(e)}),[ue,ge,be,O]);var Ee=function(e){var t=e.errString;switch(t){case"":return(0,z.jsx)("div",{className:i.successIcon,children:(0,z.jsx)(N.Z,{})});case"n/a":return null;default:if(t)return(0,z.jsx)("div",{className:i.errorIcon,children:(0,z.jsx)(c.ua7,{tooltip:t,placement:"top",children:(0,z.jsx)(B.Z,{})})})}return null};return(0,z.jsx)(F.Z,{modalOpen:n,onClose:function(){a(!1)},title:"Set Lifecycle to multiple buckets",children:(0,z.jsx)(K,{loadingStep:g||v,wizardSteps:[{label:"Lifecycle Configuration",componentRender:(0,z.jsxs)(s.Fragment,{children:[(0,z.jsx)(c.rjZ,{item:!0,xs:12,children:(0,z.jsx)(c.bSr,{label:"Local Buckets to replicate",children:o.join(", ")})}),(0,z.jsx)("h4",{children:"Remote Endpoint Configuration"}),(0,z.jsxs)(c.ltY,{withBorders:!1,containerPadding:!1,children:[(0,z.jsxs)("fieldset",{className:"inputItem",children:[(0,z.jsx)("legend",{children:"Lifecycle Configuration"}),(0,z.jsx)(c.Eep,{currentValue:ue,id:"quota_type",name:"quota_type",label:"ILM Rule",onChange:function(e){de(e.target.value)},selectorOptions:[{value:"expiry",label:"Expiry"},{value:"transition",label:"Transition"}]}),"expiry"===ue?(0,z.jsxs)(s.Fragment,{children:[(0,z.jsx)(c.Wzg,{type:"number",id:"expiry_days",name:"expiry_days",onChange:function(e){me(e.target.value)},label:"Expiry Days",value:ge,min:"0"}),(0,z.jsx)(c.Wzg,{type:"number",id:"noncurrentversion_expiration_days",name:"noncurrentversion_expiration_days",onChange:function(e){ae(e.target.value)},label:"Non-current Expiration Days",value:ne,min:"0"})]}):(0,z.jsxs)(s.Fragment,{children:[(0,z.jsx)(c.Wzg,{type:"number",id:"transition_days",name:"transition_days",onChange:function(e){je(e.target.value)},label:"Transition Days",value:be,min:"0"}),(0,z.jsx)(c.Wzg,{type:"number",id:"noncurrentversion_transition_days",name:"noncurrentversion_transition_days",onChange:function(e){oe(e.target.value)},label:"Non-current Transition Days",value:se,min:"0"}),(0,z.jsx)(c.Wzg,{id:"noncurrentversion_t_SC",name:"noncurrentversion_t_SC",onChange:function(e){G(e.target.value)},placeholder:"Set Non-current Version Transition Storage Class",label:"Non-current Version Transition Storage Class",value:V}),(0,z.jsx)(c.PhF,{label:"Storage Class",id:"storage_class",name:"storage_class",value:O,onChange:function(e){q(e)},options:S})]})]}),(0,z.jsxs)("fieldset",{className:"inputItem",children:[(0,z.jsx)("legend",{children:"File Configuration"}),(0,z.jsx)(c.Wzg,{id:"prefix",name:"prefix",onChange:function(e){R(e.target.value)},label:"Prefix",value:L}),(0,z.jsx)(P.Z,{name:"tags",label:"Tags",elements:A,onChange:function(e){D(e)},keyPlaceholder:"Tag Key",valuePlaceholder:"Tag Value",withBorder:!0}),(0,z.jsx)(c.rsf,{value:"expired_delete_marker",id:"expired_delete_marker",name:"expired_delete_marker",checked:J,onChange:function(e){$(e.target.checked)},label:"Expired Object Delete Marker"})]})]})]}),buttons:[{type:"custom",label:"Create Rules",enabled:!v&&!g&&Ce,action:function(e){var t={};if("expiry"===ue){var n={expiry_days:parseInt(ge)};t=(0,y.Z)((0,y.Z)({},n),{},{noncurrentversion_expiration_days:parseInt(ne)})}else{var a={transition_days:parseInt(be)};t=(0,y.Z)((0,y.Z)({},a),{},{noncurrentversion_transition_days:parseInt(se),noncurrentversion_transition_storage_class:V,storage_class:O})}var i=(0,y.Z)({buckets:o,type:ue,prefix:L,tags:A,expired_object_delete_marker:J},t);f.h.buckets.addMultiBucketLifecycle(i).then((function(t){m(!1),we(t.data),e("++")})).catch((function(e){m(!1),l((0,h.zb)((0,b.g)(e.error)))}))}}]},{label:"Results",componentRender:(0,z.jsxs)(s.Fragment,{children:[(0,z.jsx)("h3",{children:"Multi Bucket lifecycle Assignments Results"}),(0,z.jsx)(c.rjZ,{container:!0,children:(0,z.jsxs)(c.rjZ,{item:!0,xs:12,className:i.formScrollable,children:[(0,z.jsx)("h4",{children:"Buckets Results"}),null===_e||void 0===_e||null===(t=_e.results)||void 0===t?void 0:t.map((function(e){return(0,z.jsxs)("div",{className:i.resultGrid,children:[Ee({errString:e.error||""}),(0,z.jsx)("span",{children:e.bucketName})]})}))]})})]}),buttons:[{type:"custom",label:"Done",enabled:!g,action:function(){return a(!0)}}]}],forModal:!0})})})),U=n(49535),W=n(17691),O=n(11087),q=n(45248),Y=W.ZP.div((function(e){var t=e.theme;return{border:"".concat(T()(t,"borderColor","#eaeaea")," 1px solid"),borderRadius:3,padding:15,cursor:"pointer","&.disabled":{backgroundColor:T()(t,"signalColors.danger","red")},"&:hover":{backgroundColor:T()(t,"boxBackground","#FBFAFA")},"& .bucketTitle":{display:"flex",alignItems:"center",justifyContent:"flex-start",gap:10,"& h1":(0,a.Z)({padding:0,margin:0,marginBottom:5,fontSize:22,color:T()(t,"screenTitle.iconColor","#07193E")},"@media (max-width: ".concat(c.Egj.md,"px)"),{marginBottom:0})},"& .bucketDetails":(0,a.Z)({display:"flex",gap:40,"& span":{fontSize:14}},"@media (max-width: ".concat(c.Egj.md,"px)"),{flexFlow:"column-reverse",gap:5}),"& .bucketMetrics":(0,a.Z)({display:"flex",alignItems:"center",marginTop:20,gap:25,borderTop:"".concat(T()(t,"borderColor","#E2E2E2")," 1px solid"),paddingTop:20,"& svg.bucketIcon":{color:T()(t,"screenTitle.iconColor","#07193E"),fill:T()(t,"screenTitle.iconColor","#07193E")},"& .metric":{"& .min-icon":{color:T()(t,"fontColor","#000"),width:13,marginRight:5}},"& .metricLabel":{fontSize:14,fontWeight:"bold",color:T()(t,"fontColor","#000")},"& .metricText":{fontSize:24,fontWeight:"bold"},"& .unit":{fontSize:12,fontWeight:"normal"}},"@media (max-width: ".concat(c.Egj.md,"px)"),{marginTop:8,paddingTop:8})}})),H=function(e){var t=e.bucket,n=e.onSelect,a=e.selected,i=e.bulkSelect,r=(0,o.s0)(),l=(0,q.ae)("".concat(t.size)||"0"),h=l.split(" ")[0],x=l.split(" ")[1],g=T()(t,"details.quota.quota","0"),m=(0,q.Am)(g,!0,!1),p=(0,u.F)(t.name,d.D[d.EI.BUCKET_ADMIN])&&!1;return(0,z.jsxs)(Y,{onClick:function(){r("/buckets/".concat(t.name,"/admin"))},id:"manageBucket-".concat(t.name),className:"bucket-item ".concat(p?"disabled":""),children:[(0,z.jsxs)(c.xuv,{className:"bucketTitle",children:[i&&(0,z.jsx)(c.xuv,{onClick:function(e){e.stopPropagation()},children:(0,z.jsx)(c.XZJ,{checked:a,id:"select-".concat(t.name),label:"",name:"select-".concat(t.name),onChange:function(e){n(e)},value:t.name})}),(0,z.jsxs)("h1",{children:[t.name," ",p]})]}),(0,z.jsxs)(c.xuv,{className:"bucketDetails",children:[(0,z.jsxs)("span",{id:"created-".concat(t.name),children:[(0,z.jsx)("strong",{children:"Created:"})," ",t.creation_date?new Date(t.creation_date).toString():"n/a"]}),(0,z.jsxs)("span",{id:"access-".concat(t.name),children:[(0,z.jsx)("strong",{children:"Access:"})," ",function(e){var t,n,a,i,r,s;return null===(t=e.rw_access)||void 0===t||!t.read||null!==(n=e.rw_access)&&void 0!==n&&n.write?null!==(a=e.rw_access)&&void 0!==a&&a.read||null===(i=e.rw_access)||void 0===i||!i.write?null!==(r=e.rw_access)&&void 0!==r&&r.read&&null!==(s=e.rw_access)&&void 0!==s&&s.write?"R/W":"":"W":"R"}(t)]})]}),(0,z.jsxs)(c.xuv,{className:"bucketMetrics",children:[(0,z.jsx)(O.rU,{to:"/buckets/".concat(t.name,"/admin"),children:(0,z.jsx)(c.wNb,{className:"bucketIcon",style:{height:48,width:48}})}),(0,z.jsxs)(c.rjZ,{item:!0,className:"metric",children:[(0,z.jsx)(c.rHZ,{}),(0,z.jsx)("span",{className:"metricLabel",children:"Usage"}),(0,z.jsxs)("div",{className:"metricText",children:[h,(0,z.jsx)("span",{className:"unit",children:x}),"0"!==g&&(0,z.jsxs)(s.Fragment,{children:[" ","/ ",m.total,(0,z.jsx)("span",{className:"unit",children:m.unit})]})]})]}),(0,z.jsxs)(c.rjZ,{item:!0,className:"metric",children:[(0,z.jsx)(c.xpX,{}),(0,z.jsx)("span",{className:"metricLabel",children:"Objects"}),(0,z.jsx)("div",{className:"metricText",children:t.objects?(0,q.CE)(t.objects):0})]})]})]})},V=n(64163),G=n(84741),Q=(0,w.Z)((function(e){return(0,_.Z)((0,y.Z)((0,y.Z)({remoteBucketList:{display:"grid",gridTemplateColumns:"auto auto 45px",alignItems:"center",justifyContent:"stretch"},errorIcon:{color:"#C72C48"},successIcon:{color:"#42C91A"},hide:{opacity:0,transitionDuration:"0.3s"}},l.oO),l.AK))}))((function(e){var t=e.open,n=e.closeModalAndRefresh,a=e.classes,o=e.buckets,l=(0,x.TL)(),u=(0,s.useState)([]),d=(0,r.Z)(u,2),g=d[0],m=d[1],p=(0,s.useState)(!1),j=(0,r.Z)(p,2),v=j[0],k=j[1],C=(0,s.useState)(!1),Z=(0,r.Z)(C,2),S=Z[0],y=Z[1],_=(0,s.useState)(""),w=(0,r.Z)(_,2),E=w[0],L=w[1],R=(0,s.useState)(""),I=(0,r.Z)(R,2),M=I[0],A=I[1],P=(0,s.useState)(""),D=(0,r.Z)(P,2),U=D[0],W=D[1],O=(0,s.useState)(""),Y=(0,r.Z)(O,2),H=Y[0],Q=Y[1],X=(0,s.useState)(!0),J=(0,r.Z)(X,2),$=J[0],ee=J[1],te=(0,s.useState)("async"),ne=(0,r.Z)(te,2),ae=ne[0],ie=ne[1],re=(0,s.useState)("100"),se=(0,r.Z)(re,2),oe=se[0],ce=se[1],le=(0,s.useState)("Gi"),ue=(0,r.Z)(le,2),de=ue[0],he=ue[1],xe=(0,s.useState)("60"),ge=(0,r.Z)(xe,2),me=ge[0],pe=ge[1],fe=(0,s.useState)([]),be=(0,r.Z)(fe,2),je=be[0],ve=be[1],ke=(0,s.useState)([]),Ce=(0,r.Z)(ke,2),Ze=Ce[0],Se=Ce[1],ye=(0,s.useState)([]),_e=(0,r.Z)(ye,2),we=_e[0],Ee=_e[1],Te=Ze.map((function(e){return{label:e,value:e}}));(0,s.useEffect)((function(){if(0===je.length){var e=[],t=[];o.forEach((function(n){e.push(n),t.push("")})),ve(t),m(e)}}),[o,je.length]);var Be=function(e){var t=e.errString;switch(t){case"":return(0,z.jsx)("div",{className:a.successIcon,children:(0,z.jsx)(N.Z,{})});case"n/a":return null;default:if(t)return(0,z.jsx)("div",{className:a.errorIcon,children:(0,z.jsx)(c.ua7,{tooltip:t,placement:"top",children:(0,z.jsx)(B.Z,{})})})}return null},Ne=function(e,t){var n=(0,i.Z)(je);n[e]=t,ve(n)},Fe=function(e){var t=(0,i.Z)(g),n=(0,i.Z)(je);null===e||void 0===e||e.forEach((function(e){var a=T()(e,"errorString","");if(!a||""===a){var i=t.indexOf(e.originBucket||"");t.splice(i,1),n.splice(i,1)}})),m(t),ve(n)};return(0,z.jsx)(F.Z,{modalOpen:t,onClose:function(){n(!1)},title:"Set Multiple Bucket Replication",children:(0,z.jsx)(K,{loadingStep:v||S,wizardSteps:[{label:"Remote Configuration",componentRender:(0,z.jsxs)(s.Fragment,{children:[(0,z.jsx)(c.rjZ,{item:!0,xs:12,children:(0,z.jsx)(V.Z,{label:"Local Buckets to replicate",content:g.join(", ")})}),(0,z.jsx)("h4",{children:"Remote Endpoint Configuration"}),(0,z.jsx)("span",{className:a.descriptionText,children:"Please avoid the use of root credentials for this feature"}),(0,z.jsx)("br",{}),(0,z.jsx)("br",{}),(0,z.jsxs)(c.ltY,{containerPadding:!1,withBorders:!1,children:[(0,z.jsx)(c.Wzg,{id:"accessKey",name:"accessKey",onChange:function(e){L(e.target.value)},label:"Access Key",value:E}),(0,z.jsx)(c.Wzg,{id:"secretKey",name:"secretKey",onChange:function(e){A(e.target.value)},label:"Secret Key",value:M}),(0,z.jsx)(c.Wzg,{id:"targetURL",name:"targetURL",onChange:function(e){W(e.target.value)},placeholder:"play.min.io:9000",label:"Target URL",value:U}),(0,z.jsx)(c.rsf,{checked:$,id:"useTLS",name:"useTLS",label:"Use TLS",onChange:function(e){ee(e.target.checked)},value:"yes"}),(0,z.jsx)(c.Wzg,{id:"region",name:"region",onChange:function(e){Q(e.target.value)},label:"Region",value:H}),(0,z.jsx)(c.PhF,{id:"replication_mode",name:"replication_mode",onChange:function(e){ie(e)},label:"Replication Mode",value:ae,options:[{label:"Asynchronous",value:"async"},{label:"Synchronous",value:"sync"}]}),"async"===ae&&(0,z.jsx)(c.Wzg,{type:"number",id:"bandwidth_scalar",name:"bandwidth_scalar",onChange:function(e){e.target.validity.valid&&ce(e.target.value)},label:"Bandwidth",value:oe,min:"0",pattern:"[0-9]*",overlayObject:(0,z.jsx)(G.Z,{id:"quota_unit",onUnitChange:function(e){he(e)},unitSelected:de,unitsList:(0,q.zQ)(["Ki"]),disabled:!1})}),(0,z.jsx)(c.Wzg,{id:"healthCheck",name:"healthCheck",onChange:function(e){pe(e.target.value)},label:"Health Check Duration",value:me})]})]}),buttons:[{type:"custom",label:"Next",enabled:!S,action:function(e){var t={accessKey:E,secretKey:M,targetURL:U,useTLS:$};y(!0),f.h.listExternalBuckets.listExternalBuckets(t).then((function(t){var n=T()(t.data,"buckets",[]);if(n&&n.length>0){var a=n.map((function(e){return e.name}));Se(a)}e("++"),y(!1)})).catch((function(e){y(!1),l((0,h.zb)((0,b.g)(e.error)))}))}}]},{label:"Bucket Assignments",componentRender:(0,z.jsxs)(s.Fragment,{children:[(0,z.jsx)("h3",{children:"Remote Bucket Assignments"}),(0,z.jsx)("span",{className:a.descriptionText,children:"Please select / type the desired remote bucket were you want the local data to be replicated."}),(0,z.jsx)("div",{className:a.remoteBucketList,children:g.map((function(e,t){var n,i=function(e){if(we&&we.length>0){var t=we.find((function(t){return t.originBucket===e}));if(t)return T()(t,"errorString","")||""}return"n/a"}(e);return(0,z.jsxs)(s.Fragment,{children:[(0,z.jsx)("div",{className:""===i?a.hide:"",children:e}),(0,z.jsx)("div",{className:""===i?a.hide:"",children:(n=t,Ze.length>0?(0,z.jsx)(s.Fragment,{children:(0,z.jsx)(c.PhF,{label:"",id:"assign-bucket-".concat(n),name:"assign-bucket-".concat(n),value:je[n],onChange:function(e){Ne(n,e)},options:Te,disabled:v})}):(0,z.jsx)(s.Fragment,{children:(0,z.jsx)(c.Wzg,{id:"assign-bucket-".concat(n),name:"assign-bucket-".concat(n),label:"",onChange:function(e){Ne(n,e.target.value)},value:je[n],disabled:v})}))}),(0,z.jsx)("div",{className:""===i?a.hide:"",children:we&&we.length>0&&(0,z.jsx)(Be,{errString:i})})]},"buckets-assignation-".concat(t.toString(),"-").concat(e))}))})]}),buttons:[{type:"back",label:"Back",enabled:!0},{type:"next",label:"Create",enabled:!v,action:function(){k(!0);var e=g.map((function(e,t){return{originBucket:e,destinationBucket:je[t]}})),t="".concat($?"https://":"http://").concat(U),a=parseInt(me),i={accessKey:E,secretKey:M,targetURL:t,region:H,bucketsRelation:e,syncMode:ae,bandwidth:"async"===ae?parseInt((0,q.Pw)(oe,de,!0)):0,healthCheckPeriod:a};f.h.bucketsReplication.setMultiBucketReplication(i).then((function(e){k(!1);var t=e.data.replicationState;Ee(t);var a=null===t||void 0===t?void 0:t.filter((function(e){return e.errorString&&""!==e.errorString}));0===(null===a||void 0===a?void 0:a.length)?n(!0):setTimeout((function(){Fe(t)}),500)})).catch((function(e){k(!1),l((0,h.zb)((0,b.g)(e.error)))}))}}]}],forModal:!0})})})),X=function(){var e=(0,x.TL)(),t=(0,o.s0)(),n=(0,s.useState)([]),y=(0,r.Z)(n,2),_=y[0],w=y[1],E=(0,s.useState)(!0),T=(0,r.Z)(E,2),B=T[0],N=T[1],F=(0,s.useState)(""),L=(0,r.Z)(F,2),R=L[0],I=L[1],M=(0,s.useState)([]),A=(0,r.Z)(M,2),K=A[0],P=A[1],W=(0,s.useState)(!1),O=(0,r.Z)(W,2),q=O[0],Y=O[1],V=(0,s.useState)(!1),G=(0,r.Z)(V,2),X=G[0],J=G[1],$=(0,s.useState)(!1),ee=(0,r.Z)($,2),te=ee[0],ne=ee[1],ae=(0,s.useState)(!1),ie=(0,r.Z)(ae,2),re=ie[0],se=ie[1],oe=(0,g.v9)(m.$4),ce=!(null===oe||void 0===oe||!oe.includes("object-browser-only"));(0,s.useEffect)((function(){e((0,h.Sc)("ob_bucket_list"))}),[e]),(0,s.useEffect)((function(){if(B){N(!0),f.h.buckets.listBuckets().then((function(t){t.data?(N(!1),w(t.data.buckets||[])):t.error&&(N(!1),e((0,h.Ih)((0,b.g)(t.error))))}))}}),[B,e]);var le=_.filter((function(e){return""===R||e.name.indexOf(R)>=0})),ue=_.length>0,de=function(e){var t=e.target,n=t.value,a=t.checked,r=(0,i.Z)(K);return a?r.push(n):r=r.filter((function(e){return e!==n})),P(r),r};(0,s.useEffect)((function(){var e=!1;K.forEach((function(t){(0,U.Z)(t,d.D[d.EI.BUCKET_LIFECYCLE],!0)?ne(!0):e=!0})),ne(!e)}),[K]);var he=(0,U.Z)("*",[d.Ft.S3_CREATE_BUCKET]),xe=(0,U.Z)("*",[d.Ft.S3_LIST_BUCKET,d.Ft.S3_ALL_LIST_BUCKET]);return(0,z.jsxs)(s.Fragment,{children:[q&&(0,z.jsx)(Q,{open:q,buckets:K,closeModalAndRefresh:function(e){Y(!1),e&&P([])}}),X&&(0,z.jsx)(D,{buckets:K,closeModalAndRefresh:function(e){J(!1),e&&P([])},open:X}),!ce&&(0,z.jsx)(p.Z,{label:"Buckets",actions:(0,z.jsx)(j.Z,{})}),(0,z.jsxs)(c.Xgh,{children:[(0,z.jsxs)(c.rjZ,{item:!0,xs:12,sx:l.OR.actionsTray,children:[ce&&(0,z.jsx)(c.rjZ,{item:!0,xs:!0,children:(0,z.jsx)(v.Z,{marginRight:15,marginTop:10})}),ue&&(0,z.jsx)(Z.Z,{onChange:I,placeholder:"Search Buckets",value:R,sx:(0,a.Z)({minWidth:380},"@media (max-width: ".concat(c.Egj.md,"px)"),{minWidth:220})}),(0,z.jsxs)(c.rjZ,{item:!0,xs:12,sx:{display:"flex",alignItems:"center",justifyContent:"flex-end",gap:5},children:[!ce&&(0,z.jsxs)(s.Fragment,{children:[(0,z.jsx)(k.Z,{tooltip:ue?re?"Unselect Buckets":"Select Multiple Buckets":"",children:(0,z.jsx)(c.zxk,{id:"multiple-bucket-seection",onClick:function(){se(!re),P([])},icon:(0,z.jsx)(c.amE,{}),variant:re?"callAction":"regular",disabled:!ue})}),re&&(0,z.jsx)(k.Z,{tooltip:ue?K.length===le.length?"Unselect All Buckets":"Select All Buckets":"",children:(0,z.jsx)(c.zxk,{id:"select-all-buckets",onClick:function(){if(K.length!==le.length){var e=le.map((function(e){return e.name}));P(e)}else P([])},icon:(0,z.jsx)(c.QQb,{}),variant:"regular"})}),(0,z.jsx)(k.Z,{tooltip:ue?te?0===K.length?re?"Please select at least one bucket on which to configure Lifecycle":"Use the Select Multiple Buckets button to choose buckets on which to configure Lifecycle":"Set Lifecycle":(0,d.MK)(d.D[d.EI.BUCKET_LIFECYCLE],"configure lifecycle for the selected buckets"):"",children:(0,z.jsx)(c.zxk,{id:"set-lifecycle",onClick:function(){J(!0)},icon:(0,z.jsx)(c.QIv,{}),variant:"regular",disabled:0===K.length||!te})}),(0,z.jsx)(k.Z,{tooltip:ue?0===K.length?re?"Please select at least one bucket on which to configure Replication":"Use the Select Multiple Buckets button to choose buckets on which to configure Replication":"Set Replication":"",children:(0,z.jsx)(c.zxk,{id:"set-replication",onClick:function(){Y(!0)},icon:(0,z.jsx)(c.D6F,{}),variant:"regular",disabled:0===K.length})})]}),(0,z.jsx)(k.Z,{tooltip:"Refresh",children:(0,z.jsx)(c.zxk,{id:"refresh-buckets",onClick:function(){N(!0)},icon:(0,z.jsx)(c.DuK,{}),variant:"regular"})}),!ce&&(0,z.jsx)(k.Z,{tooltip:he?"":(0,d.MK)([d.Ft.S3_CREATE_BUCKET],"create a bucket"),children:(0,z.jsx)(c.zxk,{id:"create-bucket",onClick:function(){t(d.gA.ADD_BUCKETS)},icon:(0,z.jsx)(c.dtP,{}),variant:"callAction",disabled:!he,label:"Create Bucket"})})]})]}),B&&(0,z.jsx)(c.kod,{}),!B&&(0,z.jsxs)(c.rjZ,{item:!0,xs:12,sx:{marginTop:25,height:"calc(100vh - 211px)","&.isEmbedded":{height:"calc(100vh - 128px)"}},className:ce?"isEmbedded":"",children:[0!==le.length&&(0,z.jsx)(S.Z,{rowRenderFunction:function(e){var t=le[e]||null;return t?(0,z.jsx)(H,{bucket:t,onSelect:de,selected:K.includes(t.name),bulkSelect:re}):null},totalItems:le.length}),0===le.length&&""!==R&&(0,z.jsx)(c.rjZ,{container:!0,children:(0,z.jsx)(c.rjZ,{item:!0,xs:8,children:(0,z.jsx)(c.KfX,{iconComponent:(0,z.jsx)(c.wNb,{}),title:"No Results",help:(0,z.jsx)(s.Fragment,{children:"No buckets match the filtering condition"})})})}),!ue&&(0,z.jsx)(c.rjZ,{container:!0,children:(0,z.jsx)(c.rjZ,{item:!0,xs:8,children:(0,z.jsx)(c.KfX,{iconComponent:(0,z.jsx)(c.wNb,{}),title:"Buckets",help:(0,z.jsxs)(s.Fragment,{children:["MinIO uses buckets to organize objects. A bucket is similar to a folder or directory in a filesystem, where each bucket can hold an arbitrary number of objects.",(0,z.jsx)("br",{}),xe?"":(0,z.jsxs)(s.Fragment,{children:[(0,z.jsx)("br",{}),(0,d.MK)([d.Ft.S3_LIST_BUCKET,d.Ft.S3_ALL_LIST_BUCKET],"view the buckets on this server"),(0,z.jsx)("br",{})]}),(0,z.jsxs)(u.s,{scopes:[d.Ft.S3_CREATE_BUCKET],resource:d.C3,children:[(0,z.jsx)("br",{}),"To get started,\xa0",(0,z.jsx)(C.Z,{onClick:function(){t(d.gA.ADD_BUCKETS)},children:"Create a Bucket."})]})]})})})})]})]})]})}},84741:function(e,t,n){var a=n(29439),i=n(72791),r=n(11135),s=n(25787),o=n(80911),c=n(77865),l=n(80184);t.Z=(0,s.Z)((function(e){return(0,r.Z)({buttonTrigger:{border:"#F0F2F2 1px solid",borderRadius:3,color:"#838383",backgroundColor:"#fff",fontSize:12}})}))((function(e){var t=e.classes,n=e.id,r=e.unitSelected,s=e.unitsList,u=e.disabled,d=void 0!==u&&u,h=e.onUnitChange,x=i.useState(null),g=(0,a.Z)(x,2),m=g[0],p=g[1],f=Boolean(m),b=function(e){p(null),""!==e&&h&&h(e)};return(0,l.jsxs)(i.Fragment,{children:[(0,l.jsx)("button",{id:"".concat(n,"-button"),"aria-controls":"".concat(n,"-menu"),"aria-haspopup":"true","aria-expanded":f?"true":void 0,onClick:function(e){p(e.currentTarget)},className:t.buttonTrigger,disabled:d,type:"button",children:r}),(0,l.jsx)(o.Z,{id:"".concat(n,"-menu"),"aria-labelledby":"".concat(n,"-button"),anchorEl:m,open:f,onClose:function(){b("")},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},children:s.map((function(e){return(0,l.jsx)(c.Z,{onClick:function(){return b(e.value)},children:e.label},"itemUnit-".concat(e.value,"-").concat(e.label))}))})]})}))},64163:function(e,t,n){var a=n(1413),i=n(72791),r=n(61889),s=n(11135),o=n(25787),c=n(23814),l=n(80184);t.Z=(0,o.Z)((function(e){return(0,s.Z)((0,a.Z)({},c.xx))}))((function(e){var t=e.classes,n=e.label,a=void 0===n?"":n,s=e.content,o=e.multiLine,c=void 0!==o&&o,u=e.actionButton;return(0,l.jsx)(i.Fragment,{children:(0,l.jsxs)(r.ZP,{className:t.prefinedContainer,children:[""!==a&&(0,l.jsx)(r.ZP,{item:!0,xs:12,className:t.predefinedTitle,children:a}),(0,l.jsxs)(r.ZP,{item:!0,xs:12,className:"".concat(t.predefinedList," ").concat(u?t.includesActionButton:""),children:[(0,l.jsx)(r.ZP,{item:!0,xs:12,className:c?t.innerContentMultiline:t.innerContent,children:s}),u&&(0,l.jsx)("div",{className:t.overlayShareOption,children:u})]})]})})}))},17420:function(e,t,n){var a=n(93433),i=n(29439),r=n(72791),s=n(26181),o=n.n(s),c=n(48573),l=n.n(c),u=n(29945),d=n(80184);t.Z=function(e){var t=e.elements,n=e.name,s=e.label,c=e.tooltip,h=void 0===c?"":c,x=e.keyPlaceholder,g=void 0===x?"":x,m=e.valuePlaceholder,p=void 0===m?"":m,f=e.onChange,b=e.withBorder,j=void 0!==b&&b,v=(0,r.useState)([""]),k=(0,i.Z)(v,2),C=k[0],Z=k[1],S=(0,r.useState)([""]),y=(0,i.Z)(S,2),_=y[0],w=y[1],E=(0,r.createRef)();(0,r.useEffect)((function(){if(1===C.length&&""===C[0]&&1===_.length&&""===_[0]&&t&&""!==t){var e=t.split("&"),n=[],a=[];e.forEach((function(e){var t=e.split("=");2===t.length&&(n.push(t[0]),a.push(t[1]))})),n.push(""),a.push(""),Z(n),w(a)}}),[C,_,t]),(0,r.useEffect)((function(){var e=E.current;e&&C.length>1&&e.scrollIntoView(!1)}),[C]);var T=(0,r.useRef)(!0);(0,r.useLayoutEffect)((function(){T.current?T.current=!1:F()}),[C,_]);var B=function(e){e.persist();var t=(0,a.Z)(C),n=o()(e.target,"dataset.index","0");t[parseInt(n)]=e.target.value,Z(t)},N=function(e){e.persist();var t=(0,a.Z)(_),n=o()(e.target,"dataset.index","0");t[parseInt(n)]=e.target.value,w(t)},F=l()((function(){var e="";C.forEach((function(t,n){if(C[n]&&_[n]){var a="".concat(t,"=").concat(_[n]);0!==n&&(a="&".concat(a)),e="".concat(e).concat(a)}})),f(e)}),500),z=_.map((function(e,t){return(0,d.jsxs)(u.rjZ,{item:!0,xs:12,className:"lineInputBoxes inputItem",children:[(0,d.jsx)(u.Wzg,{id:"".concat(n,"-key-").concat(t.toString()),label:"",name:"".concat(n,"-").concat(t.toString()),value:C[t],onChange:B,index:t,placeholder:g}),(0,d.jsx)("span",{className:"queryDiv",children:":"}),(0,d.jsx)(u.Wzg,{id:"".concat(n,"-value-").concat(t.toString()),label:"",name:"".concat(n,"-").concat(t.toString()),value:_[t],onChange:N,index:t,placeholder:p,overlayIcon:t===_.length-1?(0,d.jsx)(u.dtP,{}):null,overlayAction:function(){!function(){if(""!==C[C.length-1].trim()&&""!==_[_.length-1].trim()){var e=(0,a.Z)(C),t=(0,a.Z)(_);e.push(""),t.push(""),Z(e),w(t)}}()}})]},"query-pair-".concat(n,"-").concat(t.toString()))}));return(0,d.jsx)(r.Fragment,{children:(0,d.jsxs)(u.rjZ,{item:!0,xs:12,sx:{"& .lineInputBoxes":{display:"flex"},"& .queryDiv":{alignSelf:"center",margin:"-15px 4px 0",fontWeight:600}},children:[(0,d.jsxs)(u.AZs,{children:[s,""!==h&&(0,d.jsx)(u.xuv,{sx:{marginLeft:5,display:"flex",alignItems:"center","& .min-icon":{width:13}},children:(0,d.jsx)(u.ua7,{tooltip:h,placement:"top",children:(0,d.jsx)(u.byK,{style:{width:13,height:13}})})})]}),(0,d.jsxs)(u.xuv,{withBorders:j,sx:{padding:15,height:150,overflowY:"auto",position:"relative",marginTop:15},children:[z,(0,d.jsx)("div",{ref:E})]})]})})}}}]); +//# sourceMappingURL=8045.820a2282.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/8045.820a2282.chunk.js.map b/portal-ui/build/static/js/8045.820a2282.chunk.js.map new file mode 100644 index 0000000000..7537b2f44d --- /dev/null +++ b/portal-ui/build/static/js/8045.820a2282.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/8045.820a2282.chunk.js","mappings":"+eAgIA,GAAeA,EAAAA,EAAAA,IAzGA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,GAAa,CACXC,oBAAqB,CACnBC,QAAS,OACTC,cAAe,SACfC,KAAM,GAERC,gBAAiB,CACfC,UAAW,OACXC,aAAc,GACdC,OAAQ,6BACRC,UAAW,IACXL,KAAM,EACNM,MAAO,QAETC,YAAa,CACXL,UAAW,OACXC,aAAc,GACdC,OAAQ,uBAEVI,iBAAkB,CAChBV,QAAS,OACTC,cAAe,MACfU,eAAgB,aAChBC,QAAS,SACTC,UAAW,oBACX,WAAY,CACVC,WAAY,IAEd,aAAc,CACZC,cAAe,IAGnBC,qBAAsB,CACpBR,MAAO,OACPR,QAAS,OACTW,eAAgB,WAChBM,YAAa,KAEd,GAkEL,EAhEmB,SAAHC,GAMI,IALlBC,EAAOD,EAAPC,QACAC,EAAIF,EAAJE,KACAC,EAAUH,EAAVG,WACAC,EAAWJ,EAAXI,YACAC,EAAQL,EAARK,SAsBA,OACEC,EAAAA,EAAAA,MAAA,OAAKC,UAAWN,EAAQpB,oBAAoB2B,SAAA,EAC1CC,EAAAA,EAAAA,KAAA,OAAKF,UAAWF,EAAWJ,EAAQV,YAAcU,EAAQhB,gBAAgBuB,SACtEN,EAAKQ,kBAEPN,IACCK,EAAAA,EAAAA,KAAA,OAAAD,UACEC,EAAAA,EAAAA,KAACE,EAAAA,IAAW,OAGhBF,EAAAA,EAAAA,KAAA,OACEF,UAAS,GAAAK,OAAKX,EAAQT,iBAAgB,KAAAoB,OAAIP,EAAW,WAAa,IAAKG,UAEvEC,EAAAA,EAAAA,KAAA,OAAKF,UAAWN,EAAQH,qBAAqBU,SAC1CN,EAAKW,QAAQC,KAAI,SAACC,GACjB,OAAIA,EAAIL,gBACCK,EAAIL,iBAGXD,EAAAA,EAAAA,KAACO,EAAAA,IAAM,CACLC,GAAI,iBAAmBF,EAAIG,MAC3BC,QAAQ,UACRC,QAAS,YA1CF,SAACL,GACpB,OAAQA,EAAIM,MACV,IAAK,OACHlB,EAAW,MACX,MACF,IAAK,OACHA,EAAW,MACX,MACF,IAAK,KACHA,EAAWY,EAAIO,QAAU,GAMzBP,EAAIQ,QACNR,EAAIQ,OAAOpB,EAEf,CAyBgBqB,CAAaT,EACf,EACAU,UAAWV,EAAIW,QAEfR,MAAOH,EAAIG,OAAM,UAAAN,OADFV,EAAKgB,MAAK,KAAAN,OAAIG,EAAIG,OAIvC,UAKV,I,4CCiIA,GAAexC,EAAAA,EAAAA,IArOA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,GAAa,CACX+C,iBAAkB,CAAC,EACnBC,aAAc,CACZC,SAAU,YAEZC,iBAAkB,CAChBpC,QAAS,EACTqC,aAAc,oBACd,OAAQ,CACNrC,QAAS,EACTsC,UAAW,EACXlD,QAAS,OACTW,eAAgB,eAEhB,OAAQ,CACNwC,UAAW,cACX,YAAa,CACXC,YAAa,OAKrBC,WAAY,CACVC,gBAAiB,cACjBC,OAAQ,OACRC,OAAQ,UACR,yBAA0B,CACxBC,eAAgB,aAElB,gDAAiD,CAC/CF,OAAQ,OACRG,QAAS,EACTC,UAAW,SAGfC,kBAAmB,CACjBV,UAAW,EACXtC,QAAS,SACTL,UAAW,KAEbsD,WAAY,CACVC,SAAU,GACVC,MAAO,UACPC,WAAY,IACZC,OAAQ,YACR,oBAAqB,CACnBC,UAAW,SACX1D,MAAO,OACP0C,UAAW,EACX7C,aAAc,KAGlB8D,qBAAsB,CACpBpB,SAAU,SACVqB,IAAK,EACLd,gBAAiB,UACjB9C,MAAO,OACP6D,UAAW,IAEbC,cAAe,CACbC,YAAa,oBACbC,WAAY,WAEdC,eAAgB,CACdC,WAAY,EACZ,qCAAsC,CACpCF,WAAY,YAGhBG,SAAU,CACRpE,UAAW,GACX0C,aAAc,oBACd,UAAW,CACTuB,WAAY,2BAGf,GAwJL,EAtJsB,SAAHtD,GAKC,IAJlBC,EAAOD,EAAPC,QACAyD,EAAW1D,EAAX0D,YACAtD,EAAWJ,EAAXI,YACAC,EAAQL,EAARK,SAEAsD,GAAsCC,EAAAA,EAAAA,UAAiB,GAAEC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAlDI,EAAWF,EAAA,GAAEG,EAAcH,EAAA,GAE5B1D,EAAa,SAAC8D,GAClB,IAAMC,EAAWR,EAAYS,OAAS,EAEtC,GAAkB,OAAdF,EAAoB,CACtB,IAAIG,EAAWL,EAAc,EAEzBK,EAAWF,IACbE,EAAWF,GAGbF,EAAeI,EACjB,CAEA,GAAkB,OAAdH,EAAoB,CACtB,IAAII,EAAWN,EAAc,EAEzBM,EAAW,IACbA,EAAW,GAGbL,EAAeK,EACjB,CAEA,GAAyB,kBAAdJ,EAAwB,CACjC,IAAIK,EAAKL,EACLA,EAAY,IACdK,EAAK,GAGHL,EAAYC,IACdI,EAAKJ,GAGPF,EAAeM,EACjB,CACF,EAEA,GAA2B,IAAvBZ,EAAYS,OACd,OAAO,KAwDT,OACE7D,EAAAA,EAAAA,MAACiE,EAAAA,GAAI,CACHC,WAAS,EACTjE,UAAWF,EAAWJ,EAAQ2B,aAAe3B,EAAQ0B,iBAAiBnB,SAAA,CAErEH,GACCI,EAAAA,EAAAA,KAACgE,EAAAA,SAAQ,CAAAjE,UACPF,EAAAA,EAAAA,MAAA,OAAKC,UAAWN,EAAQgD,qBAAqBzC,SAAA,EAC3CC,EAAAA,EAAAA,KAAA,OAAKF,UAAS,GAAAK,OAAKX,EAAQ0C,WAAU,oBAAmBnC,SAAC,WACzDC,EAAAA,EAAAA,KAAA,OAAKF,UAAWN,EAAQ6B,iBAAiBtB,UA3B/CC,EAAAA,EAAAA,KAAA,MAAAD,SACGkD,EAAY5C,KAAI,SAAC4D,EAAMC,GACtB,OACElE,EAAAA,EAAAA,KAAA,MAAAD,UACEC,EAAAA,EAAAA,KAAA,UACEW,QAAS,kBAAMjB,EAAWwE,EAAM,EAChClD,SAAUkD,EAAQZ,EAClBxD,UAAWN,EAAQkC,WAAW3B,SAE7BkE,EAAKxD,SACC,UAAAN,OAPQ+D,EAAMC,YAU7B,cAkBAnE,EAAAA,EAAAA,KAACgE,EAAAA,SAAQ,CAAAjE,UACPC,EAAAA,EAAAA,KAAC8D,EAAAA,GAAI,CACHM,MAAI,EACJC,GAAI,GACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJ3E,UAAWN,EAAQmD,cAAc5C,UAxEvCC,EAAAA,EAAAA,KAACgE,EAAAA,SAAQ,CAAAjE,UACPC,EAAAA,EAAAA,KAAC0E,EAAAA,EAAI,CACHC,UAAU,MACVC,OAAO,EACPpF,QAAS,CACPqF,KAAMrF,EAAQsD,gBACd/C,SAEDkD,EAAY5C,KAAI,SAAC4D,EAAMC,GACtB,OACElE,EAAAA,EAAAA,KAAC8E,EAAAA,GAAQ,CACPtE,GACE,eAAiByD,EAAKxD,MAAMsE,cAAcC,WAAW,IAAK,KAE5DC,QAAM,EACNC,eAAa,EACbvE,QAAS,kBAAMjB,EAAWwE,EAAM,EAEhCiB,SAAU7B,IAAgBY,EAC1B1E,QAAS,CACPqF,KAAMrF,EAAQwD,UACdjD,UAEFC,EAAAA,EAAAA,KAACoF,EAAAA,EAAY,CAACC,QAASpB,EAAKxD,SAAS,UAAAN,OANtB+D,EAAMC,YAS3B,aAqDJnE,EAAAA,EAAAA,KAAC8D,EAAAA,GAAI,CACHM,MAAI,EACJC,GAAI,GACJC,GAAI1E,EAAW,GAAK,GACpB2E,GAAI3E,EAAW,GAAK,GACpB4E,GAAI5E,EAAW,GAAK,GACpB6E,GAAI7E,EAAW,GAAK,GACpBE,UAAWF,EAAW,GAAKJ,EAAQyC,kBAAkBlC,UAErDC,EAAAA,EAAAA,KAACsF,EAAU,CACT7F,KAAMwD,EAAYK,GAClB5D,WAAYA,EACZC,YAAaA,EACbC,SAAUA,QAKpB,I,WCiKA,GAAe3B,EAAAA,EAAAA,IAtWA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,IAAYoH,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CACXC,WAAY,CACVnH,QAAS,OACToH,oBAAqB,YACrBC,WAAY,SACZ1G,eAAgB,WAElB2G,UAAW,CACT5C,WAAY,EACZX,MAAO,WAETwD,YAAa,CACX7C,WAAY,EACZX,MAAO,YAENyD,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACF,GAkVL,EAhVgC,SAAHzG,GAKC,IAAD0G,EAJ3BC,EAAI3G,EAAJ2G,KACAC,EAAoB5G,EAApB4G,qBACA3G,EAAOD,EAAPC,QACA4G,EAAO7G,EAAP6G,QAEMC,GAAWC,EAAAA,EAAAA,MACjBpD,GAAoCC,EAAAA,EAAAA,WAAkB,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAArDqD,EAAUnD,EAAA,GAAEoD,EAAapD,EAAA,GAChCqD,GAAwCtD,EAAAA,EAAAA,WAAkB,GAAKuD,GAAArD,EAAAA,EAAAA,GAAAoD,EAAA,GAAxDE,EAAYD,EAAA,GAAEE,EAAeF,EAAA,GACpCG,GAAkC1D,EAAAA,EAAAA,UAA2B,IAAG2D,GAAAzD,EAAAA,EAAAA,GAAAwD,EAAA,GAAzDE,EAASD,EAAA,GAAEE,EAAYF,EAAA,GAC9BG,GAA4B9D,EAAAA,EAAAA,UAAS,IAAG+D,GAAA7D,EAAAA,EAAAA,GAAA4D,EAAA,GAAjCE,EAAMD,EAAA,GAAEE,EAASF,EAAA,GACxBG,GAAwBlE,EAAAA,EAAAA,UAAiB,IAAGmE,GAAAjE,EAAAA,EAAAA,GAAAgE,EAAA,GAArCE,EAAID,EAAA,GAAEE,EAAOF,EAAA,GACpBG,GAAwCtE,EAAAA,EAAAA,UAAS,IAAGuE,GAAArE,EAAAA,EAAAA,GAAAoE,EAAA,GAA7CE,EAAYD,EAAA,GAAEE,EAAeF,EAAA,GACpCG,GAA4C1E,EAAAA,EAAAA,UAAS,IAAG2E,GAAAzE,EAAAA,EAAAA,GAAAwE,EAAA,GAAjDE,EAAcD,EAAA,GAAEE,EAAiBF,EAAA,GACxCG,GAA8C9E,EAAAA,EAAAA,WAAkB,GAAM+E,GAAA7E,EAAAA,EAAAA,GAAA4E,EAAA,GAA/DE,EAAeD,EAAA,GAAEE,EAAkBF,EAAA,GAC1CG,IAAgDlF,EAAAA,EAAAA,UAAiB,KAAImF,IAAAjF,EAAAA,EAAAA,GAAAgF,GAAA,GAA9DE,GAAgBD,GAAA,GAAEE,GAAmBF,GAAA,GAC5CG,IAAgDtF,EAAAA,EAAAA,UAAiB,KAAIuF,IAAArF,EAAAA,EAAAA,GAAAoF,GAAA,GAA9DE,GAAgBD,GAAA,GAAEE,GAAmBF,GAAA,GAC5CG,IAA8B1F,EAAAA,EAAAA,UAAkC,UAAS2F,IAAAzF,EAAAA,EAAAA,GAAAwF,GAAA,GAAlEE,GAAOD,GAAA,GAAEE,GAAUF,GAAA,GAC1BG,IAAoC9F,EAAAA,EAAAA,UAAiB,KAAI+F,IAAA7F,EAAAA,EAAAA,GAAA4F,GAAA,GAAlDE,GAAUD,GAAA,GAAEE,GAAaF,GAAA,GAChCG,IAA4ClG,EAAAA,EAAAA,UAAiB,KAAImG,IAAAjG,EAAAA,EAAAA,GAAAgG,GAAA,GAA1DE,GAAcD,GAAA,GAAEE,GAAiBF,GAAA,GACxCG,IAAsCtG,EAAAA,EAAAA,WAAkB,GAAMuG,IAAArG,EAAAA,EAAAA,GAAAoG,GAAA,GAAvDE,GAAWD,GAAA,GAAEE,GAAcF,GAAA,GAClCG,IAA8B1G,EAAAA,EAAAA,UAAsC,MAAK2G,IAAAzG,EAAAA,EAAAA,GAAAwG,GAAA,GAAlEE,GAAOD,GAAA,GAAEE,GAAUF,GAAA,IAE1BG,EAAAA,EAAAA,YAAU,WACJtD,GACFuD,EAAAA,EAAIC,MACDpD,YACAqD,MAAK,SAACC,GACL,IAAMtD,EAA2BuD,IAAID,EAAIE,KAAM,QAAS,IAExD,GAAkB,OAAdxD,GAAsBA,EAAUrD,QAAU,EAAG,CAC/C,IAAM8G,EAAUzD,EAAU1G,KAAI,SAACoK,GAC7B,IAAMC,EAAWD,EAAK7J,KAChB+J,EAAQL,IAAIG,EAAK,GAADtK,OAAKuK,EAAQ,SAAS,IAE5C,MAAO,CAAEjK,MAAOkK,EAAOA,MAAOA,EAChC,IAEA3D,EAAawD,GACTA,EAAQ9G,OAAS,GACnBkE,EAAgB4C,EAAQ,GAAGG,MAE/B,CACA/D,GAAgB,EAClB,IACCgE,OAAM,SAACC,GACNjE,GAAgB,GAChBP,GAASyE,EAAAA,EAAAA,KAA0BC,EAAAA,EAAAA,GAAeF,EAAIG,QACxD,GAEN,GAAG,CAACrE,EAAcN,KAElB4D,EAAAA,EAAAA,YAAU,WACR,IAAIgB,GAAQ,EAEI,WAAZlC,IACmB,KAAjBpB,IACFsD,GAAQ,GAGZrB,GAAeqB,EACjB,GAAG,CAAClC,GAASI,GAAYI,GAAgB5B,IAEzC,IAAMuD,GAAa,SAAHC,GAA8C,IAAxCC,EAASD,EAATC,UACpB,OAAQA,GACN,IAAK,GACH,OACEpL,EAAAA,EAAAA,KAAA,OAAKF,UAAWN,EAAQoG,YAAY7F,UAClCC,EAAAA,EAAAA,KAACqL,EAAAA,EAAsB,MAG7B,IAAK,MACH,OAAO,KACT,QACE,GAAID,EACF,OACEpL,EAAAA,EAAAA,KAAA,OAAKF,UAAWN,EAAQmG,UAAU5F,UAChCC,EAAAA,EAAAA,KAACsL,EAAAA,IAAO,CAACC,QAASH,EAAWI,UAAU,MAAKzL,UAC1CC,EAAAA,EAAAA,KAACyL,EAAAA,EAAgB,QAM7B,OAAO,IACT,EAiDA,OACEzL,EAAAA,EAAAA,KAAC0L,EAAAA,EAAY,CACXC,UAAWzF,EACX0F,QAAS,WACPzF,GAAqB,EACvB,EACA0F,MAAM,oCAAmC9L,UAEzCC,EAAAA,EAAAA,KAAC8L,EAAa,CACZnM,YAAa4G,GAAcI,EAC3B1D,YAAa,CACX,CACExC,MAAO,0BACPR,iBACEJ,EAAAA,EAAAA,MAACmE,EAAAA,SAAQ,CAAAjE,SAAA,EACPC,EAAAA,EAAAA,KAAC8D,EAAAA,IAAI,CAACM,MAAI,EAACC,GAAI,GAAGtE,UAChBC,EAAAA,EAAAA,KAAC+L,EAAAA,IAAO,CAACtL,MAAM,6BAA4BV,SACxCqG,EAAQ4F,KAAK,WAGlBhM,EAAAA,EAAAA,KAAA,MAAAD,SAAI,mCACJF,EAAAA,EAAAA,MAACoM,EAAAA,IAAU,CAACC,aAAa,EAAOC,kBAAkB,EAAMpM,SAAA,EACtDF,EAAAA,EAAAA,MAAA,YAAUC,UAAW,YAAYC,SAAA,EAC/BC,EAAAA,EAAAA,KAAA,UAAAD,SAAQ,6BACRC,EAAAA,EAAAA,KAACoM,EAAAA,IAAU,CACTC,aAActD,GACdvI,GAAG,aACH8L,KAAK,aACL7L,MAAM,WACN8L,SAAU,SAACC,GACTxD,GAAWwD,EAAEC,OAAO9B,MACtB,EACA+B,gBAAiB,CACf,CAAE/B,MAAO,SAAUlK,MAAO,UAC1B,CAAEkK,MAAO,aAAclK,MAAO,iBAGrB,WAAZsI,IACClJ,EAAAA,EAAAA,MAACmE,EAAAA,SAAQ,CAAAjE,SAAA,EACPC,EAAAA,EAAAA,KAAC2M,EAAAA,IAAQ,CACP/L,KAAK,SACLJ,GAAG,cACH8L,KAAK,cACLC,SAAU,SACRC,GAEApD,GAAcoD,EAAEC,OAAO9B,MACzB,EACAlK,MAAM,cACNkK,MAAOxB,GACPyD,IAAI,OAEN5M,EAAAA,EAAAA,KAAC2M,EAAAA,IAAQ,CACP/L,KAAK,SACLJ,GAAG,oCACH8L,KAAK,oCACLC,SAAU,SACRC,GAEAhE,GAAoBgE,EAAEC,OAAO9B,MAC/B,EACAlK,MAAM,8BACNkK,MAAOpC,GACPqE,IAAI,UAIR/M,EAAAA,EAAAA,MAACmE,EAAAA,SAAQ,CAAAjE,SAAA,EACPC,EAAAA,EAAAA,KAAC2M,EAAAA,IAAQ,CACP/L,KAAK,SACLJ,GAAG,kBACH8L,KAAK,kBACLC,SAAU,SACRC,GAEAhD,GAAkBgD,EAAEC,OAAO9B,MAC7B,EACAlK,MAAM,kBACNkK,MAAOpB,GACPqD,IAAI,OAEN5M,EAAAA,EAAAA,KAAC2M,EAAAA,IAAQ,CACP/L,KAAK,SACLJ,GAAG,oCACH8L,KAAK,oCACLC,SAAU,SACRC,GAEA5D,GAAoB4D,EAAEC,OAAO9B,MAC/B,EACAlK,MAAM,8BACNkK,MAAOhC,GACPiE,IAAI,OAEN5M,EAAAA,EAAAA,KAAC2M,EAAAA,IAAQ,CACPnM,GAAG,yBACH8L,KAAK,yBACLC,SAAU,SACRC,GAEAxE,EAAkBwE,EAAEC,OAAO9B,MAC7B,EACAkC,YAAY,mDACZpM,MAAM,+CACNkK,MAAO5C,KAET/H,EAAAA,EAAAA,KAAC8M,EAAAA,IAAM,CACLrM,MAAM,gBACND,GAAG,gBACH8L,KAAK,gBACL3B,MAAOhD,EACP4E,SAAU,SAAC5B,GACT/C,EAAgB+C,EAClB,EACAoC,QAAShG,WAKjBlH,EAAAA,EAAAA,MAAA,YAAUC,UAAW,YAAYC,SAAA,EAC/BC,EAAAA,EAAAA,KAAA,UAAAD,SAAQ,wBACRC,EAAAA,EAAAA,KAAC2M,EAAAA,IAAQ,CACPnM,GAAG,SACH8L,KAAK,SACLC,SAAU,SAACC,GACTpF,EAAUoF,EAAEC,OAAO9B,MACrB,EACAlK,MAAM,SACNkK,MAAOxD,KAETnH,EAAAA,EAAAA,KAACgN,EAAAA,EAAkB,CACjBV,KAAK,OACL7L,MAAM,OACNwM,SAAU1F,EACVgF,SAAU,SAACW,GACT1F,EAAQ0F,EACV,EACAC,eAAe,UACfC,iBAAiB,YACjBC,YAAU,KAEZrN,EAAAA,EAAAA,KAACsN,EAAAA,IAAM,CACL3C,MAAM,wBACNnK,GAAG,wBACH8L,KAAK,wBACLiB,QAASpF,EACToE,SAAU,SACRiB,GAEApF,EAAmBoF,EAAMf,OAAOc,QAClC,EACA9M,MAAO,0CAMjBL,QAAS,CACP,CACEQ,KAAM,SACNH,MAAO,eACPQ,SAAU0F,IAAiBJ,GAAcoD,GACzC7I,OAjNe,SAAC2M,GAC5B,IAAIC,EAAQ,CAAC,EAEb,GAAgB,WAAZ3E,GAAsB,CACxB,IAAI4E,EAAS,CACXC,YAAaC,SAAS1E,KAGxBuE,GAAKnI,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACAoI,GAAM,IACTG,kCAAmCD,SAAStF,KAEhD,KAAO,CACL,IAAIwF,EAAa,CACfC,gBAAiBH,SAAStE,KAG5BmE,GAAKnI,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACAwI,GAAU,IACbE,kCAAmCJ,SAASlF,IAC5CuF,2CAA4CnG,EAC5CoG,cAAexG,GAEnB,CAEA,IAAMyG,GAAe7I,EAAAA,EAAAA,GAAA,CACnBa,QAAAA,EACAxF,KAAMmI,GACN5B,OAAAA,EACAI,KAAAA,EACA8G,6BAA8BlG,GAC3BuF,GAGLxD,EAAAA,EAAI9D,QACDkI,wBAAwBF,GACxBhE,MAAK,SAACC,GACL7D,GAAc,GACdwD,GAAWK,EAAIE,MACfkD,EAAG,KACL,IACC7C,OAAM,SAACC,GACNrE,GAAc,GACdH,GAASyE,EAAAA,EAAAA,KAA0BC,EAAAA,EAAAA,GAAeF,EAAIG,QACxD,GACJ,KAwKQ,CACEvK,MAAO,UACPR,iBACEJ,EAAAA,EAAAA,MAACmE,EAAAA,SAAQ,CAAAjE,SAAA,EACPC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,gDACJC,EAAAA,EAAAA,KAAC8D,EAAAA,IAAI,CAACC,WAAS,EAAAhE,UACbF,EAAAA,EAAAA,MAACiE,EAAAA,IAAI,CAACM,MAAI,EAACC,GAAI,GAAIvE,UAAWN,EAAQ+O,eAAexO,SAAA,EACnDC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,oBACI,OAAPgK,SAAO,IAAPA,IAAgB,QAAT9D,EAAP8D,GAASA,eAAO,IAAA9D,OAAT,EAAPA,EAAkB5F,KAAI,SAACmO,GACtB,OACE3O,EAAAA,EAAAA,MAAA,OAAKC,UAAWN,EAAQgG,WAAWzF,SAAA,CAChCmL,GAAW,CAAEE,UAAWoD,EAAWxD,OAAS,MAC7ChL,EAAAA,EAAAA,KAAA,QAAAD,SAAOyO,EAAWC,eAGxB,YAKRrO,QAAS,CACP,CACEQ,KAAM,SACNH,MAAO,OACPQ,SAAUsF,EACVzF,OAAQ,kBAAMqF,GAAqB,EAAK,MAKhDvG,UAAQ,KAIhB,I,4CCpXM8O,EAAiBC,EAAAA,GAAOC,KAAI,SAAArP,GAAA,IAAGrB,EAAKqB,EAALrB,MAAK,MAAQ,CAChD0D,OAAO,GAADzB,OAAKmK,IAAIpM,EAAO,cAAe,WAAU,cAC/C2Q,aAAc,EACd5P,QAAS,GACT4C,OAAQ,UACR,aAAc,CACZF,gBAAiB2I,IAAIpM,EAAO,sBAAuB,QAErD,UAAW,CACTyD,gBAAiB2I,IAAIpM,EAAO,gBAAiB,YAE/C,iBAAkB,CAChBG,QAAS,OACTqH,WAAY,SACZ1G,eAAgB,aAChB8P,IAAK,GACL,QAAMC,EAAAA,EAAAA,GAAA,CACJ9P,QAAS,EACTqD,OAAQ,EACR5D,aAAc,EACdyD,SAAU,GACVC,MAAOkI,IAAIpM,EAAO,wBAAyB,YAAU,sBAAAiC,OAC9B6O,EAAAA,IAAYzK,GAAE,OAAQ,CAC3C7F,aAAc,KAIpB,oBAAkBqQ,EAAAA,EAAAA,GAAA,CAChB1Q,QAAS,OACTyQ,IAAK,GACL,SAAU,CACR3M,SAAU,KACX,sBAAAhC,OACsB6O,EAAAA,IAAYzK,GAAE,OAAQ,CAC3C0K,SAAU,iBACVH,IAAK,IAGT,oBAAkBC,EAAAA,EAAAA,GAAA,CAChB1Q,QAAS,OACTqH,WAAY,SACZnE,UAAW,GACXuN,IAAK,GACL5P,UAAU,GAADiB,OAAKmK,IAAIpM,EAAO,cAAe,WAAU,cAClD6E,WAAY,GACZ,mBAAoB,CAClBX,MAAOkI,IAAIpM,EAAO,wBAAyB,WAC3CgR,KAAM5E,IAAIpM,EAAO,wBAAyB,YAE5C,YAAa,CACX,cAAe,CACbkE,MAAOkI,IAAIpM,EAAO,YAAa,QAC/BW,MAAO,GACPS,YAAa,IAGjB,iBAAkB,CAChB6C,SAAU,GACVE,WAAY,OACZD,MAAOkI,IAAIpM,EAAO,YAAa,SAEjC,gBAAiB,CACfiE,SAAU,GACVE,WAAY,QAEd,UAAW,CACTF,SAAU,GACVE,WAAY,WACb,sBAAAlC,OACsB6O,EAAAA,IAAYzK,GAAE,OAAQ,CAC3ChD,UAAW,EACXwB,WAAY,IAGjB,IAyHD,EAhHuB,SAAHoI,GAKI,IAJtBgE,EAAMhE,EAANgE,OACAC,EAAQjE,EAARiE,SACAjK,EAAQgG,EAARhG,SACAkK,EAAUlE,EAAVkE,WAEMC,GAAWC,EAAAA,EAAAA,MAEXC,GAAQC,EAAAA,EAAAA,IAAU,GAAAtP,OAAGgP,EAAOO,OAAU,KACtCC,EAAcH,EAAMI,MAAM,KAAK,GAC/BC,EAAYL,EAAMI,MAAM,KAAK,GAE7BE,EAAQxF,IAAI6E,EAAQ,sBAAuB,KAC3CY,GAAiBC,EAAAA,EAAAA,IAAeF,GAAO,GAAM,GAE7CG,GACJC,EAAAA,EAAAA,GAAcf,EAAO7C,KAAM6D,EAAAA,EAAgBC,EAAAA,GAAUC,iBACrD,EAgBF,OACExQ,EAAAA,EAAAA,MAAC6O,EAAc,CACb/N,QAAS,WACP2O,EAAS,YAADnP,OAAagP,EAAO7C,KAAI,UAClC,EACA9L,GAAE,gBAAAL,OAAkBgP,EAAO7C,MAC3BxM,UAAS,eAAAK,OAAiB8P,EAAgB,WAAa,IAAKlQ,SAAA,EAE5DF,EAAAA,EAAAA,MAACyQ,EAAAA,IAAG,CAACxQ,UAAW,cAAcC,SAAA,CAC3BsP,IACCrP,EAAAA,EAAAA,KAACsQ,EAAAA,IAAG,CACF3P,QAAS,SAAC6L,GACRA,EAAE+D,iBACJ,EAAExQ,UAEFC,EAAAA,EAAAA,KAACwQ,EAAAA,IAAQ,CACPjD,QAASpI,EACT3E,GAAE,UAAAL,OAAYgP,EAAO7C,MACrB7L,MAAO,GACP6L,KAAI,UAAAnM,OAAYgP,EAAO7C,MACvBC,SAxBY,SAACC,GACvB4C,EAAS5C,EACX,EAuBY7B,MAAOwE,EAAO7C,UAIpBzM,EAAAA,EAAAA,MAAA,MAAAE,SAAA,CACGoP,EAAO7C,KAAK,IAAE2D,SAGnBpQ,EAAAA,EAAAA,MAACyQ,EAAAA,IAAG,CAACxQ,UAAW,gBAAgBC,SAAA,EAC9BF,EAAAA,EAAAA,MAAA,QAAMW,GAAE,WAAAL,OAAagP,EAAO7C,MAAOvM,SAAA,EACjCC,EAAAA,EAAAA,KAAA,UAAAD,SAAQ,aAAkB,IACzBoP,EAAOsB,cACJ,IAAIC,KAAKvB,EAAOsB,eAAetM,WAC/B,UAENtE,EAAAA,EAAAA,MAAA,QAAMW,GAAE,UAAAL,OAAYgP,EAAO7C,MAAOvM,SAAA,EAChCC,EAAAA,EAAAA,KAAA,UAAAD,SAAQ,YAAgB,IAnDZ,SAACoP,GAA4B,IAADwB,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAC9C,OAAoB,QAAhBL,EAAAxB,EAAO8B,iBAAS,IAAAN,IAAhBA,EAAkBO,MAAyB,QAAjBN,EAACzB,EAAO8B,iBAAS,IAAAL,GAAhBA,EAAkBO,MAErB,QAAjBN,EAAC1B,EAAO8B,iBAAS,IAAAJ,GAAhBA,EAAkBK,MAAwB,QAApBJ,EAAI3B,EAAO8B,iBAAS,IAAAH,IAAhBA,EAAkBK,MAE7B,QAAhBJ,EAAA5B,EAAO8B,iBAAS,IAAAF,GAAhBA,EAAkBG,MAAwB,QAApBF,EAAI7B,EAAO8B,iBAAS,IAAAD,GAAhBA,EAAkBG,MAC9C,MAEF,GAJE,IAFA,GAOX,CA0CkCC,CAAYjC,UAG1CtP,EAAAA,EAAAA,MAACyQ,EAAAA,IAAG,CAACxQ,UAAW,gBAAgBC,SAAA,EAC9BC,EAAAA,EAAAA,KAACqR,EAAAA,GAAI,CAAC5D,GAAE,YAAAtN,OAAcgP,EAAO7C,KAAI,UAASvM,UACxCC,EAAAA,EAAAA,KAACsR,EAAAA,IAAW,CACVxR,UAAW,aACXyR,MAAO,CACL5S,OAAQ,GACRE,MAAO,SAKbgB,EAAAA,EAAAA,MAACiE,EAAAA,IAAI,CAACM,MAAI,EAACtE,UAAW,SAASC,SAAA,EAC7BC,EAAAA,EAAAA,KAACwR,EAAAA,IAAiB,KAClBxR,EAAAA,EAAAA,KAAA,QAAMF,UAAW,cAAcC,SAAC,WAChCF,EAAAA,EAAAA,MAAA,OAAKC,UAAW,aAAaC,SAAA,CAC1B4P,GACD3P,EAAAA,EAAAA,KAAA,QAAMF,UAAW,OAAOC,SAAE8P,IACf,MAAVC,IACCjQ,EAAAA,EAAAA,MAACmE,EAAAA,SAAQ,CAAAjE,SAAA,CACN,IAAI,KACFgQ,EAAe0B,OAClBzR,EAAAA,EAAAA,KAAA,QAAMF,UAAW,OAAOC,SAAEgQ,EAAe2B,iBAMjD7R,EAAAA,EAAAA,MAACiE,EAAAA,IAAI,CAACM,MAAI,EAACtE,UAAW,SAASC,SAAA,EAC7BC,EAAAA,EAAAA,KAAC2R,EAAAA,IAAgB,KACjB3R,EAAAA,EAAAA,KAAA,QAAMF,UAAW,cAAcC,SAAC,aAChCC,EAAAA,EAAAA,KAAA,OAAKF,UAAW,aAAaC,SAC1BoP,EAAOyC,SAAUC,EAAAA,EAAAA,IAAa1C,EAAOyC,SAAW,YAM7D,E,sBC4QA,GAAe3T,EAAAA,EAAAA,IAtcA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,IAAYoH,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CACXuM,iBAAkB,CAChBzT,QAAS,OACToH,oBAAqB,iBACrBC,WAAY,SACZ1G,eAAgB,WAElB2G,UAAW,CACTvD,MAAO,WAETwD,YAAa,CACXxD,MAAO,WAET2P,KAAM,CACJC,QAAS,EACTC,mBAAoB,SAEnBC,EAAAA,IACAC,EAAAA,IACF,GAkbL,EAhbgC,SAAH5S,GAKC,IAJ5B2G,EAAI3G,EAAJ2G,KACAC,EAAoB5G,EAApB4G,qBACA3G,EAAOD,EAAPC,QACA4G,EAAO7G,EAAP6G,QAEMC,GAAWC,EAAAA,EAAAA,MACjBpD,GAA4CC,EAAAA,EAAAA,UAAmB,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA3DkP,EAAchP,EAAA,GAAEiP,EAAiBjP,EAAA,GACxCqD,GAAoCtD,EAAAA,EAAAA,WAAkB,GAAMuD,GAAArD,EAAAA,EAAAA,GAAAoD,EAAA,GAArDF,EAAUG,EAAA,GAAEF,EAAaE,EAAA,GAChCG,GAA8C1D,EAAAA,EAAAA,WAAkB,GAAM2D,GAAAzD,EAAAA,EAAAA,GAAAwD,EAAA,GAA/DyL,EAAexL,EAAA,GAAEyL,EAAkBzL,EAAA,GAC1CG,GAAkC9D,EAAAA,EAAAA,UAAiB,IAAG+D,GAAA7D,EAAAA,EAAAA,GAAA4D,EAAA,GAA/CuL,EAAStL,EAAA,GAAEuL,EAAYvL,EAAA,GAC9BG,GAAkClE,EAAAA,EAAAA,UAAiB,IAAGmE,GAAAjE,EAAAA,EAAAA,GAAAgE,EAAA,GAA/CqL,EAASpL,EAAA,GAAEqL,EAAYrL,EAAA,GAC9BG,GAAkCtE,EAAAA,EAAAA,UAAiB,IAAGuE,GAAArE,EAAAA,EAAAA,GAAAoE,EAAA,GAA/CmL,EAASlL,EAAA,GAAEmL,EAAYnL,EAAA,GAC9BG,GAA4B1E,EAAAA,EAAAA,UAAiB,IAAG2E,GAAAzE,EAAAA,EAAAA,GAAAwE,EAAA,GAAzCiL,EAAMhL,EAAA,GAAEiL,EAASjL,EAAA,GACxBG,GAA4B9E,EAAAA,EAAAA,WAAkB,GAAK+E,GAAA7E,EAAAA,EAAAA,GAAA4E,EAAA,GAA5C+K,EAAM9K,EAAA,GAAE+K,GAAS/K,EAAA,GACxBG,IAA8ClF,EAAAA,EAAAA,UAC5C,SACDmF,IAAAjF,EAAAA,EAAAA,GAAAgF,GAAA,GAFM6K,GAAe5K,GAAA,GAAE6K,GAAkB7K,GAAA,GAG1CG,IAA8CtF,EAAAA,EAAAA,UAAiB,OAAMuF,IAAArF,EAAAA,EAAAA,GAAAoF,GAAA,GAA9D2K,GAAe1K,GAAA,GAAE2K,GAAkB3K,GAAA,GAC1CG,IAA0C1F,EAAAA,EAAAA,UAAiB,MAAK2F,IAAAzF,EAAAA,EAAAA,GAAAwF,GAAA,GAAzDyK,GAAaxK,GAAA,GAAEyK,GAAgBzK,GAAA,GACtCG,IAAsC9F,EAAAA,EAAAA,UAAiB,MAAK+F,IAAA7F,EAAAA,EAAAA,GAAA4F,GAAA,GAArDuK,GAAWtK,GAAA,GAAEuK,GAAcvK,GAAA,GAClCG,IAA8ClG,EAAAA,EAAAA,UAAmB,IAAGmG,IAAAjG,EAAAA,EAAAA,GAAAgG,GAAA,GAA7DqK,GAAepK,GAAA,GAAEqK,GAAkBrK,GAAA,GAC1CG,IAAiDtG,EAAAA,EAAAA,UAAmB,IAAGuG,IAAArG,EAAAA,EAAAA,GAAAoG,GAAA,GAAhEmK,GAAiBlK,GAAA,GAAEmK,GAAmBnK,GAAA,GAC7CG,IAAwC1G,EAAAA,EAAAA,UAEtC,IAAG2G,IAAAzG,EAAAA,EAAAA,GAAAwG,GAAA,GAFEiK,GAAYhK,GAAA,GAAEiK,GAAejK,GAAA,GAI9BkK,GAAyCJ,GAAkBvT,KAC/D,SAAC4T,GACC,MAAO,CACLxT,MAAOwT,EACPtJ,MAAOsJ,EAEX,KAGFhK,EAAAA,EAAAA,YAAU,WACR,GAA+B,IAA3ByJ,GAAgBhQ,OAAc,CAChC,IAAMwQ,EAAyB,GACzBC,EAAiC,GAEvC/N,EAAQgO,SAAQ,SAAChQ,GACf8P,EAAaG,KAAKjQ,GAClB+P,EAAqBE,KAAK,GAC5B,IAEAV,GAAmBQ,GACnB9B,EAAkB6B,EACpB,CACF,GAAG,CAAC9N,EAASsN,GAAgBhQ,SAE7B,IAwGMwH,GAAa,SAAHC,GAA8C,IAAxCC,EAASD,EAATC,UACpB,OAAQA,GACN,IAAK,GACH,OACEpL,EAAAA,EAAAA,KAAA,OAAKF,UAAWN,EAAQoG,YAAY7F,UAClCC,EAAAA,EAAAA,KAACqL,EAAAA,EAAsB,MAG7B,IAAK,MACH,OAAO,KACT,QACE,GAAID,EACF,OACEpL,EAAAA,EAAAA,KAAA,OAAKF,UAAWN,EAAQmG,UAAU5F,UAChCC,EAAAA,EAAAA,KAACsL,EAAAA,IAAO,CAACC,QAASH,EAAWI,UAAU,MAAKzL,UAC1CC,EAAAA,EAAAA,KAACyL,EAAAA,EAAgB,QAM7B,OAAO,IACT,EAEM6I,GAAa,SAACC,EAAmB5J,GACrC,IAAM6J,GAAWC,EAAAA,EAAAA,GAAOf,IACxBc,EAAYD,GAAa5J,EACzBgJ,GAAmBa,EACrB,EAoCME,GAAqB,SACzBZ,GAEA,IAAIa,GAAiBF,EAAAA,EAAAA,GAAOrC,GACxBwC,GAAkBH,EAAAA,EAAAA,GAAOf,IAEjB,OAAZI,QAAY,IAAZA,GAAAA,EAAcM,SAAQ,SAACS,GACrB,IAAMC,EAAcxK,IAAIuK,EAAgB,cAAe,IAEvD,IAAKC,GAA+B,KAAhBA,EAAoB,CACtC,IAAMC,EAAgBJ,EAAkBK,QACtCH,EAAeI,cAAgB,IAGjCN,EAAkBO,OAAOH,EAAe,GACxCH,EAAmBM,OAAOH,EAAe,EAC3C,CACF,IAEA1C,EAAkBsC,GAClBhB,GAAmBiB,EACrB,EAEA,OACE5U,EAAAA,EAAAA,KAAC0L,EAAAA,EAAY,CACXC,UAAWzF,EACX0F,QAAS,WACPzF,GAAqB,EACvB,EACA0F,MAAM,kCAAiC9L,UAEvCC,EAAAA,EAAAA,KAAC8L,EAAa,CACZnM,YAAa4G,GAAc+L,EAC3BrP,YAAa,CACX,CACExC,MAAO,uBACPR,iBACEJ,EAAAA,EAAAA,MAACmE,EAAAA,SAAQ,CAAAjE,SAAA,EACPC,EAAAA,EAAAA,KAAC8D,EAAAA,IAAI,CAACM,MAAI,EAACC,GAAI,GAAGtE,UAChBC,EAAAA,EAAAA,KAACmV,EAAAA,EAAc,CACb1U,MAAM,6BACN2U,QAAShD,EAAepG,KAAK,WAGjChM,EAAAA,EAAAA,KAAA,MAAAD,SAAI,mCACJC,EAAAA,EAAAA,KAAA,QAAMF,UAAWN,EAAQ6V,gBAAgBtV,SAAC,+DAG1CC,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,UACAH,EAAAA,EAAAA,MAACoM,EAAAA,IAAU,CAACE,kBAAkB,EAAOD,aAAa,EAAMnM,SAAA,EACtDC,EAAAA,EAAAA,KAAC2M,EAAAA,IAAQ,CACPnM,GAAG,YACH8L,KAAK,YACLC,SAAU,SAACC,GACTiG,EAAajG,EAAEC,OAAO9B,MACxB,EACAlK,MAAM,aACNkK,MAAO6H,KAETxS,EAAAA,EAAAA,KAAC2M,EAAAA,IAAQ,CACPnM,GAAG,YACH8L,KAAK,YACLC,SAAU,SAACC,GACTmG,EAAanG,EAAEC,OAAO9B,MACxB,EACAlK,MAAM,aACNkK,MAAO+H,KAET1S,EAAAA,EAAAA,KAAC2M,EAAAA,IAAQ,CACPnM,GAAG,YACH8L,KAAK,YACLC,SAAU,SAACC,GACTqG,EAAarG,EAAEC,OAAO9B,MACxB,EACAkC,YAAY,mBACZpM,MAAM,aACNkK,MAAOiI,KAET5S,EAAAA,EAAAA,KAACsN,EAAAA,IAAM,CACLC,QAASyF,EACTxS,GAAG,SACH8L,KAAK,SACL7L,MAAM,UACN8L,SAAU,SAACC,GACTyG,GAAUzG,EAAEC,OAAOc,QACrB,EACA5C,MAAM,SAER3K,EAAAA,EAAAA,KAAC2M,EAAAA,IAAQ,CACPnM,GAAG,SACH8L,KAAK,SACLC,SAAU,SAACC,GACTuG,EAAUvG,EAAEC,OAAO9B,MACrB,EACAlK,MAAM,SACNkK,MAAOmI,KAET9S,EAAAA,EAAAA,KAAC8M,EAAAA,IAAM,CACLtM,GAAG,mBACH8L,KAAK,mBACLC,SAAU,SAAC5B,GACTwI,GAAmBxI,EACrB,EACAlK,MAAM,mBACNkK,MAAOuI,GACPnG,QAAS,CACP,CAAEtM,MAAO,eAAgBkK,MAAO,SAChC,CAAElK,MAAO,cAAekK,MAAO,WAGd,UAApBuI,KACClT,EAAAA,EAAAA,KAAC2M,EAAAA,IAAQ,CACP/L,KAAK,SACLJ,GAAG,mBACH8L,KAAK,mBACLC,SAAU,SAACC,GACLA,EAAEC,OAAO6I,SAASrK,OACpBoI,GAAmB7G,EAAEC,OAAO9B,MAEhC,EACAlK,MAAM,YACNkK,MAAOyI,GACPxG,IAAI,IACJ2I,QAAS,SACTC,eACExV,EAAAA,EAAAA,KAACyV,EAAAA,EAAa,CACZjV,GAAI,aACJkV,aAAc,SAACC,GACbpC,GAAiBoC,EACnB,EACAC,aAActC,GACduC,WAAWC,EAAAA,EAAAA,IAAwB,CAAC,OACpC9U,UAAU,OAKlBhB,EAAAA,EAAAA,KAAC2M,EAAAA,IAAQ,CACPnM,GAAG,cACH8L,KAAK,cACLC,SAAU,SAACC,GACTiH,GAAejH,EAAEC,OAAO9B,MAC1B,EACAlK,MAAM,wBACNkK,MAAO6I,WAKfpT,QAAS,CACP,CACEQ,KAAM,SACNH,MAAO,OACPQ,SAAUqR,EACVxR,OA/QgB,SAC5BiV,GAEA,IAAMC,EAAoB,CACxBxD,UAAWA,EACXE,UAAWA,EACXE,UAAWA,EACXI,OAAAA,GAEFT,GAAmB,GAEnBrI,EAAAA,EAAI+L,oBACDA,oBAAoBD,GACpB5L,MAAK,SAACC,GACL,IAAMjE,EAAUkE,IAAID,EAAIE,KAAM,UAAW,IAEzC,GAAInE,GAAWA,EAAQ1C,OAAS,EAAG,CACjC,IAAMwS,EAAsB9P,EAAQ/F,KAAI,SAAC8V,GACvC,OAAOA,EAAQ7J,IACjB,IAEAuH,GAAoBqC,EACtB,CAEAH,EAAe,MACfxD,GAAmB,EACrB,IACC3H,OAAM,SAACC,GACN0H,GAAmB,GACnBlM,GAASyE,EAAAA,EAAAA,KAA0BC,EAAAA,EAAAA,GAAeF,EAAIG,QACxD,GACJ,KAoPQ,CACEvK,MAAO,qBACPR,iBACEJ,EAAAA,EAAAA,MAACmE,EAAAA,SAAQ,CAAAjE,SAAA,EACPC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,+BACJC,EAAAA,EAAAA,KAAA,QAAMF,UAAWN,EAAQ6V,gBAAgBtV,SAAC,mGAI1CC,EAAAA,EAAAA,KAAA,OAAKF,UAAWN,EAAQsS,iBAAiB/R,SACtCqS,EAAe/R,KAAI,SAACoO,EAAoBvK,GACvC,IA5MOqQ,EA4MD6B,EA7PJ,SAACC,GACnB,GAAIvC,IAAgBA,GAAapQ,OAAS,EAAG,CAC3C,IAAM4S,EAAiBxC,GAAayC,MAClC,SAACnS,GAAI,OAAKA,EAAK6Q,eAAiBoB,CAAa,IAG/C,GAAIC,EAGF,OAFkBhM,IAAIgM,EAAgB,cAAe,KAM9C,EAEX,CACA,MAAO,KACT,CA4OoCE,CAAY/H,GAC9B,OACE5O,EAAAA,EAAAA,MAACmE,EAAAA,SAAQ,CAAAjE,SAAA,EAGPC,EAAAA,EAAAA,KAAA,OAAKF,UAAyB,KAAdsW,EAAmB5W,EAAQuS,KAAO,GAAGhS,SAClD0O,KAEHzO,EAAAA,EAAAA,KAAA,OAAKF,UAAyB,KAAdsW,EAAmB5W,EAAQuS,KAAO,GAAGhS,UApNlDwU,EAqNgBrQ,EApNnC0P,GAAkBlQ,OAAS,GAE3B1D,EAAAA,EAAAA,KAACgE,EAAAA,SAAQ,CAAAjE,UACPC,EAAAA,EAAAA,KAAC8M,EAAAA,IAAM,CACLrM,MAAM,GACND,GAAE,iBAAAL,OAAmBoU,GACrBjI,KAAI,iBAAAnM,OAAmBoU,GACvB5J,MAAO+I,GAAgBa,GACvBhI,SAAU,SAAC5B,GACT2J,GAAWC,EAAW5J,EACxB,EACAoC,QAASiH,GACThT,SAAUuF,OAMhBvG,EAAAA,EAAAA,KAACgE,EAAAA,SAAQ,CAAAjE,UACPC,EAAAA,EAAAA,KAAC2M,EAAAA,IAAQ,CACPnM,GAAE,iBAAAL,OAAmBoU,GACrBjI,KAAI,iBAAAnM,OAAmBoU,GACvB9T,MAAM,GACN8L,SAAU,SAACiB,GACT8G,GAAWC,EAAW/G,EAAMf,OAAO9B,MACrC,EACAA,MAAO+I,GAAgBa,GACvBvT,SAAUuF,UA2LIvG,EAAAA,EAAAA,KAAA,OAAKF,UAAyB,KAAdsW,EAAmB5W,EAAQuS,KAAO,GAAGhS,SAClD+T,IAAgBA,GAAapQ,OAAS,IACrC1D,EAAAA,EAAAA,KAACkL,GAAU,CAACE,UAAWgL,QAErB,uBAAAjW,OAZsB+D,EAAMC,WAAU,KAAAhE,OAAIsO,GAetD,SAINrO,QAAS,CACP,CACEQ,KAAM,OACNH,MAAO,OACPQ,SAAS,GAEX,CACEL,KAAM,OACNH,MAAO,SACPQ,SAAUsF,EACVzF,OAlXI,WAChB0F,GAAc,GACd,IAAMiQ,EAAYrE,EAAe/R,KAAI,SAACoO,EAAYvK,GAChD,MAAO,CACL+Q,aAAcxG,EACdiI,kBAAmBhD,GAAgBxP,GAEvC,IAEMyS,EAAM,GAAAxW,OAAM6S,EAAS,WAAa,WAAS7S,OAAGyS,GAC9CgE,EAAK/I,SAAS2F,IAEdqD,EAAoB,CACxBrE,UAAWA,EACXE,UAAWA,EACXE,UAAW+D,EACX7D,OAAQA,EACRgE,gBAAiBL,EACjBM,SAAU7D,GACV8D,UACsB,UAApB9D,GACIrF,UAASoJ,EAAAA,EAAAA,IAAS7D,GAAiBE,IAAe,IAClD,EACN4D,kBAAmBN,GAGrB1M,EAAAA,EAAIiN,mBACDC,0BAA0BP,GAC1BzM,MAAK,SAACiN,GACL7Q,GAAc,GAEd,IAAM8Q,EAASD,EAAS9M,KAAKgN,iBAC7BxD,GAAgBuD,GAEhB,IAAME,EAAqB,OAANF,QAAM,IAANA,OAAM,EAANA,EAAQG,QAC3B,SAACC,GAAG,OAAKA,EAAI5C,aAAmC,KAApB4C,EAAI5C,WAAkB,IAGvB,KAAb,OAAZ0C,QAAY,IAAZA,OAAY,EAAZA,EAAc9T,QAChByC,GAAqB,GAErBwR,YAAW,WACTjD,GAAmB4C,EACrB,GAAG,IAEP,IACC1M,OAAM,SAACC,GACNrE,GAAc,GACdH,GAASyE,EAAAA,EAAAA,KAA0BC,EAAAA,EAAAA,GAAeF,EAAIG,QACxD,GACJ,MAqUMpL,UAAQ,KAIhB,ICtCA,EA9YoB,WAClB,IAAMyG,GAAWC,EAAAA,EAAAA,MACXgJ,GAAWC,EAAAA,EAAAA,MAEjBrM,GAA8BC,EAAAA,EAAAA,UAAmB,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA7C0U,EAAOxU,EAAA,GAAEyU,EAAUzU,EAAA,GAC1BqD,GAA8BtD,EAAAA,EAAAA,WAAkB,GAAKuD,GAAArD,EAAAA,EAAAA,GAAAoD,EAAA,GAA9CqR,EAAOpR,EAAA,GAAEqR,EAAUrR,EAAA,GAC1BG,GAA0C1D,EAAAA,EAAAA,UAAiB,IAAG2D,GAAAzD,EAAAA,EAAAA,GAAAwD,EAAA,GAAvDmR,EAAalR,EAAA,GAAEmR,EAAgBnR,EAAA,GACtCG,GAA8C9D,EAAAA,EAAAA,UAAmB,IAAG+D,GAAA7D,EAAAA,EAAAA,GAAA4D,EAAA,GAA7DiR,EAAehR,EAAA,GAAEiR,EAAkBjR,EAAA,GAC1CG,GACElE,EAAAA,EAAAA,WAAkB,GAAMmE,GAAAjE,EAAAA,EAAAA,GAAAgE,EAAA,GADnB+Q,EAAoB9Q,EAAA,GAAE+Q,EAAuB/Q,EAAA,GAEpDG,GAAoDtE,EAAAA,EAAAA,WAAkB,GAAMuE,GAAArE,EAAAA,EAAAA,GAAAoE,EAAA,GAArE6Q,EAAkB5Q,EAAA,GAAE6Q,EAAqB7Q,EAAA,GAChDG,GAA8C1E,EAAAA,EAAAA,WAAkB,GAAM2E,IAAAzE,EAAAA,EAAAA,GAAAwE,EAAA,GAA/D2Q,GAAe1Q,GAAA,GAAE2Q,GAAkB3Q,GAAA,GAC1CG,IAAoC9E,EAAAA,EAAAA,WAAkB,GAAM+E,IAAA7E,EAAAA,EAAAA,GAAA4E,GAAA,GAArDoH,GAAUnH,GAAA,GAAEwQ,GAAaxQ,GAAA,GAE1ByQ,IAAWC,EAAAA,EAAAA,IAAYC,EAAAA,IACvBC,KAAmB,OAARH,SAAQ,IAARA,KAAAA,GAAUI,SAAS,yBAEpC9O,EAAAA,EAAAA,YAAU,WACR5D,GAAS2S,EAAAA,EAAAA,IAAY,kBACvB,GAAG,CAAC3S,KAEJ4D,EAAAA,EAAAA,YAAU,WACR,GAAI6N,EAAS,CAETC,GAAW,GACX7N,EAAAA,EAAI9D,QAAQ6S,cAAc7O,MAAK,SAACC,GAC1BA,EAAIE,MACNwN,GAAW,GACXF,EAAWxN,EAAIE,KAAKnE,SAAW,KACtBiE,EAAIW,QACb+M,GAAW,GACX1R,GAAS6S,EAAAA,EAAAA,KAAqBnO,EAAAA,EAAAA,GAAeV,EAAIW,SAErD,GAGJ,CACF,GAAG,CAAC8M,EAASzR,IAEb,IAAM8S,GAAkBvB,EAAQH,QAAO,SAAC2B,GACtC,MAAsB,KAAlBpB,GAGKoB,EAAE9M,KAAK0I,QAAQgD,IAAkB,CAE5C,IAEMqB,GAAazB,EAAQlU,OAAS,EAE9B4V,GAAoB,SAAC9M,GACzB,IAAM+M,EAAU/M,EAAEC,OACZ9B,EAAQ4O,EAAQ5O,MAChB4C,EAAUgM,EAAQhM,QAEpBN,GAAkBwH,EAAAA,EAAAA,GAAOyD,GAW7B,OATI3K,EAEFN,EAASoH,KAAK1J,GAGdsC,EAAWA,EAASwK,QAAO,SAACtB,GAAO,OAAKA,IAAYxL,CAAK,IAE3DwN,EAAmBlL,GAEZA,CACT,GAkBAhD,EAAAA,EAAAA,YAAU,WACR,IAAIuP,GAAgB,EACpBtB,EAAgB9D,SAAQ,SAACjF,IACvBe,EAAAA,EAAAA,GAAcf,EAAQgB,EAAAA,EAAgBC,EAAAA,GAAUqJ,mBAAmB,GAC/DhB,IAAmB,GAClBe,GAAgB,CACvB,IACgBf,IAAhBe,EACF,GAAG,CAACtB,IAEJ,IA4BMwB,IAAkBxJ,EAAAA,EAAAA,GAAc,IAAK,CAACyJ,EAAAA,GAAWC,mBACjDC,IAAiB3J,EAAAA,EAAAA,GAAc,IAAK,CACxCyJ,EAAAA,GAAWG,eACXH,EAAAA,GAAWI,qBAGb,OACEla,EAAAA,EAAAA,MAACmE,EAAAA,SAAQ,CAAAjE,SAAA,CACNqY,IACCpY,EAAAA,EAAAA,KAACga,EAAoB,CACnB9T,KAAMkS,EACNhS,QAAS8R,EACT/R,qBAlE0B,SAAC8T,GACjC5B,GAAwB,GAEpB4B,GACF9B,EAAmB,GAEvB,IA+DKG,IACCtY,EAAAA,EAAAA,KAACka,EAAkB,CACjB9T,QAAS8R,EACT/R,qBAhEwB,SAAC8T,GAC/B1B,GAAsB,GAElB0B,GACF9B,EAAmB,GAEvB,EA2DQjS,KAAMoS,KAGRQ,KACA9Y,EAAAA,EAAAA,KAACma,EAAAA,EAAiB,CAAC1Z,MAAO,UAAW2Z,SAASpa,EAAAA,EAAAA,KAACqa,EAAAA,EAAQ,OAGzDxa,EAAAA,EAAAA,MAACya,EAAAA,IAAU,CAAAva,SAAA,EACTF,EAAAA,EAAAA,MAACiE,EAAAA,IAAI,CAACM,MAAI,EAACC,GAAI,GAAIkW,GAAIC,EAAAA,GAAYA,YAAYza,SAAA,CAC5C+Y,KACC9Y,EAAAA,EAAAA,KAAC8D,EAAAA,IAAI,CAACM,MAAI,EAACC,IAAE,EAAAtE,UACXC,EAAAA,EAAAA,KAACya,EAAAA,EAAa,CAACnb,YAAa,GAAIiC,UAAW,OAG9C8X,KACCrZ,EAAAA,EAAAA,KAAC0a,EAAAA,EAAS,CACRnO,SAAU0L,EACVpL,YAAY,iBACZlC,MAAOqN,EACPuC,IAAExL,EAAAA,EAAAA,GAAA,CACA4L,SAAU,KAAG,sBAAAxa,OACU6O,EAAAA,IAAYzK,GAAE,OAAQ,CAC3CoW,SAAU,SAMlB9a,EAAAA,EAAAA,MAACiE,EAAAA,IAAI,CACHM,MAAI,EACJC,GAAI,GACJkW,GAAI,CACFlc,QAAS,OACTqH,WAAY,SACZ1G,eAAgB,WAChB8P,IAAK,GACL/O,SAAA,EAEA+Y,KACAjZ,EAAAA,EAAAA,MAACmE,EAAAA,SAAQ,CAAAjE,SAAA,EACPC,EAAAA,EAAAA,KAAC4a,EAAAA,EAAc,CACbrP,QACG8N,GAEGhK,GACA,mBACA,0BAHA,GAILtP,UAEDC,EAAAA,EAAAA,KAACO,EAAAA,IAAM,CACLC,GAAI,2BACJG,QAAS,WACP+X,IAAerJ,IACf8I,EAAmB,GACrB,EACA0C,MAAM7a,EAAAA,EAAAA,KAAC8a,EAAAA,IAAkB,IACzBpa,QAAS2O,GAAa,aAAe,UACrCrO,UAAWqY,OAIdhK,KACCrP,EAAAA,EAAAA,KAAC4a,EAAAA,EAAc,CACbrP,QACG8N,GAEGnB,EAAgBxU,SAAWyV,GAAgBzV,OAC3C,uBACA,qBAHA,GAIL3D,UAEDC,EAAAA,EAAAA,KAACO,EAAAA,IAAM,CACLC,GAAI,qBACJG,QAzGK,WACvB,GAAIuX,EAAgBxU,SAAWyV,GAAgBzV,OAA/C,CAKA,IAAMqX,EAAmB5B,GAAgB9Y,KAAI,SAAC8O,GAC5C,OAAOA,EAAO7C,IAChB,IAEA6L,EAAmB4C,EANnB,MAFE5C,EAAmB,GASvB,EA+FoB0C,MAAM7a,EAAAA,EAAAA,KAACgb,EAAAA,IAAa,IACpBta,QAAS,eAKfV,EAAAA,EAAAA,KAAC4a,EAAAA,EAAc,CACbrP,QACG8N,GAEIb,GAK0B,IAA3BN,EAAgBxU,OAChB2L,GACE,oEACA,2FACF,iBARA4L,EAAAA,EAAAA,IACE9K,EAAAA,EAAgBC,EAAAA,GAAUqJ,kBAC1B,gDAJF,GAWL1Z,UAEDC,EAAAA,EAAAA,KAACO,EAAAA,IAAM,CACLC,GAAI,gBACJG,QAAS,WACP4X,GAAsB,EACxB,EACAsC,MAAM7a,EAAAA,EAAAA,KAACkb,EAAAA,IAAmB,IAC1Bxa,QAAS,UACTM,SAAqC,IAA3BkX,EAAgBxU,SAAiB8U,QAI/CxY,EAAAA,EAAAA,KAAC4a,EAAAA,EAAc,CACbrP,QACG8N,GAE8B,IAA3BnB,EAAgBxU,OAChB2L,GACE,sEACA,6FACF,kBALA,GAMLtP,UAEDC,EAAAA,EAAAA,KAACO,EAAAA,IAAM,CACLC,GAAI,kBACJG,QAAS,WACP0X,GAAwB,EAC1B,EACAwC,MAAM7a,EAAAA,EAAAA,KAACmb,EAAAA,IAAmB,IAC1Bza,QAAS,UACTM,SAAqC,IAA3BkX,EAAgBxU,eAMlC1D,EAAAA,EAAAA,KAAC4a,EAAAA,EAAc,CAACrP,QAAS,UAAUxL,UACjCC,EAAAA,EAAAA,KAACO,EAAAA,IAAM,CACLC,GAAI,kBACJG,QAAS,WACPoX,GAAW,EACb,EACA8C,MAAM7a,EAAAA,EAAAA,KAACob,EAAAA,IAAW,IAClB1a,QAAS,eAIXoY,KACA9Y,EAAAA,EAAAA,KAAC4a,EAAAA,EAAc,CACbrP,QACEmO,GACI,IACAuB,EAAAA,EAAAA,IACE,CAACtB,EAAAA,GAAWC,kBACZ,mBAEP7Z,UAEDC,EAAAA,EAAAA,KAACO,EAAAA,IAAM,CACLC,GAAI,gBACJG,QAAS,WACP2O,EAAS+L,EAAAA,GAAUC,YACrB,EACAT,MAAM7a,EAAAA,EAAAA,KAACub,EAAAA,IAAO,IACd7a,QAAS,aACTM,UAAW0Y,GACXjZ,MAAO,0BAOhBqX,IAAW9X,EAAAA,EAAAA,KAACE,EAAAA,IAAW,KACtB4X,IACAjY,EAAAA,EAAAA,MAACiE,EAAAA,IAAI,CACHM,MAAI,EACJC,GAAI,GACJkW,GAAI,CACFhZ,UAAW,GACX5C,OAAQ,sBACR,eAAgB,CACdA,OAAQ,wBAGZmB,UAAWgZ,GAAS,aAAe,GAAG/Y,SAAA,CAEV,IAA3BoZ,GAAgBzV,SACf1D,EAAAA,EAAAA,KAACwb,EAAAA,EAAe,CACdC,kBAvOS,SAACvX,GACtB,IAAMiL,EAASgK,GAAgBjV,IAAU,KACzC,OAAIiL,GAEAnP,EAAAA,EAAAA,KAAC0b,EAAc,CACbvM,OAAQA,EACRC,SAAUkK,GACVnU,SAAU+S,EAAgBa,SAAS5J,EAAO7C,MAC1C+C,WAAYA,KAIX,IACT,EA2NcsM,WAAYxC,GAAgBzV,SAGJ,IAA3ByV,GAAgBzV,QAAkC,KAAlBsU,IAC/BhY,EAAAA,EAAAA,KAAC8D,EAAAA,IAAI,CAACC,WAAS,EAAAhE,UACbC,EAAAA,EAAAA,KAAC8D,EAAAA,IAAI,CAACM,MAAI,EAACC,GAAI,EAAEtE,UACfC,EAAAA,EAAAA,KAAC4b,EAAAA,IAAO,CACNC,eAAe7b,EAAAA,EAAAA,KAACsR,EAAAA,IAAW,IAC3BzF,MAAO,aACPiQ,MACE9b,EAAAA,EAAAA,KAACgE,EAAAA,SAAQ,CAAAjE,SAAC,oDAQlBsZ,KACArZ,EAAAA,EAAAA,KAAC8D,EAAAA,IAAI,CAACC,WAAS,EAAAhE,UACbC,EAAAA,EAAAA,KAAC8D,EAAAA,IAAI,CAACM,MAAI,EAACC,GAAI,EAAEtE,UACfC,EAAAA,EAAAA,KAAC4b,EAAAA,IAAO,CACNC,eAAe7b,EAAAA,EAAAA,KAACsR,EAAAA,IAAW,IAC3BzF,MAAO,UACPiQ,MACEjc,EAAAA,EAAAA,MAACmE,EAAAA,SAAQ,CAAAjE,SAAA,CAAC,oKAIRC,EAAAA,EAAAA,KAAA,SACC6Z,GACC,IAEAha,EAAAA,EAAAA,MAACmE,EAAAA,SAAQ,CAAAjE,SAAA,EACPC,EAAAA,EAAAA,KAAA,UACCib,EAAAA,EAAAA,IACC,CACEtB,EAAAA,GAAWG,eACXH,EAAAA,GAAWI,oBAEb,oCAEF/Z,EAAAA,EAAAA,KAAA,aAGJH,EAAAA,EAAAA,MAACkc,EAAAA,EAAe,CACdC,OAAQ,CAACrC,EAAAA,GAAWC,kBACpBqC,SAAUC,EAAAA,GAAoBnc,SAAA,EAE9BC,EAAAA,EAAAA,KAAA,SAAM,uBAENA,EAAAA,EAAAA,KAACmc,EAAAA,EAAO,CACNxb,QAAS,WACP2O,EAAS+L,EAAAA,GAAUC,YACrB,EAAEvb,SACH,yCAe3B,C,yGChWA,KAAe9B,EAAAA,EAAAA,IA3EA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,GAAa,CACXie,cAAe,CACbxa,OAAQ,oBACRiN,aAAc,EACdzM,MAAO,UACPT,gBAAiB,OACjBQ,SAAU,KAEX,GAkEL,EAhEsB,SAAH5C,GAOG,IANpBC,EAAOD,EAAPC,QACAgB,EAAEjB,EAAFiB,GACAoV,EAAYrW,EAAZqW,aACAC,EAAStW,EAATsW,UAASwG,EAAA9c,EACTyB,SAAAA,OAAQ,IAAAqb,GAAQA,EAChB3G,EAAYnW,EAAZmW,aAEA4G,EAAgCC,EAAAA,SAAmC,MAAKC,GAAAnZ,EAAAA,EAAAA,GAAAiZ,EAAA,GAAjEG,EAAQD,EAAA,GAAEE,EAAWF,EAAA,GACtBtW,EAAOyW,QAAQF,GAIfG,EAAc,SAACC,GACnBH,EAAY,MACI,KAAZG,GAAkBnH,GACpBA,EAAamH,EAEjB,EAEA,OACEhd,EAAAA,EAAAA,MAACmE,EAAAA,SAAQ,CAAAjE,SAAA,EACPC,EAAAA,EAAAA,KAAA,UACEQ,GAAE,GAAAL,OAAKK,EAAE,WACT,mBAAAL,OAAkBK,EAAE,SACpB,gBAAc,OACd,gBAAe0F,EAAO,YAAS4W,EAC/Bnc,QAjBc,SAAC6M,GACnBkP,EAAYlP,EAAMuP,cACpB,EAgBMjd,UAAWN,EAAQ4c,cACnBpb,SAAUA,EACVJ,KAAM,SAASb,SAEd6V,KAEH5V,EAAAA,EAAAA,KAACgd,EAAAA,EAAI,CACHxc,GAAE,GAAAL,OAAKK,EAAE,SACT,qBAAAL,OAAoBK,EAAE,WACtBic,SAAUA,EACVvW,KAAMA,EACN0F,QAAS,WACPgR,EAAY,GACd,EACAK,aAAc,CACZC,SAAU,SACVC,WAAY,UAEdC,gBAAiB,CACfF,SAAU,MACVC,WAAY,UACZpd,SAED8V,EAAUxV,KAAI,SAACqR,GAAI,OAClB1R,EAAAA,EAAAA,KAACqd,EAAAA,EAAQ,CACP1c,QAAS,kBAAMic,EAAYlL,EAAK/G,MAAM,EAAC5K,SAGtC2R,EAAKjR,OAAK,YAAAN,OAFMuR,EAAK/G,MAAK,KAAAxK,OAAIuR,EAAKjR,OAG3B,QAKrB,G,wGC7CA,KAAexC,EAAAA,EAAAA,IA7CA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,IAAYoH,EAAAA,EAAAA,GAAC,CAAC,EACT+X,EAAAA,IACF,GA0CL,EAxCuB,SAAH/d,GAMI,IALtBC,EAAOD,EAAPC,QAAO+d,EAAAhe,EACPkB,MAAAA,OAAK,IAAA8c,EAAG,GAAEA,EACVnI,EAAO7V,EAAP6V,QAAOoI,EAAAje,EACPke,UAAAA,OAAS,IAAAD,GAAQA,EACjBE,EAAYne,EAAZme,aAEA,OACE1d,EAAAA,EAAAA,KAACgE,EAAAA,SAAQ,CAAAjE,UACPF,EAAAA,EAAAA,MAACiE,EAAAA,GAAI,CAAChE,UAAWN,EAAQme,kBAAkB5d,SAAA,CAC9B,KAAVU,IACCT,EAAAA,EAAAA,KAAC8D,EAAAA,GAAI,CAACM,MAAI,EAACC,GAAI,GAAIvE,UAAWN,EAAQoe,gBAAgB7d,SACnDU,KAGLZ,EAAAA,EAAAA,MAACiE,EAAAA,GAAI,CACHM,MAAI,EACJC,GAAI,GACJvE,UAAS,GAAAK,OAAKX,EAAQ8d,eAAc,KAAAnd,OAClCud,EAAele,EAAQqe,qBAAuB,IAC7C9d,SAAA,EAEHC,EAAAA,EAAAA,KAAC8D,EAAAA,GAAI,CACHM,MAAI,EACJC,GAAI,GACJvE,UACE2d,EAAYje,EAAQse,sBAAwBte,EAAQue,aACrDhe,SAEAqV,IAEFsI,IACC1d,EAAAA,EAAAA,KAAA,OAAKF,UAAWN,EAAQwe,mBAAmBje,SAAE2d,WAMzD,G,2HCqMA,IAhN2B,SAAHne,GASI,IAR1B0N,EAAQ1N,EAAR0N,SACAX,EAAI/M,EAAJ+M,KACA7L,EAAKlB,EAALkB,MAAKwd,EAAA1e,EACLgM,QAAAA,OAAO,IAAA0S,EAAG,GAAEA,EAAAC,EAAA3e,EACZ4N,eAAAA,OAAc,IAAA+Q,EAAG,GAAEA,EAAAC,EAAA5e,EACnB6N,iBAAAA,OAAgB,IAAA+Q,EAAG,GAAEA,EACrB5R,EAAQhN,EAARgN,SAAQ6R,EAAA7e,EACR8N,WAAAA,OAAU,IAAA+Q,GAAQA,EAElBlb,GAAsCC,EAAAA,EAAAA,UAAmB,CAAC,KAAIC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAvDmb,EAAWjb,EAAA,GAAEkb,EAAclb,EAAA,GAClCqD,GAA0CtD,EAAAA,EAAAA,UAAmB,CAAC,KAAIuD,GAAArD,EAAAA,EAAAA,GAAAoD,EAAA,GAA3D8X,EAAa7X,EAAA,GAAE8X,EAAgB9X,EAAA,GAChC+X,GAAaC,EAAAA,EAAAA,cAGnBzU,EAAAA,EAAAA,YAAU,WACR,GACyB,IAAvBoU,EAAY3a,QACO,KAAnB2a,EAAY,IACa,IAAzBE,EAAc7a,QACO,KAArB6a,EAAc,IACdtR,GACa,KAAbA,EACA,CACA,IAAM0R,EAAgB1R,EAAS2C,MAAM,KACjCgP,EAAO,GACPC,EAAS,GAEbF,EAAcvK,SAAQ,SAAC+B,GACrB,IAAM2I,EAAe3I,EAAQvG,MAAM,KACP,IAAxBkP,EAAapb,SACfkb,EAAKvK,KAAKyK,EAAa,IACvBD,EAAOxK,KAAKyK,EAAa,IAE7B,IAEAF,EAAKvK,KAAK,IACVwK,EAAOxK,KAAK,IAEZiK,EAAeM,GACfJ,EAAiBK,EACnB,CACF,GAAG,CAACR,EAAaE,EAAetR,KAGhChD,EAAAA,EAAAA,YAAU,WACR,IAAM8U,EAAYN,EAAWO,QACzBD,GAAaV,EAAY3a,OAAS,GACpCqb,EAAUE,gBAAe,EAG7B,GAAG,CAACZ,IAGJ,IAAMa,GAAcC,EAAAA,EAAAA,SAAO,IAC3BC,EAAAA,EAAAA,kBAAgB,WACVF,EAAYF,QACdE,EAAYF,SAAU,EAGxBK,GAEF,GAAG,CAAChB,EAAaE,IAGjB,IAiBMe,EAAc,SAAC9S,GACnBA,EAAE+S,UAEF,IAAIC,GAAc/K,EAAAA,EAAAA,GAAO4J,GACnBna,EAAQoG,IAAIkC,EAAEC,OAAQ,gBAAiB,KAE7C+S,EADiB3R,SAAS3J,IACCsI,EAAEC,OAAO9B,MAEpC2T,EAAekB,EACjB,EAEMC,EAAgB,SAACjT,GACrBA,EAAE+S,UAEF,IAAIC,GAAc/K,EAAAA,EAAAA,GAAO8J,GACnBra,EAAQoG,IAAIkC,EAAEC,OAAQ,gBAAiB,KAE7C+S,EADiB3R,SAAS3J,IACCsI,EAAEC,OAAO9B,MAEpC6T,EAAiBgB,EACnB,EAGMH,EAAoBK,KAAS,WACjC,IAAIC,EAAc,GAElBtB,EAAYjK,SAAQ,SAACwL,EAAQ1b,GAC3B,GAAIma,EAAYna,IAAUqa,EAAcra,GAAQ,CAC9C,IAAI2b,EAAY,GAAA1f,OAAMyf,EAAM,KAAAzf,OAAIoe,EAAcra,IAChC,IAAVA,IACF2b,EAAY,IAAA1f,OAAO0f,IAErBF,EAAW,GAAAxf,OAAMwf,GAAWxf,OAAG0f,EACjC,CACF,IAEAtT,EAASoT,EACX,GAAG,KAEGG,EAASvB,EAAcle,KAAI,SAAC8V,EAASjS,GACzC,OACErE,EAAAA,EAAAA,MAACiE,EAAAA,IAAI,CACHM,MAAI,EACJC,GAAI,GACJvE,UAAW,2BAA2BC,SAAA,EAGtCC,EAAAA,EAAAA,KAAC2M,EAAAA,IAAQ,CACPnM,GAAE,GAAAL,OAAKmM,EAAI,SAAAnM,OAAQ+D,EAAMC,YACzB1D,MAAO,GACP6L,KAAI,GAAAnM,OAAKmM,EAAI,KAAAnM,OAAI+D,EAAMC,YACvBwG,MAAO0T,EAAYna,GACnBqI,SAAU+S,EACVpb,MAAOA,EACP2I,YAAaM,KAEfnN,EAAAA,EAAAA,KAAA,QAAMF,UAAW,WAAWC,SAAC,OAC7BC,EAAAA,EAAAA,KAAC2M,EAAAA,IAAQ,CACPnM,GAAE,GAAAL,OAAKmM,EAAI,WAAAnM,OAAU+D,EAAMC,YAC3B1D,MAAO,GACP6L,KAAI,GAAAnM,OAAKmM,EAAI,KAAAnM,OAAI+D,EAAMC,YACvBwG,MAAO4T,EAAcra,GACrBqI,SAAUkT,EACVvb,MAAOA,EACP2I,YAAaO,EACb2S,YAAa7b,IAAUqa,EAAc7a,OAAS,GAAI1D,EAAAA,EAAAA,KAACub,EAAAA,IAAO,IAAM,KAChEyE,cAAe,YAnFF,WACnB,GACiD,KAA/C3B,EAAYA,EAAY3a,OAAS,GAAGuc,QACe,KAAnD1B,EAAcA,EAAc7a,OAAS,GAAGuc,OACxC,CACA,IAAMC,GAAQzL,EAAAA,EAAAA,GAAO4J,GACf8B,GAAU1L,EAAAA,EAAAA,GAAO8J,GAEvB2B,EAAS7L,KAAK,IACd8L,EAAW9L,KAAK,IAEhBiK,EAAe4B,GACf1B,EAAiB2B,EACnB,CACF,CAsEUC,EACF,MACA,cAAAjgB,OAxBiBmM,EAAI,KAAAnM,OAAI+D,EAAMC,YA2BvC,IAEA,OACEnE,EAAAA,EAAAA,KAACgE,EAAAA,SAAQ,CAAAjE,UACPF,EAAAA,EAAAA,MAACiE,EAAAA,IAAI,CACHM,MAAI,EACJC,GAAI,GACJkW,GAAI,CACF,oBAAqB,CACnBlc,QAAS,QAEX,cAAe,CACbgiB,UAAW,SACX/d,OAAQ,cACRD,WAAY,MAEdtC,SAAA,EAEFF,EAAAA,EAAAA,MAACygB,EAAAA,IAAU,CAAAvgB,SAAA,CACRU,EACY,KAAZ8K,IACCvL,EAAAA,EAAAA,KAACsQ,EAAAA,IAAG,CACFiK,GAAI,CACFpb,WAAY,EACZd,QAAS,OACTqH,WAAY,SACZ,cAAe,CACb7G,MAAO,KAETkB,UAEFC,EAAAA,EAAAA,KAACsL,EAAAA,IAAO,CAACC,QAASA,EAASC,UAAU,MAAKzL,UACxCC,EAAAA,EAAAA,KAACugB,EAAAA,IAAQ,CAAChP,MAAO,CAAE1S,MAAO,GAAIF,OAAQ,cAK9CkB,EAAAA,EAAAA,MAACyQ,EAAAA,IAAG,CACFpE,YAAamB,EACbkN,GAAI,CACFtb,QAAS,GACTN,OAAQ,IACRF,UAAW,OACX2C,SAAU,WACVG,UAAW,IACXxB,SAAA,CAED+f,GACD9f,EAAAA,EAAAA,KAAA,OAAKwgB,IAAK/B,WAKpB,C","sources":["screens/Console/Common/GenericWizard/WizardPage.tsx","screens/Console/Common/GenericWizard/GenericWizard.tsx","screens/Console/Buckets/ListBuckets/BulkLifecycleModal.tsx","screens/Console/Buckets/ListBuckets/BucketListItem.tsx","screens/Console/Buckets/ListBuckets/BulkReplicationModal.tsx","screens/Console/Buckets/ListBuckets/ListBuckets.tsx","screens/Console/Common/FormComponents/InputUnitMenu/InputUnitMenu.tsx","screens/Console/Common/FormComponents/PredefinedList/PredefinedList.tsx","screens/Console/Common/FormComponents/QueryMultiSelector/QueryMultiSelector.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 { Button, ProgressBar } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { IWizardButton, IWizardPage } from \"./types\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n wizardStepContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n flex: 1,\n },\n wizardComponent: {\n overflowY: \"auto\",\n marginBottom: 10,\n height: \"calc(100vh - 100px - 80px)\",\n minHeight: 400,\n flex: 1,\n width: \"100%\",\n },\n wizardModal: {\n overflowY: \"auto\",\n marginBottom: 10,\n height: \"calc(100vh - 515px)\",\n },\n buttonsContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flex-start\" as const,\n padding: \"10px 0\",\n borderTop: \"#EAEAEA 1px solid\",\n \"& button\": {\n marginLeft: 10,\n },\n \"&.forModal\": {\n paddingBottom: 0,\n },\n },\n buttonInnerContainer: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"flex-end\",\n marginRight: 15,\n },\n });\n\nconst WizardPage = ({\n classes,\n page,\n pageChange,\n loadingStep,\n forModal,\n}: IWizardPage) => {\n const buttonAction = (btn: IWizardButton) => {\n switch (btn.type) {\n case \"next\":\n pageChange(\"++\");\n break;\n case \"back\":\n pageChange(\"--\");\n break;\n case \"to\":\n pageChange(btn.toPage || 0);\n break;\n case \"custom\":\n default:\n }\n\n if (btn.action) {\n btn.action(pageChange);\n }\n };\n\n return (\n
    \n
    \n {page.componentRender}\n
    \n {loadingStep && (\n
    \n \n
    \n )}\n \n
    \n {page.buttons.map((btn) => {\n if (btn.componentRender) {\n return btn.componentRender;\n }\n return (\n {\n buttonAction(btn);\n }}\n disabled={!btn.enabled}\n key={`button-${page.label}-${btn.label}`}\n label={btn.label}\n />\n );\n })}\n
    \n
    \n
    \n );\n};\n\nexport default withStyles(styles)(WizardPage);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { IWizardMain } from \"./types\";\nimport WizardPage from \"./WizardPage\";\nimport { Grid, List } from \"@mui/material\";\nimport ListItem from \"@mui/material/ListItem\";\nimport ListItemText from \"@mui/material/ListItemText\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n wizFromContainer: {},\n wizFromModal: {\n position: \"relative\",\n },\n modalWizardSteps: {\n padding: 5,\n borderBottom: \"#eaeaea 1px solid\",\n \"& ul\": {\n padding: 0,\n marginTop: 0,\n display: \"flex\",\n justifyContent: \"space-evenly\",\n\n \"& li\": {\n listStyle: \"lower-roman\",\n \"&::marker\": {\n paddingLeft: 15,\n },\n },\n },\n },\n buttonList: {\n backgroundColor: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n \"&:not(:disabled):hover\": {\n textDecoration: \"underline\",\n },\n \"&:selected, &:active, &:focus, &:focus:active\": {\n border: \"none\",\n outline: 0,\n boxShadow: \"none\",\n },\n },\n paddedContentGrid: {\n marginTop: 8,\n padding: \"0 10px\",\n minHeight: 400,\n },\n stepsLabel: {\n fontSize: 20,\n color: \"#393939\",\n fontWeight: 600,\n margin: \"15px 12px\",\n \"&.stepsModalTitle\": {\n textAlign: \"center\",\n width: \"100%\",\n marginTop: 0,\n marginBottom: 10,\n },\n },\n stepsMasterContainer: {\n position: \"sticky\",\n top: 0,\n backgroundColor: \"#FFFFFF\",\n width: \"100%\",\n maxHeight: 90,\n },\n verticalSteps: {\n borderRight: \"1px solid #E5E5E5\",\n background: \"#F8F8F8\",\n },\n stepsContainer: {\n paddingTop: 0,\n \"& .MuiButtonBase-root.Mui-selected\": {\n background: \"#E5E5E5\",\n },\n },\n stepItem: {\n minHeight: 60,\n borderBottom: \"1px solid #E5E5E5\",\n \"&:hover\": {\n background: \"rgba(247,247,247,0.7)\",\n },\n },\n });\n\nconst GenericWizard = ({\n classes,\n wizardSteps,\n loadingStep,\n forModal,\n}: IWizardMain) => {\n const [currentStep, setCurrentStep] = useState(0);\n\n const pageChange = (toElement: string | number) => {\n const lastPage = wizardSteps.length - 1;\n\n if (toElement === \"++\") {\n let nextPage = currentStep + 1;\n\n if (nextPage > lastPage) {\n nextPage = lastPage;\n }\n\n setCurrentStep(nextPage);\n }\n\n if (toElement === \"--\") {\n let prevPage = currentStep - 1;\n\n if (prevPage < 0) {\n prevPage = 0;\n }\n\n setCurrentStep(prevPage);\n }\n\n if (typeof toElement === \"number\") {\n let pg = toElement;\n if (toElement < 0) {\n pg = 0;\n }\n\n if (toElement > lastPage) {\n pg = lastPage;\n }\n\n setCurrentStep(pg);\n }\n };\n\n if (wizardSteps.length === 0) {\n return null;\n }\n\n const stepsList = () => {\n return (\n \n \n {wizardSteps.map((step, index) => {\n return (\n pageChange(index)}\n key={`wizard-${index.toString()}`}\n selected={currentStep === index}\n classes={{\n root: classes.stepItem,\n }}\n >\n \n \n );\n })}\n \n \n );\n };\n const stepsListModal = () => {\n return (\n
      \n {wizardSteps.map((step, index) => {\n return (\n
    • \n pageChange(index)}\n disabled={index > currentStep}\n className={classes.buttonList}\n >\n {step.label}\n \n
    • \n );\n })}\n
    \n );\n };\n\n return (\n \n {forModal ? (\n \n
    \n
    Steps
    \n
    {stepsListModal()}
    \n
    \n
    \n ) : (\n \n \n {stepsList()}\n \n \n )}\n\n \n \n \n \n );\n};\n\nexport default withStyles(styles)(GenericWizard);\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 {\n FormLayout,\n Grid,\n InputBox,\n RadioGroup,\n ReadBox,\n Select,\n Switch,\n Tooltip,\n} from \"mds\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport get from \"lodash/get\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport CheckCircleOutlineIcon from \"@mui/icons-material/CheckCircleOutline\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport GenericWizard from \"../../Common/GenericWizard/GenericWizard\";\nimport QueryMultiSelector from \"../../Common/FormComponents/QueryMultiSelector/QueryMultiSelector\";\nimport { ITiersDropDown } from \"../types\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { api } from \"api\";\nimport { MultiLifecycleResult, Tier } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IBulkReplicationModal {\n open: boolean;\n closeModalAndRefresh: (clearSelection: boolean) => any;\n classes: any;\n buckets: string[];\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n resultGrid: {\n display: \"grid\",\n gridTemplateColumns: \"45px auto\",\n alignItems: \"center\",\n justifyContent: \"stretch\",\n },\n errorIcon: {\n paddingTop: 5,\n color: \"#C72C48\",\n },\n successIcon: {\n paddingTop: 5,\n color: \"#42C91A\",\n },\n ...spacingUtils,\n ...modalStyleUtils,\n ...formFieldStyles,\n ...createTenantCommon,\n });\n\nconst AddBulkReplicationModal = ({\n open,\n closeModalAndRefresh,\n classes,\n buckets,\n}: IBulkReplicationModal) => {\n const dispatch = useAppDispatch();\n const [addLoading, setAddLoading] = useState(false);\n const [loadingTiers, setLoadingTiers] = useState(true);\n const [tiersList, setTiersList] = useState([]);\n const [prefix, setPrefix] = useState(\"\");\n const [tags, setTags] = useState(\"\");\n const [storageClass, setStorageClass] = useState(\"\");\n const [NCTransitionSC, setNCTransitionSC] = useState(\"\");\n const [expiredObjectDM, setExpiredObjectDM] = useState(false);\n const [NCExpirationDays, setNCExpirationDays] = useState(\"0\");\n const [NCTransitionDays, setNCTransitionDays] = useState(\"0\");\n const [ilmType, setIlmType] = useState<\"expiry\" | \"transition\">(\"expiry\");\n const [expiryDays, setExpiryDays] = useState(\"0\");\n const [transitionDays, setTransitionDays] = useState(\"0\");\n const [isFormValid, setIsFormValid] = useState(false);\n const [results, setResults] = useState(null);\n\n useEffect(() => {\n if (loadingTiers) {\n api.admin\n .tiersList()\n .then((res) => {\n const tiersList: Tier[] | null = get(res.data, \"items\", []);\n\n if (tiersList !== null && tiersList.length >= 1) {\n const objList = tiersList.map((tier: Tier) => {\n const tierType = tier.type;\n const value = get(tier, `${tierType}.name`, \"\");\n\n return { label: value, value: value };\n });\n\n setTiersList(objList);\n if (objList.length > 0) {\n setStorageClass(objList[0].value);\n }\n }\n setLoadingTiers(false);\n })\n .catch((err) => {\n setLoadingTiers(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n }, [loadingTiers, dispatch]);\n\n useEffect(() => {\n let valid = true;\n\n if (ilmType !== \"expiry\") {\n if (storageClass === \"\") {\n valid = false;\n }\n }\n setIsFormValid(valid);\n }, [ilmType, expiryDays, transitionDays, storageClass]);\n\n const LogoToShow = ({ errString }: { errString: string }) => {\n switch (errString) {\n case \"\":\n return (\n
    \n \n
    \n );\n case \"n/a\":\n return null;\n default:\n if (errString) {\n return (\n
    \n \n \n \n
    \n );\n }\n }\n return null;\n };\n\n const createLifecycleRules = (to: any) => {\n let rules = {};\n\n if (ilmType === \"expiry\") {\n let expiry = {\n expiry_days: parseInt(expiryDays),\n };\n\n rules = {\n ...expiry,\n noncurrentversion_expiration_days: parseInt(NCExpirationDays),\n };\n } else {\n let transition = {\n transition_days: parseInt(transitionDays),\n };\n\n rules = {\n ...transition,\n noncurrentversion_transition_days: parseInt(NCTransitionDays),\n noncurrentversion_transition_storage_class: NCTransitionSC,\n storage_class: storageClass,\n };\n }\n\n const lifecycleInsert = {\n buckets,\n type: ilmType,\n prefix,\n tags,\n expired_object_delete_marker: expiredObjectDM,\n ...rules,\n };\n\n api.buckets\n .addMultiBucketLifecycle(lifecycleInsert)\n .then((res) => {\n setAddLoading(false);\n setResults(res.data);\n to(\"++\");\n })\n .catch((err) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n return (\n {\n closeModalAndRefresh(false);\n }}\n title=\"Set Lifecycle to multiple buckets\"\n >\n \n \n \n {buckets.join(\", \")}\n \n \n

    Remote Endpoint Configuration

    \n \n
    \n Lifecycle Configuration\n ) => {\n setIlmType(e.target.value as \"expiry\" | \"transition\");\n }}\n selectorOptions={[\n { value: \"expiry\", label: \"Expiry\" },\n { value: \"transition\", label: \"Transition\" },\n ]}\n />\n {ilmType === \"expiry\" ? (\n \n ,\n ) => {\n setExpiryDays(e.target.value);\n }}\n label=\"Expiry Days\"\n value={expiryDays}\n min=\"0\"\n />\n ,\n ) => {\n setNCExpirationDays(e.target.value);\n }}\n label=\"Non-current Expiration Days\"\n value={NCExpirationDays}\n min=\"0\"\n />\n \n ) : (\n \n ,\n ) => {\n setTransitionDays(e.target.value);\n }}\n label=\"Transition Days\"\n value={transitionDays}\n min=\"0\"\n />\n ,\n ) => {\n setNCTransitionDays(e.target.value);\n }}\n label=\"Non-current Transition Days\"\n value={NCTransitionDays}\n min=\"0\"\n />\n ,\n ) => {\n setNCTransitionSC(e.target.value);\n }}\n placeholder=\"Set Non-current Version Transition Storage Class\"\n label=\"Non-current Version Transition Storage Class\"\n value={NCTransitionSC}\n />\n {\n setStorageClass(value);\n }}\n options={tiersList}\n />\n \n )}\n
    \n
    \n File Configuration\n ) => {\n setPrefix(e.target.value);\n }}\n label=\"Prefix\"\n value={prefix}\n />\n {\n setTags(vl);\n }}\n keyPlaceholder=\"Tag Key\"\n valuePlaceholder=\"Tag Value\"\n withBorder\n />\n ,\n ) => {\n setExpiredObjectDM(event.target.checked);\n }}\n label={\"Expired Object Delete Marker\"}\n />\n
    \n
    \n
    \n ),\n buttons: [\n {\n type: \"custom\",\n label: \"Create Rules\",\n enabled: !loadingTiers && !addLoading && isFormValid,\n action: createLifecycleRules,\n },\n ],\n },\n {\n label: \"Results\",\n componentRender: (\n \n

    Multi Bucket lifecycle Assignments Results

    \n \n \n

    Buckets Results

    \n {results?.results?.map((resultItem) => {\n return (\n
    \n {LogoToShow({ errString: resultItem.error || \"\" })}\n {resultItem.bucketName}\n
    \n );\n })}\n
    \n
    \n
    \n ),\n buttons: [\n {\n type: \"custom\",\n label: \"Done\",\n enabled: !addLoading,\n action: () => closeModalAndRefresh(true),\n },\n ],\n },\n ]}\n forModal\n />\n \n );\n};\n\nexport default withStyles(styles)(AddBulkReplicationModal);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more 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, { Fragment } from \"react\";\nimport get from \"lodash/get\";\nimport styled from \"styled-components\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport {\n Box,\n breakPoints,\n BucketsIcon,\n Checkbox,\n Grid,\n ReportedUsageIcon,\n TotalObjectsIcon,\n} from \"mds\";\nimport {\n calculateBytes,\n niceBytes,\n prettyNumber,\n} from \"../../../../common/utils\";\nimport {\n IAM_PERMISSIONS,\n IAM_ROLES,\n} from \"../../../../common/SecureComponent/permissions\";\nimport { hasPermission } from \"../../../../common/SecureComponent\";\nimport { Bucket } from \"../../../../api/consoleApi\";\n\nconst BucketItemMain = styled.div(({ theme }) => ({\n border: `${get(theme, \"borderColor\", \"#eaeaea\")} 1px solid`,\n borderRadius: 3,\n padding: 15,\n cursor: \"pointer\",\n \"&.disabled\": {\n backgroundColor: get(theme, \"signalColors.danger\", \"red\"),\n },\n \"&:hover\": {\n backgroundColor: get(theme, \"boxBackground\", \"#FBFAFA\"),\n },\n \"& .bucketTitle\": {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n gap: 10,\n \"& h1\": {\n padding: 0,\n margin: 0,\n marginBottom: 5,\n fontSize: 22,\n color: get(theme, \"screenTitle.iconColor\", \"#07193E\"),\n [`@media (max-width: ${breakPoints.md}px)`]: {\n marginBottom: 0,\n },\n },\n },\n \"& .bucketDetails\": {\n display: \"flex\",\n gap: 40,\n \"& span\": {\n fontSize: 14,\n },\n [`@media (max-width: ${breakPoints.md}px)`]: {\n flexFlow: \"column-reverse\",\n gap: 5,\n },\n },\n \"& .bucketMetrics\": {\n display: \"flex\",\n alignItems: \"center\",\n marginTop: 20,\n gap: 25,\n borderTop: `${get(theme, \"borderColor\", \"#E2E2E2\")} 1px solid`,\n paddingTop: 20,\n \"& svg.bucketIcon\": {\n color: get(theme, \"screenTitle.iconColor\", \"#07193E\"),\n fill: get(theme, \"screenTitle.iconColor\", \"#07193E\"),\n },\n \"& .metric\": {\n \"& .min-icon\": {\n color: get(theme, \"fontColor\", \"#000\"),\n width: 13,\n marginRight: 5,\n },\n },\n \"& .metricLabel\": {\n fontSize: 14,\n fontWeight: \"bold\",\n color: get(theme, \"fontColor\", \"#000\"),\n },\n \"& .metricText\": {\n fontSize: 24,\n fontWeight: \"bold\",\n },\n \"& .unit\": {\n fontSize: 12,\n fontWeight: \"normal\",\n },\n [`@media (max-width: ${breakPoints.md}px)`]: {\n marginTop: 8,\n paddingTop: 8,\n },\n },\n}));\n\ninterface IBucketListItem {\n bucket: Bucket;\n onSelect: (e: React.ChangeEvent) => void;\n selected: boolean;\n bulkSelect: boolean;\n}\n\nconst BucketListItem = ({\n bucket,\n onSelect,\n selected,\n bulkSelect,\n}: IBucketListItem) => {\n const navigate = useNavigate();\n\n const usage = niceBytes(`${bucket.size}` || \"0\");\n const usageScalar = usage.split(\" \")[0];\n const usageUnit = usage.split(\" \")[1];\n\n const quota = get(bucket, \"details.quota.quota\", \"0\");\n const quotaForString = calculateBytes(quota, true, false);\n\n const manageAllowed =\n hasPermission(bucket.name, IAM_PERMISSIONS[IAM_ROLES.BUCKET_ADMIN]) &&\n false;\n\n const accessToStr = (bucket: Bucket): string => {\n if (bucket.rw_access?.read && !bucket.rw_access?.write) {\n return \"R\";\n } else if (!bucket.rw_access?.read && bucket.rw_access?.write) {\n return \"W\";\n } else if (bucket.rw_access?.read && bucket.rw_access?.write) {\n return \"R/W\";\n }\n return \"\";\n };\n const onCheckboxClick = (e: React.ChangeEvent) => {\n onSelect(e);\n };\n\n return (\n {\n navigate(`/buckets/${bucket.name}/admin`);\n }}\n id={`manageBucket-${bucket.name}`}\n className={`bucket-item ${manageAllowed ? \"disabled\" : \"\"}`}\n >\n \n {bulkSelect && (\n {\n e.stopPropagation();\n }}\n >\n \n \n )}\n

    \n {bucket.name} {manageAllowed}\n

    \n \n \n \n Created:{\" \"}\n {bucket.creation_date\n ? new Date(bucket.creation_date).toString()\n : \"n/a\"}\n \n \n Access: {accessToStr(bucket)}\n \n \n \n \n \n \n\n \n \n Usage\n
    \n {usageScalar}\n {usageUnit}\n {quota !== \"0\" && (\n \n {\" \"}\n / {quotaForString.total}\n {quotaForString.unit}\n \n )}\n
    \n
    \n\n \n \n Objects\n
    \n {bucket.objects ? prettyNumber(bucket.objects) : 0}\n
    \n
    \n
    \n \n );\n};\n\nexport default BucketListItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { Select, InputBox, Switch, FormLayout, Tooltip, Grid } from \"mds\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport get from \"lodash/get\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport CheckCircleOutlineIcon from \"@mui/icons-material/CheckCircleOutline\";\nimport {\n modalBasic,\n wizardCommon,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport PredefinedList from \"../../Common/FormComponents/PredefinedList/PredefinedList\";\nimport GenericWizard from \"../../Common/GenericWizard/GenericWizard\";\nimport { getBytes, k8sScalarUnitsExcluding } from \"../../../../common/utils\";\nimport InputUnitMenu from \"../../Common/FormComponents/InputUnitMenu/InputUnitMenu\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { api } from \"api\";\nimport { MultiBucketResponseItem } from \"api/consoleApi\";\nimport { errorToHandler } from \"api/errors\";\nimport { SelectorTypes } from \"../../../../common/types\";\n\ninterface IBulkReplicationModal {\n open: boolean;\n closeModalAndRefresh: (clearSelection: boolean) => any;\n classes: any;\n buckets: string[];\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n remoteBucketList: {\n display: \"grid\",\n gridTemplateColumns: \"auto auto 45px\",\n alignItems: \"center\",\n justifyContent: \"stretch\",\n },\n errorIcon: {\n color: \"#C72C48\",\n },\n successIcon: {\n color: \"#42C91A\",\n },\n hide: {\n opacity: 0,\n transitionDuration: \"0.3s\",\n },\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst AddBulkReplicationModal = ({\n open,\n closeModalAndRefresh,\n classes,\n buckets,\n}: IBulkReplicationModal) => {\n const dispatch = useAppDispatch();\n const [bucketsToAlter, setBucketsToAlter] = useState([]);\n const [addLoading, setAddLoading] = useState(false);\n const [externalLoading, setExternalLoading] = useState(false);\n const [accessKey, setAccessKey] = useState(\"\");\n const [secretKey, setSecretKey] = useState(\"\");\n const [targetURL, setTargetURL] = useState(\"\");\n const [region, setRegion] = useState(\"\");\n const [useTLS, setUseTLS] = useState(true);\n const [replicationMode, setReplicationMode] = useState<\"async\" | \"sync\">(\n \"async\",\n );\n const [bandwidthScalar, setBandwidthScalar] = useState(\"100\");\n const [bandwidthUnit, setBandwidthUnit] = useState(\"Gi\");\n const [healthCheck, setHealthCheck] = useState(\"60\");\n const [relationBuckets, setRelationBuckets] = useState([]);\n const [remoteBucketsOpts, setRemoteBucketOpts] = useState([]);\n const [responseItem, setResponseItem] = useState<\n MultiBucketResponseItem[] | undefined\n >([]);\n\n const optionsForBucketsDrop: SelectorTypes[] = remoteBucketsOpts.map(\n (remoteBucketName: string) => {\n return {\n label: remoteBucketName,\n value: remoteBucketName,\n };\n },\n );\n\n useEffect(() => {\n if (relationBuckets.length === 0) {\n const bucketsAlter: string[] = [];\n const relationBucketsAlter: string[] = [];\n\n buckets.forEach((item: string) => {\n bucketsAlter.push(item);\n relationBucketsAlter.push(\"\");\n });\n\n setRelationBuckets(relationBucketsAlter);\n setBucketsToAlter(bucketsAlter);\n }\n }, [buckets, relationBuckets.length]);\n\n const addRecord = () => {\n setAddLoading(true);\n const replicate = bucketsToAlter.map((bucketName, index) => {\n return {\n originBucket: bucketName,\n destinationBucket: relationBuckets[index],\n };\n });\n\n const endURL = `${useTLS ? \"https://\" : \"http://\"}${targetURL}`;\n const hc = parseInt(healthCheck);\n\n const remoteBucketsInfo = {\n accessKey: accessKey,\n secretKey: secretKey,\n targetURL: endURL,\n region: region,\n bucketsRelation: replicate,\n syncMode: replicationMode,\n bandwidth:\n replicationMode === \"async\"\n ? parseInt(getBytes(bandwidthScalar, bandwidthUnit, true))\n : 0,\n healthCheckPeriod: hc,\n };\n\n api.bucketsReplication\n .setMultiBucketReplication(remoteBucketsInfo)\n .then((response) => {\n setAddLoading(false);\n\n const states = response.data.replicationState;\n setResponseItem(states);\n\n const filterErrors = states?.filter(\n (itm) => itm.errorString && itm.errorString !== \"\",\n );\n\n if (filterErrors?.length === 0) {\n closeModalAndRefresh(true);\n } else {\n setTimeout(() => {\n removeSuccessItems(states);\n }, 500);\n }\n })\n .catch((err) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n const retrieveRemoteBuckets = (\n wizardPageJump: (page: number | string) => void,\n ) => {\n const remoteConnectInfo = {\n accessKey: accessKey,\n secretKey: secretKey,\n targetURL: targetURL,\n useTLS,\n };\n setExternalLoading(true);\n\n api.listExternalBuckets\n .listExternalBuckets(remoteConnectInfo)\n .then((res) => {\n const buckets = get(res.data, \"buckets\", []);\n\n if (buckets && buckets.length > 0) {\n const arrayReplaceBuckets = buckets.map((element: any) => {\n return element.name;\n });\n\n setRemoteBucketOpts(arrayReplaceBuckets);\n }\n\n wizardPageJump(\"++\");\n setExternalLoading(false);\n })\n .catch((err) => {\n setExternalLoading(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n const stateOfItem = (initialBucket: string) => {\n if (responseItem && responseItem.length > 0) {\n const bucketResponse = responseItem.find(\n (item) => item.originBucket === initialBucket,\n );\n\n if (bucketResponse) {\n const errString = get(bucketResponse, \"errorString\", \"\");\n\n if (errString) {\n return errString;\n }\n\n return \"\";\n }\n }\n return \"n/a\";\n };\n\n const LogoToShow = ({ errString }: { errString: string }) => {\n switch (errString) {\n case \"\":\n return (\n
    \n \n
    \n );\n case \"n/a\":\n return null;\n default:\n if (errString) {\n return (\n
    \n \n \n \n
    \n );\n }\n }\n return null;\n };\n\n const updateItem = (indexItem: number, value: string) => {\n const updatedList = [...relationBuckets];\n updatedList[indexItem] = value;\n setRelationBuckets(updatedList);\n };\n\n const itemDisplayBulk = (indexItem: number) => {\n if (remoteBucketsOpts.length > 0) {\n return (\n \n {\n updateItem(indexItem, value);\n }}\n options={optionsForBucketsDrop}\n disabled={addLoading}\n />\n \n );\n }\n return (\n \n ) => {\n updateItem(indexItem, event.target.value);\n }}\n value={relationBuckets[indexItem]}\n disabled={addLoading}\n />\n \n );\n };\n\n const removeSuccessItems = (\n responseItem: MultiBucketResponseItem[] | undefined,\n ) => {\n let newBucketsToAlter = [...bucketsToAlter];\n let newRelationBuckets = [...relationBuckets];\n\n responseItem?.forEach((successElement) => {\n const errorString = get(successElement, \"errorString\", \"\");\n\n if (!errorString || errorString === \"\") {\n const indexToRemove = newBucketsToAlter.indexOf(\n successElement.originBucket || \"\",\n );\n\n newBucketsToAlter.splice(indexToRemove, 1);\n newRelationBuckets.splice(indexToRemove, 1);\n }\n });\n\n setBucketsToAlter(newBucketsToAlter);\n setRelationBuckets(newRelationBuckets);\n };\n\n return (\n {\n closeModalAndRefresh(false);\n }}\n title=\"Set Multiple Bucket Replication\"\n >\n \n \n \n \n

    Remote Endpoint Configuration

    \n \n Please avoid the use of root credentials for this feature\n \n
    \n
    \n \n ) => {\n setAccessKey(e.target.value);\n }}\n label=\"Access Key\"\n value={accessKey}\n />\n ) => {\n setSecretKey(e.target.value);\n }}\n label=\"Secret Key\"\n value={secretKey}\n />\n ) => {\n setTargetURL(e.target.value);\n }}\n placeholder=\"play.min.io:9000\"\n label=\"Target URL\"\n value={targetURL}\n />\n {\n setUseTLS(e.target.checked);\n }}\n value=\"yes\"\n />\n ) => {\n setRegion(e.target.value);\n }}\n label=\"Region\"\n value={region}\n />\n {\n setReplicationMode(value as \"sync\" | \"async\");\n }}\n label=\"Replication Mode\"\n value={replicationMode}\n options={[\n { label: \"Asynchronous\", value: \"async\" },\n { label: \"Synchronous\", value: \"sync\" },\n ]}\n />\n {replicationMode === \"async\" && (\n ) => {\n if (e.target.validity.valid) {\n setBandwidthScalar(e.target.value as string);\n }\n }}\n label=\"Bandwidth\"\n value={bandwidthScalar}\n min=\"0\"\n pattern={\"[0-9]*\"}\n overlayObject={\n {\n setBandwidthUnit(newValue);\n }}\n unitSelected={bandwidthUnit}\n unitsList={k8sScalarUnitsExcluding([\"Ki\"])}\n disabled={false}\n />\n }\n />\n )}\n ) => {\n setHealthCheck(e.target.value as string);\n }}\n label=\"Health Check Duration\"\n value={healthCheck}\n />\n \n \n ),\n buttons: [\n {\n type: \"custom\",\n label: \"Next\",\n enabled: !externalLoading,\n action: retrieveRemoteBuckets,\n },\n ],\n },\n {\n label: \"Bucket Assignments\",\n componentRender: (\n \n

    Remote Bucket Assignments

    \n \n Please select / type the desired remote bucket were you want\n the local data to be replicated.\n \n
    \n {bucketsToAlter.map((bucketName: string, index: number) => {\n const errorItem = stateOfItem(bucketName);\n return (\n \n
    \n {bucketName}\n
    \n
    \n {itemDisplayBulk(index)}\n
    \n
    \n {responseItem && responseItem.length > 0 && (\n \n )}\n
    \n \n );\n })}\n
    \n
    \n ),\n buttons: [\n {\n type: \"back\",\n label: \"Back\",\n enabled: true,\n },\n {\n type: \"next\",\n label: \"Create\",\n enabled: !addLoading,\n action: addRecord,\n },\n ],\n },\n ]}\n forModal\n />\n \n );\n};\n\nexport default withStyles(styles)(AddBulkReplicationModal);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n AddIcon,\n BucketsIcon,\n Button,\n HelpBox,\n LifecycleConfigIcon,\n MultipleBucketsIcon,\n PageLayout,\n RefreshIcon,\n SelectAllIcon,\n SelectMultipleIcon,\n Grid,\n breakPoints,\n ProgressBar,\n} from \"mds\";\n\nimport { actionsTray } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { SecureComponent } from \"../../../../common/SecureComponent\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_PAGES,\n IAM_PERMISSIONS,\n IAM_ROLES,\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../common/SecureComponent/permissions\";\nimport { setErrorSnackMessage, setHelpName } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { useSelector } from \"react-redux\";\nimport { selFeatures } from \"../../consoleSlice\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport { api } from \"../../../../api\";\nimport { Bucket } from \"../../../../api/consoleApi\";\nimport { errorToHandler } from \"../../../../api/errors\";\nimport HelpMenu from \"../../HelpMenu\";\nimport AutoColorIcon from \"../../Common/Components/AutoColorIcon\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport AButton from \"../../Common/AButton/AButton\";\nimport SearchBox from \"../../Common/SearchBox\";\nimport VirtualizedList from \"../../Common/VirtualizedList/VirtualizedList\";\nimport BulkLifecycleModal from \"./BulkLifecycleModal\";\nimport hasPermission from \"../../../../common/SecureComponent/accessControl\";\nimport BucketListItem from \"./BucketListItem\";\nimport BulkReplicationModal from \"./BulkReplicationModal\";\n\nconst ListBuckets = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [records, setRecords] = useState([]);\n const [loading, setLoading] = useState(true);\n const [filterBuckets, setFilterBuckets] = useState(\"\");\n const [selectedBuckets, setSelectedBuckets] = useState([]);\n const [replicationModalOpen, setReplicationModalOpen] =\n useState(false);\n const [lifecycleModalOpen, setLifecycleModalOpen] = useState(false);\n const [canPutLifecycle, setCanPutLifecycle] = useState(false);\n const [bulkSelect, setBulkSelect] = useState(false);\n\n const features = useSelector(selFeatures);\n const obOnly = !!features?.includes(\"object-browser-only\");\n\n useEffect(() => {\n dispatch(setHelpName(\"ob_bucket_list\"));\n }, [dispatch]);\n\n useEffect(() => {\n if (loading) {\n const fetchRecords = () => {\n setLoading(true);\n api.buckets.listBuckets().then((res) => {\n if (res.data) {\n setLoading(false);\n setRecords(res.data.buckets || []);\n } else if (res.error) {\n setLoading(false);\n dispatch(setErrorSnackMessage(errorToHandler(res.error)));\n }\n });\n };\n fetchRecords();\n }\n }, [loading, dispatch]);\n\n const filteredRecords = records.filter((b: Bucket) => {\n if (filterBuckets === \"\") {\n return true;\n } else {\n return b.name.indexOf(filterBuckets) >= 0;\n }\n });\n\n const hasBuckets = records.length > 0;\n\n const selectListBuckets = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selectedBuckets]; // We clone the selectedBuckets array\n\n if (checked) {\n // If the user has checked this field we need to push this to selectedBucketsList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedBuckets(elements);\n\n return elements;\n };\n\n const closeBulkReplicationModal = (unselectAll: boolean) => {\n setReplicationModalOpen(false);\n\n if (unselectAll) {\n setSelectedBuckets([]);\n }\n };\n\n const closeBulkLifecycleModal = (unselectAll: boolean) => {\n setLifecycleModalOpen(false);\n\n if (unselectAll) {\n setSelectedBuckets([]);\n }\n };\n\n useEffect(() => {\n var failLifecycle = false;\n selectedBuckets.forEach((bucket: string) => {\n hasPermission(bucket, IAM_PERMISSIONS[IAM_ROLES.BUCKET_LIFECYCLE], true)\n ? setCanPutLifecycle(true)\n : (failLifecycle = true);\n });\n failLifecycle ? setCanPutLifecycle(false) : setCanPutLifecycle(true);\n }, [selectedBuckets]);\n\n const renderItemLine = (index: number) => {\n const bucket = filteredRecords[index] || null;\n if (bucket) {\n return (\n \n );\n }\n return null;\n };\n\n const selectAllBuckets = () => {\n if (selectedBuckets.length === filteredRecords.length) {\n setSelectedBuckets([]);\n return;\n }\n\n const selectAllBuckets = filteredRecords.map((bucket) => {\n return bucket.name;\n });\n\n setSelectedBuckets(selectAllBuckets);\n };\n\n const canCreateBucket = hasPermission(\"*\", [IAM_SCOPES.S3_CREATE_BUCKET]);\n const canListBuckets = hasPermission(\"*\", [\n IAM_SCOPES.S3_LIST_BUCKET,\n IAM_SCOPES.S3_ALL_LIST_BUCKET,\n ]);\n\n return (\n \n {replicationModalOpen && (\n \n )}\n {lifecycleModalOpen && (\n \n )}\n {!obOnly && (\n } />\n )}\n\n \n \n {obOnly && (\n \n \n \n )}\n {hasBuckets && (\n \n )}\n\n \n {!obOnly && (\n \n \n {\n setBulkSelect(!bulkSelect);\n setSelectedBuckets([]);\n }}\n icon={}\n variant={bulkSelect ? \"callAction\" : \"regular\"}\n disabled={!hasBuckets}\n />\n \n\n {bulkSelect && (\n \n }\n variant={\"regular\"}\n />\n \n )}\n\n \n {\n setLifecycleModalOpen(true);\n }}\n icon={}\n variant={\"regular\"}\n disabled={selectedBuckets.length === 0 || !canPutLifecycle}\n />\n \n\n \n {\n setReplicationModalOpen(true);\n }}\n icon={}\n variant={\"regular\"}\n disabled={selectedBuckets.length === 0}\n />\n \n \n )}\n\n \n {\n setLoading(true);\n }}\n icon={}\n variant={\"regular\"}\n />\n \n\n {!obOnly && (\n \n {\n navigate(IAM_PAGES.ADD_BUCKETS);\n }}\n icon={}\n variant={\"callAction\"}\n disabled={!canCreateBucket}\n label={\"Create Bucket\"}\n />\n \n )}\n \n \n\n {loading && }\n {!loading && (\n \n {filteredRecords.length !== 0 && (\n \n )}\n {filteredRecords.length === 0 && filterBuckets !== \"\" && (\n \n \n }\n title={\"No Results\"}\n help={\n \n No buckets match the filtering condition\n \n }\n />\n \n \n )}\n {!hasBuckets && (\n \n \n }\n title={\"Buckets\"}\n help={\n \n MinIO uses buckets to organize objects. A bucket is\n similar to a folder or directory in a filesystem, where\n each bucket can hold an arbitrary number of objects.\n
    \n {canListBuckets ? (\n \"\"\n ) : (\n \n
    \n {permissionTooltipHelper(\n [\n IAM_SCOPES.S3_LIST_BUCKET,\n IAM_SCOPES.S3_ALL_LIST_BUCKET,\n ],\n \"view the buckets on this server\",\n )}\n
    \n
    \n )}\n \n
    \n To get started, \n {\n navigate(IAM_PAGES.ADD_BUCKETS);\n }}\n >\n Create a Bucket.\n \n \n
    \n }\n />\n
    \n
    \n )}\n \n )}\n
    \n
    \n );\n};\n\nexport default ListBuckets;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { SelectorType } from \"mds\";\nimport { Menu, MenuItem } from \"@mui/material\";\n\ninterface IInputUnitBox {\n classes: any;\n id: string;\n unitSelected: string;\n unitsList: SelectorType[];\n disabled?: boolean;\n onUnitChange?: (newValue: string) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonTrigger: {\n border: \"#F0F2F2 1px solid\",\n borderRadius: 3,\n color: \"#838383\",\n backgroundColor: \"#fff\",\n fontSize: 12,\n },\n });\n\nconst InputUnitMenu = ({\n classes,\n id,\n unitSelected,\n unitsList,\n disabled = false,\n onUnitChange,\n}: IInputUnitBox) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const open = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleClose = (newUnit: string) => {\n setAnchorEl(null);\n if (newUnit !== \"\" && onUnitChange) {\n onUnitChange(newUnit);\n }\n };\n\n return (\n \n \n {unitSelected}\n \n {\n handleClose(\"\");\n }}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"center\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"center\",\n }}\n >\n {unitsList.map((unit) => (\n handleClose(unit.value)}\n key={`itemUnit-${unit.value}-${unit.label}`}\n >\n {unit.label}\n \n ))}\n \n \n );\n};\n\nexport default withStyles(styles)(InputUnitMenu);\n","import React, { Fragment } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { predefinedList } from \"../common/styleLibrary\";\n\ninterface IPredefinedList {\n classes: any;\n label?: string;\n content: any;\n multiLine?: boolean;\n actionButton?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...predefinedList,\n });\n\nconst PredefinedList = ({\n classes,\n label = \"\",\n content,\n multiLine = false,\n actionButton,\n}: IPredefinedList) => {\n return (\n \n \n {label !== \"\" && (\n \n {label}\n \n )}\n \n \n {content}\n \n {actionButton && (\n
    {actionButton}
    \n )}\n \n \n
    \n );\n};\n\nexport default withStyles(styles)(PredefinedList);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, {\n ChangeEvent,\n createRef,\n Fragment,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport get from \"lodash/get\";\nimport debounce from \"lodash/debounce\";\nimport {\n AddIcon,\n Box,\n Grid,\n HelpIcon,\n InputBox,\n InputLabel,\n Tooltip,\n} from \"mds\";\n\ninterface IQueryMultiSelector {\n elements: string;\n name: string;\n label: string;\n tooltip?: string;\n keyPlaceholder?: string;\n valuePlaceholder?: string;\n withBorder?: boolean;\n onChange: (elements: string) => void;\n}\n\nconst QueryMultiSelector = ({\n elements,\n name,\n label,\n tooltip = \"\",\n keyPlaceholder = \"\",\n valuePlaceholder = \"\",\n onChange,\n withBorder = false,\n}: IQueryMultiSelector) => {\n const [currentKeys, setCurrentKeys] = useState([\"\"]);\n const [currentValues, setCurrentValues] = useState([\"\"]);\n const bottomList = createRef();\n\n // Use effect to get the initial values from props\n useEffect(() => {\n if (\n currentKeys.length === 1 &&\n currentKeys[0] === \"\" &&\n currentValues.length === 1 &&\n currentValues[0] === \"\" &&\n elements &&\n elements !== \"\"\n ) {\n const elementsSplit = elements.split(\"&\");\n let keys = [];\n let values = [];\n\n elementsSplit.forEach((element: string) => {\n const splittedVals = element.split(\"=\");\n if (splittedVals.length === 2) {\n keys.push(splittedVals[0]);\n values.push(splittedVals[1]);\n }\n });\n\n keys.push(\"\");\n values.push(\"\");\n\n setCurrentKeys(keys);\n setCurrentValues(values);\n }\n }, [currentKeys, currentValues, elements]);\n\n // Use effect to send new values to onChange\n useEffect(() => {\n const refScroll = bottomList.current;\n if (refScroll && currentKeys.length > 1) {\n refScroll.scrollIntoView(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentKeys]);\n\n // We avoid multiple re-renders / hang issue typing too fast\n const firstUpdate = useRef(true);\n useLayoutEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = false;\n return;\n }\n debouncedOnChange();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentKeys, currentValues]);\n\n // If the last input is not empty, we add a new one\n const addEmptyLine = () => {\n if (\n currentKeys[currentKeys.length - 1].trim() !== \"\" &&\n currentValues[currentValues.length - 1].trim() !== \"\"\n ) {\n const keysList = [...currentKeys];\n const valuesList = [...currentValues];\n\n keysList.push(\"\");\n valuesList.push(\"\");\n\n setCurrentKeys(keysList);\n setCurrentValues(valuesList);\n }\n };\n\n // Onchange function for input box, we get the dataset-index & only update that value in the array\n const onChangeKey = (e: ChangeEvent) => {\n e.persist();\n\n let updatedElement = [...currentKeys];\n const index = get(e.target, \"dataset.index\", \"0\");\n const indexNum = parseInt(index);\n updatedElement[indexNum] = e.target.value;\n\n setCurrentKeys(updatedElement);\n };\n\n const onChangeValue = (e: ChangeEvent) => {\n e.persist();\n\n let updatedElement = [...currentValues];\n const index = get(e.target, \"dataset.index\", \"0\");\n const indexNum = parseInt(index);\n updatedElement[indexNum] = e.target.value;\n\n setCurrentValues(updatedElement);\n };\n\n // Debounce for On Change\n const debouncedOnChange = debounce(() => {\n let queryString = \"\";\n\n currentKeys.forEach((keyVal, index) => {\n if (currentKeys[index] && currentValues[index]) {\n let insertString = `${keyVal}=${currentValues[index]}`;\n if (index !== 0) {\n insertString = `&${insertString}`;\n }\n queryString = `${queryString}${insertString}`;\n }\n });\n\n onChange(queryString);\n }, 500);\n\n const inputs = currentValues.map((element, index) => {\n return (\n \n \n :\n : null}\n overlayAction={() => {\n addEmptyLine();\n }}\n />\n \n );\n });\n\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n \n \n \n \n \n )}\n \n \n {inputs}\n
    \n \n \n \n );\n};\nexport default QueryMultiSelector;\n"],"names":["withStyles","theme","createStyles","wizardStepContainer","display","flexDirection","flex","wizardComponent","overflowY","marginBottom","height","minHeight","width","wizardModal","buttonsContainer","justifyContent","padding","borderTop","marginLeft","paddingBottom","buttonInnerContainer","marginRight","_ref","classes","page","pageChange","loadingStep","forModal","_jsxs","className","children","_jsx","componentRender","ProgressBar","concat","buttons","map","btn","Button","id","label","variant","onClick","type","toPage","action","buttonAction","disabled","enabled","wizFromContainer","wizFromModal","position","modalWizardSteps","borderBottom","marginTop","listStyle","paddingLeft","buttonList","backgroundColor","border","cursor","textDecoration","outline","boxShadow","paddedContentGrid","stepsLabel","fontSize","color","fontWeight","margin","textAlign","stepsMasterContainer","top","maxHeight","verticalSteps","borderRight","background","stepsContainer","paddingTop","stepItem","wizardSteps","_useState","useState","_useState2","_slicedToArray","currentStep","setCurrentStep","toElement","lastPage","length","nextPage","prevPage","pg","Grid","container","Fragment","step","index","toString","item","xs","sm","md","lg","xl","List","component","dense","root","ListItem","toLowerCase","replaceAll","button","disableRipple","selected","ListItemText","primary","WizardPage","_objectSpread","resultGrid","gridTemplateColumns","alignItems","errorIcon","successIcon","spacingUtils","modalStyleUtils","formFieldStyles","createTenantCommon","_results$results","open","closeModalAndRefresh","buckets","dispatch","useAppDispatch","addLoading","setAddLoading","_useState3","_useState4","loadingTiers","setLoadingTiers","_useState5","_useState6","tiersList","setTiersList","_useState7","_useState8","prefix","setPrefix","_useState9","_useState10","tags","setTags","_useState11","_useState12","storageClass","setStorageClass","_useState13","_useState14","NCTransitionSC","setNCTransitionSC","_useState15","_useState16","expiredObjectDM","setExpiredObjectDM","_useState17","_useState18","NCExpirationDays","setNCExpirationDays","_useState19","_useState20","NCTransitionDays","setNCTransitionDays","_useState21","_useState22","ilmType","setIlmType","_useState23","_useState24","expiryDays","setExpiryDays","_useState25","_useState26","transitionDays","setTransitionDays","_useState27","_useState28","isFormValid","setIsFormValid","_useState29","_useState30","results","setResults","useEffect","api","admin","then","res","get","data","objList","tier","tierType","value","catch","err","setModalErrorSnackMessage","errorToHandler","error","valid","LogoToShow","_ref2","errString","CheckCircleOutlineIcon","Tooltip","tooltip","placement","ErrorOutlineIcon","ModalWrapper","modalOpen","onClose","title","GenericWizard","ReadBox","join","FormLayout","withBorders","containerPadding","RadioGroup","currentValue","name","onChange","e","target","selectorOptions","InputBox","min","placeholder","Select","options","QueryMultiSelector","elements","vl","keyPlaceholder","valuePlaceholder","withBorder","Switch","checked","event","to","rules","expiry","expiry_days","parseInt","noncurrentversion_expiration_days","transition","transition_days","noncurrentversion_transition_days","noncurrentversion_transition_storage_class","storage_class","lifecycleInsert","expired_object_delete_marker","addMultiBucketLifecycle","formScrollable","resultItem","bucketName","BucketItemMain","styled","div","borderRadius","gap","_defineProperty","breakPoints","flexFlow","fill","bucket","onSelect","bulkSelect","navigate","useNavigate","usage","niceBytes","size","usageScalar","split","usageUnit","quota","quotaForString","calculateBytes","manageAllowed","hasPermission","IAM_PERMISSIONS","IAM_ROLES","BUCKET_ADMIN","Box","stopPropagation","Checkbox","creation_date","Date","_bucket$rw_access","_bucket$rw_access2","_bucket$rw_access3","_bucket$rw_access4","_bucket$rw_access5","_bucket$rw_access6","rw_access","read","write","accessToStr","Link","BucketsIcon","style","ReportedUsageIcon","total","unit","TotalObjectsIcon","objects","prettyNumber","remoteBucketList","hide","opacity","transitionDuration","modalBasic","wizardCommon","bucketsToAlter","setBucketsToAlter","externalLoading","setExternalLoading","accessKey","setAccessKey","secretKey","setSecretKey","targetURL","setTargetURL","region","setRegion","useTLS","setUseTLS","replicationMode","setReplicationMode","bandwidthScalar","setBandwidthScalar","bandwidthUnit","setBandwidthUnit","healthCheck","setHealthCheck","relationBuckets","setRelationBuckets","remoteBucketsOpts","setRemoteBucketOpts","responseItem","setResponseItem","optionsForBucketsDrop","remoteBucketName","bucketsAlter","relationBucketsAlter","forEach","push","updateItem","indexItem","updatedList","_toConsumableArray","removeSuccessItems","newBucketsToAlter","newRelationBuckets","successElement","errorString","indexToRemove","indexOf","originBucket","splice","PredefinedList","content","descriptionText","validity","pattern","overlayObject","InputUnitMenu","onUnitChange","newValue","unitSelected","unitsList","k8sScalarUnitsExcluding","wizardPageJump","remoteConnectInfo","listExternalBuckets","arrayReplaceBuckets","element","errorItem","initialBucket","bucketResponse","find","stateOfItem","replicate","destinationBucket","endURL","hc","remoteBucketsInfo","bucketsRelation","syncMode","bandwidth","getBytes","healthCheckPeriod","bucketsReplication","setMultiBucketReplication","response","states","replicationState","filterErrors","filter","itm","setTimeout","records","setRecords","loading","setLoading","filterBuckets","setFilterBuckets","selectedBuckets","setSelectedBuckets","replicationModalOpen","setReplicationModalOpen","lifecycleModalOpen","setLifecycleModalOpen","canPutLifecycle","setCanPutLifecycle","setBulkSelect","features","useSelector","selFeatures","obOnly","includes","setHelpName","listBuckets","setErrorSnackMessage","filteredRecords","b","hasBuckets","selectListBuckets","targetD","failLifecycle","BUCKET_LIFECYCLE","canCreateBucket","IAM_SCOPES","S3_CREATE_BUCKET","canListBuckets","S3_LIST_BUCKET","S3_ALL_LIST_BUCKET","BulkReplicationModal","unselectAll","BulkLifecycleModal","PageHeaderWrapper","actions","HelpMenu","PageLayout","sx","actionsTray","AutoColorIcon","SearchBox","minWidth","TooltipWrapper","icon","SelectMultipleIcon","selectAllBuckets","SelectAllIcon","permissionTooltipHelper","LifecycleConfigIcon","MultipleBucketsIcon","RefreshIcon","IAM_PAGES","ADD_BUCKETS","AddIcon","VirtualizedList","rowRenderFunction","BucketListItem","totalItems","HelpBox","iconComponent","help","SecureComponent","scopes","resource","CONSOLE_UI_RESOURCE","AButton","buttonTrigger","_ref$disabled","_React$useState","React","_React$useState2","anchorEl","setAnchorEl","Boolean","handleClose","newUnit","undefined","currentTarget","Menu","anchorOrigin","vertical","horizontal","transformOrigin","MenuItem","predefinedList","_ref$label","_ref$multiLine","multiLine","actionButton","prefinedContainer","predefinedTitle","includesActionButton","innerContentMultiline","innerContent","overlayShareOption","_ref$tooltip","_ref$keyPlaceholder","_ref$valuePlaceholder","_ref$withBorder","currentKeys","setCurrentKeys","currentValues","setCurrentValues","bottomList","createRef","elementsSplit","keys","values","splittedVals","refScroll","current","scrollIntoView","firstUpdate","useRef","useLayoutEffect","debouncedOnChange","onChangeKey","persist","updatedElement","onChangeValue","debounce","queryString","keyVal","insertString","inputs","overlayIcon","overlayAction","trim","keysList","valuesList","addEmptyLine","alignSelf","InputLabel","HelpIcon","ref"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/8060.060ad94e.chunk.js b/portal-ui/build/static/js/8060.a5309a8c.chunk.js similarity index 99% rename from portal-ui/build/static/js/8060.060ad94e.chunk.js rename to portal-ui/build/static/js/8060.a5309a8c.chunk.js index 1b80c09473..9bb4a9fdab 100644 --- a/portal-ui/build/static/js/8060.060ad94e.chunk.js +++ b/portal-ui/build/static/js/8060.a5309a8c.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[8060],{18060:function(e,t,o){o.r(t),o.d(t,{default:function(){return x}});var n=o(1413),r=o(72791),a=o(57689),i=o(29945),l=o(61757),s=o(23814),c=o(56087),p=o(80184),u=function(){return(0,p.jsx)(i.KfX,{iconComponent:(0,p.jsx)(i.HNx,{}),title:"What are Event Destinations?",help:(0,p.jsx)(i.xuv,{sx:{paddingTop:"20px"},children:"MinIO bucket notifications allow administrators to send notifications to supported external services on certain object or bucket events. MinIO supports bucket and object-level S3 events similar to the Amazon S3 Event Notifications."})})},d=o(47974),g=o(26181),f=o.n(g),m=o(17691).ZP.button((function(e){var t=e.theme;return{background:f()(t,"boxBackground","#FFF"),border:"".concat(f()(t,"borderColor","#E2E2E2")," 1px solid"),borderRadius:5,width:250,height:80,display:"flex",alignItems:"center",justifyContent:"start",marginBottom:16,marginRight:8,cursor:"pointer",overflow:"hidden","&:hover":{backgroundColor:f()(t,"buttons.regular.hover.background","#ebebeb")},"& .imageContainer":{width:80,"& .logoButton":{maxWidth:46,maxHeight:46,filter:"drop-shadow(1px 1px 8px #fff)"}},"& .lambdaNotifTitle":{color:f()(t,"buttons.callAction.enabled.background","#07193E"),fontSize:16,fontFamily:"Inter,sans-serif",paddingLeft:18,fontWeight:"bold"}}})),h=function(e){var t=e.destinationType,o=e.srcImage,n=e.title,r=(0,a.s0)();return(0,p.jsxs)(m,{onClick:function(){r("".concat(c.gA.EVENT_DESTINATIONS_ADD,"/").concat(t))},children:[(0,p.jsx)("span",{className:"imageContainer",children:(0,p.jsx)("img",{src:o,className:"logoButton",alt:n})}),(0,p.jsx)("span",{className:"lambdaNotifTitle",children:n})]})},y=o(99670),b=o(81551),T=o(87995),S=l.BI.filter((function(e){return""!==e.logo})),v=S.filter((function(e){return e.category===l.z5.DB})),k=S.filter((function(e){return e.category===l.z5.Queue})),_=S.filter((function(e){return e.category===l.z5.Func})),x=function(){var e=(0,a.s0)(),t=(0,b.TL)();return(0,r.useEffect)((function(){t((0,T.Sc)("notification_type_selector"))}),[]),(0,p.jsxs)(r.Fragment,{children:[(0,p.jsx)(d.Z,{label:(0,p.jsx)(r.Fragment,{children:(0,p.jsx)(i.hbI,{label:"Event Destinations",onClick:function(){return e(c.gA.EVENT_DESTINATIONS)}})}),actions:(0,p.jsx)(y.Z,{})}),(0,p.jsx)(i.Xgh,{children:(0,p.jsx)(i.ltY,{helpBox:(0,p.jsx)(u,{}),children:(0,p.jsxs)(i.xuv,{children:[(0,p.jsx)(i.xuv,{sx:{fontSize:16,fontWeight:600,paddingBottom:15},children:"Queue"}),(0,p.jsx)(i.xuv,{sx:(0,n.Z)({},s.fc.iconContainer),children:k.map((function(e){return(0,p.jsx)(h,{destinationType:e.actionTrigger,srcImage:e.logo,title:e.targetTitle},"icon-".concat(e.targetTitle))}))}),(0,p.jsx)(i.xuv,{sx:{fontSize:16,fontWeight:600,paddingBottom:15},children:"Database"}),(0,p.jsx)(i.xuv,{sx:(0,n.Z)({},s.fc.iconContainer),children:v.map((function(e){return(0,p.jsx)(h,{destinationType:e.actionTrigger,srcImage:e.logo,title:e.targetTitle},"icon-".concat(e.targetTitle))}))}),(0,p.jsx)(i.xuv,{sx:{fontSize:16,fontWeight:600,paddingBottom:15},children:"Functions"}),(0,p.jsx)(i.xuv,{sx:(0,n.Z)({},s.fc.iconContainer),children:_.map((function(e){return(0,p.jsx)(h,{destinationType:e.actionTrigger,srcImage:e.logo,title:e.targetTitle},"icon-".concat(e.targetTitle))}))})]})})})]})}},61757:function(e,t,o){o.d(t,{BI:function(){return T},DD:function(){return v},L:function(){return x},dM:function(){return s},ee:function(){return l},fk:function(){return y},oj:function(){return k},z5:function(){return b}});var n,r=o(4942),a=o(43144),i=o(15671),l="notify_postgres",s="notify_mysql",c="notify_kafka",p="notify_amqp",u="notify_mqtt",d="notify_redis",g="notify_nats",f="notify_elasticsearch",m="notify_webhook",h="notify_nsq",y=function(e){return e.map((function(e){return{service_name:"".concat(e.service,":").concat(e.account_id),name:e.service,account_id:e.account_id,status:e.status}}))},b=(0,a.Z)((function e(){(0,i.Z)(this,e)}));b.DB="database",b.Queue="queue",b.Func="functions";var T=[{actionTrigger:l,targetTitle:"PostgreSQL",logo:"/postgres-logo.svg",category:b.DB},{actionTrigger:c,targetTitle:"Kafka",logo:"/kafka-logo.svg",category:b.Queue},{actionTrigger:p,targetTitle:"AMQP",logo:"/amqp-logo.svg",category:b.Queue},{actionTrigger:u,targetTitle:"MQTT",logo:"/mqtt-logo.svg",category:b.Queue},{actionTrigger:d,targetTitle:"Redis",logo:"/redis-logo.svg",category:b.Queue},{actionTrigger:g,targetTitle:"NATS",logo:"/nats-logo.svg",category:b.Queue},{actionTrigger:s,targetTitle:"Mysql",logo:"/mysql-logo.svg",category:b.DB},{actionTrigger:f,targetTitle:"Elastic Search",logo:"/elasticsearch-logo.svg",category:b.DB},{actionTrigger:m,targetTitle:"Webhook",logo:"/webhooks-logo.svg",category:b.Func},{actionTrigger:h,targetTitle:"NSQ",logo:"/nsq-logo.svg",category:b.Queue}],S=[{name:"queue_dir",label:"Queue Directory",required:!1,tooltip:"Staging directory for undelivered messages e.g. '/home/events'",type:"string",placeholder:"Enter Queue Directory"},{name:"queue_limit",label:"Queue Limit",required:!1,tooltip:"Maximum limit for undelivered messages, defaults to '10000'",type:"number",placeholder:"Enter Queue Limit"},{name:"comment",label:"Comment",required:!1,type:"comment",placeholder:"Enter custom notes if any"}],v=function(e){return e.filter((function(e){return""!==e.value}))},k=(n={},(0,r.Z)(n,c,[{name:"brokers",label:"Brokers",required:!0,tooltip:"Comma separated list of Kafka broker addresses",type:"string",placeholder:"Enter Brokers"},{name:"topic",label:"Topic",tooltip:"Kafka topic used for bucket notifications",type:"string",placeholder:"Enter Topic"},{name:"sasl_username",label:"SASL Username",tooltip:"Username for SASL/PLAIN or SASL/SCRAM authentication",type:"string",placeholder:"Enter SASL Username"},{name:"sasl_password",label:"SASL Password",tooltip:"Password for SASL/PLAIN or SASL/SCRAM authentication",type:"string",placeholder:"Enter SASL Password"},{name:"sasl_mechanism",label:"SASL Mechanism",tooltip:"SASL authentication mechanism, default 'PLAIN'",type:"string"},{name:"tls_client_auth",label:"TLS Client Auth",tooltip:"Client Auth determines the Kafka server's policy for TLS client authorization",type:"string",placeholder:"Enter TLS Client Auth"},{name:"sasl",label:"SASL",tooltip:"Set to 'on' to enable SASL authentication",type:"on|off"},{name:"tls",label:"TLS",tooltip:"Set to 'on' to enable TLS",type:"on|off"},{name:"tls_skip_verify",label:"TLS skip verify",tooltip:'Trust server TLS without verification, defaults to "on" (verify)',type:"on|off"},{name:"client_tls_cert",label:"client TLS cert",tooltip:"Path to client certificate for mTLS authorization",type:"path",placeholder:"Enter TLS Client Cert"},{name:"client_tls_key",label:"client TLS key",tooltip:"Path to client key for mTLS authorization",type:"path",placeholder:"Enter TLS Client Key"},{name:"version",label:"Version",tooltip:"Specify the version of the Kafka cluster e.g '2.2.0'",type:"string",placeholder:"Enter Kafka Version"}].concat(S)),(0,r.Z)(n,p,[{name:"url",required:!0,label:"URL",tooltip:"AMQP server endpoint e.g. `amqp://myuser:mypassword@localhost:5672`",type:"url"},{name:"exchange",label:"Exchange",tooltip:"Name of the AMQP exchange",type:"string",placeholder:"Enter Exchange"},{name:"exchange_type",label:"Exchange Type",tooltip:"AMQP exchange type",type:"string",placeholder:"Enter Exchange Type"},{name:"routing_key",label:"Routing Key",tooltip:"Routing key for publishing",type:"string",placeholder:"Enter Routing Key"},{name:"mandatory",label:"Mandatory",tooltip:"Quietly ignore undelivered messages when set to 'off', default is 'on'",type:"on|off"},{name:"durable",label:"Durable",tooltip:"Persist queue across broker restarts when set to 'on', default is 'off'",type:"on|off"},{name:"no_wait",label:"No Wait",tooltip:"Non-blocking message delivery when set to 'on', default is 'off'",type:"on|off"},{name:"internal",label:"Internal",tooltip:"Set to 'on' for exchange to be not used directly by publishers, but only when bound to other exchanges",type:"on|off"},{name:"auto_deleted",label:"Auto Deleted",tooltip:"Auto delete queue when set to 'on', when there are no consumers",type:"on|off"},{name:"delivery_mode",label:"Delivery Mode",tooltip:"Set to '1' for non-persistent or '2' for persistent queue",type:"number",placeholder:"Enter Delivery Mode"}].concat(S)),(0,r.Z)(n,d,[{name:"address",required:!0,label:"Address",tooltip:"Redis server's address e.g. `localhost:6379`",type:"address",placeholder:"Enter Address"},{name:"key",required:!0,label:"Key",tooltip:"Redis key to store/update events, key is auto-created",type:"string",placeholder:"Enter Key"},{name:"password",label:"Password",tooltip:"Redis server password",type:"string",placeholder:"Enter Password"}].concat(S)),(0,r.Z)(n,u,[{name:"broker",required:!0,label:"Broker",tooltip:"MQTT server endpoint e.g. `tcp://localhost:1883`",type:"uri",placeholder:"Enter Brokers"},{name:"topic",required:!0,label:"Topic",tooltip:"Name of the MQTT topic to publish",type:"string",placeholder:"Enter Topic"},{name:"username",label:"Username",tooltip:"MQTT username",type:"string",placeholder:"Enter Username"},{name:"password",label:"Password",tooltip:"MQTT password",type:"string",placeholder:"Enter Password"},{name:"qos",label:"QOS",tooltip:"Set the quality of service priority, defaults to '0'",type:"number",placeholder:"Enter QOS"},{name:"keep_alive_interval",label:"Keep Alive Interval",tooltip:"Keep-alive interval for MQTT connections in s,m,h,d",type:"duration",placeholder:"Enter Keep Alive Interval"},{name:"reconnect_interval",label:"Reconnect Interval",tooltip:"Reconnect interval for MQTT connections in s,m,h,d",type:"duration",placeholder:"Enter Reconnect Interval"}].concat(S)),(0,r.Z)(n,g,[{name:"address",required:!0,label:"Address",tooltip:"NATS server address e.g. '0.0.0.0:4222'",type:"address",placeholder:"Enter Address"},{name:"subject",required:!0,label:"Subject",tooltip:"NATS subscription subject",type:"string",placeholder:"Enter NATS Subject"},{name:"username",label:"Username",tooltip:"NATS username",type:"string",placeholder:"Enter NATS Username"},{name:"password",label:"Password",tooltip:"NATS password",type:"string",placeholder:"Enter NATS password"},{name:"token",label:"Token",tooltip:"NATS token",type:"string",placeholder:"Enter NATS token"},{name:"tls",label:"TLS",tooltip:"Set to 'on' to enable TLS",type:"on|off"},{name:"tls_skip_verify",label:"TLS Skip Verify",tooltip:'Trust server TLS without verification, defaults to "on" (verify)',type:"on|off"},{name:"ping_interval",label:"Ping Interval",tooltip:"Client ping commands interval in s,m,h,d. Disabled by default",type:"duration",placeholder:"Enter Ping Interval"},{name:"streaming",label:"Streaming",tooltip:"Set to 'on' to use streaming NATS server",type:"on|off"},{name:"streaming_async",label:"Streaming async",tooltip:"Set to 'on' to enable asynchronous publish",type:"on|off"},{name:"streaming_max_pub_acks_in_flight",label:"Streaming max publish ACKS in flight",tooltip:"Number of messages to publish without waiting for ACKs",type:"number",placeholder:"Enter Streaming in flight value"},{name:"streaming_cluster_id",label:"Streaming Cluster ID",tooltip:"Unique ID for NATS streaming cluster",type:"string",placeholder:"Enter Streaming Cluster ID"},{name:"cert_authority",label:"Cert Authority",tooltip:"Path to certificate chain of the target NATS server",type:"string",placeholder:"Enter Cert Authority"},{name:"client_cert",label:"Client Cert",tooltip:"Client cert for NATS mTLS auth",type:"string",placeholder:"Enter Client Cert"},{name:"client_key",label:"Client Key",tooltip:"Client cert key for NATS mTLS authorization",type:"string",placeholder:"Enter Client Key"}].concat(S)),(0,r.Z)(n,f,[{name:"url",required:!0,label:"URL",tooltip:"Elasticsearch server's address, with optional authentication info",type:"url",placeholder:"Enter URL"},{name:"index",required:!0,label:"Index",tooltip:"Elasticsearch index to store/update events, index is auto-created",type:"string",placeholder:"Enter Index"},{name:"format",required:!0,label:"Format",tooltip:"'namespace' reflects current bucket/object list and 'access' reflects a journal of object operations, defaults to 'namespace'",type:"enum",placeholder:"Enter Format"}].concat(S)),(0,r.Z)(n,m,[{name:"endpoint",required:!0,label:"Endpoint",tooltip:"Webhook server endpoint e.g. http://localhost:8080/minio/events",type:"url",placeholder:"Enter Endpoint"},{name:"auth_token",label:"Auth Token",tooltip:"Opaque string or JWT authorization token",type:"string",placeholder:"Enter auth_token"}].concat(S)),(0,r.Z)(n,h,[{name:"nsqd_address",required:!0,label:"NSQD Address",tooltip:"NSQ server address e.g. '127.0.0.1:4150'",type:"address",placeholder:"Enter nsqd_address"},{name:"topic",required:!0,label:"Topic",tooltip:"NSQ topic",type:"string",placeholder:"Enter Topic"},{name:"tls",label:"TLS",tooltip:"Set to 'on' to enable TLS",type:"on|off"},{name:"tls_skip_verify",label:"TLS Skip Verify",tooltip:'Trust server TLS without verification, defaults to "on" (verify)',type:"on|off"}].concat(S)),n),_={webhook:"notify_webhook",amqp:"notify_amqp",kafka:"notify_kafka",mqtt:"notify_mqtt",nats:"notify_nats",nsq:"notify_nsq",mysql:"notify_mysql",postgresql:"notify_postgres",elasticsearch:"notify_elasticsearch",redis:"notify_redis"},x=function(e){return _[e]}}}]); -//# sourceMappingURL=8060.060ad94e.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[8060],{18060:function(e,t,o){o.r(t),o.d(t,{default:function(){return x}});var n=o(1413),r=o(72791),a=o(57689),i=o(29945),l=o(61757),s=o(23814),c=o(56087),p=o(80184),u=function(){return(0,p.jsx)(i.KfX,{iconComponent:(0,p.jsx)(i.HNx,{}),title:"What are Event Destinations?",help:(0,p.jsx)(i.xuv,{sx:{paddingTop:"20px"},children:"MinIO bucket notifications allow administrators to send notifications to supported external services on certain object or bucket events. MinIO supports bucket and object-level S3 events similar to the Amazon S3 Event Notifications."})})},d=o(47974),g=o(26181),f=o.n(g),m=o(17691).ZP.button((function(e){var t=e.theme;return{background:f()(t,"boxBackground","#FFF"),border:"".concat(f()(t,"borderColor","#E2E2E2")," 1px solid"),borderRadius:5,width:250,height:80,display:"flex",alignItems:"center",justifyContent:"start",marginBottom:16,marginRight:8,cursor:"pointer",overflow:"hidden","&:hover":{backgroundColor:f()(t,"buttons.regular.hover.background","#ebebeb")},"& .imageContainer":{width:80,"& .logoButton":{maxWidth:46,maxHeight:46,filter:"drop-shadow(1px 1px 8px #fff)"}},"& .lambdaNotifTitle":{color:f()(t,"buttons.callAction.enabled.background","#07193E"),fontSize:16,fontFamily:"Inter,sans-serif",paddingLeft:18,fontWeight:"bold"}}})),h=function(e){var t=e.destinationType,o=e.srcImage,n=e.title,r=(0,a.s0)();return(0,p.jsxs)(m,{onClick:function(){r("".concat(c.gA.EVENT_DESTINATIONS_ADD,"/").concat(t))},children:[(0,p.jsx)("span",{className:"imageContainer",children:(0,p.jsx)("img",{src:o,className:"logoButton",alt:n})}),(0,p.jsx)("span",{className:"lambdaNotifTitle",children:n})]})},y=o(99670),b=o(44690),T=o(87995),S=l.BI.filter((function(e){return""!==e.logo})),v=S.filter((function(e){return e.category===l.z5.DB})),k=S.filter((function(e){return e.category===l.z5.Queue})),_=S.filter((function(e){return e.category===l.z5.Func})),x=function(){var e=(0,a.s0)(),t=(0,b.TL)();return(0,r.useEffect)((function(){t((0,T.Sc)("notification_type_selector"))}),[]),(0,p.jsxs)(r.Fragment,{children:[(0,p.jsx)(d.Z,{label:(0,p.jsx)(r.Fragment,{children:(0,p.jsx)(i.hbI,{label:"Event Destinations",onClick:function(){return e(c.gA.EVENT_DESTINATIONS)}})}),actions:(0,p.jsx)(y.Z,{})}),(0,p.jsx)(i.Xgh,{children:(0,p.jsx)(i.ltY,{helpBox:(0,p.jsx)(u,{}),children:(0,p.jsxs)(i.xuv,{children:[(0,p.jsx)(i.xuv,{sx:{fontSize:16,fontWeight:600,paddingBottom:15},children:"Queue"}),(0,p.jsx)(i.xuv,{sx:(0,n.Z)({},s.fc.iconContainer),children:k.map((function(e){return(0,p.jsx)(h,{destinationType:e.actionTrigger,srcImage:e.logo,title:e.targetTitle},"icon-".concat(e.targetTitle))}))}),(0,p.jsx)(i.xuv,{sx:{fontSize:16,fontWeight:600,paddingBottom:15},children:"Database"}),(0,p.jsx)(i.xuv,{sx:(0,n.Z)({},s.fc.iconContainer),children:v.map((function(e){return(0,p.jsx)(h,{destinationType:e.actionTrigger,srcImage:e.logo,title:e.targetTitle},"icon-".concat(e.targetTitle))}))}),(0,p.jsx)(i.xuv,{sx:{fontSize:16,fontWeight:600,paddingBottom:15},children:"Functions"}),(0,p.jsx)(i.xuv,{sx:(0,n.Z)({},s.fc.iconContainer),children:_.map((function(e){return(0,p.jsx)(h,{destinationType:e.actionTrigger,srcImage:e.logo,title:e.targetTitle},"icon-".concat(e.targetTitle))}))})]})})})]})}},61757:function(e,t,o){o.d(t,{BI:function(){return T},DD:function(){return v},L:function(){return x},dM:function(){return s},ee:function(){return l},fk:function(){return y},oj:function(){return k},z5:function(){return b}});var n,r=o(4942),a=o(43144),i=o(15671),l="notify_postgres",s="notify_mysql",c="notify_kafka",p="notify_amqp",u="notify_mqtt",d="notify_redis",g="notify_nats",f="notify_elasticsearch",m="notify_webhook",h="notify_nsq",y=function(e){return e.map((function(e){return{service_name:"".concat(e.service,":").concat(e.account_id),name:e.service,account_id:e.account_id,status:e.status}}))},b=(0,a.Z)((function e(){(0,i.Z)(this,e)}));b.DB="database",b.Queue="queue",b.Func="functions";var T=[{actionTrigger:l,targetTitle:"PostgreSQL",logo:"/postgres-logo.svg",category:b.DB},{actionTrigger:c,targetTitle:"Kafka",logo:"/kafka-logo.svg",category:b.Queue},{actionTrigger:p,targetTitle:"AMQP",logo:"/amqp-logo.svg",category:b.Queue},{actionTrigger:u,targetTitle:"MQTT",logo:"/mqtt-logo.svg",category:b.Queue},{actionTrigger:d,targetTitle:"Redis",logo:"/redis-logo.svg",category:b.Queue},{actionTrigger:g,targetTitle:"NATS",logo:"/nats-logo.svg",category:b.Queue},{actionTrigger:s,targetTitle:"Mysql",logo:"/mysql-logo.svg",category:b.DB},{actionTrigger:f,targetTitle:"Elastic Search",logo:"/elasticsearch-logo.svg",category:b.DB},{actionTrigger:m,targetTitle:"Webhook",logo:"/webhooks-logo.svg",category:b.Func},{actionTrigger:h,targetTitle:"NSQ",logo:"/nsq-logo.svg",category:b.Queue}],S=[{name:"queue_dir",label:"Queue Directory",required:!1,tooltip:"Staging directory for undelivered messages e.g. '/home/events'",type:"string",placeholder:"Enter Queue Directory"},{name:"queue_limit",label:"Queue Limit",required:!1,tooltip:"Maximum limit for undelivered messages, defaults to '10000'",type:"number",placeholder:"Enter Queue Limit"},{name:"comment",label:"Comment",required:!1,type:"comment",placeholder:"Enter custom notes if any"}],v=function(e){return e.filter((function(e){return""!==e.value}))},k=(n={},(0,r.Z)(n,c,[{name:"brokers",label:"Brokers",required:!0,tooltip:"Comma separated list of Kafka broker addresses",type:"string",placeholder:"Enter Brokers"},{name:"topic",label:"Topic",tooltip:"Kafka topic used for bucket notifications",type:"string",placeholder:"Enter Topic"},{name:"sasl_username",label:"SASL Username",tooltip:"Username for SASL/PLAIN or SASL/SCRAM authentication",type:"string",placeholder:"Enter SASL Username"},{name:"sasl_password",label:"SASL Password",tooltip:"Password for SASL/PLAIN or SASL/SCRAM authentication",type:"string",placeholder:"Enter SASL Password"},{name:"sasl_mechanism",label:"SASL Mechanism",tooltip:"SASL authentication mechanism, default 'PLAIN'",type:"string"},{name:"tls_client_auth",label:"TLS Client Auth",tooltip:"Client Auth determines the Kafka server's policy for TLS client authorization",type:"string",placeholder:"Enter TLS Client Auth"},{name:"sasl",label:"SASL",tooltip:"Set to 'on' to enable SASL authentication",type:"on|off"},{name:"tls",label:"TLS",tooltip:"Set to 'on' to enable TLS",type:"on|off"},{name:"tls_skip_verify",label:"TLS skip verify",tooltip:'Trust server TLS without verification, defaults to "on" (verify)',type:"on|off"},{name:"client_tls_cert",label:"client TLS cert",tooltip:"Path to client certificate for mTLS authorization",type:"path",placeholder:"Enter TLS Client Cert"},{name:"client_tls_key",label:"client TLS key",tooltip:"Path to client key for mTLS authorization",type:"path",placeholder:"Enter TLS Client Key"},{name:"version",label:"Version",tooltip:"Specify the version of the Kafka cluster e.g '2.2.0'",type:"string",placeholder:"Enter Kafka Version"}].concat(S)),(0,r.Z)(n,p,[{name:"url",required:!0,label:"URL",tooltip:"AMQP server endpoint e.g. `amqp://myuser:mypassword@localhost:5672`",type:"url"},{name:"exchange",label:"Exchange",tooltip:"Name of the AMQP exchange",type:"string",placeholder:"Enter Exchange"},{name:"exchange_type",label:"Exchange Type",tooltip:"AMQP exchange type",type:"string",placeholder:"Enter Exchange Type"},{name:"routing_key",label:"Routing Key",tooltip:"Routing key for publishing",type:"string",placeholder:"Enter Routing Key"},{name:"mandatory",label:"Mandatory",tooltip:"Quietly ignore undelivered messages when set to 'off', default is 'on'",type:"on|off"},{name:"durable",label:"Durable",tooltip:"Persist queue across broker restarts when set to 'on', default is 'off'",type:"on|off"},{name:"no_wait",label:"No Wait",tooltip:"Non-blocking message delivery when set to 'on', default is 'off'",type:"on|off"},{name:"internal",label:"Internal",tooltip:"Set to 'on' for exchange to be not used directly by publishers, but only when bound to other exchanges",type:"on|off"},{name:"auto_deleted",label:"Auto Deleted",tooltip:"Auto delete queue when set to 'on', when there are no consumers",type:"on|off"},{name:"delivery_mode",label:"Delivery Mode",tooltip:"Set to '1' for non-persistent or '2' for persistent queue",type:"number",placeholder:"Enter Delivery Mode"}].concat(S)),(0,r.Z)(n,d,[{name:"address",required:!0,label:"Address",tooltip:"Redis server's address e.g. `localhost:6379`",type:"address",placeholder:"Enter Address"},{name:"key",required:!0,label:"Key",tooltip:"Redis key to store/update events, key is auto-created",type:"string",placeholder:"Enter Key"},{name:"password",label:"Password",tooltip:"Redis server password",type:"string",placeholder:"Enter Password"}].concat(S)),(0,r.Z)(n,u,[{name:"broker",required:!0,label:"Broker",tooltip:"MQTT server endpoint e.g. `tcp://localhost:1883`",type:"uri",placeholder:"Enter Brokers"},{name:"topic",required:!0,label:"Topic",tooltip:"Name of the MQTT topic to publish",type:"string",placeholder:"Enter Topic"},{name:"username",label:"Username",tooltip:"MQTT username",type:"string",placeholder:"Enter Username"},{name:"password",label:"Password",tooltip:"MQTT password",type:"string",placeholder:"Enter Password"},{name:"qos",label:"QOS",tooltip:"Set the quality of service priority, defaults to '0'",type:"number",placeholder:"Enter QOS"},{name:"keep_alive_interval",label:"Keep Alive Interval",tooltip:"Keep-alive interval for MQTT connections in s,m,h,d",type:"duration",placeholder:"Enter Keep Alive Interval"},{name:"reconnect_interval",label:"Reconnect Interval",tooltip:"Reconnect interval for MQTT connections in s,m,h,d",type:"duration",placeholder:"Enter Reconnect Interval"}].concat(S)),(0,r.Z)(n,g,[{name:"address",required:!0,label:"Address",tooltip:"NATS server address e.g. '0.0.0.0:4222'",type:"address",placeholder:"Enter Address"},{name:"subject",required:!0,label:"Subject",tooltip:"NATS subscription subject",type:"string",placeholder:"Enter NATS Subject"},{name:"username",label:"Username",tooltip:"NATS username",type:"string",placeholder:"Enter NATS Username"},{name:"password",label:"Password",tooltip:"NATS password",type:"string",placeholder:"Enter NATS password"},{name:"token",label:"Token",tooltip:"NATS token",type:"string",placeholder:"Enter NATS token"},{name:"tls",label:"TLS",tooltip:"Set to 'on' to enable TLS",type:"on|off"},{name:"tls_skip_verify",label:"TLS Skip Verify",tooltip:'Trust server TLS without verification, defaults to "on" (verify)',type:"on|off"},{name:"ping_interval",label:"Ping Interval",tooltip:"Client ping commands interval in s,m,h,d. Disabled by default",type:"duration",placeholder:"Enter Ping Interval"},{name:"streaming",label:"Streaming",tooltip:"Set to 'on' to use streaming NATS server",type:"on|off"},{name:"streaming_async",label:"Streaming async",tooltip:"Set to 'on' to enable asynchronous publish",type:"on|off"},{name:"streaming_max_pub_acks_in_flight",label:"Streaming max publish ACKS in flight",tooltip:"Number of messages to publish without waiting for ACKs",type:"number",placeholder:"Enter Streaming in flight value"},{name:"streaming_cluster_id",label:"Streaming Cluster ID",tooltip:"Unique ID for NATS streaming cluster",type:"string",placeholder:"Enter Streaming Cluster ID"},{name:"cert_authority",label:"Cert Authority",tooltip:"Path to certificate chain of the target NATS server",type:"string",placeholder:"Enter Cert Authority"},{name:"client_cert",label:"Client Cert",tooltip:"Client cert for NATS mTLS auth",type:"string",placeholder:"Enter Client Cert"},{name:"client_key",label:"Client Key",tooltip:"Client cert key for NATS mTLS authorization",type:"string",placeholder:"Enter Client Key"}].concat(S)),(0,r.Z)(n,f,[{name:"url",required:!0,label:"URL",tooltip:"Elasticsearch server's address, with optional authentication info",type:"url",placeholder:"Enter URL"},{name:"index",required:!0,label:"Index",tooltip:"Elasticsearch index to store/update events, index is auto-created",type:"string",placeholder:"Enter Index"},{name:"format",required:!0,label:"Format",tooltip:"'namespace' reflects current bucket/object list and 'access' reflects a journal of object operations, defaults to 'namespace'",type:"enum",placeholder:"Enter Format"}].concat(S)),(0,r.Z)(n,m,[{name:"endpoint",required:!0,label:"Endpoint",tooltip:"Webhook server endpoint e.g. http://localhost:8080/minio/events",type:"url",placeholder:"Enter Endpoint"},{name:"auth_token",label:"Auth Token",tooltip:"Opaque string or JWT authorization token",type:"string",placeholder:"Enter auth_token"}].concat(S)),(0,r.Z)(n,h,[{name:"nsqd_address",required:!0,label:"NSQD Address",tooltip:"NSQ server address e.g. '127.0.0.1:4150'",type:"address",placeholder:"Enter nsqd_address"},{name:"topic",required:!0,label:"Topic",tooltip:"NSQ topic",type:"string",placeholder:"Enter Topic"},{name:"tls",label:"TLS",tooltip:"Set to 'on' to enable TLS",type:"on|off"},{name:"tls_skip_verify",label:"TLS Skip Verify",tooltip:'Trust server TLS without verification, defaults to "on" (verify)',type:"on|off"}].concat(S)),n),_={webhook:"notify_webhook",amqp:"notify_amqp",kafka:"notify_kafka",mqtt:"notify_mqtt",nats:"notify_nats",nsq:"notify_nsq",mysql:"notify_mysql",postgresql:"notify_postgres",elasticsearch:"notify_elasticsearch",redis:"notify_redis"},x=function(e){return _[e]}}}]); +//# sourceMappingURL=8060.a5309a8c.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/8060.060ad94e.chunk.js.map b/portal-ui/build/static/js/8060.a5309a8c.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/8060.060ad94e.chunk.js.map rename to portal-ui/build/static/js/8060.a5309a8c.chunk.js.map index 0aec4f0b73..b5c559636f 100644 --- a/portal-ui/build/static/js/8060.060ad94e.chunk.js.map +++ b/portal-ui/build/static/js/8060.a5309a8c.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/8060.060ad94e.chunk.js","mappings":"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ER,KAAM,OACNlC,MAAO,OACPwC,QAAS,4CACTC,KAAM,UAER,CACEP,KAAM,MACNlC,MAAO,MACPwC,QAAS,4BACTC,KAAM,UAER,CACEP,KAAM,kBACNlC,MAAO,kBACPwC,QACE,mEACFC,KAAM,UAER,CACEP,KAAM,kBACNlC,MAAO,kBACPwC,QAAS,oDACTC,KAAM,OACNC,YAAa,yBAEf,CACER,KAAM,iBACNlC,MAAO,iBACPwC,QAAS,4CACTC,KAAM,OACNC,YAAa,wBAEf,CACER,KAAM,UACNlC,MAAO,UACPwC,QAAS,uDACTC,KAAM,SACNC,YAAa,wBACd5F,OACEwF,KAAYW,EAAAA,EAAAA,GAAAD,EAEhB3B,EAAU,CACT,CACEa,KAAM,MACNK,UAAU,EACVvC,MAAO,MACPwC,QACE,sEACFC,KAAM,OAER,CACEP,KAAM,WACNlC,MAAO,WACPwC,QAAS,4BACTC,KAAM,SACNC,YAAa,kBAEf,CACER,KAAM,gBACNlC,MAAO,gBACPwC,QAAS,qBACTC,KAAM,SACNC,YAAa,uBAEf,CACER,KAAM,cACNlC,MAAO,cACPwC,QAAS,6BACTC,KAAM,SACNC,YAAa,qBAEf,CACER,KAAM,YACNlC,MAAO,YACPwC,QACE,yEACFC,KAAM,UAER,CACEP,KAAM,UACNlC,MAAO,UACPwC,QACE,0EACFC,KAAM,UAER,CACEP,KAAM,UACNlC,MAAO,UACPwC,QACE,mEACFC,KAAM,UAER,CACEP,KAAM,WACNlC,MAAO,WACPwC,QACE,yGACFC,KAAM,UAER,CACEP,KAAM,eACNlC,MAAO,eACPwC,QACE,kEACFC,KAAM,UAER,CACEP,KAAM,gBACNlC,MAAO,gBACPwC,QAAS,4DACTC,KAAM,SACNC,YAAa,wBACd5F,OACEwF,KAAYW,EAAAA,EAAAA,GAAAD,EAEhBzB,EAAW,CACV,CACEW,KAAM,UACNK,UAAU,EACVvC,MAAO,UACPwC,QAAS,+CACTC,KAAM,UACNC,YAAa,iBAEf,CACER,KAAM,MACNK,UAAU,EACVvC,MAAO,MACPwC,QAAS,wDACTC,KAAM,SACNC,YAAa,aAEf,CACER,KAAM,WACN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","sources":["screens/Console/Account/NotificationEndpointTypeSelectorHelpBox.tsx","screens/Console/EventDestinations/DestinationButton.tsx","screens/Console/EventDestinations/EventTypeSelector.tsx","screens/Console/EventDestinations/utils.ts"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\n\nimport { HelpBox, LambdaNotificationsIcon, Box } from \"mds\";\n\nconst NotificationEndpointTypeSelectorHelpBox = () => {\n return (\n }\n title={\"What are Event Destinations?\"}\n help={\n \n MinIO bucket notifications allow administrators to send notifications\n to supported external services on certain object or bucket events.\n MinIO supports bucket and object-level S3 events similar to the Amazon\n S3 Event Notifications.\n \n }\n />\n );\n};\n\nexport default NotificationEndpointTypeSelectorHelpBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport get from \"lodash/get\";\nimport { useNavigate } from \"react-router-dom\";\nimport styled from \"styled-components\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\n\ninterface IDestinationButton {\n destinationType: string;\n srcImage: string;\n title: string;\n}\n\nconst DestinationButtonBase = styled.button(({ theme }) => ({\n background: get(theme, \"boxBackground\", \"#FFF\"),\n border: `${get(theme, \"borderColor\", \"#E2E2E2\")} 1px solid`,\n borderRadius: 5,\n width: 250,\n height: 80,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"start\",\n marginBottom: 16,\n marginRight: 8,\n cursor: \"pointer\",\n overflow: \"hidden\",\n \"&:hover\": {\n backgroundColor: get(theme, \"buttons.regular.hover.background\", \"#ebebeb\"),\n },\n \"& .imageContainer\": {\n width: 80,\n \"& .logoButton\": {\n maxWidth: 46,\n maxHeight: 46,\n filter: \"drop-shadow(1px 1px 8px #fff)\",\n },\n },\n \"& .lambdaNotifTitle\": {\n color: get(theme, \"buttons.callAction.enabled.background\", \"#07193E\"),\n fontSize: 16,\n fontFamily: \"Inter,sans-serif\",\n paddingLeft: 18,\n fontWeight: \"bold\",\n },\n}));\n\nconst DestinationButton = ({\n destinationType,\n srcImage,\n title,\n}: IDestinationButton) => {\n const navigate = useNavigate();\n\n return (\n {\n navigate(`${IAM_PAGES.EVENT_DESTINATIONS_ADD}/${destinationType}`);\n }}\n >\n \n {title}\n \n {title}\n \n );\n};\n\nexport default DestinationButton;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { BackLink, Box, FormLayout, PageLayout } from \"mds\";\nimport { destinationList, DestType } from \"./utils\";\nimport { typesSelection } from \"../Common/FormComponents/common/styleLibrary\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport NotificationEndpointTypeSelectorHelpBox from \"../Account/NotificationEndpointTypeSelectorHelpBox\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport DestinationButton from \"./DestinationButton\";\n\nimport HelpMenu from \"../HelpMenu\";\nimport { useAppDispatch } from \"../../../store\";\nimport { setHelpName } from \"../../../systemSlice\";\n\nconst withLogos = destinationList.filter((elService) => elService.logo !== \"\");\nconst database = withLogos.filter(\n (elService) => elService.category === DestType.DB,\n);\nconst queue = withLogos.filter(\n (elService) => elService.category === DestType.Queue,\n);\nconst functions = withLogos.filter(\n (elService) => elService.category === DestType.Func,\n);\n\nconst EventTypeSelector = () => {\n const navigate = useNavigate();\n const dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(setHelpName(\"notification_type_selector\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return (\n \n \n navigate(IAM_PAGES.EVENT_DESTINATIONS)}\n />\n \n }\n actions={}\n />\n \n }>\n \n \n Queue\n \n \n {queue.map((item) => {\n return (\n \n );\n })}\n \n \n Database\n \n \n {database.map((item) => {\n return (\n \n );\n })}\n \n \n Functions\n \n \n {functions.map((item) => {\n return (\n \n );\n })}\n \n \n \n \n \n );\n};\n\nexport default EventTypeSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { NotificationEndpointItem } from \"api/consoleApi\";\nimport { IElementValue } from \"../Configurations/types\";\nimport { TransformedEndpointItem } from \"./types\";\n\nexport const notifyPostgres = \"notify_postgres\";\nexport const notifyMysql = \"notify_mysql\";\nexport const notifyKafka = \"notify_kafka\";\nexport const notifyAmqp = \"notify_amqp\";\nexport const notifyMqtt = \"notify_mqtt\";\nexport const notifyRedis = \"notify_redis\";\nexport const notifyNats = \"notify_nats\";\nexport const notifyElasticsearch = \"notify_elasticsearch\";\nexport const notifyWebhooks = \"notify_webhook\";\nexport const notifyNsq = \"notify_nsq\";\n\nexport const notificationTransform = (\n notificationElements: NotificationEndpointItem[],\n) => {\n return notificationElements.map((element) => {\n return {\n service_name: `${element.service}:${element.account_id}`,\n name: element.service,\n account_id: element.account_id,\n status: element.status,\n };\n }) as TransformedEndpointItem[];\n};\n\nexport class DestType {\n static DB: string = \"database\";\n static Queue: string = \"queue\";\n static Func: string = \"functions\";\n}\n\nexport const destinationList = [\n {\n actionTrigger: notifyPostgres,\n targetTitle: \"PostgreSQL\",\n logo: \"/postgres-logo.svg\",\n category: DestType.DB,\n },\n {\n actionTrigger: notifyKafka,\n targetTitle: \"Kafka\",\n logo: \"/kafka-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyAmqp,\n targetTitle: \"AMQP\",\n logo: \"/amqp-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyMqtt,\n targetTitle: \"MQTT\",\n logo: \"/mqtt-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyRedis,\n targetTitle: \"Redis\",\n logo: \"/redis-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyNats,\n targetTitle: \"NATS\",\n logo: \"/nats-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyMysql,\n targetTitle: \"Mysql\",\n logo: \"/mysql-logo.svg\",\n category: DestType.DB,\n },\n {\n actionTrigger: notifyElasticsearch,\n targetTitle: \"Elastic Search\",\n logo: \"/elasticsearch-logo.svg\",\n category: DestType.DB,\n },\n {\n actionTrigger: notifyWebhooks,\n targetTitle: \"Webhook\",\n logo: \"/webhooks-logo.svg\",\n category: DestType.Func,\n },\n {\n actionTrigger: notifyNsq,\n targetTitle: \"NSQ\",\n logo: \"/nsq-logo.svg\",\n category: DestType.Queue,\n },\n];\n\nconst commonFields = [\n {\n name: \"queue_dir\",\n label: \"Queue Directory\",\n required: false,\n\n tooltip: \"Staging directory for undelivered messages e.g. '/home/events'\",\n type: \"string\",\n placeholder: \"Enter Queue Directory\",\n },\n {\n name: \"queue_limit\",\n label: \"Queue Limit\",\n required: false,\n\n tooltip: \"Maximum limit for undelivered messages, defaults to '10000'\",\n type: \"number\",\n placeholder: \"Enter Queue Limit\",\n },\n {\n name: \"comment\",\n label: \"Comment\",\n required: false,\n type: \"comment\",\n placeholder: \"Enter custom notes if any\",\n },\n];\n\nexport const removeEmptyFields = (formFields: IElementValue[]) => {\n const nonEmptyFields = formFields.filter((field) => field.value !== \"\");\n\n return nonEmptyFields;\n};\n\nexport const notificationEndpointsFields: any = {\n [notifyKafka]: [\n {\n name: \"brokers\",\n label: \"Brokers\",\n required: true,\n\n tooltip: \"Comma separated list of Kafka broker addresses\",\n type: \"string\",\n placeholder: \"Enter Brokers\",\n },\n {\n name: \"topic\",\n label: \"Topic\",\n tooltip: \"Kafka topic used for bucket notifications\",\n type: \"string\",\n placeholder: \"Enter Topic\",\n },\n {\n name: \"sasl_username\",\n label: \"SASL Username\",\n tooltip: \"Username for SASL/PLAIN or SASL/SCRAM authentication\",\n type: \"string\",\n placeholder: \"Enter SASL Username\",\n },\n {\n name: \"sasl_password\",\n label: \"SASL Password\",\n tooltip: \"Password for SASL/PLAIN or SASL/SCRAM authentication\",\n type: \"string\",\n placeholder: \"Enter SASL Password\",\n },\n {\n name: \"sasl_mechanism\",\n label: \"SASL Mechanism\",\n tooltip: \"SASL authentication mechanism, default 'PLAIN'\",\n type: \"string\",\n },\n {\n name: \"tls_client_auth\",\n label: \"TLS Client Auth\",\n tooltip:\n \"Client Auth determines the Kafka server's policy for TLS client authorization\",\n type: \"string\",\n placeholder: \"Enter TLS Client Auth\",\n },\n {\n name: \"sasl\",\n label: \"SASL\",\n tooltip: \"Set to 'on' to enable SASL authentication\",\n type: \"on|off\",\n },\n {\n name: \"tls\",\n label: \"TLS\",\n tooltip: \"Set to 'on' to enable TLS\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n label: \"TLS skip verify\",\n tooltip:\n 'Trust server TLS without verification, defaults to \"on\" (verify)',\n type: \"on|off\",\n },\n {\n name: \"client_tls_cert\",\n label: \"client TLS cert\",\n tooltip: \"Path to client certificate for mTLS authorization\",\n type: \"path\",\n placeholder: \"Enter TLS Client Cert\",\n },\n {\n name: \"client_tls_key\",\n label: \"client TLS key\",\n tooltip: \"Path to client key for mTLS authorization\",\n type: \"path\",\n placeholder: \"Enter TLS Client Key\",\n },\n {\n name: \"version\",\n label: \"Version\",\n tooltip: \"Specify the version of the Kafka cluster e.g '2.2.0'\",\n type: \"string\",\n placeholder: \"Enter Kafka Version\",\n },\n ...commonFields,\n ],\n [notifyAmqp]: [\n {\n name: \"url\",\n required: true,\n label: \"URL\",\n tooltip:\n \"AMQP server endpoint e.g. `amqp://myuser:mypassword@localhost:5672`\",\n type: \"url\",\n },\n {\n name: \"exchange\",\n label: \"Exchange\",\n tooltip: \"Name of the AMQP exchange\",\n type: \"string\",\n placeholder: \"Enter Exchange\",\n },\n {\n name: \"exchange_type\",\n label: \"Exchange Type\",\n tooltip: \"AMQP exchange type\",\n type: \"string\",\n placeholder: \"Enter Exchange Type\",\n },\n {\n name: \"routing_key\",\n label: \"Routing Key\",\n tooltip: \"Routing key for publishing\",\n type: \"string\",\n placeholder: \"Enter Routing Key\",\n },\n {\n name: \"mandatory\",\n label: \"Mandatory\",\n tooltip:\n \"Quietly ignore undelivered messages when set to 'off', default is 'on'\",\n type: \"on|off\",\n },\n {\n name: \"durable\",\n label: \"Durable\",\n tooltip:\n \"Persist queue across broker restarts when set to 'on', default is 'off'\",\n type: \"on|off\",\n },\n {\n name: \"no_wait\",\n label: \"No Wait\",\n tooltip:\n \"Non-blocking message delivery when set to 'on', default is 'off'\",\n type: \"on|off\",\n },\n {\n name: \"internal\",\n label: \"Internal\",\n tooltip:\n \"Set to 'on' for exchange to be not used directly by publishers, but only when bound to other exchanges\",\n type: \"on|off\",\n },\n {\n name: \"auto_deleted\",\n label: \"Auto Deleted\",\n tooltip:\n \"Auto delete queue when set to 'on', when there are no consumers\",\n type: \"on|off\",\n },\n {\n name: \"delivery_mode\",\n label: \"Delivery Mode\",\n tooltip: \"Set to '1' for non-persistent or '2' for persistent queue\",\n type: \"number\",\n placeholder: \"Enter Delivery Mode\",\n },\n ...commonFields,\n ],\n [notifyRedis]: [\n {\n name: \"address\",\n required: true,\n label: \"Address\",\n tooltip: \"Redis server's address e.g. `localhost:6379`\",\n type: \"address\",\n placeholder: \"Enter Address\",\n },\n {\n name: \"key\",\n required: true,\n label: \"Key\",\n tooltip: \"Redis key to store/update events, key is auto-created\",\n type: \"string\",\n placeholder: \"Enter Key\",\n },\n {\n name: \"password\",\n label: \"Password\",\n tooltip: \"Redis server password\",\n type: \"string\",\n placeholder: \"Enter Password\",\n },\n ...commonFields,\n ],\n [notifyMqtt]: [\n {\n name: \"broker\",\n required: true,\n label: \"Broker\",\n tooltip: \"MQTT server endpoint e.g. `tcp://localhost:1883`\",\n type: \"uri\",\n placeholder: \"Enter Brokers\",\n },\n {\n name: \"topic\",\n required: true,\n label: \"Topic\",\n tooltip: \"Name of the MQTT topic to publish\",\n type: \"string\",\n placeholder: \"Enter Topic\",\n },\n {\n name: \"username\",\n label: \"Username\",\n tooltip: \"MQTT username\",\n type: \"string\",\n placeholder: \"Enter Username\",\n },\n {\n name: \"password\",\n label: \"Password\",\n tooltip: \"MQTT password\",\n type: \"string\",\n placeholder: \"Enter Password\",\n },\n {\n name: \"qos\",\n label: \"QOS\",\n tooltip: \"Set the quality of service priority, defaults to '0'\",\n type: \"number\",\n placeholder: \"Enter QOS\",\n },\n {\n name: \"keep_alive_interval\",\n label: \"Keep Alive Interval\",\n tooltip: \"Keep-alive interval for MQTT connections in s,m,h,d\",\n type: \"duration\",\n placeholder: \"Enter Keep Alive Interval\",\n },\n {\n name: \"reconnect_interval\",\n label: \"Reconnect Interval\",\n tooltip: \"Reconnect interval for MQTT connections in s,m,h,d\",\n type: \"duration\",\n placeholder: \"Enter Reconnect Interval\",\n },\n ...commonFields,\n ],\n [notifyNats]: [\n {\n name: \"address\",\n required: true,\n label: \"Address\",\n tooltip: \"NATS server address e.g. '0.0.0.0:4222'\",\n type: \"address\",\n placeholder: \"Enter Address\",\n },\n {\n name: \"subject\",\n required: true,\n label: \"Subject\",\n tooltip: \"NATS subscription subject\",\n type: \"string\",\n placeholder: \"Enter NATS Subject\",\n },\n {\n name: \"username\",\n label: \"Username\",\n tooltip: \"NATS username\",\n type: \"string\",\n placeholder: \"Enter NATS Username\",\n },\n {\n name: \"password\",\n label: \"Password\",\n tooltip: \"NATS password\",\n type: \"string\",\n placeholder: \"Enter NATS password\",\n },\n {\n name: \"token\",\n label: \"Token\",\n tooltip: \"NATS token\",\n type: \"string\",\n placeholder: \"Enter NATS token\",\n },\n {\n name: \"tls\",\n label: \"TLS\",\n tooltip: \"Set to 'on' to enable TLS\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n label: \"TLS Skip Verify\",\n tooltip:\n 'Trust server TLS without verification, defaults to \"on\" (verify)',\n type: \"on|off\",\n },\n {\n name: \"ping_interval\",\n label: \"Ping Interval\",\n tooltip: \"Client ping commands interval in s,m,h,d. Disabled by default\",\n type: \"duration\",\n placeholder: \"Enter Ping Interval\",\n },\n {\n name: \"streaming\",\n label: \"Streaming\",\n tooltip: \"Set to 'on' to use streaming NATS server\",\n type: \"on|off\",\n },\n {\n name: \"streaming_async\",\n label: \"Streaming async\",\n tooltip: \"Set to 'on' to enable asynchronous publish\",\n type: \"on|off\",\n },\n {\n name: \"streaming_max_pub_acks_in_flight\",\n label: \"Streaming max publish ACKS in flight\",\n tooltip: \"Number of messages to publish without waiting for ACKs\",\n type: \"number\",\n placeholder: \"Enter Streaming in flight value\",\n },\n {\n name: \"streaming_cluster_id\",\n label: \"Streaming Cluster ID\",\n tooltip: \"Unique ID for NATS streaming cluster\",\n type: \"string\",\n placeholder: \"Enter Streaming Cluster ID\",\n },\n {\n name: \"cert_authority\",\n label: \"Cert Authority\",\n tooltip: \"Path to certificate chain of the target NATS server\",\n type: \"string\",\n placeholder: \"Enter Cert Authority\",\n },\n {\n name: \"client_cert\",\n label: \"Client Cert\",\n tooltip: \"Client cert for NATS mTLS auth\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_key\",\n label: \"Client Key\",\n tooltip: \"Client cert key for NATS mTLS authorization\",\n type: \"string\",\n placeholder: \"Enter Client Key\",\n },\n ...commonFields,\n ],\n [notifyElasticsearch]: [\n {\n name: \"url\",\n required: true,\n label: \"URL\",\n tooltip:\n \"Elasticsearch server's address, with optional authentication info\",\n type: \"url\",\n placeholder: \"Enter URL\",\n },\n {\n name: \"index\",\n required: true,\n label: \"Index\",\n tooltip:\n \"Elasticsearch index to store/update events, index is auto-created\",\n type: \"string\",\n placeholder: \"Enter Index\",\n },\n {\n name: \"format\",\n required: true,\n label: \"Format\",\n tooltip:\n \"'namespace' reflects current bucket/object list and 'access' reflects a journal of object operations, defaults to 'namespace'\",\n type: \"enum\",\n placeholder: \"Enter Format\",\n },\n ...commonFields,\n ],\n [notifyWebhooks]: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n tooltip:\n \"Webhook server endpoint e.g. http://localhost:8080/minio/events\",\n type: \"url\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n label: \"Auth Token\",\n tooltip: \"Opaque string or JWT authorization token\",\n type: \"string\",\n placeholder: \"Enter auth_token\",\n },\n ...commonFields,\n ],\n [notifyNsq]: [\n {\n name: \"nsqd_address\",\n required: true,\n label: \"NSQD Address\",\n tooltip: \"NSQ server address e.g. '127.0.0.1:4150'\",\n type: \"address\",\n placeholder: \"Enter nsqd_address\",\n },\n {\n name: \"topic\",\n required: true,\n label: \"Topic\",\n tooltip: \"NSQ topic\",\n type: \"string\",\n placeholder: \"Enter Topic\",\n },\n {\n name: \"tls\",\n label: \"TLS\",\n tooltip: \"Set to 'on' to enable TLS\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n label: \"TLS Skip Verify\",\n tooltip:\n 'Trust server TLS without verification, defaults to \"on\" (verify)',\n type: \"on|off\",\n },\n ...commonFields,\n ],\n};\n\nconst serviceToConfigMap: Record = {\n webhook: \"notify_webhook\",\n amqp: \"notify_amqp\",\n kafka: \"notify_kafka\",\n mqtt: \"notify_mqtt\",\n nats: \"notify_nats\",\n nsq: \"notify_nsq\",\n mysql: \"notify_mysql\",\n postgresql: \"notify_postgres\", //looks different in server response(postgresql as opposed to postgres) from restapi/admin_notification_endpoints.go\n elasticsearch: \"notify_elasticsearch\",\n redis: \"notify_redis\",\n};\n\nexport const getNotificationConfigKey = (serviceName: string) => {\n return serviceToConfigMap[serviceName];\n};\n"],"names":["_jsx","HelpBox","iconComponent","LambdaNotificationsIcon","title","help","Box","sx","paddingTop","children","DestinationButtonBase","styled","button","_ref","theme","background","get","border","concat","borderRadius","width","height","display","alignItems","justifyContent","marginBottom","marginRight","cursor","overflow","backgroundColor","maxWidth","maxHeight","filter","color","fontSize","fontFamily","paddingLeft","fontWeight","_ref2","destinationType","srcImage","navigate","useNavigate","_jsxs","onClick","IAM_PAGES","EVENT_DESTINATIONS_ADD","className","src","alt","withLogos","destinationList","elService","logo","database","category","DestType","DB","queue","Queue","functions","Func","dispatch","useAppDispatch","useEffect","setHelpName","Fragment","PageHeaderWrapper","label","BackLink","EVENT_DESTINATIONS","actions","HelpMenu","PageLayout","FormLayout","helpBox","NotificationEndpointTypeSelectorHelpBox","paddingBottom","_objectSpread","typesSelection","iconContainer","map","item","DestinationButton","actionTrigger","targetTitle","notifyPostgres","notifyMysql","notifyKafka","notifyAmqp","notifyMqtt","notifyRedis","notifyNats","notifyElasticsearch","notifyWebhooks","notifyNsq","notificationTransform","notificationElements","element","service_name","service","account_id","name","status","_createClass","_classCallCheck","commonFields","required","tooltip","type","placeholder","removeEmptyFields","formFields","field","value","notificationEndpointsFields","_notificationEndpoint","_defineProperty","serviceToConfigMap","webhook","amqp","kafka","mqtt","nats","nsq","mysql","postgresql","elasticsearch","redis","getNotificationConfigKey","serviceName"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/8060.a5309a8c.chunk.js","mappings":"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ER,KAAM,OACNlC,MAAO,OACPwC,QAAS,4CACTC,KAAM,UAER,CACEP,KAAM,MACNlC,MAAO,MACPwC,QAAS,4BACTC,KAAM,UAER,CACEP,KAAM,kBACNlC,MAAO,kBACPwC,QACE,mEACFC,KAAM,UAER,CACEP,KAAM,kBACNlC,MAAO,kBACPwC,QAAS,oDACTC,KAAM,OACNC,YAAa,yBAEf,CACER,KAAM,iBACNlC,MAAO,iBACPwC,QAAS,4CACTC,KAAM,OACNC,YAAa,wBAEf,CACER,KAAM,UACNlC,MAAO,UACPwC,QAAS,uDACTC,KAAM,SACNC,YAAa,wBACd5F,OACEwF,KAAYW,EAAAA,EAAAA,GAAAD,EAEhB3B,EAAU,CACT,CACEa,KAAM,MACNK,UAAU,EACVvC,MAAO,MACPwC,QACE,sEACFC,KAAM,OAER,CACEP,KAAM,WACNlC,MAAO,WACPwC,QAAS,4BACTC,KAAM,SACNC,YAAa,kBAEf,CACER,KAAM,gBACNlC,MAAO,gBACPwC,QAAS,qBACTC,KAAM,SACNC,YAAa,uBAEf,CACER,KAAM,cACNlC,MAAO,cACPwC,QAAS,6BACTC,KAAM,SACNC,YAAa,qBAEf,CACER,KAAM,YACNlC,MAAO,YACPwC,QACE,yEACFC,KAAM,UAER,CACEP,KAAM,UACNlC,MAAO,UACPwC,QACE,0EACFC,KAAM,UAER,CACEP,KAAM,UACNlC,MAAO,UACPwC,QACE,mEACFC,KAAM,UAER,CACEP,KAAM,WACNlC,MAAO,WACPwC,QACE,yGACFC,KAAM,UAER,CACEP,KAAM,eACNlC,MAAO,eACPwC,QACE,kEACFC,KAAM,UAER,CACEP,KAAM,gBACNlC,MAAO,gBACPwC,QAAS,4DACTC,KAAM,SACNC,YAAa,wBACd5F,OACEwF,KAAYW,EAAAA,EAAAA,GAAAD,EAEhBzB,EAAW,CACV,CACEW,KAAM,UACNK,UAAU,EACVvC,MAAO,UACPwC,QAAS,+CACTC,KAAM,UACNC,YAAa,iBAEf,CACER,KAAM,MACNK,UAAU,EACVvC,MAAO,MACPwC,QAAS,wDACTC,KAAM,SACNC,YAAa,aAEf,CACER,KAAM,WACN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","sources":["screens/Console/Account/NotificationEndpointTypeSelectorHelpBox.tsx","screens/Console/EventDestinations/DestinationButton.tsx","screens/Console/EventDestinations/EventTypeSelector.tsx","screens/Console/EventDestinations/utils.ts"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\n\nimport { HelpBox, LambdaNotificationsIcon, Box } from \"mds\";\n\nconst NotificationEndpointTypeSelectorHelpBox = () => {\n return (\n }\n title={\"What are Event Destinations?\"}\n help={\n \n MinIO bucket notifications allow administrators to send notifications\n to supported external services on certain object or bucket events.\n MinIO supports bucket and object-level S3 events similar to the Amazon\n S3 Event Notifications.\n \n }\n />\n );\n};\n\nexport default NotificationEndpointTypeSelectorHelpBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport get from \"lodash/get\";\nimport { useNavigate } from \"react-router-dom\";\nimport styled from \"styled-components\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\n\ninterface IDestinationButton {\n destinationType: string;\n srcImage: string;\n title: string;\n}\n\nconst DestinationButtonBase = styled.button(({ theme }) => ({\n background: get(theme, \"boxBackground\", \"#FFF\"),\n border: `${get(theme, \"borderColor\", \"#E2E2E2\")} 1px solid`,\n borderRadius: 5,\n width: 250,\n height: 80,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"start\",\n marginBottom: 16,\n marginRight: 8,\n cursor: \"pointer\",\n overflow: \"hidden\",\n \"&:hover\": {\n backgroundColor: get(theme, \"buttons.regular.hover.background\", \"#ebebeb\"),\n },\n \"& .imageContainer\": {\n width: 80,\n \"& .logoButton\": {\n maxWidth: 46,\n maxHeight: 46,\n filter: \"drop-shadow(1px 1px 8px #fff)\",\n },\n },\n \"& .lambdaNotifTitle\": {\n color: get(theme, \"buttons.callAction.enabled.background\", \"#07193E\"),\n fontSize: 16,\n fontFamily: \"Inter,sans-serif\",\n paddingLeft: 18,\n fontWeight: \"bold\",\n },\n}));\n\nconst DestinationButton = ({\n destinationType,\n srcImage,\n title,\n}: IDestinationButton) => {\n const navigate = useNavigate();\n\n return (\n {\n navigate(`${IAM_PAGES.EVENT_DESTINATIONS_ADD}/${destinationType}`);\n }}\n >\n \n {title}\n \n {title}\n \n );\n};\n\nexport default DestinationButton;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { BackLink, Box, FormLayout, PageLayout } from \"mds\";\nimport { destinationList, DestType } from \"./utils\";\nimport { typesSelection } from \"../Common/FormComponents/common/styleLibrary\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport NotificationEndpointTypeSelectorHelpBox from \"../Account/NotificationEndpointTypeSelectorHelpBox\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport DestinationButton from \"./DestinationButton\";\n\nimport HelpMenu from \"../HelpMenu\";\nimport { useAppDispatch } from \"../../../store\";\nimport { setHelpName } from \"../../../systemSlice\";\n\nconst withLogos = destinationList.filter((elService) => elService.logo !== \"\");\nconst database = withLogos.filter(\n (elService) => elService.category === DestType.DB,\n);\nconst queue = withLogos.filter(\n (elService) => elService.category === DestType.Queue,\n);\nconst functions = withLogos.filter(\n (elService) => elService.category === DestType.Func,\n);\n\nconst EventTypeSelector = () => {\n const navigate = useNavigate();\n const dispatch = useAppDispatch();\n useEffect(() => {\n dispatch(setHelpName(\"notification_type_selector\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return (\n \n \n navigate(IAM_PAGES.EVENT_DESTINATIONS)}\n />\n \n }\n actions={}\n />\n \n }>\n \n \n Queue\n \n \n {queue.map((item) => {\n return (\n \n );\n })}\n \n \n Database\n \n \n {database.map((item) => {\n return (\n \n );\n })}\n \n \n Functions\n \n \n {functions.map((item) => {\n return (\n \n );\n })}\n \n \n \n \n \n );\n};\n\nexport default EventTypeSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { NotificationEndpointItem } from \"api/consoleApi\";\nimport { IElementValue } from \"../Configurations/types\";\nimport { TransformedEndpointItem } from \"./types\";\n\nexport const notifyPostgres = \"notify_postgres\";\nexport const notifyMysql = \"notify_mysql\";\nexport const notifyKafka = \"notify_kafka\";\nexport const notifyAmqp = \"notify_amqp\";\nexport const notifyMqtt = \"notify_mqtt\";\nexport const notifyRedis = \"notify_redis\";\nexport const notifyNats = \"notify_nats\";\nexport const notifyElasticsearch = \"notify_elasticsearch\";\nexport const notifyWebhooks = \"notify_webhook\";\nexport const notifyNsq = \"notify_nsq\";\n\nexport const notificationTransform = (\n notificationElements: NotificationEndpointItem[],\n) => {\n return notificationElements.map((element) => {\n return {\n service_name: `${element.service}:${element.account_id}`,\n name: element.service,\n account_id: element.account_id,\n status: element.status,\n };\n }) as TransformedEndpointItem[];\n};\n\nexport class DestType {\n static DB: string = \"database\";\n static Queue: string = \"queue\";\n static Func: string = \"functions\";\n}\n\nexport const destinationList = [\n {\n actionTrigger: notifyPostgres,\n targetTitle: \"PostgreSQL\",\n logo: \"/postgres-logo.svg\",\n category: DestType.DB,\n },\n {\n actionTrigger: notifyKafka,\n targetTitle: \"Kafka\",\n logo: \"/kafka-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyAmqp,\n targetTitle: \"AMQP\",\n logo: \"/amqp-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyMqtt,\n targetTitle: \"MQTT\",\n logo: \"/mqtt-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyRedis,\n targetTitle: \"Redis\",\n logo: \"/redis-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyNats,\n targetTitle: \"NATS\",\n logo: \"/nats-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyMysql,\n targetTitle: \"Mysql\",\n logo: \"/mysql-logo.svg\",\n category: DestType.DB,\n },\n {\n actionTrigger: notifyElasticsearch,\n targetTitle: \"Elastic Search\",\n logo: \"/elasticsearch-logo.svg\",\n category: DestType.DB,\n },\n {\n actionTrigger: notifyWebhooks,\n targetTitle: \"Webhook\",\n logo: \"/webhooks-logo.svg\",\n category: DestType.Func,\n },\n {\n actionTrigger: notifyNsq,\n targetTitle: \"NSQ\",\n logo: \"/nsq-logo.svg\",\n category: DestType.Queue,\n },\n];\n\nconst commonFields = [\n {\n name: \"queue_dir\",\n label: \"Queue Directory\",\n required: false,\n\n tooltip: \"Staging directory for undelivered messages e.g. '/home/events'\",\n type: \"string\",\n placeholder: \"Enter Queue Directory\",\n },\n {\n name: \"queue_limit\",\n label: \"Queue Limit\",\n required: false,\n\n tooltip: \"Maximum limit for undelivered messages, defaults to '10000'\",\n type: \"number\",\n placeholder: \"Enter Queue Limit\",\n },\n {\n name: \"comment\",\n label: \"Comment\",\n required: false,\n type: \"comment\",\n placeholder: \"Enter custom notes if any\",\n },\n];\n\nexport const removeEmptyFields = (formFields: IElementValue[]) => {\n const nonEmptyFields = formFields.filter((field) => field.value !== \"\");\n\n return nonEmptyFields;\n};\n\nexport const notificationEndpointsFields: any = {\n [notifyKafka]: [\n {\n name: \"brokers\",\n label: \"Brokers\",\n required: true,\n\n tooltip: \"Comma separated list of Kafka broker addresses\",\n type: \"string\",\n placeholder: \"Enter Brokers\",\n },\n {\n name: \"topic\",\n label: \"Topic\",\n tooltip: \"Kafka topic used for bucket notifications\",\n type: \"string\",\n placeholder: \"Enter Topic\",\n },\n {\n name: \"sasl_username\",\n label: \"SASL Username\",\n tooltip: \"Username for SASL/PLAIN or SASL/SCRAM authentication\",\n type: \"string\",\n placeholder: \"Enter SASL Username\",\n },\n {\n name: \"sasl_password\",\n label: \"SASL Password\",\n tooltip: \"Password for SASL/PLAIN or SASL/SCRAM authentication\",\n type: \"string\",\n placeholder: \"Enter SASL Password\",\n },\n {\n name: \"sasl_mechanism\",\n label: \"SASL Mechanism\",\n tooltip: \"SASL authentication mechanism, default 'PLAIN'\",\n type: \"string\",\n },\n {\n name: \"tls_client_auth\",\n label: \"TLS Client Auth\",\n tooltip:\n \"Client Auth determines the Kafka server's policy for TLS client authorization\",\n type: \"string\",\n placeholder: \"Enter TLS Client Auth\",\n },\n {\n name: \"sasl\",\n label: \"SASL\",\n tooltip: \"Set to 'on' to enable SASL authentication\",\n type: \"on|off\",\n },\n {\n name: \"tls\",\n label: \"TLS\",\n tooltip: \"Set to 'on' to enable TLS\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n label: \"TLS skip verify\",\n tooltip:\n 'Trust server TLS without verification, defaults to \"on\" (verify)',\n type: \"on|off\",\n },\n {\n name: \"client_tls_cert\",\n label: \"client TLS cert\",\n tooltip: \"Path to client certificate for mTLS authorization\",\n type: \"path\",\n placeholder: \"Enter TLS Client Cert\",\n },\n {\n name: \"client_tls_key\",\n label: \"client TLS key\",\n tooltip: \"Path to client key for mTLS authorization\",\n type: \"path\",\n placeholder: \"Enter TLS Client Key\",\n },\n {\n name: \"version\",\n label: \"Version\",\n tooltip: \"Specify the version of the Kafka cluster e.g '2.2.0'\",\n type: \"string\",\n placeholder: \"Enter Kafka Version\",\n },\n ...commonFields,\n ],\n [notifyAmqp]: [\n {\n name: \"url\",\n required: true,\n label: \"URL\",\n tooltip:\n \"AMQP server endpoint e.g. `amqp://myuser:mypassword@localhost:5672`\",\n type: \"url\",\n },\n {\n name: \"exchange\",\n label: \"Exchange\",\n tooltip: \"Name of the AMQP exchange\",\n type: \"string\",\n placeholder: \"Enter Exchange\",\n },\n {\n name: \"exchange_type\",\n label: \"Exchange Type\",\n tooltip: \"AMQP exchange type\",\n type: \"string\",\n placeholder: \"Enter Exchange Type\",\n },\n {\n name: \"routing_key\",\n label: \"Routing Key\",\n tooltip: \"Routing key for publishing\",\n type: \"string\",\n placeholder: \"Enter Routing Key\",\n },\n {\n name: \"mandatory\",\n label: \"Mandatory\",\n tooltip:\n \"Quietly ignore undelivered messages when set to 'off', default is 'on'\",\n type: \"on|off\",\n },\n {\n name: \"durable\",\n label: \"Durable\",\n tooltip:\n \"Persist queue across broker restarts when set to 'on', default is 'off'\",\n type: \"on|off\",\n },\n {\n name: \"no_wait\",\n label: \"No Wait\",\n tooltip:\n \"Non-blocking message delivery when set to 'on', default is 'off'\",\n type: \"on|off\",\n },\n {\n name: \"internal\",\n label: \"Internal\",\n tooltip:\n \"Set to 'on' for exchange to be not used directly by publishers, but only when bound to other exchanges\",\n type: \"on|off\",\n },\n {\n name: \"auto_deleted\",\n label: \"Auto Deleted\",\n tooltip:\n \"Auto delete queue when set to 'on', when there are no consumers\",\n type: \"on|off\",\n },\n {\n name: \"delivery_mode\",\n label: \"Delivery Mode\",\n tooltip: \"Set to '1' for non-persistent or '2' for persistent queue\",\n type: \"number\",\n placeholder: \"Enter Delivery Mode\",\n },\n ...commonFields,\n ],\n [notifyRedis]: [\n {\n name: \"address\",\n required: true,\n label: \"Address\",\n tooltip: \"Redis server's address e.g. `localhost:6379`\",\n type: \"address\",\n placeholder: \"Enter Address\",\n },\n {\n name: \"key\",\n required: true,\n label: \"Key\",\n tooltip: \"Redis key to store/update events, key is auto-created\",\n type: \"string\",\n placeholder: \"Enter Key\",\n },\n {\n name: \"password\",\n label: \"Password\",\n tooltip: \"Redis server password\",\n type: \"string\",\n placeholder: \"Enter Password\",\n },\n ...commonFields,\n ],\n [notifyMqtt]: [\n {\n name: \"broker\",\n required: true,\n label: \"Broker\",\n tooltip: \"MQTT server endpoint e.g. `tcp://localhost:1883`\",\n type: \"uri\",\n placeholder: \"Enter Brokers\",\n },\n {\n name: \"topic\",\n required: true,\n label: \"Topic\",\n tooltip: \"Name of the MQTT topic to publish\",\n type: \"string\",\n placeholder: \"Enter Topic\",\n },\n {\n name: \"username\",\n label: \"Username\",\n tooltip: \"MQTT username\",\n type: \"string\",\n placeholder: \"Enter Username\",\n },\n {\n name: \"password\",\n label: \"Password\",\n tooltip: \"MQTT password\",\n type: \"string\",\n placeholder: \"Enter Password\",\n },\n {\n name: \"qos\",\n label: \"QOS\",\n tooltip: \"Set the quality of service priority, defaults to '0'\",\n type: \"number\",\n placeholder: \"Enter QOS\",\n },\n {\n name: \"keep_alive_interval\",\n label: \"Keep Alive Interval\",\n tooltip: \"Keep-alive interval for MQTT connections in s,m,h,d\",\n type: \"duration\",\n placeholder: \"Enter Keep Alive Interval\",\n },\n {\n name: \"reconnect_interval\",\n label: \"Reconnect Interval\",\n tooltip: \"Reconnect interval for MQTT connections in s,m,h,d\",\n type: \"duration\",\n placeholder: \"Enter Reconnect Interval\",\n },\n ...commonFields,\n ],\n [notifyNats]: [\n {\n name: \"address\",\n required: true,\n label: \"Address\",\n tooltip: \"NATS server address e.g. '0.0.0.0:4222'\",\n type: \"address\",\n placeholder: \"Enter Address\",\n },\n {\n name: \"subject\",\n required: true,\n label: \"Subject\",\n tooltip: \"NATS subscription subject\",\n type: \"string\",\n placeholder: \"Enter NATS Subject\",\n },\n {\n name: \"username\",\n label: \"Username\",\n tooltip: \"NATS username\",\n type: \"string\",\n placeholder: \"Enter NATS Username\",\n },\n {\n name: \"password\",\n label: \"Password\",\n tooltip: \"NATS password\",\n type: \"string\",\n placeholder: \"Enter NATS password\",\n },\n {\n name: \"token\",\n label: \"Token\",\n tooltip: \"NATS token\",\n type: \"string\",\n placeholder: \"Enter NATS token\",\n },\n {\n name: \"tls\",\n label: \"TLS\",\n tooltip: \"Set to 'on' to enable TLS\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n label: \"TLS Skip Verify\",\n tooltip:\n 'Trust server TLS without verification, defaults to \"on\" (verify)',\n type: \"on|off\",\n },\n {\n name: \"ping_interval\",\n label: \"Ping Interval\",\n tooltip: \"Client ping commands interval in s,m,h,d. Disabled by default\",\n type: \"duration\",\n placeholder: \"Enter Ping Interval\",\n },\n {\n name: \"streaming\",\n label: \"Streaming\",\n tooltip: \"Set to 'on' to use streaming NATS server\",\n type: \"on|off\",\n },\n {\n name: \"streaming_async\",\n label: \"Streaming async\",\n tooltip: \"Set to 'on' to enable asynchronous publish\",\n type: \"on|off\",\n },\n {\n name: \"streaming_max_pub_acks_in_flight\",\n label: \"Streaming max publish ACKS in flight\",\n tooltip: \"Number of messages to publish without waiting for ACKs\",\n type: \"number\",\n placeholder: \"Enter Streaming in flight value\",\n },\n {\n name: \"streaming_cluster_id\",\n label: \"Streaming Cluster ID\",\n tooltip: \"Unique ID for NATS streaming cluster\",\n type: \"string\",\n placeholder: \"Enter Streaming Cluster ID\",\n },\n {\n name: \"cert_authority\",\n label: \"Cert Authority\",\n tooltip: \"Path to certificate chain of the target NATS server\",\n type: \"string\",\n placeholder: \"Enter Cert Authority\",\n },\n {\n name: \"client_cert\",\n label: \"Client Cert\",\n tooltip: \"Client cert for NATS mTLS auth\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_key\",\n label: \"Client Key\",\n tooltip: \"Client cert key for NATS mTLS authorization\",\n type: \"string\",\n placeholder: \"Enter Client Key\",\n },\n ...commonFields,\n ],\n [notifyElasticsearch]: [\n {\n name: \"url\",\n required: true,\n label: \"URL\",\n tooltip:\n \"Elasticsearch server's address, with optional authentication info\",\n type: \"url\",\n placeholder: \"Enter URL\",\n },\n {\n name: \"index\",\n required: true,\n label: \"Index\",\n tooltip:\n \"Elasticsearch index to store/update events, index is auto-created\",\n type: \"string\",\n placeholder: \"Enter Index\",\n },\n {\n name: \"format\",\n required: true,\n label: \"Format\",\n tooltip:\n \"'namespace' reflects current bucket/object list and 'access' reflects a journal of object operations, defaults to 'namespace'\",\n type: \"enum\",\n placeholder: \"Enter Format\",\n },\n ...commonFields,\n ],\n [notifyWebhooks]: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n tooltip:\n \"Webhook server endpoint e.g. http://localhost:8080/minio/events\",\n type: \"url\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n label: \"Auth Token\",\n tooltip: \"Opaque string or JWT authorization token\",\n type: \"string\",\n placeholder: \"Enter auth_token\",\n },\n ...commonFields,\n ],\n [notifyNsq]: [\n {\n name: \"nsqd_address\",\n required: true,\n label: \"NSQD Address\",\n tooltip: \"NSQ server address e.g. '127.0.0.1:4150'\",\n type: \"address\",\n placeholder: \"Enter nsqd_address\",\n },\n {\n name: \"topic\",\n required: true,\n label: \"Topic\",\n tooltip: \"NSQ topic\",\n type: \"string\",\n placeholder: \"Enter Topic\",\n },\n {\n name: \"tls\",\n label: \"TLS\",\n tooltip: \"Set to 'on' to enable TLS\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n label: \"TLS Skip Verify\",\n tooltip:\n 'Trust server TLS without verification, defaults to \"on\" (verify)',\n type: \"on|off\",\n },\n ...commonFields,\n ],\n};\n\nconst serviceToConfigMap: Record = {\n webhook: \"notify_webhook\",\n amqp: \"notify_amqp\",\n kafka: \"notify_kafka\",\n mqtt: \"notify_mqtt\",\n nats: \"notify_nats\",\n nsq: \"notify_nsq\",\n mysql: \"notify_mysql\",\n postgresql: \"notify_postgres\", //looks different in server response(postgresql as opposed to postgres) from restapi/admin_notification_endpoints.go\n elasticsearch: \"notify_elasticsearch\",\n redis: \"notify_redis\",\n};\n\nexport const getNotificationConfigKey = (serviceName: string) => {\n return serviceToConfigMap[serviceName];\n};\n"],"names":["_jsx","HelpBox","iconComponent","LambdaNotificationsIcon","title","help","Box","sx","paddingTop","children","DestinationButtonBase","styled","button","_ref","theme","background","get","border","concat","borderRadius","width","height","display","alignItems","justifyContent","marginBottom","marginRight","cursor","overflow","backgroundColor","maxWidth","maxHeight","filter","color","fontSize","fontFamily","paddingLeft","fontWeight","_ref2","destinationType","srcImage","navigate","useNavigate","_jsxs","onClick","IAM_PAGES","EVENT_DESTINATIONS_ADD","className","src","alt","withLogos","destinationList","elService","logo","database","category","DestType","DB","queue","Queue","functions","Func","dispatch","useAppDispatch","useEffect","setHelpName","Fragment","PageHeaderWrapper","label","BackLink","EVENT_DESTINATIONS","actions","HelpMenu","PageLayout","FormLayout","helpBox","NotificationEndpointTypeSelectorHelpBox","paddingBottom","_objectSpread","typesSelection","iconContainer","map","item","DestinationButton","actionTrigger","targetTitle","notifyPostgres","notifyMysql","notifyKafka","notifyAmqp","notifyMqtt","notifyRedis","notifyNats","notifyElasticsearch","notifyWebhooks","notifyNsq","notificationTransform","notificationElements","element","service_name","service","account_id","name","status","_createClass","_classCallCheck","commonFields","required","tooltip","type","placeholder","removeEmptyFields","formFields","field","value","notificationEndpointsFields","_notificationEndpoint","_defineProperty","serviceToConfigMap","webhook","amqp","kafka","mqtt","nats","nsq","mysql","postgresql","elasticsearch","redis","getNotificationConfigKey","serviceName"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/808.a41d96e0.chunk.js b/portal-ui/build/static/js/808.6b19d840.chunk.js similarity index 99% rename from portal-ui/build/static/js/808.a41d96e0.chunk.js rename to portal-ui/build/static/js/808.6b19d840.chunk.js index 474837f7d1..ac7aa43c87 100644 --- a/portal-ui/build/static/js/808.a41d96e0.chunk.js +++ b/portal-ui/build/static/js/808.6b19d840.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[808],{75578:function(e,t,o){var n=o(1413),r=o(72791),a=o(80184);t.Z=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(o){return(0,a.jsx)(r.Suspense,{fallback:t,children:(0,a.jsx)(e,(0,n.Z)({},o))})}}},50808:function(e,t,o){o.r(t),o.d(t,{default:function(){return j}});var n=o(29439),r=o(1413),a=o(72791),i=o(26181),l=o.n(i),s=o(11135),c=o(25787),u=o(29945),p=o(61757),d=o(23814),f=o(75578),g=o(56087),m=o(87995),h=o(57689),y=o(81551),b=o(47974),S=o(17691),v=o(80184),T=S.ZP.div((function(e){var t=e.theme;return{background:l()(t,"boxBackground","#fff"),border:"".concat(l()(t,"borderColor","#E5E5E5")," 1px solid"),borderRadius:5,height:80,display:"flex",alignItems:"center",justifyContent:"start",marginBottom:16,cursor:"pointer",padding:0,overflow:"hidden","& .logoButton":{height:"80px"},"& .imageContainer":{backgroundColor:l()(t,"bgColor","#fff"),display:"flex",alignItems:"center",justifyContent:"center",width:80,height:80,"& img":{maxWidth:46,maxHeight:46,filter:"drop-shadow(1px 1px 8px #fff)"}},"& .titleBox":{color:l()(t,"fontColor","#000"),fontSize:16,fontFamily:"Inter,sans-serif",paddingLeft:18}}})),_=function(e){var t=e.logoSrc,o=e.title;return(0,v.jsxs)(T,{children:[(0,v.jsx)(u.xuv,{className:"imageContainer",children:(0,v.jsx)("img",{src:t,className:"logoButton",alt:o})}),(0,v.jsx)(u.xuv,{className:"titleBox",children:(0,v.jsxs)("b",{children:[o," Event Destination"]})})]})},k=o(53669),x=o(99670),E=o(31776),A=o(82342),q=(0,f.Z)(a.lazy((function(){return Promise.all([o.e(911),o.e(4549),o.e(817),o.e(9059)]).then(o.bind(o,9059))}))),L=(0,f.Z)(a.lazy((function(){return o.e(4770).then(o.bind(o,94770))}))),C=(0,f.Z)(a.lazy((function(){return Promise.all([o.e(911),o.e(4549),o.e(817),o.e(6247)]).then(o.bind(o,56247))}))),j=(0,c.Z)((function(e){return(0,s.Z)((0,r.Z)((0,r.Z)({},d.oO),d.Je))}))((function(e){var t=e.saveAndRefresh,o=e.classes,r=(0,y.TL)(),i=(0,h.s0)(),s=(0,h.UO)(),c=(0,a.useState)([]),d=(0,n.Z)(c,2),f=d[0],S=d[1],T=(0,a.useState)(""),j=(0,n.Z)(T,2),w=j[0],N=j[1],Q=(0,a.useState)(!1),Z=(0,n.Z)(Q,2),D=Z[0],I=Z[1],P=s.service||"";(0,a.useEffect)((function(){if(D){var e={key_values:(0,p.DD)(f)};E.h.configs.setConfig("".concat(P,":").concat(w),e).then((function(){I(!1),r((0,m.cN)(!0)),r((0,k.iP)(!0)),i(g.gA.EVENT_DESTINATIONS)})).catch((function(e){I(!1),r((0,m.Ih)((0,A.g)(e.error)))}))}}),[D,P,f,t,r,i,w]);var M,K=(0,a.useCallback)((function(e){S(e)}),[S]);switch(P){case p.ee:M=(0,v.jsx)(C,{onChange:K});break;case p.dM:M=(0,v.jsx)(q,{onChange:K});break;default:var R=l()(p.oj,P,[]);M=(0,v.jsx)(L,{fields:R,onChange:K})}var B=p.BI.find((function(e){return e.actionTrigger===P}));return(0,a.useEffect)((function(){r((0,m.Sc)("add_notification_endpoint"))}),[]),(0,v.jsxs)(a.Fragment,{children:[(0,v.jsx)(b.Z,{label:(0,v.jsx)(a.Fragment,{children:(0,v.jsx)(u.hbI,{label:"Event Destinations",onClick:function(){return i(g.gA.EVENT_DESTINATIONS_ADD)}})}),actions:(0,v.jsx)(x.Z,{})}),(0,v.jsx)(u.Xgh,{children:(0,v.jsx)("form",{noValidate:!0,onSubmit:function(e){e.preventDefault(),I(!0)},children:""!==P&&(0,v.jsxs)(a.Fragment,{children:[(0,v.jsx)(u.rjZ,{item:!0,xs:12,children:B&&(0,v.jsx)(_,{logoSrc:B.logo,title:B?B.targetTitle:""})}),(0,v.jsxs)(u.ltY,{children:[(0,v.jsx)(u.rjZ,{item:!0,xs:12,className:o.formFieldRow,sx:{marginBottom:"12px"},children:(0,v.jsx)(u.Wzg,{id:"identifier-field",name:"identifier-field",label:"Identifier",value:w,onChange:function(e){return N(e.target.value)},tooltip:"Unique descriptive string for this destination",placeholder:"Enter Destination Identifier",required:!0})}),(0,v.jsx)(u.rjZ,{item:!0,xs:12,children:M}),(0,v.jsx)(u.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end",marginTop:15},children:(0,v.jsx)(u.zxk,{id:"save-notification-target",type:"submit",variant:"callAction",disabled:D||""===w.trim(),label:"Save Event Destination"})})]})]})})})]})}))},61757:function(e,t,o){o.d(t,{BI:function(){return S},DD:function(){return T},L:function(){return x},dM:function(){return s},ee:function(){return l},fk:function(){return y},oj:function(){return _},z5:function(){return b}});var n,r=o(4942),a=o(43144),i=o(15671),l="notify_postgres",s="notify_mysql",c="notify_kafka",u="notify_amqp",p="notify_mqtt",d="notify_redis",f="notify_nats",g="notify_elasticsearch",m="notify_webhook",h="notify_nsq",y=function(e){return e.map((function(e){return{service_name:"".concat(e.service,":").concat(e.account_id),name:e.service,account_id:e.account_id,status:e.status}}))},b=(0,a.Z)((function e(){(0,i.Z)(this,e)}));b.DB="database",b.Queue="queue",b.Func="functions";var S=[{actionTrigger:l,targetTitle:"PostgreSQL",logo:"/postgres-logo.svg",category:b.DB},{actionTrigger:c,targetTitle:"Kafka",logo:"/kafka-logo.svg",category:b.Queue},{actionTrigger:u,targetTitle:"AMQP",logo:"/amqp-logo.svg",category:b.Queue},{actionTrigger:p,targetTitle:"MQTT",logo:"/mqtt-logo.svg",category:b.Queue},{actionTrigger:d,targetTitle:"Redis",logo:"/redis-logo.svg",category:b.Queue},{actionTrigger:f,targetTitle:"NATS",logo:"/nats-logo.svg",category:b.Queue},{actionTrigger:s,targetTitle:"Mysql",logo:"/mysql-logo.svg",category:b.DB},{actionTrigger:g,targetTitle:"Elastic Search",logo:"/elasticsearch-logo.svg",category:b.DB},{actionTrigger:m,targetTitle:"Webhook",logo:"/webhooks-logo.svg",category:b.Func},{actionTrigger:h,targetTitle:"NSQ",logo:"/nsq-logo.svg",category:b.Queue}],v=[{name:"queue_dir",label:"Queue Directory",required:!1,tooltip:"Staging directory for undelivered messages e.g. '/home/events'",type:"string",placeholder:"Enter Queue Directory"},{name:"queue_limit",label:"Queue Limit",required:!1,tooltip:"Maximum limit for undelivered messages, defaults to '10000'",type:"number",placeholder:"Enter Queue Limit"},{name:"comment",label:"Comment",required:!1,type:"comment",placeholder:"Enter custom notes if any"}],T=function(e){return e.filter((function(e){return""!==e.value}))},_=(n={},(0,r.Z)(n,c,[{name:"brokers",label:"Brokers",required:!0,tooltip:"Comma separated list of Kafka broker addresses",type:"string",placeholder:"Enter Brokers"},{name:"topic",label:"Topic",tooltip:"Kafka topic used for bucket notifications",type:"string",placeholder:"Enter Topic"},{name:"sasl_username",label:"SASL Username",tooltip:"Username for SASL/PLAIN or SASL/SCRAM authentication",type:"string",placeholder:"Enter SASL Username"},{name:"sasl_password",label:"SASL Password",tooltip:"Password for SASL/PLAIN or SASL/SCRAM authentication",type:"string",placeholder:"Enter SASL Password"},{name:"sasl_mechanism",label:"SASL Mechanism",tooltip:"SASL authentication mechanism, default 'PLAIN'",type:"string"},{name:"tls_client_auth",label:"TLS Client Auth",tooltip:"Client Auth determines the Kafka server's policy for TLS client authorization",type:"string",placeholder:"Enter TLS Client Auth"},{name:"sasl",label:"SASL",tooltip:"Set to 'on' to enable SASL authentication",type:"on|off"},{name:"tls",label:"TLS",tooltip:"Set to 'on' to enable TLS",type:"on|off"},{name:"tls_skip_verify",label:"TLS skip verify",tooltip:'Trust server TLS without verification, defaults to "on" (verify)',type:"on|off"},{name:"client_tls_cert",label:"client TLS cert",tooltip:"Path to client certificate for mTLS authorization",type:"path",placeholder:"Enter TLS Client Cert"},{name:"client_tls_key",label:"client TLS key",tooltip:"Path to client key for mTLS authorization",type:"path",placeholder:"Enter TLS Client Key"},{name:"version",label:"Version",tooltip:"Specify the version of the Kafka cluster e.g '2.2.0'",type:"string",placeholder:"Enter Kafka Version"}].concat(v)),(0,r.Z)(n,u,[{name:"url",required:!0,label:"URL",tooltip:"AMQP server endpoint e.g. `amqp://myuser:mypassword@localhost:5672`",type:"url"},{name:"exchange",label:"Exchange",tooltip:"Name of the AMQP exchange",type:"string",placeholder:"Enter Exchange"},{name:"exchange_type",label:"Exchange Type",tooltip:"AMQP exchange type",type:"string",placeholder:"Enter Exchange Type"},{name:"routing_key",label:"Routing Key",tooltip:"Routing key for publishing",type:"string",placeholder:"Enter Routing Key"},{name:"mandatory",label:"Mandatory",tooltip:"Quietly ignore undelivered messages when set to 'off', default is 'on'",type:"on|off"},{name:"durable",label:"Durable",tooltip:"Persist queue across broker restarts when set to 'on', default is 'off'",type:"on|off"},{name:"no_wait",label:"No Wait",tooltip:"Non-blocking message delivery when set to 'on', default is 'off'",type:"on|off"},{name:"internal",label:"Internal",tooltip:"Set to 'on' for exchange to be not used directly by publishers, but only when bound to other exchanges",type:"on|off"},{name:"auto_deleted",label:"Auto Deleted",tooltip:"Auto delete queue when set to 'on', when there are no consumers",type:"on|off"},{name:"delivery_mode",label:"Delivery Mode",tooltip:"Set to '1' for non-persistent or '2' for persistent queue",type:"number",placeholder:"Enter Delivery Mode"}].concat(v)),(0,r.Z)(n,d,[{name:"address",required:!0,label:"Address",tooltip:"Redis server's address e.g. `localhost:6379`",type:"address",placeholder:"Enter Address"},{name:"key",required:!0,label:"Key",tooltip:"Redis key to store/update events, key is auto-created",type:"string",placeholder:"Enter Key"},{name:"password",label:"Password",tooltip:"Redis server password",type:"string",placeholder:"Enter Password"}].concat(v)),(0,r.Z)(n,p,[{name:"broker",required:!0,label:"Broker",tooltip:"MQTT server endpoint e.g. `tcp://localhost:1883`",type:"uri",placeholder:"Enter Brokers"},{name:"topic",required:!0,label:"Topic",tooltip:"Name of the MQTT topic to publish",type:"string",placeholder:"Enter Topic"},{name:"username",label:"Username",tooltip:"MQTT username",type:"string",placeholder:"Enter Username"},{name:"password",label:"Password",tooltip:"MQTT password",type:"string",placeholder:"Enter Password"},{name:"qos",label:"QOS",tooltip:"Set the quality of service priority, defaults to '0'",type:"number",placeholder:"Enter QOS"},{name:"keep_alive_interval",label:"Keep Alive Interval",tooltip:"Keep-alive interval for MQTT connections in s,m,h,d",type:"duration",placeholder:"Enter Keep Alive Interval"},{name:"reconnect_interval",label:"Reconnect Interval",tooltip:"Reconnect interval for MQTT connections in s,m,h,d",type:"duration",placeholder:"Enter Reconnect Interval"}].concat(v)),(0,r.Z)(n,f,[{name:"address",required:!0,label:"Address",tooltip:"NATS server address e.g. '0.0.0.0:4222'",type:"address",placeholder:"Enter Address"},{name:"subject",required:!0,label:"Subject",tooltip:"NATS subscription subject",type:"string",placeholder:"Enter NATS Subject"},{name:"username",label:"Username",tooltip:"NATS username",type:"string",placeholder:"Enter NATS Username"},{name:"password",label:"Password",tooltip:"NATS password",type:"string",placeholder:"Enter NATS password"},{name:"token",label:"Token",tooltip:"NATS token",type:"string",placeholder:"Enter NATS token"},{name:"tls",label:"TLS",tooltip:"Set to 'on' to enable TLS",type:"on|off"},{name:"tls_skip_verify",label:"TLS Skip Verify",tooltip:'Trust server TLS without verification, defaults to "on" (verify)',type:"on|off"},{name:"ping_interval",label:"Ping Interval",tooltip:"Client ping commands interval in s,m,h,d. Disabled by default",type:"duration",placeholder:"Enter Ping Interval"},{name:"streaming",label:"Streaming",tooltip:"Set to 'on' to use streaming NATS server",type:"on|off"},{name:"streaming_async",label:"Streaming async",tooltip:"Set to 'on' to enable asynchronous publish",type:"on|off"},{name:"streaming_max_pub_acks_in_flight",label:"Streaming max publish ACKS in flight",tooltip:"Number of messages to publish without waiting for ACKs",type:"number",placeholder:"Enter Streaming in flight value"},{name:"streaming_cluster_id",label:"Streaming Cluster ID",tooltip:"Unique ID for NATS streaming cluster",type:"string",placeholder:"Enter Streaming Cluster ID"},{name:"cert_authority",label:"Cert Authority",tooltip:"Path to certificate chain of the target NATS server",type:"string",placeholder:"Enter Cert Authority"},{name:"client_cert",label:"Client Cert",tooltip:"Client cert for NATS mTLS auth",type:"string",placeholder:"Enter Client Cert"},{name:"client_key",label:"Client Key",tooltip:"Client cert key for NATS mTLS authorization",type:"string",placeholder:"Enter Client Key"}].concat(v)),(0,r.Z)(n,g,[{name:"url",required:!0,label:"URL",tooltip:"Elasticsearch server's address, with optional authentication info",type:"url",placeholder:"Enter URL"},{name:"index",required:!0,label:"Index",tooltip:"Elasticsearch index to store/update events, index is auto-created",type:"string",placeholder:"Enter Index"},{name:"format",required:!0,label:"Format",tooltip:"'namespace' reflects current bucket/object list and 'access' reflects a journal of object operations, defaults to 'namespace'",type:"enum",placeholder:"Enter Format"}].concat(v)),(0,r.Z)(n,m,[{name:"endpoint",required:!0,label:"Endpoint",tooltip:"Webhook server endpoint e.g. http://localhost:8080/minio/events",type:"url",placeholder:"Enter Endpoint"},{name:"auth_token",label:"Auth Token",tooltip:"Opaque string or JWT authorization token",type:"string",placeholder:"Enter auth_token"}].concat(v)),(0,r.Z)(n,h,[{name:"nsqd_address",required:!0,label:"NSQD Address",tooltip:"NSQ server address e.g. '127.0.0.1:4150'",type:"address",placeholder:"Enter nsqd_address"},{name:"topic",required:!0,label:"Topic",tooltip:"NSQ topic",type:"string",placeholder:"Enter Topic"},{name:"tls",label:"TLS",tooltip:"Set to 'on' to enable TLS",type:"on|off"},{name:"tls_skip_verify",label:"TLS Skip Verify",tooltip:'Trust server TLS without verification, defaults to "on" (verify)',type:"on|off"}].concat(v)),n),k={webhook:"notify_webhook",amqp:"notify_amqp",kafka:"notify_kafka",mqtt:"notify_mqtt",nats:"notify_nats",nsq:"notify_nsq",mysql:"notify_mysql",postgresql:"notify_postgres",elasticsearch:"notify_elasticsearch",redis:"notify_redis"},x=function(e){return k[e]}}}]); -//# sourceMappingURL=808.a41d96e0.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[808],{75578:function(e,t,o){var n=o(1413),r=o(72791),a=o(80184);t.Z=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(o){return(0,a.jsx)(r.Suspense,{fallback:t,children:(0,a.jsx)(e,(0,n.Z)({},o))})}}},50808:function(e,t,o){o.r(t),o.d(t,{default:function(){return j}});var n=o(29439),r=o(1413),a=o(72791),i=o(26181),l=o.n(i),s=o(11135),c=o(25787),u=o(29945),p=o(61757),d=o(23814),f=o(75578),g=o(56087),m=o(87995),h=o(57689),y=o(44690),b=o(47974),S=o(17691),v=o(80184),T=S.ZP.div((function(e){var t=e.theme;return{background:l()(t,"boxBackground","#fff"),border:"".concat(l()(t,"borderColor","#E5E5E5")," 1px solid"),borderRadius:5,height:80,display:"flex",alignItems:"center",justifyContent:"start",marginBottom:16,cursor:"pointer",padding:0,overflow:"hidden","& .logoButton":{height:"80px"},"& .imageContainer":{backgroundColor:l()(t,"bgColor","#fff"),display:"flex",alignItems:"center",justifyContent:"center",width:80,height:80,"& img":{maxWidth:46,maxHeight:46,filter:"drop-shadow(1px 1px 8px #fff)"}},"& .titleBox":{color:l()(t,"fontColor","#000"),fontSize:16,fontFamily:"Inter,sans-serif",paddingLeft:18}}})),_=function(e){var t=e.logoSrc,o=e.title;return(0,v.jsxs)(T,{children:[(0,v.jsx)(u.xuv,{className:"imageContainer",children:(0,v.jsx)("img",{src:t,className:"logoButton",alt:o})}),(0,v.jsx)(u.xuv,{className:"titleBox",children:(0,v.jsxs)("b",{children:[o," Event Destination"]})})]})},k=o(53669),x=o(99670),E=o(31776),A=o(82342),q=(0,f.Z)(a.lazy((function(){return Promise.all([o.e(911),o.e(4549),o.e(817),o.e(9059)]).then(o.bind(o,9059))}))),L=(0,f.Z)(a.lazy((function(){return o.e(4770).then(o.bind(o,94770))}))),C=(0,f.Z)(a.lazy((function(){return Promise.all([o.e(911),o.e(4549),o.e(817),o.e(6247)]).then(o.bind(o,56247))}))),j=(0,c.Z)((function(e){return(0,s.Z)((0,r.Z)((0,r.Z)({},d.oO),d.Je))}))((function(e){var t=e.saveAndRefresh,o=e.classes,r=(0,y.TL)(),i=(0,h.s0)(),s=(0,h.UO)(),c=(0,a.useState)([]),d=(0,n.Z)(c,2),f=d[0],S=d[1],T=(0,a.useState)(""),j=(0,n.Z)(T,2),w=j[0],N=j[1],Q=(0,a.useState)(!1),Z=(0,n.Z)(Q,2),D=Z[0],I=Z[1],P=s.service||"";(0,a.useEffect)((function(){if(D){var e={key_values:(0,p.DD)(f)};E.h.configs.setConfig("".concat(P,":").concat(w),e).then((function(){I(!1),r((0,m.cN)(!0)),r((0,k.iP)(!0)),i(g.gA.EVENT_DESTINATIONS)})).catch((function(e){I(!1),r((0,m.Ih)((0,A.g)(e.error)))}))}}),[D,P,f,t,r,i,w]);var M,K=(0,a.useCallback)((function(e){S(e)}),[S]);switch(P){case p.ee:M=(0,v.jsx)(C,{onChange:K});break;case p.dM:M=(0,v.jsx)(q,{onChange:K});break;default:var R=l()(p.oj,P,[]);M=(0,v.jsx)(L,{fields:R,onChange:K})}var B=p.BI.find((function(e){return e.actionTrigger===P}));return(0,a.useEffect)((function(){r((0,m.Sc)("add_notification_endpoint"))}),[]),(0,v.jsxs)(a.Fragment,{children:[(0,v.jsx)(b.Z,{label:(0,v.jsx)(a.Fragment,{children:(0,v.jsx)(u.hbI,{label:"Event Destinations",onClick:function(){return i(g.gA.EVENT_DESTINATIONS_ADD)}})}),actions:(0,v.jsx)(x.Z,{})}),(0,v.jsx)(u.Xgh,{children:(0,v.jsx)("form",{noValidate:!0,onSubmit:function(e){e.preventDefault(),I(!0)},children:""!==P&&(0,v.jsxs)(a.Fragment,{children:[(0,v.jsx)(u.rjZ,{item:!0,xs:12,children:B&&(0,v.jsx)(_,{logoSrc:B.logo,title:B?B.targetTitle:""})}),(0,v.jsxs)(u.ltY,{children:[(0,v.jsx)(u.rjZ,{item:!0,xs:12,className:o.formFieldRow,sx:{marginBottom:"12px"},children:(0,v.jsx)(u.Wzg,{id:"identifier-field",name:"identifier-field",label:"Identifier",value:w,onChange:function(e){return N(e.target.value)},tooltip:"Unique descriptive string for this destination",placeholder:"Enter Destination Identifier",required:!0})}),(0,v.jsx)(u.rjZ,{item:!0,xs:12,children:M}),(0,v.jsx)(u.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end",marginTop:15},children:(0,v.jsx)(u.zxk,{id:"save-notification-target",type:"submit",variant:"callAction",disabled:D||""===w.trim(),label:"Save Event Destination"})})]})]})})})]})}))},61757:function(e,t,o){o.d(t,{BI:function(){return S},DD:function(){return T},L:function(){return x},dM:function(){return s},ee:function(){return l},fk:function(){return y},oj:function(){return _},z5:function(){return b}});var n,r=o(4942),a=o(43144),i=o(15671),l="notify_postgres",s="notify_mysql",c="notify_kafka",u="notify_amqp",p="notify_mqtt",d="notify_redis",f="notify_nats",g="notify_elasticsearch",m="notify_webhook",h="notify_nsq",y=function(e){return e.map((function(e){return{service_name:"".concat(e.service,":").concat(e.account_id),name:e.service,account_id:e.account_id,status:e.status}}))},b=(0,a.Z)((function e(){(0,i.Z)(this,e)}));b.DB="database",b.Queue="queue",b.Func="functions";var S=[{actionTrigger:l,targetTitle:"PostgreSQL",logo:"/postgres-logo.svg",category:b.DB},{actionTrigger:c,targetTitle:"Kafka",logo:"/kafka-logo.svg",category:b.Queue},{actionTrigger:u,targetTitle:"AMQP",logo:"/amqp-logo.svg",category:b.Queue},{actionTrigger:p,targetTitle:"MQTT",logo:"/mqtt-logo.svg",category:b.Queue},{actionTrigger:d,targetTitle:"Redis",logo:"/redis-logo.svg",category:b.Queue},{actionTrigger:f,targetTitle:"NATS",logo:"/nats-logo.svg",category:b.Queue},{actionTrigger:s,targetTitle:"Mysql",logo:"/mysql-logo.svg",category:b.DB},{actionTrigger:g,targetTitle:"Elastic Search",logo:"/elasticsearch-logo.svg",category:b.DB},{actionTrigger:m,targetTitle:"Webhook",logo:"/webhooks-logo.svg",category:b.Func},{actionTrigger:h,targetTitle:"NSQ",logo:"/nsq-logo.svg",category:b.Queue}],v=[{name:"queue_dir",label:"Queue Directory",required:!1,tooltip:"Staging directory for undelivered messages e.g. '/home/events'",type:"string",placeholder:"Enter Queue Directory"},{name:"queue_limit",label:"Queue Limit",required:!1,tooltip:"Maximum limit for undelivered messages, defaults to '10000'",type:"number",placeholder:"Enter Queue Limit"},{name:"comment",label:"Comment",required:!1,type:"comment",placeholder:"Enter custom notes if any"}],T=function(e){return e.filter((function(e){return""!==e.value}))},_=(n={},(0,r.Z)(n,c,[{name:"brokers",label:"Brokers",required:!0,tooltip:"Comma separated list of Kafka broker addresses",type:"string",placeholder:"Enter Brokers"},{name:"topic",label:"Topic",tooltip:"Kafka topic used for bucket notifications",type:"string",placeholder:"Enter Topic"},{name:"sasl_username",label:"SASL Username",tooltip:"Username for SASL/PLAIN or SASL/SCRAM authentication",type:"string",placeholder:"Enter SASL Username"},{name:"sasl_password",label:"SASL Password",tooltip:"Password for SASL/PLAIN or SASL/SCRAM authentication",type:"string",placeholder:"Enter SASL Password"},{name:"sasl_mechanism",label:"SASL Mechanism",tooltip:"SASL authentication mechanism, default 'PLAIN'",type:"string"},{name:"tls_client_auth",label:"TLS Client Auth",tooltip:"Client Auth determines the Kafka server's policy for TLS client authorization",type:"string",placeholder:"Enter TLS Client Auth"},{name:"sasl",label:"SASL",tooltip:"Set to 'on' to enable SASL authentication",type:"on|off"},{name:"tls",label:"TLS",tooltip:"Set to 'on' to enable TLS",type:"on|off"},{name:"tls_skip_verify",label:"TLS skip verify",tooltip:'Trust server TLS without verification, defaults to "on" (verify)',type:"on|off"},{name:"client_tls_cert",label:"client TLS cert",tooltip:"Path to client certificate for mTLS authorization",type:"path",placeholder:"Enter TLS Client Cert"},{name:"client_tls_key",label:"client TLS key",tooltip:"Path to client key for mTLS authorization",type:"path",placeholder:"Enter TLS Client Key"},{name:"version",label:"Version",tooltip:"Specify the version of the Kafka cluster e.g '2.2.0'",type:"string",placeholder:"Enter Kafka Version"}].concat(v)),(0,r.Z)(n,u,[{name:"url",required:!0,label:"URL",tooltip:"AMQP server endpoint e.g. `amqp://myuser:mypassword@localhost:5672`",type:"url"},{name:"exchange",label:"Exchange",tooltip:"Name of the AMQP exchange",type:"string",placeholder:"Enter Exchange"},{name:"exchange_type",label:"Exchange Type",tooltip:"AMQP exchange type",type:"string",placeholder:"Enter Exchange Type"},{name:"routing_key",label:"Routing Key",tooltip:"Routing key for publishing",type:"string",placeholder:"Enter Routing Key"},{name:"mandatory",label:"Mandatory",tooltip:"Quietly ignore undelivered messages when set to 'off', default is 'on'",type:"on|off"},{name:"durable",label:"Durable",tooltip:"Persist queue across broker restarts when set to 'on', default is 'off'",type:"on|off"},{name:"no_wait",label:"No Wait",tooltip:"Non-blocking message delivery when set to 'on', default is 'off'",type:"on|off"},{name:"internal",label:"Internal",tooltip:"Set to 'on' for exchange to be not used directly by publishers, but only when bound to other exchanges",type:"on|off"},{name:"auto_deleted",label:"Auto Deleted",tooltip:"Auto delete queue when set to 'on', when there are no consumers",type:"on|off"},{name:"delivery_mode",label:"Delivery Mode",tooltip:"Set to '1' for non-persistent or '2' for persistent queue",type:"number",placeholder:"Enter Delivery Mode"}].concat(v)),(0,r.Z)(n,d,[{name:"address",required:!0,label:"Address",tooltip:"Redis server's address e.g. `localhost:6379`",type:"address",placeholder:"Enter Address"},{name:"key",required:!0,label:"Key",tooltip:"Redis key to store/update events, key is auto-created",type:"string",placeholder:"Enter Key"},{name:"password",label:"Password",tooltip:"Redis server password",type:"string",placeholder:"Enter Password"}].concat(v)),(0,r.Z)(n,p,[{name:"broker",required:!0,label:"Broker",tooltip:"MQTT server endpoint e.g. `tcp://localhost:1883`",type:"uri",placeholder:"Enter Brokers"},{name:"topic",required:!0,label:"Topic",tooltip:"Name of the MQTT topic to publish",type:"string",placeholder:"Enter Topic"},{name:"username",label:"Username",tooltip:"MQTT username",type:"string",placeholder:"Enter Username"},{name:"password",label:"Password",tooltip:"MQTT password",type:"string",placeholder:"Enter Password"},{name:"qos",label:"QOS",tooltip:"Set the quality of service priority, defaults to '0'",type:"number",placeholder:"Enter QOS"},{name:"keep_alive_interval",label:"Keep Alive Interval",tooltip:"Keep-alive interval for MQTT connections in s,m,h,d",type:"duration",placeholder:"Enter Keep Alive Interval"},{name:"reconnect_interval",label:"Reconnect Interval",tooltip:"Reconnect interval for MQTT connections in s,m,h,d",type:"duration",placeholder:"Enter Reconnect Interval"}].concat(v)),(0,r.Z)(n,f,[{name:"address",required:!0,label:"Address",tooltip:"NATS server address e.g. '0.0.0.0:4222'",type:"address",placeholder:"Enter Address"},{name:"subject",required:!0,label:"Subject",tooltip:"NATS subscription subject",type:"string",placeholder:"Enter NATS Subject"},{name:"username",label:"Username",tooltip:"NATS username",type:"string",placeholder:"Enter NATS Username"},{name:"password",label:"Password",tooltip:"NATS password",type:"string",placeholder:"Enter NATS password"},{name:"token",label:"Token",tooltip:"NATS token",type:"string",placeholder:"Enter NATS token"},{name:"tls",label:"TLS",tooltip:"Set to 'on' to enable TLS",type:"on|off"},{name:"tls_skip_verify",label:"TLS Skip Verify",tooltip:'Trust server TLS without verification, defaults to "on" (verify)',type:"on|off"},{name:"ping_interval",label:"Ping Interval",tooltip:"Client ping commands interval in s,m,h,d. Disabled by default",type:"duration",placeholder:"Enter Ping Interval"},{name:"streaming",label:"Streaming",tooltip:"Set to 'on' to use streaming NATS server",type:"on|off"},{name:"streaming_async",label:"Streaming async",tooltip:"Set to 'on' to enable asynchronous publish",type:"on|off"},{name:"streaming_max_pub_acks_in_flight",label:"Streaming max publish ACKS in flight",tooltip:"Number of messages to publish without waiting for ACKs",type:"number",placeholder:"Enter Streaming in flight value"},{name:"streaming_cluster_id",label:"Streaming Cluster ID",tooltip:"Unique ID for NATS streaming cluster",type:"string",placeholder:"Enter Streaming Cluster ID"},{name:"cert_authority",label:"Cert Authority",tooltip:"Path to certificate chain of the target NATS server",type:"string",placeholder:"Enter Cert Authority"},{name:"client_cert",label:"Client Cert",tooltip:"Client cert for NATS mTLS auth",type:"string",placeholder:"Enter Client Cert"},{name:"client_key",label:"Client Key",tooltip:"Client cert key for NATS mTLS authorization",type:"string",placeholder:"Enter Client Key"}].concat(v)),(0,r.Z)(n,g,[{name:"url",required:!0,label:"URL",tooltip:"Elasticsearch server's address, with optional authentication info",type:"url",placeholder:"Enter URL"},{name:"index",required:!0,label:"Index",tooltip:"Elasticsearch index to store/update events, index is auto-created",type:"string",placeholder:"Enter Index"},{name:"format",required:!0,label:"Format",tooltip:"'namespace' reflects current bucket/object list and 'access' reflects a journal of object operations, defaults to 'namespace'",type:"enum",placeholder:"Enter Format"}].concat(v)),(0,r.Z)(n,m,[{name:"endpoint",required:!0,label:"Endpoint",tooltip:"Webhook server endpoint e.g. http://localhost:8080/minio/events",type:"url",placeholder:"Enter Endpoint"},{name:"auth_token",label:"Auth Token",tooltip:"Opaque string or JWT authorization token",type:"string",placeholder:"Enter auth_token"}].concat(v)),(0,r.Z)(n,h,[{name:"nsqd_address",required:!0,label:"NSQD Address",tooltip:"NSQ server address e.g. '127.0.0.1:4150'",type:"address",placeholder:"Enter nsqd_address"},{name:"topic",required:!0,label:"Topic",tooltip:"NSQ topic",type:"string",placeholder:"Enter Topic"},{name:"tls",label:"TLS",tooltip:"Set to 'on' to enable TLS",type:"on|off"},{name:"tls_skip_verify",label:"TLS Skip Verify",tooltip:'Trust server TLS without verification, defaults to "on" (verify)',type:"on|off"}].concat(v)),n),k={webhook:"notify_webhook",amqp:"notify_amqp",kafka:"notify_kafka",mqtt:"notify_mqtt",nats:"notify_nats",nsq:"notify_nsq",mysql:"notify_mysql",postgresql:"notify_postgres",elasticsearch:"notify_elasticsearch",redis:"notify_redis"},x=function(e){return k[e]}}}]); +//# sourceMappingURL=808.6b19d840.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/808.a41d96e0.chunk.js.map b/portal-ui/build/static/js/808.6b19d840.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/808.a41d96e0.chunk.js.map rename to portal-ui/build/static/js/808.6b19d840.chunk.js.map index 0ccde13fd5..05a1c48c2e 100644 --- a/portal-ui/build/static/js/808.a41d96e0.chunk.js.map +++ b/portal-ui/build/static/js/808.6b19d840.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/808.a41d96e0.chunk.js","mappings":"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","sources":["screens/Console/Common/Components/withSuspense.tsx","screens/Console/EventDestinations/TargetTitle.tsx","screens/Console/EventDestinations/AddEventDestination.tsx","screens/Console/EventDestinations/utils.ts"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

    (\n WrappedComponent: ComponentType

    ,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport get from \"lodash/get\";\nimport styled from \"styled-components\";\nimport { Box } from \"mds\";\n\ninterface ITargetTitle {\n logoSrc: string;\n title: string;\n}\n\nconst TargetBase = styled.div(({ theme }) => ({\n background: get(theme, \"boxBackground\", \"#fff\"),\n border: `${get(theme, \"borderColor\", \"#E5E5E5\")} 1px solid`,\n borderRadius: 5,\n height: 80,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"start\",\n marginBottom: 16,\n cursor: \"pointer\",\n padding: 0,\n overflow: \"hidden\",\n \"& .logoButton\": {\n height: \"80px\",\n },\n \"& .imageContainer\": {\n backgroundColor: get(theme, \"bgColor\", \"#fff\"),\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: 80,\n height: 80,\n\n \"& img\": {\n maxWidth: 46,\n maxHeight: 46,\n filter: \"drop-shadow(1px 1px 8px #fff)\",\n },\n },\n \"& .titleBox\": {\n color: get(theme, \"fontColor\", \"#000\"),\n fontSize: 16,\n fontFamily: \"Inter,sans-serif\",\n paddingLeft: 18,\n },\n}));\n\nconst TargetTitle = ({ logoSrc, title }: ITargetTitle) => {\n return (\n \n \n {title}\n \n\n \n {title} Event Destination\n \n \n );\n};\n\nexport default TargetTitle;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\n\nimport get from \"lodash/get\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { BackLink, Button, FormLayout, Grid, InputBox, PageLayout } from \"mds\";\n\nimport {\n destinationList,\n notificationEndpointsFields,\n notifyMysql,\n notifyPostgres,\n removeEmptyFields,\n} from \"./utils\";\nimport {\n modalBasic,\n settingsCommon,\n} from \"../Common/FormComponents/common/styleLibrary\";\n\nimport { IElementValue } from \"../Configurations/types\";\n\nimport withSuspense from \"../Common/Components/withSuspense\";\n\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport {\n setErrorSnackMessage,\n setHelpName,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport { useAppDispatch } from \"../../../store\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport TargetTitle from \"./TargetTitle\";\nimport { setDestinationLoading } from \"./destinationsSlice\";\nimport HelpMenu from \"../HelpMenu\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\nconst ConfMySql = withSuspense(\n React.lazy(() => import(\"./CustomForms/ConfMySql\")),\n);\n\nconst ConfTargetGeneric = withSuspense(\n React.lazy(() => import(\"./ConfTargetGeneric\")),\n);\n\nconst ConfPostgres = withSuspense(\n React.lazy(() => import(\"./CustomForms/ConfPostgres\")),\n);\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...modalBasic,\n ...settingsCommon,\n });\n\ninterface IAddNotificationEndpointProps {\n saveAndRefresh: any;\n classes: any;\n}\n\nconst AddEventDestination = ({\n saveAndRefresh,\n classes,\n}: IAddNotificationEndpointProps) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const params = useParams();\n\n //Local States\n const [valuesArr, setValueArr] = useState([]);\n const [identifier, setIdentifier] = useState(\"\");\n const [saving, setSaving] = useState(false);\n const service = params.service || \"\";\n\n //Effects\n useEffect(() => {\n if (saving) {\n const payload = {\n key_values: removeEmptyFields(valuesArr),\n };\n api.configs\n .setConfig(`${service}:${identifier}`, payload)\n .then(() => {\n setSaving(false);\n dispatch(setServerNeedsRestart(true));\n dispatch(setDestinationLoading(true));\n navigate(IAM_PAGES.EVENT_DESTINATIONS);\n })\n .catch((err) => {\n setSaving(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n }, [\n saving,\n service,\n valuesArr,\n saveAndRefresh,\n dispatch,\n navigate,\n identifier,\n ]);\n\n //Fetch Actions\n const submitForm = (event: React.FormEvent) => {\n event.preventDefault();\n setSaving(true);\n };\n\n const onValueChange = useCallback(\n (newValue: IElementValue[]) => {\n setValueArr(newValue);\n },\n [setValueArr],\n );\n\n let srvComponent;\n switch (service) {\n case notifyPostgres: {\n srvComponent = ;\n break;\n }\n case notifyMysql: {\n srvComponent = ;\n break;\n }\n default: {\n const fields = get(notificationEndpointsFields, service, []);\n\n srvComponent = (\n \n );\n }\n }\n\n const targetElement = destinationList.find(\n (element) => element.actionTrigger === service,\n );\n\n useEffect(() => {\n dispatch(setHelpName(\"add_notification_endpoint\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n \n navigate(IAM_PAGES.EVENT_DESTINATIONS_ADD)}\n />\n \n }\n actions={}\n />\n\n \n

    \n {service !== \"\" && (\n \n \n {targetElement && (\n \n )}\n \n \n \n setIdentifier(e.target.value)}\n tooltip={\"Unique descriptive string for this destination\"}\n placeholder=\"Enter Destination Identifier\"\n required\n />\n \n \n {srvComponent}\n \n \n \n \n \n \n )}\n
    \n \n \n );\n};\n\nexport default withStyles(styles)(AddEventDestination);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { NotificationEndpointItem } from \"api/consoleApi\";\nimport { IElementValue } from \"../Configurations/types\";\nimport { TransformedEndpointItem } from \"./types\";\n\nexport const notifyPostgres = \"notify_postgres\";\nexport const notifyMysql = \"notify_mysql\";\nexport const notifyKafka = \"notify_kafka\";\nexport const notifyAmqp = \"notify_amqp\";\nexport const notifyMqtt = \"notify_mqtt\";\nexport const notifyRedis = \"notify_redis\";\nexport const notifyNats = \"notify_nats\";\nexport const notifyElasticsearch = \"notify_elasticsearch\";\nexport const notifyWebhooks = \"notify_webhook\";\nexport const notifyNsq = \"notify_nsq\";\n\nexport const notificationTransform = (\n notificationElements: NotificationEndpointItem[],\n) => {\n return notificationElements.map((element) => {\n return {\n service_name: `${element.service}:${element.account_id}`,\n name: element.service,\n account_id: element.account_id,\n status: element.status,\n };\n }) as TransformedEndpointItem[];\n};\n\nexport class DestType {\n static DB: string = \"database\";\n static Queue: string = \"queue\";\n static Func: string = \"functions\";\n}\n\nexport const destinationList = [\n {\n actionTrigger: notifyPostgres,\n targetTitle: \"PostgreSQL\",\n logo: \"/postgres-logo.svg\",\n category: DestType.DB,\n },\n {\n actionTrigger: notifyKafka,\n targetTitle: \"Kafka\",\n logo: \"/kafka-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyAmqp,\n targetTitle: \"AMQP\",\n logo: \"/amqp-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyMqtt,\n targetTitle: \"MQTT\",\n logo: \"/mqtt-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyRedis,\n targetTitle: \"Redis\",\n logo: \"/redis-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyNats,\n targetTitle: \"NATS\",\n logo: \"/nats-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyMysql,\n targetTitle: \"Mysql\",\n logo: \"/mysql-logo.svg\",\n category: DestType.DB,\n },\n {\n actionTrigger: notifyElasticsearch,\n targetTitle: \"Elastic Search\",\n logo: \"/elasticsearch-logo.svg\",\n category: DestType.DB,\n },\n {\n actionTrigger: notifyWebhooks,\n targetTitle: \"Webhook\",\n logo: \"/webhooks-logo.svg\",\n category: DestType.Func,\n },\n {\n actionTrigger: notifyNsq,\n targetTitle: \"NSQ\",\n logo: \"/nsq-logo.svg\",\n category: DestType.Queue,\n },\n];\n\nconst commonFields = [\n {\n name: \"queue_dir\",\n label: \"Queue Directory\",\n required: false,\n\n tooltip: \"Staging directory for undelivered messages e.g. '/home/events'\",\n type: \"string\",\n placeholder: \"Enter Queue Directory\",\n },\n {\n name: \"queue_limit\",\n label: \"Queue Limit\",\n required: false,\n\n tooltip: \"Maximum limit for undelivered messages, defaults to '10000'\",\n type: \"number\",\n placeholder: \"Enter Queue Limit\",\n },\n {\n name: \"comment\",\n label: \"Comment\",\n required: false,\n type: \"comment\",\n placeholder: \"Enter custom notes if any\",\n },\n];\n\nexport const removeEmptyFields = (formFields: IElementValue[]) => {\n const nonEmptyFields = formFields.filter((field) => field.value !== \"\");\n\n return nonEmptyFields;\n};\n\nexport const notificationEndpointsFields: any = {\n [notifyKafka]: [\n {\n name: \"brokers\",\n label: \"Brokers\",\n required: true,\n\n tooltip: \"Comma separated list of Kafka broker addresses\",\n type: \"string\",\n placeholder: \"Enter Brokers\",\n },\n {\n name: \"topic\",\n label: \"Topic\",\n tooltip: \"Kafka topic used for bucket notifications\",\n type: \"string\",\n placeholder: \"Enter Topic\",\n },\n {\n name: \"sasl_username\",\n label: \"SASL Username\",\n tooltip: \"Username for SASL/PLAIN or SASL/SCRAM authentication\",\n type: \"string\",\n placeholder: \"Enter SASL Username\",\n },\n {\n name: \"sasl_password\",\n label: \"SASL Password\",\n tooltip: \"Password for SASL/PLAIN or SASL/SCRAM authentication\",\n type: \"string\",\n placeholder: \"Enter SASL Password\",\n },\n {\n name: \"sasl_mechanism\",\n label: \"SASL Mechanism\",\n tooltip: \"SASL authentication mechanism, default 'PLAIN'\",\n type: \"string\",\n },\n {\n name: \"tls_client_auth\",\n label: \"TLS Client Auth\",\n tooltip:\n \"Client Auth determines the Kafka server's policy for TLS client authorization\",\n type: \"string\",\n placeholder: \"Enter TLS Client Auth\",\n },\n {\n name: \"sasl\",\n label: \"SASL\",\n tooltip: \"Set to 'on' to enable SASL authentication\",\n type: \"on|off\",\n },\n {\n name: \"tls\",\n label: \"TLS\",\n tooltip: \"Set to 'on' to enable TLS\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n label: \"TLS skip verify\",\n tooltip:\n 'Trust server TLS without verification, defaults to \"on\" (verify)',\n type: \"on|off\",\n },\n {\n name: \"client_tls_cert\",\n label: \"client TLS cert\",\n tooltip: \"Path to client certificate for mTLS authorization\",\n type: \"path\",\n placeholder: \"Enter TLS Client Cert\",\n },\n {\n name: \"client_tls_key\",\n label: \"client TLS key\",\n tooltip: \"Path to client key for mTLS authorization\",\n type: \"path\",\n placeholder: \"Enter TLS Client Key\",\n },\n {\n name: \"version\",\n label: \"Version\",\n tooltip: \"Specify the version of the Kafka cluster e.g '2.2.0'\",\n type: \"string\",\n placeholder: \"Enter Kafka Version\",\n },\n ...commonFields,\n ],\n [notifyAmqp]: [\n {\n name: \"url\",\n required: true,\n label: \"URL\",\n tooltip:\n \"AMQP server endpoint e.g. `amqp://myuser:mypassword@localhost:5672`\",\n type: \"url\",\n },\n {\n name: \"exchange\",\n label: \"Exchange\",\n tooltip: \"Name of the AMQP exchange\",\n type: \"string\",\n placeholder: \"Enter Exchange\",\n },\n {\n name: \"exchange_type\",\n label: \"Exchange Type\",\n tooltip: \"AMQP exchange type\",\n type: \"string\",\n placeholder: \"Enter Exchange Type\",\n },\n {\n name: \"routing_key\",\n label: \"Routing Key\",\n tooltip: \"Routing key for publishing\",\n type: \"string\",\n placeholder: \"Enter Routing Key\",\n },\n {\n name: \"mandatory\",\n label: \"Mandatory\",\n tooltip:\n \"Quietly ignore undelivered messages when set to 'off', default is 'on'\",\n type: \"on|off\",\n },\n {\n name: \"durable\",\n label: \"Durable\",\n tooltip:\n \"Persist queue across broker restarts when set to 'on', default is 'off'\",\n type: \"on|off\",\n },\n {\n name: \"no_wait\",\n label: \"No Wait\",\n tooltip:\n \"Non-blocking message delivery when set to 'on', default is 'off'\",\n type: \"on|off\",\n },\n {\n name: \"internal\",\n label: \"Internal\",\n tooltip:\n \"Set to 'on' for exchange to be not used directly by publishers, but only when bound to other exchanges\",\n type: \"on|off\",\n },\n {\n name: \"auto_deleted\",\n label: \"Auto Deleted\",\n tooltip:\n \"Auto delete queue when set to 'on', when there are no consumers\",\n type: \"on|off\",\n },\n {\n name: \"delivery_mode\",\n label: \"Delivery Mode\",\n tooltip: \"Set to '1' for non-persistent or '2' for persistent queue\",\n type: \"number\",\n placeholder: \"Enter Delivery Mode\",\n },\n ...commonFields,\n ],\n [notifyRedis]: [\n {\n name: \"address\",\n required: true,\n label: \"Address\",\n tooltip: \"Redis server's address e.g. `localhost:6379`\",\n type: \"address\",\n placeholder: \"Enter Address\",\n },\n {\n name: \"key\",\n required: true,\n label: \"Key\",\n tooltip: \"Redis key to store/update events, key is auto-created\",\n type: \"string\",\n placeholder: \"Enter Key\",\n },\n {\n name: \"password\",\n label: \"Password\",\n tooltip: \"Redis server password\",\n type: \"string\",\n placeholder: \"Enter Password\",\n },\n ...commonFields,\n ],\n [notifyMqtt]: [\n {\n name: \"broker\",\n required: true,\n label: \"Broker\",\n tooltip: \"MQTT server endpoint e.g. `tcp://localhost:1883`\",\n type: \"uri\",\n placeholder: \"Enter Brokers\",\n },\n {\n name: \"topic\",\n required: true,\n label: \"Topic\",\n tooltip: \"Name of the MQTT topic to publish\",\n type: \"string\",\n placeholder: \"Enter Topic\",\n },\n {\n name: \"username\",\n label: \"Username\",\n tooltip: \"MQTT username\",\n type: \"string\",\n placeholder: \"Enter Username\",\n },\n {\n name: \"password\",\n label: \"Password\",\n tooltip: \"MQTT password\",\n type: \"string\",\n placeholder: \"Enter Password\",\n },\n {\n name: \"qos\",\n label: \"QOS\",\n tooltip: \"Set the quality of service priority, defaults to '0'\",\n type: \"number\",\n placeholder: \"Enter QOS\",\n },\n {\n name: \"keep_alive_interval\",\n label: \"Keep Alive Interval\",\n tooltip: \"Keep-alive interval for MQTT connections in s,m,h,d\",\n type: \"duration\",\n placeholder: \"Enter Keep Alive Interval\",\n },\n {\n name: \"reconnect_interval\",\n label: \"Reconnect Interval\",\n tooltip: \"Reconnect interval for MQTT connections in s,m,h,d\",\n type: \"duration\",\n placeholder: \"Enter Reconnect Interval\",\n },\n ...commonFields,\n ],\n [notifyNats]: [\n {\n name: \"address\",\n required: true,\n label: \"Address\",\n tooltip: \"NATS server address e.g. '0.0.0.0:4222'\",\n type: \"address\",\n placeholder: \"Enter Address\",\n },\n {\n name: \"subject\",\n required: true,\n label: \"Subject\",\n tooltip: \"NATS subscription subject\",\n type: \"string\",\n placeholder: \"Enter NATS Subject\",\n },\n {\n name: \"username\",\n label: \"Username\",\n tooltip: \"NATS username\",\n type: \"string\",\n placeholder: \"Enter NATS Username\",\n },\n {\n name: \"password\",\n label: \"Password\",\n tooltip: \"NATS password\",\n type: \"string\",\n placeholder: \"Enter NATS password\",\n },\n {\n name: \"token\",\n label: \"Token\",\n tooltip: \"NATS token\",\n type: \"string\",\n placeholder: \"Enter NATS token\",\n },\n {\n name: \"tls\",\n label: \"TLS\",\n tooltip: \"Set to 'on' to enable TLS\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n label: \"TLS Skip Verify\",\n tooltip:\n 'Trust server TLS without verification, defaults to \"on\" (verify)',\n type: \"on|off\",\n },\n {\n name: \"ping_interval\",\n label: \"Ping Interval\",\n tooltip: \"Client ping commands interval in s,m,h,d. Disabled by default\",\n type: \"duration\",\n placeholder: \"Enter Ping Interval\",\n },\n {\n name: \"streaming\",\n label: \"Streaming\",\n tooltip: \"Set to 'on' to use streaming NATS server\",\n type: \"on|off\",\n },\n {\n name: \"streaming_async\",\n label: \"Streaming async\",\n tooltip: \"Set to 'on' to enable asynchronous publish\",\n type: \"on|off\",\n },\n {\n name: \"streaming_max_pub_acks_in_flight\",\n label: \"Streaming max publish ACKS in flight\",\n tooltip: \"Number of messages to publish without waiting for ACKs\",\n type: \"number\",\n placeholder: \"Enter Streaming in flight value\",\n },\n {\n name: \"streaming_cluster_id\",\n label: \"Streaming Cluster ID\",\n tooltip: \"Unique ID for NATS streaming cluster\",\n type: \"string\",\n placeholder: \"Enter Streaming Cluster ID\",\n },\n {\n name: \"cert_authority\",\n label: \"Cert Authority\",\n tooltip: \"Path to certificate chain of the target NATS server\",\n type: \"string\",\n placeholder: \"Enter Cert Authority\",\n },\n {\n name: \"client_cert\",\n label: \"Client Cert\",\n tooltip: \"Client cert for NATS mTLS auth\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_key\",\n label: \"Client Key\",\n tooltip: \"Client cert key for NATS mTLS authorization\",\n type: \"string\",\n placeholder: \"Enter Client Key\",\n },\n ...commonFields,\n ],\n [notifyElasticsearch]: [\n {\n name: \"url\",\n required: true,\n label: \"URL\",\n tooltip:\n \"Elasticsearch server's address, with optional authentication info\",\n type: \"url\",\n placeholder: \"Enter URL\",\n },\n {\n name: \"index\",\n required: true,\n label: \"Index\",\n tooltip:\n \"Elasticsearch index to store/update events, index is auto-created\",\n type: \"string\",\n placeholder: \"Enter Index\",\n },\n {\n name: \"format\",\n required: true,\n label: \"Format\",\n tooltip:\n \"'namespace' reflects current bucket/object list and 'access' reflects a journal of object operations, defaults to 'namespace'\",\n type: \"enum\",\n placeholder: \"Enter Format\",\n },\n ...commonFields,\n ],\n [notifyWebhooks]: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n tooltip:\n \"Webhook server endpoint e.g. http://localhost:8080/minio/events\",\n type: \"url\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n label: \"Auth Token\",\n tooltip: \"Opaque string or JWT authorization token\",\n type: \"string\",\n placeholder: \"Enter auth_token\",\n },\n ...commonFields,\n ],\n [notifyNsq]: [\n {\n name: \"nsqd_address\",\n required: true,\n label: \"NSQD Address\",\n tooltip: \"NSQ server address e.g. '127.0.0.1:4150'\",\n type: \"address\",\n placeholder: \"Enter nsqd_address\",\n },\n {\n name: \"topic\",\n required: true,\n label: \"Topic\",\n tooltip: \"NSQ topic\",\n type: \"string\",\n placeholder: \"Enter Topic\",\n },\n {\n name: \"tls\",\n label: \"TLS\",\n tooltip: \"Set to 'on' to enable TLS\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n label: \"TLS Skip Verify\",\n tooltip:\n 'Trust server TLS without verification, defaults to \"on\" (verify)',\n type: \"on|off\",\n },\n ...commonFields,\n ],\n};\n\nconst serviceToConfigMap: Record = {\n webhook: \"notify_webhook\",\n amqp: \"notify_amqp\",\n kafka: \"notify_kafka\",\n mqtt: \"notify_mqtt\",\n nats: \"notify_nats\",\n nsq: \"notify_nsq\",\n mysql: \"notify_mysql\",\n postgresql: \"notify_postgres\", //looks different in server response(postgresql as opposed to postgres) from restapi/admin_notification_endpoints.go\n elasticsearch: \"notify_elasticsearch\",\n redis: \"notify_redis\",\n};\n\nexport const getNotificationConfigKey = (serviceName: string) => {\n return serviceToConfigMap[serviceName];\n};\n"],"names":["WrappedComponent","fallback","arguments","length","undefined","props","_jsx","Suspense","children","_objectSpread","TargetBase","styled","div","_ref","theme","background","get","border","concat","borderRadius","height","display","alignItems","justifyContent","marginBottom","cursor","padding","overflow","backgroundColor","width","maxWidth","maxHeight","filter","color","fontSize","fontFamily","paddingLeft","_ref2","logoSrc","title","_jsxs","Box","className","src","alt","ConfMySql","withSuspense","React","ConfTargetGeneric","ConfPostgres","withStyles","createStyles","modalBasic","settingsCommon","saveAndRefresh","classes","dispatch","useAppDispatch","navigate","useNavigate","params","useParams","_useState","useState","_useState2","_slicedToArray","valuesArr","setValueArr","_useState3","_useState4","identifier","setIdentifier","_useState5","_useState6","saving","setSaving","service","useEffect","payload","key_values","removeEmptyFields","api","configs","setConfig","then","setServerNeedsRestart","setDestinationLoading","IAM_PAGES","EVENT_DESTINATIONS","catch","err","setErrorSnackMessage","errorToHandler","error","srvComponent","onValueChange","useCallback","newValue","notifyPostgres","onChange","notifyMysql","fields","notificationEndpointsFields","targetElement","destinationList","find","element","actionTrigger","setHelpName","Fragment","PageHeaderWrapper","label","BackLink","onClick","EVENT_DESTINATIONS_ADD","actions","HelpMenu","PageLayout","noValidate","onSubmit","event","preventDefault","Grid","item","xs","TargetTitle","logo","targetTitle","FormLayout","formFieldRow","sx","InputBox","id","name","value","e","target","tooltip","placeholder","required","marginTop","Button","type","variant","disabled","trim","notifyKafka","notifyAmqp","notifyMqtt","notifyRedis","notifyNats","notifyElasticsearch","notifyWebhooks","notifyNsq","notificationTransform","notificationElements","map","service_name","account_id","status","DestType","_createClass","_classCallCheck","DB","Queue","Func","category","commonFields","formFields","field","_notificationEndpoint","_defineProperty","serviceToConfigMap","webhook","amqp","kafka","mqtt","nats","nsq","mysql","postgresql","elasticsearch","redis","getNotificationConfigKey","serviceName"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/808.6b19d840.chunk.js","mappings":"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","sources":["screens/Console/Common/Components/withSuspense.tsx","screens/Console/EventDestinations/TargetTitle.tsx","screens/Console/EventDestinations/AddEventDestination.tsx","screens/Console/EventDestinations/utils.ts"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

    (\n WrappedComponent: ComponentType

    ,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport get from \"lodash/get\";\nimport styled from \"styled-components\";\nimport { Box } from \"mds\";\n\ninterface ITargetTitle {\n logoSrc: string;\n title: string;\n}\n\nconst TargetBase = styled.div(({ theme }) => ({\n background: get(theme, \"boxBackground\", \"#fff\"),\n border: `${get(theme, \"borderColor\", \"#E5E5E5\")} 1px solid`,\n borderRadius: 5,\n height: 80,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"start\",\n marginBottom: 16,\n cursor: \"pointer\",\n padding: 0,\n overflow: \"hidden\",\n \"& .logoButton\": {\n height: \"80px\",\n },\n \"& .imageContainer\": {\n backgroundColor: get(theme, \"bgColor\", \"#fff\"),\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: 80,\n height: 80,\n\n \"& img\": {\n maxWidth: 46,\n maxHeight: 46,\n filter: \"drop-shadow(1px 1px 8px #fff)\",\n },\n },\n \"& .titleBox\": {\n color: get(theme, \"fontColor\", \"#000\"),\n fontSize: 16,\n fontFamily: \"Inter,sans-serif\",\n paddingLeft: 18,\n },\n}));\n\nconst TargetTitle = ({ logoSrc, title }: ITargetTitle) => {\n return (\n \n \n {title}\n \n\n \n {title} Event Destination\n \n \n );\n};\n\nexport default TargetTitle;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\n\nimport get from \"lodash/get\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { BackLink, Button, FormLayout, Grid, InputBox, PageLayout } from \"mds\";\n\nimport {\n destinationList,\n notificationEndpointsFields,\n notifyMysql,\n notifyPostgres,\n removeEmptyFields,\n} from \"./utils\";\nimport {\n modalBasic,\n settingsCommon,\n} from \"../Common/FormComponents/common/styleLibrary\";\n\nimport { IElementValue } from \"../Configurations/types\";\n\nimport withSuspense from \"../Common/Components/withSuspense\";\n\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport {\n setErrorSnackMessage,\n setHelpName,\n setServerNeedsRestart,\n} from \"../../../systemSlice\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport { useAppDispatch } from \"../../../store\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport TargetTitle from \"./TargetTitle\";\nimport { setDestinationLoading } from \"./destinationsSlice\";\nimport HelpMenu from \"../HelpMenu\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\nconst ConfMySql = withSuspense(\n React.lazy(() => import(\"./CustomForms/ConfMySql\")),\n);\n\nconst ConfTargetGeneric = withSuspense(\n React.lazy(() => import(\"./ConfTargetGeneric\")),\n);\n\nconst ConfPostgres = withSuspense(\n React.lazy(() => import(\"./CustomForms/ConfPostgres\")),\n);\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...modalBasic,\n ...settingsCommon,\n });\n\ninterface IAddNotificationEndpointProps {\n saveAndRefresh: any;\n classes: any;\n}\n\nconst AddEventDestination = ({\n saveAndRefresh,\n classes,\n}: IAddNotificationEndpointProps) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const params = useParams();\n\n //Local States\n const [valuesArr, setValueArr] = useState([]);\n const [identifier, setIdentifier] = useState(\"\");\n const [saving, setSaving] = useState(false);\n const service = params.service || \"\";\n\n //Effects\n useEffect(() => {\n if (saving) {\n const payload = {\n key_values: removeEmptyFields(valuesArr),\n };\n api.configs\n .setConfig(`${service}:${identifier}`, payload)\n .then(() => {\n setSaving(false);\n dispatch(setServerNeedsRestart(true));\n dispatch(setDestinationLoading(true));\n navigate(IAM_PAGES.EVENT_DESTINATIONS);\n })\n .catch((err) => {\n setSaving(false);\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n });\n }\n }, [\n saving,\n service,\n valuesArr,\n saveAndRefresh,\n dispatch,\n navigate,\n identifier,\n ]);\n\n //Fetch Actions\n const submitForm = (event: React.FormEvent) => {\n event.preventDefault();\n setSaving(true);\n };\n\n const onValueChange = useCallback(\n (newValue: IElementValue[]) => {\n setValueArr(newValue);\n },\n [setValueArr],\n );\n\n let srvComponent;\n switch (service) {\n case notifyPostgres: {\n srvComponent = ;\n break;\n }\n case notifyMysql: {\n srvComponent = ;\n break;\n }\n default: {\n const fields = get(notificationEndpointsFields, service, []);\n\n srvComponent = (\n \n );\n }\n }\n\n const targetElement = destinationList.find(\n (element) => element.actionTrigger === service,\n );\n\n useEffect(() => {\n dispatch(setHelpName(\"add_notification_endpoint\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n \n navigate(IAM_PAGES.EVENT_DESTINATIONS_ADD)}\n />\n \n }\n actions={}\n />\n\n \n

    \n {service !== \"\" && (\n \n \n {targetElement && (\n \n )}\n \n \n \n setIdentifier(e.target.value)}\n tooltip={\"Unique descriptive string for this destination\"}\n placeholder=\"Enter Destination Identifier\"\n required\n />\n \n \n {srvComponent}\n \n \n \n \n \n \n )}\n
    \n \n \n );\n};\n\nexport default withStyles(styles)(AddEventDestination);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { NotificationEndpointItem } from \"api/consoleApi\";\nimport { IElementValue } from \"../Configurations/types\";\nimport { TransformedEndpointItem } from \"./types\";\n\nexport const notifyPostgres = \"notify_postgres\";\nexport const notifyMysql = \"notify_mysql\";\nexport const notifyKafka = \"notify_kafka\";\nexport const notifyAmqp = \"notify_amqp\";\nexport const notifyMqtt = \"notify_mqtt\";\nexport const notifyRedis = \"notify_redis\";\nexport const notifyNats = \"notify_nats\";\nexport const notifyElasticsearch = \"notify_elasticsearch\";\nexport const notifyWebhooks = \"notify_webhook\";\nexport const notifyNsq = \"notify_nsq\";\n\nexport const notificationTransform = (\n notificationElements: NotificationEndpointItem[],\n) => {\n return notificationElements.map((element) => {\n return {\n service_name: `${element.service}:${element.account_id}`,\n name: element.service,\n account_id: element.account_id,\n status: element.status,\n };\n }) as TransformedEndpointItem[];\n};\n\nexport class DestType {\n static DB: string = \"database\";\n static Queue: string = \"queue\";\n static Func: string = \"functions\";\n}\n\nexport const destinationList = [\n {\n actionTrigger: notifyPostgres,\n targetTitle: \"PostgreSQL\",\n logo: \"/postgres-logo.svg\",\n category: DestType.DB,\n },\n {\n actionTrigger: notifyKafka,\n targetTitle: \"Kafka\",\n logo: \"/kafka-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyAmqp,\n targetTitle: \"AMQP\",\n logo: \"/amqp-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyMqtt,\n targetTitle: \"MQTT\",\n logo: \"/mqtt-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyRedis,\n targetTitle: \"Redis\",\n logo: \"/redis-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyNats,\n targetTitle: \"NATS\",\n logo: \"/nats-logo.svg\",\n category: DestType.Queue,\n },\n {\n actionTrigger: notifyMysql,\n targetTitle: \"Mysql\",\n logo: \"/mysql-logo.svg\",\n category: DestType.DB,\n },\n {\n actionTrigger: notifyElasticsearch,\n targetTitle: \"Elastic Search\",\n logo: \"/elasticsearch-logo.svg\",\n category: DestType.DB,\n },\n {\n actionTrigger: notifyWebhooks,\n targetTitle: \"Webhook\",\n logo: \"/webhooks-logo.svg\",\n category: DestType.Func,\n },\n {\n actionTrigger: notifyNsq,\n targetTitle: \"NSQ\",\n logo: \"/nsq-logo.svg\",\n category: DestType.Queue,\n },\n];\n\nconst commonFields = [\n {\n name: \"queue_dir\",\n label: \"Queue Directory\",\n required: false,\n\n tooltip: \"Staging directory for undelivered messages e.g. '/home/events'\",\n type: \"string\",\n placeholder: \"Enter Queue Directory\",\n },\n {\n name: \"queue_limit\",\n label: \"Queue Limit\",\n required: false,\n\n tooltip: \"Maximum limit for undelivered messages, defaults to '10000'\",\n type: \"number\",\n placeholder: \"Enter Queue Limit\",\n },\n {\n name: \"comment\",\n label: \"Comment\",\n required: false,\n type: \"comment\",\n placeholder: \"Enter custom notes if any\",\n },\n];\n\nexport const removeEmptyFields = (formFields: IElementValue[]) => {\n const nonEmptyFields = formFields.filter((field) => field.value !== \"\");\n\n return nonEmptyFields;\n};\n\nexport const notificationEndpointsFields: any = {\n [notifyKafka]: [\n {\n name: \"brokers\",\n label: \"Brokers\",\n required: true,\n\n tooltip: \"Comma separated list of Kafka broker addresses\",\n type: \"string\",\n placeholder: \"Enter Brokers\",\n },\n {\n name: \"topic\",\n label: \"Topic\",\n tooltip: \"Kafka topic used for bucket notifications\",\n type: \"string\",\n placeholder: \"Enter Topic\",\n },\n {\n name: \"sasl_username\",\n label: \"SASL Username\",\n tooltip: \"Username for SASL/PLAIN or SASL/SCRAM authentication\",\n type: \"string\",\n placeholder: \"Enter SASL Username\",\n },\n {\n name: \"sasl_password\",\n label: \"SASL Password\",\n tooltip: \"Password for SASL/PLAIN or SASL/SCRAM authentication\",\n type: \"string\",\n placeholder: \"Enter SASL Password\",\n },\n {\n name: \"sasl_mechanism\",\n label: \"SASL Mechanism\",\n tooltip: \"SASL authentication mechanism, default 'PLAIN'\",\n type: \"string\",\n },\n {\n name: \"tls_client_auth\",\n label: \"TLS Client Auth\",\n tooltip:\n \"Client Auth determines the Kafka server's policy for TLS client authorization\",\n type: \"string\",\n placeholder: \"Enter TLS Client Auth\",\n },\n {\n name: \"sasl\",\n label: \"SASL\",\n tooltip: \"Set to 'on' to enable SASL authentication\",\n type: \"on|off\",\n },\n {\n name: \"tls\",\n label: \"TLS\",\n tooltip: \"Set to 'on' to enable TLS\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n label: \"TLS skip verify\",\n tooltip:\n 'Trust server TLS without verification, defaults to \"on\" (verify)',\n type: \"on|off\",\n },\n {\n name: \"client_tls_cert\",\n label: \"client TLS cert\",\n tooltip: \"Path to client certificate for mTLS authorization\",\n type: \"path\",\n placeholder: \"Enter TLS Client Cert\",\n },\n {\n name: \"client_tls_key\",\n label: \"client TLS key\",\n tooltip: \"Path to client key for mTLS authorization\",\n type: \"path\",\n placeholder: \"Enter TLS Client Key\",\n },\n {\n name: \"version\",\n label: \"Version\",\n tooltip: \"Specify the version of the Kafka cluster e.g '2.2.0'\",\n type: \"string\",\n placeholder: \"Enter Kafka Version\",\n },\n ...commonFields,\n ],\n [notifyAmqp]: [\n {\n name: \"url\",\n required: true,\n label: \"URL\",\n tooltip:\n \"AMQP server endpoint e.g. `amqp://myuser:mypassword@localhost:5672`\",\n type: \"url\",\n },\n {\n name: \"exchange\",\n label: \"Exchange\",\n tooltip: \"Name of the AMQP exchange\",\n type: \"string\",\n placeholder: \"Enter Exchange\",\n },\n {\n name: \"exchange_type\",\n label: \"Exchange Type\",\n tooltip: \"AMQP exchange type\",\n type: \"string\",\n placeholder: \"Enter Exchange Type\",\n },\n {\n name: \"routing_key\",\n label: \"Routing Key\",\n tooltip: \"Routing key for publishing\",\n type: \"string\",\n placeholder: \"Enter Routing Key\",\n },\n {\n name: \"mandatory\",\n label: \"Mandatory\",\n tooltip:\n \"Quietly ignore undelivered messages when set to 'off', default is 'on'\",\n type: \"on|off\",\n },\n {\n name: \"durable\",\n label: \"Durable\",\n tooltip:\n \"Persist queue across broker restarts when set to 'on', default is 'off'\",\n type: \"on|off\",\n },\n {\n name: \"no_wait\",\n label: \"No Wait\",\n tooltip:\n \"Non-blocking message delivery when set to 'on', default is 'off'\",\n type: \"on|off\",\n },\n {\n name: \"internal\",\n label: \"Internal\",\n tooltip:\n \"Set to 'on' for exchange to be not used directly by publishers, but only when bound to other exchanges\",\n type: \"on|off\",\n },\n {\n name: \"auto_deleted\",\n label: \"Auto Deleted\",\n tooltip:\n \"Auto delete queue when set to 'on', when there are no consumers\",\n type: \"on|off\",\n },\n {\n name: \"delivery_mode\",\n label: \"Delivery Mode\",\n tooltip: \"Set to '1' for non-persistent or '2' for persistent queue\",\n type: \"number\",\n placeholder: \"Enter Delivery Mode\",\n },\n ...commonFields,\n ],\n [notifyRedis]: [\n {\n name: \"address\",\n required: true,\n label: \"Address\",\n tooltip: \"Redis server's address e.g. `localhost:6379`\",\n type: \"address\",\n placeholder: \"Enter Address\",\n },\n {\n name: \"key\",\n required: true,\n label: \"Key\",\n tooltip: \"Redis key to store/update events, key is auto-created\",\n type: \"string\",\n placeholder: \"Enter Key\",\n },\n {\n name: \"password\",\n label: \"Password\",\n tooltip: \"Redis server password\",\n type: \"string\",\n placeholder: \"Enter Password\",\n },\n ...commonFields,\n ],\n [notifyMqtt]: [\n {\n name: \"broker\",\n required: true,\n label: \"Broker\",\n tooltip: \"MQTT server endpoint e.g. `tcp://localhost:1883`\",\n type: \"uri\",\n placeholder: \"Enter Brokers\",\n },\n {\n name: \"topic\",\n required: true,\n label: \"Topic\",\n tooltip: \"Name of the MQTT topic to publish\",\n type: \"string\",\n placeholder: \"Enter Topic\",\n },\n {\n name: \"username\",\n label: \"Username\",\n tooltip: \"MQTT username\",\n type: \"string\",\n placeholder: \"Enter Username\",\n },\n {\n name: \"password\",\n label: \"Password\",\n tooltip: \"MQTT password\",\n type: \"string\",\n placeholder: \"Enter Password\",\n },\n {\n name: \"qos\",\n label: \"QOS\",\n tooltip: \"Set the quality of service priority, defaults to '0'\",\n type: \"number\",\n placeholder: \"Enter QOS\",\n },\n {\n name: \"keep_alive_interval\",\n label: \"Keep Alive Interval\",\n tooltip: \"Keep-alive interval for MQTT connections in s,m,h,d\",\n type: \"duration\",\n placeholder: \"Enter Keep Alive Interval\",\n },\n {\n name: \"reconnect_interval\",\n label: \"Reconnect Interval\",\n tooltip: \"Reconnect interval for MQTT connections in s,m,h,d\",\n type: \"duration\",\n placeholder: \"Enter Reconnect Interval\",\n },\n ...commonFields,\n ],\n [notifyNats]: [\n {\n name: \"address\",\n required: true,\n label: \"Address\",\n tooltip: \"NATS server address e.g. '0.0.0.0:4222'\",\n type: \"address\",\n placeholder: \"Enter Address\",\n },\n {\n name: \"subject\",\n required: true,\n label: \"Subject\",\n tooltip: \"NATS subscription subject\",\n type: \"string\",\n placeholder: \"Enter NATS Subject\",\n },\n {\n name: \"username\",\n label: \"Username\",\n tooltip: \"NATS username\",\n type: \"string\",\n placeholder: \"Enter NATS Username\",\n },\n {\n name: \"password\",\n label: \"Password\",\n tooltip: \"NATS password\",\n type: \"string\",\n placeholder: \"Enter NATS password\",\n },\n {\n name: \"token\",\n label: \"Token\",\n tooltip: \"NATS token\",\n type: \"string\",\n placeholder: \"Enter NATS token\",\n },\n {\n name: \"tls\",\n label: \"TLS\",\n tooltip: \"Set to 'on' to enable TLS\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n label: \"TLS Skip Verify\",\n tooltip:\n 'Trust server TLS without verification, defaults to \"on\" (verify)',\n type: \"on|off\",\n },\n {\n name: \"ping_interval\",\n label: \"Ping Interval\",\n tooltip: \"Client ping commands interval in s,m,h,d. Disabled by default\",\n type: \"duration\",\n placeholder: \"Enter Ping Interval\",\n },\n {\n name: \"streaming\",\n label: \"Streaming\",\n tooltip: \"Set to 'on' to use streaming NATS server\",\n type: \"on|off\",\n },\n {\n name: \"streaming_async\",\n label: \"Streaming async\",\n tooltip: \"Set to 'on' to enable asynchronous publish\",\n type: \"on|off\",\n },\n {\n name: \"streaming_max_pub_acks_in_flight\",\n label: \"Streaming max publish ACKS in flight\",\n tooltip: \"Number of messages to publish without waiting for ACKs\",\n type: \"number\",\n placeholder: \"Enter Streaming in flight value\",\n },\n {\n name: \"streaming_cluster_id\",\n label: \"Streaming Cluster ID\",\n tooltip: \"Unique ID for NATS streaming cluster\",\n type: \"string\",\n placeholder: \"Enter Streaming Cluster ID\",\n },\n {\n name: \"cert_authority\",\n label: \"Cert Authority\",\n tooltip: \"Path to certificate chain of the target NATS server\",\n type: \"string\",\n placeholder: \"Enter Cert Authority\",\n },\n {\n name: \"client_cert\",\n label: \"Client Cert\",\n tooltip: \"Client cert for NATS mTLS auth\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_key\",\n label: \"Client Key\",\n tooltip: \"Client cert key for NATS mTLS authorization\",\n type: \"string\",\n placeholder: \"Enter Client Key\",\n },\n ...commonFields,\n ],\n [notifyElasticsearch]: [\n {\n name: \"url\",\n required: true,\n label: \"URL\",\n tooltip:\n \"Elasticsearch server's address, with optional authentication info\",\n type: \"url\",\n placeholder: \"Enter URL\",\n },\n {\n name: \"index\",\n required: true,\n label: \"Index\",\n tooltip:\n \"Elasticsearch index to store/update events, index is auto-created\",\n type: \"string\",\n placeholder: \"Enter Index\",\n },\n {\n name: \"format\",\n required: true,\n label: \"Format\",\n tooltip:\n \"'namespace' reflects current bucket/object list and 'access' reflects a journal of object operations, defaults to 'namespace'\",\n type: \"enum\",\n placeholder: \"Enter Format\",\n },\n ...commonFields,\n ],\n [notifyWebhooks]: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n tooltip:\n \"Webhook server endpoint e.g. http://localhost:8080/minio/events\",\n type: \"url\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n label: \"Auth Token\",\n tooltip: \"Opaque string or JWT authorization token\",\n type: \"string\",\n placeholder: \"Enter auth_token\",\n },\n ...commonFields,\n ],\n [notifyNsq]: [\n {\n name: \"nsqd_address\",\n required: true,\n label: \"NSQD Address\",\n tooltip: \"NSQ server address e.g. '127.0.0.1:4150'\",\n type: \"address\",\n placeholder: \"Enter nsqd_address\",\n },\n {\n name: \"topic\",\n required: true,\n label: \"Topic\",\n tooltip: \"NSQ topic\",\n type: \"string\",\n placeholder: \"Enter Topic\",\n },\n {\n name: \"tls\",\n label: \"TLS\",\n tooltip: \"Set to 'on' to enable TLS\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n label: \"TLS Skip Verify\",\n tooltip:\n 'Trust server TLS without verification, defaults to \"on\" (verify)',\n type: \"on|off\",\n },\n ...commonFields,\n ],\n};\n\nconst serviceToConfigMap: Record = {\n webhook: \"notify_webhook\",\n amqp: \"notify_amqp\",\n kafka: \"notify_kafka\",\n mqtt: \"notify_mqtt\",\n nats: \"notify_nats\",\n nsq: \"notify_nsq\",\n mysql: \"notify_mysql\",\n postgresql: \"notify_postgres\", //looks different in server response(postgresql as opposed to postgres) from restapi/admin_notification_endpoints.go\n elasticsearch: \"notify_elasticsearch\",\n redis: \"notify_redis\",\n};\n\nexport const getNotificationConfigKey = (serviceName: string) => {\n return serviceToConfigMap[serviceName];\n};\n"],"names":["WrappedComponent","fallback","arguments","length","undefined","props","_jsx","Suspense","children","_objectSpread","TargetBase","styled","div","_ref","theme","background","get","border","concat","borderRadius","height","display","alignItems","justifyContent","marginBottom","cursor","padding","overflow","backgroundColor","width","maxWidth","maxHeight","filter","color","fontSize","fontFamily","paddingLeft","_ref2","logoSrc","title","_jsxs","Box","className","src","alt","ConfMySql","withSuspense","React","ConfTargetGeneric","ConfPostgres","withStyles","createStyles","modalBasic","settingsCommon","saveAndRefresh","classes","dispatch","useAppDispatch","navigate","useNavigate","params","useParams","_useState","useState","_useState2","_slicedToArray","valuesArr","setValueArr","_useState3","_useState4","identifier","setIdentifier","_useState5","_useState6","saving","setSaving","service","useEffect","payload","key_values","removeEmptyFields","api","configs","setConfig","then","setServerNeedsRestart","setDestinationLoading","IAM_PAGES","EVENT_DESTINATIONS","catch","err","setErrorSnackMessage","errorToHandler","error","srvComponent","onValueChange","useCallback","newValue","notifyPostgres","onChange","notifyMysql","fields","notificationEndpointsFields","targetElement","destinationList","find","element","actionTrigger","setHelpName","Fragment","PageHeaderWrapper","label","BackLink","onClick","EVENT_DESTINATIONS_ADD","actions","HelpMenu","PageLayout","noValidate","onSubmit","event","preventDefault","Grid","item","xs","TargetTitle","logo","targetTitle","FormLayout","formFieldRow","sx","InputBox","id","name","value","e","target","tooltip","placeholder","required","marginTop","Button","type","variant","disabled","trim","notifyKafka","notifyAmqp","notifyMqtt","notifyRedis","notifyNats","notifyElasticsearch","notifyWebhooks","notifyNsq","notificationTransform","notificationElements","map","service_name","account_id","status","DestType","_createClass","_classCallCheck","DB","Queue","Func","category","commonFields","formFields","field","_notificationEndpoint","_defineProperty","serviceToConfigMap","webhook","amqp","kafka","mqtt","nats","nsq","mysql","postgresql","elasticsearch","redis","getNotificationConfigKey","serviceName"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/817.ae83167e.chunk.js b/portal-ui/build/static/js/817.ae83167e.chunk.js new file mode 100644 index 0000000000..36cc882d57 --- /dev/null +++ b/portal-ui/build/static/js/817.ae83167e.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[817],{96285:function(e,t,n){n.d(t,{_:function(){return l}});var o=n(87462),r=n(75878),a=n(21217),i=n(55891);function l(e){return(0,a.Z)("MuiFilledInput",e)}var s=(0,o.Z)({},i.Z,(0,r.Z)("MuiFilledInput",["root","underline","input"]));t.Z=s},86779:function(e,t,n){n.d(t,{l:function(){return l}});var o=n(87462),r=n(75878),a=n(21217),i=n(55891);function l(e){return(0,a.Z)("MuiInput",e)}var s=(0,o.Z)({},i.Z,(0,r.Z)("MuiInput",["root","underline","input"]));t.Z=s},55891:function(e,t,n){n.d(t,{u:function(){return a}});var o=n(75878),r=n(21217);function a(e){return(0,r.Z)("MuiInputBase",e)}var i=(0,o.Z)("MuiInputBase",["root","formControl","focused","disabled","adornedStart","adornedEnd","error","sizeSmall","multiline","colorSecondary","fullWidth","hiddenLabel","readOnly","input","inputSizeSmall","inputMultiline","inputTypeSearch","inputAdornedStart","inputAdornedEnd","inputHiddenLabel"]);t.Z=i},30829:function(e,t,n){n.d(t,{Z:function(){return w}});var o=n(4942),r=n(63366),a=n(87462),i=n(72791),l=n(94419),s=n(63733),d=n(76147),u=n(52930),c=n(17133),p=n(10843),m=n(31402),f=n(14036),v=n(66934),h=n(75878),b=n(21217);function Z(e){return(0,b.Z)("MuiInputLabel",e)}(0,h.Z)("MuiInputLabel",["root","focused","disabled","error","required","asterisk","formControl","sizeSmall","shrink","animated","standard","filled","outlined"]);var g=n(80184),x=["disableAnimation","margin","shrink","variant","className"],y=(0,v.ZP)(c.Z,{shouldForwardProp:function(e){return(0,v.FO)(e)||"classes"===e},name:"MuiInputLabel",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState;return[(0,o.Z)({},"& .".concat(p.Z.asterisk),t.asterisk),t.root,n.formControl&&t.formControl,"small"===n.size&&t.sizeSmall,n.shrink&&t.shrink,!n.disableAnimation&&t.animated,t[n.variant]]}})((function(e){var t=e.theme,n=e.ownerState;return(0,a.Z)({display:"block",transformOrigin:"top left",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%"},n.formControl&&{position:"absolute",left:0,top:0,transform:"translate(0, 20px) scale(1)"},"small"===n.size&&{transform:"translate(0, 17px) scale(1)"},n.shrink&&{transform:"translate(0, -1.5px) scale(0.75)",transformOrigin:"top left",maxWidth:"133%"},!n.disableAnimation&&{transition:t.transitions.create(["color","transform","max-width"],{duration:t.transitions.duration.shorter,easing:t.transitions.easing.easeOut})},"filled"===n.variant&&(0,a.Z)({zIndex:1,pointerEvents:"none",transform:"translate(12px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},"small"===n.size&&{transform:"translate(12px, 13px) scale(1)"},n.shrink&&(0,a.Z)({userSelect:"none",pointerEvents:"auto",transform:"translate(12px, 7px) scale(0.75)",maxWidth:"calc(133% - 24px)"},"small"===n.size&&{transform:"translate(12px, 4px) scale(0.75)"})),"outlined"===n.variant&&(0,a.Z)({zIndex:1,pointerEvents:"none",transform:"translate(14px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},"small"===n.size&&{transform:"translate(14px, 9px) scale(1)"},n.shrink&&{userSelect:"none",pointerEvents:"auto",maxWidth:"calc(133% - 32px)",transform:"translate(14px, -9px) scale(0.75)"}))})),w=i.forwardRef((function(e,t){var n=(0,m.Z)({name:"MuiInputLabel",props:e}),o=n.disableAnimation,i=void 0!==o&&o,c=n.shrink,p=n.className,v=(0,r.Z)(n,x),h=(0,u.Z)(),b=c;"undefined"===typeof b&&h&&(b=h.filled||h.focused||h.adornedStart);var w=(0,d.Z)({props:n,muiFormControl:h,states:["size","variant","required"]}),S=(0,a.Z)({},n,{disableAnimation:i,formControl:h,shrink:b,size:w.size,variant:w.variant,required:w.required}),C=function(e){var t=e.classes,n=e.formControl,o=e.size,r=e.shrink,i=e.disableAnimation,s=e.variant,d=e.required,u={root:["root",n&&"formControl",!i&&"animated",r&&"shrink",o&&"normal"!==o&&"size".concat((0,f.Z)(o)),s],asterisk:[d&&"asterisk"]},c=(0,l.Z)(u,Z,t);return(0,a.Z)({},t,c)}(S);return(0,g.jsx)(y,(0,a.Z)({"data-shrink":b,ownerState:S,ref:t,className:(0,s.Z)(C.root,p)},v,{classes:C}))}))},56059:function(e,t,n){n.d(t,{e:function(){return l}});var o=n(87462),r=n(75878),a=n(21217),i=n(55891);function l(e){return(0,a.Z)("MuiOutlinedInput",e)}var s=(0,o.Z)({},i.Z,(0,r.Z)("MuiOutlinedInput",["root","notchedOutline","input"]));t.Z=s},20817:function(e,t,n){n.d(t,{Z:function(){return ut}});var o=n(87462),r=n(63366),a=n(72791),i=n(63733),l=n(94419),s=n(18252),d=n(66934),u=n(31402),c=n(4942),p=n(93433),m=n(82466),f=n(29439),v=n(46189),h=n(54164),b=n(6117),Z=n(65202),g=n(62876),x=n(82254),y=n(80184),w=["onChange","maxRows","minRows","style","value"];function S(e){return parseInt(e,10)||0}var C={visibility:"hidden",position:"absolute",overflow:"hidden",height:0,top:0,left:0,transform:"translateZ(0)"};function R(e){return void 0===e||null===e||0===Object.keys(e).length||0===e.outerHeightStyle&&!e.overflow}var k=a.forwardRef((function(e,t){var n=e.onChange,i=e.maxRows,l=e.minRows,s=void 0===l?1:l,d=e.style,u=e.value,c=(0,r.Z)(e,w),p=a.useRef(null!=u).current,m=a.useRef(null),v=(0,b.Z)(t,m),k=a.useRef(null),I=a.useRef(0),P=a.useState({outerHeightStyle:0}),F=(0,f.Z)(P,2),O=F[0],z=F[1],M=a.useCallback((function(){var t=m.current,n=(0,Z.Z)(t).getComputedStyle(t);if("0px"===n.width)return{outerHeightStyle:0};var o=k.current;o.style.width=n.width,o.value=t.value||e.placeholder||"x","\n"===o.value.slice(-1)&&(o.value+=" ");var r=n.boxSizing,a=S(n.paddingBottom)+S(n.paddingTop),l=S(n.borderBottomWidth)+S(n.borderTopWidth),d=o.scrollHeight;o.value="x";var u=o.scrollHeight,c=d;return s&&(c=Math.max(Number(s)*u,c)),i&&(c=Math.min(Number(i)*u,c)),{outerHeightStyle:(c=Math.max(c,u))+("border-box"===r?a+l:0),overflow:Math.abs(c-d)<=1}}),[i,s,e.placeholder]),W=function(e,t){var n=t.outerHeightStyle,o=t.overflow;return I.current<20&&(n>0&&Math.abs((e.outerHeightStyle||0)-n)>1||e.overflow!==o)?(I.current+=1,{overflow:o,outerHeightStyle:n}):e},B=a.useCallback((function(){var e=M();R(e)||z((function(t){return W(t,e)}))}),[M]);(0,g.Z)((function(){var e,t,n=function(){I.current=0,function(){var e=M();R(e)||h.flushSync((function(){z((function(t){return W(t,e)}))}))}()},o=(0,x.Z)(n),r=m.current,a=(0,Z.Z)(r);return a.addEventListener("resize",o),"undefined"!==typeof ResizeObserver&&(t=new ResizeObserver(n)).observe(r),function(){o.clear(),cancelAnimationFrame(e),a.removeEventListener("resize",o),t&&t.disconnect()}}),[M]),(0,g.Z)((function(){B()})),a.useEffect((function(){I.current=0}),[u]);return(0,y.jsxs)(a.Fragment,{children:[(0,y.jsx)("textarea",(0,o.Z)({value:u,onChange:function(e){I.current=0,p||B(),n&&n(e)},ref:v,rows:s,style:(0,o.Z)({height:O.outerHeightStyle,overflow:O.overflow?"hidden":void 0},d)},c)),(0,y.jsx)("textarea",{"aria-hidden":!0,className:e.className,readOnly:!0,ref:k,tabIndex:-1,style:(0,o.Z)({},C,d,{paddingTop:0,paddingBottom:0})})]})})),I=n(20627),P=n(76147),F=n(93840),O=n(52930),z=n(14036),M=n(42071),W=n(40162),B=n(52554);function A(e){var t=e.styles,n=e.defaultTheme,o=void 0===n?{}:n,r="function"===typeof t?function(e){return t(void 0===(n=e)||null===n||0===Object.keys(n).length?o:e);var n}:t;return(0,y.jsx)(B.xB,{styles:r})}var N=n(30418);var j=function(e){var t=e.styles,n=e.themeId,o=e.defaultTheme,r=void 0===o?{}:o,a=(0,N.Z)(r),i="function"===typeof t?t(n&&a[n]||a):t;return(0,y.jsx)(A,{styles:i})},T=n(36482),L=n(988);var E=function(e){return(0,y.jsx)(j,(0,o.Z)({},e,{defaultTheme:T.Z,themeId:L.Z}))},H=n(35470),q=n(55891),D=["aria-describedby","autoComplete","autoFocus","className","color","components","componentsProps","defaultValue","disabled","disableInjectingGlobalStyles","endAdornment","error","fullWidth","id","inputComponent","inputProps","inputRef","margin","maxRows","minRows","multiline","name","onBlur","onChange","onClick","onFocus","onKeyDown","onKeyUp","placeholder","readOnly","renderSuffix","rows","size","slotProps","slots","startAdornment","type","value"],U=function(e,t){var n=e.ownerState;return[t.root,n.formControl&&t.formControl,n.startAdornment&&t.adornedStart,n.endAdornment&&t.adornedEnd,n.error&&t.error,"small"===n.size&&t.sizeSmall,n.multiline&&t.multiline,n.color&&t["color".concat((0,z.Z)(n.color))],n.fullWidth&&t.fullWidth,n.hiddenLabel&&t.hiddenLabel]},V=function(e,t){var n=e.ownerState;return[t.input,"small"===n.size&&t.inputSizeSmall,n.multiline&&t.inputMultiline,"search"===n.type&&t.inputTypeSearch,n.startAdornment&&t.inputAdornedStart,n.endAdornment&&t.inputAdornedEnd,n.hiddenLabel&&t.inputHiddenLabel]},K=(0,d.ZP)("div",{name:"MuiInputBase",slot:"Root",overridesResolver:U})((function(e){var t=e.theme,n=e.ownerState;return(0,o.Z)({},t.typography.body1,(0,c.Z)({color:(t.vars||t).palette.text.primary,lineHeight:"1.4375em",boxSizing:"border-box",position:"relative",cursor:"text",display:"inline-flex",alignItems:"center"},"&.".concat(q.Z.disabled),{color:(t.vars||t).palette.text.disabled,cursor:"default"}),n.multiline&&(0,o.Z)({padding:"4px 0 5px"},"small"===n.size&&{paddingTop:1}),n.fullWidth&&{width:"100%"})})),X=(0,d.ZP)("input",{name:"MuiInputBase",slot:"Input",overridesResolver:V})((function(e){var t,n=e.theme,r=e.ownerState,a="light"===n.palette.mode,i=(0,o.Z)({color:"currentColor"},n.vars?{opacity:n.vars.opacity.inputPlaceholder}:{opacity:a?.42:.5},{transition:n.transitions.create("opacity",{duration:n.transitions.duration.shorter})}),l={opacity:"0 !important"},s=n.vars?{opacity:n.vars.opacity.inputPlaceholder}:{opacity:a?.42:.5};return(0,o.Z)((t={font:"inherit",letterSpacing:"inherit",color:"currentColor",padding:"4px 0 5px",border:0,boxSizing:"content-box",background:"none",height:"1.4375em",margin:0,WebkitTapHighlightColor:"transparent",display:"block",minWidth:0,width:"100%",animationName:"mui-auto-fill-cancel",animationDuration:"10ms","&::-webkit-input-placeholder":i,"&::-moz-placeholder":i,"&:-ms-input-placeholder":i,"&::-ms-input-placeholder":i,"&:focus":{outline:0},"&:invalid":{boxShadow:"none"},"&::-webkit-search-decoration":{WebkitAppearance:"none"}},(0,c.Z)(t,"label[data-shrink=false] + .".concat(q.Z.formControl," &"),{"&::-webkit-input-placeholder":l,"&::-moz-placeholder":l,"&:-ms-input-placeholder":l,"&::-ms-input-placeholder":l,"&:focus::-webkit-input-placeholder":s,"&:focus::-moz-placeholder":s,"&:focus:-ms-input-placeholder":s,"&:focus::-ms-input-placeholder":s}),(0,c.Z)(t,"&.".concat(q.Z.disabled),{opacity:1,WebkitTextFillColor:(n.vars||n).palette.text.disabled}),(0,c.Z)(t,"&:-webkit-autofill",{animationDuration:"5000s",animationName:"mui-auto-fill"}),t),"small"===r.size&&{paddingTop:1},r.multiline&&{height:"auto",resize:"none",padding:0,paddingTop:0},"search"===r.type&&{MozAppearance:"textfield"})})),_=(0,y.jsx)(E,{styles:{"@keyframes mui-auto-fill":{from:{display:"block"}},"@keyframes mui-auto-fill-cancel":{from:{display:"block"}}}}),G=a.forwardRef((function(e,t){var n,s=(0,u.Z)({props:e,name:"MuiInputBase"}),d=s["aria-describedby"],c=s.autoComplete,p=s.autoFocus,m=s.className,h=s.components,b=void 0===h?{}:h,Z=s.componentsProps,g=void 0===Z?{}:Z,x=s.defaultValue,w=s.disabled,S=s.disableInjectingGlobalStyles,C=s.endAdornment,R=s.fullWidth,B=void 0!==R&&R,A=s.id,N=s.inputComponent,j=void 0===N?"input":N,T=s.inputProps,L=void 0===T?{}:T,E=s.inputRef,U=s.maxRows,V=s.minRows,G=s.multiline,J=void 0!==G&&G,Q=s.name,Y=s.onBlur,$=s.onChange,ee=s.onClick,te=s.onFocus,ne=s.onKeyDown,oe=s.onKeyUp,re=s.placeholder,ae=s.readOnly,ie=s.renderSuffix,le=s.rows,se=s.slotProps,de=void 0===se?{}:se,ue=s.slots,ce=void 0===ue?{}:ue,pe=s.startAdornment,me=s.type,fe=void 0===me?"text":me,ve=s.value,he=(0,r.Z)(s,D),be=null!=L.value?L.value:ve,Ze=a.useRef(null!=be).current,ge=a.useRef(),xe=a.useCallback((function(e){0}),[]),ye=(0,M.Z)(ge,E,L.ref,xe),we=a.useState(!1),Se=(0,f.Z)(we,2),Ce=Se[0],Re=Se[1],ke=(0,O.Z)();var Ie=(0,P.Z)({props:s,muiFormControl:ke,states:["color","disabled","error","hiddenLabel","size","required","filled"]});Ie.focused=ke?ke.focused:Ce,a.useEffect((function(){!ke&&w&&Ce&&(Re(!1),Y&&Y())}),[ke,w,Ce,Y]);var Pe=ke&&ke.onFilled,Fe=ke&&ke.onEmpty,Oe=a.useCallback((function(e){(0,H.vd)(e)?Pe&&Pe():Fe&&Fe()}),[Pe,Fe]);(0,W.Z)((function(){Ze&&Oe({value:be})}),[be,Oe,Ze]);a.useEffect((function(){Oe(ge.current)}),[]);var ze=j,Me=L;J&&"input"===ze&&(Me=le?(0,o.Z)({type:void 0,minRows:le,maxRows:le},Me):(0,o.Z)({type:void 0,maxRows:U,minRows:V},Me),ze=k);a.useEffect((function(){ke&&ke.setAdornedStart(Boolean(pe))}),[ke,pe]);var We=(0,o.Z)({},s,{color:Ie.color||"primary",disabled:Ie.disabled,endAdornment:C,error:Ie.error,focused:Ie.focused,formControl:ke,fullWidth:B,hiddenLabel:Ie.hiddenLabel,multiline:J,size:Ie.size,startAdornment:pe,type:fe}),Be=function(e){var t=e.classes,n=e.color,o=e.disabled,r=e.error,a=e.endAdornment,i=e.focused,s=e.formControl,d=e.fullWidth,u=e.hiddenLabel,c=e.multiline,p=e.readOnly,m=e.size,f=e.startAdornment,v=e.type,h={root:["root","color".concat((0,z.Z)(n)),o&&"disabled",r&&"error",d&&"fullWidth",i&&"focused",s&&"formControl",m&&"medium"!==m&&"size".concat((0,z.Z)(m)),c&&"multiline",f&&"adornedStart",a&&"adornedEnd",u&&"hiddenLabel",p&&"readOnly"],input:["input",o&&"disabled","search"===v&&"inputTypeSearch",c&&"inputMultiline","small"===m&&"inputSizeSmall",u&&"inputHiddenLabel",f&&"inputAdornedStart",a&&"inputAdornedEnd",p&&"readOnly"]};return(0,l.Z)(h,q.u,t)}(We),Ae=ce.root||b.Root||K,Ne=de.root||g.root||{},je=ce.input||b.Input||X;return Me=(0,o.Z)({},Me,null!=(n=de.input)?n:g.input),(0,y.jsxs)(a.Fragment,{children:[!S&&_,(0,y.jsxs)(Ae,(0,o.Z)({},Ne,!(0,I.X)(Ae)&&{ownerState:(0,o.Z)({},We,Ne.ownerState)},{ref:t,onClick:function(e){ge.current&&e.currentTarget===e.target&&ge.current.focus(),ee&&ee(e)}},he,{className:(0,i.Z)(Be.root,Ne.className,m,ae&&"MuiInputBase-readOnly"),children:[pe,(0,y.jsx)(F.Z.Provider,{value:null,children:(0,y.jsx)(je,(0,o.Z)({ownerState:We,"aria-invalid":Ie.error,"aria-describedby":d,autoComplete:c,autoFocus:p,defaultValue:x,disabled:Ie.disabled,id:A,onAnimationStart:function(e){Oe("mui-auto-fill-cancel"===e.animationName?ge.current:{value:"x"})},name:Q,placeholder:re,readOnly:ae,required:Ie.required,rows:le,value:be,onKeyDown:ne,onKeyUp:oe,type:fe},Me,!(0,I.X)(je)&&{as:ze,ownerState:(0,o.Z)({},We,Me.ownerState)},{ref:ye,className:(0,i.Z)(Be.input,Me.className,ae&&"MuiInputBase-readOnly"),onBlur:function(e){Y&&Y(e),L.onBlur&&L.onBlur(e),ke&&ke.onBlur?ke.onBlur(e):Re(!1)},onChange:function(e){if(!Ze){var t=e.target||ge.current;if(null==t)throw new Error((0,v.Z)(1));Oe({value:t.value})}for(var n=arguments.length,o=new Array(n>1?n-1:0),r=1;r span":{paddingLeft:5,paddingRight:5,display:"inline-block",opacity:0,visibility:"visible"}},t.notched&&{maxWidth:"100%",transition:n.transitions.create("max-width",{duration:100,easing:n.transitions.easing.easeOut,delay:50})}))}));var me=n(56059),fe=["components","fullWidth","inputComponent","label","multiline","notched","slots","type"],ve=(0,d.ZP)(K,{shouldForwardProp:function(e){return(0,d.FO)(e)||"classes"===e},name:"MuiOutlinedInput",slot:"Root",overridesResolver:U})((function(e){var t,n=e.theme,r=e.ownerState,a="light"===n.palette.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return(0,o.Z)((t={position:"relative",borderRadius:(n.vars||n).shape.borderRadius},(0,c.Z)(t,"&:hover .".concat(me.Z.notchedOutline),{borderColor:(n.vars||n).palette.text.primary}),(0,c.Z)(t,"@media (hover: none)",(0,c.Z)({},"&:hover .".concat(me.Z.notchedOutline),{borderColor:n.vars?"rgba(".concat(n.vars.palette.common.onBackgroundChannel," / 0.23)"):a})),(0,c.Z)(t,"&.".concat(me.Z.focused," .").concat(me.Z.notchedOutline),{borderColor:(n.vars||n).palette[r.color].main,borderWidth:2}),(0,c.Z)(t,"&.".concat(me.Z.error," .").concat(me.Z.notchedOutline),{borderColor:(n.vars||n).palette.error.main}),(0,c.Z)(t,"&.".concat(me.Z.disabled," .").concat(me.Z.notchedOutline),{borderColor:(n.vars||n).palette.action.disabled}),t),r.startAdornment&&{paddingLeft:14},r.endAdornment&&{paddingRight:14},r.multiline&&(0,o.Z)({padding:"16.5px 14px"},"small"===r.size&&{padding:"8.5px 14px"}))})),he=(0,d.ZP)((function(e){var t=e.className,n=e.label,a=e.notched,i=(0,r.Z)(e,ue),l=null!=n&&""!==n,s=(0,o.Z)({},e,{notched:a,withLabel:l});return(0,y.jsx)(ce,(0,o.Z)({"aria-hidden":!0,className:t,ownerState:s},i,{children:(0,y.jsx)(pe,{ownerState:s,children:l?(0,y.jsx)("span",{children:n}):se||(se=(0,y.jsx)("span",{className:"notranslate",children:"\u200b"}))})}))}),{name:"MuiOutlinedInput",slot:"NotchedOutline",overridesResolver:function(e,t){return t.notchedOutline}})((function(e){var t=e.theme,n="light"===t.palette.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return{borderColor:t.vars?"rgba(".concat(t.vars.palette.common.onBackgroundChannel," / 0.23)"):n}})),be=(0,d.ZP)(X,{name:"MuiOutlinedInput",slot:"Input",overridesResolver:V})((function(e){var t=e.theme,n=e.ownerState;return(0,o.Z)({padding:"16.5px 14px"},!t.vars&&{"&:-webkit-autofill":{WebkitBoxShadow:"light"===t.palette.mode?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:"light"===t.palette.mode?null:"#fff",caretColor:"light"===t.palette.mode?null:"#fff",borderRadius:"inherit"}},t.vars&&(0,c.Z)({"&:-webkit-autofill":{borderRadius:"inherit"}},t.getColorSchemeSelector("dark"),{"&:-webkit-autofill":{WebkitBoxShadow:"0 0 0 100px #266798 inset",WebkitTextFillColor:"#fff",caretColor:"#fff"}}),"small"===n.size&&{padding:"8.5px 14px"},n.multiline&&{padding:0},n.startAdornment&&{paddingLeft:0},n.endAdornment&&{paddingRight:0})})),Ze=a.forwardRef((function(e,t){var n,i,s,d,c,p=(0,u.Z)({props:e,name:"MuiOutlinedInput"}),m=p.components,f=void 0===m?{}:m,v=p.fullWidth,h=void 0!==v&&v,b=p.inputComponent,Z=void 0===b?"input":b,g=p.label,x=p.multiline,w=void 0!==x&&x,S=p.notched,C=p.slots,R=void 0===C?{}:C,k=p.type,I=void 0===k?"text":k,F=(0,r.Z)(p,fe),z=function(e){var t=e.classes,n=(0,l.Z)({root:["root"],notchedOutline:["notchedOutline"],input:["input"]},me.e,t);return(0,o.Z)({},t,n)}(p),M=(0,O.Z)(),W=(0,P.Z)({props:p,muiFormControl:M,states:["color","disabled","error","focused","hiddenLabel","size","required"]}),B=(0,o.Z)({},p,{color:W.color||"primary",disabled:W.disabled,error:W.error,focused:W.focused,formControl:M,fullWidth:h,hiddenLabel:W.hiddenLabel,multiline:w,size:W.size,type:I}),A=null!=(n=null!=(i=R.root)?i:f.Root)?n:ve,N=null!=(s=null!=(d=R.input)?d:f.Input)?s:be;return(0,y.jsx)(J,(0,o.Z)({slots:{root:A,input:N},renderSuffix:function(e){return(0,y.jsx)(he,{ownerState:B,className:z.notchedOutline,label:null!=g&&""!==g&&W.required?c||(c=(0,y.jsxs)(a.Fragment,{children:[g,"\u2009","*"]})):g,notched:"undefined"!==typeof S?S:Boolean(e.startAdornment||e.filled||e.focused)})},fullWidth:h,inputComponent:Z,multiline:w,ref:t,type:I},F,{classes:(0,o.Z)({},z,{notchedOutline:null})}))}));Ze.muiName="Input";var ge=Ze,xe=n(30829),ye=n(68096),we=n(75878),Se=n(21217);function Ce(e){return(0,Se.Z)("MuiFormHelperText",e)}var Re,ke=(0,we.Z)("MuiFormHelperText",["root","error","disabled","sizeSmall","sizeMedium","contained","focused","filled","required"]),Ie=["children","className","component","disabled","error","filled","focused","margin","required","variant"],Pe=(0,d.ZP)("p",{name:"MuiFormHelperText",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState;return[t.root,n.size&&t["size".concat((0,z.Z)(n.size))],n.contained&&t.contained,n.filled&&t.filled]}})((function(e){var t,n=e.theme,r=e.ownerState;return(0,o.Z)({color:(n.vars||n).palette.text.secondary},n.typography.caption,(t={textAlign:"left",marginTop:3,marginRight:0,marginBottom:0,marginLeft:0},(0,c.Z)(t,"&.".concat(ke.disabled),{color:(n.vars||n).palette.text.disabled}),(0,c.Z)(t,"&.".concat(ke.error),{color:(n.vars||n).palette.error.main}),t),"small"===r.size&&{marginTop:4},r.contained&&{marginLeft:14,marginRight:14})})),Fe=a.forwardRef((function(e,t){var n=(0,u.Z)({props:e,name:"MuiFormHelperText"}),a=n.children,s=n.className,d=n.component,c=void 0===d?"p":d,p=(0,r.Z)(n,Ie),m=(0,O.Z)(),f=(0,P.Z)({props:n,muiFormControl:m,states:["variant","size","disabled","error","filled","focused","required"]}),v=(0,o.Z)({},n,{component:c,contained:"filled"===f.variant||"outlined"===f.variant,variant:f.variant,size:f.size,disabled:f.disabled,error:f.error,filled:f.filled,focused:f.focused,required:f.required}),h=function(e){var t=e.classes,n=e.contained,o=e.size,r=e.disabled,a=e.error,i=e.filled,s=e.focused,d=e.required,u={root:["root",r&&"disabled",a&&"error",o&&"size".concat((0,z.Z)(o)),n&&"contained",s&&"focused",i&&"filled",d&&"required"]};return(0,l.Z)(u,Ce,t)}(v);return(0,y.jsx)(Pe,(0,o.Z)({as:c,ownerState:v,className:(0,i.Z)(h.root,s),ref:t},p,{children:" "===a?Re||(Re=(0,y.jsx)("span",{className:"notranslate",children:"\u200b"})):a}))})),Oe=(n(57441),n(98301)),ze=n(80911);function Me(e){return(0,Se.Z)("MuiNativeSelect",e)}var We=(0,we.Z)("MuiNativeSelect",["root","select","multiple","filled","outlined","standard","disabled","icon","iconOpen","iconFilled","iconOutlined","iconStandard","nativeInput","error"]),Be=["className","disabled","error","IconComponent","inputRef","variant"],Ae=function(e){var t,n=e.ownerState,r=e.theme;return(0,o.Z)((t={MozAppearance:"none",WebkitAppearance:"none",userSelect:"none",borderRadius:0,cursor:"pointer","&:focus":(0,o.Z)({},r.vars?{backgroundColor:"rgba(".concat(r.vars.palette.common.onBackgroundChannel," / 0.05)")}:{backgroundColor:"light"===r.palette.mode?"rgba(0, 0, 0, 0.05)":"rgba(255, 255, 255, 0.05)"},{borderRadius:0}),"&::-ms-expand":{display:"none"}},(0,c.Z)(t,"&.".concat(We.disabled),{cursor:"default"}),(0,c.Z)(t,"&[multiple]",{height:"auto"}),(0,c.Z)(t,"&:not([multiple]) option, &:not([multiple]) optgroup",{backgroundColor:(r.vars||r).palette.background.paper}),(0,c.Z)(t,"&&&",{paddingRight:24,minWidth:16}),t),"filled"===n.variant&&{"&&&":{paddingRight:32}},"outlined"===n.variant&&{borderRadius:(r.vars||r).shape.borderRadius,"&:focus":{borderRadius:(r.vars||r).shape.borderRadius},"&&&":{paddingRight:32}})},Ne=(0,d.ZP)("select",{name:"MuiNativeSelect",slot:"Select",shouldForwardProp:d.FO,overridesResolver:function(e,t){var n=e.ownerState;return[t.select,t[n.variant],n.error&&t.error,(0,c.Z)({},"&.".concat(We.multiple),t.multiple)]}})(Ae),je=function(e){var t=e.ownerState,n=e.theme;return(0,o.Z)((0,c.Z)({position:"absolute",right:0,top:"calc(50% - .5em)",pointerEvents:"none",color:(n.vars||n).palette.action.active},"&.".concat(We.disabled),{color:(n.vars||n).palette.action.disabled}),t.open&&{transform:"rotate(180deg)"},"filled"===t.variant&&{right:7},"outlined"===t.variant&&{right:7})},Te=(0,d.ZP)("svg",{name:"MuiNativeSelect",slot:"Icon",overridesResolver:function(e,t){var n=e.ownerState;return[t.icon,n.variant&&t["icon".concat((0,z.Z)(n.variant))],n.open&&t.iconOpen]}})(je),Le=a.forwardRef((function(e,t){var n=e.className,s=e.disabled,d=e.error,u=e.IconComponent,c=e.inputRef,p=e.variant,m=void 0===p?"standard":p,f=(0,r.Z)(e,Be),v=(0,o.Z)({},e,{disabled:s,variant:m,error:d}),h=function(e){var t=e.classes,n=e.variant,o=e.disabled,r=e.multiple,a=e.open,i={select:["select",n,o&&"disabled",r&&"multiple",e.error&&"error"],icon:["icon","icon".concat((0,z.Z)(n)),a&&"iconOpen",o&&"disabled"]};return(0,l.Z)(i,Me,t)}(v);return(0,y.jsxs)(a.Fragment,{children:[(0,y.jsx)(Ne,(0,o.Z)({ownerState:v,className:(0,i.Z)(h.select,n),disabled:s,ref:c||t},f)),e.multiple?null:(0,y.jsx)(Te,{as:u,ownerState:v,className:h.icon})]})})),Ee=n(98278);function He(e){return(0,Se.Z)("MuiSelect",e)}var qe,De=(0,we.Z)("MuiSelect",["root","select","multiple","filled","outlined","standard","disabled","focused","icon","iconOpen","iconFilled","iconOutlined","iconStandard","nativeInput","error"]),Ue=["aria-describedby","aria-label","autoFocus","autoWidth","children","className","defaultOpen","defaultValue","disabled","displayEmpty","error","IconComponent","inputRef","labelId","MenuProps","multiple","name","onBlur","onChange","onClose","onFocus","onOpen","open","readOnly","renderValue","SelectDisplayProps","tabIndex","type","value","variant"],Ve=(0,d.ZP)("div",{name:"MuiSelect",slot:"Select",overridesResolver:function(e,t){var n=e.ownerState;return[(0,c.Z)({},"&.".concat(De.select),t.select),(0,c.Z)({},"&.".concat(De.select),t[n.variant]),(0,c.Z)({},"&.".concat(De.error),t.error),(0,c.Z)({},"&.".concat(De.multiple),t.multiple)]}})(Ae,(0,c.Z)({},"&.".concat(De.select),{height:"auto",minHeight:"1.4375em",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"})),Ke=(0,d.ZP)("svg",{name:"MuiSelect",slot:"Icon",overridesResolver:function(e,t){var n=e.ownerState;return[t.icon,n.variant&&t["icon".concat((0,z.Z)(n.variant))],n.open&&t.iconOpen]}})(je),Xe=(0,d.ZP)("input",{shouldForwardProp:function(e){return(0,d.Dz)(e)&&"classes"!==e},name:"MuiSelect",slot:"NativeInput",overridesResolver:function(e,t){return t.nativeInput}})({bottom:0,left:0,position:"absolute",opacity:0,pointerEvents:"none",width:"100%",boxSizing:"border-box"});function _e(e,t){return"object"===typeof t&&null!==t?e===t:String(e)===String(t)}function Ge(e){return null==e||"string"===typeof e&&!e.trim()}var Je=a.forwardRef((function(e,t){var n,s=e["aria-describedby"],d=e["aria-label"],u=e.autoFocus,c=e.autoWidth,p=e.children,m=e.className,h=e.defaultOpen,b=e.defaultValue,Z=e.disabled,g=e.displayEmpty,x=e.error,w=void 0!==x&&x,S=e.IconComponent,C=e.inputRef,R=e.labelId,k=e.MenuProps,I=void 0===k?{}:k,P=e.multiple,F=e.name,O=e.onBlur,W=e.onChange,B=e.onClose,A=e.onFocus,N=e.onOpen,j=e.open,T=e.readOnly,L=e.renderValue,E=e.SelectDisplayProps,q=void 0===E?{}:E,D=e.tabIndex,U=e.value,V=e.variant,K=void 0===V?"standard":V,X=(0,r.Z)(e,Ue),_=(0,Ee.Z)({controlled:U,default:b,name:"Select"}),G=(0,f.Z)(_,2),J=G[0],Q=G[1],Y=(0,Ee.Z)({controlled:j,default:h,name:"Select"}),$=(0,f.Z)(Y,2),ee=$[0],te=$[1],ne=a.useRef(null),oe=a.useRef(null),re=a.useState(null),ae=(0,f.Z)(re,2),ie=ae[0],le=ae[1],se=a.useRef(null!=j).current,de=a.useState(),ue=(0,f.Z)(de,2),ce=ue[0],pe=ue[1],me=(0,M.Z)(t,C),fe=a.useCallback((function(e){oe.current=e,e&&le(e)}),[]),ve=null==ie?void 0:ie.parentNode;a.useImperativeHandle(me,(function(){return{focus:function(){oe.current.focus()},node:ne.current,value:J}}),[J]),a.useEffect((function(){h&&ee&&ie&&!se&&(pe(c?null:ve.clientWidth),oe.current.focus())}),[ie,c]),a.useEffect((function(){u&&oe.current.focus()}),[u]),a.useEffect((function(){if(R){var e=(0,Oe.Z)(oe.current).getElementById(R);if(e){var t=function(){getSelection().isCollapsed&&oe.current.focus()};return e.addEventListener("click",t),function(){e.removeEventListener("click",t)}}}}),[R]);var he,be,Ze=function(e,t){e?N&&N(t):B&&B(t),se||(pe(c?null:ve.clientWidth),te(e))},ge=a.Children.toArray(p),xe=function(e){return function(t){var n;if(t.currentTarget.hasAttribute("tabindex")){if(P){n=Array.isArray(J)?J.slice():[];var o=J.indexOf(e.props.value);-1===o?n.push(e.props.value):n.splice(o,1)}else n=e.props.value;if(e.props.onClick&&e.props.onClick(t),J!==n&&(Q(n),W)){var r=t.nativeEvent||t,a=new r.constructor(r.type,r);Object.defineProperty(a,"target",{writable:!0,value:{value:n,name:F}}),W(a,e)}P||Ze(!1,t)}}},ye=null!==ie&ⅇdelete X["aria-invalid"];var we=[],Se=!1;((0,H.vd)({value:J})||g)&&(L?he=L(J):Se=!0);var Ce=ge.map((function(e){if(!a.isValidElement(e))return null;var t;if(P){if(!Array.isArray(J))throw new Error((0,v.Z)(2));(t=J.some((function(t){return _e(t,e.props.value)})))&&Se&&we.push(e.props.children)}else(t=_e(J,e.props.value))&&Se&&(be=e.props.children);return t&&!0,a.cloneElement(e,{"aria-selected":t?"true":"false",onClick:xe(e),onKeyUp:function(t){" "===t.key&&t.preventDefault(),e.props.onKeyUp&&e.props.onKeyUp(t)},role:"option",selected:t,value:void 0,"data-value":e.props.value})}));Se&&(he=P?0===we.length?null:we.reduce((function(e,t,n){return e.push(t),n {\n const {\n classes,\n formControl,\n size,\n shrink,\n disableAnimation,\n variant,\n required\n } = ownerState;\n const slots = {\n root: ['root', formControl && 'formControl', !disableAnimation && 'animated', shrink && 'shrink', size && size !== 'normal' && `size${capitalize(size)}`, variant],\n asterisk: [required && 'asterisk']\n };\n const composedClasses = composeClasses(slots, getInputLabelUtilityClasses, classes);\n return _extends({}, classes, composedClasses);\n};\nconst InputLabelRoot = styled(FormLabel, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiInputLabel',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${formLabelClasses.asterisk}`]: styles.asterisk\n }, styles.root, ownerState.formControl && styles.formControl, ownerState.size === 'small' && styles.sizeSmall, ownerState.shrink && styles.shrink, !ownerState.disableAnimation && styles.animated, styles[ownerState.variant]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'block',\n transformOrigin: 'top left',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: '100%'\n}, ownerState.formControl && {\n position: 'absolute',\n left: 0,\n top: 0,\n // slight alteration to spec spacing to match visual spec result\n transform: 'translate(0, 20px) scale(1)'\n}, ownerState.size === 'small' && {\n // Compensation for the `Input.inputSizeSmall` style.\n transform: 'translate(0, 17px) scale(1)'\n}, ownerState.shrink && {\n transform: 'translate(0, -1.5px) scale(0.75)',\n transformOrigin: 'top left',\n maxWidth: '133%'\n}, !ownerState.disableAnimation && {\n transition: theme.transitions.create(['color', 'transform', 'max-width'], {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n })\n}, ownerState.variant === 'filled' && _extends({\n // Chrome's autofill feature gives the input field a yellow background.\n // Since the input field is behind the label in the HTML tree,\n // the input field is drawn last and hides the label with an opaque background color.\n // zIndex: 1 will raise the label above opaque background-colors of input.\n zIndex: 1,\n pointerEvents: 'none',\n transform: 'translate(12px, 16px) scale(1)',\n maxWidth: 'calc(100% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(12px, 13px) scale(1)'\n}, ownerState.shrink && _extends({\n userSelect: 'none',\n pointerEvents: 'auto',\n transform: 'translate(12px, 7px) scale(0.75)',\n maxWidth: 'calc(133% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(12px, 4px) scale(0.75)'\n})), ownerState.variant === 'outlined' && _extends({\n // see comment above on filled.zIndex\n zIndex: 1,\n pointerEvents: 'none',\n transform: 'translate(14px, 16px) scale(1)',\n maxWidth: 'calc(100% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(14px, 9px) scale(1)'\n}, ownerState.shrink && {\n userSelect: 'none',\n pointerEvents: 'auto',\n // Theoretically, we should have (8+5)*2/0.75 = 34px\n // but it feels a better when it bleeds a bit on the left, so 32px.\n maxWidth: 'calc(133% - 32px)',\n transform: 'translate(14px, -9px) scale(0.75)'\n})));\nconst InputLabel = /*#__PURE__*/React.forwardRef(function InputLabel(inProps, ref) {\n const props = useThemeProps({\n name: 'MuiInputLabel',\n props: inProps\n });\n const {\n disableAnimation = false,\n shrink: shrinkProp,\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n let shrink = shrinkProp;\n if (typeof shrink === 'undefined' && muiFormControl) {\n shrink = muiFormControl.filled || muiFormControl.focused || muiFormControl.adornedStart;\n }\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['size', 'variant', 'required']\n });\n const ownerState = _extends({}, props, {\n disableAnimation,\n formControl: muiFormControl,\n shrink,\n size: fcs.size,\n variant: fcs.variant,\n required: fcs.required\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(InputLabelRoot, _extends({\n \"data-shrink\": shrink,\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? InputLabel.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n /**\n * If `true`, the transition animation is disabled.\n * @default false\n */\n disableAnimation: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the `input` of this label is focused.\n */\n focused: PropTypes.bool,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n */\n margin: PropTypes.oneOf(['dense']),\n /**\n * if `true`, the label will indicate that the `input` is required.\n */\n required: PropTypes.bool,\n /**\n * If `true`, the label is shrunk.\n */\n shrink: PropTypes.bool,\n /**\n * The size of the component.\n * @default 'normal'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['normal', 'small']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default InputLabel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nimport { inputBaseClasses } from '../InputBase';\nexport function getOutlinedInputUtilityClass(slot) {\n return generateUtilityClass('MuiOutlinedInput', slot);\n}\nconst outlinedInputClasses = _extends({}, inputBaseClasses, generateUtilityClasses('MuiOutlinedInput', ['root', 'notchedOutline', 'input']));\nexport default outlinedInputClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onChange\", \"maxRows\", \"minRows\", \"style\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport * as ReactDOM from 'react-dom';\nimport { unstable_debounce as debounce, unstable_useForkRef as useForkRef, unstable_useEnhancedEffect as useEnhancedEffect, unstable_ownerWindow as ownerWindow } from '@mui/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction getStyleValue(value) {\n return parseInt(value, 10) || 0;\n}\nconst styles = {\n shadow: {\n // Visibility needed to hide the extra text area on iPads\n visibility: 'hidden',\n // Remove from the content flow\n position: 'absolute',\n // Ignore the scrollbar width\n overflow: 'hidden',\n height: 0,\n top: 0,\n left: 0,\n // Create a new layer, increase the isolation of the computed values\n transform: 'translateZ(0)'\n }\n};\nfunction isEmpty(obj) {\n return obj === undefined || obj === null || Object.keys(obj).length === 0 || obj.outerHeightStyle === 0 && !obj.overflow;\n}\n\n/**\n *\n * Demos:\n *\n * - [Textarea Autosize](https://mui.com/base-ui/react-textarea-autosize/)\n * - [Textarea Autosize](https://mui.com/material-ui/react-textarea-autosize/)\n *\n * API:\n *\n * - [TextareaAutosize API](https://mui.com/base-ui/react-textarea-autosize/components-api/#textarea-autosize)\n */\nconst TextareaAutosize = /*#__PURE__*/React.forwardRef(function TextareaAutosize(props, forwardedRef) {\n const {\n onChange,\n maxRows,\n minRows = 1,\n style,\n value\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n current: isControlled\n } = React.useRef(value != null);\n const inputRef = React.useRef(null);\n const handleRef = useForkRef(forwardedRef, inputRef);\n const shadowRef = React.useRef(null);\n const renders = React.useRef(0);\n const [state, setState] = React.useState({\n outerHeightStyle: 0\n });\n const getUpdatedState = React.useCallback(() => {\n const input = inputRef.current;\n const containerWindow = ownerWindow(input);\n const computedStyle = containerWindow.getComputedStyle(input);\n\n // If input's width is shrunk and it's not visible, don't sync height.\n if (computedStyle.width === '0px') {\n return {\n outerHeightStyle: 0\n };\n }\n const inputShallow = shadowRef.current;\n inputShallow.style.width = computedStyle.width;\n inputShallow.value = input.value || props.placeholder || 'x';\n if (inputShallow.value.slice(-1) === '\\n') {\n // Certain fonts which overflow the line height will cause the textarea\n // to report a different scrollHeight depending on whether the last line\n // is empty. Make it non-empty to avoid this issue.\n inputShallow.value += ' ';\n }\n const boxSizing = computedStyle.boxSizing;\n const padding = getStyleValue(computedStyle.paddingBottom) + getStyleValue(computedStyle.paddingTop);\n const border = getStyleValue(computedStyle.borderBottomWidth) + getStyleValue(computedStyle.borderTopWidth);\n\n // The height of the inner content\n const innerHeight = inputShallow.scrollHeight;\n\n // Measure height of a textarea with a single row\n inputShallow.value = 'x';\n const singleRowHeight = inputShallow.scrollHeight;\n\n // The height of the outer content\n let outerHeight = innerHeight;\n if (minRows) {\n outerHeight = Math.max(Number(minRows) * singleRowHeight, outerHeight);\n }\n if (maxRows) {\n outerHeight = Math.min(Number(maxRows) * singleRowHeight, outerHeight);\n }\n outerHeight = Math.max(outerHeight, singleRowHeight);\n\n // Take the box sizing into account for applying this value as a style.\n const outerHeightStyle = outerHeight + (boxSizing === 'border-box' ? padding + border : 0);\n const overflow = Math.abs(outerHeight - innerHeight) <= 1;\n return {\n outerHeightStyle,\n overflow\n };\n }, [maxRows, minRows, props.placeholder]);\n const updateState = (prevState, newState) => {\n const {\n outerHeightStyle,\n overflow\n } = newState;\n // Need a large enough difference to update the height.\n // This prevents infinite rendering loop.\n if (renders.current < 20 && (outerHeightStyle > 0 && Math.abs((prevState.outerHeightStyle || 0) - outerHeightStyle) > 1 || prevState.overflow !== overflow)) {\n renders.current += 1;\n return {\n overflow,\n outerHeightStyle\n };\n }\n if (process.env.NODE_ENV !== 'production') {\n if (renders.current === 20) {\n console.error(['MUI: Too many re-renders. The layout is unstable.', 'TextareaAutosize limits the number of renders to prevent an infinite loop.'].join('\\n'));\n }\n }\n return prevState;\n };\n const syncHeight = React.useCallback(() => {\n const newState = getUpdatedState();\n if (isEmpty(newState)) {\n return;\n }\n setState(prevState => updateState(prevState, newState));\n }, [getUpdatedState]);\n useEnhancedEffect(() => {\n const syncHeightWithFlushSync = () => {\n const newState = getUpdatedState();\n if (isEmpty(newState)) {\n return;\n }\n\n // In React 18, state updates in a ResizeObserver's callback are happening after\n // the paint, this leads to an infinite rendering.\n //\n // Using flushSync ensures that the states is updated before the next pain.\n // Related issue - https://github.com/facebook/react/issues/24331\n ReactDOM.flushSync(() => {\n setState(prevState => updateState(prevState, newState));\n });\n };\n const handleResize = () => {\n renders.current = 0;\n syncHeightWithFlushSync();\n };\n // Workaround a \"ResizeObserver loop completed with undelivered notifications\" error\n // in test.\n // Note that we might need to use this logic in production per https://github.com/WICG/resize-observer/issues/38\n // Also see https://github.com/mui/mui-x/issues/8733\n let rAF;\n const rAFHandleResize = () => {\n cancelAnimationFrame(rAF);\n rAF = requestAnimationFrame(() => {\n handleResize();\n });\n };\n const debounceHandleResize = debounce(handleResize);\n const input = inputRef.current;\n const containerWindow = ownerWindow(input);\n containerWindow.addEventListener('resize', debounceHandleResize);\n let resizeObserver;\n if (typeof ResizeObserver !== 'undefined') {\n resizeObserver = new ResizeObserver(process.env.NODE_ENV === 'test' ? rAFHandleResize : handleResize);\n resizeObserver.observe(input);\n }\n return () => {\n debounceHandleResize.clear();\n cancelAnimationFrame(rAF);\n containerWindow.removeEventListener('resize', debounceHandleResize);\n if (resizeObserver) {\n resizeObserver.disconnect();\n }\n };\n }, [getUpdatedState]);\n useEnhancedEffect(() => {\n syncHeight();\n });\n React.useEffect(() => {\n renders.current = 0;\n }, [value]);\n const handleChange = event => {\n renders.current = 0;\n if (!isControlled) {\n syncHeight();\n }\n if (onChange) {\n onChange(event);\n }\n };\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(\"textarea\", _extends({\n value: value,\n onChange: handleChange,\n ref: handleRef\n // Apply the rows prop to get a \"correct\" first SSR paint\n ,\n rows: minRows,\n style: _extends({\n height: state.outerHeightStyle,\n // Need a large enough difference to allow scrolling.\n // This prevents infinite rendering loop.\n overflow: state.overflow ? 'hidden' : undefined\n }, style)\n }, other)), /*#__PURE__*/_jsx(\"textarea\", {\n \"aria-hidden\": true,\n className: props.className,\n readOnly: true,\n ref: shadowRef,\n tabIndex: -1,\n style: _extends({}, styles.shadow, style, {\n paddingTop: 0,\n paddingBottom: 0\n })\n })]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? TextareaAutosize.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * Maximum number of rows to display.\n */\n maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Minimum number of rows to display.\n * @default 1\n */\n minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * @ignore\n */\n onChange: PropTypes.func,\n /**\n * @ignore\n */\n placeholder: PropTypes.string,\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * @ignore\n */\n value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.number, PropTypes.string])\n} : void 0;\nexport { TextareaAutosize };","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Global } from '@emotion/react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction isEmpty(obj) {\n return obj === undefined || obj === null || Object.keys(obj).length === 0;\n}\nexport default function GlobalStyles(props) {\n const {\n styles,\n defaultTheme = {}\n } = props;\n const globalStyles = typeof styles === 'function' ? themeInput => styles(isEmpty(themeInput) ? defaultTheme : themeInput) : styles;\n return /*#__PURE__*/_jsx(Global, {\n styles: globalStyles\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes = {\n defaultTheme: PropTypes.object,\n styles: PropTypes.oneOfType([PropTypes.array, PropTypes.string, PropTypes.object, PropTypes.func])\n} : void 0;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GlobalStyles as MuiGlobalStyles } from '@mui/styled-engine';\nimport useTheme from '../useTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GlobalStyles({\n styles,\n themeId,\n defaultTheme = {}\n}) {\n const upperTheme = useTheme(defaultTheme);\n const globalStyles = typeof styles === 'function' ? styles(themeId ? upperTheme[themeId] || upperTheme : upperTheme) : styles;\n return /*#__PURE__*/_jsx(MuiGlobalStyles, {\n styles: globalStyles\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * @ignore\n */\n defaultTheme: PropTypes.object,\n /**\n * @ignore\n */\n styles: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.array, PropTypes.func, PropTypes.number, PropTypes.object, PropTypes.string, PropTypes.bool]),\n /**\n * @ignore\n */\n themeId: PropTypes.string\n} : void 0;\nexport default GlobalStyles;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GlobalStyles as SystemGlobalStyles } from '@mui/system';\nimport defaultTheme from '../styles/defaultTheme';\nimport THEME_ID from '../styles/identifier';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GlobalStyles(props) {\n return /*#__PURE__*/_jsx(SystemGlobalStyles, _extends({}, props, {\n defaultTheme: defaultTheme,\n themeId: THEME_ID\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.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 styles you want to apply globally.\n */\n styles: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.array, PropTypes.func, PropTypes.number, PropTypes.object, PropTypes.string, PropTypes.bool])\n} : void 0;\nexport default GlobalStyles;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@mui/utils\";\nconst _excluded = [\"aria-describedby\", \"autoComplete\", \"autoFocus\", \"className\", \"color\", \"components\", \"componentsProps\", \"defaultValue\", \"disabled\", \"disableInjectingGlobalStyles\", \"endAdornment\", \"error\", \"fullWidth\", \"id\", \"inputComponent\", \"inputProps\", \"inputRef\", \"margin\", \"maxRows\", \"minRows\", \"multiline\", \"name\", \"onBlur\", \"onChange\", \"onClick\", \"onFocus\", \"onKeyDown\", \"onKeyUp\", \"placeholder\", \"readOnly\", \"renderSuffix\", \"rows\", \"size\", \"slotProps\", \"slots\", \"startAdornment\", \"type\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType, elementTypeAcceptingRef } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses, isHostComponent, TextareaAutosize } from '@mui/base';\nimport formControlState from '../FormControl/formControlState';\nimport FormControlContext from '../FormControl/FormControlContext';\nimport useFormControl from '../FormControl/useFormControl';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport useForkRef from '../utils/useForkRef';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\nimport GlobalStyles from '../GlobalStyles';\nimport { isFilled } from './utils';\nimport inputBaseClasses, { getInputBaseUtilityClass } from './inputBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const rootOverridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.formControl && styles.formControl, ownerState.startAdornment && styles.adornedStart, ownerState.endAdornment && styles.adornedEnd, ownerState.error && styles.error, ownerState.size === 'small' && styles.sizeSmall, ownerState.multiline && styles.multiline, ownerState.color && styles[`color${capitalize(ownerState.color)}`], ownerState.fullWidth && styles.fullWidth, ownerState.hiddenLabel && styles.hiddenLabel];\n};\nexport const inputOverridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.input, ownerState.size === 'small' && styles.inputSizeSmall, ownerState.multiline && styles.inputMultiline, ownerState.type === 'search' && styles.inputTypeSearch, ownerState.startAdornment && styles.inputAdornedStart, ownerState.endAdornment && styles.inputAdornedEnd, ownerState.hiddenLabel && styles.inputHiddenLabel];\n};\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color,\n disabled,\n error,\n endAdornment,\n focused,\n formControl,\n fullWidth,\n hiddenLabel,\n multiline,\n readOnly,\n size,\n startAdornment,\n type\n } = ownerState;\n const slots = {\n root: ['root', `color${capitalize(color)}`, disabled && 'disabled', error && 'error', fullWidth && 'fullWidth', focused && 'focused', formControl && 'formControl', size && size !== 'medium' && `size${capitalize(size)}`, multiline && 'multiline', startAdornment && 'adornedStart', endAdornment && 'adornedEnd', hiddenLabel && 'hiddenLabel', readOnly && 'readOnly'],\n input: ['input', disabled && 'disabled', type === 'search' && 'inputTypeSearch', multiline && 'inputMultiline', size === 'small' && 'inputSizeSmall', hiddenLabel && 'inputHiddenLabel', startAdornment && 'inputAdornedStart', endAdornment && 'inputAdornedEnd', readOnly && 'readOnly']\n };\n return composeClasses(slots, getInputBaseUtilityClass, classes);\n};\nexport const InputBaseRoot = styled('div', {\n name: 'MuiInputBase',\n slot: 'Root',\n overridesResolver: rootOverridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({}, theme.typography.body1, {\n color: (theme.vars || theme).palette.text.primary,\n lineHeight: '1.4375em',\n // 23px\n boxSizing: 'border-box',\n // Prevent padding issue with fullWidth.\n position: 'relative',\n cursor: 'text',\n display: 'inline-flex',\n alignItems: 'center',\n [`&.${inputBaseClasses.disabled}`]: {\n color: (theme.vars || theme).palette.text.disabled,\n cursor: 'default'\n }\n}, ownerState.multiline && _extends({\n padding: '4px 0 5px'\n}, ownerState.size === 'small' && {\n paddingTop: 1\n}), ownerState.fullWidth && {\n width: '100%'\n}));\nexport const InputBaseComponent = styled('input', {\n name: 'MuiInputBase',\n slot: 'Input',\n overridesResolver: inputOverridesResolver\n})(({\n theme,\n ownerState\n}) => {\n const light = theme.palette.mode === 'light';\n const placeholder = _extends({\n color: 'currentColor'\n }, theme.vars ? {\n opacity: theme.vars.opacity.inputPlaceholder\n } : {\n opacity: light ? 0.42 : 0.5\n }, {\n transition: theme.transitions.create('opacity', {\n duration: theme.transitions.duration.shorter\n })\n });\n const placeholderHidden = {\n opacity: '0 !important'\n };\n const placeholderVisible = theme.vars ? {\n opacity: theme.vars.opacity.inputPlaceholder\n } : {\n opacity: light ? 0.42 : 0.5\n };\n return _extends({\n font: 'inherit',\n letterSpacing: 'inherit',\n color: 'currentColor',\n padding: '4px 0 5px',\n border: 0,\n boxSizing: 'content-box',\n background: 'none',\n height: '1.4375em',\n // Reset 23pxthe native input line-height\n margin: 0,\n // Reset for Safari\n WebkitTapHighlightColor: 'transparent',\n display: 'block',\n // Make the flex item shrink with Firefox\n minWidth: 0,\n width: '100%',\n // Fix IE11 width issue\n animationName: 'mui-auto-fill-cancel',\n animationDuration: '10ms',\n '&::-webkit-input-placeholder': placeholder,\n '&::-moz-placeholder': placeholder,\n // Firefox 19+\n '&:-ms-input-placeholder': placeholder,\n // IE11\n '&::-ms-input-placeholder': placeholder,\n // Edge\n '&:focus': {\n outline: 0\n },\n // Reset Firefox invalid required input style\n '&:invalid': {\n boxShadow: 'none'\n },\n '&::-webkit-search-decoration': {\n // Remove the padding when type=search.\n WebkitAppearance: 'none'\n },\n // Show and hide the placeholder logic\n [`label[data-shrink=false] + .${inputBaseClasses.formControl} &`]: {\n '&::-webkit-input-placeholder': placeholderHidden,\n '&::-moz-placeholder': placeholderHidden,\n // Firefox 19+\n '&:-ms-input-placeholder': placeholderHidden,\n // IE11\n '&::-ms-input-placeholder': placeholderHidden,\n // Edge\n '&:focus::-webkit-input-placeholder': placeholderVisible,\n '&:focus::-moz-placeholder': placeholderVisible,\n // Firefox 19+\n '&:focus:-ms-input-placeholder': placeholderVisible,\n // IE11\n '&:focus::-ms-input-placeholder': placeholderVisible // Edge\n },\n\n [`&.${inputBaseClasses.disabled}`]: {\n opacity: 1,\n // Reset iOS opacity\n WebkitTextFillColor: (theme.vars || theme).palette.text.disabled // Fix opacity Safari bug\n },\n\n '&:-webkit-autofill': {\n animationDuration: '5000s',\n animationName: 'mui-auto-fill'\n }\n }, ownerState.size === 'small' && {\n paddingTop: 1\n }, ownerState.multiline && {\n height: 'auto',\n resize: 'none',\n padding: 0,\n paddingTop: 0\n }, ownerState.type === 'search' && {\n // Improve type search style.\n MozAppearance: 'textfield'\n });\n});\nconst inputGlobalStyles = /*#__PURE__*/_jsx(GlobalStyles, {\n styles: {\n '@keyframes mui-auto-fill': {\n from: {\n display: 'block'\n }\n },\n '@keyframes mui-auto-fill-cancel': {\n from: {\n display: 'block'\n }\n }\n }\n});\n\n/**\n * `InputBase` contains as few styles as possible.\n * It aims to be a simple building block for creating an input.\n * It contains a load of style reset and some state logic.\n */\nconst InputBase = /*#__PURE__*/React.forwardRef(function InputBase(inProps, ref) {\n var _slotProps$input;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiInputBase'\n });\n const {\n 'aria-describedby': ariaDescribedby,\n autoComplete,\n autoFocus,\n className,\n components = {},\n componentsProps = {},\n defaultValue,\n disabled,\n disableInjectingGlobalStyles,\n endAdornment,\n fullWidth = false,\n id,\n inputComponent = 'input',\n inputProps: inputPropsProp = {},\n inputRef: inputRefProp,\n maxRows,\n minRows,\n multiline = false,\n name,\n onBlur,\n onChange,\n onClick,\n onFocus,\n onKeyDown,\n onKeyUp,\n placeholder,\n readOnly,\n renderSuffix,\n rows,\n slotProps = {},\n slots = {},\n startAdornment,\n type = 'text',\n value: valueProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const value = inputPropsProp.value != null ? inputPropsProp.value : valueProp;\n const {\n current: isControlled\n } = React.useRef(value != null);\n const inputRef = React.useRef();\n const handleInputRefWarning = React.useCallback(instance => {\n if (process.env.NODE_ENV !== 'production') {\n if (instance && instance.nodeName !== 'INPUT' && !instance.focus) {\n console.error(['MUI: You have provided a `inputComponent` to the input component', 'that does not correctly handle the `ref` prop.', 'Make sure the `ref` prop is called with a HTMLInputElement.'].join('\\n'));\n }\n }\n }, []);\n const handleInputRef = useForkRef(inputRef, inputRefProp, inputPropsProp.ref, handleInputRefWarning);\n const [focused, setFocused] = React.useState(false);\n const muiFormControl = useFormControl();\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (muiFormControl) {\n return muiFormControl.registerEffect();\n }\n return undefined;\n }, [muiFormControl]);\n }\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['color', 'disabled', 'error', 'hiddenLabel', 'size', 'required', 'filled']\n });\n fcs.focused = muiFormControl ? muiFormControl.focused : focused;\n\n // The blur won't fire when the disabled state is set on a focused input.\n // We need to book keep the focused state manually.\n React.useEffect(() => {\n if (!muiFormControl && disabled && focused) {\n setFocused(false);\n if (onBlur) {\n onBlur();\n }\n }\n }, [muiFormControl, disabled, focused, onBlur]);\n const onFilled = muiFormControl && muiFormControl.onFilled;\n const onEmpty = muiFormControl && muiFormControl.onEmpty;\n const checkDirty = React.useCallback(obj => {\n if (isFilled(obj)) {\n if (onFilled) {\n onFilled();\n }\n } else if (onEmpty) {\n onEmpty();\n }\n }, [onFilled, onEmpty]);\n useEnhancedEffect(() => {\n if (isControlled) {\n checkDirty({\n value\n });\n }\n }, [value, checkDirty, isControlled]);\n const handleFocus = event => {\n // Fix a bug with IE11 where the focus/blur events are triggered\n // while the component is disabled.\n if (fcs.disabled) {\n event.stopPropagation();\n return;\n }\n if (onFocus) {\n onFocus(event);\n }\n if (inputPropsProp.onFocus) {\n inputPropsProp.onFocus(event);\n }\n if (muiFormControl && muiFormControl.onFocus) {\n muiFormControl.onFocus(event);\n } else {\n setFocused(true);\n }\n };\n const handleBlur = event => {\n if (onBlur) {\n onBlur(event);\n }\n if (inputPropsProp.onBlur) {\n inputPropsProp.onBlur(event);\n }\n if (muiFormControl && muiFormControl.onBlur) {\n muiFormControl.onBlur(event);\n } else {\n setFocused(false);\n }\n };\n const handleChange = (event, ...args) => {\n if (!isControlled) {\n const element = event.target || inputRef.current;\n if (element == null) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Expected valid input target. Did you use a custom \\`inputComponent\\` and forget to forward refs? See https://mui.com/r/input-component-ref-interface for more info.` : _formatMuiErrorMessage(1));\n }\n checkDirty({\n value: element.value\n });\n }\n if (inputPropsProp.onChange) {\n inputPropsProp.onChange(event, ...args);\n }\n\n // Perform in the willUpdate\n if (onChange) {\n onChange(event, ...args);\n }\n };\n\n // Check the input state on mount, in case it was filled by the user\n // or auto filled by the browser before the hydration (for SSR).\n React.useEffect(() => {\n checkDirty(inputRef.current);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n const handleClick = event => {\n if (inputRef.current && event.currentTarget === event.target) {\n inputRef.current.focus();\n }\n if (onClick) {\n onClick(event);\n }\n };\n let InputComponent = inputComponent;\n let inputProps = inputPropsProp;\n if (multiline && InputComponent === 'input') {\n if (rows) {\n if (process.env.NODE_ENV !== 'production') {\n if (minRows || maxRows) {\n console.warn('MUI: You can not use the `minRows` or `maxRows` props when the input `rows` prop is set.');\n }\n }\n inputProps = _extends({\n type: undefined,\n minRows: rows,\n maxRows: rows\n }, inputProps);\n } else {\n inputProps = _extends({\n type: undefined,\n maxRows,\n minRows\n }, inputProps);\n }\n InputComponent = TextareaAutosize;\n }\n const handleAutoFill = event => {\n // Provide a fake value as Chrome might not let you access it for security reasons.\n checkDirty(event.animationName === 'mui-auto-fill-cancel' ? inputRef.current : {\n value: 'x'\n });\n };\n React.useEffect(() => {\n if (muiFormControl) {\n muiFormControl.setAdornedStart(Boolean(startAdornment));\n }\n }, [muiFormControl, startAdornment]);\n const ownerState = _extends({}, props, {\n color: fcs.color || 'primary',\n disabled: fcs.disabled,\n endAdornment,\n error: fcs.error,\n focused: fcs.focused,\n formControl: muiFormControl,\n fullWidth,\n hiddenLabel: fcs.hiddenLabel,\n multiline,\n size: fcs.size,\n startAdornment,\n type\n });\n const classes = useUtilityClasses(ownerState);\n const Root = slots.root || components.Root || InputBaseRoot;\n const rootProps = slotProps.root || componentsProps.root || {};\n const Input = slots.input || components.Input || InputBaseComponent;\n inputProps = _extends({}, inputProps, (_slotProps$input = slotProps.input) != null ? _slotProps$input : componentsProps.input);\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [!disableInjectingGlobalStyles && inputGlobalStyles, /*#__PURE__*/_jsxs(Root, _extends({}, rootProps, !isHostComponent(Root) && {\n ownerState: _extends({}, ownerState, rootProps.ownerState)\n }, {\n ref: ref,\n onClick: handleClick\n }, other, {\n className: clsx(classes.root, rootProps.className, className, readOnly && 'MuiInputBase-readOnly'),\n children: [startAdornment, /*#__PURE__*/_jsx(FormControlContext.Provider, {\n value: null,\n children: /*#__PURE__*/_jsx(Input, _extends({\n ownerState: ownerState,\n \"aria-invalid\": fcs.error,\n \"aria-describedby\": ariaDescribedby,\n autoComplete: autoComplete,\n autoFocus: autoFocus,\n defaultValue: defaultValue,\n disabled: fcs.disabled,\n id: id,\n onAnimationStart: handleAutoFill,\n name: name,\n placeholder: placeholder,\n readOnly: readOnly,\n required: fcs.required,\n rows: rows,\n value: value,\n onKeyDown: onKeyDown,\n onKeyUp: onKeyUp,\n type: type\n }, inputProps, !isHostComponent(Input) && {\n as: InputComponent,\n ownerState: _extends({}, ownerState, inputProps.ownerState)\n }, {\n ref: handleInputRef,\n className: clsx(classes.input, inputProps.className, readOnly && 'MuiInputBase-readOnly'),\n onBlur: handleBlur,\n onChange: handleChange,\n onFocus: handleFocus\n }))\n }), endAdornment, renderSuffix ? renderSuffix(_extends({}, fcs, {\n startAdornment\n })) : null]\n }))]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? InputBase.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 * @ignore\n */\n 'aria-describedby': PropTypes.string,\n /**\n * This prop helps users to fill forms faster, especially on mobile devices.\n * The name can be confusing, as it's more like an autofill.\n * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n */\n autoComplete: PropTypes.string,\n /**\n * If `true`, the `input` element is focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The 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 * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Input: PropTypes.elementType,\n Root: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `slotProps` prop.\n * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n input: PropTypes.object,\n root: PropTypes.object\n }),\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * If `true`, the component is disabled.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, GlobalStyles for the auto-fill keyframes will not be injected/removed on mount/unmount. Make sure to inject them at the top of your application.\n * This option is intended to help with boosting the initial rendering performance if you are loading a big amount of Input components at once.\n * @default false\n */\n disableInjectingGlobalStyles: PropTypes.bool,\n /**\n * End `InputAdornment` for this component.\n */\n endAdornment: PropTypes.node,\n /**\n * If `true`, the `input` will indicate an error.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the `input` will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n /**\n * The component used for the `input` element.\n * Either a string to use a HTML element or a component.\n * @default 'input'\n */\n inputComponent: elementTypeAcceptingRef,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n * @default {}\n */\n inputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n */\n margin: PropTypes.oneOf(['dense', 'none']),\n /**\n * Maximum number of rows to display when multiline option is set to true.\n */\n maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Minimum number of rows to display when multiline option is set to true.\n */\n minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n * @default false\n */\n multiline: PropTypes.bool,\n /**\n * Name attribute of the `input` element.\n */\n name: PropTypes.string,\n /**\n * Callback fired when the `input` is blurred.\n *\n * Notice that the first argument (event) might be undefined.\n */\n onBlur: PropTypes.func,\n /**\n * Callback fired when the value is changed.\n *\n * @param {React.ChangeEvent} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n /**\n * Callback fired when the `input` doesn't satisfy its constraints.\n */\n onInvalid: PropTypes.func,\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n /**\n * @ignore\n */\n onKeyUp: PropTypes.func,\n /**\n * The short hint displayed in the `input` before the user enters a value.\n */\n placeholder: PropTypes.string,\n /**\n * It prevents the user from changing the value of the field\n * (not from interacting with the field).\n */\n readOnly: PropTypes.bool,\n /**\n * @ignore\n */\n renderSuffix: PropTypes.func,\n /**\n * If `true`, the `input` element is required.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n required: PropTypes.bool,\n /**\n * Number of rows to display when multiline option is set to true.\n */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * The size of the component.\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slotProps: PropTypes.shape({\n input: PropTypes.object,\n root: PropTypes.object\n }),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `components` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slots: PropTypes.shape({\n input: PropTypes.elementType,\n root: PropTypes.elementType\n }),\n /**\n * Start `InputAdornment` for this component.\n */\n startAdornment: PropTypes.node,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n * @default 'text'\n */\n type: PropTypes.string,\n /**\n * The value of the `input` element, required for a controlled component.\n */\n value: PropTypes.any\n} : void 0;\nexport default InputBase;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disableUnderline\", \"components\", \"componentsProps\", \"fullWidth\", \"inputComponent\", \"multiline\", \"slotProps\", \"slots\", \"type\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport { refType, deepmerge } from '@mui/utils';\nimport InputBase from '../InputBase';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport inputClasses, { getInputUtilityClass } from './inputClasses';\nimport { rootOverridesResolver as inputBaseRootOverridesResolver, inputOverridesResolver as inputBaseInputOverridesResolver, InputBaseRoot, InputBaseComponent as InputBaseInput } from '../InputBase/InputBase';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disableUnderline\n } = ownerState;\n const slots = {\n root: ['root', !disableUnderline && 'underline'],\n input: ['input']\n };\n const composedClasses = composeClasses(slots, getInputUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst InputRoot = styled(InputBaseRoot, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiInput',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [...inputBaseRootOverridesResolver(props, styles), !ownerState.disableUnderline && styles.underline];\n }\n})(({\n theme,\n ownerState\n}) => {\n const light = theme.palette.mode === 'light';\n let bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n if (theme.vars) {\n bottomLineColor = `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})`;\n }\n return _extends({\n position: 'relative'\n }, ownerState.formControl && {\n 'label + &': {\n marginTop: 16\n }\n }, !ownerState.disableUnderline && {\n '&:after': {\n borderBottom: `2px solid ${(theme.vars || theme).palette[ownerState.color].main}`,\n left: 0,\n bottom: 0,\n // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n content: '\"\"',\n position: 'absolute',\n right: 0,\n transform: 'scaleX(0)',\n transition: theme.transitions.create('transform', {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n }),\n pointerEvents: 'none' // Transparent to the hover style.\n },\n\n [`&.${inputClasses.focused}:after`]: {\n // translateX(0) is a workaround for Safari transform scale bug\n // See https://github.com/mui/material-ui/issues/31766\n transform: 'scaleX(1) translateX(0)'\n },\n [`&.${inputClasses.error}`]: {\n '&:before, &:after': {\n borderBottomColor: (theme.vars || theme).palette.error.main\n }\n },\n '&:before': {\n borderBottom: `1px solid ${bottomLineColor}`,\n left: 0,\n bottom: 0,\n // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n content: '\"\\\\00a0\"',\n position: 'absolute',\n right: 0,\n transition: theme.transitions.create('border-bottom-color', {\n duration: theme.transitions.duration.shorter\n }),\n pointerEvents: 'none' // Transparent to the hover style.\n },\n\n [`&:hover:not(.${inputClasses.disabled}, .${inputClasses.error}):before`]: {\n borderBottom: `2px solid ${(theme.vars || theme).palette.text.primary}`,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n borderBottom: `1px solid ${bottomLineColor}`\n }\n },\n [`&.${inputClasses.disabled}:before`]: {\n borderBottomStyle: 'dotted'\n }\n });\n});\nconst InputInput = styled(InputBaseInput, {\n name: 'MuiInput',\n slot: 'Input',\n overridesResolver: inputBaseInputOverridesResolver\n})({});\nconst Input = /*#__PURE__*/React.forwardRef(function Input(inProps, ref) {\n var _ref, _slots$root, _ref2, _slots$input;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiInput'\n });\n const {\n disableUnderline,\n components = {},\n componentsProps: componentsPropsProp,\n fullWidth = false,\n inputComponent = 'input',\n multiline = false,\n slotProps,\n slots = {},\n type = 'text'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const classes = useUtilityClasses(props);\n const ownerState = {\n disableUnderline\n };\n const inputComponentsProps = {\n root: {\n ownerState\n }\n };\n const componentsProps = (slotProps != null ? slotProps : componentsPropsProp) ? deepmerge(slotProps != null ? slotProps : componentsPropsProp, inputComponentsProps) : inputComponentsProps;\n const RootSlot = (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : InputRoot;\n const InputSlot = (_ref2 = (_slots$input = slots.input) != null ? _slots$input : components.Input) != null ? _ref2 : InputInput;\n return /*#__PURE__*/_jsx(InputBase, _extends({\n slots: {\n root: RootSlot,\n input: InputSlot\n },\n slotProps: componentsProps,\n fullWidth: fullWidth,\n inputComponent: inputComponent,\n multiline: multiline,\n ref: ref,\n type: type\n }, other, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Input.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 * This prop helps users to fill forms faster, especially on mobile devices.\n * The name can be confusing, as it's more like an autofill.\n * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n */\n autoComplete: PropTypes.string,\n /**\n * If `true`, the `input` element is focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\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 * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Input: PropTypes.elementType,\n Root: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `slotProps` prop.\n * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n input: PropTypes.object,\n root: PropTypes.object\n }),\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * If `true`, the component is disabled.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the `input` will not have an underline.\n */\n disableUnderline: PropTypes.bool,\n /**\n * End `InputAdornment` for this component.\n */\n endAdornment: PropTypes.node,\n /**\n * If `true`, the `input` will indicate an error.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the `input` will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n /**\n * The component used for the `input` element.\n * Either a string to use a HTML element or a component.\n * @default 'input'\n */\n inputComponent: PropTypes.elementType,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n * @default {}\n */\n inputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n */\n margin: PropTypes.oneOf(['dense', 'none']),\n /**\n * Maximum number of rows to display when multiline option is set to true.\n */\n maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Minimum number of rows to display when multiline option is set to true.\n */\n minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n * @default false\n */\n multiline: PropTypes.bool,\n /**\n * Name attribute of the `input` element.\n */\n name: PropTypes.string,\n /**\n * Callback fired when the value is changed.\n *\n * @param {React.ChangeEvent} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * The short hint displayed in the `input` before the user enters a value.\n */\n placeholder: PropTypes.string,\n /**\n * It prevents the user from changing the value of the field\n * (not from interacting with the field).\n */\n readOnly: PropTypes.bool,\n /**\n * If `true`, the `input` element is required.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n required: PropTypes.bool,\n /**\n * Number of rows to display when multiline option is set to true.\n */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slotProps: PropTypes.shape({\n input: PropTypes.object,\n root: PropTypes.object\n }),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `components` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slots: PropTypes.shape({\n input: PropTypes.elementType,\n root: PropTypes.elementType\n }),\n /**\n * Start `InputAdornment` for this component.\n */\n startAdornment: PropTypes.node,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n * @default 'text'\n */\n type: PropTypes.string,\n /**\n * The value of the `input` element, required for a controlled component.\n */\n value: PropTypes.any\n} : void 0;\nInput.muiName = 'Input';\nexport default Input;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disableUnderline\", \"components\", \"componentsProps\", \"fullWidth\", \"hiddenLabel\", \"inputComponent\", \"multiline\", \"slotProps\", \"slots\", \"type\"];\nimport * as React from 'react';\nimport { refType, deepmerge } from '@mui/utils';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport InputBase from '../InputBase';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport filledInputClasses, { getFilledInputUtilityClass } from './filledInputClasses';\nimport { rootOverridesResolver as inputBaseRootOverridesResolver, inputOverridesResolver as inputBaseInputOverridesResolver, InputBaseRoot, InputBaseComponent as InputBaseInput } from '../InputBase/InputBase';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disableUnderline\n } = ownerState;\n const slots = {\n root: ['root', !disableUnderline && 'underline'],\n input: ['input']\n };\n const composedClasses = composeClasses(slots, getFilledInputUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst FilledInputRoot = styled(InputBaseRoot, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiFilledInput',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [...inputBaseRootOverridesResolver(props, styles), !ownerState.disableUnderline && styles.underline];\n }\n})(({\n theme,\n ownerState\n}) => {\n var _palette;\n const light = theme.palette.mode === 'light';\n const bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n const backgroundColor = light ? 'rgba(0, 0, 0, 0.06)' : 'rgba(255, 255, 255, 0.09)';\n const hoverBackground = light ? 'rgba(0, 0, 0, 0.09)' : 'rgba(255, 255, 255, 0.13)';\n const disabledBackground = light ? 'rgba(0, 0, 0, 0.12)' : 'rgba(255, 255, 255, 0.12)';\n return _extends({\n position: 'relative',\n backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor,\n borderTopLeftRadius: (theme.vars || theme).shape.borderRadius,\n borderTopRightRadius: (theme.vars || theme).shape.borderRadius,\n transition: theme.transitions.create('background-color', {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n }),\n '&:hover': {\n backgroundColor: theme.vars ? theme.vars.palette.FilledInput.hoverBg : hoverBackground,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor\n }\n },\n [`&.${filledInputClasses.focused}`]: {\n backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor\n },\n [`&.${filledInputClasses.disabled}`]: {\n backgroundColor: theme.vars ? theme.vars.palette.FilledInput.disabledBg : disabledBackground\n }\n }, !ownerState.disableUnderline && {\n '&:after': {\n borderBottom: `2px solid ${(_palette = (theme.vars || theme).palette[ownerState.color || 'primary']) == null ? void 0 : _palette.main}`,\n left: 0,\n bottom: 0,\n // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n content: '\"\"',\n position: 'absolute',\n right: 0,\n transform: 'scaleX(0)',\n transition: theme.transitions.create('transform', {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n }),\n pointerEvents: 'none' // Transparent to the hover style.\n },\n\n [`&.${filledInputClasses.focused}:after`]: {\n // translateX(0) is a workaround for Safari transform scale bug\n // See https://github.com/mui/material-ui/issues/31766\n transform: 'scaleX(1) translateX(0)'\n },\n [`&.${filledInputClasses.error}`]: {\n '&:before, &:after': {\n borderBottomColor: (theme.vars || theme).palette.error.main\n }\n },\n '&:before': {\n borderBottom: `1px solid ${theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})` : bottomLineColor}`,\n left: 0,\n bottom: 0,\n // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n content: '\"\\\\00a0\"',\n position: 'absolute',\n right: 0,\n transition: theme.transitions.create('border-bottom-color', {\n duration: theme.transitions.duration.shorter\n }),\n pointerEvents: 'none' // Transparent to the hover style.\n },\n\n [`&:hover:not(.${filledInputClasses.disabled}, .${filledInputClasses.error}):before`]: {\n borderBottom: `1px solid ${(theme.vars || theme).palette.text.primary}`\n },\n [`&.${filledInputClasses.disabled}:before`]: {\n borderBottomStyle: 'dotted'\n }\n }, ownerState.startAdornment && {\n paddingLeft: 12\n }, ownerState.endAdornment && {\n paddingRight: 12\n }, ownerState.multiline && _extends({\n padding: '25px 12px 8px'\n }, ownerState.size === 'small' && {\n paddingTop: 21,\n paddingBottom: 4\n }, ownerState.hiddenLabel && {\n paddingTop: 16,\n paddingBottom: 17\n }));\n});\nconst FilledInputInput = styled(InputBaseInput, {\n name: 'MuiFilledInput',\n slot: 'Input',\n overridesResolver: inputBaseInputOverridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({\n paddingTop: 25,\n paddingRight: 12,\n paddingBottom: 8,\n paddingLeft: 12\n}, !theme.vars && {\n '&:-webkit-autofill': {\n WebkitBoxShadow: theme.palette.mode === 'light' ? null : '0 0 0 100px #266798 inset',\n WebkitTextFillColor: theme.palette.mode === 'light' ? null : '#fff',\n caretColor: theme.palette.mode === 'light' ? null : '#fff',\n borderTopLeftRadius: 'inherit',\n borderTopRightRadius: 'inherit'\n }\n}, theme.vars && {\n '&:-webkit-autofill': {\n borderTopLeftRadius: 'inherit',\n borderTopRightRadius: 'inherit'\n },\n [theme.getColorSchemeSelector('dark')]: {\n '&:-webkit-autofill': {\n WebkitBoxShadow: '0 0 0 100px #266798 inset',\n WebkitTextFillColor: '#fff',\n caretColor: '#fff'\n }\n }\n}, ownerState.size === 'small' && {\n paddingTop: 21,\n paddingBottom: 4\n}, ownerState.hiddenLabel && {\n paddingTop: 16,\n paddingBottom: 17\n}, ownerState.multiline && {\n paddingTop: 0,\n paddingBottom: 0,\n paddingLeft: 0,\n paddingRight: 0\n}, ownerState.startAdornment && {\n paddingLeft: 0\n}, ownerState.endAdornment && {\n paddingRight: 0\n}, ownerState.hiddenLabel && ownerState.size === 'small' && {\n paddingTop: 8,\n paddingBottom: 9\n}));\nconst FilledInput = /*#__PURE__*/React.forwardRef(function FilledInput(inProps, ref) {\n var _ref, _slots$root, _ref2, _slots$input;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFilledInput'\n });\n const {\n components = {},\n componentsProps: componentsPropsProp,\n fullWidth = false,\n // declare here to prevent spreading to DOM\n inputComponent = 'input',\n multiline = false,\n slotProps,\n slots = {},\n type = 'text'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n fullWidth,\n inputComponent,\n multiline,\n type\n });\n const classes = useUtilityClasses(props);\n const filledInputComponentsProps = {\n root: {\n ownerState\n },\n input: {\n ownerState\n }\n };\n const componentsProps = (slotProps != null ? slotProps : componentsPropsProp) ? deepmerge(slotProps != null ? slotProps : componentsPropsProp, filledInputComponentsProps) : filledInputComponentsProps;\n const RootSlot = (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : FilledInputRoot;\n const InputSlot = (_ref2 = (_slots$input = slots.input) != null ? _slots$input : components.Input) != null ? _ref2 : FilledInputInput;\n return /*#__PURE__*/_jsx(InputBase, _extends({\n slots: {\n root: RootSlot,\n input: InputSlot\n },\n componentsProps: componentsProps,\n fullWidth: fullWidth,\n inputComponent: inputComponent,\n multiline: multiline,\n ref: ref,\n type: type\n }, other, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FilledInput.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 * This prop helps users to fill forms faster, especially on mobile devices.\n * The name can be confusing, as it's more like an autofill.\n * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n */\n autoComplete: PropTypes.string,\n /**\n * If `true`, the `input` element is focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\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 * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Input: PropTypes.elementType,\n Root: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `slotProps` prop.\n * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n input: PropTypes.object,\n root: PropTypes.object\n }),\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * If `true`, the component is disabled.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the input will not have an underline.\n */\n disableUnderline: PropTypes.bool,\n /**\n * End `InputAdornment` for this component.\n */\n endAdornment: PropTypes.node,\n /**\n * If `true`, the `input` will indicate an error.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the `input` will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * If `true`, the label is hidden.\n * This is used to increase density for a `FilledInput`.\n * Be sure to add `aria-label` to the `input` element.\n * @default false\n */\n hiddenLabel: PropTypes.bool,\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n /**\n * The component used for the `input` element.\n * Either a string to use a HTML element or a component.\n * @default 'input'\n */\n inputComponent: PropTypes.elementType,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n * @default {}\n */\n inputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n */\n margin: PropTypes.oneOf(['dense', 'none']),\n /**\n * Maximum number of rows to display when multiline option is set to true.\n */\n maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Minimum number of rows to display when multiline option is set to true.\n */\n minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n * @default false\n */\n multiline: PropTypes.bool,\n /**\n * Name attribute of the `input` element.\n */\n name: PropTypes.string,\n /**\n * Callback fired when the value is changed.\n *\n * @param {React.ChangeEvent} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * The short hint displayed in the `input` before the user enters a value.\n */\n placeholder: PropTypes.string,\n /**\n * It prevents the user from changing the value of the field\n * (not from interacting with the field).\n */\n readOnly: PropTypes.bool,\n /**\n * If `true`, the `input` element is required.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n required: PropTypes.bool,\n /**\n * Number of rows to display when multiline option is set to true.\n */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slotProps: PropTypes.shape({\n input: PropTypes.object,\n root: PropTypes.object\n }),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `components` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slots: PropTypes.shape({\n input: PropTypes.elementType,\n root: PropTypes.elementType\n }),\n /**\n * Start `InputAdornment` for this component.\n */\n startAdornment: PropTypes.node,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n * @default 'text'\n */\n type: PropTypes.string,\n /**\n * The value of the `input` element, required for a controlled component.\n */\n value: PropTypes.any\n} : void 0;\nFilledInput.muiName = 'Input';\nexport default FilledInput;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _span;\nconst _excluded = [\"children\", \"classes\", \"className\", \"label\", \"notched\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NotchedOutlineRoot = styled('fieldset')({\n textAlign: 'left',\n position: 'absolute',\n bottom: 0,\n right: 0,\n top: -5,\n left: 0,\n margin: 0,\n padding: '0 8px',\n pointerEvents: 'none',\n borderRadius: 'inherit',\n borderStyle: 'solid',\n borderWidth: 1,\n overflow: 'hidden',\n minWidth: '0%'\n});\nconst NotchedOutlineLegend = styled('legend')(({\n ownerState,\n theme\n}) => _extends({\n float: 'unset',\n // Fix conflict with bootstrap\n width: 'auto',\n // Fix conflict with bootstrap\n overflow: 'hidden'\n}, !ownerState.withLabel && {\n padding: 0,\n lineHeight: '11px',\n // sync with `height` in `legend` styles\n transition: theme.transitions.create('width', {\n duration: 150,\n easing: theme.transitions.easing.easeOut\n })\n}, ownerState.withLabel && _extends({\n display: 'block',\n // Fix conflict with normalize.css and sanitize.css\n padding: 0,\n height: 11,\n // sync with `lineHeight` in `legend` styles\n fontSize: '0.75em',\n visibility: 'hidden',\n maxWidth: 0.01,\n transition: theme.transitions.create('max-width', {\n duration: 50,\n easing: theme.transitions.easing.easeOut\n }),\n whiteSpace: 'nowrap',\n '& > span': {\n paddingLeft: 5,\n paddingRight: 5,\n display: 'inline-block',\n opacity: 0,\n visibility: 'visible'\n }\n}, ownerState.notched && {\n maxWidth: '100%',\n transition: theme.transitions.create('max-width', {\n duration: 100,\n easing: theme.transitions.easing.easeOut,\n delay: 50\n })\n})));\n\n/**\n * @ignore - internal component.\n */\nexport default function NotchedOutline(props) {\n const {\n className,\n label,\n notched\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const withLabel = label != null && label !== '';\n const ownerState = _extends({}, props, {\n notched,\n withLabel\n });\n return /*#__PURE__*/_jsx(NotchedOutlineRoot, _extends({\n \"aria-hidden\": true,\n className: className,\n ownerState: ownerState\n }, other, {\n children: /*#__PURE__*/_jsx(NotchedOutlineLegend, {\n ownerState: ownerState,\n children: withLabel ? /*#__PURE__*/_jsx(\"span\", {\n children: label\n }) : // notranslate needed while Google Translate will not fix zero-width space issue\n _span || (_span = /*#__PURE__*/_jsx(\"span\", {\n className: \"notranslate\",\n children: \"\\u200B\"\n }))\n })\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? NotchedOutline.propTypes = {\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The label.\n */\n label: PropTypes.node,\n /**\n * If `true`, the outline is notched to accommodate the label.\n */\n notched: PropTypes.bool.isRequired,\n /**\n * @ignore\n */\n style: PropTypes.object\n} : void 0;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"components\", \"fullWidth\", \"inputComponent\", \"label\", \"multiline\", \"notched\", \"slots\", \"type\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { refType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport NotchedOutline from './NotchedOutline';\nimport useFormControl from '../FormControl/useFormControl';\nimport formControlState from '../FormControl/formControlState';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport outlinedInputClasses, { getOutlinedInputUtilityClass } from './outlinedInputClasses';\nimport InputBase, { rootOverridesResolver as inputBaseRootOverridesResolver, inputOverridesResolver as inputBaseInputOverridesResolver, InputBaseRoot, InputBaseComponent as InputBaseInput } from '../InputBase/InputBase';\nimport useThemeProps from '../styles/useThemeProps';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n notchedOutline: ['notchedOutline'],\n input: ['input']\n };\n const composedClasses = composeClasses(slots, getOutlinedInputUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst OutlinedInputRoot = styled(InputBaseRoot, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiOutlinedInput',\n slot: 'Root',\n overridesResolver: inputBaseRootOverridesResolver\n})(({\n theme,\n ownerState\n}) => {\n const borderColor = theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)';\n return _extends({\n position: 'relative',\n borderRadius: (theme.vars || theme).shape.borderRadius,\n [`&:hover .${outlinedInputClasses.notchedOutline}`]: {\n borderColor: (theme.vars || theme).palette.text.primary\n },\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n [`&:hover .${outlinedInputClasses.notchedOutline}`]: {\n borderColor: theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : borderColor\n }\n },\n [`&.${outlinedInputClasses.focused} .${outlinedInputClasses.notchedOutline}`]: {\n borderColor: (theme.vars || theme).palette[ownerState.color].main,\n borderWidth: 2\n },\n [`&.${outlinedInputClasses.error} .${outlinedInputClasses.notchedOutline}`]: {\n borderColor: (theme.vars || theme).palette.error.main\n },\n [`&.${outlinedInputClasses.disabled} .${outlinedInputClasses.notchedOutline}`]: {\n borderColor: (theme.vars || theme).palette.action.disabled\n }\n }, ownerState.startAdornment && {\n paddingLeft: 14\n }, ownerState.endAdornment && {\n paddingRight: 14\n }, ownerState.multiline && _extends({\n padding: '16.5px 14px'\n }, ownerState.size === 'small' && {\n padding: '8.5px 14px'\n }));\n});\nconst NotchedOutlineRoot = styled(NotchedOutline, {\n name: 'MuiOutlinedInput',\n slot: 'NotchedOutline',\n overridesResolver: (props, styles) => styles.notchedOutline\n})(({\n theme\n}) => {\n const borderColor = theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)';\n return {\n borderColor: theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : borderColor\n };\n});\nconst OutlinedInputInput = styled(InputBaseInput, {\n name: 'MuiOutlinedInput',\n slot: 'Input',\n overridesResolver: inputBaseInputOverridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({\n padding: '16.5px 14px'\n}, !theme.vars && {\n '&:-webkit-autofill': {\n WebkitBoxShadow: theme.palette.mode === 'light' ? null : '0 0 0 100px #266798 inset',\n WebkitTextFillColor: theme.palette.mode === 'light' ? null : '#fff',\n caretColor: theme.palette.mode === 'light' ? null : '#fff',\n borderRadius: 'inherit'\n }\n}, theme.vars && {\n '&:-webkit-autofill': {\n borderRadius: 'inherit'\n },\n [theme.getColorSchemeSelector('dark')]: {\n '&:-webkit-autofill': {\n WebkitBoxShadow: '0 0 0 100px #266798 inset',\n WebkitTextFillColor: '#fff',\n caretColor: '#fff'\n }\n }\n}, ownerState.size === 'small' && {\n padding: '8.5px 14px'\n}, ownerState.multiline && {\n padding: 0\n}, ownerState.startAdornment && {\n paddingLeft: 0\n}, ownerState.endAdornment && {\n paddingRight: 0\n}));\nconst OutlinedInput = /*#__PURE__*/React.forwardRef(function OutlinedInput(inProps, ref) {\n var _ref, _slots$root, _ref2, _slots$input, _React$Fragment;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiOutlinedInput'\n });\n const {\n components = {},\n fullWidth = false,\n inputComponent = 'input',\n label,\n multiline = false,\n notched,\n slots = {},\n type = 'text'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const classes = useUtilityClasses(props);\n const muiFormControl = useFormControl();\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['color', 'disabled', 'error', 'focused', 'hiddenLabel', 'size', 'required']\n });\n const ownerState = _extends({}, props, {\n color: fcs.color || 'primary',\n disabled: fcs.disabled,\n error: fcs.error,\n focused: fcs.focused,\n formControl: muiFormControl,\n fullWidth,\n hiddenLabel: fcs.hiddenLabel,\n multiline,\n size: fcs.size,\n type\n });\n const RootSlot = (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : OutlinedInputRoot;\n const InputSlot = (_ref2 = (_slots$input = slots.input) != null ? _slots$input : components.Input) != null ? _ref2 : OutlinedInputInput;\n return /*#__PURE__*/_jsx(InputBase, _extends({\n slots: {\n root: RootSlot,\n input: InputSlot\n },\n renderSuffix: state => /*#__PURE__*/_jsx(NotchedOutlineRoot, {\n ownerState: ownerState,\n className: classes.notchedOutline,\n label: label != null && label !== '' && fcs.required ? _React$Fragment || (_React$Fragment = /*#__PURE__*/_jsxs(React.Fragment, {\n children: [label, \"\\u2009\", '*']\n })) : label,\n notched: typeof notched !== 'undefined' ? notched : Boolean(state.startAdornment || state.filled || state.focused)\n }),\n fullWidth: fullWidth,\n inputComponent: inputComponent,\n multiline: multiline,\n ref: ref,\n type: type\n }, other, {\n classes: _extends({}, classes, {\n notchedOutline: null\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? OutlinedInput.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 * This prop helps users to fill forms faster, especially on mobile devices.\n * The name can be confusing, as it's more like an autofill.\n * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n */\n autoComplete: PropTypes.string,\n /**\n * If `true`, the `input` element is focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\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 * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Input: PropTypes.elementType,\n Root: PropTypes.elementType\n }),\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * If `true`, the component is disabled.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n disabled: PropTypes.bool,\n /**\n * End `InputAdornment` for this component.\n */\n endAdornment: PropTypes.node,\n /**\n * If `true`, the `input` will indicate an error.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the `input` will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n /**\n * The component used for the `input` element.\n * Either a string to use a HTML element or a component.\n * @default 'input'\n */\n inputComponent: PropTypes.elementType,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n * @default {}\n */\n inputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * The label of the `input`. It is only used for layout. The actual labelling\n * is handled by `InputLabel`.\n */\n label: PropTypes.node,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n */\n margin: PropTypes.oneOf(['dense', 'none']),\n /**\n * Maximum number of rows to display when multiline option is set to true.\n */\n maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Minimum number of rows to display when multiline option is set to true.\n */\n minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n * @default false\n */\n multiline: PropTypes.bool,\n /**\n * Name attribute of the `input` element.\n */\n name: PropTypes.string,\n /**\n * If `true`, the outline is notched to accommodate the label.\n */\n notched: PropTypes.bool,\n /**\n * Callback fired when the value is changed.\n *\n * @param {React.ChangeEvent} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * The short hint displayed in the `input` before the user enters a value.\n */\n placeholder: PropTypes.string,\n /**\n * It prevents the user from changing the value of the field\n * (not from interacting with the field).\n */\n readOnly: PropTypes.bool,\n /**\n * If `true`, the `input` element is required.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n required: PropTypes.bool,\n /**\n * Number of rows to display when multiline option is set to true.\n */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `components` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slots: PropTypes.shape({\n input: PropTypes.elementType,\n root: PropTypes.elementType\n }),\n /**\n * Start `InputAdornment` for this component.\n */\n startAdornment: PropTypes.node,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n * @default 'text'\n */\n type: PropTypes.string,\n /**\n * The value of the `input` element, required for a controlled component.\n */\n value: PropTypes.any\n} : void 0;\nOutlinedInput.muiName = 'Input';\nexport default OutlinedInput;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getFormHelperTextUtilityClasses(slot) {\n return generateUtilityClass('MuiFormHelperText', slot);\n}\nconst formHelperTextClasses = generateUtilityClasses('MuiFormHelperText', ['root', 'error', 'disabled', 'sizeSmall', 'sizeMedium', 'contained', 'focused', 'filled', 'required']);\nexport default formHelperTextClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _span;\nconst _excluded = [\"children\", \"className\", \"component\", \"disabled\", \"error\", \"filled\", \"focused\", \"margin\", \"required\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport styled from '../styles/styled';\nimport capitalize from '../utils/capitalize';\nimport formHelperTextClasses, { getFormHelperTextUtilityClasses } from './formHelperTextClasses';\nimport useThemeProps from '../styles/useThemeProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n contained,\n size,\n disabled,\n error,\n filled,\n focused,\n required\n } = ownerState;\n const slots = {\n root: ['root', disabled && 'disabled', error && 'error', size && `size${capitalize(size)}`, contained && 'contained', focused && 'focused', filled && 'filled', required && 'required']\n };\n return composeClasses(slots, getFormHelperTextUtilityClasses, classes);\n};\nconst FormHelperTextRoot = styled('p', {\n name: 'MuiFormHelperText',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.size && styles[`size${capitalize(ownerState.size)}`], ownerState.contained && styles.contained, ownerState.filled && styles.filled];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n color: (theme.vars || theme).palette.text.secondary\n}, theme.typography.caption, {\n textAlign: 'left',\n marginTop: 3,\n marginRight: 0,\n marginBottom: 0,\n marginLeft: 0,\n [`&.${formHelperTextClasses.disabled}`]: {\n color: (theme.vars || theme).palette.text.disabled\n },\n [`&.${formHelperTextClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}, ownerState.size === 'small' && {\n marginTop: 4\n}, ownerState.contained && {\n marginLeft: 14,\n marginRight: 14\n}));\nconst FormHelperText = /*#__PURE__*/React.forwardRef(function FormHelperText(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFormHelperText'\n });\n const {\n children,\n className,\n component = 'p'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['variant', 'size', 'disabled', 'error', 'filled', 'focused', 'required']\n });\n const ownerState = _extends({}, props, {\n component,\n contained: fcs.variant === 'filled' || fcs.variant === 'outlined',\n variant: fcs.variant,\n size: fcs.size,\n disabled: fcs.disabled,\n error: fcs.error,\n filled: fcs.filled,\n focused: fcs.focused,\n required: fcs.required\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(FormHelperTextRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: children === ' ' ? // notranslate needed while Google Translate will not fix zero-width space issue\n _span || (_span = /*#__PURE__*/_jsx(\"span\", {\n className: \"notranslate\",\n children: \"\\u200B\"\n })) : children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormHelperText.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 * If `' '` is provided, the component reserves one line height for displaying a future message.\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`, the helper text should be displayed in a disabled state.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, helper text should be displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the helper text should use filled classes key.\n */\n filled: PropTypes.bool,\n /**\n * If `true`, the helper text should use focused classes key.\n */\n focused: PropTypes.bool,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n */\n margin: PropTypes.oneOf(['dense']),\n /**\n * If `true`, the helper text should use required classes key.\n */\n required: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['filled', 'outlined', 'standard']), PropTypes.string])\n} : void 0;\nexport default FormHelperText;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getNativeSelectUtilityClasses(slot) {\n return generateUtilityClass('MuiNativeSelect', slot);\n}\nconst nativeSelectClasses = generateUtilityClasses('MuiNativeSelect', ['root', 'select', 'multiple', 'filled', 'outlined', 'standard', 'disabled', 'icon', 'iconOpen', 'iconFilled', 'iconOutlined', 'iconStandard', 'nativeInput', 'error']);\nexport default nativeSelectClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"disabled\", \"error\", \"IconComponent\", \"inputRef\", \"variant\"];\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/composeClasses';\nimport capitalize from '../utils/capitalize';\nimport nativeSelectClasses, { getNativeSelectUtilityClasses } from './nativeSelectClasses';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n variant,\n disabled,\n multiple,\n open,\n error\n } = ownerState;\n const slots = {\n select: ['select', variant, disabled && 'disabled', multiple && 'multiple', error && 'error'],\n icon: ['icon', `icon${capitalize(variant)}`, open && 'iconOpen', disabled && 'disabled']\n };\n return composeClasses(slots, getNativeSelectUtilityClasses, classes);\n};\nexport const nativeSelectSelectStyles = ({\n ownerState,\n theme\n}) => _extends({\n MozAppearance: 'none',\n // Reset\n WebkitAppearance: 'none',\n // Reset\n // When interacting quickly, the text can end up selected.\n // Native select can't be selected either.\n userSelect: 'none',\n borderRadius: 0,\n // Reset\n cursor: 'pointer',\n '&:focus': _extends({}, theme.vars ? {\n backgroundColor: `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.05)`\n } : {\n backgroundColor: theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.05)' : 'rgba(255, 255, 255, 0.05)'\n }, {\n borderRadius: 0 // Reset Chrome style\n }),\n\n // Remove IE11 arrow\n '&::-ms-expand': {\n display: 'none'\n },\n [`&.${nativeSelectClasses.disabled}`]: {\n cursor: 'default'\n },\n '&[multiple]': {\n height: 'auto'\n },\n '&:not([multiple]) option, &:not([multiple]) optgroup': {\n backgroundColor: (theme.vars || theme).palette.background.paper\n },\n // Bump specificity to allow extending custom inputs\n '&&&': {\n paddingRight: 24,\n minWidth: 16 // So it doesn't collapse.\n }\n}, ownerState.variant === 'filled' && {\n '&&&': {\n paddingRight: 32\n }\n}, ownerState.variant === 'outlined' && {\n borderRadius: (theme.vars || theme).shape.borderRadius,\n '&:focus': {\n borderRadius: (theme.vars || theme).shape.borderRadius // Reset the reset for Chrome style\n },\n\n '&&&': {\n paddingRight: 32\n }\n});\nconst NativeSelectSelect = styled('select', {\n name: 'MuiNativeSelect',\n slot: 'Select',\n shouldForwardProp: rootShouldForwardProp,\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.select, styles[ownerState.variant], ownerState.error && styles.error, {\n [`&.${nativeSelectClasses.multiple}`]: styles.multiple\n }];\n }\n})(nativeSelectSelectStyles);\nexport const nativeSelectIconStyles = ({\n ownerState,\n theme\n}) => _extends({\n // We use a position absolute over a flexbox in order to forward the pointer events\n // to the input and to support wrapping tags..\n position: 'absolute',\n right: 0,\n top: 'calc(50% - .5em)',\n // Center vertically, height is 1em\n pointerEvents: 'none',\n // Don't block pointer events on the select under the icon.\n color: (theme.vars || theme).palette.action.active,\n [`&.${nativeSelectClasses.disabled}`]: {\n color: (theme.vars || theme).palette.action.disabled\n }\n}, ownerState.open && {\n transform: 'rotate(180deg)'\n}, ownerState.variant === 'filled' && {\n right: 7\n}, ownerState.variant === 'outlined' && {\n right: 7\n});\nconst NativeSelectIcon = styled('svg', {\n name: 'MuiNativeSelect',\n slot: 'Icon',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.icon, ownerState.variant && styles[`icon${capitalize(ownerState.variant)}`], ownerState.open && styles.iconOpen];\n }\n})(nativeSelectIconStyles);\n\n/**\n * @ignore - internal component.\n */\nconst NativeSelectInput = /*#__PURE__*/React.forwardRef(function NativeSelectInput(props, ref) {\n const {\n className,\n disabled,\n error,\n IconComponent,\n inputRef,\n variant = 'standard'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n disabled,\n variant,\n error\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(NativeSelectSelect, _extends({\n ownerState: ownerState,\n className: clsx(classes.select, className),\n disabled: disabled,\n ref: inputRef || ref\n }, other)), props.multiple ? null : /*#__PURE__*/_jsx(NativeSelectIcon, {\n as: IconComponent,\n ownerState: ownerState,\n className: classes.icon\n })]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? NativeSelectInput.propTypes = {\n /**\n * The option elements to populate the select with.\n * Can be some `
    \n
    \n )}\n {deleteVersions && (\n \n \n This will remove the object as well as all of its versions,{\" \"}\n
    \n This action is irreversible.\n \n
    \n Are you sure you want to continue?\n
    \n )}\n \n }\n />\n );\n};\n\nexport default DeleteObject;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport get from \"lodash/get\";\nimport { Button, Grid, Switch } from \"mds\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\n\nimport { setModalErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\nimport { BucketObject, ObjectLegalHoldStatus } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\n\ninterface ISetRetentionProps {\n classes: any;\n open: boolean;\n closeModalAndRefresh: (reload: boolean) => void;\n objectName: string;\n bucketName: string;\n actualInfo: BucketObject;\n}\n\nconst SetLegalHoldModal = ({\n classes,\n open,\n closeModalAndRefresh,\n objectName,\n bucketName,\n actualInfo,\n}: ISetRetentionProps) => {\n const dispatch = useAppDispatch();\n const [legalHoldEnabled, setLegalHoldEnabled] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n const versionId = actualInfo.version_id;\n\n useEffect(() => {\n const status = get(actualInfo, \"legal_hold_status\", \"OFF\");\n setLegalHoldEnabled(status === \"ON\");\n }, [actualInfo]);\n\n const onSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n setIsSaving(true);\n\n api.buckets\n .putObjectLegalHold(\n bucketName,\n {\n prefix: encodeURLString(objectName),\n version_id: versionId || \"\",\n },\n {\n status: legalHoldEnabled\n ? ObjectLegalHoldStatus.Enabled\n : ObjectLegalHoldStatus.Disabled,\n },\n )\n .then(() => {\n setIsSaving(false);\n closeModalAndRefresh(true);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setIsSaving(false);\n });\n };\n\n const resetForm = () => {\n setLegalHoldEnabled(false);\n };\n\n return (\n {\n resetForm();\n closeModalAndRefresh(false);\n }}\n >\n \n Object: {bucketName}\n \n\n ) => {\n onSubmit(e);\n }}\n >\n \n ) => {\n setLegalHoldEnabled(!legalHoldEnabled);\n }}\n label={\"Legal Hold Status\"}\n indicatorLabels={[\"Enabled\", \"Disabled\"]}\n tooltip={\n \"To enable this feature you need to enable versioning on the bucket before creation\"\n }\n />\n \n \n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(SetLegalHoldModal);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { Box, Grid } from \"@mui/material\";\nimport {\n AddNewTagIcon,\n Button,\n DisabledIcon,\n EditTagIcon,\n InputBox,\n SectionTitle,\n} from \"mds\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { SecureComponent } from \"../../../../../../common/SecureComponent\";\nimport Chip from \"@mui/material/Chip\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport {\n selDistSet,\n setModalErrorSnackMessage,\n} from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\nimport { BucketObject } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { encodeURLString } from \"common/utils\";\nimport { useSelector } from \"react-redux\";\n\ninterface ITagModal {\n modalOpen: boolean;\n bucketName: string;\n actualInfo: BucketObject;\n onCloseAndUpdate: (refresh: boolean) => void;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n newTileHeader: {\n fontSize: 18,\n fontWeight: \"bold\",\n color: \"#000\",\n margin: \"35px 0\",\n paddingBottom: 15,\n display: \"flex\",\n alignItems: \"center\",\n \"& > svg\": {\n marginRight: 10,\n },\n },\n tagsForLabel: {\n fontSize: 16,\n margin: \"20px 0 30px\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n width: \"100%\",\n },\n currentTagsContainer: {\n fontSize: 14,\n fontWeight: \"normal\",\n },\n noTagsForObject: {\n color: \"#858585\",\n },\n deleteTag: {\n color: \"#C83B51\",\n marginLeft: 5,\n },\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\n\nconst AddTagModal = ({\n modalOpen,\n onCloseAndUpdate,\n bucketName,\n actualInfo,\n classes,\n}: ITagModal) => {\n const dispatch = useAppDispatch();\n const distributedSetup = useSelector(selDistSet);\n const [newKey, setNewKey] = useState(\"\");\n const [newLabel, setNewLabel] = useState(\"\");\n const [isSending, setIsSending] = useState(false);\n const [deleteEnabled, setDeleteEnabled] = useState(false);\n const [deleteKey, setDeleteKey] = useState(\"\");\n const [deleteLabel, setDeleteLabel] = useState(\"\");\n\n const selectedObject = encodeURLString(actualInfo.name || \"\");\n\n const currentTags = actualInfo.tags;\n const currTagKeys = Object.keys(currentTags || {});\n\n const allPathData = actualInfo.name?.split(\"/\");\n const currentItem = allPathData?.pop() || \"\";\n\n const resetForm = () => {\n setNewLabel(\"\");\n setNewKey(\"\");\n };\n\n const addTagProcess = () => {\n setIsSending(true);\n const newTag: any = {};\n\n newTag[newKey] = newLabel;\n const newTagList = { ...currentTags, ...newTag };\n\n const verID = distributedSetup ? actualInfo.version_id || \"\" : \"null\";\n\n api.buckets\n .putObjectTags(\n bucketName,\n { prefix: selectedObject, version_id: verID },\n { tags: newTagList },\n )\n .then(() => {\n onCloseAndUpdate(true);\n setIsSending(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setIsSending(false);\n });\n };\n\n const deleteTagProcess = () => {\n const cleanObject: any = { ...currentTags };\n delete cleanObject[deleteKey];\n\n const verID = distributedSetup ? actualInfo.version_id || \"\" : \"null\";\n\n api.buckets\n .putObjectTags(\n bucketName,\n { prefix: selectedObject, version_id: verID },\n { tags: cleanObject },\n )\n .then(() => {\n onCloseAndUpdate(true);\n setIsSending(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setIsSending(false);\n });\n };\n\n const onDeleteTag = (tagKey: string, tag: string) => {\n setDeleteKey(tagKey);\n setDeleteLabel(tag);\n setDeleteEnabled(true);\n };\n\n const cancelDelete = () => {\n setDeleteKey(\"\");\n setDeleteLabel(\"\");\n setDeleteEnabled(false);\n };\n\n const tagsFor = (plural: boolean) => (\n
    \n Tag{plural ? \"s\" : \"\"} for: {currentItem}\n
    \n );\n\n return (\n \n {\n onCloseAndUpdate(true);\n }}\n titleIcon={\n deleteEnabled ? (\n \n ) : (\n \n )\n }\n >\n {deleteEnabled ? (\n \n \n {tagsFor(false)}\n Are you sure you want to delete the tag{\" \"}\n \n {deleteKey} : {deleteLabel}\n {\" \"}\n ?\n \n \n \n \n \n \n ) : (\n \n \n \n {tagsFor(true)}\n
    \n Current Tags:\n
    \n {currTagKeys.length === 0 ? (\n \n There are no tags for this object\n \n ) : (\n \n )}\n \n {currTagKeys.map((tagKey: string, index: number) => {\n const tag = get(currentTags, `${tagKey}`, \"\");\n if (tag !== \"\") {\n return (\n \n }\n onDelete={() => {\n onDeleteTag(tagKey, tag);\n }}\n />\n \n );\n }\n return null;\n })}\n \n
    \n \n \n \n \n } separator={false}>\n Add New Tag\n \n \n {\n setNewKey(e.target.value);\n }}\n />\n \n \n {\n setNewLabel(e.target.value);\n }}\n />\n \n \n \n \n \n \n \n
    \n )}\n \n
    \n );\n};\n\nexport default withStyles(styles)(AddTagModal);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport {\n Button,\n InspectMenuIcon,\n PasswordKeyIcon,\n Switch,\n Grid,\n Box,\n} from \"mds\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n decodeURLString,\n deleteCookie,\n encodeURLString,\n getCookieValue,\n performDownload,\n} from \"../../../../../../common/utils\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { DialogContentText } from \"@mui/material\";\nimport KeyRevealer from \"../../../../Tools/KeyRevealer\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\n\ninterface IInspectObjectProps {\n classes: any;\n closeInspectModalAndRefresh: (refresh: boolean) => void;\n inspectOpen: boolean;\n inspectPath: string;\n volumeName: string;\n}\n\nconst InspectObject = ({\n classes,\n closeInspectModalAndRefresh,\n inspectOpen,\n inspectPath,\n volumeName,\n}: IInspectObjectProps) => {\n const dispatch = useAppDispatch();\n const onClose = () => closeInspectModalAndRefresh(false);\n const [isEncrypt, setIsEncrypt] = useState(true);\n const [decryptionKey, setDecryptionKey] = useState(\"\");\n const [insFileName, setInsFileName] = useState(\"\");\n\n if (!inspectPath) {\n return null;\n }\n const makeRequest = async (url: string) => {\n return await fetch(url, { method: \"GET\" });\n };\n\n const performInspect = async () => {\n const file = encodeURLString(inspectPath + \"/xl.meta\");\n const volume = encodeURLString(volumeName);\n\n const urlOfInspectApi = `/api/v1/admin/inspect?volume=${volume}&file=${file}&encrypt=${isEncrypt}`;\n\n makeRequest(urlOfInspectApi)\n .then(async (res) => {\n if (!res.ok) {\n const resErr: any = await res.json();\n\n dispatch(\n setErrorSnackMessage({\n errorMessage: resErr.message,\n detailedError: resErr.code,\n }),\n );\n }\n const blob: Blob = await res.blob();\n\n //@ts-ignore\n const filename = res.headers.get(\"content-disposition\").split('\"')[1];\n const decryptKey = getCookieValue(filename) || \"\";\n\n performDownload(blob, filename);\n setInsFileName(filename);\n if (decryptKey === \"\") {\n onClose();\n return;\n }\n setDecryptionKey(decryptKey);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(err));\n });\n };\n\n const onCloseDecKeyModal = () => {\n deleteCookie(insFileName);\n onClose();\n setDecryptionKey(\"\");\n };\n\n const onSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n };\n\n return (\n \n {!decryptionKey && (\n }\n title={`Inspect Object`}\n onClose={onClose}\n >\n ) => {\n onSubmit(e);\n }}\n >\n Would you like to encrypt {decodeURLString(inspectPath)}?{\" \"}\n
    \n {\n setIsEncrypt(!isEncrypt);\n }}\n description=\"\"\n />\n \n \n \n \n \n )}\n {decryptionKey ? (\n }\n >\n \n \n This will be displayed only once. It cannot be recovered.\n
    \n Use secure medium to share this key.\n
    \n \n \n \n
    \n \n ) : null}\n
    \n );\n};\n\nexport default withStyles(styles)(InspectObject);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { Button, EditIcon } from \"mds\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport {\n containerForHeader,\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../Common/FormComponents/common/styleLibrary\";\nimport { useAppDispatch } from \"../../../store\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FormSwitchWrapper from \"../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport { downloadObject } from \"./utils\";\nimport { BucketObject } from \"api/consoleApi\";\n\ninterface IRenameLongFilename {\n open: boolean;\n bucketName: string;\n internalPaths: string;\n currentItem: string;\n actualInfo: BucketObject;\n closeModal: () => void;\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...modalStyleUtils,\n ...formFieldStyles,\n ...spacingUtils,\n ...containerForHeader,\n }),\n);\n\nconst RenameLongFileName = ({\n open,\n closeModal,\n currentItem,\n internalPaths,\n actualInfo,\n bucketName,\n}: IRenameLongFilename) => {\n const classes = useStyles();\n const dispatch = useAppDispatch();\n\n const [newFileName, setNewFileName] = useState(currentItem);\n const [acceptLongName, setAcceptLongName] = useState(false);\n\n const doDownload = (e: React.FormEvent) => {\n e.preventDefault();\n downloadObject(dispatch, bucketName, internalPaths, actualInfo);\n closeModal();\n };\n\n return (\n }\n >\n
    \n The file you are trying to download has a long name.\n
    \n This can cause issues on Windows Systems by trimming the file name after\n download.\n
    \n
    We recommend to rename the file download\n
    \n ) => {\n doDownload(e);\n }}\n >\n \n \n \n ) => {\n setNewFileName(event.target.value);\n }}\n label=\"\"\n type={\"text\"}\n value={newFileName}\n error={\n newFileName.length > 200 && !acceptLongName\n ? \"Filename should be less than 200 characters long.\"\n : \"\"\n }\n />\n \n \n ) => {\n setAcceptLongName(event.target.checked);\n if (event.target.checked) {\n setNewFileName(currentItem);\n }\n }}\n label={\"Use Original Name\"}\n />\n \n \n \n 200 && !acceptLongName}\n label={\"Download File\"}\n />\n \n \n \n \n );\n};\n\nexport default RenameLongFileName;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport {\n ActionsList,\n Box,\n Button,\n DeleteIcon,\n DownloadIcon,\n Grid,\n InspectMenuIcon,\n LegalHoldIcon,\n Loader,\n MetadataIcon,\n ObjectInfoIcon,\n PreviewIcon,\n RetentionIcon,\n ShareIcon,\n SimpleHeader,\n TagsIcon,\n VersionsIcon,\n} from \"mds\";\nimport { api } from \"api\";\nimport { downloadObject } from \"../../../../ObjectBrowser/utils\";\nimport { BucketObject, BucketVersioningResponse } from \"api/consoleApi\";\nimport { AllowedPreviews, previewObjectType } from \"../utils\";\nimport {\n decodeURLString,\n niceBytes,\n niceBytesInt,\n niceDaysInt,\n} from \"../../../../../../common/utils\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../../../common/SecureComponent/permissions\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../../../common/SecureComponent\";\nimport { selDistSet } from \"../../../../../../systemSlice\";\nimport {\n setLoadingObjectInfo,\n setLoadingVersions,\n setSelectedVersion,\n setVersionsModeEnabled,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport { displayFileIconName } from \"./utils\";\nimport PreviewFileModal from \"../Preview/PreviewFileModal\";\nimport ObjectMetaData from \"../ObjectDetails/ObjectMetaData\";\nimport ShareFile from \"../ObjectDetails/ShareFile\";\nimport SetRetention from \"../ObjectDetails/SetRetention\";\nimport DeleteObject from \"../ListObjects/DeleteObject\";\nimport SetLegalHoldModal from \"../ObjectDetails/SetLegalHoldModal\";\nimport TagsModal from \"../ObjectDetails/TagsModal\";\nimport InspectObject from \"./InspectObject\";\nimport RenameLongFileName from \"../../../../ObjectBrowser/RenameLongFilename\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst emptyFile: BucketObject = {\n is_latest: true,\n last_modified: \"\",\n legal_hold_status: \"\",\n name: \"\",\n retention_mode: \"\",\n retention_until_date: \"\",\n size: 0,\n tags: {},\n version_id: undefined,\n};\n\ninterface IObjectDetailPanelProps {\n internalPaths: string;\n bucketName: string;\n versioningInfo: BucketVersioningResponse;\n locking: boolean | undefined;\n onClosePanel: (hardRefresh: boolean) => void;\n}\n\nconst ObjectDetailPanel = ({\n internalPaths,\n bucketName,\n versioningInfo,\n locking,\n onClosePanel,\n}: IObjectDetailPanelProps) => {\n const dispatch = useAppDispatch();\n\n const distributedSetup = useSelector(selDistSet);\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode,\n );\n const selectedVersion = useSelector(\n (state: AppState) => state.objectBrowser.selectedVersion,\n );\n const loadingObjectInfo = useSelector(\n (state: AppState) => state.objectBrowser.loadingObjectInfo,\n );\n\n const [shareFileModalOpen, setShareFileModalOpen] = useState(false);\n const [retentionModalOpen, setRetentionModalOpen] = useState(false);\n const [tagModalOpen, setTagModalOpen] = useState(false);\n const [legalholdOpen, setLegalholdOpen] = useState(false);\n const [inspectModalOpen, setInspectModalOpen] = useState(false);\n const [actualInfo, setActualInfo] = useState(null);\n const [allInfoElements, setAllInfoElements] = useState([]);\n const [objectToShare, setObjectToShare] = useState(null);\n const [versions, setVersions] = useState([]);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [previewOpen, setPreviewOpen] = useState(false);\n const [totalVersionsSize, setTotalVersionsSize] = useState(0);\n const [longFileOpen, setLongFileOpen] = useState(false);\n const [metaData, setMetaData] = useState(null);\n const [loadMetadata, setLoadingMetadata] = useState(false);\n\n const internalPathsDecoded = decodeURLString(internalPaths) || \"\";\n const allPathData = internalPathsDecoded.split(\"/\");\n const currentItem = allPathData.pop() || \"\";\n\n // calculate object name to display\n let objectNameArray: string[] = [];\n if (actualInfo && actualInfo.name) {\n objectNameArray = actualInfo.name.split(\"/\");\n }\n\n useEffect(() => {\n if (distributedSetup && allInfoElements && allInfoElements.length >= 1) {\n let infoElement =\n allInfoElements.find((el: BucketObject) => el.is_latest) || emptyFile;\n\n if (selectedVersion !== \"\") {\n infoElement =\n allInfoElements.find(\n (el: BucketObject) => el.version_id === selectedVersion,\n ) || emptyFile;\n }\n\n if (!infoElement.is_delete_marker) {\n setLoadingMetadata(true);\n }\n\n setActualInfo(infoElement);\n }\n }, [selectedVersion, distributedSetup, allInfoElements]);\n\n useEffect(() => {\n if (loadingObjectInfo && internalPaths !== \"\") {\n api.buckets\n .listObjects(bucketName, {\n prefix: internalPaths,\n with_versions: distributedSetup,\n })\n .then((res) => {\n const result: BucketObject[] = res.data.objects || [];\n if (distributedSetup) {\n setAllInfoElements(result);\n setVersions(result);\n\n const tVersionSize = result.reduce(\n (acc: number, currValue: BucketObject): number => {\n if (currValue?.size) {\n return acc + currValue.size;\n }\n return acc;\n },\n 0,\n );\n\n setTotalVersionsSize(tVersionSize);\n } else {\n const resInfo = result[0];\n\n setActualInfo(resInfo);\n setVersions([]);\n\n if (!resInfo.is_delete_marker) {\n setLoadingMetadata(true);\n }\n }\n\n dispatch(setLoadingObjectInfo(false));\n })\n .catch((err) => {\n console.error(\"Error loading object details\", err.error);\n dispatch(setLoadingObjectInfo(false));\n });\n }\n }, [\n loadingObjectInfo,\n bucketName,\n internalPaths,\n dispatch,\n distributedSetup,\n selectedVersion,\n ]);\n\n useEffect(() => {\n if (loadMetadata && internalPaths !== \"\") {\n api.buckets\n .getObjectMetadata(bucketName, {\n prefix: internalPaths,\n })\n .then((res) => {\n let metadata = get(res.data, \"objectMetadata\", {});\n\n setMetaData(metadata);\n setLoadingMetadata(false);\n })\n .catch((err) => {\n console.error(\"Error Getting Metadata Status: \", err.detailedError);\n setLoadingMetadata(false);\n });\n }\n }, [bucketName, internalPaths, loadMetadata]);\n\n let tagKeys: string[] = [];\n\n if (actualInfo && actualInfo.tags) {\n tagKeys = Object.keys(actualInfo.tags);\n }\n\n const openRetentionModal = () => {\n setRetentionModalOpen(true);\n };\n\n const closeRetentionModal = (updateInfo: boolean) => {\n setRetentionModalOpen(false);\n if (updateInfo) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const shareObject = () => {\n setShareFileModalOpen(true);\n };\n\n const closeShareModal = () => {\n setObjectToShare(null);\n setShareFileModalOpen(false);\n };\n\n const closeFileOpen = () => {\n setLongFileOpen(false);\n };\n\n const closeDeleteModal = (closeAndReload: boolean) => {\n setDeleteOpen(false);\n\n if (closeAndReload && selectedVersion === \"\") {\n onClosePanel(true);\n } else {\n dispatch(setLoadingVersions(true));\n dispatch(setSelectedVersion(\"\"));\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeAddTagModal = (reloadObjectData: boolean) => {\n setTagModalOpen(false);\n if (reloadObjectData) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeInspectModal = (reloadObjectData: boolean) => {\n setInspectModalOpen(false);\n if (reloadObjectData) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeLegalholdModal = (reload: boolean) => {\n setLegalholdOpen(false);\n if (reload) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const loaderForContainer = (\n
    \n \n
    \n );\n\n if (!actualInfo) {\n if (loadingObjectInfo) {\n return loaderForContainer;\n }\n\n return null;\n }\n\n const objectName =\n objectNameArray.length > 0\n ? objectNameArray[objectNameArray.length - 1]\n : actualInfo.name;\n\n const objectResources = [\n bucketName,\n currentItem,\n [bucketName, actualInfo.name].join(\"/\"),\n ];\n const canSetLegalHold = hasPermission(bucketName, [\n IAM_SCOPES.S3_PUT_OBJECT_LEGAL_HOLD,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n const canSetTags = hasPermission(objectResources, [\n IAM_SCOPES.S3_PUT_OBJECT_TAGGING,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n\n const canChangeRetention = hasPermission(\n objectResources,\n [\n IAM_SCOPES.S3_GET_OBJECT_RETENTION,\n IAM_SCOPES.S3_PUT_OBJECT_RETENTION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ],\n true,\n );\n const canInspect = hasPermission(objectResources, [\n IAM_SCOPES.ADMIN_INSPECT_DATA,\n ]);\n const canChangeVersioning = hasPermission(objectResources, [\n IAM_SCOPES.S3_GET_BUCKET_VERSIONING,\n IAM_SCOPES.S3_PUT_BUCKET_VERSIONING,\n IAM_SCOPES.S3_GET_OBJECT_VERSION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n const canGetObject = hasPermission(objectResources, [\n IAM_SCOPES.S3_GET_OBJECT,\n IAM_SCOPES.S3_GET_ACTIONS,\n ]);\n const canDelete = hasPermission(\n [bucketName, currentItem, [bucketName, actualInfo.name].join(\"/\")],\n [IAM_SCOPES.S3_DELETE_OBJECT],\n );\n\n let objectType: AllowedPreviews = previewObjectType(metaData, currentItem);\n\n const multiActionButtons = [\n {\n action: () => {\n downloadObject(dispatch, bucketName, internalPaths, actualInfo);\n },\n label: \"Download\",\n disabled: !!actualInfo.is_delete_marker || !canGetObject,\n icon: ,\n tooltip: canGetObject\n ? \"Download this Object\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n \"download this object\",\n ),\n },\n {\n action: () => {\n shareObject();\n },\n label: \"Share\",\n disabled: !!actualInfo.is_delete_marker || !canGetObject,\n icon: ,\n tooltip: canGetObject\n ? \"Share this File\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n \"share this object\",\n ),\n },\n {\n action: () => {\n setPreviewOpen(true);\n },\n label: \"Preview\",\n disabled:\n !!actualInfo.is_delete_marker ||\n (objectType === \"none\" && !canGetObject),\n icon: ,\n tooltip: canGetObject\n ? \"Preview this File\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n \"preview this object\",\n ),\n },\n {\n action: () => {\n setLegalholdOpen(true);\n },\n label: \"Legal Hold\",\n disabled:\n !locking ||\n !distributedSetup ||\n !!actualInfo.is_delete_marker ||\n !canSetLegalHold ||\n selectedVersion !== \"\",\n icon: ,\n tooltip: canSetLegalHold\n ? locking\n ? \"Change Legal Hold rules for this File\"\n : \"Object Locking must be enabled on this bucket in order to set Legal Hold\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_PUT_OBJECT_LEGAL_HOLD, IAM_SCOPES.S3_PUT_ACTIONS],\n \"change legal hold settings for this object\",\n ),\n },\n {\n action: openRetentionModal,\n label: \"Retention\",\n disabled:\n !distributedSetup ||\n !!actualInfo.is_delete_marker ||\n !canChangeRetention ||\n selectedVersion !== \"\" ||\n !locking,\n icon: ,\n tooltip: canChangeRetention\n ? locking\n ? \"Change Retention rules for this File\"\n : \"Object Locking must be enabled on this bucket in order to set Retention Rules\"\n : permissionTooltipHelper(\n [\n IAM_SCOPES.S3_GET_OBJECT_RETENTION,\n IAM_SCOPES.S3_PUT_OBJECT_RETENTION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ],\n \"change Retention Rules for this object\",\n ),\n },\n {\n action: () => {\n setTagModalOpen(true);\n },\n label: \"Tags\",\n disabled:\n !!actualInfo.is_delete_marker || selectedVersion !== \"\" || !canSetTags,\n icon: ,\n tooltip: canSetTags\n ? \"Change Tags for this File\"\n : permissionTooltipHelper(\n [\n IAM_SCOPES.S3_PUT_OBJECT_TAGGING,\n IAM_SCOPES.S3_GET_OBJECT_TAGGING,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ],\n \"set Tags on this object\",\n ),\n },\n {\n action: () => {\n setInspectModalOpen(true);\n },\n label: \"Inspect\",\n disabled:\n !distributedSetup ||\n !!actualInfo.is_delete_marker ||\n selectedVersion !== \"\" ||\n !canInspect,\n icon: ,\n tooltip: canInspect\n ? \"Inspect this file\"\n : permissionTooltipHelper(\n [IAM_SCOPES.ADMIN_INSPECT_DATA],\n \"inspect this file\",\n ),\n },\n {\n action: () => {\n dispatch(\n setVersionsModeEnabled({\n status: !versionsMode,\n objectName: objectName,\n }),\n );\n },\n label: versionsMode ? \"Hide Object Versions\" : \"Display Object Versions\",\n icon: ,\n disabled:\n !distributedSetup ||\n !(actualInfo.version_id && actualInfo.version_id !== \"null\") ||\n !canChangeVersioning,\n tooltip: canChangeVersioning\n ? actualInfo.version_id && actualInfo.version_id !== \"null\"\n ? \"Display Versions for this file\"\n : \"\"\n : permissionTooltipHelper(\n [\n IAM_SCOPES.S3_GET_BUCKET_VERSIONING,\n IAM_SCOPES.S3_PUT_BUCKET_VERSIONING,\n IAM_SCOPES.S3_GET_OBJECT_VERSION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ],\n \"display all versions of this object\",\n ),\n },\n ];\n\n const calculateLastModifyTime = (lastModified: string) => {\n const currentTime = new Date();\n const modifiedTime = new Date(lastModified);\n\n const difTime = currentTime.getTime() - modifiedTime.getTime();\n\n const formatTime = niceDaysInt(difTime, \"ms\");\n\n return formatTime.trim() !== \"\" ? `${formatTime} ago` : \"Just now\";\n };\n\n return (\n \n {shareFileModalOpen && actualInfo && (\n \n )}\n {retentionModalOpen && actualInfo && (\n \n )}\n {deleteOpen && (\n \n )}\n {legalholdOpen && actualInfo && (\n \n )}\n {previewOpen && actualInfo && (\n {\n setPreviewOpen(false);\n }}\n />\n )}\n {tagModalOpen && actualInfo && (\n \n )}\n {inspectModalOpen && actualInfo && (\n \n )}\n {longFileOpen && actualInfo && (\n \n )}\n\n {loadingObjectInfo ? (\n {loaderForContainer}\n ) : (\n \n \n {displayFileIconName(objectName || \"\", true)}\n {objectName}\n \n }\n items={multiActionButtons}\n />\n \n \n \n }\n iconLocation={\"start\"}\n fullWidth\n variant={\"secondary\"}\n onClick={() => {\n setDeleteOpen(true);\n }}\n disabled={\n selectedVersion === \"\" && actualInfo.is_delete_marker\n }\n sx={{\n width: \"calc(100% - 44px)\",\n margin: \"8px 0\",\n }}\n label={`Delete${selectedVersion !== \"\" ? \" version\" : \"\"}`}\n />\n \n \n \n } label={\"Object Info\"} />\n \n Name:\n
    \n
    {objectName}
    \n
    \n {selectedVersion !== \"\" && (\n \n Version ID:\n
    \n {selectedVersion}\n
    \n )}\n \n Size:\n
    \n {niceBytes(`${actualInfo.size || \"0\"}`)}\n
    \n {actualInfo.version_id &&\n actualInfo.version_id !== \"null\" &&\n selectedVersion === \"\" && (\n \n Versions:\n
    \n {versions.length} version{versions.length !== 1 ? \"s\" : \"\"},{\" \"}\n {niceBytesInt(totalVersionsSize)}\n
    \n )}\n {selectedVersion === \"\" && (\n \n Last Modified:\n
    \n {calculateLastModifyTime(actualInfo.last_modified || \"\")}\n
    \n )}\n \n ETAG:\n
    \n {actualInfo.etag || \"N/A\"}\n
    \n \n Tags:\n
    \n {tagKeys.length === 0\n ? \"N/A\"\n : tagKeys.map((tagKey, index) => {\n return (\n \n {tagKey}:{get(actualInfo, `tags.${tagKey}`, \"\")}\n {index < tagKeys.length - 1 ? \", \" : \"\"}\n \n );\n })}\n
    \n \n \n \n Legal Hold:\n
    \n {actualInfo.legal_hold_status ? \"On\" : \"Off\"}\n
    \n \n
    \n \n \n \n Retention Policy:\n
    \n \n {actualInfo.version_id && actualInfo.version_id !== \"null\" ? (\n \n {actualInfo.retention_mode\n ? actualInfo.retention_mode.toLowerCase()\n : \"None\"}\n \n ) : (\n \n {actualInfo.retention_mode\n ? actualInfo.retention_mode.toLowerCase()\n : \"None\"}\n \n )}\n \n
    \n \n
    \n {!actualInfo.is_delete_marker && (\n \n } />\n \n {actualInfo && metaData ? (\n \n ) : null}\n \n \n )}\n \n )}\n
    \n );\n};\n\nexport default ObjectDetailPanel;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { 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 { encodeURLString } from \"../../../../../../common/utils\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { Box, RecoverIcon } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\nimport { restoreLocalObjectList } from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport { BucketObject } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IRestoreFileVersion {\n classes: any;\n restoreOpen: boolean;\n bucketName: string;\n versionToRestore: BucketObject;\n objectPath: string;\n onCloseAndUpdate: (refresh: boolean) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...modalBasic,\n });\n\nconst RestoreFileVersion = ({\n classes,\n versionToRestore,\n bucketName,\n objectPath,\n restoreOpen,\n onCloseAndUpdate,\n}: IRestoreFileVersion) => {\n const dispatch = useAppDispatch();\n const [restoreLoading, setRestoreLoading] = useState(false);\n\n const restoreVersion = () => {\n setRestoreLoading(true);\n\n api.buckets\n .putObjectRestore(bucketName, {\n prefix: encodeURLString(objectPath),\n version_id: versionToRestore.version_id || \"\",\n })\n .then(() => {\n setRestoreLoading(false);\n onCloseAndUpdate(true);\n dispatch(\n restoreLocalObjectList({\n prefix: objectPath,\n objectInfo: versionToRestore,\n }),\n );\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setRestoreLoading(false);\n });\n };\n\n return (\n }\n onConfirm={restoreVersion}\n confirmButtonProps={{\n variant: \"secondary\",\n disabled: restoreLoading,\n }}\n onClose={() => {\n onCloseAndUpdate(false);\n }}\n confirmationContent={\n \n Are you sure you want to restore
    \n {objectPath}
    with Version ID:\n
    \n {versionToRestore.version_id}?\n
    \n }\n />\n );\n};\n\nexport default withStyles(styles)(RestoreFileVersion);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\n\ninterface ISpecificVersionPillProps {\n type: \"null\" | \"current\" | \"deleted\";\n}\n\nconst SpecificVersionPill = ({ type }: ISpecificVersionPillProps) => {\n let bgColor = \"#000\";\n let message = \"\";\n\n switch (type) {\n case \"null\":\n bgColor = \"#07193E\";\n message = \"NULL VERSION\";\n break;\n case \"deleted\":\n bgColor = \"#868686\";\n message = \"DELETED\";\n break;\n default:\n bgColor = \"#174551\";\n message = \"CURRENT VERSION\";\n }\n\n return (\n \n {message}\n \n );\n};\n\nexport default SpecificVersionPill;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more 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 \n )}\n \n
    \n );\n};\n\nexport default withStyles(styles)(CheckboxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { DateTime } from \"luxon\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { displayFileIconName } from \"../ListObjects/utils\";\nimport {\n DownloadIcon,\n PreviewIcon,\n RecoverIcon,\n ShareIcon,\n IconButton,\n Tooltip,\n Grid,\n} from \"mds\";\nimport { niceBytes } from \"../../../../../../common/utils\";\nimport SpecificVersionPill from \"./SpecificVersionPill\";\nimport CheckboxWrapper from \"../../../../Common/FormComponents/CheckboxWrapper/CheckboxWrapper\";\nimport { BucketObject } from \"api/consoleApi\";\n\ninterface IFileVersionItem {\n fileName: string;\n versionInfo: BucketObject;\n index: number;\n isSelected?: boolean;\n checkable: boolean;\n isChecked: boolean;\n onCheck: (versionID: string) => void;\n onShare: (versionInfo: BucketObject) => void;\n onDownload: (versionInfo: BucketObject) => void;\n onRestore: (versionInfo: BucketObject) => void;\n onPreview: (versionInfo: BucketObject) => void;\n globalClick: (versionInfo: BucketObject) => void;\n key: any;\n style: any;\n}\n\nconst FileVersionStyled = styled.div(({ theme }) => {\n return {\n \"&:before\": {\n content: \"' '\",\n display: \"block\",\n position: \"absolute\",\n width: \"2px\",\n height: \"calc(100% + 2px)\",\n backgroundColor: get(theme, \"borderColor\", \"#F8F8F8\"),\n left: \"24px\",\n },\n \"& .mainFileVersionItem\": {\n borderBottom: `${get(theme, \"borderColor\", \"#F8F8F8\")} 1px solid`,\n padding: \"1rem 0\",\n margin: \"0 0.5rem 0 2.5rem\",\n cursor: \"pointer\",\n \"&.deleted\": {\n color: \"#868686\",\n },\n },\n \"& .intermediateLayer\": {\n margin: \"0 1.5rem 0 1.5rem\",\n \"&:hover, &.selected\": {\n backgroundColor: get(theme, \"boxBackground\", \"#F8F8F8\"),\n \"& > div\": {\n borderBottomColor: get(theme, \"boxBackground\", \"#F8F8F8\"),\n },\n },\n },\n \"& .versionContainer\": {\n fontSize: 16,\n fontWeight: \"bold\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg.min-icon\": {\n width: 18,\n height: 18,\n minWidth: 18,\n minHeight: 18,\n marginRight: 10,\n },\n },\n \"& .buttonContainer\": {\n textAlign: \"right\",\n \"& button\": {\n marginLeft: \"1.5rem\",\n },\n },\n \"& .versionID\": {\n fontSize: \"12px\",\n margin: \"2px 0\",\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\",\n maxWidth: \"95%\",\n overflow: \"hidden\",\n },\n \"& .versionData\": {\n marginRight: \"10px\",\n fontSize: 12,\n color: \"#868686\",\n },\n \"@media (max-width: 600px)\": {\n \"& .buttonContainer\": {\n \"& button\": {\n marginLeft: \"5px\",\n },\n },\n },\n \"@media (max-width: 799px)\": {\n \"&:before\": {\n display: \"none\",\n },\n \"& .mainFileVersionItem\": {\n padding: \"5px 0px\",\n margin: 0,\n },\n \"& .intermediateLayer\": {\n margin: 0,\n \"&:hover, &.selected\": {\n backgroundColor: \"transparent\",\n \"& > div\": {\n borderBottomColor: get(theme, \"boxBackground\", \"#F8F8F8\"),\n },\n },\n },\n \"& .versionContainer\": {\n fontSize: 14,\n \"& svg.min-icon\": {\n display: \"none\",\n },\n },\n \"& .versionData\": {\n textOverflow: \"ellipsis\",\n maxWidth: \"95%\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n },\n \"& .collapsableInfo\": {\n display: \"flex\",\n flexDirection: \"column\",\n },\n \"& .versionItem\": {\n display: \"none\",\n },\n },\n };\n});\n\nconst FileVersionItem = ({\n fileName,\n versionInfo,\n isSelected,\n checkable,\n isChecked,\n onCheck,\n onShare,\n onDownload,\n onRestore,\n onPreview,\n globalClick,\n index,\n key,\n style,\n}: IFileVersionItem) => {\n const disableButtons = versionInfo.is_delete_marker;\n\n const versionItemButtons = [\n {\n icon: ,\n action: onPreview,\n tooltip: \"Preview\",\n },\n {\n icon: ,\n action: onDownload,\n tooltip: \"Download this version\",\n },\n {\n icon: ,\n action: onShare,\n tooltip: \"Share this version\",\n },\n {\n icon: ,\n action: onRestore,\n tooltip: \"Restore this version\",\n },\n ];\n\n let pill: \"deleted\" | \"current\" | \"null\" | null = null;\n\n if (versionInfo.is_delete_marker) {\n pill = \"deleted\";\n } else if (versionInfo.is_latest) {\n pill = \"current\";\n } else if (versionInfo.version_id === \"null\") {\n pill = \"null\";\n }\n\n let lastModified = DateTime.now();\n\n if (versionInfo.last_modified) {\n lastModified = DateTime.fromISO(versionInfo.last_modified);\n }\n\n return (\n \n {\n globalClick(versionInfo);\n }}\n key={key}\n style={style}\n >\n \n \n \n \n \n {checkable && (\n {\n e.stopPropagation();\n e.preventDefault();\n onCheck(versionInfo.version_id || \"\");\n }}\n value={versionInfo.version_id || \"\"}\n disabled={versionInfo.is_delete_marker}\n overrideCheckboxStyles={{\n paddingLeft: 0,\n height: 34,\n width: 25,\n }}\n noTopMargin\n />\n )}\n {displayFileIconName(fileName, true)} v{index.toString()}\n \n {pill && }\n \n \n \n {versionItemButtons.map((button, index) => {\n return (\n \n {\n e.stopPropagation();\n if (!disableButtons) {\n button.action(versionInfo);\n } else {\n e.preventDefault();\n }\n }}\n sx={{\n backgroundColor: \"#F8F8F8\",\n borderRadius: \"100%\",\n width: \"28px\",\n height: \"28px\",\n padding: \"5px\",\n \"& .min-icon\": {\n width: \"14px\",\n height: \"14px\",\n },\n }}\n >\n {button.icon}\n \n \n );\n })}\n \n \n \n \n {versionInfo.version_id !== \"null\" ? versionInfo.version_id : \"-\"}\n \n \n \n Last modified:{\" \"}\n {lastModified.toFormat(\"ccc, LLL dd yyyy HH:mm:ss (ZZZZ)\")}\n \n \n Size: {niceBytes(`${versionInfo.size || \"0\"}`)}\n \n \n \n \n \n \n );\n};\n\nexport default FileVersionItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\n\nimport { decodeURLString } from \"../../../../../../common/utils\";\nimport { ConfirmDeleteIcon, Switch, Grid, InputBox } from \"mds\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IDeleteNonCurrentProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedObject: string;\n selectedBucket: string;\n}\n\nconst DeleteNonCurrentVersions = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedObject,\n}: IDeleteNonCurrentProps) => {\n const dispatch = useAppDispatch();\n const [deleteLoading, setDeleteLoading] = useState(false);\n const [typeConfirm, setTypeConfirm] = useState(\"\");\n const [bypassGovernance, setBypassGovernance] = useState(false);\n\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig,\n );\n\n const canBypass =\n hasPermission(\n [selectedBucket],\n [IAM_SCOPES.S3_BYPASS_GOVERNANCE_RETENTION],\n ) && retentionConfig?.mode === \"governance\";\n\n useEffect(() => {\n if (deleteLoading) {\n api.buckets\n .deleteObject(selectedBucket, {\n path: selectedObject,\n non_current_versions: true,\n bypass: bypassGovernance,\n })\n .then(() => {\n closeDeleteModalAndRefresh(true);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setDeleteLoading(false);\n });\n }\n }, [\n deleteLoading,\n closeDeleteModalAndRefresh,\n dispatch,\n selectedObject,\n selectedBucket,\n bypassGovernance,\n ]);\n\n if (!selectedObject) {\n return null;\n }\n const onConfirmDelete = () => {\n setDeleteLoading(true);\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={() => closeDeleteModalAndRefresh(false)}\n confirmButtonProps={{\n disabled: typeConfirm !== \"YES, PROCEED\" || deleteLoading,\n }}\n confirmationContent={\n \n Are you sure you want to delete all the non-current versions for:{\" \"}\n {decodeURLString(selectedObject)}?
    \n {canBypass && (\n \n \n {\n setBypassGovernance(!bypassGovernance);\n }}\n description=\"\"\n />\n \n \n )}\n
    \n To continue please type YES, PROCEED in the box.\n
    \n
    \n \n ) => {\n setTypeConfirm(event.target.value);\n }}\n label=\"\"\n value={typeConfirm}\n />\n \n
    \n }\n />\n );\n};\n\nexport default DeleteNonCurrentVersions;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon, Switch } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IDeleteSelectedVersionsProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedVersions: string[];\n selectedObject: string;\n selectedBucket: string;\n}\n\nconst DeleteObject = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedVersions,\n selectedObject,\n}: IDeleteSelectedVersionsProps) => {\n const dispatch = useAppDispatch();\n const [deleteLoading, setDeleteLoading] = useState(false);\n const [bypassGovernance, setBypassGovernance] = useState(false);\n\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig,\n );\n\n const canBypass =\n hasPermission(\n [selectedBucket],\n [IAM_SCOPES.S3_BYPASS_GOVERNANCE_RETENTION],\n ) && retentionConfig?.mode === \"governance\";\n\n const onClose = () => closeDeleteModalAndRefresh(false);\n const onConfirmDelete = () => {\n setDeleteLoading(true);\n };\n\n useEffect(() => {\n if (deleteLoading) {\n const selectedObjectsRequest = selectedVersions.map((versionID) => {\n return {\n path: selectedObject,\n versionID: versionID,\n recursive: false,\n };\n });\n\n if (selectedObjectsRequest.length > 0) {\n api.buckets\n .deleteMultipleObjects(selectedBucket, selectedObjectsRequest, {\n all_versions: false,\n bypass: bypassGovernance,\n })\n .then(() => {\n setDeleteLoading(false);\n closeDeleteModalAndRefresh(true);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setDeleteLoading(false);\n });\n }\n }\n }, [\n deleteLoading,\n closeDeleteModalAndRefresh,\n selectedBucket,\n selectedObject,\n selectedVersions,\n bypassGovernance,\n dispatch,\n ]);\n\n if (!selectedVersions) {\n return null;\n }\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the selected {selectedVersions.length}{\" \"}\n versions for {selectedObject}?\n {canBypass && (\n \n \n {\n setBypassGovernance(!bypassGovernance);\n }}\n description=\"\"\n />\n \n \n )}\n \n }\n />\n );\n};\n\nexport default DeleteObject;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { withStyles } from \"@mui/styles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\n\nimport Grid from \"@mui/material/Grid\";\nimport ShareFile from \"./ShareFile\";\nimport {\n actionsTray,\n containerForHeader,\n objectBrowserCommon,\n objectBrowserExtras,\n spacingUtils,\n tableStyles,\n textStyleUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nimport { decodeURLString, niceBytesInt } from \"../../../../../../common/utils\";\nimport RestoreFileVersion from \"./RestoreFileVersion\";\n\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport {\n Button,\n DeleteIcon,\n DeleteNonCurrentIcon,\n Select,\n SelectMultipleIcon,\n VersionsIcon,\n ScreenTitle,\n ProgressBar,\n} from \"mds\";\nimport FileVersionItem from \"./FileVersionItem\";\nimport PreviewFileModal from \"../Preview/PreviewFileModal\";\nimport DeleteNonCurrent from \"../ListObjects/DeleteNonCurrent\";\nimport BrowserBreadcrumbs from \"../../../../ObjectBrowser/BrowserBreadcrumbs\";\nimport DeleteSelectedVersions from \"./DeleteSelectedVersions\";\nimport {\n selDistSet,\n setErrorSnackMessage,\n} from \"../../../../../../systemSlice\";\nimport {\n setLoadingObjectInfo,\n setLoadingVersions,\n setSelectedVersion,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport { List, ListRowProps } from \"react-virtualized\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\nimport { downloadObject } from \"../../../../ObjectBrowser/utils\";\nimport { BucketObject } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n versionsContainer: {\n padding: 10,\n \"@media (max-width: 799px)\": {\n minHeight: 800,\n },\n },\n noBottomBorder: {\n borderBottom: 0,\n },\n versionsVirtualPanel: {\n flexGrow: 1,\n height: \"calc(100% - 120px)\",\n overflow: \"auto\",\n \"@media (max-width: 799px)\": {\n height: 600,\n },\n },\n screenTitleContainer: {\n position: \"relative\",\n \"@media (max-width: 799px)\": {\n \"&::before\": {\n display: \"none\",\n },\n },\n },\n sortByLabel: {\n color: \"#838383\",\n fontWeight: \"bold\",\n whiteSpace: \"nowrap\",\n marginRight: 12,\n fontSize: 14,\n \"@media (max-width: 600px)\": {\n display: \"none\",\n },\n },\n ...actionsTray,\n ...tableStyles,\n ...spacingUtils,\n ...textStyleUtils,\n ...objectBrowserCommon,\n ...objectBrowserExtras,\n ...containerForHeader,\n });\n\ninterface IVersionsNavigatorProps {\n classes: any;\n internalPaths: string;\n bucketName: string;\n}\n\nconst emptyFile: BucketObject = {\n is_latest: true,\n last_modified: \"\",\n legal_hold_status: \"\",\n name: \"\",\n retention_mode: \"\",\n retention_until_date: \"\",\n size: 0,\n tags: {},\n version_id: undefined,\n};\n\nconst VersionsNavigator = ({\n classes,\n internalPaths,\n bucketName,\n}: IVersionsNavigatorProps) => {\n const dispatch = useAppDispatch();\n\n const searchVersions = useSelector(\n (state: AppState) => state.objectBrowser.searchVersions,\n );\n const loadingVersions = useSelector(\n (state: AppState) => state.objectBrowser.loadingVersions,\n );\n const selectedVersion = useSelector(\n (state: AppState) => state.objectBrowser.selectedVersion,\n );\n\n const distributedSetup = useSelector(selDistSet);\n const [shareFileModalOpen, setShareFileModalOpen] = useState(false);\n const [actualInfo, setActualInfo] = useState(null);\n const [objectToShare, setObjectToShare] = useState(null);\n const [versions, setVersions] = useState([]);\n const [restoreVersionOpen, setRestoreVersionOpen] = useState(false);\n const [restoreVersion, setRestoreVersion] = useState(\n null,\n );\n const [sortValue, setSortValue] = useState(\"date\");\n const [previewOpen, setPreviewOpen] = useState(false);\n const [deleteNonCurrentOpen, setDeleteNonCurrentOpen] =\n useState(false);\n const [selectEnabled, setSelectEnabled] = useState(false);\n const [selectedItems, setSelectedItems] = useState([]);\n const [delSelectedVOpen, setDelSelectedVOpen] = useState(false);\n\n // calculate object name to display\n let objectNameArray: string[] = [];\n if (actualInfo && actualInfo.name) {\n objectNameArray = actualInfo.name.split(\"/\");\n }\n\n useEffect(() => {\n if (!loadingVersions && !actualInfo) {\n dispatch(setLoadingVersions(true));\n }\n }, [loadingVersions, actualInfo, dispatch]);\n\n useEffect(() => {\n if (loadingVersions && internalPaths !== \"\") {\n api.buckets\n .listObjects(bucketName, {\n prefix: internalPaths,\n with_versions: distributedSetup,\n })\n .then((res) => {\n const result = get(res.data, \"objects\", []);\n\n const decodedInternalPaths = decodeURLString(internalPaths);\n\n // Filter the results prefixes as API can return more files than expected.\n const filteredPrefixes = result.filter(\n (item: BucketObject) => item.name === decodedInternalPaths,\n );\n\n if (distributedSetup) {\n setActualInfo(\n filteredPrefixes.find((el: BucketObject) => el.is_latest) ||\n emptyFile,\n );\n setVersions(filteredPrefixes);\n } else {\n setActualInfo(filteredPrefixes[0]);\n setVersions([]);\n }\n\n dispatch(setLoadingVersions(false));\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n dispatch(setLoadingVersions(false));\n });\n }\n }, [loadingVersions, bucketName, internalPaths, dispatch, distributedSetup]);\n\n const shareObject = () => {\n setShareFileModalOpen(true);\n };\n\n const closeShareModal = () => {\n setObjectToShare(null);\n setShareFileModalOpen(false);\n setPreviewOpen(false);\n };\n\n const onShareItem = (item: BucketObject) => {\n setObjectToShare(item);\n shareObject();\n };\n\n const onPreviewItem = (item: BucketObject) => {\n setObjectToShare(item);\n setPreviewOpen(true);\n };\n\n const onRestoreItem = (item: BucketObject) => {\n setRestoreVersion(item);\n setRestoreVersionOpen(true);\n };\n\n const onDownloadItem = (item: BucketObject) => {\n downloadObject(dispatch, bucketName, internalPaths, item);\n };\n\n const onGlobalClick = (item: BucketObject) => {\n dispatch(setSelectedVersion(item.version_id || \"\"));\n };\n\n const filteredRecords = versions.filter((version) => {\n if (version.version_id) {\n return version.version_id.includes(searchVersions);\n }\n return false;\n });\n\n const closeRestoreModal = (reloadObjectData: boolean) => {\n setRestoreVersionOpen(false);\n setRestoreVersion(null);\n\n if (reloadObjectData) {\n dispatch(setLoadingVersions(true));\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeDeleteNonCurrent = (reloadAfterDelete: boolean) => {\n setDeleteNonCurrentOpen(false);\n\n if (reloadAfterDelete) {\n dispatch(setLoadingVersions(true));\n dispatch(setSelectedVersion(\"\"));\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeSelectedVersions = (reloadOnComplete: boolean) => {\n setDelSelectedVOpen(false);\n\n if (reloadOnComplete) {\n dispatch(setLoadingVersions(true));\n dispatch(setSelectedVersion(\"\"));\n dispatch(setLoadingObjectInfo(true));\n setSelectedItems([]);\n }\n };\n\n const totalSpace = versions.reduce((acc: number, currValue: BucketObject) => {\n if (currValue.size) {\n return acc + currValue.size;\n }\n return acc;\n }, 0);\n\n filteredRecords.sort((a, b) => {\n switch (sortValue) {\n case \"size\":\n if (a.size && b.size) {\n if (a.size < b.size) {\n return -1;\n }\n if (a.size > b.size) {\n return 1;\n }\n return 0;\n }\n return 0;\n default:\n const dateA = new Date(a.last_modified || \"\").getTime();\n const dateB = new Date(b.last_modified || \"\").getTime();\n\n if (dateA < dateB) {\n return 1;\n }\n if (dateA > dateB) {\n return -1;\n }\n return 0;\n }\n });\n\n const onCheckVersion = (selectedVersion: string) => {\n if (selectedItems.includes(selectedVersion)) {\n const filteredItems = selectedItems.filter(\n (element) => element !== selectedVersion,\n );\n\n setSelectedItems(filteredItems);\n\n return;\n }\n\n const cloneState = [...selectedItems];\n cloneState.push(selectedVersion);\n\n setSelectedItems(cloneState);\n };\n\n const rowRenderer = ({\n key, // Unique key within array of rows\n index, // Index of row within collection\n isScrolling, // The List is currently being scrolled\n isVisible, // This row is visible within the List (eg it is not an overscanned row)\n style, // Style object to be applied to row (to position it)\n }: ListRowProps) => {\n const versOrd = versions.length - index;\n return (\n \n );\n };\n\n return (\n \n {shareFileModalOpen && actualInfo && (\n \n )}\n {restoreVersionOpen && actualInfo && restoreVersion && (\n \n )}\n {previewOpen && actualInfo && (\n {\n setPreviewOpen(false);\n }}\n />\n )}\n {deleteNonCurrentOpen && (\n \n )}\n {delSelectedVOpen && (\n \n )}\n \n {!actualInfo && (\n \n \n \n )}\n\n {actualInfo && (\n \n \n \n \n \n \n \n \n }\n title={`${\n objectNameArray.length > 0\n ? objectNameArray[objectNameArray.length - 1]\n : actualInfo.name\n } Versions`}\n subTitle={\n \n \n \n {versions.length} Version\n {versions.length === 1 ? \"\" : \"s\"}   \n \n \n \n {niceBytesInt(totalSpace)}\n \n \n }\n actions={\n \n \n {\n setSelectEnabled(!selectEnabled);\n }}\n icon={}\n variant={selectEnabled ? \"callAction\" : \"regular\"}\n style={{ marginRight: 8 }}\n />\n \n {selectEnabled && (\n \n {\n setDelSelectedVOpen(true);\n }}\n icon={}\n variant={\"secondary\"}\n style={{ marginRight: 8 }}\n disabled={selectedItems.length === 0}\n />\n \n )}\n \n {\n setDeleteNonCurrentOpen(true);\n }}\n icon={}\n variant={\"secondary\"}\n style={{ marginRight: 15 }}\n disabled={versions.length <= 1}\n />\n \n {\n setSortValue(newValue);\n }}\n noLabelMinWidth\n />\n \n }\n bottomBorder={false}\n />\n \n \n {actualInfo.version_id && actualInfo.version_id !== \"null\" && (\n // @ts-ignore\n \n )}\n \n \n )}\n \n \n );\n};\n\nexport default withStyles(styles)(VersionsNavigator);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { DateTime } from \"luxon\";\nimport { BucketObjectItem } from \"./types\";\nimport { niceBytes } from \"../../../../../../common/utils\";\nimport { displayFileIconName } from \"./utils\";\n\n// Functions\n\nexport const displayParsedDate = (object: BucketObjectItem) => {\n if (object.name.endsWith(\"/\")) {\n return \"\";\n }\n\n const currTime = DateTime.now();\n const objectTime = DateTime.fromISO(object.last_modified);\n\n const isToday =\n currTime.hasSame(objectTime, \"day\") &&\n currTime.hasSame(objectTime, \"month\") &&\n currTime.hasSame(objectTime, \"year\");\n\n if (isToday) {\n return `Today, ${objectTime.toFormat(\"HH:mm\")}`;\n }\n\n return objectTime.toFormat(\"ccc, LLL dd yyyy HH:mm (ZZZZ)\");\n};\n\nexport const displayNiceBytes = (object: BucketObjectItem) => {\n if (object.name.endsWith(\"/\") || !object.size) {\n return \"-\";\n }\n return niceBytes(String(object.size));\n};\n\nexport const displayDeleteFlag = (state: boolean) => {\n return state ? \"Yes\" : \"No\";\n};\n\n// Table Props\n\nexport const listModeColumns = [\n {\n label: \"Name\",\n elementKey: \"name\",\n renderFunction: displayFileIconName,\n enableSort: true,\n },\n {\n label: \"Last Modified\",\n elementKey: \"last_modified\",\n renderFunction: displayParsedDate,\n renderFullObject: true,\n enableSort: true,\n },\n {\n label: \"Size\",\n elementKey: \"size\",\n renderFunction: displayNiceBytes,\n renderFullObject: true,\n width: 100,\n enableSort: true,\n },\n];\n\nexport const rewindModeColumns = [\n {\n label: \"Name\",\n elementKey: \"name\",\n renderFunction: displayFileIconName,\n enableSort: true,\n },\n {\n label: \"Object Date\",\n elementKey: \"last_modified\",\n renderFunction: displayParsedDate,\n renderFullObject: true,\n enableSort: true,\n },\n {\n label: \"Size\",\n elementKey: \"size\",\n renderFunction: displayNiceBytes,\n renderFullObject: true,\n width: 100,\n enableSort: true,\n },\n {\n label: \"Deleted\",\n elementKey: \"delete_flag\",\n renderFunction: displayDeleteFlag,\n width: 60,\n },\n];\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { listModeColumns, rewindModeColumns } from \"./ListObjectsHelpers\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { selFeatures } from \"../../../../consoleSlice\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport {\n setLoadingVersions,\n setObjectDetailsView,\n setReloadObjectsList,\n setSelectedObjects,\n setSelectedObjectView,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport get from \"lodash/get\";\nimport { sortListObjects } from \"../utils\";\nimport { BucketObjectItem } from \"./types\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../../../common/SecureComponent/permissions\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { downloadObject } from \"../../../../ObjectBrowser/utils\";\nimport { DataTable, ItemActions } from \"mds\";\nimport { BucketObject } from \"api/consoleApi\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n browsePaper: {\n border: 0,\n \"@media (max-width: 800px)\": {\n width: 800,\n },\n },\n parentWrapper: {\n position: \"relative\",\n height: \"calc(100% - 60px)\",\n \"@media (max-width: 800px)\": {\n overflowX: \"auto\",\n },\n \"@media (max-width: 1060px)\": {\n height: \"calc(100% - 115px)\",\n },\n },\n \"@global\": {\n \".rowLine:hover .iconFileElm\": {\n backgroundImage: \"url(/images/ob_file_filled.svg)\",\n },\n \".rowLine:hover .iconFolderElm\": {\n backgroundImage: \"url(/images/ob_folder_filled.svg)\",\n },\n },\n }),\n);\n\nconst ListObjectsTable = () => {\n const classes = useStyles();\n const dispatch = useAppDispatch();\n const params = useParams();\n const navigate = useNavigate();\n\n const [sortDirection, setSortDirection] = useState<\n \"ASC\" | \"DESC\" | undefined\n >(\"ASC\");\n const [currentSortField, setCurrentSortField] = useState(\"name\");\n\n const bucketName = params.bucketName || \"\";\n\n const detailsOpen = useSelector(\n (state: AppState) => state.objectBrowser.objectDetailsOpen,\n );\n\n const requestInProgress = useSelector(\n (state: AppState) => state.objectBrowser.requestInProgress,\n );\n\n const features = useSelector(selFeatures);\n const obOnly = !!features?.includes(\"object-browser-only\");\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled,\n );\n const records = useSelector((state: AppState) => state.objectBrowser.records);\n const searchObjects = useSelector(\n (state: AppState) => state.objectBrowser.searchObjects,\n );\n const selectedObjects = useSelector(\n (state: AppState) => state.objectBrowser.selectedObjects,\n );\n const connectionError = useSelector(\n (state: AppState) => state.objectBrowser.connectionError,\n );\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode,\n );\n\n const displayListObjects = hasPermission(bucketName, [\n IAM_SCOPES.S3_LIST_BUCKET,\n IAM_SCOPES.S3_ALL_LIST_BUCKET,\n ]);\n\n const filteredRecords = records.filter((b: BucketObjectItem) => {\n if (searchObjects === \"\") {\n return true;\n } else {\n const objectName = b.name.toLowerCase();\n if (objectName.indexOf(searchObjects.toLowerCase()) >= 0) {\n return true;\n } else {\n return false;\n }\n }\n });\n\n const plSelect = filteredRecords;\n const sortASC = plSelect.sort(sortListObjects(currentSortField));\n\n let payload: BucketObjectItem[] = [];\n\n if (sortDirection === \"ASC\") {\n payload = sortASC;\n } else {\n payload = sortASC.reverse();\n }\n\n const openPath = (object: BucketObject) => {\n const idElement = object.name || \"\";\n const newPath = `/browser/${bucketName}${\n idElement ? `/${encodeURLString(idElement)}` : ``\n }`;\n\n // for anonymous start download\n if (anonymousMode && !object.name?.endsWith(\"/\")) {\n downloadObject(\n dispatch,\n bucketName,\n `${encodeURLString(idElement)}`,\n object,\n );\n return;\n }\n dispatch(setSelectedObjects([]));\n\n navigate(newPath);\n\n if (!anonymousMode) {\n dispatch(setObjectDetailsView(true));\n dispatch(setLoadingVersions(true));\n }\n dispatch(\n setSelectedObjectView(\n `${idElement ? `${encodeURLString(idElement)}` : ``}`,\n ),\n );\n };\n const tableActions: ItemActions[] = [\n {\n type: \"view\",\n tooltip: \"View\",\n onClick: openPath,\n sendOnlyId: false,\n },\n ];\n\n const sortChange = (sortData: any) => {\n const newSortDirection = get(sortData, \"sortDirection\", \"DESC\");\n setCurrentSortField(sortData.sortBy);\n setSortDirection(newSortDirection);\n dispatch(setReloadObjectsList(true));\n };\n\n const selectAllItems = () => {\n dispatch(setSelectedObjectView(null));\n\n if (selectedObjects.length === payload.length) {\n dispatch(setSelectedObjects([]));\n return;\n }\n\n const elements = payload.map((item) => item.name);\n dispatch(setSelectedObjects(elements));\n };\n\n const selectListObjects = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selectedObjects]; // We clone the selectedBuckets array\n\n if (checked) {\n // If the user has checked this field we need to push this to selectedBucketsList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n dispatch(setSelectedObjects(elements));\n dispatch(setSelectedObjectView(null));\n\n return elements;\n };\n\n let errorMessage =\n !displayListObjects && !anonymousMode\n ? permissionTooltipHelper(\n [IAM_SCOPES.S3_LIST_BUCKET, IAM_SCOPES.S3_ALL_LIST_BUCKET],\n \"view Objects in this bucket\",\n )\n : `This location is empty${\n !rewindEnabled ? \", please try uploading a new file\" : \"\"\n }`;\n\n if (connectionError) {\n errorMessage =\n \"Objects List unavailable. Please review your WebSockets configuration and try again\";\n }\n\n let customPaperHeight = \"calc(100vh - 290px)\";\n\n if (obOnly) {\n customPaperHeight = \"calc(100vh - 315px)\";\n }\n\n return (\n {\n if (payload[index]?.delete_flag) {\n return \"deleted\";\n }\n\n return \"\";\n }}\n parentClassName={classes.parentWrapper}\n sx={{\n minHeight: detailsOpen ? \"100%\" : \"initial\",\n }}\n noBackground\n />\n );\n};\nexport default ListObjectsTable;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { setSearchObjects } from \"./objectBrowserSlice\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { useSelector } from \"react-redux\";\n\nconst FilterObjectsSB = () => {\n const dispatch = useAppDispatch();\n\n const searchObjects = useSelector(\n (state: AppState) => state.objectBrowser.searchObjects,\n );\n return (\n {\n dispatch(setSearchObjects(value));\n }}\n value={searchObjects}\n />\n );\n};\nexport default FilterObjectsSB;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, {\n Fragment,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport get from \"lodash/get\";\nimport {\n AccessRuleIcon,\n ActionsList,\n Box,\n BucketsIcon,\n Button,\n Checkbox,\n DeleteIcon,\n DownloadIcon,\n Grid,\n HistoryIcon,\n PageLayout,\n PreviewIcon,\n RefreshIcon,\n ScreenTitle,\n ShareIcon,\n} from \"mds\";\nimport { api } from \"api\";\nimport { Badge } from \"@mui/material\"; // TODO: Remove this\nimport { errorToHandler } from \"api/errors\";\nimport { BucketQuota } from \"api/consoleApi\";\nimport { useSelector } from \"react-redux\";\nimport { useLocation, useNavigate, useParams } from \"react-router-dom\";\nimport { useDropzone } from \"react-dropzone\";\nimport { DateTime } from \"luxon\";\nimport {\n decodeURLString,\n encodeURLString,\n niceBytesInt,\n} from \"../../../../../../common/utils\";\nimport BrowserBreadcrumbs from \"../../../../ObjectBrowser/BrowserBreadcrumbs\";\nimport { AllowedPreviews, previewObjectType } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../../../common/SecureComponent\";\nimport {\n setErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../../../systemSlice\";\nimport { isVersionedMode } from \"../../../../../../utils/validationFunctions\";\nimport {\n extractFileExtn,\n getPolicyAllowedFileExtensions,\n getSessionGrantsWildCard,\n} from \"../../UploadPermissionUtils\";\nimport {\n makeid,\n removeTrace,\n storeCallForObjectWithID,\n storeFormDataWithID,\n} from \"../../../../ObjectBrowser/transferManager\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n openList,\n resetMessages,\n resetRewind,\n setAnonymousAccessOpen,\n setDownloadRenameModal,\n setLoadingVersions,\n setNewObject,\n setObjectDetailsView,\n setPreviewOpen,\n setReloadObjectsList,\n setRetentionConfig,\n setSelectedObjects,\n setSelectedObjectView,\n setSelectedPreview,\n setShareFileModalOpen,\n setShowDeletedObjects,\n setVersionsModeEnabled,\n updateProgress,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport {\n selBucketDetailsInfo,\n selBucketDetailsLoading,\n setBucketDetailsLoad,\n setBucketInfo,\n} from \"../../../BucketDetails/bucketDetailsSlice\";\nimport {\n downloadSelected,\n openAnonymousAccess,\n openPreview,\n openShare,\n} from \"../../../../ObjectBrowser/objectBrowserThunks\";\nimport withSuspense from \"../../../../Common/Components/withSuspense\";\nimport UploadFilesButton from \"../../UploadFilesButton\";\nimport DetailsListPanel from \"./DetailsListPanel\";\nimport ObjectDetailPanel from \"./ObjectDetailPanel\";\nimport VersionsNavigator from \"../ObjectDetails/VersionsNavigator\";\nimport RenameLongFileName from \"../../../../ObjectBrowser/RenameLongFilename\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\nimport ListObjectsTable from \"./ListObjectsTable\";\nimport FilterObjectsSB from \"../../../../ObjectBrowser/FilterObjectsSB\";\nimport AddAccessRule from \"../../../BucketDetails/AddAccessRule\";\n\nconst DeleteMultipleObjects = withSuspense(\n React.lazy(() => import(\"./DeleteMultipleObjects\")),\n);\nconst ShareFile = withSuspense(\n React.lazy(() => import(\"../ObjectDetails/ShareFile\")),\n);\nconst RewindEnable = withSuspense(React.lazy(() => import(\"./RewindEnable\")));\nconst PreviewFileModal = withSuspense(\n React.lazy(() => import(\"../Preview/PreviewFileModal\")),\n);\n\nconst baseDnDStyle = {\n borderWidth: 2,\n borderRadius: 2,\n borderColor: \"transparent\",\n outline: \"none\",\n};\n\nconst activeDnDStyle = {\n borderStyle: \"dashed\",\n backgroundColor: \"transparent\",\n borderColor: \"#2196f3\",\n};\n\nconst acceptDnDStyle = {\n borderStyle: \"dashed\",\n backgroundColor: \"transparent\",\n borderColor: \"#00e676\",\n};\n\nconst ListObjects = () => {\n const dispatch = useAppDispatch();\n const params = useParams();\n const navigate = useNavigate();\n const location = useLocation();\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled,\n );\n const bucketToRewind = useSelector(\n (state: AppState) => state.objectBrowser.rewind.bucketToRewind,\n );\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode,\n );\n const showDeleted = useSelector(\n (state: AppState) => state.objectBrowser.showDeleted,\n );\n const detailsOpen = useSelector(\n (state: AppState) => state.objectBrowser.objectDetailsOpen,\n );\n const selectedInternalPaths = useSelector(\n (state: AppState) => state.objectBrowser.selectedInternalPaths,\n );\n const requestInProgress = useSelector(\n (state: AppState) => state.objectBrowser.requestInProgress,\n );\n const simplePath = useSelector(\n (state: AppState) => state.objectBrowser.simplePath,\n );\n const versioningConfig = useSelector(\n (state: AppState) => state.objectBrowser.versionInfo,\n );\n const lockingEnabled = useSelector(\n (state: AppState) => state.objectBrowser.lockingEnabled,\n );\n const downloadRenameModal = useSelector(\n (state: AppState) => state.objectBrowser.downloadRenameModal,\n );\n const selectedPreview = useSelector(\n (state: AppState) => state.objectBrowser.selectedPreview,\n );\n const shareFileModalOpen = useSelector(\n (state: AppState) => state.objectBrowser.shareFileModalOpen,\n );\n const previewOpen = useSelector(\n (state: AppState) => state.objectBrowser.previewOpen,\n );\n const selectedBucket = useSelector(\n (state: AppState) => state.objectBrowser.selectedBucket,\n );\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode,\n );\n const anonymousAccessOpen = useSelector(\n (state: AppState) => state.objectBrowser.anonymousAccessOpen,\n );\n\n const loadingBucket = useSelector(selBucketDetailsLoading);\n const bucketInfo = useSelector(selBucketDetailsInfo);\n\n const [deleteMultipleOpen, setDeleteMultipleOpen] = useState(false);\n const [rewindSelect, setRewindSelect] = useState(false);\n const [iniLoad, setIniLoad] = useState(false);\n const [canShareFile, setCanShareFile] = useState(false);\n const [canPreviewFile, setCanPreviewFile] = useState(false);\n const [quota, setQuota] = useState(null);\n const [metaData, setMetaData] = useState(null);\n const [isMetaDataLoaded, setIsMetaDataLoaded] = useState(false);\n\n const isVersioningApplied = isVersionedMode(versioningConfig.status);\n\n const bucketName = params.bucketName || \"\";\n const pathSegment = location.pathname.split(`/browser/${bucketName}/`);\n const internalPaths = pathSegment.length === 2 ? pathSegment[1] : \"\";\n\n const pageTitle = decodeURLString(internalPaths);\n const currentPath = pageTitle.split(\"/\").filter((i: string) => i !== \"\");\n\n let uploadPath = [bucketName];\n if (currentPath.length > 0) {\n uploadPath = uploadPath.concat(currentPath);\n }\n\n const fileUpload = useRef(null);\n const folderUpload = useRef(null);\n\n const sessionGrants = useSelector((state: AppState) =>\n state.console.session ? state.console.session.permissions || {} : {},\n );\n\n const putObjectPermScopes = [\n IAM_SCOPES.S3_PUT_OBJECT,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ];\n\n const pathAsResourceInPolicy = uploadPath.join(\"/\");\n const allowedFileExtensions = getPolicyAllowedFileExtensions(\n sessionGrants,\n pathAsResourceInPolicy,\n putObjectPermScopes,\n );\n\n const sessionGrantWildCards = getSessionGrantsWildCard(\n sessionGrants,\n pathAsResourceInPolicy,\n putObjectPermScopes,\n );\n\n const canDownload = hasPermission(\n [pathAsResourceInPolicy, ...sessionGrantWildCards],\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n );\n const canDelete = hasPermission(\n [pathAsResourceInPolicy, ...sessionGrantWildCards],\n [IAM_SCOPES.S3_DELETE_OBJECT],\n );\n const canUpload =\n hasPermission(\n [pathAsResourceInPolicy, ...sessionGrantWildCards],\n putObjectPermScopes,\n ) || anonymousMode;\n\n const canSetAnonymousAccess = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_POLICY,\n IAM_SCOPES.S3_PUT_BUCKET_POLICY,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n\n const selectedObjects = useSelector(\n (state: AppState) => state.objectBrowser.selectedObjects,\n );\n\n const fetchMetadata = useCallback(() => {\n const objectName = selectedObjects[0];\n\n if (!isMetaDataLoaded) {\n const encodedPath = encodeURLString(objectName);\n api.buckets\n .getObjectMetadata(bucketName, {\n prefix: encodedPath,\n })\n .then((res) => {\n let metadata = get(res.data, \"objectMetadata\", {});\n setIsMetaDataLoaded(true);\n setMetaData(metadata);\n })\n .catch((err) => {\n console.error(\n \"Error Getting Metadata Status: \",\n err,\n err?.detailedError,\n );\n setIsMetaDataLoaded(true);\n });\n }\n }, [bucketName, selectedObjects, isMetaDataLoaded]);\n\n useEffect(() => {\n if (bucketName && selectedObjects.length === 1) {\n fetchMetadata();\n }\n }, [bucketName, selectedObjects, fetchMetadata]);\n\n useEffect(() => {\n if (rewindEnabled) {\n if (bucketToRewind !== bucketName) {\n dispatch(resetRewind());\n return;\n }\n }\n }, [rewindEnabled, bucketToRewind, bucketName, dispatch]);\n\n useEffect(() => {\n if (folderUpload.current !== null) {\n folderUpload.current.setAttribute(\"directory\", \"\");\n folderUpload.current.setAttribute(\"webkitdirectory\", \"\");\n }\n }, [folderUpload]);\n\n useEffect(() => {\n if (selectedObjects.length === 1) {\n const objectName = selectedObjects[0];\n let objectType: AllowedPreviews = previewObjectType(metaData, objectName);\n\n if (objectType !== \"none\" && canDownload) {\n setCanPreviewFile(true);\n } else {\n setCanPreviewFile(false);\n }\n\n if (objectName.endsWith(\"/\") || canDownload) {\n setCanShareFile(true);\n } else {\n setCanShareFile(false);\n }\n } else {\n setCanShareFile(false);\n setCanPreviewFile(false);\n }\n }, [selectedObjects, canDownload, metaData]);\n\n useEffect(() => {\n if (!quota && !anonymousMode) {\n api.buckets\n .getBucketQuota(bucketName)\n .then((res) => {\n let quotaVals = null;\n\n if (res.data.quota) {\n quotaVals = res.data;\n }\n\n setQuota(quotaVals);\n })\n .catch((err) => {\n console.error(\n \"Error Getting Quota Status: \",\n err.error.detailedMessage,\n );\n setQuota(null);\n });\n }\n }, [quota, bucketName, anonymousMode]);\n\n useEffect(() => {\n if (selectedObjects.length > 0) {\n dispatch(setObjectDetailsView(true));\n return;\n }\n\n if (\n selectedObjects.length === 0 &&\n selectedInternalPaths === null &&\n !requestInProgress\n ) {\n dispatch(setObjectDetailsView(false));\n }\n }, [selectedObjects, selectedInternalPaths, dispatch, requestInProgress]);\n\n useEffect(() => {\n if (!iniLoad) {\n dispatch(setBucketDetailsLoad(true));\n setIniLoad(true);\n }\n }, [iniLoad, dispatch, setIniLoad]);\n\n // bucket info\n useEffect(() => {\n if ((requestInProgress || loadingBucket) && !anonymousMode) {\n api.buckets\n .bucketInfo(bucketName)\n .then((res) => {\n dispatch(setBucketDetailsLoad(false));\n dispatch(setBucketInfo(res.data));\n })\n .catch((err) => {\n dispatch(setBucketDetailsLoad(false));\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n });\n }\n }, [bucketName, loadingBucket, dispatch, anonymousMode, requestInProgress]);\n\n // Load retention Config\n\n useEffect(() => {\n if (selectedBucket !== \"\") {\n api.buckets\n .getBucketRetentionConfig(selectedBucket)\n .then((res) => {\n dispatch(setRetentionConfig(res.data));\n })\n .catch(() => {\n dispatch(setRetentionConfig(null));\n });\n }\n }, [selectedBucket, dispatch]);\n\n const closeDeleteMultipleModalAndRefresh = (refresh: boolean) => {\n setDeleteMultipleOpen(false);\n\n if (refresh) {\n dispatch(setSnackBarMessage(`Objects deleted successfully.`));\n dispatch(setSelectedObjects([]));\n dispatch(setReloadObjectsList(true));\n }\n };\n\n const handleUploadButton = (e: any) => {\n if (\n e === null ||\n e === undefined ||\n e.target.files === null ||\n e.target.files === undefined\n ) {\n return;\n }\n e.preventDefault();\n var newFiles: File[] = [];\n\n for (let i = 0; i < e.target.files.length; i++) {\n newFiles.push(e.target.files[i]);\n }\n uploadObject(newFiles, \"\");\n\n e.target.value = \"\";\n };\n\n const uploadObject = useCallback(\n (files: File[], folderPath: string): void => {\n let pathPrefix = \"\";\n if (simplePath) {\n pathPrefix = simplePath.endsWith(\"/\") ? simplePath : simplePath + \"/\";\n }\n\n const upload = (\n files: File[],\n bucketName: string,\n path: string,\n folderPath: string,\n ) => {\n let uploadPromise = (file: File) => {\n return new Promise((resolve, reject) => {\n let uploadUrl = `api/v1/buckets/${bucketName}/objects/upload`;\n const fileName = file.name;\n\n const blobFile = new Blob([file], { type: file.type });\n\n let encodedPath = \"\";\n\n const filePath = get(file, \"path\", \"\");\n const fileWebkitRelativePath = get(file, \"webkitRelativePath\", \"\");\n\n let relativeFolderPath = folderPath;\n const ID = makeid(8);\n\n // File was uploaded via drag & drop\n if (filePath !== \"\") {\n relativeFolderPath = filePath;\n } else if (fileWebkitRelativePath !== \"\") {\n // File was uploaded using upload button\n relativeFolderPath = fileWebkitRelativePath;\n }\n\n if (path !== \"\" || relativeFolderPath !== \"\") {\n const finalFolderPath = relativeFolderPath\n .split(\"/\")\n .slice(0, -1)\n .join(\"/\");\n\n const pathClean = path.endsWith(\"/\") ? path.slice(0, -1) : path;\n\n encodedPath = encodeURLString(\n `${pathClean}${\n !pathClean.endsWith(\"/\") &&\n finalFolderPath !== \"\" &&\n !finalFolderPath.startsWith(\"/\")\n ? \"/\"\n : \"\"\n }${finalFolderPath}${\n !finalFolderPath.endsWith(\"/\") ||\n (finalFolderPath.trim() === \"\" && !path.endsWith(\"/\"))\n ? \"/\"\n : \"\"\n }`,\n );\n }\n\n if (encodedPath !== \"\") {\n uploadUrl = `${uploadUrl}?prefix=${encodedPath}`;\n }\n\n const identity = encodeURLString(\n `${bucketName}-${encodedPath}-${new Date().getTime()}-${Math.random()}`,\n );\n\n let xhr = new XMLHttpRequest();\n xhr.open(\"POST\", uploadUrl, true);\n if (anonymousMode) {\n xhr.setRequestHeader(\"X-Anonymous\", \"1\");\n }\n // xhr.setRequestHeader(\"X-Anonymous\", \"1\");\n\n const areMultipleFiles = files.length > 1;\n let errorMessage = `An error occurred while uploading the file${\n areMultipleFiles ? \"s\" : \"\"\n }.`;\n\n const errorMessages: any = {\n 413: \"Error - File size too large\",\n };\n\n xhr.withCredentials = false;\n xhr.onload = function () {\n // resolve promise only when HTTP code is ok\n if (xhr.status >= 200 && xhr.status < 300) {\n dispatch(completeObject(identity));\n resolve({ status: xhr.status });\n\n removeTrace(ID);\n } else {\n // reject promise if there was a server error\n if (errorMessages[xhr.status]) {\n errorMessage = errorMessages[xhr.status];\n } else if (xhr.response) {\n try {\n const err = JSON.parse(xhr.response);\n errorMessage = err.detailedMessage;\n } catch (e) {\n errorMessage = \"something went wrong\";\n }\n }\n\n dispatch(\n failObject({\n instanceID: identity,\n msg: errorMessage,\n }),\n );\n reject({ status: xhr.status, message: errorMessage });\n\n removeTrace(ID);\n }\n };\n\n xhr.upload.addEventListener(\"error\", () => {\n reject(errorMessage);\n dispatch(\n failObject({\n instanceID: identity,\n msg: \"A network error occurred.\",\n }),\n );\n return;\n });\n\n xhr.upload.addEventListener(\"progress\", (event) => {\n const progress = Math.floor((event.loaded * 100) / event.total);\n\n dispatch(\n updateProgress({\n instanceID: identity,\n progress: progress,\n }),\n );\n });\n\n xhr.onerror = () => {\n reject(errorMessage);\n dispatch(\n failObject({\n instanceID: identity,\n msg: \"A network error occurred.\",\n }),\n );\n return;\n };\n xhr.onloadend = () => {\n if (files.length === 0) {\n dispatch(setReloadObjectsList(true));\n }\n };\n xhr.onabort = () => {\n dispatch(cancelObjectInList(identity));\n };\n\n const formData = new FormData();\n if (file.size !== undefined) {\n formData.append(file.size.toString(), blobFile, fileName);\n storeCallForObjectWithID(ID, xhr);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identity,\n percentage: 0,\n prefix: `${decodeURLString(encodedPath)}${fileName}`,\n type: \"upload\",\n waitingForFile: false,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n }),\n );\n storeFormDataWithID(ID, formData);\n }\n });\n };\n\n const uploadFilePromises: any = [];\n // open object manager\n dispatch(openList());\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n uploadFilePromises.push(uploadPromise(file));\n }\n Promise.allSettled(uploadFilePromises).then((results: Array) => {\n const errors = results.filter(\n (result) => result.status === \"rejected\",\n );\n if (errors.length > 0) {\n const totalFiles = uploadFilePromises.length;\n const successUploadedFiles =\n uploadFilePromises.length - errors.length;\n const err: ErrorResponseHandler = {\n errorMessage: \"There were some errors during file upload\",\n detailedError: `Uploaded files ${successUploadedFiles}/${totalFiles}`,\n };\n dispatch(setErrorSnackMessage(err));\n }\n // We force objects list reload after all promises were handled\n dispatch(setReloadObjectsList(true));\n });\n };\n\n upload(files, bucketName, pathPrefix, folderPath);\n },\n [bucketName, dispatch, simplePath, anonymousMode],\n );\n\n const onDrop = useCallback(\n (acceptedFiles: any[]) => {\n if (acceptedFiles && acceptedFiles.length > 0 && canUpload) {\n let newFolderPath: string = acceptedFiles[0].path;\n //Should we filter by allowed file extensions if any?.\n let allowedFiles = acceptedFiles;\n\n if (allowedFileExtensions.length > 0) {\n allowedFiles = acceptedFiles.filter((file) => {\n const fileExtn = extractFileExtn(file.name);\n return allowedFileExtensions.includes(fileExtn);\n });\n }\n\n if (allowedFiles.length) {\n uploadObject(allowedFiles, newFolderPath);\n console.log(\n `${allowedFiles.length} Allowed Files Processed out of ${acceptedFiles.length}.`,\n pathAsResourceInPolicy,\n ...sessionGrantWildCards,\n );\n\n if (allowedFiles.length !== acceptedFiles.length) {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Upload is restricted.\",\n detailedError: permissionTooltipHelper(\n [IAM_SCOPES.S3_PUT_OBJECT, IAM_SCOPES.S3_PUT_ACTIONS],\n \"upload objects to this location\",\n ),\n }),\n );\n }\n } else {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Could not process drag and drop.\",\n detailedError: permissionTooltipHelper(\n [IAM_SCOPES.S3_PUT_OBJECT, IAM_SCOPES.S3_PUT_ACTIONS],\n \"upload objects to this location\",\n ),\n }),\n );\n\n console.error(\n \"Could not process drag and drop . upload may be restricted.\",\n pathAsResourceInPolicy,\n ...sessionGrantWildCards,\n );\n }\n }\n if (!canUpload) {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Upload not allowed\",\n detailedError: permissionTooltipHelper(\n [IAM_SCOPES.S3_PUT_OBJECT, IAM_SCOPES.S3_PUT_ACTIONS],\n \"upload objects to this location\",\n ),\n }),\n );\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [uploadObject],\n );\n\n const { getRootProps, getInputProps, isDragActive, isDragAccept } =\n useDropzone({\n noClick: true,\n onDrop,\n });\n\n const dndStyles = useMemo(\n () => ({\n ...baseDnDStyle,\n ...(isDragActive ? activeDnDStyle : {}),\n ...(isDragAccept ? acceptDnDStyle : {}),\n }),\n [isDragActive, isDragAccept],\n );\n\n const closeShareModal = () => {\n dispatch(setShareFileModalOpen(false));\n dispatch(setSelectedPreview(null));\n };\n\n const rewindCloseModal = () => {\n setRewindSelect(false);\n };\n\n const closePreviewWindow = () => {\n dispatch(setPreviewOpen(false));\n dispatch(setSelectedPreview(null));\n };\n\n const onClosePanel = (forceRefresh: boolean) => {\n dispatch(setSelectedObjectView(null));\n dispatch(setVersionsModeEnabled({ status: false }));\n if (detailsOpen && selectedInternalPaths !== null) {\n // We change URL to be the contained folder\n\n const decodedPath = decodeURLString(internalPaths);\n const splitURLS = decodedPath.split(\"/\");\n\n // We remove the last section of the URL as it should be a file\n splitURLS.pop();\n\n let URLItem = \"\";\n\n if (splitURLS && splitURLS.length > 0) {\n URLItem = `${splitURLS.join(\"/\")}/`;\n }\n\n navigate(`/browser/${bucketName}/${encodeURLString(URLItem)}`);\n }\n\n dispatch(setObjectDetailsView(false));\n\n if (forceRefresh) {\n dispatch(setReloadObjectsList(true));\n }\n };\n\n const setDeletedAction = () => {\n dispatch(resetMessages());\n dispatch(setShowDeletedObjects(!showDeleted));\n onClosePanel(true);\n };\n\n const closeRenameModal = () => {\n dispatch(setDownloadRenameModal(null));\n };\n\n const closeAddAccessRule = () => {\n dispatch(setAnonymousAccessOpen(false));\n };\n\n let createdTime = DateTime.now();\n\n if (bucketInfo?.creation_date) {\n createdTime = DateTime.fromISO(bucketInfo.creation_date);\n }\n\n const downloadToolTip =\n selectedObjects?.length <= 1\n ? \"Download Selected\"\n : ` Download selected objects as Zip. Any Deleted objects in the selection would be skipped from download.`;\n\n const multiActionButtons = [\n {\n action: () => {\n dispatch(downloadSelected(bucketName));\n },\n label: \"Download\",\n disabled: !canDownload || selectedObjects?.length === 0,\n icon: ,\n tooltip: canDownload\n ? downloadToolTip\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n \"download objects from this bucket\",\n ),\n },\n {\n action: () => {\n dispatch(openShare());\n },\n label: \"Share\",\n disabled: selectedObjects.length !== 1 || !canShareFile,\n icon: ,\n tooltip: canShareFile ? \"Share Selected File\" : \"Sharing unavailable\",\n },\n {\n action: () => {\n dispatch(openPreview());\n },\n label: \"Preview\",\n disabled: selectedObjects.length !== 1 || !canPreviewFile,\n icon: ,\n tooltip: canPreviewFile ? \"Preview Selected File\" : \"Preview unavailable\",\n },\n {\n action: () => {\n dispatch(openAnonymousAccess());\n },\n label: \"Anonymous Access\",\n disabled:\n selectedObjects.length !== 1 ||\n !selectedObjects[0].endsWith(\"/\") ||\n !canSetAnonymousAccess,\n icon: ,\n tooltip:\n selectedObjects.length === 1 && selectedObjects[0].endsWith(\"/\")\n ? \"Set Anonymous Access to this Folder\"\n : \"Anonymous Access unavailable\",\n },\n {\n action: () => {\n setDeleteMultipleOpen(true);\n },\n label: \"Delete\",\n icon: ,\n disabled: !canDelete || selectedObjects.length === 0,\n tooltip: canDelete\n ? \"Delete Selected Files\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_DELETE_OBJECT],\n \"delete objects in this bucket\",\n ),\n },\n ];\n\n return (\n \n {shareFileModalOpen && selectedPreview && (\n \n )}\n {deleteMultipleOpen && (\n \n )}\n {rewindSelect && (\n \n )}\n {previewOpen && (\n \n )}\n {!!downloadRenameModal && (\n \n )}\n {anonymousAccessOpen && (\n \n )}\n\n \n {anonymousMode && (\n
    \n \n
    \n )}\n \n \n \n \n }\n title={bucketName}\n subTitle={\n !anonymousMode ? (\n \n \n Created on: \n \n {bucketInfo?.creation_date\n ? createdTime.toFormat(\n \"ccc, LLL dd yyyy HH:mm:ss (ZZZZ)\",\n )\n : \"\"}\n \n \n \n Access:  \n {bucketInfo?.access || \"\"}\n \n {bucketInfo && (\n \n \n {bucketInfo.size && (\n {niceBytesInt(bucketInfo.size)}\n )}\n {bucketInfo.size && quota && (\n \n {\" \"}\n / {niceBytesInt(quota.quota || 0)}\n \n )}\n {bucketInfo.size && bucketInfo.objects ? \" - \" : \"\"}\n {bucketInfo.objects && (\n \n {bucketInfo.objects} Object\n {bucketInfo.objects && bucketInfo.objects !== 1\n ? \"s\"\n : \"\"}\n \n )}\n \n \n )}\n \n ) : null\n }\n actions={\n \n {!anonymousMode && (\n \n \n \n \n }\n variant={\"regular\"}\n onClick={() => {\n setRewindSelect(true);\n }}\n disabled={\n !isVersioningApplied ||\n !hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_OBJECT,\n IAM_SCOPES.S3_GET_ACTIONS,\n ])\n }\n />\n \n )}\n \n }\n variant={\"regular\"}\n onClick={() => {\n if (versionsMode) {\n dispatch(setLoadingVersions(true));\n } else {\n dispatch(resetMessages());\n dispatch(setReloadObjectsList(true));\n }\n }}\n disabled={\n anonymousMode\n ? false\n : !hasPermission(bucketName, [\n IAM_SCOPES.S3_LIST_BUCKET,\n IAM_SCOPES.S3_ALL_LIST_BUCKET,\n ]) || rewindEnabled\n }\n />\n \n \n \n {\n if (fileUpload && fileUpload.current) {\n fileUpload.current.click();\n }\n closeMenu();\n }}\n uploadFolderFunction={(closeMenu) => {\n if (folderUpload && folderUpload.current) {\n folderUpload.current.click();\n }\n closeMenu();\n }}\n />\n \n }\n bottomBorder={false}\n />\n \n \n \n \n {versionsMode ? (\n \n {selectedInternalPaths !== null && (\n \n )}\n \n ) : (\n \n \n {!anonymousMode && (\n \n \n )\n }\n hidePathButton={false}\n />\n \n )}\n \n \n \n )}\n {!anonymousMode && (\n \n {\n onClosePanel(false);\n }}\n className={`${versionsMode ? \"hideListOnSmall\" : \"\"}`}\n >\n {selectedObjects.length > 0 && (\n \n )}\n {selectedInternalPaths !== null && (\n \n )}\n \n \n )}\n \n \n
    \n
    \n );\n};\n\nexport default ListObjects;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect } from \"react\";\nimport {\n IAM_PAGES,\n IAM_PERMISSIONS,\n IAM_ROLES,\n IAM_SCOPES,\n} from \"../../../common/SecureComponent/permissions\";\nimport { SecureComponent } from \"../../../common/SecureComponent\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport { BackLink, Button, SettingsIcon, Grid } from \"mds\";\nimport AutoColorIcon from \"../Common/Components/AutoColorIcon\";\nimport { useSelector } from \"react-redux\";\nimport { selFeatures } from \"../consoleSlice\";\nimport hasPermission from \"../../../common/SecureComponent/accessControl\";\nimport { useNavigate } from \"react-router-dom\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { setSearchVersions } from \"./objectBrowserSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport FilterObjectsSB from \"./FilterObjectsSB\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport ObjectManagerButton from \"../Common/ObjectManager/ObjectManagerButton\";\nimport HelpMenu from \"../HelpMenu\";\nimport { setHelpName } from \"../../../systemSlice\";\n\ninterface IOBHeader {\n bucketName: string;\n}\n\nconst OBHeader = ({ bucketName }: IOBHeader) => {\n const dispatch = useAppDispatch();\n const features = useSelector(selFeatures);\n\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode,\n );\n const versionedFile = useSelector(\n (state: AppState) => state.objectBrowser.versionedFile,\n );\n const searchVersions = useSelector(\n (state: AppState) => state.objectBrowser.searchVersions,\n );\n\n const obOnly = !!features?.includes(\"object-browser-only\");\n\n const navigate = useNavigate();\n\n const configureBucketAllowed = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_POLICY,\n IAM_SCOPES.S3_PUT_BUCKET_POLICY,\n IAM_SCOPES.S3_GET_BUCKET_VERSIONING,\n IAM_SCOPES.S3_PUT_BUCKET_VERSIONING,\n IAM_SCOPES.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,\n IAM_SCOPES.S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION,\n IAM_SCOPES.S3_DELETE_BUCKET,\n IAM_SCOPES.S3_GET_BUCKET_NOTIFICATIONS,\n IAM_SCOPES.S3_PUT_BUCKET_NOTIFICATIONS,\n IAM_SCOPES.S3_GET_REPLICATION_CONFIGURATION,\n IAM_SCOPES.S3_PUT_REPLICATION_CONFIGURATION,\n IAM_SCOPES.S3_GET_LIFECYCLE_CONFIGURATION,\n IAM_SCOPES.S3_PUT_LIFECYCLE_CONFIGURATION,\n IAM_SCOPES.ADMIN_GET_BUCKET_QUOTA,\n IAM_SCOPES.ADMIN_SET_BUCKET_QUOTA,\n IAM_SCOPES.S3_PUT_BUCKET_TAGGING,\n IAM_SCOPES.S3_GET_BUCKET_TAGGING,\n IAM_SCOPES.S3_LIST_BUCKET_VERSIONS,\n IAM_SCOPES.S3_GET_BUCKET_POLICY_STATUS,\n IAM_SCOPES.S3_DELETE_BUCKET_POLICY,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n\n const searchBar = (\n \n {!versionsMode ? (\n \n \n \n ) : (\n \n {\n dispatch(setSearchVersions(value));\n }}\n value={searchVersions}\n />\n \n )}\n \n );\n\n useEffect(() => {\n dispatch(setHelpName(\"object_browser\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {!obOnly ? (\n {\n navigate(IAM_PAGES.OBJECT_BROWSER_VIEW);\n }}\n />\n }\n actions={\n \n \n \n navigate(`/buckets/${bucketName}/admin`)}\n icon={\n \n }\n style={{\n padding: \"0 10px\",\n }}\n />\n \n \n \n \n }\n middleComponent={searchBar}\n />\n ) : (\n \n \n \n \n \n {searchBar}\n \n \n \n )}\n \n );\n};\n\nexport default OBHeader;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { useLocation, useParams } from \"react-router-dom\";\nimport { api } from \"api\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { IAM_SCOPES } from \"../../../../common/SecureComponent/permissions\";\nimport { decodeURLString, encodeURLString } from \"../../../../common/utils\";\nimport {\n resetMessages,\n setIsVersioned,\n setLoadingLocking,\n setLoadingObjectInfo,\n setLoadingVersioning,\n setLoadingVersions,\n setLockingEnabled,\n setObjectDetailsView,\n setRequestInProgress,\n setSelectedObjectView,\n setVersionsModeEnabled,\n} from \"../../ObjectBrowser/objectBrowserSlice\";\nimport ListObjects from \"../ListBuckets/Objects/ListObjects/ListObjects\";\nimport hasPermission from \"../../../../common/SecureComponent/accessControl\";\nimport OBHeader from \"../../ObjectBrowser/OBHeader\";\n\nconst BrowserHandler = () => {\n const dispatch = useAppDispatch();\n const params = useParams();\n const location = useLocation();\n\n const loadingVersioning = useSelector(\n (state: AppState) => state.objectBrowser.loadingVersioning,\n );\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled,\n );\n const rewindDate = useSelector(\n (state: AppState) => state.objectBrowser.rewind.dateToRewind,\n );\n const showDeleted = useSelector(\n (state: AppState) => state.objectBrowser.showDeleted,\n );\n const requestInProgress = useSelector(\n (state: AppState) => state.objectBrowser.requestInProgress,\n );\n const loadingLocking = useSelector(\n (state: AppState) => state.objectBrowser.loadingLocking,\n );\n const reloadObjectsList = useSelector(\n (state: AppState) => state.objectBrowser.reloadObjectsList,\n );\n const simplePath = useSelector(\n (state: AppState) => state.objectBrowser.simplePath,\n );\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode,\n );\n const selectedBucket = useSelector(\n (state: AppState) => state.objectBrowser.selectedBucket,\n );\n const records = useSelector((state: AppState) => state.objectBrowser.records);\n\n const bucketName = params.bucketName || \"\";\n const pathSegment = location.pathname.split(`/browser/${bucketName}/`);\n const internalPaths = pathSegment.length === 2 ? pathSegment[1] : \"\";\n\n const initWSRequest = useCallback(\n (path: string) => {\n let currDate = new Date();\n\n let date = currDate.toISOString();\n\n if (rewindDate !== null && rewindEnabled) {\n date = rewindDate;\n }\n\n const payloadData = {\n bucketName,\n path,\n rewindMode: rewindEnabled || showDeleted,\n date: date,\n };\n\n dispatch({ type: \"socket/OBRequest\", payload: payloadData });\n },\n [bucketName, showDeleted, rewindDate, rewindEnabled, dispatch],\n );\n\n // Common path load\n const pathLoad = useCallback(\n (forceLoad: boolean = false) => {\n const decodedInternalPaths = decodeURLString(internalPaths);\n\n // We exit Versions mode in case of path change\n dispatch(setVersionsModeEnabled({ status: false }));\n\n let searchPath = decodedInternalPaths;\n\n if (!decodedInternalPaths.endsWith(\"/\") && decodedInternalPaths !== \"\") {\n searchPath = `${decodedInternalPaths\n .split(\"/\")\n .slice(0, -1)\n .join(\"/\")}/`;\n }\n\n if (searchPath === \"/\") {\n searchPath = \"\";\n }\n\n // If the path is different of the actual path or reload objects list is requested, then we initialize a new request to load a new record set.\n if (\n searchPath !== simplePath ||\n bucketName !== selectedBucket ||\n forceLoad\n ) {\n dispatch(setRequestInProgress(true));\n initWSRequest(searchPath);\n }\n },\n [\n internalPaths,\n dispatch,\n simplePath,\n selectedBucket,\n bucketName,\n initWSRequest,\n ],\n );\n\n useEffect(() => {\n return () => {\n dispatch({ type: \"socket/OBCancelLast\" });\n };\n }, [dispatch]);\n\n // Object Details handler\n useEffect(() => {\n const decodedIPaths = decodeURLString(internalPaths);\n\n dispatch(setLoadingVersioning(true));\n\n if (decodedIPaths.endsWith(\"/\") || decodedIPaths === \"\") {\n dispatch(setObjectDetailsView(false));\n dispatch(setSelectedObjectView(null));\n dispatch(setLoadingLocking(true));\n } else {\n dispatch(setLoadingObjectInfo(true));\n dispatch(setObjectDetailsView(true));\n dispatch(setLoadingVersions(true));\n dispatch(\n setSelectedObjectView(\n `${decodedIPaths ? `${encodeURLString(decodedIPaths)}` : ``}`,\n ),\n );\n }\n }, [bucketName, internalPaths, rewindDate, rewindEnabled, dispatch]);\n\n // Navigation Listing Request\n useEffect(() => {\n pathLoad(false);\n }, [pathLoad]);\n\n // Reload Handler\n useEffect(() => {\n if (reloadObjectsList && records.length === 0 && !requestInProgress) {\n pathLoad(true);\n }\n }, [reloadObjectsList, records, requestInProgress, pathLoad]);\n\n const displayListObjects =\n hasPermission(bucketName, [\n IAM_SCOPES.S3_LIST_BUCKET,\n IAM_SCOPES.S3_ALL_LIST_BUCKET,\n ]) || anonymousMode;\n\n useEffect(() => {\n if (loadingVersioning && !anonymousMode) {\n if (displayListObjects) {\n api.buckets\n .getBucketVersioning(bucketName)\n .then((res) => {\n dispatch(setIsVersioned(res.data));\n dispatch(setLoadingVersioning(false));\n })\n .catch((err) => {\n console.error(\n \"Error Getting Object Versioning Status: \",\n err.error.detailedMessage,\n );\n dispatch(setLoadingVersioning(false));\n });\n } else {\n dispatch(setLoadingVersioning(false));\n dispatch(resetMessages());\n }\n }\n }, [\n bucketName,\n loadingVersioning,\n dispatch,\n displayListObjects,\n anonymousMode,\n ]);\n\n useEffect(() => {\n if (loadingLocking) {\n if (displayListObjects) {\n api.buckets\n .getBucketObjectLockingStatus(bucketName)\n .then((res) => {\n dispatch(setLockingEnabled(res.data.object_locking_enabled));\n dispatch(setLoadingLocking(false));\n })\n .catch((err) => {\n console.error(\n \"Error Getting Object Locking Status: \",\n err.error.detailedMessage,\n );\n dispatch(setLoadingLocking(false));\n });\n } else {\n dispatch(resetMessages());\n dispatch(setLoadingLocking(false));\n }\n }\n }, [bucketName, loadingLocking, dispatch, displayListObjects]);\n\n return (\n \n {!anonymousMode && }\n \n \n );\n};\n\nexport default BrowserHandler;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { DateTime } from \"luxon\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\nimport { Grid, InputBox, InputLabel, LinkIcon } from \"mds\";\n\ninterface IDaysSelector {\n classes: any;\n id: string;\n initialDate: Date;\n maxDays?: number;\n label: string;\n entity: string;\n onChange: (newDate: string, isValid: boolean) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n labelContainer: {\n display: \"flex\",\n alignItems: \"center\",\n marginBottom: 15,\n },\n fieldContainer: {\n ...fieldBasic.fieldContainer,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingBottom: 10,\n marginTop: 11,\n marginBottom: 6,\n },\n durationInputs: {\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"flex-start\",\n gap: 10,\n },\n\n validityIndicator: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n marginTop: 25,\n marginLeft: 10,\n },\n invalidDurationText: {\n marginTop: 15,\n display: \"flex\",\n color: \"red\",\n fontSize: 11,\n },\n reverseInput: {\n flexFlow: \"row-reverse\",\n \"& > label\": {\n fontWeight: 400,\n marginLeft: 15,\n marginRight: 25,\n },\n },\n validityText: {\n fontSize: 14,\n marginTop: 15,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n \"& > .min-icon\": {\n color: \"#5E5E5E\",\n width: 15,\n height: 15,\n marginRight: 10,\n },\n },\n validTill: {\n fontWeight: \"bold\",\n marginLeft: 15,\n },\n });\n\nconst calculateNewTime = (\n initialDate: Date,\n days: number,\n hours: number,\n minutes: number,\n) => {\n return DateTime.fromJSDate(initialDate).plus({ days, hours, minutes });\n};\n\nconst DaysSelector = ({\n classes,\n id,\n initialDate,\n label,\n maxDays,\n entity,\n onChange,\n}: IDaysSelector) => {\n const [selectedDays, setSelectedDays] = useState(7);\n const [selectedHours, setSelectedHours] = useState(0);\n const [selectedMinutes, setSelectedMinutes] = useState(0);\n const [validDate, setValidDate] = useState(true);\n const [dateSelected, setDateSelected] = useState(DateTime.now());\n\n useEffect(() => {\n if (\n !isNaN(selectedHours) &&\n !isNaN(selectedDays) &&\n !isNaN(selectedMinutes)\n ) {\n setDateSelected(\n calculateNewTime(\n initialDate,\n selectedDays,\n selectedHours,\n selectedMinutes,\n ),\n );\n }\n }, [initialDate, selectedDays, selectedHours, selectedMinutes]);\n\n useEffect(() => {\n if (validDate) {\n const formattedDate = dateSelected.toFormat(\"yyyy-MM-dd HH:mm:ss\");\n onChange(formattedDate.split(\" \").join(\"T\"), true);\n } else {\n onChange(\"0000-00-00\", false);\n }\n }, [dateSelected, onChange, validDate]);\n\n // Basic validation for inputs\n useEffect(() => {\n let valid = true;\n if (\n selectedDays < 0 ||\n (maxDays && selectedDays > maxDays) ||\n isNaN(selectedDays)\n ) {\n valid = false;\n }\n\n if (selectedHours < 0 || selectedHours > 23 || isNaN(selectedHours)) {\n valid = false;\n }\n\n if (selectedMinutes < 0 || selectedMinutes > 59 || isNaN(selectedMinutes)) {\n valid = false;\n }\n\n if (\n maxDays &&\n selectedDays === maxDays &&\n (selectedHours !== 0 || selectedMinutes !== 0)\n ) {\n valid = false;\n }\n\n if (selectedDays <= 0 && selectedHours <= 0 && selectedMinutes <= 0) {\n valid = false;\n }\n\n setValidDate(valid);\n }, [\n dateSelected,\n maxDays,\n onChange,\n selectedDays,\n selectedHours,\n selectedMinutes,\n ]);\n\n const extraStyles = {\n \"& .textBoxContainer\": {\n minWidth: 0,\n },\n \"& input\": {\n textAlign: \"center\" as const,\n paddingRight: 10,\n paddingLeft: 10,\n width: 40,\n },\n };\n\n return (\n \n \n \n {label}\n \n \n \n {\n setSelectedDays(parseInt(e.target.value));\n }}\n value={selectedDays.toString()}\n sx={extraStyles}\n noLabelMinWidth\n />\n \n \n {\n setSelectedHours(parseInt(e.target.value));\n }}\n value={selectedHours.toString()}\n sx={extraStyles}\n noLabelMinWidth\n />\n \n \n {\n setSelectedMinutes(parseInt(e.target.value));\n }}\n value={selectedMinutes.toString()}\n sx={extraStyles}\n noLabelMinWidth\n />\n \n \n \n {validDate ? (\n
    \n \n
    \n {entity} will be available until:\n
    {\" \"}\n
    \n {dateSelected.toFormat(\"MM/dd/yyyy HH:mm:ss\")}\n
    \n
    \n ) : (\n
    \n Please select a valid duration.\n
    \n )}\n
    \n \n
    \n );\n};\n\nexport default withStyles(styles)(DaysSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Button, CopyIcon, ReadBox, ShareIcon, Grid, ProgressBar } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport DaysSelector from \"../../../../Common/FormComponents/DaysSelector/DaysSelector\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport {\n selDistSet,\n setModalErrorSnackMessage,\n setModalSnackMessage,\n} from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\nimport { BucketObject } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IShareFileProps {\n open: boolean;\n bucketName: string;\n dataObject: BucketObject;\n closeModalAndRefresh: () => void;\n}\n\nconst ShareFile = ({\n open,\n closeModalAndRefresh,\n bucketName,\n dataObject,\n}: IShareFileProps) => {\n const dispatch = useAppDispatch();\n const distributedSetup = useSelector(selDistSet);\n const [shareURL, setShareURL] = useState(\"\");\n const [isLoadingVersion, setIsLoadingVersion] = useState(true);\n const [isLoadingFile, setIsLoadingFile] = useState(false);\n const [selectedDate, setSelectedDate] = useState(\"\");\n const [dateValid, setDateValid] = useState(true);\n const [versionID, setVersionID] = useState(\"null\");\n\n const initialDate = new Date();\n\n const dateChanged = (newDate: string, isValid: boolean) => {\n setDateValid(isValid);\n if (isValid) {\n setSelectedDate(newDate);\n return;\n }\n setSelectedDate(\"\");\n setShareURL(\"\");\n };\n\n useEffect(() => {\n // In case version is undefined, we get the latest version of the object\n if (dataObject.version_id === undefined) {\n // In case it is not distributed setup, then we default to \"null\";\n if (distributedSetup) {\n api.buckets\n .listObjects(bucketName, {\n prefix: encodeURLString(dataObject.name || \"\"),\n with_versions: distributedSetup,\n })\n .then((res) => {\n const result: BucketObject[] = res.data.objects || [];\n\n const latestVersion: BucketObject | undefined = result.find(\n (elem: BucketObject) => elem.is_latest,\n );\n\n if (latestVersion) {\n setVersionID(`${latestVersion.version_id}`);\n return;\n }\n\n // Version couldn't be retrieved, we default\n setVersionID(\"null\");\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n\n setIsLoadingVersion(false);\n return;\n }\n setVersionID(\"null\");\n setIsLoadingVersion(false);\n return;\n }\n setVersionID(dataObject.version_id || \"null\");\n setIsLoadingVersion(false);\n }, [bucketName, dataObject, distributedSetup, dispatch]);\n\n useEffect(() => {\n if (dateValid && !isLoadingVersion) {\n setIsLoadingFile(true);\n setShareURL(\"\");\n\n const slDate = new Date(`${selectedDate}`);\n const currDate = new Date();\n\n const diffDate = Math.ceil(\n (slDate.getTime() - currDate.getTime()) / 1000,\n );\n\n if (diffDate > 0) {\n api.buckets\n .shareObject(bucketName, {\n prefix: encodeURLString(dataObject.name || \"\"),\n version_id: versionID,\n expires: selectedDate !== \"\" ? `${diffDate}s` : \"\",\n })\n .then((res) => {\n setShareURL(res.data);\n setIsLoadingFile(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setShareURL(\"\");\n setIsLoadingFile(false);\n });\n }\n }\n }, [\n dataObject,\n selectedDate,\n bucketName,\n dateValid,\n setShareURL,\n dispatch,\n distributedSetup,\n isLoadingVersion,\n versionID,\n ]);\n\n return (\n \n }\n modalOpen={open}\n onClose={() => {\n closeModalAndRefresh();\n }}\n >\n {isLoadingVersion && (\n \n \n \n )}\n {!isLoadingVersion && (\n \n \n This is a temporary URL with integrated access credentials for\n sharing objects valid for up to 7 days.\n
    \n
    \n The temporary URL expires after the configured time limit.\n \n
    \n \n \n \n \n \n {\n dispatch(\n setModalSnackMessage(\"Share URL Copied to clipboard\"),\n );\n }}\n disabled={shareURL === \"\" || isLoadingFile}\n style={{\n width: \"28px\",\n height: \"28px\",\n padding: \"0px\",\n }}\n icon={}\n />\n \n }\n >\n {shareURL}\n \n \n
    \n )}\n \n
    \n );\n};\n\nexport default ShareFile;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid } from \"@mui/material\";\nimport { BucketObjectItem } from \"../ListObjects/types\";\nimport { AllowedPreviews, previewObjectType } from \"../utils\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport clsx from \"clsx\";\nimport WarningMessage from \"../../../../Common/WarningMessage/WarningMessage\";\nimport { api } from \"../../../../../../api\";\nimport get from \"lodash/get\";\nimport { ProgressBar } from \"mds\";\n\nconst styles = () =>\n createStyles({\n iframeContainer: {\n border: \"0px\",\n flex: \"1 1 auto\",\n width: \"100%\",\n height: 250,\n backgroundColor: \"transparent\",\n borderRadius: 5,\n\n \"&.image\": {\n height: 500,\n },\n \"&.text\": {\n height: 700,\n },\n \"&.audio\": {\n height: 150,\n },\n \"&.video\": {\n height: 350,\n },\n \"&.fullHeight\": {\n height: \"calc(100vh - 185px)\",\n },\n },\n iframeBase: {\n backgroundColor: \"#fff\",\n },\n iframeHidden: {\n display: \"none\",\n },\n });\n\ninterface IPreviewFileProps {\n bucketName: string;\n object: BucketObjectItem | null;\n isFullscreen?: boolean;\n classes: any;\n}\n\nconst PreviewFile = ({\n bucketName,\n object,\n isFullscreen = false,\n classes,\n}: IPreviewFileProps) => {\n const [loading, setLoading] = useState(true);\n\n const [metaData, setMetaData] = useState(null);\n const [isMetaDataLoaded, setIsMetaDataLoaded] = useState(false);\n\n const objectName = object?.name || \"\";\n\n const fetchMetadata = useCallback(() => {\n if (!isMetaDataLoaded) {\n const encodedPath = encodeURLString(objectName);\n api.buckets\n .getObjectMetadata(bucketName, {\n prefix: encodedPath,\n })\n .then((res) => {\n let metadata = get(res.data, \"objectMetadata\", {});\n setIsMetaDataLoaded(true);\n setMetaData(metadata);\n })\n .catch((err) => {\n console.error(\n \"Error Getting Metadata Status: \",\n err,\n err?.detailedError,\n );\n setIsMetaDataLoaded(true);\n });\n }\n }, [bucketName, objectName, isMetaDataLoaded]);\n\n useEffect(() => {\n if (bucketName && objectName) {\n fetchMetadata();\n }\n }, [bucketName, objectName, fetchMetadata]);\n\n let path = \"\";\n\n if (object) {\n const encodedPath = encodeURLString(object.name);\n let basename = document.baseURI.replace(window.location.origin, \"\");\n path = `${window.location.origin}${basename}api/v1/buckets/${bucketName}/objects/download?preview=true&prefix=${encodedPath}`;\n if (object.version_id) {\n path = path.concat(`&version_id=${object.version_id}`);\n }\n }\n\n let objectType: AllowedPreviews = previewObjectType(metaData, objectName);\n\n const iframeLoaded = () => {\n setLoading(false);\n };\n\n return (\n \n {objectType !== \"none\" && loading && (\n \n \n \n )}\n {isMetaDataLoaded ? (\n
    \n {objectType === \"video\" && (\n \n \n \n )}\n {objectType === \"audio\" && (\n \n \n \n )}\n {objectType === \"image\" && (\n \n )}\n {objectType === \"none\" && (\n
    \n \n
    \n )}\n {objectType !== \"none\" &&\n objectType !== \"video\" &&\n objectType !== \"audio\" &&\n objectType !== \"image\" && (\n \n \n File couldn't be loaded. Please try Download instead\n \n
    \n )}\n \n ) : null}\n
    \n );\n};\nexport default withStyles(styles)(PreviewFile);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport PreviewFileContent from \"./PreviewFileContent\";\nimport { BucketObjectItem } from \"../ListObjects/types\";\nimport { ObjectPreviewIcon } from \"mds\";\n\ninterface IPreviewFileProps {\n open: boolean;\n bucketName: string;\n object: BucketObjectItem | null;\n onClosePreview: () => void;\n}\n\nconst PreviewFileModal = ({\n open,\n bucketName,\n object,\n onClosePreview,\n}: IPreviewFileProps) => {\n return (\n \n }\n >\n \n \n \n );\n};\n\nexport default PreviewFileModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

    (\n WrappedComponent: ComponentType

    ,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { InputLabel, Switch, Tooltip, Typography } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport { actionsTray, fieldBasic } from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input/Input\";\n\ninterface IFormSwitch {\n label?: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n description?: string;\n index?: number;\n checked: boolean;\n switchOnly?: boolean;\n indicatorLabels?: string[];\n extraInputProps?: StandardInputProps[\"inputProps\"];\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n indicatorLabelOn: {\n fontWeight: \"bold\",\n color: \"#081C42 !important\",\n },\n indicatorLabel: {\n fontSize: 12,\n color: \"#E2E2E2\",\n margin: \"0 8px 0 10px\",\n },\n fieldDescription: {\n marginTop: 4,\n color: \"#999999\",\n },\n tooltip: {\n fontSize: 16,\n },\n ...actionsTray,\n ...fieldBasic,\n });\n\nconst StyledSwitch = withStyles((theme) => ({\n root: {\n width: 50,\n height: 24,\n padding: 0,\n margin: 0,\n },\n switchBase: {\n padding: 1,\n \"&$checked\": {\n transform: \"translateX(24px)\",\n color: theme.palette.common.white,\n \"& + $track\": {\n backgroundColor: \"#4CCB92\",\n boxShadow: \"inset 0px 1px 4px rgba(0,0,0,0.1)\",\n opacity: 1,\n border: \"none\",\n },\n },\n \"&$focusVisible $thumb\": {\n color: \"#4CCB92\",\n border: \"6px solid #fff\",\n },\n },\n thumb: {\n width: 22,\n height: 22,\n backgroundColor: \"#FAFAFA\",\n border: \"2px solid #FFFFFF\",\n marginLeft: 1,\n },\n track: {\n borderRadius: 24 / 2,\n backgroundColor: \"#E2E2E2\",\n boxShadow: \"inset 0px 1px 4px rgba(0,0,0,0.1)\",\n opacity: 1,\n transition: theme.transitions.create([\"background-color\", \"border\"]),\n },\n checked: {},\n focusVisible: {},\n switchContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n },\n}))(Switch);\n\nconst FormSwitchWrapper = ({\n label = \"\",\n onChange,\n value,\n id,\n name,\n checked = false,\n disabled = false,\n switchOnly = false,\n tooltip = \"\",\n description = \"\",\n classes,\n indicatorLabels,\n extraInputProps = {},\n}: IFormSwitch) => {\n const switchComponent = (\n \n {!switchOnly && (\n \n {indicatorLabels && indicatorLabels.length > 1\n ? indicatorLabels[1]\n : \"OFF\"}\n \n )}\n \n {!switchOnly && (\n \n {indicatorLabels ? indicatorLabels[0] : \"ON\"}\n \n )}\n \n );\n\n if (switchOnly) {\n return switchComponent;\n }\n\n return (\n

    \n \n \n {label !== \"\" && (\n \n {label}\n {tooltip !== \"\" && (\n
    \n \n
    \n \n
    \n
    \n
    \n )}\n
    \n )}\n
    \n \n {switchComponent}\n
    \n {description !== \"\" && (\n \n \n {description}\n \n \n )}\n \n
    \n );\n};\n\nexport default withStyles(styles)(FormSwitchWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { ClipboardEvent, useState } from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n onKeyPress?: (e: any) => void;\n onFocus?: () => void;\n onPaste?: (e: ClipboardEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayId?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n }),\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayId,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n onFocus,\n onPaste,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n const [toggleTextInput, setToggleTextInput] = useState(false);\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n let inputBoxWrapperIcon = overlayIcon;\n let inputBoxWrapperType = type;\n\n if (type === \"password\" && overlayIcon === null) {\n inputBoxWrapperIcon = toggleTextInput ? (\n \n ) : (\n \n );\n inputBoxWrapperType = toggleTextInput ? \"text\" : \"password\";\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
    \n \n
    \n \n
    \n
    \n
    \n )}\n \n )}\n\n
    \n \n {inputBoxWrapperIcon && (\n \n {\n overlayAction();\n }\n : () => setToggleTextInput(!toggleTextInput)\n }\n id={overlayId}\n size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {inputBoxWrapperIcon}\n \n
    \n )}\n {overlayObject && (\n \n {overlayObject}\n \n )}\n \n \n
    \n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 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

    {title}

    \n
    {label}
    \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\";\nimport { Box } from \"@mui/material\";\nimport { Button, CopyIcon } from \"mds\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\n\nconst KeyRevealer = ({ value }: { value: string }) => {\n const [shown, setShown] = useState(false);\n\n return (\n \n {}}\n value={value}\n overlayIcon={}\n extraInputProps={{\n readOnly: true,\n }}\n overlayAction={() => navigator.clipboard.writeText(value)}\n />\n\n setShown(!shown)}\n label={\"Show/Hide\"}\n />\n \n );\n};\n\nexport default KeyRevealer;\n"],"names":["_ref","modalOpen","onClose","bucket","prefilledRoute","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","prefix","setPrefix","_useState3","_useState4","selectedAccess","setSelectedAccess","useEffect","_jsx","ModalWrapper","title","titleIcon","AddAccessRuleIcon","children","_jsxs","FormLayout","withBorders","containerPadding","InputBox","value","label","id","name","placeholder","onChange","e","target","tooltip","Select","options","disabled","Grid","item","xs","sx","modalStyleUtils","modalButtonBar","Button","type","variant","onClick","trim","api","setAccessRuleWithBucket","access","then","res","setSnackBarMessage","catch","setErrorSnackMessage","errorToHandler","error","extractFileExtn","resourceStr","match","getSessionGrantsWildCard","sessionGrants","uploadPath","scopes","arguments","length","undefined","grantsWithExtension","Object","keys","reduce","acc","grantKey","includes","filter","sessionGrantKey","hasScope","some","actionKey","find","scopeKey","wildCardMatch","indexOf","scopeActionKey","substring","isUploadPathMatching","concat","CreatePathModal","withSuspense","React","useStyles","makeStyles","theme","createStyles","_objectSpread","objectBrowserCommon","slashSpacingStyle","margin","bucketName","internalPaths","hidePathButton","additionalOptions","navigate","useNavigate","classes","rewindEnabled","useSelector","state","objectBrowser","rewind","versionsMode","versionedFile","anonymousMode","system","createFolderOpen","setCreateFolderOpen","putObjectPermScopes","IAM_SCOPES","S3_PUT_OBJECT","S3_PUT_ACTIONS","console","session","permissions","paths","splitPaths","split","path","lastBreadcrumbsIndex","pathToCheckPerms","sessionGrantWildCards","canCreatePath","hasPermission","_toConsumableArray","breadcrumbsMap","map","objectItem","index","subSplit","slice","join","route","encodeURLString","Fragment","className","style","cursor","whiteSpace","safeDecodeURIComponent","Link","to","setVersionsModeEnabled","status","objectName","toString","versionsItem","listBreadcrumbs","breadcrumbsMain","folderName","Breadcrumbs","goBackFunction","prevPath","CopyToClipboard","text","icon","CopyIcon","width","height","fill","marginTop","color","border","marginRight","Tooltip","permissionTooltipHelper","NewPathIcon","breadcrumbsSecond","isVersionedMode","downloadSelected","createAsyncThunk","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","getState","downloadObject","itemsToDownload","filterFunction","fileName","multiObjList","wrap","_context","prev","next","rejectWithValue","object","identityDownload","Date","getTime","Math","random","ID","makeid","downloadCall","download","version_id","size","progress","updateProgress","instanceID","completeObject","msg","failObject","cancelObjectInList","storeCallForObjectWithID","setNewObject","done","percentage","waitingForFile","failed","cancelled","errorMessage","selectedObjects","currValue","records","getClientOS","toLowerCase","setDownloadRenameModal","abrupt","DateTime","now","toFormat","dwList","bi","isDeleted","delete_flag","push","log","downloadSelectedAsZip","stop","_x","_x2","apply","openPreview","_ref4","_callee2","_","_ref3","fileObject","findFunction","_context2","setSelectedPreview","setPreviewOpen","_x3","_x4","openShare","_ref6","_callee3","_ref5","_context3","setShareFileModalOpen","_x5","_x6","openAnonymousAccess","_ref8","_callee4","_ref7","_context4","endsWith","setAnonymousAccessOpen","_x7","_x8","withStyles","listUploadIcons","_ref$forceDisable","forceDisable","uploadFileFunction","uploadFolderFunction","_ref$overrideStyles","overrideStyles","anchorEl","setAnchorEl","openUploadMenu","Boolean","handleCloseUpload","uploadObjectAllowed","uploadFolderAllowed","uploadEnabled","TooltipWrapper","event","currentTarget","UploadIcon","Menu","open","anchorOrigin","vertical","horizontal","transformOrigin","MenuItem","ListItemIcon","ListItemText","UploadFolderIcon","closePanel","_ref$className","Box","borderColor","borderWidth","borderStyle","borderRadius","borderBottomLeftRadius","borderBottomRightRadius","transitionDuration","overflowX","overflowY","position","opacity","marginLeft","minWidth","borderLeftWidth","ClosePanelIcon","right","top","padding","backgroundColor","_object$name","isWinOs","setLongFileOpen","display","alignItems","minHeight","fileNameText","overflow","textOverflow","strings","replaceUnicodeChar","extensionToIcon","FileVideoIcon","extensions","FileMusicIcon","FilePdfIcon","FilePptIcon","FileXlsIcon","FileLockIcon","FileCodeIcon","FileConfigIcon","FileDbIcon","FileFontIcon","FileTxtIcon","FileZipIcon","FileBookIcon","FileImageIcon","displayFileIconName","element","returnOnlyIcon","elementString","FileNonType","FolderBrowserIcon","lowercaseElement","_i","_extensionToIcon","_step","etc","_iterator","_createForOfIteratorHelper","s","n","ext","err","f","FileMissingIcon","splitItem","IconWithLabel","itemRendererFn","Array","isArray","titleItem","spacingUtils","detailsPanel","metaData","_ref$linear","linear","metaKeys","renderItem","metadataLinear","container","marginBottom","Table","table","TableBody","TableRow","TableCell","component","scope","align","months","days","from","num","currentYear","getFullYear","years","numYear","DateSelector","forwardRef","ref","_ref$disableOptions","disableOptions","_ref$addSwitch","addSwitch","_ref$tooltip","_ref$borderBottom","borderBottom","onDateChange","_ref$value","useImperativeHandle","resetDate","dateEnabled","setDateEnabled","month","setMonth","_useState5","_useState6","day","setDay","_useState7","_useState8","year","setYear","valueSplit","parseInt","_validDate","currentDate","parse","isNaN","parsedMonth","parsedDay","monthForString","dayForString","parsedDate","toISOString","dateString","validDate","_validDate2","isValid","isDateDisabled","monthForDropDown","daysForDrop","yearsForDrop","clsx","fieldContainer","_defineProperty","fieldContainerBorder","labelContainer","InputLabel","htmlFor","tooltipContainer","placement","HelpIcon","Switch","indicatorLabels","checked","switchOnly","gap","newValue","fieldBasic","tooltipHelper","justifyContent","paddingBottom","formFieldStyles","closeModalAndRefresh","objectInfo","retentionConfig","statusEnabled","setStatusEnabled","setType","date","setDate","isDateValid","setIsDateValid","_useState9","_useState10","isSaving","setIsSaving","_useState11","_useState12","alreadyConfigured","setAlreadyConfigured","retention_mode","mode","ObjectRetentionMode","Governance","retention_until_date","valueDate","getMonth","getDate","dateElement","useRef","resetForm","current","showSwitcher","spacerBottom","noValidate","autoComplete","onSubmit","preventDefault","formFieldRow","RadioGroup","currentValue","selectorOptions","Compliance","dateSelector","selectedObject","versionId","expireDate","buckets","putObjectRetention","expires","setModalErrorSnackMessage","addRetention","deleteObjectRetention","disableRetention","closeDeleteModalAndRefresh","deleteOpen","selectedBucket","versioningInfo","_ref$selectedVersion","selectedVersion","_useApi","useApi","detailedError","_useApi2","deleteLoading","invokeDeleteApi","deleteVersions","setDeleteVersions","bypassGovernance","setBypassGovernance","canBypass","S3_BYPASS_GOVERNANCE_RETENTION","ConfirmDialog","confirmText","isOpen","ConfirmDeleteIcon","isLoading","onConfirm","recursive","decodeURLString","confirmationContent","description","actualInfo","legalHoldEnabled","setLegalHoldEnabled","get","putObjectLegalHold","ObjectLegalHoldStatus","Enabled","Disabled","newTileHeader","fontSize","fontWeight","tagsForLabel","currentTagsContainer","noTagsForObject","deleteTag","_actualInfo$name","onCloseAndUpdate","distributedSetup","selDistSet","newKey","setNewKey","newLabel","setNewLabel","isSending","setIsSending","deleteEnabled","setDeleteEnabled","deleteKey","setDeleteKey","deleteLabel","setDeleteLabel","currentTags","tags","currTagKeys","allPathData","currentItem","pop","tagsFor","plural","DisabledIcon","EditTagIcon","cleanObject","verID","putObjectTags","SecureComponent","S3_GET_OBJECT_TAGGING","S3_GET_ACTIONS","resource","flexFlow","tagKey","tag","S3_DELETE_OBJECT_TAGGING","errorProps","deleteIcon","onDelete","Chip","textTransform","CloseIcon","onDeleteTag","S3_PUT_OBJECT_TAGGING","SectionTitle","AddNewTagIcon","separator","newTag","newTagList","closeInspectModalAndRefresh","inspectOpen","inspectPath","volumeName","isEncrypt","setIsEncrypt","decryptionKey","setDecryptionKey","insFileName","setInsFileName","makeRequest","url","fetch","method","sent","performInspect","file","volume","urlOfInspectApi","resErr","blob","filename","decryptKey","ok","json","message","code","headers","getCookieValue","performDownload","InspectMenuIcon","deleteCookie","PasswordKeyIcon","DialogContentText","KeyRevealer","containerForHeader","closeModal","newFileName","setNewFileName","acceptLongName","setAcceptLongName","EditIcon","doDownload","modalFormScrollable","InputBoxWrapper","FormSwitchWrapper","emptyFile","is_latest","last_modified","legal_hold_status","locking","onClosePanel","loadingObjectInfo","shareFileModalOpen","retentionModalOpen","setRetentionModalOpen","tagModalOpen","setTagModalOpen","legalholdOpen","setLegalholdOpen","inspectModalOpen","setInspectModalOpen","setActualInfo","_useState13","_useState14","allInfoElements","setAllInfoElements","_useState15","_useState16","objectToShare","setObjectToShare","_useState17","_useState18","versions","setVersions","_useState19","_useState20","setDeleteOpen","_useState21","_useState22","previewOpen","_useState23","_useState24","totalVersionsSize","setTotalVersionsSize","_useState25","_useState26","longFileOpen","_useState27","_useState28","setMetaData","_useState29","_useState30","loadMetadata","setLoadingMetadata","objectNameArray","infoElement","el","is_delete_marker","listObjects","with_versions","result","data","objects","tVersionSize","resInfo","setLoadingObjectInfo","getObjectMetadata","metadata","tagKeys","loaderForContainer","textAlign","Loader","objectResources","canSetLegalHold","S3_PUT_OBJECT_LEGAL_HOLD","canSetTags","canChangeRetention","S3_GET_OBJECT_RETENTION","S3_PUT_OBJECT_RETENTION","canInspect","ADMIN_INSPECT_DATA","canChangeVersioning","S3_GET_BUCKET_VERSIONING","S3_PUT_BUCKET_VERSIONING","S3_GET_OBJECT_VERSION","canGetObject","S3_GET_OBJECT","canDelete","S3_DELETE_OBJECT","objectType","previewObjectType","multiActionButtons","action","DownloadIcon","ShareIcon","PreviewIcon","LegalHoldIcon","RetentionIcon","TagsIcon","VersionsIcon","ShareFile","dataObject","SetRetention","updateInfo","DeleteObject","closeAndReload","setLoadingVersions","setSelectedVersion","SetLegalHoldModal","reload","PreviewFileModal","content_type","onClosePreview","TagsModal","reloadObjectData","InspectObject","RenameLongFileName","ActionsList","items","DeleteIcon","iconLocation","fullWidth","SimpleHeader","ObjectInfoIcon","overflowWrap","niceBytes","niceBytesInt","lastModified","currentTime","modifiedTime","difTime","formatTime","niceDaysInt","calculateLastModifyTime","etag","S3_GET_OBJECT_LEGAL_HOLD","MetadataIcon","ObjectMetaData","modalBasic","versionToRestore","objectPath","restoreOpen","restoreLoading","setRestoreLoading","RecoverIcon","putObjectRestore","restoreLocalObjectList","confirmButtonProps","wrapText","bgColor","checkboxIcons","flexBasis","flexWrap","noTopMargin","_ref$checked","_ref$disabled","_ref$noTopMargin","_ref$overrideLabelCla","overrideLabelClasses","overrideCheckboxStyles","Checkbox","inputProps","checkedIcon","unCheckedIcon","disableRipple","disableFocusRipple","focusRipple","centerRipple","disableTouchRipple","noMinWidthLabel","FileVersionStyled","styled","div","content","left","borderBottomColor","maxWidth","flexDirection","versionInfo","isSelected","checkable","isChecked","onCheck","onShare","onDownload","onRestore","onPreview","globalClick","key","disableButtons","versionItemButtons","pill","fromISO","md","CheckboxWrapper","stopPropagation","paddingLeft","SpecificVersionPill","button","IconButton","setDeleteLoading","typeConfirm","setTypeConfirm","deleteObject","non_current_versions","bypass","selectedVersions","selectedObjectsRequest","versionID","deleteMultipleObjects","all_versions","versionsContainer","noBottomBorder","versionsVirtualPanel","flexGrow","screenTitleContainer","sortByLabel","actionsTray","tableStyles","textStyleUtils","objectBrowserExtras","searchVersions","loadingVersions","restoreVersionOpen","setRestoreVersionOpen","restoreVersion","setRestoreVersion","sortValue","setSortValue","deleteNonCurrentOpen","setDeleteNonCurrentOpen","selectEnabled","setSelectEnabled","selectedItems","setSelectedItems","delSelectedVOpen","setDelSelectedVOpen","decodedInternalPaths","filteredPrefixes","onShareItem","onPreviewItem","onRestoreItem","onDownloadItem","onGlobalClick","filteredRecords","version","totalSpace","sort","a","b","dateA","dateB","onCheckVersion","filteredItems","cloneState","RestoreFileVersion","DeleteNonCurrent","reloadAfterDelete","DeleteSelectedVersions","reloadOnComplete","ProgressBar","BrowserBreadcrumbs","ScreenTitle","listIcon","subTitle","detailsSpacer","actions","SelectMultipleIcon","DeleteNonCurrentIcon","noLabelMinWidth","bottomBorder","List","containerStyle","rowCount","rowHeight","rowRenderer","isScrolling","isVisible","versOrd","FileVersionItem","displayParsedDate","currTime","objectTime","hasSame","displayNiceBytes","String","listModeColumns","elementKey","renderFunction","enableSort","renderFullObject","rewindModeColumns","browsePaper","parentWrapper","backgroundImage","params","useParams","sortDirection","setSortDirection","currentSortField","setCurrentSortField","detailsOpen","objectDetailsOpen","requestInProgress","features","selFeatures","obOnly","searchObjects","connectionError","displayListObjects","S3_LIST_BUCKET","S3_ALL_LIST_BUCKET","sortASC","sortListObjects","payload","reverse","tableActions","idElement","newPath","setSelectedObjects","setObjectDetailsView","setSelectedObjectView","sendOnlyId","customPaperHeight","DataTable","itemActions","columns","entityName","idField","onSelect","targetD","elements","customEmptyMessage","sortConfig","currentSort","currentDirection","triggerSort","sortData","newSortDirection","sortBy","setReloadObjectsList","onSelectAll","rowStyle","_payload$index","parentClassName","noBackground","SearchBox","setSearchObjects","DeleteMultipleObjects","RewindEnable","baseDnDStyle","outline","activeDnDStyle","acceptDnDStyle","_downloadRenameModal$","location","useLocation","bucketToRewind","showDeleted","selectedInternalPaths","simplePath","versioningConfig","lockingEnabled","downloadRenameModal","selectedPreview","anonymousAccessOpen","loadingBucket","selBucketDetailsLoading","bucketInfo","selBucketDetailsInfo","deleteMultipleOpen","setDeleteMultipleOpen","rewindSelect","setRewindSelect","iniLoad","setIniLoad","canShareFile","setCanShareFile","canPreviewFile","setCanPreviewFile","quota","setQuota","isMetaDataLoaded","setIsMetaDataLoaded","isVersioningApplied","pathSegment","pathname","pageTitle","currentPath","i","fileUpload","folderUpload","pathAsResourceInPolicy","allowedFileExtensions","cv","extension","Set","getPolicyAllowedFileExtensions","canDownload","canUpload","canSetAnonymousAccess","S3_GET_BUCKET_POLICY","S3_PUT_BUCKET_POLICY","fetchMetadata","useCallback","encodedPath","resetRewind","setAttribute","getBucketQuota","quotaVals","detailedMessage","setBucketDetailsLoad","setBucketInfo","getBucketRetentionConfig","setRetentionConfig","handleUploadButton","files","newFiles","uploadObject","folderPath","pathPrefix","uploadPromise","Promise","resolve","reject","uploadUrl","blobFile","Blob","filePath","fileWebkitRelativePath","relativeFolderPath","finalFolderPath","pathClean","startsWith","identity","xhr","XMLHttpRequest","setRequestHeader","areMultipleFiles","errorMessages","withCredentials","onload","removeTrace","response","JSON","upload","addEventListener","floor","loaded","total","onerror","onloadend","onabort","formData","FormData","append","storeFormDataWithID","uploadFilePromises","openList","allSettled","results","errors","totalFiles","successUploadedFiles","onDrop","acceptedFiles","_console","_console2","newFolderPath","allowedFiles","fileExtn","_useDropzone","useDropzone","noClick","getRootProps","getInputProps","isDragActive","isDragAccept","dndStyles","useMemo","forceRefresh","splitURLS","URLItem","createdTime","creation_date","downloadToolTip","AccessRuleIcon","refresh","versioning","AddAccessRule","PageLayout","FilterObjectsSB","BucketsIcon","Badge","badgeContent","invisible","HistoryIcon","RefreshIcon","resetMessages","multiple","accept","UploadFilesButton","closeMenu","click","borderTop","VersionsNavigator","setShowDeletedObjects","ListObjectsTable","DetailsListPanel","ObjectDetailPanel","configureBucketAllowed","S3_GET_BUCKET_ENCRYPTION_CONFIGURATION","S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION","S3_DELETE_BUCKET","S3_GET_BUCKET_NOTIFICATIONS","S3_PUT_BUCKET_NOTIFICATIONS","S3_GET_REPLICATION_CONFIGURATION","S3_PUT_REPLICATION_CONFIGURATION","S3_GET_LIFECYCLE_CONFIGURATION","S3_PUT_LIFECYCLE_CONFIGURATION","ADMIN_GET_BUCKET_QUOTA","ADMIN_SET_BUCKET_QUOTA","S3_PUT_BUCKET_TAGGING","S3_GET_BUCKET_TAGGING","S3_LIST_BUCKET_VERSIONS","S3_GET_BUCKET_POLICY_STATUS","S3_DELETE_BUCKET_POLICY","searchBar","setSearchVersions","setHelpName","AutoColorIcon","ObjectManagerButton","PageHeaderWrapper","BackLink","IAM_PAGES","OBJECT_BROWSER_VIEW","IAM_PERMISSIONS","IAM_ROLES","BUCKET_ADMIN","SettingsIcon","HelpMenu","middleComponent","loadingVersioning","rewindDate","dateToRewind","loadingLocking","reloadObjectsList","initWSRequest","rewindMode","pathLoad","forceLoad","searchPath","setRequestInProgress","decodedIPaths","setLoadingVersioning","setLoadingLocking","getBucketVersioning","setIsVersioned","getBucketObjectLockingStatus","setLockingEnabled","object_locking_enabled","OBHeader","ListObjects","durationInputs","validityIndicator","invalidDurationText","reverseInput","validityText","validTill","initialDate","maxDays","entity","selectedDays","setSelectedDays","selectedHours","setSelectedHours","selectedMinutes","setSelectedMinutes","setValidDate","dateSelected","setDateSelected","hours","minutes","fromJSDate","plus","calculateNewTime","formattedDate","valid","extraStyles","paddingRight","dateInputContainer","min","max","LinkIcon","validityLabel","shareURL","setShareURL","isLoadingVersion","setIsLoadingVersion","isLoadingFile","setIsLoadingFile","selectedDate","setSelectedDate","dateValid","setDateValid","setVersionID","latestVersion","elem","slDate","currDate","diffDate","ceil","shareObject","DaysSelector","newDate","ReadBox","actionButton","setModalSnackMessage","iframeContainer","flex","iframeBase","iframeHidden","_ref$isFullscreen","isFullscreen","loading","setLoading","basename","document","baseURI","replace","window","origin","iframeLoaded","maxHeight","autoPlay","controls","muted","playsInline","onPlay","src","alt","onLoad","WarningMessage","allowTransparency","wideLimit","ObjectPreviewIcon","PreviewFileContent","WrappedComponent","fallback","props","Suspense","StyledSwitch","root","switchBase","transform","palette","common","white","boxShadow","thumb","track","transition","transitions","create","focusVisible","switchContainer","indicatorLabelOn","indicatorLabel","fieldDescription","_ref$label","_ref$switchOnly","_ref$description","_ref$extraInputProps","extraInputProps","switchComponent","sm","inputLabel","Typography","inputStyles","inputFieldStyles","InputField","TextField","InputProps","textBoxContainer","overlayAction","_ref$type","_ref$autoComplete","_ref$multiline","multiline","_ref$index","_ref$error","_ref$required","required","_ref$placeholder","overlayId","_ref$overlayIcon","overlayIcon","_ref$overlayObject","overlayObject","_ref$noLabelMinWidth","_ref$pattern","pattern","_ref$autoFocus","autoFocus","onKeyPress","onFocus","onPaste","toggleTextInput","setToggleTextInput","inputBoxWrapperIcon","inputBoxWrapperType","VisibilityOffIcon","RemoveRedEyeIcon","errorInField","inputBoxContainer","helperText","inputRebase","headerContainer","labelHeadline","labelText","shown","setShown","readOnly","navigator","clipboard","writeText"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/8270.cfbcb443.chunk.js b/portal-ui/build/static/js/8270.cfbcb443.chunk.js deleted file mode 100644 index 6b2afe9eb7..0000000000 --- a/portal-ui/build/static/js/8270.cfbcb443.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[8270,4619],{94619:function(e,n,t){t.r(n);var i=t(29439),o=t(72791),r=t(56028),a=t(29945),s=t(31776),c=t(82342),l=t(23814),d=t(87995),u=t(81551),f=t(80184);n.default=function(e){var n=e.modalOpen,t=e.onClose,h=e.bucket,m=e.prefilledRoute,p=(0,u.TL)(),x=(0,o.useState)(""),b=(0,i.Z)(x,2),v=b[0],j=b[1],g=(0,o.useState)("readonly"),_=(0,i.Z)(g,2),S=_[0],w=_[1];(0,o.useEffect)((function(){m&&j(m)}),[m]);return(0,f.jsx)(r.Z,{modalOpen:n,title:"Add Anonymous Access Rule",onClose:t,titleIcon:(0,f.jsx)(a.sR0,{}),children:(0,f.jsxs)(a.ltY,{withBorders:!1,containerPadding:!1,children:[(0,f.jsx)(a.Wzg,{value:v,label:"Prefix",id:"prefix",name:"prefix",placeholder:"Enter Prefix",onChange:function(e){j(e.target.value)},tooltip:"Enter '/' to apply the rule to all prefixes and objects at the bucket root. Do not include the wildcard asterisk '*' as part of the prefix *unless* it is an explicit part of the prefix name. The Console automatically appends an asterisk to the appropriate sections of the resulting IAM policy."}),(0,f.jsx)(a.PhF,{id:"access",name:"Access",onChange:function(e){w(e)},label:"Access",value:S,options:[{label:"readonly",value:"readonly"},{label:"writeonly",value:"writeonly"},{label:"readwrite",value:"readwrite"}],disabled:!1}),(0,f.jsxs)(a.rjZ,{item:!0,xs:12,sx:l.ID.modalButtonBar,children:[(0,f.jsx)(a.zxk,{id:"clear",type:"button",variant:"regular",onClick:function(){j(""),w("readonly")},label:"Clear"}),(0,f.jsx)(a.zxk,{id:"add-access-save",type:"submit",variant:"callAction",disabled:""===v.trim(),onClick:function(){s.h.bucket.setAccessRuleWithBucket(h,{prefix:v,access:S}).then((function(e){p((0,d.y1)("Access Rule added successfully")),t()})).catch((function(e){p((0,d.Ih)((0,c.g)(e.error))),t()}))},label:"Save"})]})]})})}},98270:function(e,n,t){t.r(n),t.d(n,{default:function(){return Pn}});var i,o=t(1413),r=t(72791),a=t(78687),s=t(57689),c=t(11135),l=t(25787),d=t(81551),u=t(23814),f=t(93433),h=t(29439),m=t(43954),p=t(29945),x=t(99779),b=t(61889),v=t(26181),j=t.n(v),g=t(45248),_=t(29472),S=t(78029),w=t.n(S),C=t(72455),Z=t(11087),T=t(38442),y=t(56087),N=t(75578),F=t(87995),E=t(54756),O=function(e){return(e.match(/\.([^.]*?)(?=\?|#|$)/)||[])[1]},I=function(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],i=Object.keys(e).reduce((function(t,i){return O(i)&&i.includes(n)&&(t[i]=e[i]),t}),{});return Object.keys(i).filter((function(e){var o=i[e].some((function(e){return t.find((function(n){var t=!1;if(-1!==n.indexOf("*")){var i=n.substring(0,n.length-1);t=e.includes(i)}return t||e===n}))})),r=e.substring(0,e.indexOf("/*."))==="arn:aws:s3:::".concat(n);return o&&(r&&"arn:aws:s3:::*"!==e)}))},k=t(80184),L=(0,N.Z)(r.lazy((function(){return t.e(2185).then(t.bind(t,62185))}))),B=(0,C.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)({},u.cx),{},{slashSpacingStyle:{margin:"0 5px"}}))})),P=function(e){var n=e.bucketName,t=e.internalPaths,i=e.hidePathButton,o=e.additionalOptions,c=(0,d.TL)(),l=(0,s.s0)(),u=B(),m=(0,a.v9)((function(e){return e.objectBrowser.rewind.rewindEnabled})),x=(0,a.v9)((function(e){return e.objectBrowser.versionsMode})),b=(0,a.v9)((function(e){return e.objectBrowser.versionedFile})),v=(0,a.v9)((function(e){return e.system.anonymousMode})),j=(0,r.useState)(!1),_=(0,h.Z)(j,2),S=_[0],C=_[1],N=[y.Ft.S3_PUT_OBJECT,y.Ft.S3_PUT_ACTIONS],O=(0,a.v9)((function(e){return e.console.session&&e.console.session.permissions||{}})),P=t;""!==t&&(P="/".concat(t));var A=P.split("/").filter((function(e){return""!==e})),D=A.length-1,R=n+P||n,M=I(O,R,N),U=(0,T.F)([R].concat((0,f.Z)(M)),N)||v,z=A.map((function(e,t){var i="".concat(A.slice(0,t+1).join("/"),"/"),o="/browser/".concat(n,"/").concat(i?"".concat((0,g.LL)(i)):"");return t===D&&e===b?null:(0,k.jsxs)(r.Fragment,{children:[(0,k.jsx)("span",{className:u.slashSpacingStyle,children:"/"}),t===D?(0,k.jsx)("span",{style:{cursor:"default",whiteSpace:"pre"},children:(0,g.eC)(e)}):(0,k.jsx)(Z.rU,{style:{whiteSpace:"pre"},to:o,onClick:function(){c((0,E.db)({status:!1,objectName:""}))},children:(0,g.eC)(e)})]},"breadcrumbs-".concat(t.toString()))})),G=[];x&&(G=[(0,k.jsx)(r.Fragment,{children:(0,k.jsxs)("span",{children:[(0,k.jsx)("span",{className:u.slashSpacingStyle,children:"/"}),b," - Versions"]})},"breadcrumbs-versionedItem")]);var W=[(0,k.jsx)(r.Fragment,{children:(0,k.jsx)(Z.rU,{to:"/browser/".concat(n),onClick:function(){c((0,E.db)({status:!1,objectName:""}))},children:n})},"breadcrumbs-root-path")].concat((0,f.Z)(z),(0,f.Z)(G));return(0,k.jsxs)(r.Fragment,{children:[(0,k.jsxs)("div",{className:u.breadcrumbsMain,children:[S&&(0,k.jsx)(L,{modalOpen:S,bucketName:n,folderName:t,onClose:function(){C(!1)}}),(0,k.jsx)(p.OoM,{sx:{whiteSpace:"pre"},goBackFunction:function(){if(x)c((0,E.db)({status:!1,objectName:""}));else{if(0===A.length)return void l("/browser");var e=A.slice(0,-1);l("/browser/".concat(n).concat(e.length>0?"/".concat((0,g.LL)("".concat(e.join("/"),"/"))):""))}},additionalOptions:(0,k.jsxs)(r.Fragment,{children:[(0,k.jsx)(w(),{text:"".concat(n,"/").concat(A.join("/")),children:(0,k.jsx)(p.zxk,{id:"copy-path",icon:(0,k.jsx)(p.TIy,{style:{width:"12px",height:"12px",fill:"#969FA8",marginTop:-1}}),variant:"regular",onClick:function(){c((0,F.y1)("Path copied to clipboard"))},style:{width:"28px",height:"28px",color:"#969FA8",border:"#969FA8 1px solid",marginRight:5}})}),(0,k.jsx)("div",{className:u.additionalOptions,children:o})]}),children:W}),!i&&(0,k.jsx)(p.ua7,{tooltip:U?"Choose or create a new path":(0,y.MK)([y.Ft.S3_PUT_OBJECT,y.Ft.S3_PUT_ACTIONS],"create a new path"),children:(0,k.jsx)(p.zxk,{id:"new-path",onClick:function(){C(!0)},disabled:!v&&(m||!U),icon:(0,k.jsx)(p.N$q,{style:{fill:"#969FA8"}}),style:{whiteSpace:"nowrap"},variant:"regular",label:"Create new path"})})]}),(0,k.jsx)("div",{className:u.breadcrumbsSecond,children:o})]})},A=t(47922),D=t(80911),R=t(77865),M=t(49900),U=t(57064),z=t(27454),G=(0,l.Z)((function(e){return(0,c.Z)({listUploadIcons:{height:20,"& .min-icon":{width:18,fill:"rgba(0,0,0,0.87)"}}})}))((function(e){var n=e.uploadPath,t=e.bucketName,i=e.forceDisable,o=void 0!==i&&i,s=e.uploadFileFunction,c=e.uploadFolderFunction,l=e.classes,d=e.overrideStyles,u=void 0===d?{}:d,m=(0,a.v9)((function(e){return e.system.anonymousMode})),x=(0,a.v9)((function(e){return e.console.session&&e.console.session.permissions||{}})),b=[y.Ft.S3_PUT_OBJECT,y.Ft.S3_PUT_ACTIONS],v=I(x,n,b),j=(0,r.useState)(null),g=(0,h.Z)(j,2),_=g[0],S=g[1],w=Boolean(_),C=function(){S(null)},Z=(0,T.F)([n].concat((0,f.Z)(v)),b)||m,N=(0,T.F)([t].concat((0,f.Z)(v)),b,!1,!0),F=Z||N;return(0,k.jsxs)(r.Fragment,{children:[(0,k.jsx)(z.Z,{tooltip:F?"Upload Files":(0,y.MK)([y.Ft.S3_PUT_OBJECT,y.Ft.S3_PUT_ACTIONS],"upload files to this bucket"),children:(0,k.jsx)(p.zxk,{id:"upload-main","aria-controls":"upload-main-menu","aria-haspopup":"true","aria-expanded":w?"true":void 0,onClick:function(e){S(e.currentTarget)},label:"Upload",icon:(0,k.jsx)(p.rG2,{}),variant:"callAction",disabled:o||!F,sx:u})}),(0,k.jsxs)(D.Z,{id:"upload-main-menu","aria-labelledby":"upload-main",anchorEl:_,open:w,onClose:function(){C()},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},children:[(0,k.jsxs)(R.Z,{onClick:function(){s(C)},disabled:!Z||o,children:[(0,k.jsx)(U.Z,{className:l.listUploadIcons,children:(0,k.jsx)(p.rG2,{})}),(0,k.jsx)(M.Z,{children:"Upload File"})]}),(0,k.jsxs)(R.Z,{onClick:function(){c(C)},disabled:!N||o,children:[(0,k.jsx)(U.Z,{className:l.listUploadIcons,children:(0,k.jsx)(p.oXh,{})}),(0,k.jsx)(M.Z,{children:"Upload Folder"})]})]})]})})),W=(0,C.Z)((function(e){return(0,c.Z)({detailsList:{borderColor:"#EAEDEE",borderWidth:0,borderStyle:"solid",borderRadius:3,borderBottomLeftRadius:0,borderBottomRightRadius:0,width:0,transitionDuration:"0.3s",overflowX:"hidden",overflowY:"auto",position:"relative",opacity:0,marginLeft:-1,"&.open":{width:300,minWidth:300,borderLeftWidth:1,opacity:1},"@media (max-width: 799px)":{"&.open":{width:"100%",minWidth:"100%",borderLeftWidth:0}}}})})),K=function(e){var n=e.open,t=e.closePanel,i=e.className,o=void 0===i?"":i,r=e.children,a=W();return(0,k.jsxs)(p.rjZ,{item:!0,className:"".concat(a.detailsList," ").concat(n?"open":""," ").concat(o),children:[(0,k.jsx)(p.zxk,{variant:"text",id:"close-details-list",onClick:t,icon:(0,k.jsx)(p.oto,{}),sx:{position:"absolute",right:5,top:18,padding:0,height:14,"&:hover:not(:disabled)":{backgroundColor:"transparent"}}}),r]})},H=t(64554),V=t(34433),J=[{value:"01",label:"January"},{value:"02",label:"February"},{value:"03",label:"March"},{value:"04",label:"April"},{value:"05",label:"May"},{value:"06",label:"June"},{value:"07",label:"July"},{value:"08",label:"August"},{value:"09",label:"September"},{value:"10",label:"October"},{value:"11",label:"November"},{value:"12",label:"December"}],Y=Array.from(Array(31),(function(e,n){return{value:(n+1).toString(),label:(n+1).toString()}})),q=(new Date).getFullYear(),$=Array.from(Array(50),(function(e,n){return{value:(n+q).toString(),label:(n+q).toString()}})),X=t(56028),Q=t(4942),ee=t(63733),ne=(0,r.forwardRef)((function(e,n){var t=e.classes,i=e.id,o=e.label,a=e.disableOptions,s=void 0!==a&&a,c=e.addSwitch,l=void 0!==c&&c,d=e.tooltip,u=void 0===d?"":d,m=e.borderBottom,x=void 0!==m&&m,b=e.onDateChange,v=e.value,j=void 0===v?"":v;(0,r.useImperativeHandle)(n,(function(){return{resetDate:A}}));var g=(0,r.useState)(!1),_=(0,h.Z)(g,2),S=_[0],w=_[1],C=(0,r.useState)(""),Z=(0,h.Z)(C,2),T=Z[0],y=Z[1],N=(0,r.useState)(""),F=(0,h.Z)(N,2),E=F[0],O=F[1],I=(0,r.useState)(""),L=(0,h.Z)(I,2),B=L[0],P=L[1];(0,r.useEffect)((function(){if(""!==j){var e=j.split("-");P(e[0]),y(e[1]),O("".concat(parseInt(e[2])))}}),[j]),(0,r.useEffect)((function(){var e=function(e,n,t){var i=Date.parse("".concat(e,"-").concat(n,"-").concat(t));if(isNaN(i))return[!1,""];var o=parseInt(n),r=parseInt(t),a=o<10?"0".concat(o):o,s=r<10?"0".concat(r):r,c=new Date(i).toISOString().split("T")[0],l="".concat(e,"-").concat(a,"-").concat(s);return[c===l,l]}(B,T,E),n=(0,h.Z)(e,2),t=n[0],i=n[1];b(i,t)}),[T,E,B,b]);var A=function(){y(""),O(""),P("")},D=function(){return s||!!l&&!S},R=[{value:"",label:""}].concat((0,f.Z)(J)),M=[{value:"",label:""}].concat((0,f.Z)(Y)),U=[{value:"",label:""}].concat((0,f.Z)($));return(0,k.jsxs)(p.rjZ,{item:!0,xs:12,className:(0,ee.Z)(t.fieldContainer,(0,Q.Z)({},t.fieldContainerBorder,x)),children:[(0,k.jsx)("div",{className:t.labelContainer,children:(0,k.jsxs)(p.rjZ,{container:!0,children:[(0,k.jsxs)(p.AZs,{htmlFor:i,children:[(0,k.jsx)("span",{children:o}),""!==u&&(0,k.jsx)("div",{className:t.tooltipContainer,children:(0,k.jsx)(p.ua7,{tooltip:u,placement:"top",children:(0,k.jsx)("div",{className:t.tooltip,children:(0,k.jsx)(p.byK,{})})})})]}),l&&(0,k.jsx)(p.rsf,{indicatorLabels:["Specific Date","Default (7 Days)"],checked:S,value:"date_enabled",id:"date-status",name:"date-status",onChange:function(e){w(e.target.checked),e.target.checked||b("",!0)},switchOnly:!0})]})}),(0,k.jsxs)(p.xuv,{sx:{display:"flex",gap:12},children:[(0,k.jsx)(p.PhF,{id:"".concat(i,"-month"),name:"".concat(i,"-month"),value:T,onChange:function(e){y(e)},options:R,label:"",disabled:D()}),(0,k.jsx)(p.PhF,{id:"".concat(i,"-day"),name:"".concat(i,"-day"),value:E,onChange:function(e){O(e)},options:M,label:"",disabled:D()}),(0,k.jsx)(p.PhF,{id:"".concat(i,"-year"),name:"".concat(i,"-year"),value:B,onChange:function(e){P(e)},options:U,label:"",disabled:D()})]})]})})),te=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},u.YI),u.Hr),{},{fieldContainer:(0,o.Z)((0,o.Z)({},u.YI.fieldContainer),{},{display:"flex",alignItems:"center",justifyContent:"space-between",paddingBottom:10,marginTop:11,marginBottom:6})}))}))(ne),ie=t(66315),oe=t(31776),re=t(82342),ae=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},u.DF),u.ID),u.bK))}))((function(e){var n=e.classes,t=e.open,i=e.closeModalAndRefresh,o=e.objectName,s=e.objectInfo,c=e.bucketName,l=(0,d.TL)(),u=(0,a.v9)((function(e){return e.objectBrowser.retentionConfig})),f=(0,r.useState)(!0),m=(0,h.Z)(f,2),x=m[0],b=m[1],v=(0,r.useState)(""),j=(0,h.Z)(v,2),_=j[0],S=j[1],w=(0,r.useState)(""),C=(0,h.Z)(w,2),Z=C[0],T=C[1],y=(0,r.useState)(!1),N=(0,h.Z)(y,2),E=N[0],O=N[1],I=(0,r.useState)(!1),L=(0,h.Z)(I,2),B=L[0],P=L[1],A=(0,r.useState)(!1),D=(0,h.Z)(A,2),R=D[0],M=D[1];(0,r.useEffect)((function(){if(s.retention_mode&&(S((null===u||void 0===u?void 0:u.mode)||ie.oO.Governance),M(!0)),s.retention_until_date){var e=new Date(s.retention_until_date);if("Invalid Date"!==e.toString()){var n=e.getFullYear(),t=(o=e.getMonth()+1)<10?"0".concat(o):"".concat(o),i=e.getDate();isNaN(i)||"NaN"===t||isNaN(n)||T("".concat(n,"-").concat(t,"-").concat(i))}M(!0)}var o}),[s,null===u||void 0===u?void 0:u.mode]);var U=(0,r.useRef)(null),z=function(){b(!1),S(ie.oO.Governance),U.current&&U.current.resetDate()},G=R&&("governance"===_||""===_);return(0,k.jsxs)(X.Z,{title:"Set Retention Policy",modalOpen:t,onClose:function(){z(),i(!1)},children:[(0,k.jsxs)("div",{className:n.spacerBottom,children:[(0,k.jsx)("strong",{children:"Selected Object"}),": ",o]}),(0,k.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){e.preventDefault()}(e)},children:[G&&(0,k.jsx)(p.rjZ,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(p.rsf,{value:"status",id:"status",name:"status",checked:x,onChange:function(e){b(!x)},label:"Status",indicatorLabels:["Enabled","Disabled"]})}),(0,k.jsx)(p.rjZ,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(p.Eep,{currentValue:_,id:"type",name:"type",label:"Type",disableOptions:!x||R&&""!==_,onChange:function(e){S(e.target.value)},selectorOptions:[{label:"Governance",value:ie.oO.Governance},{label:"Compliance",value:ie.oO.Compliance}]})}),(0,k.jsx)(p.rjZ,{item:!0,xs:12,className:"".concat(n.dateSelector," "),children:(0,k.jsx)(te,{id:"date",label:"Date",disableOptions:!(x&&("governance"===_||"compliance"===_)),ref:U,value:Z,borderBottom:!0,onDateChange:function(e,n){O(n),n&&T(e)}})}),(0,k.jsxs)(p.rjZ,{item:!0,xs:12,className:n.modalButtonBar,children:[(0,k.jsx)(p.zxk,{id:"reset",type:"button",variant:"regular",onClick:z,label:"Reset"}),(0,k.jsx)(p.zxk,{id:"save",type:"submit",variant:"callAction",disabled:x&&""===_||x&&!E||B,onClick:function(){P(!0);var e=s.name||"",n=s.version_id||null,t=x||"governance"!==_?"".concat(Z,"T23:59:59Z"):"";x||"governance"!==_?function(e,n,t){oe.h.buckets.putObjectRetention(c,{prefix:(0,g.LL)(e),version_id:n||""},{expires:t,mode:_}).then((function(){P(!1),i(!0)})).catch((function(e){l((0,F.zb)((0,re.g)(e.error))),P(!1)}))}(e,n,t):function(e,n){oe.h.buckets.deleteObjectRetention(c,{prefix:(0,g.LL)(e),version_id:n||""}).then((function(){P(!1),i(!0)})).catch((function(e){l((0,F.zb)((0,re.g)(e.error))),P(!1)}))}(e,n)},label:"Save"})]})]})]})})),se=t(23508),ce=t(9505),le=function(e){return"Enabled"===e||"Suspended"===e},de=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,i=e.selectedBucket,o=e.selectedObject,s=e.versioningInfo,c=e.selectedVersion,l=void 0===c?"":c,u=(0,d.TL)(),f=(0,ce.Z)((function(){return n(!0)}),(function(e){u((0,F.Ih)(e)),"Access Denied."===e.detailedError&&n(!0)})),m=(0,h.Z)(f,2),x=m[0],b=m[1],v=(0,r.useState)(!1),j=(0,h.Z)(v,2),_=j[0],S=j[1],w=(0,r.useState)(!1),C=(0,h.Z)(w,2),Z=C[0],N=C[1],E=(0,a.v9)((function(e){return e.objectBrowser.retentionConfig})),O=(0,T.F)([i],[y.Ft.S3_BYPASS_GOVERNANCE_RETENTION])&&"governance"===(null===E||void 0===E?void 0:E.mode);if(!o)return null;return(0,k.jsx)(se.Z,{title:"Delete Object",confirmText:"Delete",isOpen:t,titleIcon:(0,k.jsx)(p.NvT,{}),isLoading:x,onConfirm:function(){var e=(0,g.IO)(o).endsWith("/");b("DELETE","/api/v1/buckets/".concat(i,"/objects?path=").concat(o).concat(""!==l?"&version_id=".concat(l):"&recursive=".concat(e,"&all_versions=").concat(_)).concat(Z?"&bypass=true":""))},onClose:function(){return n(!1)},confirmationContent:(0,k.jsxs)(r.Fragment,{children:["Are you sure you want to delete: ",(0,k.jsx)("br",{}),(0,k.jsx)("b",{children:(0,g.IO)(o)})," ",""!==l?(0,k.jsxs)(r.Fragment,{children:[(0,k.jsx)("br",{}),(0,k.jsx)("br",{}),"Version ID:",(0,k.jsx)("br",{}),(0,k.jsx)("strong",{children:l})]}):"","? ",(0,k.jsx)("br",{}),(0,k.jsx)("br",{}),le(null===s||void 0===s?void 0:s.status)&&""===l&&(0,k.jsx)(r.Fragment,{children:(0,k.jsx)(p.rsf,{label:"Delete All Versions",indicatorLabels:["Yes","No"],checked:_,value:"delete_versions",id:"delete-versions",name:"delete-versions",onChange:function(e){S(!_)},description:""})}),O&&(_||""!==l)&&(0,k.jsx)(r.Fragment,{children:(0,k.jsx)("div",{style:{marginTop:10},children:(0,k.jsx)(p.rsf,{label:"Bypass Governance Mode",indicatorLabels:["Yes","No"],checked:Z,value:"bypass_governance",id:"bypass_governance",name:"bypass_governance",onChange:function(e){N(!Z)},description:""})})}),_&&(0,k.jsxs)(r.Fragment,{children:[(0,k.jsxs)("div",{style:{marginTop:10,border:"#c83b51 1px solid",borderRadius:3,padding:5,backgroundColor:"#c83b5120",color:"#c83b51"},children:["This will remove the object as well as all of its versions,"," ",(0,k.jsx)("br",{}),"This action is irreversible."]}),(0,k.jsx)("br",{}),"Are you sure you want to continue?"]})]})})},ue=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},u.DF),u.ID),u.bK))}))((function(e){var n=e.classes,t=e.open,i=e.closeModalAndRefresh,o=e.objectName,a=e.bucketName,s=e.actualInfo,c=(0,d.TL)(),l=(0,r.useState)(!1),u=(0,h.Z)(l,2),f=u[0],m=u[1],x=(0,r.useState)(!1),b=(0,h.Z)(x,2),v=b[0],_=b[1],S=s.version_id;(0,r.useEffect)((function(){var e=j()(s,"legal_hold_status","OFF");m("ON"===e)}),[s]);var w=function(){m(!1)};return(0,k.jsxs)(X.Z,{title:"Set Legal Hold",modalOpen:t,onClose:function(){w(),i(!1)},children:[(0,k.jsxs)(p.rjZ,{item:!0,xs:12,className:n.spacerBottom,children:["Object: ",a]}),(0,k.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){e.preventDefault(),_(!0),oe.h.buckets.putObjectLegalHold(a,{prefix:(0,g.LL)(o),version_id:S||""},{status:f?ie.nY.Enabled:ie.nY.Disabled}).then((function(){_(!1),i(!0)})).catch((function(e){c((0,F.zb)((0,re.g)(e.error))),_(!1)}))}(e)},children:[(0,k.jsx)(p.rjZ,{item:!0,xs:12,className:n.formFieldRow,children:(0,k.jsx)(p.rsf,{value:"legalhold",id:"legalhold",name:"legalhold",checked:f,onChange:function(e){m(!f)},label:"Legal Hold Status",indicatorLabels:["Enabled","Disabled"],tooltip:"To enable this feature you need to enable versioning on the bucket before creation"})}),(0,k.jsxs)(p.rjZ,{item:!0,xs:12,className:n.modalButtonBar,children:[(0,k.jsx)(p.zxk,{id:"clear",type:"button",variant:"regular",onClick:w,label:"Clear"}),(0,k.jsx)(p.zxk,{id:"save",type:"submit",variant:"callAction",disabled:v,label:" Save"})]})]})]})})),fe=t(78562),he=t(79836),me=t(53382),pe=t(35855),xe=t(53994),be=function(e){return Array.isArray(e)?e.map(g.eC).join(", "):(0,g.eC)(e)},ve=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)({titleItem:{width:"35%"}},u.bK),u.$b))}))((function(e){var n=e.metaData,t=e.classes,i=e.linear,o=void 0!==i&&i,a=Object.keys(n);return o?(0,k.jsx)(r.Fragment,{children:a.map((function(e,i){var o=be(n[e]);return(0,k.jsxs)(H.Z,{className:t.metadataLinear,children:[(0,k.jsx)("strong",{children:e}),(0,k.jsx)("br",{}),o]},"box-meta-".concat(e,"-").concat(i.toString()))}))}):(0,k.jsxs)(b.ZP,{container:!0,children:[(0,k.jsx)(b.ZP,{item:!0,xs:12,sx:{marginTop:"25px",marginBottom:"5px"},children:(0,k.jsx)("h3",{style:{marginTop:"0",marginBottom:"0"},children:"Object Metadata"})}),(0,k.jsx)(b.ZP,{item:!0,xs:12,children:(0,k.jsx)(he.Z,{className:t.table,"aria-label":"simple table",children:(0,k.jsx)(me.Z,{children:a.map((function(e,i){var o=be(n[e]);return(0,k.jsxs)(pe.Z,{children:[(0,k.jsx)(xe.Z,{component:"th",scope:"row",className:t.titleItem,children:e}),(0,k.jsx)(xe.Z,{align:"right",children:o})]},"tRow-".concat(i.toString()))}))})})})]})})),je=t(37762),ge=(0,l.Z)((function(e){return(0,c.Z)({fileName:{display:"flex",alignItems:"center","& .min-icon":{width:16,height:16,marginRight:4,minWidth:16,minHeight:16}},fileNameText:{whiteSpace:"pre",overflow:"hidden",textOverflow:"ellipsis"}})}))((function(e){var n=e.classes,t=e.icon,i=e.strings;return(0,k.jsxs)("div",{className:n.fileName,children:[t,(0,k.jsx)("span",{className:n.fileNameText,children:(0,g.e3)(i[i.length-1])})]})})),_e=[{icon:(0,k.jsx)(p.n9O,{}),extensions:["mp4","mov","avi","mpeg","mpg"]},{icon:(0,k.jsx)(p.mYf,{}),extensions:["mp3","m4a","aac"]},{icon:(0,k.jsx)(p.UU9,{}),extensions:["pdf"]},{icon:(0,k.jsx)(p.hjP,{}),extensions:["ppt","pptx"]},{icon:(0,k.jsx)(p.hz9,{}),extensions:["xls","xlsx"]},{icon:(0,k.jsx)(p.xDw,{}),extensions:["cer","crt","pem"]},{icon:(0,k.jsx)(p.jG9,{}),extensions:["html","xml","css","py","go","php","cpp","h","java"]},{icon:(0,k.jsx)(p.NqG,{}),extensions:["cfg","yaml"]},{icon:(0,k.jsx)(p.OkY,{}),extensions:["sql"]},{icon:(0,k.jsx)(p.ZAy,{}),extensions:["ttf","otf"]},{icon:(0,k.jsx)(p.p2x,{}),extensions:["doc","docx","txt","rtf"]},{icon:(0,k.jsx)(p.xhr,{}),extensions:["zip","rar","tar","gz"]},{icon:(0,k.jsx)(p.rtI,{}),extensions:["epub","mobi","azw","azw3"]},{icon:(0,k.jsx)(p.q$4,{}),extensions:["jpeg","jpg","gif","tiff","png","heic","dng"]}],Se=function(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],t=e,i=(0,k.jsx)(p.MoH,{});e.endsWith("/")&&(i=(0,k.jsx)(p.BI,{}),t=e.slice(0,-1));for(var o=e.toLowerCase(),r=0,a=_e;r svg":{marginRight:10}},tagsForLabel:{fontSize:16,margin:"20px 0 30px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",width:"100%"},currentTagsContainer:{fontSize:14,fontWeight:"normal"},noTagsForObject:{color:"#858585"},deleteTag:{color:"#C83B51",marginLeft:5}},u.DF),u.ID),u.bK))}))((function(e){var n,t=e.modalOpen,i=e.onCloseAndUpdate,s=e.bucketName,c=e.actualInfo,l=e.classes,u=(0,d.TL)(),f=(0,a.v9)(F.N5),m=(0,r.useState)(""),x=(0,h.Z)(m,2),v=x[0],_=x[1],S=(0,r.useState)(""),w=(0,h.Z)(S,2),C=w[0],Z=w[1],N=(0,r.useState)(!1),E=(0,h.Z)(N,2),O=E[0],I=E[1],L=(0,r.useState)(!1),B=(0,h.Z)(L,2),P=B[0],A=B[1],D=(0,r.useState)(""),R=(0,h.Z)(D,2),M=R[0],U=R[1],z=(0,r.useState)(""),G=(0,h.Z)(z,2),W=G[0],K=G[1],V=(0,g.LL)(c.name||""),J=c.tags,Y=Object.keys(J||{}),q=null===(n=c.name)||void 0===n?void 0:n.split("/"),$=(null===q||void 0===q?void 0:q.pop())||"",Q=function(e){return(0,k.jsxs)("div",{className:l.tagsForLabel,children:["Tag",e?"s":""," for: ",(0,k.jsx)("strong",{children:$})]})};return(0,k.jsx)(r.Fragment,{children:(0,k.jsx)(X.Z,{modalOpen:t,title:P?"Delete Tag":"Edit Tags",onClose:function(){i(!0)},titleIcon:P?(0,k.jsx)(p.dRf,{style:{fill:"#C83B51"}}):(0,k.jsx)(p.T0F,{}),children:P?(0,k.jsx)(r.Fragment,{children:(0,k.jsxs)(b.ZP,{container:!0,children:[Q(!1),"Are you sure you want to delete the tag"," ",(0,k.jsxs)("b",{className:l.deleteTag,children:[M," : ",W]})," ","?",(0,k.jsxs)(b.ZP,{item:!0,xs:12,className:l.modalButtonBar,children:[(0,k.jsx)(p.zxk,{id:"cancel",type:"button",variant:"regular",onClick:function(){U(""),K(""),A(!1)},label:"Cancel"}),(0,k.jsx)(p.zxk,{type:"submit",variant:"secondary",onClick:function(){var e=(0,o.Z)({},J);delete e[M];var n=f?c.version_id||"":"null";oe.h.buckets.putObjectTags(s,{prefix:V,version_id:n},{tags:e}).then((function(){i(!0),I(!1)})).catch((function(e){u((0,F.zb)((0,re.g)(e.error))),I(!1)}))},id:"deleteTag",label:"Delete Tag"})]})]})}):(0,k.jsxs)(b.ZP,{container:!0,children:[(0,k.jsx)(T.s,{scopes:[y.Ft.S3_GET_OBJECT_TAGGING,y.Ft.S3_GET_ACTIONS],resource:s,children:(0,k.jsxs)(H.Z,{sx:{display:"flex",flexFlow:"column",width:"100%"},children:[Q(!0),(0,k.jsxs)("div",{className:l.currentTagsContainer,children:["Current Tags:",(0,k.jsx)("br",{}),0===Y.length?(0,k.jsx)("span",{className:l.noTagsForObject,children:"There are no tags for this object"}):(0,k.jsx)(r.Fragment,{}),(0,k.jsx)(H.Z,{sx:{marginTop:"5px",marginBottom:"15px"},children:Y.map((function(e,n){var t=j()(J,"".concat(e),"");return""!==t?(0,k.jsx)(T.s,{scopes:[y.Ft.S3_DELETE_OBJECT_TAGGING],resource:s,errorProps:{deleteIcon:null,onDelete:null},children:(0,k.jsx)(we.Z,{style:{textTransform:"none",marginRight:"5px",marginBottom:"5px"},size:"small",label:"".concat(e," : ").concat(t),color:"primary",deleteIcon:(0,k.jsx)(Ce.Z,{}),onDelete:function(){!function(e,n){U(e),K(n),A(!0)}(e,t)}})},"chip-".concat(n)):null}))})]})]})}),(0,k.jsx)(T.s,{scopes:[y.Ft.S3_PUT_OBJECT_TAGGING,y.Ft.S3_PUT_ACTIONS],resource:s,errorProps:{disabled:!0,onClick:null},children:(0,k.jsxs)(b.ZP,{container:!0,children:[(0,k.jsx)(p.NZf,{icon:(0,k.jsx)(p.OCT,{}),separator:!1,children:"Add New Tag"}),(0,k.jsx)(b.ZP,{item:!0,xs:12,className:l.formFieldRow,children:(0,k.jsx)(p.Wzg,{value:v,label:"Tag Key",id:"newTagKey",name:"newTagKey",placeholder:"Enter Tag Key",onChange:function(e){_(e.target.value)}})}),(0,k.jsx)(b.ZP,{item:!0,xs:12,className:l.formFieldRow,children:(0,k.jsx)(p.Wzg,{value:C,label:"Tag Label",id:"newTagLabel",name:"newTagLabel",placeholder:"Enter Tag Label",onChange:function(e){Z(e.target.value)}})}),(0,k.jsxs)(b.ZP,{item:!0,xs:12,className:l.modalButtonBar,children:[(0,k.jsx)(p.zxk,{id:"clear",type:"button",variant:"regular",color:"primary",onClick:function(){Z(""),_("")},label:"Clear"}),(0,k.jsx)(p.zxk,{type:"submit",variant:"callAction",disabled:""===C.trim()||""===v.trim()||O,onClick:function(){I(!0);var e={};e[v]=C;var n=(0,o.Z)((0,o.Z)({},J),e),t=f?c.version_id||"":"null";oe.h.buckets.putObjectTags(s,{prefix:V,version_id:t},{tags:n}).then((function(){i(!0),I(!1)})).catch((function(e){u((0,F.zb)((0,re.g)(e.error))),I(!1)}))},id:"saveTag",label:"Save"})]})]})})]})})})})),Te=t(74165),ye=t(15861),Ne=t(51691),Fe=t(73669),Ee=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},u.DF),u.ID),u.bK))}))((function(e){var n=e.classes,t=e.closeInspectModalAndRefresh,i=e.inspectOpen,o=e.inspectPath,a=e.volumeName,s=(0,d.TL)(),c=function(){return t(!1)},l=(0,r.useState)(!0),u=(0,h.Z)(l,2),f=u[0],m=u[1],x=(0,r.useState)(""),b=(0,h.Z)(x,2),v=b[0],j=b[1],_=(0,r.useState)(""),S=(0,h.Z)(_,2),w=S[0],C=S[1];if(!o)return null;var Z=function(){var e=(0,ye.Z)((0,Te.Z)().mark((function e(n){return(0,Te.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(n,{method:"GET"});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}(),T=function(){var e=(0,ye.Z)((0,Te.Z)().mark((function e(){var n,t,i;return(0,Te.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=(0,g.LL)(o+"/xl.meta"),t=(0,g.LL)(a),i="/api/v1/admin/inspect?volume=".concat(t,"&file=").concat(n,"&encrypt=").concat(f),Z(i).then(function(){var e=(0,ye.Z)((0,Te.Z)().mark((function e(n){var t,i,o,r;return(0,Te.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n.ok){e.next=5;break}return e.next=3,n.json();case 3:t=e.sent,s((0,F.Ih)({errorMessage:t.message,detailedError:t.code}));case 5:return e.next=7,n.blob();case 7:if(i=e.sent,o=n.headers.get("content-disposition").split('"')[1],r=(0,g.Do)(o)||"",(0,g.zZ)(i,o),C(o),""!==r){e.next=15;break}return c(),e.abrupt("return");case 15:j(r);case 16:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}()).catch((function(e){s((0,F.Ih)(e))}));case 4:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return(0,k.jsxs)(r.Fragment,{children:[!v&&(0,k.jsx)(X.Z,{modalOpen:i,titleIcon:(0,k.jsx)(p.Gp8,{}),title:"Inspect Object",onClose:c,children:(0,k.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){e.preventDefault()}(e)},children:["Would you like to encrypt ",(0,k.jsx)("b",{children:(0,g.IO)(o)}),"?"," ",(0,k.jsx)("br",{}),(0,k.jsx)(p.rsf,{label:"Encrypt",indicatorLabels:["Yes","No"],checked:f,value:"encrypt",id:"encrypt",name:"encrypt",onChange:function(e){m(!f)},description:""}),(0,k.jsx)(p.rjZ,{item:!0,xs:12,className:n.modalButtonBar,children:(0,k.jsx)(p.zxk,{id:"inspect",type:"submit",variant:"callAction",color:"primary",onClick:T,label:"Inspect"})})]})}),v?(0,k.jsx)(X.Z,{modalOpen:i,title:"Inspect Decryption Key",onClose:function(){(0,g.kT)(w),c(),j("")},titleIcon:(0,k.jsx)(p.tvm,{}),children:(0,k.jsxs)(Ne.Z,{children:[(0,k.jsxs)(p.xuv,{children:["This will be displayed only once. It cannot be recovered.",(0,k.jsx)("br",{}),"Use secure medium to share this key."]}),(0,k.jsx)(p.xuv,{children:(0,k.jsx)(Fe.Z,{value:v})})]})}):null]})})),Oe=t(21435),Ie=t(81159),ke=t(76610),Le=function(e,n,t,i){var o,r=(0,g.LL)("".concat(n,"-").concat(i.name,"-").concat((new Date).getTime(),"-").concat(Math.random())),a=(0,g.mv)().toLowerCase().includes("win");if(((null===(o=i.name)||void 0===o?void 0:o.length)||0)>200&&a)e((0,E.Hg)(!0));else{var s=(0,ke.YO)(8),c=(0,A.LR)(n,t,i.version_id,i.size||0,null,s,(function(n){e((0,E.RO)({instanceID:r,progress:n}))}),(function(){e((0,E.oK)(r))}),(function(n){e((0,E.qJ)({instanceID:r,msg:n}))}),(function(){e((0,E.Im)(r))}),(function(){e((0,F.y1)("File download will be handled directly by the browser."))}));(0,ke.EN)(s,c),e((0,E.Mc)({ID:s,bucketName:n,done:!1,instanceID:r,percentage:0,prefix:i.name||"",type:"download",waitingForFile:!0,failed:!1,cancelled:!1,errorMessage:""}))}},Be=(0,C.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},u.ID),u.DF),u.bK),u.Bz))})),Pe=function(e){var n=e.open,t=e.closeModal,i=e.currentItem,o=e.internalPaths,a=e.actualInfo,s=e.bucketName,c=Be(),l=(0,d.TL)(),u=(0,r.useState)(i),f=(0,h.Z)(u,2),m=f[0],x=f[1],v=(0,r.useState)(!1),j=(0,h.Z)(v,2),g=j[0],_=j[1];return(0,k.jsxs)(X.Z,{title:"Rename Download",modalOpen:n,onClose:t,titleIcon:(0,k.jsx)(p.dY8,{}),children:[(0,k.jsxs)("div",{children:["The file you are trying to download has a long name.",(0,k.jsx)("br",{}),"This can cause issues on Windows Systems by trimming the file name after download.",(0,k.jsx)("br",{}),(0,k.jsx)("br",{})," We recommend to rename the file download"]}),(0,k.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){e.preventDefault(),Le(l,s,o,a),t()}(e)},children:(0,k.jsxs)(b.ZP,{container:!0,children:[(0,k.jsxs)(b.ZP,{item:!0,xs:12,className:c.modalFormScrollable,children:[(0,k.jsx)(b.ZP,{item:!0,xs:12,className:c.formFieldRow,children:(0,k.jsx)(Oe.Z,{id:"download-filename",name:"download-filename",onChange:function(e){x(e.target.value)},label:"",type:"text",value:m,error:m.length>200&&!g?"Filename should be less than 200 characters long.":""})}),(0,k.jsx)(b.ZP,{item:!0,xs:12,className:c.formFieldRow,children:(0,k.jsx)(Ie.Z,{value:"acceptLongName",id:"acceptLongName",name:"acceptLongName",checked:g,onChange:function(e){_(e.target.checked),e.target.checked&&x(i)},label:"Use Original Name"})})]}),(0,k.jsx)(b.ZP,{item:!0,xs:12,className:c.modalButtonBar,children:(0,k.jsx)(p.zxk,{id:"download-file",type:"submit",variant:"callAction",color:"primary",disabled:m.length>200&&!g,label:"Download File"})})]})})]})},Ae={is_latest:!0,last_modified:"",legal_hold_status:"",name:"",retention_mode:"",retention_until_date:"",size:0,tags:{},version_id:void 0},De=(0,l.Z)((function(){return(0,c.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)({ObjectDetailsTitle:{display:"flex",alignItems:"center","& .min-icon":{width:26,height:26,minWidth:26,minHeight:26}},objectNameContainer:{whiteSpace:"nowrap",textOverflow:"ellipsis",overflow:"hidden",alignItems:"center",marginLeft:10},capitalizeFirst:{textTransform:"capitalize"}},u.OR),u.bK),u.VI),u.$b))}))((function(e){var n=e.classes,t=e.internalPaths,i=e.bucketName,o=e.versioningInfo,s=e.locking,c=e.onClosePanel,l=(0,d.TL)(),u=(0,a.v9)(F.N5),f=(0,a.v9)((function(e){return e.objectBrowser.versionsMode})),m=(0,a.v9)((function(e){return e.objectBrowser.selectedVersion})),x=(0,a.v9)((function(e){return e.objectBrowser.loadingObjectInfo})),v=(0,r.useState)(!1),_=(0,h.Z)(v,2),S=_[0],w=_[1],C=(0,r.useState)(!1),Z=(0,h.Z)(C,2),N=Z[0],O=Z[1],I=(0,r.useState)(!1),L=(0,h.Z)(I,2),B=L[0],P=L[1],D=(0,r.useState)(!1),R=(0,h.Z)(D,2),M=R[0],U=R[1],G=(0,r.useState)(!1),W=(0,h.Z)(G,2),K=W[0],J=W[1],Y=(0,r.useState)(null),q=(0,h.Z)(Y,2),$=q[0],X=q[1],Q=(0,r.useState)([]),ee=(0,h.Z)(Q,2),ne=ee[0],te=ee[1],ie=(0,r.useState)(null),re=(0,h.Z)(ie,2),se=re[0],ce=re[1],le=(0,r.useState)([]),he=(0,h.Z)(le,2),me=he[0],pe=he[1],xe=(0,r.useState)(!1),be=(0,h.Z)(xe,2),je=be[0],ge=be[1],_e=(0,r.useState)(!1),we=(0,h.Z)(_e,2),Ce=we[0],Te=we[1],ye=(0,r.useState)(0),Ne=(0,h.Z)(ye,2),Fe=Ne[0],Oe=Ne[1],Ie=(0,r.useState)(!1),ke=(0,h.Z)(Ie,2),Be=ke[0],De=ke[1],Re=(0,r.useState)(null),Me=(0,h.Z)(Re,2),Ue=Me[0],ze=Me[1],Ge=(0,r.useState)(!1),We=(0,h.Z)(Ge,2),Ke=We[0],He=We[1],Ve=((0,g.IO)(t)||"").split("/").pop()||"",Je=[];$&&$.name&&(Je=$.name.split("/")),(0,r.useEffect)((function(){if(u&&ne&&ne.length>=1){var e=ne.find((function(e){return e.is_latest}))||Ae;""!==m&&(e=ne.find((function(e){return e.version_id===m}))||Ae),e.is_delete_marker||He(!0),X(e)}}),[m,u,ne]),(0,r.useEffect)((function(){x&&""!==t&&oe.h.buckets.listObjects(i,{prefix:t,with_versions:u}).then((function(e){var n=e.data.objects||[];if(u){te(n),pe(n);var t=n.reduce((function(e,n){return null!==n&&void 0!==n&&n.size?e+n.size:e}),0);Oe(t)}else{var i=n[0];X(i),pe([]),i.is_delete_marker||He(!0)}l((0,E.vH)(!1))})).catch((function(e){console.error("Error loading object details",e.error),l((0,E.vH)(!1))}))}),[x,i,t,l,u,m]),(0,r.useEffect)((function(){Ke&&""!==t&&oe.h.buckets.getObjectMetadata(i,{prefix:t}).then((function(e){var n=j()(e.data,"objectMetadata",{});ze(n),He(!1)})).catch((function(e){console.error("Error Getting Metadata Status: ",e.detailedError),He(!1)}))}),[i,t,Ke]);var Ye=[];$&&$.tags&&(Ye=Object.keys($.tags));var qe=(0,k.jsx)("div",{style:{textAlign:"center",marginTop:35},children:(0,k.jsx)(p.aNw,{})});if(!$)return x?qe:null;var $e=Je.length>0?Je[Je.length-1]:$.name,Xe=[i,Ve,[i,$.name].join("/")],Qe=(0,T.F)(i,[y.Ft.S3_PUT_OBJECT_LEGAL_HOLD,y.Ft.S3_PUT_ACTIONS]),en=(0,T.F)(Xe,[y.Ft.S3_PUT_OBJECT_TAGGING,y.Ft.S3_PUT_ACTIONS]),nn=(0,T.F)(Xe,[y.Ft.S3_GET_OBJECT_RETENTION,y.Ft.S3_PUT_OBJECT_RETENTION,y.Ft.S3_GET_ACTIONS,y.Ft.S3_PUT_ACTIONS],!0),tn=(0,T.F)(Xe,[y.Ft.ADMIN_INSPECT_DATA]),on=(0,T.F)(Xe,[y.Ft.S3_GET_BUCKET_VERSIONING,y.Ft.S3_PUT_BUCKET_VERSIONING,y.Ft.S3_GET_OBJECT_VERSION,y.Ft.S3_GET_ACTIONS,y.Ft.S3_PUT_ACTIONS]),rn=(0,T.F)(Xe,[y.Ft.S3_GET_OBJECT,y.Ft.S3_GET_ACTIONS]),an=(0,T.F)([i,Ve,[i,$.name].join("/")],[y.Ft.S3_DELETE_OBJECT]),sn=(0,A.s7)(Ue,Ve),cn=[{action:function(){Le(l,i,t,$)},label:"Download",disabled:!!$.is_delete_marker||!rn,icon:(0,k.jsx)(p._8t,{}),tooltip:rn?"Download this Object":(0,y.MK)([y.Ft.S3_GET_OBJECT,y.Ft.S3_GET_ACTIONS],"download this object")},{action:function(){w(!0)},label:"Share",disabled:!!$.is_delete_marker||!rn,icon:(0,k.jsx)(p.aAc,{}),tooltip:rn?"Share this File":(0,y.MK)([y.Ft.S3_GET_OBJECT,y.Ft.S3_GET_ACTIONS],"share this object")},{action:function(){Te(!0)},label:"Preview",disabled:!!$.is_delete_marker||"none"===sn&&!rn,icon:(0,k.jsx)(p.P99,{}),tooltip:rn?"Preview this File":(0,y.MK)([y.Ft.S3_GET_OBJECT,y.Ft.S3_GET_ACTIONS],"preview this object")},{action:function(){U(!0)},label:"Legal Hold",disabled:!s||!u||!!$.is_delete_marker||!Qe||""!==m,icon:(0,k.jsx)(p.fNL,{}),tooltip:Qe?s?"Change Legal Hold rules for this File":"Object Locking must be enabled on this bucket in order to set Legal Hold":(0,y.MK)([y.Ft.S3_PUT_OBJECT_LEGAL_HOLD,y.Ft.S3_PUT_ACTIONS],"change legal hold settings for this object")},{action:function(){O(!0)},label:"Retention",disabled:!u||!!$.is_delete_marker||!nn||""!==m||!s,icon:(0,k.jsx)(p.E9d,{}),tooltip:nn?s?"Change Retention rules for this File":"Object Locking must be enabled on this bucket in order to set Retention Rules":(0,y.MK)([y.Ft.S3_GET_OBJECT_RETENTION,y.Ft.S3_PUT_OBJECT_RETENTION,y.Ft.S3_GET_ACTIONS,y.Ft.S3_PUT_ACTIONS],"change Retention Rules for this object")},{action:function(){P(!0)},label:"Tags",disabled:!!$.is_delete_marker||""!==m||!en,icon:(0,k.jsx)(p.DgT,{}),tooltip:en?"Change Tags for this File":(0,y.MK)([y.Ft.S3_PUT_OBJECT_TAGGING,y.Ft.S3_GET_OBJECT_TAGGING,y.Ft.S3_GET_ACTIONS,y.Ft.S3_PUT_ACTIONS],"set Tags on this object")},{action:function(){J(!0)},label:"Inspect",disabled:!u||!!$.is_delete_marker||""!==m||!tn,icon:(0,k.jsx)(p.Gp8,{}),tooltip:tn?"Inspect this file":(0,y.MK)([y.Ft.ADMIN_INSPECT_DATA],"inspect this file")},{action:function(){l((0,E.db)({status:!f,objectName:$e}))},label:f?"Hide Object Versions":"Display Object Versions",icon:(0,k.jsx)(p.cRd,{}),disabled:!u||!($.version_id&&"null"!==$.version_id)||!on,tooltip:on?$.version_id&&"null"!==$.version_id?"Display Versions for this file":"":(0,y.MK)([y.Ft.S3_GET_BUCKET_VERSIONING,y.Ft.S3_PUT_BUCKET_VERSIONING,y.Ft.S3_GET_OBJECT_VERSION,y.Ft.S3_GET_ACTIONS,y.Ft.S3_PUT_ACTIONS],"display all versions of this object")}];return(0,k.jsxs)(r.Fragment,{children:[S&&$&&(0,k.jsx)(V.default,{open:S,closeModalAndRefresh:function(){ce(null),w(!1)},bucketName:i,dataObject:se||$}),N&&$&&(0,k.jsx)(ae,{open:N,closeModalAndRefresh:function(e){O(!1),e&&l((0,E.vH)(!0))},objectName:Ve,objectInfo:$,bucketName:i}),je&&(0,k.jsx)(de,{deleteOpen:je,selectedBucket:i,selectedObject:t,closeDeleteModalAndRefresh:function(e){ge(!1),e&&""===m?c(!0):(l((0,E.Eq)(!0)),l((0,E.M3)("")),l((0,E.vH)(!0)))},versioningInfo:u?o:void 0,selectedVersion:m}),M&&$&&(0,k.jsx)(ue,{open:M,closeModalAndRefresh:function(e){U(!1),e&&l((0,E.vH)(!0))},objectName:$.name||"",bucketName:i,actualInfo:$}),Ce&&$&&(0,k.jsx)(fe.default,{open:Ce,bucketName:i,object:{name:$.name||"",version_id:$.version_id||"null",size:$.size||0,content_type:"",last_modified:$.last_modified||""},onClosePreview:function(){Te(!1)}}),B&&$&&(0,k.jsx)(Ze,{modalOpen:B,bucketName:i,actualInfo:$,onCloseAndUpdate:function(e){P(!1),e&&l((0,E.vH)(!0))}}),K&&$&&(0,k.jsx)(Ee,{inspectOpen:K,volumeName:i,inspectPath:$.name||"",closeInspectModalAndRefresh:function(e){J(!1),e&&l((0,E.vH)(!0))}}),Be&&$&&(0,k.jsx)(Pe,{open:Be,closeModal:function(){De(!1)},currentItem:Ve,bucketName:i,internalPaths:t,actualInfo:$}),x?(0,k.jsx)(r.Fragment,{children:qe}):(0,k.jsxs)(r.Fragment,{children:[(0,k.jsx)(p.Wk,{title:(0,k.jsxs)("div",{className:n.ObjectDetailsTitle,children:[Se($e||"",!0),(0,k.jsx)("span",{className:n.objectNameContainer,children:$e})]}),items:cn}),(0,k.jsx)(z.Z,{tooltip:an?"":(0,y.MK)([y.Ft.S3_DELETE_OBJECT],"delete this object"),children:(0,k.jsx)(b.ZP,{item:!0,xs:12,sx:{justifyContent:"center",display:"flex"},children:(0,k.jsx)(T.s,{resource:[i,Ve,[i,$.name].join("/")],scopes:[y.Ft.S3_DELETE_OBJECT],errorProps:{disabled:!0},children:(0,k.jsx)(p.zxk,{id:"delete-element-click",icon:(0,k.jsx)(p.pJl,{}),iconLocation:"start",fullWidth:!0,variant:"secondary",onClick:function(){ge(!0)},disabled:""===m&&$.is_delete_marker,sx:{width:"calc(100% - 44px)",margin:"8px 0"},label:"Delete".concat(""!==m?" version":"")})})})}),(0,k.jsx)(p.AG2,{icon:(0,k.jsx)(p.Gvh,{}),label:"Object Info"}),(0,k.jsxs)(H.Z,{className:n.detailContainer,children:[(0,k.jsx)("strong",{children:"Name:"}),(0,k.jsx)("br",{}),(0,k.jsx)("div",{style:{overflowWrap:"break-word"},children:$e})]}),""!==m&&(0,k.jsxs)(H.Z,{className:n.detailContainer,children:[(0,k.jsx)("strong",{children:"Version ID:"}),(0,k.jsx)("br",{}),m]}),(0,k.jsxs)(H.Z,{className:n.detailContainer,children:[(0,k.jsx)("strong",{children:"Size:"}),(0,k.jsx)("br",{}),(0,g.ae)("".concat($.size||"0"))]}),$.version_id&&"null"!==$.version_id&&""===m&&(0,k.jsxs)(H.Z,{className:n.detailContainer,children:[(0,k.jsx)("strong",{children:"Versions:"}),(0,k.jsx)("br",{}),me.length," version",1!==me.length?"s":"",","," ",(0,g.l5)(Fe)]}),""===m&&(0,k.jsxs)(H.Z,{className:n.detailContainer,children:[(0,k.jsx)("strong",{children:"Last Modified:"}),(0,k.jsx)("br",{}),function(e){var n=new Date,t=new Date(e),i=n.getTime()-t.getTime(),o=(0,g.nF)(i,"ms");return""!==o.trim()?"".concat(o," ago"):"Just now"}($.last_modified||"")]}),(0,k.jsxs)(H.Z,{className:n.detailContainer,children:[(0,k.jsx)("strong",{children:"ETAG:"}),(0,k.jsx)("br",{}),$.etag||"N/A"]}),(0,k.jsxs)(H.Z,{className:n.detailContainer,children:[(0,k.jsx)("strong",{children:"Tags:"}),(0,k.jsx)("br",{}),0===Ye.length?"N/A":Ye.map((function(e,n){return(0,k.jsxs)("span",{children:[e,":",j()($,"tags.".concat(e),""),n div":{borderBottomColor:j()(n,"boxBackground","#F8F8F8")}}},"& .versionContainer":{fontSize:16,fontWeight:"bold",display:"flex",alignItems:"center","& svg.min-icon":{width:18,height:18,minWidth:18,minHeight:18,marginRight:10}},"& .buttonContainer":{textAlign:"right","& button":{marginLeft:"1.5rem"}},"& .versionID":{fontSize:"12px",margin:"2px 0",whiteSpace:"nowrap",textOverflow:"ellipsis",maxWidth:"95%",overflow:"hidden"},"& .versionData":{marginRight:"10px",fontSize:12,color:"#868686"},"@media (max-width: 600px)":{"& .buttonContainer":{"& button":{marginLeft:"5px"}}},"@media (max-width: 799px)":{"&:before":{display:"none"},"& .mainFileVersionItem":{padding:"5px 0px",margin:0},"& .intermediateLayer":{margin:0,"&:hover, &.selected":{backgroundColor:"transparent","& > div":{borderBottomColor:j()(n,"boxBackground","#F8F8F8")}}},"& .versionContainer":{fontSize:14,"& svg.min-icon":{display:"none"}},"& .versionData":{textOverflow:"ellipsis",maxWidth:"95%",overflow:"hidden",whiteSpace:"nowrap"},"& .collapsableInfo":{display:"flex",flexDirection:"column"},"& .versionItem":{display:"none"}}}})),Ve=function(e){var n=e.fileName,t=e.versionInfo,i=e.isSelected,o=e.checkable,r=e.isChecked,a=e.onCheck,s=e.onShare,c=e.onDownload,l=e.onRestore,d=e.onPreview,u=e.globalClick,f=e.index,h=e.key,m=e.style,b=t.is_delete_marker,v=[{icon:(0,k.jsx)(p.P99,{}),action:d,tooltip:"Preview"},{icon:(0,k.jsx)(p._8t,{}),action:c,tooltip:"Download this version"},{icon:(0,k.jsx)(p.aAc,{}),action:s,tooltip:"Share this version"},{icon:(0,k.jsx)(p.D7Y,{}),action:l,tooltip:"Restore this version"}],j=null;t.is_delete_marker?j="deleted":t.is_latest?j="current":"null"===t.version_id&&(j="null");var _=x.ou.now();return t.last_modified&&(_=x.ou.fromISO(t.last_modified)),(0,k.jsx)(He,{children:(0,k.jsx)(p.rjZ,{container:!0,className:"ctrItem",onClick:function(){u(t)},style:m,children:(0,k.jsx)(p.rjZ,{item:!0,xs:12,className:"intermediateLayer".concat(" ",i?"selected":""),children:(0,k.jsxs)(p.rjZ,{item:!0,xs:!0,className:"mainFileVersionItem ".concat(t.is_delete_marker?"deleted":""),children:[(0,k.jsx)(p.rjZ,{item:!0,xs:12,children:(0,k.jsxs)(p.rjZ,{container:!0,children:[(0,k.jsxs)(p.rjZ,{item:!0,xs:!0,md:4,className:"versionContainer",children:[o&&(0,k.jsx)(Ke,{checked:r,id:"select-".concat(t.version_id),label:"",name:"select-".concat(t.version_id),onChange:function(e){e.stopPropagation(),e.preventDefault(),a(t.version_id||"")},value:t.version_id||"",disabled:t.is_delete_marker,overrideCheckboxStyles:{paddingLeft:0,height:34,width:25},noTopMargin:!0}),Se(n,!0)," v",f.toString(),(0,k.jsx)("span",{className:"versionItem",children:j&&(0,k.jsx)(Ue,{type:j})})]}),(0,k.jsx)(p.rjZ,{item:!0,xs:10,md:8,className:"buttonContainer",children:v.map((function(e,n){return(0,k.jsx)(p.ua7,{tooltip:e.tooltip,children:(0,k.jsx)(p.hU,{size:"small",id:"version-action-".concat(e.tooltip,"-").concat(n.toString()),className:"spacing".concat(" ",b?"buttonDisabled":""),disabled:b,onClick:function(n){n.stopPropagation(),b?n.preventDefault():e.action(t)},sx:{backgroundColor:"#F8F8F8",borderRadius:"100%",width:"28px",height:"28px",padding:"5px","& .min-icon":{width:"14px",height:"14px"}},children:e.icon})},"version-action-".concat(e.tooltip,"-").concat(n.toString()))}))})]})}),(0,k.jsx)(p.rjZ,{item:!0,xs:12,className:"versionID",children:"null"!==t.version_id?t.version_id:"-"}),(0,k.jsxs)(p.rjZ,{item:!0,xs:12,className:"collapsableInfo",children:[(0,k.jsxs)("span",{className:"versionData",children:[(0,k.jsx)("strong",{children:"Last modified:"})," ",_.toFormat("ccc, LLL dd yyyy HH:mm:ss (ZZZZ)")]}),(0,k.jsxs)("span",{className:"versionData",children:[(0,k.jsx)("strong",{children:"Size:"})," ",(0,g.ae)("".concat(t.size||"0"))]})]})]})})},h)})},Je=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,i=e.selectedBucket,o=e.selectedObject,s=(0,d.TL)(),c=(0,r.useState)(!1),l=(0,h.Z)(c,2),u=l[0],f=l[1],m=(0,r.useState)(""),x=(0,h.Z)(m,2),b=x[0],v=x[1],j=(0,r.useState)(!1),_=(0,h.Z)(j,2),S=_[0],w=_[1],C=(0,a.v9)((function(e){return e.objectBrowser.retentionConfig})),Z=(0,T.F)([i],[y.Ft.S3_BYPASS_GOVERNANCE_RETENTION])&&"governance"===(null===C||void 0===C?void 0:C.mode);if((0,r.useEffect)((function(){u&&oe.h.buckets.deleteObject(i,{path:o,non_current_versions:!0,bypass:S}).then((function(){n(!0)})).catch((function(e){s((0,F.Ih)((0,re.g)(e.error))),f(!1)}))}),[u,n,s,o,i,S]),!o)return null;return(0,k.jsx)(se.Z,{title:"Delete Non-Current versions",confirmText:"Delete",isOpen:t,titleIcon:(0,k.jsx)(p.NvT,{}),isLoading:u,onConfirm:function(){f(!0)},onClose:function(){return n(!1)},confirmButtonProps:{disabled:"YES, PROCEED"!==b||u},confirmationContent:(0,k.jsxs)(r.Fragment,{children:["Are you sure you want to delete all the non-current versions for:"," ",(0,k.jsx)("b",{children:(0,g.IO)(o)}),"? ",(0,k.jsx)("br",{}),Z&&(0,k.jsx)(r.Fragment,{children:(0,k.jsx)("div",{style:{marginTop:10},children:(0,k.jsx)(p.rsf,{label:"Bypass Governance Mode",indicatorLabels:["Yes","No"],checked:S,value:"bypass_governance",id:"bypass_governance",name:"bypass_governance",onChange:function(e){w(!S)},description:""})})}),(0,k.jsx)("br",{}),"To continue please type ",(0,k.jsx)("b",{children:"YES, PROCEED"})," in the box.",(0,k.jsx)("br",{}),(0,k.jsx)("br",{}),(0,k.jsx)(p.rjZ,{item:!0,xs:12,children:(0,k.jsx)(p.Wzg,{id:"type-confirm",name:"retype-tenant",onChange:function(e){v(e.target.value)},label:"",value:b})})]})})},Ye=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,i=e.selectedBucket,o=e.selectedVersions,s=e.selectedObject,c=(0,d.TL)(),l=(0,r.useState)(!1),u=(0,h.Z)(l,2),f=u[0],m=u[1],x=(0,r.useState)(!1),b=(0,h.Z)(x,2),v=b[0],j=b[1],g=(0,a.v9)((function(e){return e.objectBrowser.retentionConfig})),_=(0,T.F)([i],[y.Ft.S3_BYPASS_GOVERNANCE_RETENTION])&&"governance"===(null===g||void 0===g?void 0:g.mode);return(0,r.useEffect)((function(){if(f){var e=o.map((function(e){return{path:s,versionID:e,recursive:!1}}));e.length>0&&oe.h.buckets.deleteMultipleObjects(i,e,{all_versions:!1,bypass:v}).then((function(){m(!1),n(!0)})).catch((function(e){c((0,F.Ih)((0,re.g)(e.error))),m(!1)}))}}),[f,n,i,s,o,v,c]),o?(0,k.jsx)(se.Z,{title:"Delete Selected Versions",confirmText:"Delete",isOpen:t,titleIcon:(0,k.jsx)(p.NvT,{}),isLoading:f,onConfirm:function(){m(!0)},onClose:function(){return n(!1)},confirmationContent:(0,k.jsxs)(r.Fragment,{children:["Are you sure you want to delete the selected ",o.length," ","versions for ",(0,k.jsx)("strong",{children:s}),"?",_&&(0,k.jsx)(r.Fragment,{children:(0,k.jsx)("div",{style:{marginTop:10},children:(0,k.jsx)(p.rsf,{label:"Bypass Governance Mode",indicatorLabels:["Yes","No"],checked:v,value:"bypass_governance",id:"bypass_governance",name:"bypass_governance",onChange:function(e){j(!v)},description:""})})})]})}):null},qe=t(53128),$e={is_latest:!0,last_modified:"",legal_hold_status:"",name:"",retention_mode:"",retention_until_date:"",size:0,tags:{},version_id:void 0},Xe=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)({versionsContainer:{padding:10,"@media (max-width: 799px)":{minHeight:800}},noBottomBorder:{borderBottom:0},versionsVirtualPanel:{flexGrow:1,height:"calc(100% - 120px)",overflow:"auto","@media (max-width: 799px)":{height:600}},screenTitleContainer:{position:"relative","@media (max-width: 799px)":{"&::before":{display:"none"}}},sortByLabel:{color:"#838383",fontWeight:"bold",whiteSpace:"nowrap",marginRight:12,fontSize:14,"@media (max-width: 600px)":{display:"none"}}},u.OR),u.VX),u.bK),u.VI),u.cx),u.C4),u.Bz))}))((function(e){var n=e.classes,t=e.internalPaths,i=e.bucketName,o=(0,d.TL)(),s=(0,a.v9)((function(e){return e.objectBrowser.searchVersions})),c=(0,a.v9)((function(e){return e.objectBrowser.loadingVersions})),l=(0,a.v9)((function(e){return e.objectBrowser.selectedVersion})),u=(0,a.v9)(F.N5),m=(0,r.useState)(!1),x=(0,h.Z)(m,2),v=x[0],_=x[1],S=(0,r.useState)(null),w=(0,h.Z)(S,2),C=w[0],Z=w[1],T=(0,r.useState)(null),y=(0,h.Z)(T,2),N=y[0],O=y[1],I=(0,r.useState)([]),L=(0,h.Z)(I,2),B=L[0],A=L[1],D=(0,r.useState)(!1),R=(0,h.Z)(D,2),M=R[0],U=R[1],G=(0,r.useState)(null),W=(0,h.Z)(G,2),K=W[0],H=W[1],J=(0,r.useState)("date"),Y=(0,h.Z)(J,2),q=Y[0],$=Y[1],X=(0,r.useState)(!1),Q=(0,h.Z)(X,2),ee=Q[0],ne=Q[1],te=(0,r.useState)(!1),ie=(0,h.Z)(te,2),ae=ie[0],se=ie[1],ce=(0,r.useState)(!1),le=(0,h.Z)(ce,2),de=le[0],ue=le[1],he=(0,r.useState)([]),me=(0,h.Z)(he,2),pe=me[0],xe=me[1],be=(0,r.useState)(!1),ve=(0,h.Z)(be,2),je=ve[0],ge=ve[1],_e=[];C&&C.name&&(_e=C.name.split("/")),(0,r.useEffect)((function(){c||C||o((0,E.Eq)(!0))}),[c,C,o]),(0,r.useEffect)((function(){c&&""!==t&&oe.h.buckets.listObjects(i,{prefix:t,with_versions:u}).then((function(e){var n=j()(e.data,"objects",[]),i=(0,g.IO)(t),r=n.filter((function(e){return e.name===i}));u?(Z(r.find((function(e){return e.is_latest}))||$e),A(r)):(Z(r[0]),A([])),o((0,E.Eq)(!1))})).catch((function(e){o((0,F.Ih)((0,re.g)(e.error))),o((0,E.Eq)(!1))}))}),[c,i,t,o,u]);var Se=function(e){O(e),_(!0)},we=function(e){O(e),ne(!0)},Ce=function(e){H(e),U(!0)},Ze=function(e){Le(o,i,t,e)},Te=function(e){o((0,E.M3)(e.version_id||""))},ye=B.filter((function(e){return!!e.version_id&&e.version_id.includes(s)})),Ne=B.reduce((function(e,n){return n.size?e+n.size:e}),0);ye.sort((function(e,n){if("size"===q)return e.size&&n.size?e.sizen.size?1:0:0;var t=new Date(e.last_modified||"").getTime(),i=new Date(n.last_modified||"").getTime();return ti?-1:0}));var Fe=function(e){if(pe.includes(e)){var n=pe.filter((function(n){return n!==e}));xe(n)}else{var t=(0,f.Z)(pe);t.push(e),xe(t)}};return(0,k.jsxs)(r.Fragment,{children:[v&&C&&(0,k.jsx)(V.default,{open:v,closeModalAndRefresh:function(){O(null),_(!1),ne(!1)},bucketName:i,dataObject:N||C}),M&&C&&K&&(0,k.jsx)(Re,{restoreOpen:M,bucketName:i,versionToRestore:K,objectPath:C.name||"",onCloseAndUpdate:function(e){U(!1),H(null),e&&(o((0,E.Eq)(!0)),o((0,E.vH)(!0)))}}),ee&&C&&(0,k.jsx)(fe.default,{open:ee,bucketName:i,object:{name:C.name||"",version_id:N&&N.version_id?N.version_id:"null",size:N&&N.size?N.size:0,content_type:"",last_modified:C.last_modified||""},onClosePreview:function(){ne(!1)}}),ae&&(0,k.jsx)(Je,{deleteOpen:ae,closeDeleteModalAndRefresh:function(e){se(!1),e&&(o((0,E.Eq)(!0)),o((0,E.M3)("")),o((0,E.vH)(!0)))},selectedBucket:i,selectedObject:t}),je&&(0,k.jsx)(Ye,{selectedBucket:i,selectedObject:(0,g.IO)(t),deleteOpen:je,selectedVersions:pe,closeDeleteModalAndRefresh:function(e){ge(!1),e&&(o((0,E.Eq)(!0)),o((0,E.M3)("")),o((0,E.vH)(!0)),xe([]))}}),(0,k.jsxs)(b.ZP,{container:!0,className:n.versionsContainer,children:[!C&&(0,k.jsx)(b.ZP,{item:!0,xs:12,children:(0,k.jsx)(p.kod,{})}),C&&(0,k.jsxs)(r.Fragment,{children:[(0,k.jsx)(b.ZP,{item:!0,xs:12,children:(0,k.jsx)(P,{bucketName:i,internalPaths:(0,g.IO)(t),hidePathButton:!0})}),(0,k.jsx)(b.ZP,{item:!0,xs:12,className:n.screenTitleContainer,children:(0,k.jsx)(p.UHn,{icon:(0,k.jsx)("span",{className:n.listIcon,children:(0,k.jsx)(p.cRd,{})}),title:"".concat(_e.length>0?_e[_e.length-1]:C.name," Versions"),subTitle:(0,k.jsxs)(r.Fragment,{children:[(0,k.jsx)("span",{className:n.detailsSpacer,children:(0,k.jsxs)("strong",{children:[B.length," Version",1===B.length?"":"s","\xa0\xa0\xa0"]})}),(0,k.jsx)("span",{className:n.detailsSpacer,children:(0,k.jsx)("strong",{children:(0,g.l5)(Ne)})})]}),actions:(0,k.jsxs)(r.Fragment,{children:[(0,k.jsx)(z.Z,{tooltip:"Select Multiple Versions",children:(0,k.jsx)(p.zxk,{id:"select-multiple-versions",onClick:function(){ue(!de)},icon:(0,k.jsx)(p.amE,{}),variant:de?"callAction":"regular",style:{marginRight:8}})}),de&&(0,k.jsx)(z.Z,{tooltip:"Delete Selected Versions",children:(0,k.jsx)(p.zxk,{id:"delete-multiple-versions",onClick:function(){ge(!0)},icon:(0,k.jsx)(p.pJl,{}),variant:"secondary",style:{marginRight:8},disabled:0===pe.length})}),(0,k.jsx)(z.Z,{tooltip:"Delete Non Current Versions",children:(0,k.jsx)(p.zxk,{id:"delete-non-current",onClick:function(){se(!0)},icon:(0,k.jsx)(p.utM,{}),variant:"secondary",style:{marginRight:15},disabled:B.length<=1})}),(0,k.jsx)(p.PhF,{id:"sort-by",options:[{label:"Date",value:"date"},{label:"Size",value:"size"}],value:q,label:"Sort by",onChange:function(e){$(e)},noLabelMinWidth:!0})]}),bottomBorder:!1})}),(0,k.jsx)(b.ZP,{item:!0,xs:12,className:n.versionsVirtualPanel,children:C.version_id&&"null"!==C.version_id&&(0,k.jsx)(qe.aV,{style:{width:"100%"},containerStyle:{width:"100%",maxWidth:"100%"},width:1,height:800,rowCount:ye.length,rowHeight:108,rowRenderer:function(e){var n=e.key,t=e.index,i=(e.isScrolling,e.isVisible,e.style),o=B.length-t;return(0,k.jsx)(Ve,{style:i,fileName:(null===C||void 0===C?void 0:C.name)||"",versionInfo:ye[t],index:o,onDownload:Ze,onRestore:Ce,onShare:Se,onPreview:we,globalClick:Te,isSelected:l===ye[t].version_id,checkable:de,onCheck:Fe,isChecked:pe.includes(ye[t].version_id||"")},n)}})})]})]})]})})),Qe=t(9859),en=function(e){if(e.name.endsWith("/"))return"";var n=x.ou.now(),t=x.ou.fromISO(e.last_modified);return n.hasSame(t,"day")&&n.hasSame(t,"month")&&n.hasSame(t,"year")?"Today, ".concat(t.toFormat("HH:mm")):t.toFormat("ccc, LLL dd yyyy HH:mm (ZZZZ)")},nn=function(e){return e.name.endsWith("/")||!e.size?"-":(0,g.ae)(String(e.size))},tn=[{label:"Name",elementKey:"name",renderFunction:Se,enableSort:!0},{label:"Last Modified",elementKey:"last_modified",renderFunction:en,renderFullObject:!0,enableSort:!0},{label:"Size",elementKey:"size",renderFunction:nn,renderFullObject:!0,width:100,enableSort:!0}],on=[{label:"Name",elementKey:"name",renderFunction:Se,enableSort:!0},{label:"Object Date",elementKey:"last_modified",renderFunction:en,renderFullObject:!0,enableSort:!0},{label:"Size",elementKey:"size",renderFunction:nn,renderFullObject:!0,width:100,enableSort:!0},{label:"Deleted",elementKey:"delete_flag",renderFunction:function(e){return e?"Yes":"No"},width:60}],rn=t(46078),an=(0,C.Z)((function(e){return(0,c.Z)({browsePaper:{border:0,"@media (max-width: 800px)":{width:800}},parentWrapper:{position:"relative",height:"calc(100% - 60px)","@media (max-width: 800px)":{overflowX:"auto"},"@media (max-width: 1060px)":{height:"calc(100% - 115px)"}},"@global":{".rowLine:hover .iconFileElm":{backgroundImage:"url(/images/ob_file_filled.svg)"},".rowLine:hover .iconFolderElm":{backgroundImage:"url(/images/ob_folder_filled.svg)"}}})})),sn=function(e){var n=e.internalPaths,t=an(),i=(0,d.TL)(),o=(0,s.UO)(),c=(0,s.s0)(),l=(0,r.useState)("ASC"),u=(0,h.Z)(l,2),m=u[0],x=u[1],b=(0,r.useState)("name"),v=(0,h.Z)(b,2),_=v[0],S=v[1],w=o.bucketName||"",C=(0,a.v9)((function(e){return e.objectBrowser.objectDetailsOpen})),Z=(0,a.v9)((function(e){return e.objectBrowser.loadingObjects})),N=(0,a.v9)(rn.$4),F=!(null===N||void 0===N||!N.includes("object-browser-only")),O=(0,a.v9)((function(e){return e.objectBrowser.rewind.rewindEnabled})),I=(0,a.v9)((function(e){return e.objectBrowser.records})),L=(0,a.v9)((function(e){return e.objectBrowser.searchObjects})),B=(0,a.v9)((function(e){return e.objectBrowser.selectedObjects})),P=(0,a.v9)((function(e){return e.objectBrowser.connectionError})),D=(0,a.v9)((function(e){return e.system.anonymousMode})),R=(0,T.F)(w,[y.Ft.S3_LIST_BUCKET,y.Ft.S3_ALL_LIST_BUCKET]),M=I.filter((function(e){return""===L||e.name.toLowerCase().indexOf(L.toLowerCase())>=0})).sort((0,A.P_)(_)),U=[];U="ASC"===m?M:M.reverse();var z=[{type:"view",tooltip:"View",onClick:function(e){var t,o=e.name||"",r="/browser/".concat(w).concat(o?"/".concat((0,g.LL)(o)):"");!D||null===n||null!==(t=e.name)&&void 0!==t&&t.endsWith("/")?(i((0,E.S2)([])),c(r),D||(i((0,E.vb)(!0)),i((0,E.Eq)(!0)),i((0,E.d_)(!0))),i((0,E.EE)("".concat(o?"".concat((0,g.LL)(o)):"")))):Le(i,w,"".concat((0,g.LL)(o)),e)},sendOnlyId:!1}],G=R||D?"This location is empty".concat(O?"":", please try uploading a new file"):(0,y.MK)([y.Ft.S3_LIST_BUCKET,y.Ft.S3_ALL_LIST_BUCKET],"view Objects in this bucket");P&&(G="Objects List unavailable. Please review your WebSockets configuration and try again");var W="calc(100vh - 290px)";return F&&(W="calc(100vh - 315px)"),(0,k.jsx)(p.wQF,{itemActions:z,columns:O?on:tn,isLoading:Z,entityName:"Objects",idField:"name",records:U,customPaperHeight:W,selectedItems:B,onSelect:D?void 0:function(e){var n=e.target,t=n.value,o=n.checked,r=(0,f.Z)(B);return o?r.push(t):r=r.filter((function(e){return e!==t})),i((0,E.S2)(r)),i((0,E.EE)(null)),r},customEmptyMessage:G,sortConfig:{currentSort:_,currentDirection:m,triggerSort:function(e){var n=j()(e,"sortDirection","DESC");S(e.sortBy),x(n),i((0,E.Cn)(!0))}},onSelectAll:function(){if(i((0,E.EE)(null)),B.length!==U.length){var e=U.map((function(e){return e.name}));i((0,E.S2)(e))}else i((0,E.S2)([]))},rowStyle:function(e){var n,t=e.index;return null!==(n=U[t])&&void 0!==n&&n.delete_flag?"deleted":""},parentClassName:t.parentWrapper,sx:{minHeight:C?"100%":"initial"},noBackground:!0})},cn=t(96382),ln=(0,cn.hg)("objectBrowser/downloadSelected",function(){var e=(0,ye.Z)((0,Te.Z)().mark((function e(n,t){var i,o,r,a,s,c,l,d;return(0,Te.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=t.getState,t.rejectWithValue,o=t.dispatch,r=i(),a=function(e){var t=(0,g.LL)("".concat(n,"-").concat(e.name,"-").concat((new Date).getTime(),"-").concat(Math.random())),i=(0,ke.YO)(8),r=(0,A.LR)(n,(0,g.LL)(e.name),e.version_id,e.size,null,i,(function(e){o((0,E.RO)({instanceID:t,progress:e}))}),(function(){o((0,E.oK)(t))}),(function(e){o((0,E.qJ)({instanceID:t,msg:e}))}),(function(){o((0,E.Im)(t))}),(function(){o((0,F.y1)("File download will be handled directly by the browser."))}));(0,ke.EN)(i,r),o((0,E.Mc)({ID:i,bucketName:n,done:!1,instanceID:t,percentage:0,prefix:e.name,type:"download",waitingForFile:!0,failed:!1,cancelled:!1,errorMessage:""}))},0===r.objectBrowser.selectedObjects.length){e.next=26;break}if(s=[],c=function(e){return r.objectBrowser.selectedObjects.includes(e.name)},1!==(s=r.objectBrowser.records.filter(c)).length){e.next=16;break}if(!(s[0].name.length>200&&(0,g.mv)().toLowerCase().includes("win"))){e.next=13;break}return o((0,E.$y)(s[0])),e.abrupt("return");case 13:a(s[0]);case 14:e.next=26;break;case 16:if(1!==s.length){e.next=20;break}a(s[0]),e.next=26;break;case 20:if(!(s.length>1)){e.next=26;break}return l="".concat(x.ou.now().toFormat("LL-dd-yyyy-HH-mm-ss"),"_files_list.zip"),d=s.reduce((function(e,n){var t=null===n||void 0===n?void 0:n.delete_flag;return n&&!t?e.push(n.name):console.log("Skipping ".concat(null===n||void 0===n?void 0:n.name," from download.")),e}),[]),e.next=25,(0,A.Sv)(n,d,l);case 25:return e.abrupt("return");case 26:case"end":return e.stop()}}),e)})));return function(n,t){return e.apply(this,arguments)}}()),dn=(0,cn.hg)("objectBrowser/openPreview",function(){var e=(0,ye.Z)((0,Te.Z)().mark((function e(n,t){var i,o,r,a,s;return(0,Te.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=t.getState,t.rejectWithValue,o=t.dispatch,1===(r=i()).objectBrowser.selectedObjects.length&&(s=function(e){return r.objectBrowser.selectedObjects.includes(e.name)},(a=r.objectBrowser.records.find(s))&&(o((0,E.eP)(a)),o((0,E.ei)(!0))));case 3:case"end":return e.stop()}}),e)})));return function(n,t){return e.apply(this,arguments)}}()),un=(0,cn.hg)("objectBrowser/openShare",function(){var e=(0,ye.Z)((0,Te.Z)().mark((function e(n,t){var i,o,r,a,s;return(0,Te.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=t.getState,t.rejectWithValue,o=t.dispatch,1===(r=i()).objectBrowser.selectedObjects.length&&(s=function(e){return r.objectBrowser.selectedObjects.includes(e.name)},(a=r.objectBrowser.records.find(s))&&(o((0,E.eP)(a)),o((0,E.Qf)(!0))));case 3:case"end":return e.stop()}}),e)})));return function(n,t){return e.apply(this,arguments)}}()),fn=(0,cn.hg)("objectBrowser/openAnonymousAccess",function(){var e=(0,ye.Z)((0,Te.Z)().mark((function e(n,t){var i,o,r;return(0,Te.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=t.getState,o=t.dispatch,1===(r=i()).objectBrowser.selectedObjects.length&&r.objectBrowser.selectedObjects[0].endsWith("/")&&o((0,E.xV)(!0));case 3:case"end":return e.stop()}}),e)})));return function(n,t){return e.apply(this,arguments)}}()),hn=t(59114),mn=function(){var e=(0,d.TL)(),n=(0,a.v9)((function(e){return e.objectBrowser.searchObjects}));return(0,k.jsx)(hn.Z,{placeholder:"Start typing to filter objects in the bucket",onChange:function(n){e((0,E.G4)(n))},value:n})},pn=t(94619),xn=(0,N.Z)(r.lazy((function(){return t.e(711).then(t.bind(t,50711))}))),bn=(0,N.Z)(r.lazy((function(){return Promise.resolve().then(t.bind(t,34433))}))),vn=(0,N.Z)(r.lazy((function(){return Promise.all([t.e(2193),t.e(6901)]).then(t.bind(t,26901))}))),jn=(0,N.Z)(r.lazy((function(){return Promise.resolve().then(t.bind(t,78562))}))),gn=(0,C.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)({badgeOverlap:{"& .MuiBadge-badge":{top:10,right:1,width:5,height:5,minWidth:5}}},u.VX),u.OR),u.qg),{},{searchField:(0,o.Z)((0,o.Z)({},u.qg.searchField),{},{maxWidth:380}),screenTitleContainer:{border:"#EAEDEE 1px solid",padding:"0 5px"},labelStyle:{color:"#969FA8",fontSize:"12px"},breadcrumbsContainer:{padding:"12px 14px 5px"},fullContainer:{width:"100%",position:"relative","&.detailsOpen":{"@media (max-width: 799px)":{display:"none"}}},hideListOnSmall:{"@media (max-width: 799px)":{display:"none"}},actionsSection:{display:"flex",justifyContent:"space-between",width:"100%"}},u.C4),u.cx),u.Bz))})),_n={borderWidth:2,borderRadius:2,borderColor:"#eeeeee",outline:"none"},Sn={borderStyle:"dashed",backgroundColor:"#fafafa",borderColor:"#2196f3"},wn={borderStyle:"dashed",backgroundColor:"#fafafa",borderColor:"#00e676"},Cn=function(){var e,n=gn(),t=(0,d.TL)(),i=(0,s.UO)(),c=(0,s.s0)(),l=(0,s.TH)(),u=(0,a.v9)((function(e){return e.objectBrowser.rewind.rewindEnabled})),v=(0,a.v9)((function(e){return e.objectBrowser.rewind.bucketToRewind})),S=(0,a.v9)((function(e){return e.objectBrowser.versionsMode})),w=(0,a.v9)((function(e){return e.objectBrowser.showDeleted})),C=(0,a.v9)((function(e){return e.objectBrowser.objectDetailsOpen})),Z=(0,a.v9)((function(e){return e.objectBrowser.selectedInternalPaths})),N=(0,a.v9)((function(e){return e.objectBrowser.loadingObjects})),L=(0,a.v9)((function(e){return e.objectBrowser.simplePath})),B=(0,a.v9)((function(e){return e.objectBrowser.versionInfo})),D=(0,a.v9)((function(e){return e.objectBrowser.lockingEnabled})),R=(0,a.v9)((function(e){return e.objectBrowser.downloadRenameModal})),M=(0,a.v9)((function(e){return e.objectBrowser.selectedPreview})),U=(0,a.v9)((function(e){return e.objectBrowser.shareFileModalOpen})),W=(0,a.v9)((function(e){return e.objectBrowser.previewOpen})),H=(0,a.v9)((function(e){return e.objectBrowser.selectedBucket})),V=(0,a.v9)((function(e){return e.system.anonymousMode})),J=(0,a.v9)((function(e){return e.objectBrowser.anonymousAccessOpen})),Y=(0,a.v9)(Qe.HQ),q=(0,a.v9)(Qe.G6),$=(0,r.useState)(!1),X=(0,h.Z)($,2),Q=X[0],ee=X[1],ne=(0,r.useState)(!1),te=(0,h.Z)(ne,2),ie=te[0],ae=te[1],se=(0,r.useState)(!1),ce=(0,h.Z)(se,2),de=ce[0],ue=ce[1],fe=(0,r.useState)(!1),he=(0,h.Z)(fe,2),me=he[0],pe=he[1],xe=(0,r.useState)(!1),be=(0,h.Z)(xe,2),ve=be[0],je=be[1],ge=(0,r.useState)(null),_e=(0,h.Z)(ge,2),Se=_e[0],we=_e[1],Ce=(0,r.useState)(null),Ze=(0,h.Z)(Ce,2),Te=Ze[0],ye=Ze[1],Ne=(0,r.useState)(!1),Fe=(0,h.Z)(Ne,2),Ee=Fe[0],Oe=Fe[1],Ie=le(B.status),Le=i.bucketName||"",Be=l.pathname.split("/browser/".concat(Le,"/")),Ae=2===Be.length?Be[1]:"",Re=(0,g.IO)(Ae),Me=Re.split("/").filter((function(e){return""!==e})),Ue=[Le];Me.length>0&&(Ue=Ue.concat(Me));var ze=(0,r.useRef)(null),Ge=(0,r.useRef)(null),We=(0,a.v9)((function(e){return e.console.session&&e.console.session.permissions||{}})),He=[y.Ft.S3_PUT_OBJECT,y.Ft.S3_PUT_ACTIONS],Ve=Ue.join("/"),Je=function(e,n){var t=I(e,n,arguments.length>2&&void 0!==arguments[2]?arguments[2]:[]).reduce((function(e,n){var t=O(n);return t&&e.push(".".concat(t)),e}),[]);return(0,f.Z)(new Set(t)).join(",")}(We,Ve,He),Ye=I(We,Ve,He),qe=(0,T.F)([Ve].concat((0,f.Z)(Ye)),[y.Ft.S3_GET_OBJECT,y.Ft.S3_GET_ACTIONS]),$e=(0,T.F)([Ve].concat((0,f.Z)(Ye)),[y.Ft.S3_DELETE_OBJECT]),en=(0,T.F)([Ve].concat((0,f.Z)(Ye)),He)||V,nn=(0,T.F)(Le,[y.Ft.S3_GET_BUCKET_POLICY,y.Ft.S3_PUT_BUCKET_POLICY,y.Ft.S3_GET_ACTIONS,y.Ft.S3_PUT_ACTIONS]),tn=(0,a.v9)((function(e){return e.objectBrowser.selectedObjects})),on=(0,r.useCallback)((function(){var e=tn[0];if(!Ee){var n=(0,g.LL)(e);oe.h.buckets.getObjectMetadata(Le,{prefix:n}).then((function(e){var n=j()(e.data,"objectMetadata",{});Oe(!0),ye(n)})).catch((function(e){console.error("Error Getting Metadata Status: ",e,null===e||void 0===e?void 0:e.detailedError),Oe(!0)}))}}),[Le,tn,Ee]);(0,r.useEffect)((function(){Le&&1===tn.length&&on()}),[Le,tn,on]),(0,r.useEffect)((function(){t((0,E.G4)("")),t((0,E.Cn)(!0)),t((0,E.S2)([]))}),[L,t]),(0,r.useEffect)((function(){u&&v!==Le&&t((0,E._w)())}),[u,v,Le,t]),(0,r.useEffect)((function(){null!==Ge.current&&(Ge.current.setAttribute("directory",""),Ge.current.setAttribute("webkitdirectory",""))}),[Ge]),(0,r.useEffect)((function(){if(1===tn.length){var e=tn[0],n=(0,A.s7)(Te,e);je(!("none"===n||!qe)),e.endsWith("/")||qe?pe(!0):pe(!1)}else pe(!1),je(!1)}),[tn,qe,Te]),(0,r.useEffect)((function(){Se||V||oe.h.buckets.getBucketQuota(Le).then((function(e){var n=null;e.data.quota&&(n=e.data),we(n)})).catch((function(e){console.error("Error Getting Quota Status: ",e.error.detailedMessage),we(null)}))}),[Se,Le,V]),(0,r.useEffect)((function(){tn.length>0?t((0,E.vb)(!0)):0!==tn.length||null!==Z||N||t((0,E.vb)(!1))}),[tn,Z,t,N]),(0,r.useEffect)((function(){de||(t((0,Qe.d5)(!0)),ue(!0))}),[de,t,ue]),(0,r.useEffect)((function(){!N&&!Y||V||oe.h.buckets.bucketInfo(Le).then((function(e){t((0,Qe.d5)(!1)),t((0,Qe.f4)(e.data)),t((0,E.RS)(Le))})).catch((function(e){t((0,Qe.d5)(!1)),t((0,F.Ih)((0,re.g)(e)))}))}),[Le,Y,t,V,N]),(0,r.useEffect)((function(){""!==H&&oe.h.buckets.getBucketRetentionConfig(H).then((function(e){t((0,E.c8)(e.data))})).catch((function(){t((0,E.c8)(null))}))}),[H,t]);var rn=function(e){if(null!==e&&void 0!==e&&null!==e.target.files&&void 0!==e.target.files){e.preventDefault();for(var n=[],t=0;t1,w="An error occurred while uploading the file".concat(S?"s":"","."),C={413:"Error - File size too large"};_.withCredentials=!1,_.onload=function(e){if(_.status>=200&&_.status<300)t((0,E.oK)(v)),a({status:_.status}),(0,ke.GM)(p);else{if(C[_.status])w=C[_.status];else if(_.response)try{var n=JSON.parse(_.response);w=n.detailedMessage}catch(i){w="something went wrong"}t((0,E.qJ)({instanceID:v,msg:w})),s({status:_.status,message:w}),(0,ke.GM)(p)}},_.upload.addEventListener("error",(function(e){s(w),t((0,E.qJ)({instanceID:v,msg:"A network error occurred."}))})),_.upload.addEventListener("progress",(function(e){var n=Math.floor(100*e.loaded/e.total);t((0,E.RO)({instanceID:v,progress:n}))})),_.onerror=function(){s(w),t((0,E.qJ)({instanceID:v,msg:"A network error occurred."}))},_.onloadend=function(){0===e.length&&t((0,E.Cn)(!0))},_.onabort=function(){t((0,E.Im)(v))};var Z=new FormData;void 0!==r.size&&(Z.append(r.size.toString(),d,l),(0,ke.EN)(p,_),t((0,E.Mc)({ID:p,bucketName:n,done:!1,instanceID:v,percentage:0,prefix:"".concat((0,g.IO)(u)).concat(l),type:"upload",waitingForFile:!1,failed:!1,cancelled:!1,errorMessage:""})),(0,ke.N5)(p,Z))}))},a=[];t((0,E.LD)());for(var s=0;s0){var i=a.length,o=a.length-n.length,r={errorMessage:"There were some errors during file upload",detailedError:"Uploaded files ".concat(o,"/").concat(i)};t((0,F.Ih)(r))}t((0,E.Cn)(!0)),t((0,E.S2)([]))}))}(e,Le,i,n)}),[Le,t,L,V]),cn=(0,r.useCallback)((function(e){if(e&&e.length>0&&en){var n,i,o=e[0].path,r=[];if((r=Je.length>0?e.filter((function(e){var n=O(e.name);return Je.includes(n)})):e).length)an(r,o),(n=console).log.apply(n,["".concat(r.length," Allowed Files Processed out of ").concat(e.length,"."),Ve].concat((0,f.Z)(Ye))),r.length!==e.length&&t((0,F.Ih)({errorMessage:"Upload is restricted.",detailedError:(0,y.MK)([y.Ft.S3_PUT_OBJECT,y.Ft.S3_PUT_ACTIONS],"upload objects to this location")}));else t((0,F.Ih)({errorMessage:"Could not process drag and drop.",detailedError:(0,y.MK)([y.Ft.S3_PUT_OBJECT,y.Ft.S3_PUT_ACTIONS],"upload objects to this location")})),(i=console).error.apply(i,["Could not process drag and drop . upload may be restricted.",Ve].concat((0,f.Z)(Ye)))}en||t((0,F.Ih)({errorMessage:"Upload not allowed",detailedError:(0,y.MK)([y.Ft.S3_PUT_OBJECT,y.Ft.S3_PUT_ACTIONS],"upload objects to this location")}))}),[an]),hn=(0,m.uI)({noClick:!0,onDrop:cn}),Cn=hn.getRootProps,Zn=hn.getInputProps,Tn=hn.isDragActive,yn=hn.isDragAccept,Nn=(0,r.useMemo)((function(){return(0,o.Z)((0,o.Z)((0,o.Z)({},_n),Tn?Sn:{}),yn?wn:{})}),[Tn,yn]),Fn=function(e){if(t((0,E.EE)(null)),t((0,E.db)({status:!1})),C&&null!==Z){var n=(0,g.IO)(Ae).split("/");n.pop();var i="";n&&n.length>0&&(i="".concat(n.join("/"),"/")),c("/browser/".concat(Le,"/").concat((0,g.LL)(i)))}t((0,E.vb)(!1)),t((0,E.S2)([])),e&&t((0,E.Cn)(!0))},En=x.ou.now();null!==q&&void 0!==q&&q.creation_date&&(En=x.ou.fromISO(q.creation_date));var On=(null===tn||void 0===tn?void 0:tn.length)<=1?"Download Selected":" Download selected objects as Zip. Any Deleted objects in the selection would be skipped from download.",In=[{action:function(){t(ln(Le))},label:"Download",disabled:!qe||0===(null===tn||void 0===tn?void 0:tn.length),icon:(0,k.jsx)(p._8t,{}),tooltip:qe?On:(0,y.MK)([y.Ft.S3_GET_OBJECT,y.Ft.S3_GET_ACTIONS],"download objects from this bucket")},{action:function(){t(un())},label:"Share",disabled:1!==tn.length||!me,icon:(0,k.jsx)(p.aAc,{}),tooltip:me?"Share Selected File":"Sharing unavailable"},{action:function(){t(dn())},label:"Preview",disabled:1!==tn.length||!ve,icon:(0,k.jsx)(p.P99,{}),tooltip:ve?"Preview Selected File":"Preview unavailable"},{action:function(){t(fn())},label:"Anonymous Access",disabled:1!==tn.length||!tn[0].endsWith("/")||!nn,icon:(0,k.jsx)(p.cuP,{}),tooltip:1===tn.length&&tn[0].endsWith("/")?"Set Anonymous Access to this Folder":"Anonymous Access unavailable"},{action:function(){ee(!0)},label:"Delete",icon:(0,k.jsx)(p.pJl,{}),disabled:!$e||0===tn.length,tooltip:$e?"Delete Selected Files":(0,y.MK)([y.Ft.S3_DELETE_OBJECT],"delete objects in this bucket")}];return(0,k.jsxs)(r.Fragment,{children:[U&&M&&(0,k.jsx)(bn,{open:U,closeModalAndRefresh:function(){t((0,E.Qf)(!1)),t((0,E.eP)(null))},bucketName:Le,dataObject:{name:M.name,last_modified:"",version_id:M.version_id}}),Q&&(0,k.jsx)(xn,{deleteOpen:Q,selectedBucket:Le,selectedObjects:tn,closeDeleteModalAndRefresh:function(e){ee(!1),e&&(t((0,F.y1)("Objects deleted successfully.")),t((0,E.S2)([])),t((0,E.Cn)(!0)))},versioning:B}),ie&&(0,k.jsx)(vn,{open:ie,closeModalAndRefresh:function(){ae(!1)},bucketName:Le}),W&&(0,k.jsx)(jn,{open:W,bucketName:Le,object:M,onClosePreview:function(){t((0,E.ei)(!1)),t((0,E.eP)(null))}}),!!R&&(0,k.jsx)(Pe,{open:!!R,closeModal:function(){t((0,E.$y)(null))},currentItem:(null===(e=R.name.split("/"))||void 0===e?void 0:e.pop())||"",bucketName:Le,internalPaths:Ae,actualInfo:{name:R.name,last_modified:"",version_id:R.version_id,size:R.size}}),J&&(0,k.jsx)(pn.default,{onClose:function(){t((0,E.xV)(!1))},bucket:Le,modalOpen:J,prefilledRoute:"".concat(tn[0],"*")}),(0,k.jsxs)(p.Xgh,{variant:"full",children:[V&&(0,k.jsx)("div",{style:{paddingBottom:16},children:(0,k.jsx)(mn,{})}),(0,k.jsx)(b.ZP,{item:!0,xs:12,className:n.screenTitleContainer,children:(0,k.jsx)(p.UHn,{icon:(0,k.jsx)("span",{children:(0,k.jsx)(p.wNb,{style:{width:30}})}),title:Le,subTitle:V?null:(0,k.jsxs)(r.Fragment,{children:[(0,k.jsxs)("span",{className:n.detailsSpacer,children:["Created on:\xa0\xa0",(0,k.jsx)("strong",{children:null!==q&&void 0!==q&&q.creation_date?En.toFormat("ccc, LLL dd yyyy HH:mm:ss (ZZZZ)"):""})]}),(0,k.jsxs)("span",{className:n.detailsSpacer,children:["Access:\xa0\xa0\xa0",(0,k.jsx)("strong",{children:(null===q||void 0===q?void 0:q.access)||""})]}),q&&(0,k.jsx)(r.Fragment,{children:(0,k.jsxs)("span",{className:n.detailsSpacer,children:[q.size&&(0,k.jsx)(r.Fragment,{children:(0,g.l5)(q.size)}),q.size&&Se&&(0,k.jsxs)(r.Fragment,{children:[" ","/ ",(0,g.l5)(Se.quota||0)]}),q.size&&q.objects?" - ":"",q.objects&&(0,k.jsxs)(r.Fragment,{children:[q.objects,"\xa0Object",q.objects&&1!==q.objects?"s":""]})]})})]}),actions:(0,k.jsxs)(r.Fragment,{children:[!V&&(0,k.jsx)(z.Z,{tooltip:"Rewind Bucket",children:(0,k.jsx)(p.zxk,{id:"rewind-objects-list",label:"Rewind",icon:(0,k.jsx)(_.Z,{badgeContent:" ",color:"secondary",variant:"dot",invisible:!u,className:n.badgeOverlap,sx:{height:16},children:(0,k.jsx)(p.F_y,{style:{minWidth:16,minHeight:16,width:16,height:16,marginTop:-3}})}),variant:"regular",onClick:function(){ae(!0)},disabled:!Ie||!(0,T.F)(Le,[y.Ft.S3_GET_OBJECT,y.Ft.S3_GET_ACTIONS])})}),(0,k.jsx)(z.Z,{tooltip:"Reload List",children:(0,k.jsx)(p.zxk,{id:"refresh-objects-list",label:"Refresh",icon:(0,k.jsx)(p.DuK,{}),variant:"regular",onClick:function(){S?t((0,E.Eq)(!0)):(t((0,E.o_)()),t((0,E._D)(!0)),t((0,E.Cn)(!0)))},disabled:!V&&(!(0,T.F)(Le,[y.Ft.S3_LIST_BUCKET,y.Ft.S3_ALL_LIST_BUCKET])||u)})}),(0,k.jsx)("input",{type:"file",multiple:!0,accept:Je||void 0,onChange:rn,style:{display:"none"},ref:ze}),(0,k.jsx)("input",{type:"file",multiple:!0,onChange:rn,style:{display:"none"},ref:Ge}),(0,k.jsx)(G,{bucketName:Le,uploadPath:Ve,uploadFileFunction:function(e){ze&&ze.current&&ze.current.click(),e()},uploadFolderFunction:function(e){Ge&&Ge.current&&Ge.current.click(),e()}})]}),bottomBorder:!1})}),(0,k.jsxs)("div",(0,o.Z)((0,o.Z)({id:"object-list-wrapper"},Cn({style:(0,o.Z)({},Nn)})),{},{children:[(0,k.jsx)("input",(0,o.Z)({},Zn())),(0,k.jsxs)(b.ZP,{item:!0,xs:12,className:n.tableBlock,sx:{border:"#EAEDEE 1px solid",borderTop:0},children:[S?(0,k.jsx)(r.Fragment,{children:null!==Z&&(0,k.jsx)(Xe,{internalPaths:Z,bucketName:Le})}):(0,k.jsx)(T.s,{scopes:[y.Ft.S3_LIST_BUCKET,y.Ft.S3_ALL_LIST_BUCKET],resource:Le,errorProps:{disabled:!0},children:(0,k.jsxs)(b.ZP,{item:!0,xs:12,className:"".concat(n.fullContainer," ").concat(C?"detailsOpen":""," "),children:[!V&&(0,k.jsx)(b.ZP,{item:!0,xs:12,className:n.breadcrumbsContainer,children:(0,k.jsx)(P,{bucketName:Le,internalPaths:Re,additionalOptions:!Ie||u?null:(0,k.jsx)("div",{children:(0,k.jsx)(Ke,{name:"deleted_objects",id:"showDeletedObjects",value:"deleted_on",label:"Show deleted objects",onChange:function(){t((0,E.o_)()),t((0,E.mz)(!w)),Fn(!0)},checked:w,overrideLabelClasses:n.labelStyle,className:n.overrideShowDeleted,noTopMargin:!0})}),hidePathButton:!1})}),(0,k.jsx)(sn,{internalPaths:Z})]})}),!V&&(0,k.jsx)(T.s,{scopes:[y.Ft.S3_LIST_BUCKET,y.Ft.S3_ALL_LIST_BUCKET],resource:Le,errorProps:{disabled:!0},children:(0,k.jsxs)(K,{open:C,closePanel:function(){Fn(!1)},className:"".concat(S?n.hideListOnSmall:""),children:[tn.length>0&&(0,k.jsx)(p.Wk,{items:In,title:"Selected Objects:"}),null!==Z&&(0,k.jsx)(De,{internalPaths:Z,bucketName:Le,onClosePanel:Fn,versioningInfo:B,locking:D})]})})]})]}))]})]})},Zn=t(49535),Tn=t(26824),yn=t(73996),Nn=t(47974),Fn=t(4677),En=t(99670),On=function(e){var n=e.bucketName,t=(0,d.TL)(),i=(0,a.v9)(rn.$4),o=(0,a.v9)((function(e){return e.objectBrowser.versionsMode})),c=(0,a.v9)((function(e){return e.objectBrowser.versionedFile})),l=(0,a.v9)((function(e){return e.objectBrowser.searchVersions})),u=!(null===i||void 0===i||!i.includes("object-browser-only")),f=(0,s.s0)(),h=(0,Zn.Z)(n,[y.Ft.S3_GET_BUCKET_POLICY,y.Ft.S3_PUT_BUCKET_POLICY,y.Ft.S3_GET_BUCKET_VERSIONING,y.Ft.S3_PUT_BUCKET_VERSIONING,y.Ft.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,y.Ft.S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION,y.Ft.S3_DELETE_BUCKET,y.Ft.S3_GET_BUCKET_NOTIFICATIONS,y.Ft.S3_PUT_BUCKET_NOTIFICATIONS,y.Ft.S3_GET_REPLICATION_CONFIGURATION,y.Ft.S3_PUT_REPLICATION_CONFIGURATION,y.Ft.S3_GET_LIFECYCLE_CONFIGURATION,y.Ft.S3_PUT_LIFECYCLE_CONFIGURATION,y.Ft.ADMIN_GET_BUCKET_QUOTA,y.Ft.ADMIN_SET_BUCKET_QUOTA,y.Ft.S3_PUT_BUCKET_TAGGING,y.Ft.S3_GET_BUCKET_TAGGING,y.Ft.S3_LIST_BUCKET_VERSIONS,y.Ft.S3_GET_BUCKET_POLICY_STATUS,y.Ft.S3_DELETE_BUCKET_POLICY,y.Ft.S3_GET_ACTIONS,y.Ft.S3_PUT_ACTIONS]),m=(0,k.jsx)(r.Fragment,{children:o?(0,k.jsx)(r.Fragment,{children:(0,k.jsx)(hn.Z,{placeholder:"Start typing to filter versions of ".concat(c),onChange:function(e){t((0,E.Pr)(e))},value:l})}):(0,k.jsx)(T.s,{scopes:[y.Ft.S3_LIST_BUCKET,y.Ft.S3_ALL_LIST_BUCKET],resource:n,errorProps:{disabled:!0},children:(0,k.jsx)(mn,{})})});return(0,r.useEffect)((function(){t((0,F.Sc)("object_browser"))}),[]),(0,k.jsx)(r.Fragment,{children:u?(0,k.jsxs)(p.rjZ,{container:!0,sx:{padding:"20px 32px 0"},children:[(0,k.jsx)(p.rjZ,{children:(0,k.jsx)(yn.Z,{marginRight:30,marginTop:10})}),(0,k.jsxs)(p.rjZ,{item:!0,xs:!0,sx:{display:"flex",gap:10},children:[m,(0,k.jsx)(Fn.Z,{})]})]}):(0,k.jsx)(Nn.Z,{label:(0,k.jsx)(p.hbI,{label:"Object Browser",onClick:function(){f(y.gA.OBJECT_BROWSER_VIEW)}}),actions:(0,k.jsxs)(r.Fragment,{children:[(0,k.jsx)(T.s,{scopes:y.D[y.EI.BUCKET_ADMIN],resource:n,errorProps:{disabled:!0},children:(0,k.jsx)(z.Z,{tooltip:h?"Configure Bucket":"You do not have the required permissions to configure this bucket. Please contact your MinIO administrator to request "+y.EI.BUCKET_ADMIN+" permisions.",children:(0,k.jsx)(p.zxk,{id:"configure-bucket-main",color:"primary","aria-label":"Configure Bucket",onClick:function(){return f("/buckets/".concat(n,"/admin"))},icon:(0,k.jsx)(p.ewm,{style:{width:20,height:20,marginTop:-3}}),style:{padding:"0 10px"}})})}),(0,k.jsx)(En.Z,{})]}),middleComponent:m})})},In=0,kn=0,Ln=!1,Bn=function e(n,t,o){if(!Ln){Ln=!0;var r=new URL(window.location.toString()),a=r.port,s=new URL(document.baseURI).pathname,c=(0,Tn.x2)(r.protocol);(i=new WebSocket("".concat(c,"://").concat(r.hostname,":").concat(a).concat(s,"ws/objectManager"))).onopen=function(){Ln=!1,n&&n(),kn=0},t&&(i.onmessage=t);var l=function(){kn<=5?(e((function(){}),t,o),kn+=1):(console.error("Websocket not available. Please review that your environment settings are enabled to allow websocket connections and that requests are made from the same origin."),o&&o("Couldn't establish WebSocket connection. Please review your configuration and try again."))};i.onclose=function(){Ln=!1,console.warn("Websocket Disconnected. Attempting Reconnection..."),setTimeout(l,3e3)},i.onerror=function(){Ln=!1,console.error("Error in websocket connection. Attempting reconnection...")}}},Pn=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)({},u.Bz))}))((function(){var e=(0,d.TL)(),n=(0,s.UO)(),t=(0,s.TH)(),o=(0,a.v9)((function(e){return e.objectBrowser.loadingVersioning})),c=(0,a.v9)((function(e){return e.objectBrowser.rewind.rewindEnabled})),l=(0,a.v9)((function(e){return e.objectBrowser.rewind.dateToRewind})),u=(0,a.v9)((function(e){return e.objectBrowser.showDeleted})),f=(0,a.v9)((function(e){return e.console.session.allowResources})),h=(0,a.v9)((function(e){return e.objectBrowser.loadingObjects})),m=(0,a.v9)((function(e){return e.objectBrowser.loadingLocking})),p=(0,a.v9)((function(e){return e.objectBrowser.loadRecords})),x=(0,a.v9)((function(e){return e.objectBrowser.selectedInternalPaths})),b=(0,a.v9)((function(e){return e.objectBrowser.simplePath})),v=(0,a.v9)((function(e){return e.objectBrowser.isOpeningObjectDetail})),j=(0,a.v9)((function(e){return e.system.anonymousMode})),_=n.bucketName||"",S=t.pathname.split("/browser/".concat(_,"/")),w=2===S.length?S[1]:"",C=(0,r.useCallback)((function(n){e((0,E.Cn)(!1));var t=JSON.parse(n.data.toString());if(In===t.request_id){if(t.request_id!==In)return;if("The Access Key Id you provided does not exist in our records."===t.error)window.location.reload();else if("Access Denied."===t.error){var i=t.prefix,o="";if(i){var r=(0,g.IO)(i);o=r.endsWith("/")?r:r+"/"}var a=(0,A.kh)(t.bucketName||_,o,f||[]);return void(a&&0!==a.length?e((0,E.ZJ)(a)):e((0,F.Ih)({errorMessage:t.error,detailedError:t.error})))}if(t.request_end)return e((0,E.Cn)(!1)),void e((0,E._D)(!1));t.data&&e((0,E.rW)(t.data))}}),[e,f,_]),Z=(0,r.useCallback)((function(n,t){if(i&&1===i.readyState)try{var o=In+1;e((0,E.o_)()),e((0,E.ZR)(!1));var r={bucket_name:_,prefix:(0,g.LL)(n),mode:c||u?"rewind":"objects",date:t.toISOString(),request_id:o};i.send(JSON.stringify(r)),In=o}catch(a){console.error(a)}else{Bn((function(){Z(n,t)}),C,(function(n){e((0,F.Ih)({errorMessage:n,detailedError:n})),e((0,E.ZR)(!0))}))}}),[_,c,u,e,C]);(0,r.useEffect)((function(){return function(){var e={mode:"cancel",request_id:In};i&&1===i.readyState&&i.send(JSON.stringify(e))}}),[]),(0,r.useEffect)((function(){var n=(0,g.IO)(w);e((0,E.IJ)(!0)),n.endsWith("/")||""===n?(e((0,E.vb)(!1)),e((0,E.EE)(null)),e((0,E.Su)(""===n?"/":n)),e((0,E.Jn)(!0))):(e((0,E.vH)(!0)),e((0,E.vb)(!0)),e((0,E.Eq)(!0)),e((0,E.EE)("".concat(n?"".concat((0,g.LL)(n)):""))),e((0,E.Su)("".concat(n.split("/").slice(0,-1).join("/"),"/"))))}),[_,w,l,c,e]),(0,r.useEffect)((function(){if(!h&&!p&&!c&&!v){var n=(0,g.IO)(w);if(!n.endsWith("/")&&b!==n&&""!==n){(0,E._D)(!0);var t="".concat(n.split("/").slice(0,-1).join("/"),"/");Z(t,new Date)}}e((0,E.d_)(!1))}),[h,p,e,w,Z,c,b]);var T=(0,Zn.Z)(_,[y.Ft.S3_LIST_BUCKET,y.Ft.S3_ALL_LIST_BUCKET])||j;return(0,r.useEffect)((function(){if(h&&T){var n="";if(w){var t=(0,g.IO)(w);n=x===w?"".concat((0,g.IO)(w).split("/").slice(0,-1).join("/"),"/"):t.endsWith("/")?t:t+"/"}var i=new Date;c&&l&&(i=new Date(l)),Z(n,i)}else e((0,E.Cn)(!1))}),[h,w,e,l,c,T,Z]),(0,r.useEffect)((function(){e((0,E.db)({status:!1}))}),[w,e]),(0,r.useEffect)((function(){o&&!j&&(T?oe.h.buckets.getBucketVersioning(_).then((function(n){e((0,E.lS)(n.data)),e((0,E.IJ)(!1))})).catch((function(n){console.error("Error Getting Object Versioning Status: ",n.error.detailedMessage),e((0,E.IJ)(!1))})):(e((0,E.IJ)(!1)),e((0,E.o_)())))}),[_,o,e,T,j]),(0,r.useEffect)((function(){m&&(T?oe.h.buckets.getBucketObjectLockingStatus(_).then((function(n){e((0,E.lY)(n.data.object_locking_enabled)),e((0,E.Jn)(!1))})).catch((function(n){console.error("Error Getting Object Locking Status: ",n.error.detailedMessage),e((0,E.Jn)(!1))})):(e((0,E.o_)()),e((0,E.Jn)(!1))))}),[_,m,e,T]),(0,r.useEffect)((function(){var n=(0,A.kh)(_,"",f||[]);if(_&&(!n||0===n.length)){e((0,E.o_)()),e((0,E._D)(!0)),e((0,E.Cn)(!0));var t="";if(w){var i=(0,g.IO)(w);t=x===w?"".concat((0,g.IO)(w).split("/").slice(0,-1).join("/"),"/"):i.endsWith("/")?i:i+"/"}Z(t,new Date)}}),[_,e,Z,f,w,x]),(0,k.jsxs)(r.Fragment,{children:[!j&&(0,k.jsx)(On,{bucketName:_}),(0,k.jsx)(Cn,{})]})}))},34433:function(e,n,t){t.r(n),t.d(n,{default:function(){return S}});var i=t(29439),o=t(72791),r=t(78687),a=t(29945),s=t(78029),c=t.n(s),l=t(56028),d=t(1413),u=t(99779),f=t(11135),h=t(25787),m=t(23814),p=t(80184),x=(0,h.Z)((function(e){return(0,f.Z)((0,d.Z)((0,d.Z)((0,d.Z)({},m.YI),m.Hr),{},{labelContainer:{display:"flex",alignItems:"center",marginBottom:15},fieldContainer:(0,d.Z)((0,d.Z)({},m.YI.fieldContainer),{},{display:"flex",alignItems:"center",justifyContent:"space-between",paddingBottom:10,marginTop:11,marginBottom:6}),durationInputs:{display:"flex",alignItems:"flex-start",justifyContent:"flex-start",gap:10},validityIndicator:{display:"flex",alignItems:"center",justifyContent:"flex-start",marginTop:25,marginLeft:10},invalidDurationText:{marginTop:15,display:"flex",color:"red",fontSize:11},reverseInput:{flexFlow:"row-reverse","& > label":{fontWeight:400,marginLeft:15,marginRight:25}},validityText:{fontSize:14,marginTop:15,display:"flex",alignItems:"center",justifyContent:"center","@media (max-width: 900px)":{flexFlow:"column"},"& > .min-icon":{color:"#5E5E5E",width:15,height:15,marginRight:10}},validTill:{fontWeight:"bold",marginLeft:15}}))}))((function(e){var n=e.classes,t=e.id,r=e.initialDate,s=e.label,c=e.maxDays,l=e.entity,d=e.onChange,f=(0,o.useState)(7),h=(0,i.Z)(f,2),m=h[0],x=h[1],b=(0,o.useState)(0),v=(0,i.Z)(b,2),j=v[0],g=v[1],_=(0,o.useState)(0),S=(0,i.Z)(_,2),w=S[0],C=S[1],Z=(0,o.useState)(!0),T=(0,i.Z)(Z,2),y=T[0],N=T[1],F=(0,o.useState)(u.ou.now()),E=(0,i.Z)(F,2),O=E[0],I=E[1];(0,o.useEffect)((function(){isNaN(j)||isNaN(m)||isNaN(w)||I(function(e,n,t,i){return u.ou.fromJSDate(e).plus({days:n,hours:t,minutes:i})}(r,m,j,w))}),[r,m,j,w]),(0,o.useEffect)((function(){if(y){var e=O.toFormat("yyyy-MM-dd HH:mm:ss");d(e.split(" ").join("T"),!0)}else d("0000-00-00",!1)}),[O,d,y]),(0,o.useEffect)((function(){var e=!0;(m<0||c&&m>c||isNaN(m))&&(e=!1),(j<0||j>23||isNaN(j))&&(e=!1),(w<0||w>59||isNaN(w))&&(e=!1),!c||m!==c||0===j&&0===w||(e=!1),m<=0&&j<=0&&w<=0&&(e=!1),N(e)}),[O,c,d,m,j,w]);var k={"& .textBoxContainer":{minWidth:0},"& input":{textAlign:"center",paddingRight:10,paddingLeft:10,width:40}};return(0,p.jsx)(o.Fragment,{children:(0,p.jsxs)(a.rjZ,{container:!0,className:n.fieldContainer,children:[(0,p.jsx)(a.rjZ,{item:!0,xs:12,className:n.labelContainer,children:(0,p.jsx)(a.AZs,{htmlFor:t,children:s})}),(0,p.jsxs)(a.rjZ,{item:!0,xs:12,className:n.durationInputs,children:[(0,p.jsx)(a.rjZ,{item:!0,xs:!0,className:n.dateInputContainer,children:(0,p.jsx)(a.Wzg,{id:t,className:"".concat(n.reverseInput," removeArrows"),type:"number",min:"0",max:c?c.toString():"999",label:"Days",name:t,onChange:function(e){x(parseInt(e.target.value))},value:m.toString(),sx:k,noLabelMinWidth:!0})}),(0,p.jsx)(a.rjZ,{item:!0,xs:!0,className:n.dateInputContainer,children:(0,p.jsx)(a.Wzg,{id:t,className:"".concat(n.reverseInput," removeArrows"),type:"number",min:"0",max:"23",label:"Hours",name:t,onChange:function(e){g(parseInt(e.target.value))},value:j.toString(),sx:k,noLabelMinWidth:!0})}),(0,p.jsx)(a.rjZ,{item:!0,xs:!0,className:n.dateInputContainer,children:(0,p.jsx)(a.Wzg,{id:t,className:"".concat(n.reverseInput," removeArrows"),type:"number",min:"0",max:"59",label:"Minutes",name:t,onChange:function(e){C(parseInt(e.target.value))},value:w.toString(),sx:k,noLabelMinWidth:!0})})]}),(0,p.jsx)(a.rjZ,{item:!0,xs:12,className:"".concat(n.validityIndicator," ").concat(n.formFieldRow),children:y?(0,p.jsxs)("div",{className:n.validityText,children:[(0,p.jsx)(a.xPt,{}),(0,p.jsxs)("div",{className:n.validityLabel,children:[l," will be available until:"]})," ",(0,p.jsx)("div",{className:n.validTill,children:O.toFormat("MM/dd/yyyy HH:mm:ss")})]}):(0,p.jsx)("div",{className:n.invalidDurationText,children:"Please select a valid duration."})})]})})})),b=t(45248),v=t(87995),j=t(81551),g=t(31776),_=t(82342),S=function(e){var n=e.open,t=e.closeModalAndRefresh,s=e.bucketName,d=e.dataObject,u=(0,j.TL)(),f=(0,r.v9)(v.N5),h=(0,o.useState)(""),m=(0,i.Z)(h,2),S=m[0],w=m[1],C=(0,o.useState)(!0),Z=(0,i.Z)(C,2),T=Z[0],y=Z[1],N=(0,o.useState)(!1),F=(0,i.Z)(N,2),E=F[0],O=F[1],I=(0,o.useState)(""),k=(0,i.Z)(I,2),L=k[0],B=k[1],P=(0,o.useState)(!0),A=(0,i.Z)(P,2),D=A[0],R=A[1],M=(0,o.useState)("null"),U=(0,i.Z)(M,2),z=U[0],G=U[1],W=new Date;return(0,o.useEffect)((function(){if(void 0===d.version_id)return f?(g.h.buckets.listObjects(s,{prefix:(0,b.LL)(d.name||""),with_versions:f}).then((function(e){var n=(e.data.objects||[]).find((function(e){return e.is_latest}));G(n?"".concat(n.version_id):"null")})).catch((function(e){u((0,v.zb)((0,_.g)(e.error)))})),void y(!1)):(G("null"),void y(!1));G(d.version_id||"null"),y(!1)}),[s,d,f,u]),(0,o.useEffect)((function(){if(D&&!T){O(!0),w("");var e=new Date("".concat(L)),n=new Date,t=Math.ceil((e.getTime()-n.getTime())/1e3);t>0&&g.h.buckets.shareObject(s,{prefix:(0,b.LL)(d.name||""),version_id:z,expires:""!==L?"".concat(t,"s"):""}).then((function(e){w(e.data),O(!1)})).catch((function(e){u((0,v.zb)((0,_.g)(e.error))),w(""),O(!1)}))}}),[d,L,s,D,w,u,f,T,z]),(0,p.jsx)(o.Fragment,{children:(0,p.jsxs)(l.Z,{title:"Share File",titleIcon:(0,p.jsx)(a.aAc,{style:{fill:"#4CCB92"}}),modalOpen:n,onClose:function(){t()},children:[T&&(0,p.jsx)(a.rjZ,{item:!0,xs:12,children:(0,p.jsx)(a.kod,{})}),!T&&(0,p.jsxs)(o.Fragment,{children:[(0,p.jsxs)(a.rjZ,{item:!0,xs:12,sx:{fontSize:14,fontWeight:400},children:["This is a temporary URL with integrated access credentials for sharing objects valid for up to 7 days.",(0,p.jsx)("br",{}),(0,p.jsx)("br",{}),"The temporary URL expires after the configured time limit."]}),(0,p.jsx)("br",{}),(0,p.jsx)(a.rjZ,{item:!0,xs:12,children:(0,p.jsx)(x,{initialDate:W,id:"date",label:"Active for",maxDays:7,onChange:function(e,n){R(n),n?B(e):(B(""),w(""))},entity:"Link"})}),(0,p.jsx)(a.rjZ,{item:!0,xs:12,sx:{marginBottom:10},children:(0,p.jsx)(a.bSr,{actionButton:(0,p.jsx)(c(),{text:S,children:(0,p.jsx)(a.zxk,{id:"copy-path",variant:"regular",onClick:function(){u((0,v.MK)("Share URL Copied to clipboard"))},disabled:""===S||E,style:{width:"28px",height:"28px",padding:"0px"},icon:(0,p.jsx)(a.TIy,{})})}),children:S})})]})]})})}},78562:function(e,n,t){t.r(n),t.d(n,{default:function(){return g}});var i=t(72791),o=t(56028),r=t(4942),a=t(29439),s=t(11135),c=t(25787),l=t(61889),d=t(47922),u=t(45248),f=t(63733),h=t(16502),m=t(31776),p=t(26181),x=t.n(p),b=t(29945),v=t(80184),j=(0,c.Z)((function(){return(0,s.Z)({iframeContainer:{border:"0px",flex:"1 1 auto",width:"100%",height:250,backgroundColor:"transparent",borderRadius:5,"&.image":{height:500},"&.text":{height:700},"&.audio":{height:150},"&.video":{height:350},"&.fullHeight":{height:"calc(100vh - 185px)"}},iframeBase:{backgroundColor:"#fff"},iframeHidden:{display:"none"}})}))((function(e){var n=e.bucketName,t=e.object,o=e.isFullscreen,s=void 0!==o&&o,c=e.classes,p=(0,i.useState)(!0),j=(0,a.Z)(p,2),g=j[0],_=j[1],S=(0,i.useState)(null),w=(0,a.Z)(S,2),C=w[0],Z=w[1],T=(0,i.useState)(!1),y=(0,a.Z)(T,2),N=y[0],F=y[1],E=(null===t||void 0===t?void 0:t.name)||"",O=(0,i.useCallback)((function(){if(!N){var e=(0,u.LL)(E);m.h.buckets.getObjectMetadata(n,{prefix:e}).then((function(e){var n=x()(e.data,"objectMetadata",{});F(!0),Z(n)})).catch((function(e){console.error("Error Getting Metadata Status: ",e,null===e||void 0===e?void 0:e.detailedError),F(!0)}))}}),[n,E,N]);(0,i.useEffect)((function(){n&&E&&O()}),[n,E,O]);var I="";if(t){var k=(0,u.LL)(t.name),L=document.baseURI.replace(window.location.origin,"");I="".concat(window.location.origin).concat(L,"api/v1/buckets/").concat(n,"/objects/download?preview=true&prefix=").concat(k),t.version_id&&(I=I.concat("&version_id=".concat(t.version_id)))}var B=(0,d.s7)(C,E),P=function(){_(!1)};return(0,v.jsxs)(i.Fragment,{children:["none"!==B&&g&&(0,v.jsx)(l.ZP,{item:!0,xs:12,children:(0,v.jsx)(b.kod,{})}),N?(0,v.jsxs)("div",{style:{textAlign:"center"},children:["video"===B&&(0,v.jsx)("video",{style:{width:"auto",height:"auto",maxWidth:"calc(100vw - 100px)",maxHeight:"calc(100vh - 200px)"},autoPlay:!0,controls:!0,muted:!1,playsInline:!0,onPlay:P,children:(0,v.jsx)("source",{src:I,type:"video/mp4"})}),"audio"===B&&(0,v.jsx)("audio",{style:{width:"100%",height:"auto"},autoPlay:!0,controls:!0,muted:!1,playsInline:!0,onPlay:P,children:(0,v.jsx)("source",{src:I,type:"audio/mpeg"})}),"image"===B&&(0,v.jsx)("img",{style:{width:"auto",height:"auto",maxWidth:"100vw",maxHeight:"100vh"},src:I,alt:"preview",onLoad:P}),"none"===B&&(0,v.jsx)("div",{children:(0,v.jsx)(h.Z,{label:" File couldn't be previewed using file extension or mime type. Please try Download instead",title:"Preview unavailable "})}),"none"!==B&&"video"!==B&&"audio"!==B&&"image"!==B&&(0,v.jsx)("div",{className:(0,f.Z)(c.iframeBase,(0,r.Z)({},c.iframeHidden,g)),children:(0,v.jsx)("iframe",{src:I,title:"File Preview",allowTransparency:!0,className:"".concat(c.iframeContainer," ").concat(s?"fullHeight":B),onLoad:P,children:"File couldn't be loaded. Please try Download instead"})})]}):null]})})),g=function(e){var n=e.open,t=e.bucketName,r=e.object,a=e.onClosePreview;return(0,v.jsx)(i.Fragment,{children:(0,v.jsx)(o.Z,{modalOpen:n,title:"Preview - ".concat(null===r||void 0===r?void 0:r.name),onClose:a,wideLimit:!1,titleIcon:(0,v.jsx)(b.$30,{}),children:(0,v.jsx)(j,{bucketName:t,object:r})})})}},47922:function(e,n,t){t.d(n,{LR:function(){return p},P_:function(){return v},Sv:function(){return m},kh:function(){return j},s7:function(){return b}});var i=t(15671),o=t(43144),r=t(74165),a=t(15861),s=t(45248),c=t(76610),l=t(81551),d=t(66315),u=t(31776),f=t(87995),h=function(e,n){var t=document.createElement("a");t.href=e,t.download=n,document.body.appendChild(t),t.click(),document.body.removeChild(t)},m=function(){var e=(0,a.Z)((0,r.Z)().mark((function e(n,t,i){var o,a,s,c,m;return(0,r.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=l.ZP.getState(),a=o.system.anonymousMode,e.prev=2,e.next=5,u.h.buckets.downloadMultipleObjects(n,t,{type:d.zc.Json,headers:a?{"X-Anonymous":"1"}:void 0});case 5:return s=e.sent,e.next=8,s.blob();case 8:c=e.sent,m=window.URL.createObjectURL(c),h(m,i),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(2),l.ZP.dispatch((0,f.Ih)({errorMessage:"Download of multiple files failed. ".concat(e.t0.statusText),detailedError:""}));case 16:case"end":return e.stop()}}),e,null,[[2,13]])})));return function(n,t,i){return e.apply(this,arguments)}}(),p=function(e,n,t,i){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,r=arguments.length>5?arguments[5]:void 0,a=arguments.length>6?arguments[6]:void 0,d=arguments.length>7?arguments[7]:void 0,u=arguments.length>8?arguments[8]:void 0,f=arguments.length>9?arguments[9]:void 0,m=arguments.length>10?arguments[10]:void 0,p=document.baseURI.replace(window.location.origin,""),b=l.ZP.getState().system.anonymousMode,v="".concat(window.location.origin).concat(p,"api/v1/buckets/").concat(e,"/objects/download?prefix=").concat(n).concat(null!==o&&""!==o.trim()?"&override_file_name=".concat((0,s.LL)(o||"")):"");if(t&&(v=v.concat("&version_id=".concat(t))),i>53687091200)return new x(v,r,d,m);var j=new XMLHttpRequest;return j.open("GET",v,!0),b&&j.setRequestHeader("X-Anonymous","1"),j.addEventListener("progress",(function(e){var n=Math.round(e.loaded/i*100);a&&a(n)}),!1),j.responseType="blob",j.onreadystatechange=function(){if(4===j.readyState)if(200===j.status){var e=j.getResponseHeader("Content-Disposition"),n="download";if(e)n=decodeURIComponent(e).split('"')[1];d&&d(),(0,c.GM)(r),h(window.URL.createObjectURL(j.response),n)}else{if("application/json"===j.getResponseHeader("Content-Type")){var t=JSON.parse(j.response);if(t.detailedMessage)return void u(t.detailedMessage)}u("Unexpected response status code (".concat(j.status,")."))}},j.onerror=function(){u&&u("A network error occurred.")},j.onabort=function(){f&&f()},j},x=function(){function e(n,t,o,r){(0,i.Z)(this,e),this.path=void 0,this.id=void 0,this.completeCallback=void 0,this.toastCallback=void 0,this.path=n,this.id=t,this.completeCallback=o,this.toastCallback=r}return(0,o.Z)(e,[{key:"send",value:function(){this.toastCallback();var e=document.createElement("a");e.href=this.path,document.body.appendChild(e),e.click(),document.body.removeChild(e),this.completeCallback(),(0,c.GM)(this.id)}}]),e}(),b=function(e,n){var t=(e&&e["Content-Type"]||"").toString(),i=function(e){var n=e.split(".").pop();return n?(n=n.toLowerCase(),["jif","jfif","apng","avif","svg","webp","bmp","ico","jpg","jpe","jpeg","gif","png","heic"].includes(n)?"image":["pdf"].includes(n)?"text":["wav","mp3","alac","aiff","dsd","pcm"].includes(n)?"audio":["mp4","avi","mpg","webm","mov","flv","mkv","wmv","avchd","mpeg-4"].includes(n)?"video":"none"):"none"}(n||""),o=function(e){if(e){var n=(e||"").toLowerCase();if(n.includes("image"))return"image";if(n.includes("text"))return"text";if(n.includes("audio"))return"audio";if(n.includes("video"))return"video"}return"none"}(t),r=i;return i===o?r=i:"none"===i&&"none"!==o?r=o:"none"===o&&"none"!==i&&(r=i),r},v=function(e){switch(e){case"name":return function(e,n){return e.name.localeCompare(n.name)};case"last_modified":return function(e,n){return new Date(e.last_modified).getTime()-new Date(n.last_modified).getTime()};case"size":return function(e,n){return(e.size||-1)-(n.size||-1)}}},j=function(e,n,t){if(0===t.length)return null;var i=t.filter((function(n){var t,i;return(null===(t=n.resource)||void 0===t?void 0:t.endsWith(":".concat(e)))||(null===(i=n.resource)||void 0===i?void 0:i.includes(":".concat(e,"/")))}));if(0===i.length)return null;var o=[],r=n.split("/");if(i.forEach((function(e){var t,i,a=null===(t=e.resource)||void 0===t?void 0:t.split(":"),s=((null===a||void 0===a?void 0:a.pop())||"").split("/");(s.length>1&&s.every((function(e,n){return"*"!==e&&((!r[n]||r[n]===e)&&(r[n]||o.push({name:"".concat(e,"/"),size:0,last_modified:"",version_id:""}),!0))})),"StringEquals"===e.conditionOperator||"StringLike"===e.conditionOperator)&&(null===(i=e.prefixes)||void 0===i||i.forEach((function(e){if(""!==e){var t=e.split("/"),i=[],a=n.replace(/\/$/,"");if(!e.startsWith(a)&&""!==n)return;t.every((function(e,n){return!e.includes("*")&&""!==e&&(e!==r[n]?(o.push({name:"".concat(i.join("/")).concat(i.length>0?"/":"").concat(e,"/"),size:0,last_modified:"",version_id:""}),!1):(""!==e&&i.push(e),!0))}))}})))})),o.length>0){var a=[],s=[];o.forEach((function(e){s.includes(e.name)||(a.push(e),s.push(e.name))})),o=a}return o}},75578:function(e,n,t){var i=t(1413),o=t(72791),r=t(80184);n.Z=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(t){return(0,r.jsx)(o.Suspense,{fallback:n,children:(0,r.jsx)(e,(0,i.Z)({},t))})}}},81159:function(e,n,t){var i=t(4942),o=t(1413),r=t(72791),a=t(11135),s=t(25787),c=t(9955),l=t(30829),d=t(20068),u=t(20890),f=t(61889),h=t(23814),m=t(29945),p=t(63733),x=t(80184),b=(0,s.Z)((function(e){return{root:{width:50,height:24,padding:0,margin:0},switchBase:{padding:1,"&$checked":{transform:"translateX(24px)",color:e.palette.common.white,"& + $track":{backgroundColor:"#4CCB92",boxShadow:"inset 0px 1px 4px rgba(0,0,0,0.1)",opacity:1,border:"none"}},"&$focusVisible $thumb":{color:"#4CCB92",border:"6px solid #fff"}},thumb:{width:22,height:22,backgroundColor:"#FAFAFA",border:"2px solid #FFFFFF",marginLeft:1},track:{borderRadius:12,backgroundColor:"#E2E2E2",boxShadow:"inset 0px 1px 4px rgba(0,0,0,0.1)",opacity:1,transition:e.transitions.create(["background-color","border"])},checked:{},focusVisible:{},switchContainer:{display:"flex",alignItems:"center",justifyContent:"flex-end"}}}))(c.Z);n.Z=(0,s.Z)((function(e){return(0,a.Z)((0,o.Z)((0,o.Z)({indicatorLabelOn:{fontWeight:"bold",color:"#081C42 !important"},indicatorLabel:{fontSize:12,color:"#E2E2E2",margin:"0 8px 0 10px"},fieldDescription:{marginTop:4,color:"#999999"},tooltip:{fontSize:16}},h.OR),h.YI))}))((function(e){var n=e.label,t=void 0===n?"":n,a=e.onChange,s=e.value,c=e.id,h=e.name,v=e.checked,j=void 0!==v&&v,g=e.disabled,_=void 0!==g&&g,S=e.switchOnly,w=void 0!==S&&S,C=e.tooltip,Z=void 0===C?"":C,T=e.description,y=void 0===T?"":T,N=e.classes,F=e.indicatorLabels,E=e.extraInputProps,O=void 0===E?{}:E,I=(0,x.jsxs)(r.Fragment,{children:[!w&&(0,x.jsx)("span",{className:(0,p.Z)(N.indicatorLabel,(0,i.Z)({},N.indicatorLabelOn,!j)),children:F&&F.length>1?F[1]:"OFF"}),(0,x.jsx)(b,{checked:j,onChange:a,color:"primary",name:h,inputProps:(0,o.Z)({"aria-label":"primary checkbox"},O),disabled:_,disableRipple:!0,disableFocusRipple:!0,disableTouchRipple:!0,value:s,id:c}),!w&&(0,x.jsx)("span",{className:(0,p.Z)(N.indicatorLabel,(0,i.Z)({},N.indicatorLabelOn,j)),children:F?F[0]:"ON"})]});return w?I:(0,x.jsx)("div",{children:(0,x.jsxs)(f.ZP,{container:!0,alignItems:"center",children:[(0,x.jsx)(f.ZP,{item:!0,xs:12,sm:8,md:8,children:""!==t&&(0,x.jsxs)(l.Z,{htmlFor:c,className:N.inputLabel,children:[(0,x.jsx)("span",{children:t}),""!==Z&&(0,x.jsx)("div",{className:N.tooltipContainer,children:(0,x.jsx)(d.Z,{title:Z,placement:"top-start",children:(0,x.jsx)("div",{className:N.tooltip,children:(0,x.jsx)(m.byK,{})})})})]})}),(0,x.jsx)(f.ZP,{item:!0,xs:12,sm:""!==t?4:12,md:""!==t?4:12,textAlign:"right",justifyContent:"end",className:N.switchContainer,children:I}),""!==y&&(0,x.jsx)(f.ZP,{item:!0,xs:12,textAlign:"left",children:(0,x.jsx)(u.Z,{component:"p",className:N.fieldDescription,children:y})})]})})}))},21435:function(e,n,t){var i=t(29439),o=t(1413),r=t(72791),a=t(20817),s=t(61889),c=t(30829),l=t(20068),d=t(13400),u=t(20165),f=t(3579),h=t(11135),m=t(72455),p=t(25787),x=t(23814),b=t(29945),v=t(63733),j=t(80184),g=(0,m.Z)((function(e){return(0,h.Z)((0,o.Z)({},x.gM))}));function _(e){var n=g();return(0,j.jsx)(a.Z,(0,o.Z)({InputProps:{classes:n}},e))}n.Z=(0,p.Z)((function(e){return(0,h.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},x.YI),x.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}}}))}))((function(e){var n=e.label,t=e.onChange,a=e.value,h=e.id,m=e.name,p=e.type,x=void 0===p?"text":p,g=e.autoComplete,S=void 0===g?"off":g,w=e.disabled,C=void 0!==w&&w,Z=e.multiline,T=void 0!==Z&&Z,y=e.tooltip,N=void 0===y?"":y,F=e.index,E=void 0===F?0:F,O=e.error,I=void 0===O?"":O,k=e.required,L=void 0!==k&&k,B=e.placeholder,P=void 0===B?"":B,A=e.min,D=e.max,R=e.overlayId,M=e.overlayIcon,U=void 0===M?null:M,z=e.overlayObject,G=void 0===z?null:z,W=e.extraInputProps,K=void 0===W?{}:W,H=e.overlayAction,V=e.noLabelMinWidth,J=void 0!==V&&V,Y=e.pattern,q=void 0===Y?"":Y,$=e.autoFocus,X=void 0!==$&&$,Q=e.classes,ee=e.className,ne=void 0===ee?"":ee,te=e.onKeyPress,ie=e.onFocus,oe=e.onPaste,re=(0,o.Z)({"data-index":E},K),ae=(0,r.useState)(!1),se=(0,i.Z)(ae,2),ce=se[0],le=se[1];"number"===x&&A&&(re.min=A),"number"===x&&D&&(re.max=D),""!==q&&(re.pattern=q);var de=U,ue=x;return"password"===x&&null===U&&(de=ce?(0,j.jsx)(u.Z,{}):(0,j.jsx)(f.Z,{}),ue=ce?"text":"password"),(0,j.jsx)(r.Fragment,{children:(0,j.jsxs)(s.ZP,{container:!0,className:(0,v.Z)(""!==ne?ne:"",""!==I?Q.errorInField:Q.inputBoxContainer),children:[""!==n&&(0,j.jsxs)(c.Z,{htmlFor:h,className:J?Q.noMinWidthLabel:Q.inputLabel,children:[(0,j.jsxs)("span",{children:[n,L?"*":""]}),""!==N&&(0,j.jsx)("div",{className:Q.tooltipContainer,children:(0,j.jsx)(l.Z,{title:N,placement:"top-start",children:(0,j.jsx)("div",{className:Q.tooltip,children:(0,j.jsx)(b.byK,{})})})})]}),(0,j.jsxs)("div",{className:Q.textBoxContainer,children:[(0,j.jsx)(_,{id:h,name:m,fullWidth:!0,value:a,autoFocus:X,disabled:C,onChange:t,type:ue,multiline:T,autoComplete:S,inputProps:re,error:""!==I,helperText:I,placeholder:P,className:Q.inputRebase,onKeyPress:te,onFocus:ie,onPaste:oe}),de&&(0,j.jsx)("div",{className:"".concat(Q.overlayAction," ").concat(""!==n?"withLabel":""),children:(0,j.jsx)(d.Z,{onClick:H?function(){H()}:function(){return le(!ce)},id:R,size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:de})}),G&&(0,j.jsx)("div",{className:"".concat(Q.overlayAction," ").concat(""!==n?"withLabel":""),children:G})]})]})})}))},16502:function(e,n,t){t(72791);var i=t(11135),o=t(25787),r=t(80184);n.Z=(0,o.Z)((function(e){return(0,i.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,i=e.title;return(0,r.jsxs)("div",{className:n.headerContainer,children:[(0,r.jsx)("h4",{className:n.labelHeadline,children:i}),(0,r.jsx)("div",{className:n.labelText,children:t})]})}))},73669:function(e,n,t){var i=t(29439),o=t(72791),r=t(64554),a=t(29945),s=t(21435),c=t(80184);n.Z=function(e){var n=e.value,t=(0,o.useState)(!1),l=(0,i.Z)(t,2),d=l[0],u=l[1];return(0,c.jsxs)(r.Z,{sx:{display:"flex",alignItems:"center",flexFlow:{sm:"row",xs:"column"}},children:[(0,c.jsx)(s.Z,{id:"inspect-dec-key",name:"inspect-dec-key",placeholder:"",label:"",type:d?"text":"password",onChange:function(){},value:n,overlayIcon:(0,c.jsx)(a.TIy,{}),extraInputProps:{readOnly:!0},overlayAction:function(){return navigator.clipboard.writeText(n)}}),(0,c.jsx)(a.zxk,{id:"show-hide-key",style:{marginLeft:"10px"},variant:"callAction",onClick:function(){return u(!d)},label:"Show/Hide"})]})}},26824:function(e,n,t){t.d(n,{HE:function(){return r},V9:function(){return i},ci:function(){return o},x2:function(){return a}});var i=1006,o=1008,r=1011,a=function(e){var n="ws";return"https:"===e&&(n="wss"),n}}}]); -//# sourceMappingURL=8270.cfbcb443.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/8270.cfbcb443.chunk.js.map b/portal-ui/build/static/js/8270.cfbcb443.chunk.js.map deleted file mode 100644 index 5489239a13..0000000000 --- a/portal-ui/build/static/js/8270.cfbcb443.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/8270.cfbcb443.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/AddAccessRule.tsx","screens/Console/Buckets/BucketDetails/BrowserHandler.tsx","screens/Console/Buckets/ListBuckets/UploadPermissionUtils.ts","screens/Console/ObjectBrowser/BrowserBreadcrumbs.tsx","screens/Console/Buckets/ListBuckets/UploadFilesButton.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/DetailsListPanel.tsx","screens/Console/Common/FormComponents/DateSelector/utils.ts","screens/Console/Common/FormComponents/DateSelector/DateSelector.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/SetRetention.tsx","utils/validationFunctions.ts","screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteObject.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/SetLegalHoldModal.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/ObjectMetaData.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/IconWithLabel.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/utils.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/TagsModal.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/InspectObject.tsx","screens/Console/ObjectBrowser/utils.ts","screens/Console/ObjectBrowser/RenameLongFilename.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ObjectDetailPanel.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/RestoreFileVersion.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/SpecificVersionPill.tsx","screens/Console/Common/FormComponents/CheckboxWrapper/CheckboxWrapper.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/FileVersionItem.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteNonCurrent.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/DeleteSelectedVersions.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/VersionsNavigator.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjectsHelpers.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjectsTable.tsx","screens/Console/ObjectBrowser/objectBrowserThunks.ts","screens/Console/ObjectBrowser/FilterObjectsSB.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx","screens/Console/ObjectBrowser/OBHeader.tsx","screens/Console/Common/FormComponents/DaysSelector/DaysSelector.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/ShareFile.tsx","screens/Console/Buckets/ListBuckets/Objects/Preview/PreviewFileContent.tsx","screens/Console/Buckets/ListBuckets/Objects/Preview/PreviewFileModal.tsx","screens/Console/Buckets/ListBuckets/Objects/utils.ts","screens/Console/Common/Components/withSuspense.tsx","screens/Console/Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper.tsx","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/WarningMessage/WarningMessage.tsx","screens/Console/Tools/KeyRevealer.tsx","utils/wsUtils.ts"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport {\n AddAccessRuleIcon,\n Button,\n FormLayout,\n Grid,\n InputBox,\n Select,\n} from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport {\n setErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IAddAccessRule {\n modalOpen: boolean;\n onClose: () => any;\n bucket: string;\n prefilledRoute?: string;\n}\n\nconst AddAccessRule = ({\n modalOpen,\n onClose,\n bucket,\n prefilledRoute,\n}: IAddAccessRule) => {\n const dispatch = useAppDispatch();\n\n const [prefix, setPrefix] = useState(\"\");\n const [selectedAccess, setSelectedAccess] = useState(\"readonly\");\n\n useEffect(() => {\n if (prefilledRoute) {\n setPrefix(prefilledRoute);\n }\n }, [prefilledRoute]);\n\n const accessOptions = [\n { label: \"readonly\", value: \"readonly\" },\n { label: \"writeonly\", value: \"writeonly\" },\n { label: \"readwrite\", value: \"readwrite\" },\n ];\n\n const resetForm = () => {\n setPrefix(\"\");\n setSelectedAccess(\"readonly\");\n };\n\n const createProcess = () => {\n api.bucket\n .setAccessRuleWithBucket(bucket, {\n prefix: prefix,\n access: selectedAccess,\n })\n .then((res: any) => {\n dispatch(setSnackBarMessage(\"Access Rule added successfully\"));\n onClose();\n })\n .catch((res) => {\n dispatch(setErrorSnackMessage(errorToHandler(res.error)));\n onClose();\n });\n };\n\n return (\n }\n >\n \n {\n setPrefix(e.target.value);\n }}\n tooltip={\n \"Enter '/' to apply the rule to all prefixes and objects at the bucket root. Do not include the wildcard asterisk '*' as part of the prefix *unless* it is an explicit part of the prefix name. The Console automatically appends an asterisk to the appropriate sections of the resulting IAM policy.\"\n }\n />\n {\n setSelectedAccess(value);\n }}\n label=\"Access\"\n value={selectedAccess}\n options={accessOptions}\n disabled={false}\n />\n \n \n\n \n \n \n \n );\n};\n\nexport default AddAccessRule;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { useLocation, useParams } from \"react-router-dom\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { containerForHeader } from \"../../Common/FormComponents/common/styleLibrary\";\n\nimport ListObjects from \"../ListBuckets/Objects/ListObjects/ListObjects\";\nimport { IAM_SCOPES } from \"../../../../common/SecureComponent/permissions\";\nimport {\n errorInConnection,\n newMessage,\n resetMessages,\n setIsOpeningOD,\n setIsVersioned,\n setLoadingLocking,\n setLoadingObjectInfo,\n setLoadingObjects,\n setLoadingRecords,\n setLoadingVersioning,\n setLoadingVersions,\n setLockingEnabled,\n setObjectDetailsView,\n setRecords,\n setSelectedObjectView,\n setSimplePathHandler,\n setVersionsModeEnabled,\n} from \"../../ObjectBrowser/objectBrowserSlice\";\nimport hasPermission from \"../../../../common/SecureComponent/accessControl\";\nimport { IMessageEvent } from \"websocket\";\nimport { wsProtocol } from \"../../../../utils/wsUtils\";\nimport {\n WebsocketRequest,\n WebsocketResponse,\n} from \"../ListBuckets/Objects/ListObjects/types\";\nimport { decodeURLString, encodeURLString } from \"../../../../common/utils\";\nimport { permissionItems } from \"../ListBuckets/Objects/utils\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport OBHeader from \"../../ObjectBrowser/OBHeader\";\nimport { api } from \"api\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...containerForHeader,\n });\n\nlet objectsWS: WebSocket;\nlet currentRequestID: number = 0;\nlet errorCounter: number = 0;\nlet wsInFlight: boolean = false;\n\nconst initWSConnection = (\n openCallback?: () => void,\n onMessageCallback?: (message: IMessageEvent) => void,\n connErrorCallback?: (message: string) => void,\n) => {\n if (wsInFlight) {\n return;\n }\n wsInFlight = true;\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\n objectsWS = new WebSocket(\n `${wsProt}://${url.hostname}:${port}${baseUrl}ws/objectManager`,\n );\n\n objectsWS.onopen = () => {\n wsInFlight = false;\n if (openCallback) {\n openCallback();\n }\n errorCounter = 0;\n };\n\n if (onMessageCallback) {\n objectsWS.onmessage = onMessageCallback;\n }\n\n const reconnectFn = () => {\n if (errorCounter <= 5) {\n initWSConnection(() => {}, onMessageCallback, connErrorCallback);\n errorCounter += 1;\n } else {\n console.error(\n \"Websocket not available. Please review that your environment settings are enabled to allow websocket connections and that requests are made from the same origin.\",\n );\n if (connErrorCallback) {\n connErrorCallback(\n \"Couldn't establish WebSocket connection. Please review your configuration and try again.\",\n );\n }\n }\n };\n\n objectsWS.onclose = () => {\n wsInFlight = false;\n console.warn(\"Websocket Disconnected. Attempting Reconnection...\");\n\n // We reconnect after 3 seconds\n setTimeout(reconnectFn, 3000);\n };\n\n objectsWS.onerror = () => {\n wsInFlight = false;\n console.error(\"Error in websocket connection. Attempting reconnection...\");\n // Onclose will be triggered by specification, reconnect function will be executed there to avoid duplicated requests\n };\n};\n\nconst BrowserHandler = () => {\n const dispatch = useAppDispatch();\n const params = useParams();\n const location = useLocation();\n\n const loadingVersioning = useSelector(\n (state: AppState) => state.objectBrowser.loadingVersioning,\n );\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled,\n );\n const rewindDate = useSelector(\n (state: AppState) => state.objectBrowser.rewind.dateToRewind,\n );\n const showDeleted = useSelector(\n (state: AppState) => state.objectBrowser.showDeleted,\n );\n const allowResources = useSelector(\n (state: AppState) => state.console.session.allowResources,\n );\n const loadingObjects = useSelector(\n (state: AppState) => state.objectBrowser.loadingObjects,\n );\n const loadingLocking = useSelector(\n (state: AppState) => state.objectBrowser.loadingLocking,\n );\n const loadRecords = useSelector(\n (state: AppState) => state.objectBrowser.loadRecords,\n );\n const selectedInternalPaths = useSelector(\n (state: AppState) => state.objectBrowser.selectedInternalPaths,\n );\n const simplePath = useSelector(\n (state: AppState) => state.objectBrowser.simplePath,\n );\n const isOpeningOD = useSelector(\n (state: AppState) => state.objectBrowser.isOpeningObjectDetail,\n );\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode,\n );\n\n const bucketName = params.bucketName || \"\";\n const pathSegment = location.pathname.split(`/browser/${bucketName}/`);\n const internalPaths = pathSegment.length === 2 ? pathSegment[1] : \"\";\n\n /*WS Request Handlers*/\n const onMessageCallBack = useCallback(\n (message: IMessageEvent) => {\n // reset start status\n dispatch(setLoadingObjects(false));\n\n const response: WebsocketResponse = JSON.parse(message.data.toString());\n if (currentRequestID === response.request_id) {\n // If response is not from current request, we can omit\n if (response.request_id !== currentRequestID) {\n return;\n }\n\n if (\n response.error ===\n \"The Access Key Id you provided does not exist in our records.\"\n ) {\n // Session expired.\n window.location.reload();\n } else if (response.error === \"Access Denied.\") {\n const internalPathsPrefix = response.prefix;\n let pathPrefix = \"\";\n\n if (internalPathsPrefix) {\n const decodedPath = decodeURLString(internalPathsPrefix);\n\n pathPrefix = decodedPath.endsWith(\"/\")\n ? decodedPath\n : decodedPath + \"/\";\n }\n\n const permitItems = permissionItems(\n response.bucketName || bucketName,\n pathPrefix,\n allowResources || [],\n );\n\n if (!permitItems || permitItems.length === 0) {\n dispatch(\n setErrorSnackMessage({\n errorMessage: response.error,\n detailedError: response.error,\n }),\n );\n } else {\n dispatch(setRecords(permitItems));\n }\n\n return;\n }\n\n // This indicates final messages is received.\n if (response.request_end) {\n dispatch(setLoadingObjects(false));\n dispatch(setLoadingRecords(false));\n return;\n }\n\n if (response.data) {\n dispatch(newMessage(response.data));\n }\n }\n },\n [dispatch, allowResources, bucketName],\n );\n\n const initWSRequest = useCallback(\n (path: string, date: Date) => {\n if (objectsWS && objectsWS.readyState === 1) {\n try {\n const newRequestID = currentRequestID + 1;\n dispatch(resetMessages());\n dispatch(errorInConnection(false));\n\n const request: WebsocketRequest = {\n bucket_name: bucketName,\n prefix: encodeURLString(path),\n mode: rewindEnabled || showDeleted ? \"rewind\" : \"objects\",\n date: date.toISOString(),\n request_id: newRequestID,\n };\n\n objectsWS.send(JSON.stringify(request));\n\n // We store the new ID for the requestID\n currentRequestID = newRequestID;\n } catch (e) {\n console.error(e);\n }\n } else {\n // Socket is disconnected, we request reconnection but will need to recreate call\n const dupRequest = () => {\n initWSRequest(path, date);\n };\n\n const fatalWSError = (message: string) => {\n dispatch(\n setErrorSnackMessage({\n errorMessage: message,\n detailedError: message,\n }),\n );\n dispatch(errorInConnection(true));\n };\n\n initWSConnection(dupRequest, onMessageCallBack, fatalWSError);\n }\n },\n [bucketName, rewindEnabled, showDeleted, dispatch, onMessageCallBack],\n );\n\n useEffect(() => {\n return () => {\n const request: WebsocketRequest = {\n mode: \"cancel\",\n request_id: currentRequestID,\n };\n\n if (objectsWS && objectsWS.readyState === 1) {\n objectsWS.send(JSON.stringify(request));\n }\n };\n }, []);\n\n useEffect(() => {\n const decodedIPaths = decodeURLString(internalPaths);\n\n dispatch(setLoadingVersioning(true));\n\n if (decodedIPaths.endsWith(\"/\") || decodedIPaths === \"\") {\n dispatch(setObjectDetailsView(false));\n dispatch(setSelectedObjectView(null));\n dispatch(\n setSimplePathHandler(decodedIPaths === \"\" ? \"/\" : decodedIPaths),\n );\n dispatch(setLoadingLocking(true));\n } else {\n dispatch(setLoadingObjectInfo(true));\n dispatch(setObjectDetailsView(true));\n dispatch(setLoadingVersions(true));\n dispatch(\n setSelectedObjectView(\n `${decodedIPaths ? `${encodeURLString(decodedIPaths)}` : ``}`,\n ),\n );\n dispatch(\n setSimplePathHandler(\n `${decodedIPaths.split(\"/\").slice(0, -1).join(\"/\")}/`,\n ),\n );\n }\n }, [bucketName, internalPaths, rewindDate, rewindEnabled, dispatch]);\n\n // Direct file access effect / prefix\n useEffect(() => {\n if (!loadingObjects && !loadRecords && !rewindEnabled && !isOpeningOD) {\n // No requests are in progress, We review current path, if it doesn't end in '/' and current list is empty then we trigger a new request.\n const decodedInternalPaths = decodeURLString(internalPaths);\n\n if (\n !decodedInternalPaths.endsWith(\"/\") &&\n simplePath !== decodedInternalPaths &&\n decodedInternalPaths !== \"\"\n ) {\n setLoadingRecords(true);\n const parentPath = `${decodedInternalPaths\n .split(\"/\")\n .slice(0, -1)\n .join(\"/\")}/`;\n\n initWSRequest(parentPath, new Date());\n }\n }\n dispatch(setIsOpeningOD(false));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n loadingObjects,\n loadRecords,\n dispatch,\n internalPaths,\n initWSRequest,\n rewindEnabled,\n simplePath,\n ]);\n\n const displayListObjects =\n hasPermission(bucketName, [\n IAM_SCOPES.S3_LIST_BUCKET,\n IAM_SCOPES.S3_ALL_LIST_BUCKET,\n ]) || anonymousMode;\n\n // Common objects list\n useEffect(() => {\n // begin watch if bucketName in bucketList and start pressed\n if (loadingObjects && displayListObjects) {\n let pathPrefix = \"\";\n if (internalPaths) {\n const decodedPath = decodeURLString(internalPaths);\n\n // internalPaths are selected (file details), we split and get parent folder\n if (selectedInternalPaths === internalPaths) {\n pathPrefix = `${decodeURLString(internalPaths)\n .split(\"/\")\n .slice(0, -1)\n .join(\"/\")}/`;\n } else {\n pathPrefix = decodedPath.endsWith(\"/\")\n ? decodedPath\n : decodedPath + \"/\";\n }\n }\n\n let requestDate = new Date();\n\n if (rewindEnabled && rewindDate) {\n requestDate = new Date(rewindDate);\n }\n initWSRequest(pathPrefix, requestDate);\n } else {\n dispatch(setLoadingObjects(false));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n loadingObjects,\n internalPaths,\n dispatch,\n rewindDate,\n rewindEnabled,\n displayListObjects,\n initWSRequest,\n ]);\n\n useEffect(() => {\n dispatch(setVersionsModeEnabled({ status: false }));\n }, [internalPaths, dispatch]);\n\n useEffect(() => {\n if (loadingVersioning && !anonymousMode) {\n if (displayListObjects) {\n api.buckets\n .getBucketVersioning(bucketName)\n .then((res) => {\n dispatch(setIsVersioned(res.data));\n dispatch(setLoadingVersioning(false));\n })\n .catch((err) => {\n console.error(\n \"Error Getting Object Versioning Status: \",\n err.error.detailedMessage,\n );\n dispatch(setLoadingVersioning(false));\n });\n } else {\n dispatch(setLoadingVersioning(false));\n dispatch(resetMessages());\n }\n }\n }, [\n bucketName,\n loadingVersioning,\n dispatch,\n displayListObjects,\n anonymousMode,\n ]);\n\n useEffect(() => {\n if (loadingLocking) {\n if (displayListObjects) {\n api.buckets\n .getBucketObjectLockingStatus(bucketName)\n .then((res) => {\n dispatch(setLockingEnabled(res.data.object_locking_enabled));\n dispatch(setLoadingLocking(false));\n })\n .catch((err) => {\n console.error(\n \"Error Getting Object Locking Status: \",\n err.error.detailedMessage,\n );\n dispatch(setLoadingLocking(false));\n });\n } else {\n dispatch(resetMessages());\n dispatch(setLoadingLocking(false));\n }\n }\n }, [bucketName, loadingLocking, dispatch, displayListObjects]);\n\n useEffect(() => {\n // when a bucket param changes, (i.e /browser/:bucketName), re-init e.g with KBar, this should not apply for resources prefixes.\n const permitItems = permissionItems(bucketName, \"\", allowResources || []);\n\n if (bucketName && (!permitItems || permitItems.length === 0)) {\n dispatch(resetMessages());\n dispatch(setLoadingRecords(true));\n dispatch(setLoadingObjects(true));\n\n let pathPrefix = \"\";\n if (internalPaths) {\n const decodedPath = decodeURLString(internalPaths);\n\n // internalPaths are selected (file details), we split and get parent folder\n if (selectedInternalPaths === internalPaths) {\n pathPrefix = `${decodeURLString(internalPaths)\n .split(\"/\")\n .slice(0, -1)\n .join(\"/\")}/`;\n } else {\n pathPrefix = decodedPath.endsWith(\"/\")\n ? decodedPath\n : decodedPath + \"/\";\n }\n }\n\n initWSRequest(pathPrefix, new Date());\n }\n }, [\n bucketName,\n dispatch,\n initWSRequest,\n allowResources,\n internalPaths,\n selectedInternalPaths,\n ]);\n\n return (\n \n {!anonymousMode && }\n \n \n );\n};\n\nexport default withStyles(styles)(BrowserHandler);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const extractFileExtn = (resourceStr: string) => {\n //file extensions may contain query string. so exclude query strings !\n return (resourceStr.match(/\\.([^.]*?)(?=\\?|#|$)/) || [])[1];\n};\nexport const getPolicyAllowedFileExtensions = (\n sessionGrants: Record,\n uploadPath: string,\n scopes: string[] = [],\n) => {\n const sessionGrantWildCards = getSessionGrantsWildCard(\n sessionGrants,\n uploadPath,\n scopes,\n );\n\n //get acceptable files if any in the policy.\n const allowedFileExtensions = sessionGrantWildCards.reduce(\n (acc: string[], cv: string) => {\n const extension: string = extractFileExtn(cv);\n if (extension) {\n acc.push(`.${extension}`); //strict extension matching.\n }\n return acc;\n },\n [],\n );\n\n const uniqueExtensions = [...new Set(allowedFileExtensions)];\n return uniqueExtensions.join(\",\");\n};\n\n// The resource should not have the extensions (*.ext) for the hasPermission to work.\n// so sanitize this and also use to extract the allowed extensions outside of permission check.\nexport const getSessionGrantsWildCard = (\n sessionGrants: Record,\n uploadPath: string,\n scopes: string[] = [],\n) => {\n //get only the path matching grants to reduce processing.\n const grantsWithExtension = Object.keys(sessionGrants).reduce(\n (acc: Record, grantKey: string) => {\n if (extractFileExtn(grantKey) && grantKey.includes(uploadPath)) {\n acc[grantKey] = sessionGrants[grantKey];\n }\n return acc;\n },\n {},\n );\n\n const checkPathsForPermission = (sessionGrantKey: string) => {\n const grantActions = grantsWithExtension[sessionGrantKey];\n const hasScope = grantActions.some((actionKey) =>\n scopes.find((scopeKey) => {\n let wildCardMatch = false;\n const hasWildCard = scopeKey.indexOf(\"*\") !== -1;\n if (hasWildCard) {\n const scopeActionKey = scopeKey.substring(0, scopeKey.length - 1);\n\n wildCardMatch = actionKey.includes(scopeActionKey);\n }\n\n return wildCardMatch || actionKey === scopeKey;\n }),\n );\n\n const sessionGrantKeyPath = sessionGrantKey.substring(\n 0,\n sessionGrantKey.indexOf(\"/*.\"), //start of extension part.\n );\n const isUploadPathMatching =\n sessionGrantKeyPath === `arn:aws:s3:::${uploadPath}`;\n\n const hasGrant =\n isUploadPathMatching && sessionGrantKey !== \"arn:aws:s3:::*\";\n\n return hasScope && hasGrant;\n };\n\n return Object.keys(grantsWithExtension).filter(checkPathsForPermission);\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { objectBrowserCommon } from \"../Common/FormComponents/common/styleLibrary\";\nimport { encodeURLString, safeDecodeURIComponent } from \"../../../common/utils\";\nimport { Button, CopyIcon, NewPathIcon, Tooltip, Breadcrumbs } from \"mds\";\nimport { hasPermission } from \"../../../common/SecureComponent\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../common/SecureComponent/permissions\";\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport { setSnackBarMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setVersionsModeEnabled } from \"./objectBrowserSlice\";\nimport { getSessionGrantsWildCard } from \"../Buckets/ListBuckets/UploadPermissionUtils\";\n\nconst CreatePathModal = withSuspense(\n React.lazy(\n () => import(\"../Buckets/ListBuckets/Objects/ListObjects/CreatePathModal\"),\n ),\n);\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...objectBrowserCommon,\n slashSpacingStyle: {\n margin: \"0 5px\",\n },\n }),\n);\n\ninterface IObjectBrowser {\n bucketName: string;\n internalPaths: string;\n hidePathButton?: boolean;\n additionalOptions?: React.ReactNode;\n}\n\nconst BrowserBreadcrumbs = ({\n bucketName,\n internalPaths,\n hidePathButton,\n additionalOptions,\n}: IObjectBrowser) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const classes = useStyles();\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled,\n );\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode,\n );\n const versionedFile = useSelector(\n (state: AppState) => state.objectBrowser.versionedFile,\n );\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode,\n );\n\n const [createFolderOpen, setCreateFolderOpen] = useState(false);\n\n const putObjectPermScopes = [\n IAM_SCOPES.S3_PUT_OBJECT,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ];\n\n const sessionGrants = useSelector((state: AppState) =>\n state.console.session ? state.console.session.permissions || {} : {},\n );\n\n let paths = internalPaths;\n\n if (internalPaths !== \"\") {\n paths = `/${internalPaths}`;\n }\n\n const splitPaths = paths.split(\"/\").filter((path) => path !== \"\");\n const lastBreadcrumbsIndex = splitPaths.length - 1;\n\n const pathToCheckPerms = bucketName + paths || bucketName;\n const sessionGrantWildCards = getSessionGrantsWildCard(\n sessionGrants,\n pathToCheckPerms,\n putObjectPermScopes,\n );\n\n const canCreatePath =\n hasPermission(\n [pathToCheckPerms, ...sessionGrantWildCards],\n putObjectPermScopes,\n ) || anonymousMode;\n\n let breadcrumbsMap = splitPaths.map((objectItem: string, index: number) => {\n const subSplit = `${splitPaths.slice(0, index + 1).join(\"/\")}/`;\n const route = `/browser/${bucketName}/${\n subSplit ? `${encodeURLString(subSplit)}` : ``\n }`;\n\n if (index === lastBreadcrumbsIndex && objectItem === versionedFile) {\n return null;\n }\n\n return (\n \n /\n {index === lastBreadcrumbsIndex ? (\n \n {safeDecodeURIComponent(objectItem) /*Only for display*/}\n \n ) : (\n {\n dispatch(\n setVersionsModeEnabled({ status: false, objectName: \"\" }),\n );\n }}\n >\n {\n safeDecodeURIComponent(\n objectItem,\n ) /*Only for display to preserve */\n }\n \n )}\n \n );\n });\n\n let versionsItem: any[] = [];\n\n if (versionsMode) {\n versionsItem = [\n \n \n /\n {versionedFile} - Versions\n \n ,\n ];\n }\n\n const listBreadcrumbs: any[] = [\n \n {\n dispatch(setVersionsModeEnabled({ status: false, objectName: \"\" }));\n }}\n >\n {bucketName}\n \n ,\n ...breadcrumbsMap,\n ...versionsItem,\n ];\n\n const closeAddFolderModal = () => {\n setCreateFolderOpen(false);\n };\n\n const goBackFunction = () => {\n if (versionsMode) {\n dispatch(setVersionsModeEnabled({ status: false, objectName: \"\" }));\n } else {\n if (splitPaths.length === 0) {\n navigate(\"/browser\");\n\n return;\n }\n\n const prevPath = splitPaths.slice(0, -1);\n\n navigate(\n `/browser/${bucketName}${\n prevPath.length > 0\n ? `/${encodeURLString(`${prevPath.join(\"/\")}/`)}`\n : \"\"\n }`,\n );\n }\n };\n\n return (\n \n
    \n {createFolderOpen && (\n \n )}\n \n \n \n }\n variant={\"regular\"}\n onClick={() => {\n dispatch(setSnackBarMessage(\"Path copied to clipboard\"));\n }}\n style={{\n width: \"28px\",\n height: \"28px\",\n color: \"#969FA8\",\n border: \"#969FA8 1px solid\",\n marginRight: 5,\n }}\n />\n \n
    \n {additionalOptions}\n
    \n \n }\n >\n {listBreadcrumbs}\n \n {!hidePathButton && (\n \n {\n setCreateFolderOpen(true);\n }}\n disabled={anonymousMode ? false : rewindEnabled || !canCreatePath}\n icon={}\n style={{\n whiteSpace: \"nowrap\",\n }}\n variant={\"regular\"}\n label={\"Create new path\"}\n />\n \n )}\n
    \n
    {additionalOptions}
    \n
    \n );\n};\n\nexport default BrowserBreadcrumbs;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport { CSSObject } from \"styled-components\";\nimport { Menu, MenuItem } from \"@mui/material\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport { Button, UploadFolderIcon, UploadIcon } from \"mds\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../common/SecureComponent/permissions\";\nimport { hasPermission } from \"../../../../common/SecureComponent\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport { useSelector } from \"react-redux\";\nimport { AppState } from \"../../../../store\";\nimport { getSessionGrantsWildCard } from \"./UploadPermissionUtils\";\n\ninterface IUploadFilesButton {\n uploadPath: string;\n bucketName: string;\n forceDisable?: boolean;\n uploadFileFunction: (closeFunction: () => void) => void;\n uploadFolderFunction: (closeFunction: () => void) => void;\n classes: any;\n overrideStyles?: CSSObject;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n listUploadIcons: {\n height: 20,\n \"& .min-icon\": {\n width: 18,\n fill: \"rgba(0,0,0,0.87)\",\n },\n },\n });\n\nconst UploadFilesButton = ({\n uploadPath,\n bucketName,\n forceDisable = false,\n uploadFileFunction,\n uploadFolderFunction,\n classes,\n overrideStyles = {},\n}: IUploadFilesButton) => {\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode,\n );\n\n const sessionGrants = useSelector((state: AppState) =>\n state.console.session ? state.console.session.permissions || {} : {},\n );\n\n const putObjectPermScopes = [\n IAM_SCOPES.S3_PUT_OBJECT,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ];\n\n const sessionGrantWildCards = getSessionGrantsWildCard(\n sessionGrants,\n uploadPath,\n putObjectPermScopes,\n );\n\n const [anchorEl, setAnchorEl] = useState(null);\n const openUploadMenu = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleCloseUpload = () => {\n setAnchorEl(null);\n };\n\n const uploadObjectAllowed =\n hasPermission(\n [uploadPath, ...sessionGrantWildCards],\n putObjectPermScopes,\n ) || anonymousMode;\n\n const uploadFolderAllowed = hasPermission(\n [bucketName, ...sessionGrantWildCards],\n putObjectPermScopes,\n false,\n true,\n );\n\n const uploadEnabled: boolean = uploadObjectAllowed || uploadFolderAllowed;\n\n return (\n \n \n }\n variant={\"callAction\"}\n disabled={forceDisable || !uploadEnabled}\n sx={overrideStyles}\n />\n \n {\n handleCloseUpload();\n }}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"center\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"center\",\n }}\n >\n {\n uploadFileFunction(handleCloseUpload);\n }}\n disabled={!uploadObjectAllowed || forceDisable}\n >\n \n \n \n Upload File\n \n {\n uploadFolderFunction(handleCloseUpload);\n }}\n disabled={!uploadFolderAllowed || forceDisable}\n >\n \n \n \n Upload Folder\n \n \n \n );\n};\n\nexport default withStyles(styles)(UploadFilesButton);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { Button, ClosePanelIcon, Grid } from \"mds\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\ninterface IDetailsListPanel {\n open: boolean;\n className?: string;\n closePanel: () => void;\n children: React.ReactNode;\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n detailsList: {\n borderColor: \"#EAEDEE\",\n borderWidth: 0,\n borderStyle: \"solid\",\n borderRadius: 3,\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n width: 0,\n transitionDuration: \"0.3s\",\n overflowX: \"hidden\",\n overflowY: \"auto\",\n position: \"relative\",\n opacity: 0,\n marginLeft: -1,\n \"&.open\": {\n width: 300,\n minWidth: 300,\n borderLeftWidth: 1,\n opacity: 1,\n },\n \"@media (max-width: 799px)\": {\n \"&.open\": {\n width: \"100%\",\n minWidth: \"100%\",\n borderLeftWidth: 0,\n },\n },\n },\n }),\n);\n\nconst DetailsListPanel = ({\n open,\n closePanel,\n className = \"\",\n children,\n}: IDetailsListPanel) => {\n const classes = useStyles();\n\n return (\n \n }\n sx={{\n position: \"absolute\",\n right: 5,\n top: 18,\n padding: 0,\n height: 14,\n \"&:hover:not(:disabled)\": {\n backgroundColor: \"transparent\",\n },\n }}\n />\n {children}\n \n );\n};\n\nexport default DetailsListPanel;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const months = [\n { value: \"01\", label: \"January\" },\n { value: \"02\", label: \"February\" },\n { value: \"03\", label: \"March\" },\n { value: \"04\", label: \"April\" },\n { value: \"05\", label: \"May\" },\n { value: \"06\", label: \"June\" },\n { value: \"07\", label: \"July\" },\n { value: \"08\", label: \"August\" },\n { value: \"09\", label: \"September\" },\n { value: \"10\", label: \"October\" },\n { value: \"11\", label: \"November\" },\n { value: \"12\", label: \"December\" },\n];\n\nexport const days = Array.from(Array(31), (_, num) => ({\n value: (num + 1).toString(),\n label: (num + 1).toString(),\n}));\n\nconst currentYear = new Date().getFullYear();\n\nexport const years = Array.from(Array(50), (_, numYear) => ({\n value: (numYear + currentYear).toString(),\n label: (numYear + currentYear).toString(),\n}));\n\nexport const validDate = (year: string, month: string, day: string): any[] => {\n const currentDate = Date.parse(`${year}-${month}-${day}`);\n\n if (isNaN(currentDate)) {\n return [false, \"\"];\n }\n\n const parsedMonth = parseInt(month);\n const parsedDay = parseInt(day);\n\n const monthForString = parsedMonth < 10 ? `0${parsedMonth}` : parsedMonth;\n const dayForString = parsedDay < 10 ? `0${parsedDay}` : parsedDay;\n\n const parsedDate = new Date(currentDate).toISOString().split(\"T\")[0];\n const dateString = `${year}-${monthForString}-${dayForString}`;\n\n return [parsedDate === dateString, dateString];\n};\n\n// twoDigitDate gets a two digit string number used for months or days\n// returns \"NaN\" if number is NaN\nexport const twoDigitDate = (num: number): string => {\n return num < 10 ? `0${num}` : `${num}`;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useState,\n} from \"react\";\nimport clsx from \"clsx\";\nimport { Box, Grid, HelpIcon, InputLabel, Select, Switch, Tooltip } from \"mds\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\nimport { days, months, validDate, years } from \"./utils\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n fieldContainer: {\n ...fieldBasic.fieldContainer,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingBottom: 10,\n marginTop: 11,\n marginBottom: 6,\n },\n });\n\ninterface IDateSelectorProps {\n classes: any;\n id: string;\n label: string;\n disableOptions?: boolean;\n addSwitch?: boolean;\n tooltip?: string;\n borderBottom?: boolean;\n value?: string;\n onDateChange: (date: string, isValid: boolean) => any;\n}\n\nconst DateSelector = forwardRef(\n (\n {\n classes,\n id,\n label,\n disableOptions = false,\n addSwitch = false,\n tooltip = \"\",\n borderBottom = false,\n onDateChange,\n value = \"\",\n }: IDateSelectorProps,\n ref: any,\n ) => {\n useImperativeHandle(ref, () => ({ resetDate }));\n\n const [dateEnabled, setDateEnabled] = useState(false);\n const [month, setMonth] = useState(\"\");\n const [day, setDay] = useState(\"\");\n const [year, setYear] = useState(\"\");\n\n useEffect(() => {\n // verify if there is a current value\n // assume is in the format \"2021-12-30\"\n if (value !== \"\") {\n const valueSplit = value.split(\"-\");\n\n setYear(valueSplit[0]);\n setMonth(valueSplit[1]);\n // Turn to single digit to be displayed on dropdown buttons\n setDay(`${parseInt(valueSplit[2])}`);\n }\n }, [value]);\n\n useEffect(() => {\n const [isValid, dateString] = validDate(year, month, day);\n onDateChange(dateString, isValid);\n }, [month, day, year, onDateChange]);\n\n const resetDate = () => {\n setMonth(\"\");\n setDay(\"\");\n setYear(\"\");\n };\n\n const isDateDisabled = () => {\n if (disableOptions) {\n return disableOptions;\n } else if (addSwitch) {\n return !dateEnabled;\n } else {\n return false;\n }\n };\n\n const monthForDropDown = [{ value: \"\", label: \"\" }, ...months];\n const daysForDrop = [{ value: \"\", label: \"\" }, ...days];\n const yearsForDrop = [{ value: \"\", label: \"\" }, ...years];\n\n return (\n \n
    \n \n \n {label}\n {tooltip !== \"\" && (\n
    \n \n
    \n \n
    \n
    \n
    \n )}\n
    \n {addSwitch && (\n {\n setDateEnabled(e.target.checked);\n if (!e.target.checked) {\n onDateChange(\"\", true);\n }\n }}\n switchOnly\n />\n )}\n
    \n
    \n \n {\n setMonth(newValue);\n }}\n options={monthForDropDown}\n label={\"\"}\n disabled={isDateDisabled()}\n />\n\n {\n setDay(newValue);\n }}\n options={daysForDrop}\n label={\"\"}\n disabled={isDateDisabled()}\n />\n\n {\n setYear(newValue);\n }}\n options={yearsForDrop}\n label={\"\"}\n disabled={isDateDisabled()}\n />\n \n \n );\n },\n);\n\nexport default withStyles(styles)(DateSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useRef, useState } from \"react\";\n\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Button, Grid, RadioGroup, Switch } from \"mds\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nimport { twoDigitDate } from \"../../../../Common/FormComponents/DateSelector/utils\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport DateSelector from \"../../../../Common/FormComponents/DateSelector/DateSelector\";\nimport { setModalErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { useSelector } from \"react-redux\";\nimport { BucketObject, ObjectRetentionMode } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { encodeURLString } from \"common/utils\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\n\ninterface ISetRetentionProps {\n classes: any;\n open: boolean;\n closeModalAndRefresh: (updateInfo: boolean) => void;\n objectName: string;\n bucketName: string;\n objectInfo: BucketObject;\n}\n\ninterface IRefObject {\n resetDate: () => void;\n}\n\nconst SetRetention = ({\n classes,\n open,\n closeModalAndRefresh,\n objectName,\n objectInfo,\n bucketName,\n}: ISetRetentionProps) => {\n const dispatch = useAppDispatch();\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig,\n );\n\n const [statusEnabled, setStatusEnabled] = useState(true);\n const [type, setType] = useState(\"\");\n const [date, setDate] = useState(\"\");\n const [isDateValid, setIsDateValid] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n const [alreadyConfigured, setAlreadyConfigured] = useState(false);\n\n useEffect(() => {\n if (objectInfo.retention_mode) {\n setType(retentionConfig?.mode || ObjectRetentionMode.Governance);\n setAlreadyConfigured(true);\n }\n // get retention_until_date if defined\n if (objectInfo.retention_until_date) {\n const valueDate = new Date(objectInfo.retention_until_date);\n if (valueDate.toString() !== \"Invalid Date\") {\n const year = valueDate.getFullYear();\n const month = twoDigitDate(valueDate.getMonth() + 1);\n const day = valueDate.getDate();\n if (!isNaN(day) && month !== \"NaN\" && !isNaN(year)) {\n setDate(`${year}-${month}-${day}`);\n }\n }\n setAlreadyConfigured(true);\n }\n }, [objectInfo, retentionConfig?.mode]);\n\n const dateElement = useRef(null);\n\n const dateFieldDisabled = () => {\n return !(statusEnabled && (type === \"governance\" || type === \"compliance\"));\n };\n\n const onSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n };\n\n const resetForm = () => {\n setStatusEnabled(false);\n setType(ObjectRetentionMode.Governance);\n if (dateElement.current) {\n dateElement.current.resetDate();\n }\n };\n\n const addRetention = (\n selectedObject: string,\n versionId: string | null,\n expireDate: string,\n ) => {\n api.buckets\n .putObjectRetention(\n bucketName,\n {\n prefix: encodeURLString(selectedObject),\n version_id: versionId || \"\",\n },\n {\n expires: expireDate,\n mode: type as ObjectRetentionMode,\n },\n )\n .then(() => {\n setIsSaving(false);\n closeModalAndRefresh(true);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setIsSaving(false);\n });\n };\n\n const disableRetention = (\n selectedObject: string,\n versionId: string | null,\n ) => {\n api.buckets\n .deleteObjectRetention(bucketName, {\n prefix: encodeURLString(selectedObject),\n version_id: versionId || \"\",\n })\n .then(() => {\n setIsSaving(false);\n closeModalAndRefresh(true);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setIsSaving(false);\n });\n };\n\n const saveNewRetentionPolicy = () => {\n setIsSaving(true);\n const selectedObject = objectInfo.name || \"\";\n const versionId = objectInfo.version_id || null;\n\n const expireDate =\n !statusEnabled && type === \"governance\" ? \"\" : `${date}T23:59:59Z`;\n\n if (!statusEnabled && type === \"governance\") {\n disableRetention(selectedObject, versionId);\n\n return;\n }\n\n addRetention(selectedObject, versionId, expireDate);\n };\n\n const showSwitcher =\n alreadyConfigured && (type === \"governance\" || type === \"\");\n\n return (\n {\n resetForm();\n closeModalAndRefresh(false);\n }}\n >\n
    \n Selected Object: {objectName}\n
    \n ) => {\n onSubmit(e);\n }}\n >\n {showSwitcher && (\n \n ) => {\n setStatusEnabled(!statusEnabled);\n }}\n label={\"Status\"}\n indicatorLabels={[\"Enabled\", \"Disabled\"]}\n />\n \n )}\n \n {\n setType(e.target.value as ObjectRetentionMode);\n }}\n selectorOptions={[\n { label: \"Governance\", value: ObjectRetentionMode.Governance },\n { label: \"Compliance\", value: ObjectRetentionMode.Compliance },\n ]}\n />\n \n \n {\n setIsDateValid(isValid);\n if (isValid) {\n setDate(date);\n }\n }}\n />\n \n \n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(SetRetention);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const isVersionedMode = (status: string | undefined) => {\n return status === \"Enabled\" || status === \"Suspended\";\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport { decodeURLString } from \"../../../../../../common/utils\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport useApi from \"../../../../Common/Hooks/useApi\";\nimport { ConfirmDeleteIcon, Switch } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { useSelector } from \"react-redux\";\nimport { isVersionedMode } from \"../../../../../../utils/validationFunctions\";\nimport { BucketVersioningResponse } from \"api/consoleApi\";\n\ninterface IDeleteObjectProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedObject: string;\n selectedBucket: string;\n\n versioningInfo: BucketVersioningResponse | undefined;\n selectedVersion?: string;\n}\n\nconst DeleteObject = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedObject,\n versioningInfo,\n selectedVersion = \"\",\n}: IDeleteObjectProps) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n\n // We close the modal box on access denied.\n if (err.detailedError === \"Access Denied.\") {\n closeDeleteModalAndRefresh(true);\n }\n };\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n const [deleteVersions, setDeleteVersions] = useState(false);\n const [bypassGovernance, setBypassGovernance] = useState(false);\n\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig,\n );\n\n const canBypass =\n hasPermission(\n [selectedBucket],\n [IAM_SCOPES.S3_BYPASS_GOVERNANCE_RETENTION],\n ) && retentionConfig?.mode === \"governance\";\n\n if (!selectedObject) {\n return null;\n }\n const onConfirmDelete = () => {\n const decodedSelectedObject = decodeURLString(selectedObject);\n const recursive = decodedSelectedObject.endsWith(\"/\");\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/buckets/${selectedBucket}/objects?path=${selectedObject}${\n selectedVersion !== \"\"\n ? `&version_id=${selectedVersion}`\n : `&recursive=${recursive}&all_versions=${deleteVersions}`\n }${bypassGovernance ? \"&bypass=true\" : \"\"}`,\n );\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete:
    \n {decodeURLString(selectedObject)}{\" \"}\n {selectedVersion !== \"\" ? (\n \n
    \n
    \n Version ID:\n
    \n {selectedVersion}\n
    \n ) : (\n \"\"\n )}\n ?
    \n
    \n {isVersionedMode(versioningInfo?.status) &&\n selectedVersion === \"\" && (\n \n {\n setDeleteVersions(!deleteVersions);\n }}\n description=\"\"\n />\n \n )}\n {canBypass && (deleteVersions || selectedVersion !== \"\") && (\n \n \n {\n setBypassGovernance(!bypassGovernance);\n }}\n description=\"\"\n />\n \n \n )}\n {deleteVersions && (\n \n \n This will remove the object as well as all of its versions,{\" \"}\n
    \n This action is irreversible.\n \n
    \n Are you sure you want to continue?\n
    \n )}\n
    \n }\n />\n );\n};\n\nexport default DeleteObject;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport get from \"lodash/get\";\nimport { Button, Grid, Switch } from \"mds\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\n\nimport { setModalErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\nimport { BucketObject, ObjectLegalHoldStatus } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\n\ninterface ISetRetentionProps {\n classes: any;\n open: boolean;\n closeModalAndRefresh: (reload: boolean) => void;\n objectName: string;\n bucketName: string;\n actualInfo: BucketObject;\n}\n\nconst SetLegalHoldModal = ({\n classes,\n open,\n closeModalAndRefresh,\n objectName,\n bucketName,\n actualInfo,\n}: ISetRetentionProps) => {\n const dispatch = useAppDispatch();\n const [legalHoldEnabled, setLegalHoldEnabled] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n const versionId = actualInfo.version_id;\n\n useEffect(() => {\n const status = get(actualInfo, \"legal_hold_status\", \"OFF\");\n setLegalHoldEnabled(status === \"ON\");\n }, [actualInfo]);\n\n const onSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n setIsSaving(true);\n\n api.buckets\n .putObjectLegalHold(\n bucketName,\n {\n prefix: encodeURLString(objectName),\n version_id: versionId || \"\",\n },\n {\n status: legalHoldEnabled\n ? ObjectLegalHoldStatus.Enabled\n : ObjectLegalHoldStatus.Disabled,\n },\n )\n .then(() => {\n setIsSaving(false);\n closeModalAndRefresh(true);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setIsSaving(false);\n });\n };\n\n const resetForm = () => {\n setLegalHoldEnabled(false);\n };\n\n return (\n {\n resetForm();\n closeModalAndRefresh(false);\n }}\n >\n \n Object: {bucketName}\n \n\n ) => {\n onSubmit(e);\n }}\n >\n \n ) => {\n setLegalHoldEnabled(!legalHoldEnabled);\n }}\n label={\"Legal Hold Status\"}\n indicatorLabels={[\"Enabled\", \"Disabled\"]}\n tooltip={\n \"To enable this feature you need to enable versioning on the bucket before creation\"\n }\n />\n \n \n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(SetLegalHoldModal);\n","// 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 { withStyles } from \"@mui/styles\";\nimport Grid from \"@mui/material/Grid\";\nimport { Box, Table, TableBody, TableCell, TableRow } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n detailsPanel,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { safeDecodeURIComponent } from \"../../../../../../common/utils\";\n\ninterface IObjectMetadata {\n metaData: any;\n classes?: any;\n linear?: boolean;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n titleItem: {\n width: \"35%\",\n },\n ...spacingUtils,\n ...detailsPanel,\n });\n\nconst itemRendererFn = (element: any) => {\n return Array.isArray(element)\n ? element.map(safeDecodeURIComponent).join(\", \")\n : safeDecodeURIComponent(element);\n};\n\nconst ObjectMetaData = ({\n metaData,\n classes,\n linear = false,\n}: IObjectMetadata) => {\n const metaKeys = Object.keys(metaData);\n\n if (linear) {\n return (\n \n {metaKeys.map((element: string, index: number) => {\n const renderItem = itemRendererFn(metaData[element]);\n return (\n \n {element}\n
    \n {renderItem}\n \n );\n })}\n
    \n );\n }\n\n return (\n \n \n \n Object Metadata\n \n \n\n \n \n \n {metaKeys.map((element: string, index: number) => {\n const renderItem = itemRendererFn(metaData[element]);\n return (\n \n \n {element}\n \n {renderItem}\n \n );\n })}\n \n
    \n
    \n \n );\n};\n\nexport default withStyles(styles)(ObjectMetaData);\n","import React from \"react\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport { replaceUnicodeChar } from \"../../../../../../common/utils\";\n\ninterface IIconWithLabel {\n classes: any;\n icon: JSX.Element;\n strings: string[];\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n fileName: {\n display: \"flex\",\n alignItems: \"center\",\n \"& .min-icon\": {\n width: 16,\n height: 16,\n marginRight: 4,\n minWidth: 16,\n minHeight: 16,\n },\n },\n fileNameText: {\n whiteSpace: \"pre\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n },\n });\n\nconst IconWithLabel = ({ classes, icon, strings }: IIconWithLabel) => {\n return (\n
    \n {icon}\n \n {replaceUnicodeChar(strings[strings.length - 1])}\n \n
    \n );\n};\n\nexport default withStyles(styles)(IconWithLabel);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\n\nimport {\n FileBookIcon,\n FileCodeIcon,\n FileConfigIcon,\n FileDbIcon,\n FileFontIcon,\n FileImageIcon,\n FileLockIcon,\n FileMissingIcon,\n FileMusicIcon,\n FileNonType,\n FilePdfIcon,\n FilePptIcon,\n FileTxtIcon,\n FileVideoIcon,\n FileXlsIcon,\n FileZipIcon,\n FolderBrowserIcon,\n} from \"mds\";\nimport IconWithLabel from \"./IconWithLabel\";\n\ninterface IExtToIcon {\n icon: any;\n extensions: string[];\n}\n\nexport const extensionToIcon: IExtToIcon[] = [\n {\n icon: ,\n extensions: [\"mp4\", \"mov\", \"avi\", \"mpeg\", \"mpg\"],\n },\n {\n icon: ,\n extensions: [\"mp3\", \"m4a\", \"aac\"],\n },\n {\n icon: ,\n extensions: [\"pdf\"],\n },\n {\n icon: ,\n extensions: [\"ppt\", \"pptx\"],\n },\n {\n icon: ,\n extensions: [\"xls\", \"xlsx\"],\n },\n {\n icon: ,\n extensions: [\"cer\", \"crt\", \"pem\"],\n },\n {\n icon: ,\n extensions: [\"html\", \"xml\", \"css\", \"py\", \"go\", \"php\", \"cpp\", \"h\", \"java\"],\n },\n {\n icon: ,\n extensions: [\"cfg\", \"yaml\"],\n },\n {\n icon: ,\n extensions: [\"sql\"],\n },\n {\n icon: ,\n extensions: [\"ttf\", \"otf\"],\n },\n {\n icon: ,\n extensions: [\"doc\", \"docx\", \"txt\", \"rtf\"],\n },\n {\n icon: ,\n extensions: [\"zip\", \"rar\", \"tar\", \"gz\"],\n },\n {\n icon: ,\n extensions: [\"epub\", \"mobi\", \"azw\", \"azw3\"],\n },\n {\n icon: ,\n extensions: [\"jpeg\", \"jpg\", \"gif\", \"tiff\", \"png\", \"heic\", \"dng\"],\n },\n];\n\nexport const displayFileIconName = (\n element: string,\n returnOnlyIcon: boolean = false,\n) => {\n let elementString = element;\n let icon = ;\n // Element is a folder\n if (element.endsWith(\"/\")) {\n icon = ;\n elementString = element.slice(0, -1);\n }\n\n const lowercaseElement = element.toLowerCase();\n for (const etc of extensionToIcon) {\n for (const ext of etc.extensions) {\n if (lowercaseElement.endsWith(`.${ext}`)) {\n icon = etc.icon;\n }\n }\n }\n\n if (!element.endsWith(\"/\") && element.indexOf(\".\") < 0) {\n icon = ;\n }\n\n const splitItem = elementString.split(\"/\");\n\n if (returnOnlyIcon) {\n return icon;\n }\n\n return ;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { Box, Grid } from \"@mui/material\";\nimport {\n AddNewTagIcon,\n Button,\n DisabledIcon,\n EditTagIcon,\n InputBox,\n SectionTitle,\n} from \"mds\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { SecureComponent } from \"../../../../../../common/SecureComponent\";\nimport Chip from \"@mui/material/Chip\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport {\n selDistSet,\n setModalErrorSnackMessage,\n} from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\nimport { BucketObject } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { encodeURLString } from \"common/utils\";\nimport { useSelector } from \"react-redux\";\n\ninterface ITagModal {\n modalOpen: boolean;\n bucketName: string;\n actualInfo: BucketObject;\n onCloseAndUpdate: (refresh: boolean) => void;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n newTileHeader: {\n fontSize: 18,\n fontWeight: \"bold\",\n color: \"#000\",\n margin: \"35px 0\",\n paddingBottom: 15,\n display: \"flex\",\n alignItems: \"center\",\n \"& > svg\": {\n marginRight: 10,\n },\n },\n tagsForLabel: {\n fontSize: 16,\n margin: \"20px 0 30px\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n width: \"100%\",\n },\n currentTagsContainer: {\n fontSize: 14,\n fontWeight: \"normal\",\n },\n noTagsForObject: {\n color: \"#858585\",\n },\n deleteTag: {\n color: \"#C83B51\",\n marginLeft: 5,\n },\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\n\nconst AddTagModal = ({\n modalOpen,\n onCloseAndUpdate,\n bucketName,\n actualInfo,\n classes,\n}: ITagModal) => {\n const dispatch = useAppDispatch();\n const distributedSetup = useSelector(selDistSet);\n const [newKey, setNewKey] = useState(\"\");\n const [newLabel, setNewLabel] = useState(\"\");\n const [isSending, setIsSending] = useState(false);\n const [deleteEnabled, setDeleteEnabled] = useState(false);\n const [deleteKey, setDeleteKey] = useState(\"\");\n const [deleteLabel, setDeleteLabel] = useState(\"\");\n\n const selectedObject = encodeURLString(actualInfo.name || \"\");\n\n const currentTags = actualInfo.tags;\n const currTagKeys = Object.keys(currentTags || {});\n\n const allPathData = actualInfo.name?.split(\"/\");\n const currentItem = allPathData?.pop() || \"\";\n\n const resetForm = () => {\n setNewLabel(\"\");\n setNewKey(\"\");\n };\n\n const addTagProcess = () => {\n setIsSending(true);\n const newTag: any = {};\n\n newTag[newKey] = newLabel;\n const newTagList = { ...currentTags, ...newTag };\n\n const verID = distributedSetup ? actualInfo.version_id || \"\" : \"null\";\n\n api.buckets\n .putObjectTags(\n bucketName,\n { prefix: selectedObject, version_id: verID },\n { tags: newTagList },\n )\n .then(() => {\n onCloseAndUpdate(true);\n setIsSending(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setIsSending(false);\n });\n };\n\n const deleteTagProcess = () => {\n const cleanObject: any = { ...currentTags };\n delete cleanObject[deleteKey];\n\n const verID = distributedSetup ? actualInfo.version_id || \"\" : \"null\";\n\n api.buckets\n .putObjectTags(\n bucketName,\n { prefix: selectedObject, version_id: verID },\n { tags: cleanObject },\n )\n .then(() => {\n onCloseAndUpdate(true);\n setIsSending(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setIsSending(false);\n });\n };\n\n const onDeleteTag = (tagKey: string, tag: string) => {\n setDeleteKey(tagKey);\n setDeleteLabel(tag);\n setDeleteEnabled(true);\n };\n\n const cancelDelete = () => {\n setDeleteKey(\"\");\n setDeleteLabel(\"\");\n setDeleteEnabled(false);\n };\n\n const tagsFor = (plural: boolean) => (\n
    \n Tag{plural ? \"s\" : \"\"} for: {currentItem}\n
    \n );\n\n return (\n \n {\n onCloseAndUpdate(true);\n }}\n titleIcon={\n deleteEnabled ? (\n \n ) : (\n \n )\n }\n >\n {deleteEnabled ? (\n \n \n {tagsFor(false)}\n Are you sure you want to delete the tag{\" \"}\n \n {deleteKey} : {deleteLabel}\n {\" \"}\n ?\n \n \n \n \n \n \n ) : (\n \n \n \n {tagsFor(true)}\n
    \n Current Tags:\n
    \n {currTagKeys.length === 0 ? (\n \n There are no tags for this object\n \n ) : (\n \n )}\n \n {currTagKeys.map((tagKey: string, index: number) => {\n const tag = get(currentTags, `${tagKey}`, \"\");\n if (tag !== \"\") {\n return (\n \n }\n onDelete={() => {\n onDeleteTag(tagKey, tag);\n }}\n />\n \n );\n }\n return null;\n })}\n \n
    \n \n \n \n \n } separator={false}>\n Add New Tag\n \n \n {\n setNewKey(e.target.value);\n }}\n />\n \n \n {\n setNewLabel(e.target.value);\n }}\n />\n \n \n \n \n \n \n \n
    \n )}\n \n
    \n );\n};\n\nexport default withStyles(styles)(AddTagModal);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport {\n Button,\n InspectMenuIcon,\n PasswordKeyIcon,\n Switch,\n Grid,\n Box,\n} from \"mds\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n decodeURLString,\n deleteCookie,\n encodeURLString,\n getCookieValue,\n performDownload,\n} from \"../../../../../../common/utils\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { DialogContentText } from \"@mui/material\";\nimport KeyRevealer from \"../../../../Tools/KeyRevealer\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\n\ninterface IInspectObjectProps {\n classes: any;\n closeInspectModalAndRefresh: (refresh: boolean) => void;\n inspectOpen: boolean;\n inspectPath: string;\n volumeName: string;\n}\n\nconst InspectObject = ({\n classes,\n closeInspectModalAndRefresh,\n inspectOpen,\n inspectPath,\n volumeName,\n}: IInspectObjectProps) => {\n const dispatch = useAppDispatch();\n const onClose = () => closeInspectModalAndRefresh(false);\n const [isEncrypt, setIsEncrypt] = useState(true);\n const [decryptionKey, setDecryptionKey] = useState(\"\");\n const [insFileName, setInsFileName] = useState(\"\");\n\n if (!inspectPath) {\n return null;\n }\n const makeRequest = async (url: string) => {\n return await fetch(url, { method: \"GET\" });\n };\n\n const performInspect = async () => {\n const file = encodeURLString(inspectPath + \"/xl.meta\");\n const volume = encodeURLString(volumeName);\n\n const urlOfInspectApi = `/api/v1/admin/inspect?volume=${volume}&file=${file}&encrypt=${isEncrypt}`;\n\n makeRequest(urlOfInspectApi)\n .then(async (res) => {\n if (!res.ok) {\n const resErr: any = await res.json();\n\n dispatch(\n setErrorSnackMessage({\n errorMessage: resErr.message,\n detailedError: resErr.code,\n }),\n );\n }\n const blob: Blob = await res.blob();\n\n //@ts-ignore\n const filename = res.headers.get(\"content-disposition\").split('\"')[1];\n const decryptKey = getCookieValue(filename) || \"\";\n\n performDownload(blob, filename);\n setInsFileName(filename);\n if (decryptKey === \"\") {\n onClose();\n return;\n }\n setDecryptionKey(decryptKey);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(err));\n });\n };\n\n const onCloseDecKeyModal = () => {\n deleteCookie(insFileName);\n onClose();\n setDecryptionKey(\"\");\n };\n\n const onSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n };\n\n return (\n \n {!decryptionKey && (\n }\n title={`Inspect Object`}\n onClose={onClose}\n >\n ) => {\n onSubmit(e);\n }}\n >\n Would you like to encrypt {decodeURLString(inspectPath)}?{\" \"}\n
    \n {\n setIsEncrypt(!isEncrypt);\n }}\n description=\"\"\n />\n \n \n \n \n \n )}\n {decryptionKey ? (\n }\n >\n \n \n This will be displayed only once. It cannot be recovered.\n
    \n Use secure medium to share this key.\n
    \n \n \n \n
    \n \n ) : null}\n
    \n );\n};\n\nexport default withStyles(styles)(InspectObject);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { encodeURLString, getClientOS } from \"../../../common/utils\";\nimport { makeid, storeCallForObjectWithID } from \"./transferManager\";\nimport { download } from \"../Buckets/ListBuckets/Objects/utils\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n setLongFileOpen,\n setNewObject,\n updateProgress,\n} from \"./objectBrowserSlice\";\nimport { AppDispatch } from \"../../../store\";\nimport { setSnackBarMessage } from \"../../../systemSlice\";\nimport { BucketObject } from \"api/consoleApi\";\n\nexport const downloadObject = (\n dispatch: AppDispatch,\n bucketName: string,\n internalPaths: string,\n object: BucketObject,\n) => {\n const identityDownload = encodeURLString(\n `${bucketName}-${object.name}-${new Date().getTime()}-${Math.random()}`,\n );\n\n const isWinOs = getClientOS().toLowerCase().includes(\"win\");\n\n if ((object.name?.length || 0) > 200 && isWinOs) {\n dispatch(setLongFileOpen(true));\n return;\n }\n\n const ID = makeid(8);\n\n const downloadCall = download(\n bucketName,\n internalPaths,\n object.version_id,\n object.size || 0,\n null,\n ID,\n (progress) => {\n dispatch(\n updateProgress({\n instanceID: identityDownload,\n progress: progress,\n }),\n );\n },\n () => {\n dispatch(completeObject(identityDownload));\n },\n (msg: string) => {\n dispatch(failObject({ instanceID: identityDownload, msg }));\n },\n () => {\n dispatch(cancelObjectInList(identityDownload));\n },\n () => {\n dispatch(\n setSnackBarMessage(\n \"File download will be handled directly by the browser.\",\n ),\n );\n },\n );\n\n storeCallForObjectWithID(ID, downloadCall);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identityDownload,\n percentage: 0,\n prefix: object.name || \"\",\n type: \"download\",\n waitingForFile: true,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n }),\n );\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { Button, EditIcon } from \"mds\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport {\n containerForHeader,\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../Common/FormComponents/common/styleLibrary\";\nimport { useAppDispatch } from \"../../../store\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FormSwitchWrapper from \"../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport { downloadObject } from \"./utils\";\nimport { BucketObject } from \"api/consoleApi\";\n\ninterface IRenameLongFilename {\n open: boolean;\n bucketName: string;\n internalPaths: string;\n currentItem: string;\n actualInfo: BucketObject;\n closeModal: () => void;\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...modalStyleUtils,\n ...formFieldStyles,\n ...spacingUtils,\n ...containerForHeader,\n }),\n);\n\nconst RenameLongFileName = ({\n open,\n closeModal,\n currentItem,\n internalPaths,\n actualInfo,\n bucketName,\n}: IRenameLongFilename) => {\n const classes = useStyles();\n const dispatch = useAppDispatch();\n\n const [newFileName, setNewFileName] = useState(currentItem);\n const [acceptLongName, setAcceptLongName] = useState(false);\n\n const doDownload = (e: React.FormEvent) => {\n e.preventDefault();\n downloadObject(dispatch, bucketName, internalPaths, actualInfo);\n closeModal();\n };\n\n return (\n }\n >\n
    \n The file you are trying to download has a long name.\n
    \n This can cause issues on Windows Systems by trimming the file name after\n download.\n
    \n
    We recommend to rename the file download\n
    \n ) => {\n doDownload(e);\n }}\n >\n \n \n \n ) => {\n setNewFileName(event.target.value);\n }}\n label=\"\"\n type={\"text\"}\n value={newFileName}\n error={\n newFileName.length > 200 && !acceptLongName\n ? \"Filename should be less than 200 characters long.\"\n : \"\"\n }\n />\n \n \n ) => {\n setAcceptLongName(event.target.checked);\n if (event.target.checked) {\n setNewFileName(currentItem);\n }\n }}\n label={\"Use Original Name\"}\n />\n \n \n \n 200 && !acceptLongName}\n label={\"Download File\"}\n />\n \n \n \n \n );\n};\n\nexport default RenameLongFileName;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Box } from \"@mui/material\";\nimport { withStyles } from \"@mui/styles\";\nimport {\n ActionsList,\n Button,\n DeleteIcon,\n DownloadIcon,\n InspectMenuIcon,\n LegalHoldIcon,\n Loader,\n MetadataIcon,\n ObjectInfoIcon,\n PreviewIcon,\n RetentionIcon,\n ShareIcon,\n SimpleHeader,\n TagsIcon,\n VersionsIcon,\n} from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport get from \"lodash/get\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n actionsTray,\n detailsPanel,\n spacingUtils,\n textStyleUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { AllowedPreviews, previewObjectType } from \"../utils\";\n\nimport {\n decodeURLString,\n niceBytes,\n niceBytesInt,\n niceDaysInt,\n} from \"../../../../../../common/utils\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../../../common/SecureComponent/permissions\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport ShareFile from \"../ObjectDetails/ShareFile\";\nimport SetRetention from \"../ObjectDetails/SetRetention\";\nimport DeleteObject from \"../ListObjects/DeleteObject\";\nimport SetLegalHoldModal from \"../ObjectDetails/SetLegalHoldModal\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../../../common/SecureComponent\";\nimport PreviewFileModal from \"../Preview/PreviewFileModal\";\nimport ObjectMetaData from \"../ObjectDetails/ObjectMetaData\";\nimport { displayFileIconName } from \"./utils\";\nimport TagsModal from \"../ObjectDetails/TagsModal\";\nimport InspectObject from \"./InspectObject\";\nimport { selDistSet } from \"../../../../../../systemSlice\";\nimport {\n setLoadingObjectInfo,\n setLoadingVersions,\n setSelectedVersion,\n setVersionsModeEnabled,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport RenameLongFileName from \"../../../../ObjectBrowser/RenameLongFilename\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\nimport { downloadObject } from \"../../../../ObjectBrowser/utils\";\nimport { BucketObject, BucketVersioningResponse } from \"api/consoleApi\";\nimport { api } from \"api\";\n\nconst styles = () =>\n createStyles({\n ObjectDetailsTitle: {\n display: \"flex\",\n alignItems: \"center\",\n \"& .min-icon\": {\n width: 26,\n height: 26,\n minWidth: 26,\n minHeight: 26,\n },\n },\n objectNameContainer: {\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n alignItems: \"center\",\n marginLeft: 10,\n },\n capitalizeFirst: {\n textTransform: \"capitalize\",\n },\n\n ...actionsTray,\n ...spacingUtils,\n ...textStyleUtils,\n ...detailsPanel,\n });\n\nconst emptyFile: BucketObject = {\n is_latest: true,\n last_modified: \"\",\n legal_hold_status: \"\",\n name: \"\",\n retention_mode: \"\",\n retention_until_date: \"\",\n size: 0,\n tags: {},\n version_id: undefined,\n};\n\ninterface IObjectDetailPanelProps {\n classes: any;\n internalPaths: string;\n bucketName: string;\n versioningInfo: BucketVersioningResponse;\n locking: boolean | undefined;\n onClosePanel: (hardRefresh: boolean) => void;\n}\n\nconst ObjectDetailPanel = ({\n classes,\n internalPaths,\n bucketName,\n versioningInfo,\n locking,\n onClosePanel,\n}: IObjectDetailPanelProps) => {\n const dispatch = useAppDispatch();\n\n const distributedSetup = useSelector(selDistSet);\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode,\n );\n const selectedVersion = useSelector(\n (state: AppState) => state.objectBrowser.selectedVersion,\n );\n const loadingObjectInfo = useSelector(\n (state: AppState) => state.objectBrowser.loadingObjectInfo,\n );\n\n const [shareFileModalOpen, setShareFileModalOpen] = useState(false);\n const [retentionModalOpen, setRetentionModalOpen] = useState(false);\n const [tagModalOpen, setTagModalOpen] = useState(false);\n const [legalholdOpen, setLegalholdOpen] = useState(false);\n const [inspectModalOpen, setInspectModalOpen] = useState(false);\n const [actualInfo, setActualInfo] = useState(null);\n const [allInfoElements, setAllInfoElements] = useState([]);\n const [objectToShare, setObjectToShare] = useState(null);\n const [versions, setVersions] = useState([]);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [previewOpen, setPreviewOpen] = useState(false);\n const [totalVersionsSize, setTotalVersionsSize] = useState(0);\n const [longFileOpen, setLongFileOpen] = useState(false);\n const [metaData, setMetaData] = useState(null);\n const [loadMetadata, setLoadingMetadata] = useState(false);\n\n const internalPathsDecoded = decodeURLString(internalPaths) || \"\";\n const allPathData = internalPathsDecoded.split(\"/\");\n const currentItem = allPathData.pop() || \"\";\n\n // calculate object name to display\n let objectNameArray: string[] = [];\n if (actualInfo && actualInfo.name) {\n objectNameArray = actualInfo.name.split(\"/\");\n }\n\n useEffect(() => {\n if (distributedSetup && allInfoElements && allInfoElements.length >= 1) {\n let infoElement =\n allInfoElements.find((el: BucketObject) => el.is_latest) || emptyFile;\n\n if (selectedVersion !== \"\") {\n infoElement =\n allInfoElements.find(\n (el: BucketObject) => el.version_id === selectedVersion,\n ) || emptyFile;\n }\n\n if (!infoElement.is_delete_marker) {\n setLoadingMetadata(true);\n }\n\n setActualInfo(infoElement);\n }\n }, [selectedVersion, distributedSetup, allInfoElements]);\n\n useEffect(() => {\n if (loadingObjectInfo && internalPaths !== \"\") {\n api.buckets\n .listObjects(bucketName, {\n prefix: internalPaths,\n with_versions: distributedSetup,\n })\n .then((res) => {\n const result: BucketObject[] = res.data.objects || [];\n if (distributedSetup) {\n setAllInfoElements(result);\n setVersions(result);\n\n const tVersionSize = result.reduce(\n (acc: number, currValue: BucketObject): number => {\n if (currValue?.size) {\n return acc + currValue.size;\n }\n return acc;\n },\n 0,\n );\n\n setTotalVersionsSize(tVersionSize);\n } else {\n const resInfo = result[0];\n\n setActualInfo(resInfo);\n setVersions([]);\n\n if (!resInfo.is_delete_marker) {\n setLoadingMetadata(true);\n }\n }\n\n dispatch(setLoadingObjectInfo(false));\n })\n .catch((err) => {\n console.error(\"Error loading object details\", err.error);\n dispatch(setLoadingObjectInfo(false));\n });\n }\n }, [\n loadingObjectInfo,\n bucketName,\n internalPaths,\n dispatch,\n distributedSetup,\n selectedVersion,\n ]);\n\n useEffect(() => {\n if (loadMetadata && internalPaths !== \"\") {\n api.buckets\n .getObjectMetadata(bucketName, {\n prefix: internalPaths,\n })\n .then((res) => {\n let metadata = get(res.data, \"objectMetadata\", {});\n\n setMetaData(metadata);\n setLoadingMetadata(false);\n })\n .catch((err) => {\n console.error(\"Error Getting Metadata Status: \", err.detailedError);\n setLoadingMetadata(false);\n });\n }\n }, [bucketName, internalPaths, loadMetadata]);\n\n let tagKeys: string[] = [];\n\n if (actualInfo && actualInfo.tags) {\n tagKeys = Object.keys(actualInfo.tags);\n }\n\n const openRetentionModal = () => {\n setRetentionModalOpen(true);\n };\n\n const closeRetentionModal = (updateInfo: boolean) => {\n setRetentionModalOpen(false);\n if (updateInfo) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const shareObject = () => {\n setShareFileModalOpen(true);\n };\n\n const closeShareModal = () => {\n setObjectToShare(null);\n setShareFileModalOpen(false);\n };\n\n const closeFileOpen = () => {\n setLongFileOpen(false);\n };\n\n const closeDeleteModal = (closeAndReload: boolean) => {\n setDeleteOpen(false);\n\n if (closeAndReload && selectedVersion === \"\") {\n onClosePanel(true);\n } else {\n dispatch(setLoadingVersions(true));\n dispatch(setSelectedVersion(\"\"));\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeAddTagModal = (reloadObjectData: boolean) => {\n setTagModalOpen(false);\n if (reloadObjectData) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeInspectModal = (reloadObjectData: boolean) => {\n setInspectModalOpen(false);\n if (reloadObjectData) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeLegalholdModal = (reload: boolean) => {\n setLegalholdOpen(false);\n if (reload) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const loaderForContainer = (\n
    \n \n
    \n );\n\n if (!actualInfo) {\n if (loadingObjectInfo) {\n return loaderForContainer;\n }\n\n return null;\n }\n\n const objectName =\n objectNameArray.length > 0\n ? objectNameArray[objectNameArray.length - 1]\n : actualInfo.name;\n\n const objectResources = [\n bucketName,\n currentItem,\n [bucketName, actualInfo.name].join(\"/\"),\n ];\n const canSetLegalHold = hasPermission(bucketName, [\n IAM_SCOPES.S3_PUT_OBJECT_LEGAL_HOLD,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n const canSetTags = hasPermission(objectResources, [\n IAM_SCOPES.S3_PUT_OBJECT_TAGGING,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n\n const canChangeRetention = hasPermission(\n objectResources,\n [\n IAM_SCOPES.S3_GET_OBJECT_RETENTION,\n IAM_SCOPES.S3_PUT_OBJECT_RETENTION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ],\n true,\n );\n const canInspect = hasPermission(objectResources, [\n IAM_SCOPES.ADMIN_INSPECT_DATA,\n ]);\n const canChangeVersioning = hasPermission(objectResources, [\n IAM_SCOPES.S3_GET_BUCKET_VERSIONING,\n IAM_SCOPES.S3_PUT_BUCKET_VERSIONING,\n IAM_SCOPES.S3_GET_OBJECT_VERSION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n const canGetObject = hasPermission(objectResources, [\n IAM_SCOPES.S3_GET_OBJECT,\n IAM_SCOPES.S3_GET_ACTIONS,\n ]);\n const canDelete = hasPermission(\n [bucketName, currentItem, [bucketName, actualInfo.name].join(\"/\")],\n [IAM_SCOPES.S3_DELETE_OBJECT],\n );\n\n let objectType: AllowedPreviews = previewObjectType(metaData, currentItem);\n\n const multiActionButtons = [\n {\n action: () => {\n downloadObject(dispatch, bucketName, internalPaths, actualInfo);\n },\n label: \"Download\",\n disabled: !!actualInfo.is_delete_marker || !canGetObject,\n icon: ,\n tooltip: canGetObject\n ? \"Download this Object\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n \"download this object\",\n ),\n },\n {\n action: () => {\n shareObject();\n },\n label: \"Share\",\n disabled: !!actualInfo.is_delete_marker || !canGetObject,\n icon: ,\n tooltip: canGetObject\n ? \"Share this File\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n \"share this object\",\n ),\n },\n {\n action: () => {\n setPreviewOpen(true);\n },\n label: \"Preview\",\n disabled:\n !!actualInfo.is_delete_marker ||\n (objectType === \"none\" && !canGetObject),\n icon: ,\n tooltip: canGetObject\n ? \"Preview this File\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n \"preview this object\",\n ),\n },\n {\n action: () => {\n setLegalholdOpen(true);\n },\n label: \"Legal Hold\",\n disabled:\n !locking ||\n !distributedSetup ||\n !!actualInfo.is_delete_marker ||\n !canSetLegalHold ||\n selectedVersion !== \"\",\n icon: ,\n tooltip: canSetLegalHold\n ? locking\n ? \"Change Legal Hold rules for this File\"\n : \"Object Locking must be enabled on this bucket in order to set Legal Hold\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_PUT_OBJECT_LEGAL_HOLD, IAM_SCOPES.S3_PUT_ACTIONS],\n \"change legal hold settings for this object\",\n ),\n },\n {\n action: openRetentionModal,\n label: \"Retention\",\n disabled:\n !distributedSetup ||\n !!actualInfo.is_delete_marker ||\n !canChangeRetention ||\n selectedVersion !== \"\" ||\n !locking,\n icon: ,\n tooltip: canChangeRetention\n ? locking\n ? \"Change Retention rules for this File\"\n : \"Object Locking must be enabled on this bucket in order to set Retention Rules\"\n : permissionTooltipHelper(\n [\n IAM_SCOPES.S3_GET_OBJECT_RETENTION,\n IAM_SCOPES.S3_PUT_OBJECT_RETENTION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ],\n \"change Retention Rules for this object\",\n ),\n },\n {\n action: () => {\n setTagModalOpen(true);\n },\n label: \"Tags\",\n disabled:\n !!actualInfo.is_delete_marker || selectedVersion !== \"\" || !canSetTags,\n icon: ,\n tooltip: canSetTags\n ? \"Change Tags for this File\"\n : permissionTooltipHelper(\n [\n IAM_SCOPES.S3_PUT_OBJECT_TAGGING,\n IAM_SCOPES.S3_GET_OBJECT_TAGGING,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ],\n \"set Tags on this object\",\n ),\n },\n {\n action: () => {\n setInspectModalOpen(true);\n },\n label: \"Inspect\",\n disabled:\n !distributedSetup ||\n !!actualInfo.is_delete_marker ||\n selectedVersion !== \"\" ||\n !canInspect,\n icon: ,\n tooltip: canInspect\n ? \"Inspect this file\"\n : permissionTooltipHelper(\n [IAM_SCOPES.ADMIN_INSPECT_DATA],\n \"inspect this file\",\n ),\n },\n {\n action: () => {\n dispatch(\n setVersionsModeEnabled({\n status: !versionsMode,\n objectName: objectName,\n }),\n );\n },\n label: versionsMode ? \"Hide Object Versions\" : \"Display Object Versions\",\n icon: ,\n disabled:\n !distributedSetup ||\n !(actualInfo.version_id && actualInfo.version_id !== \"null\") ||\n !canChangeVersioning,\n tooltip: canChangeVersioning\n ? actualInfo.version_id && actualInfo.version_id !== \"null\"\n ? \"Display Versions for this file\"\n : \"\"\n : permissionTooltipHelper(\n [\n IAM_SCOPES.S3_GET_BUCKET_VERSIONING,\n IAM_SCOPES.S3_PUT_BUCKET_VERSIONING,\n IAM_SCOPES.S3_GET_OBJECT_VERSION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ],\n \"display all versions of this object\",\n ),\n },\n ];\n\n const calculateLastModifyTime = (lastModified: string) => {\n const currentTime = new Date();\n const modifiedTime = new Date(lastModified);\n\n const difTime = currentTime.getTime() - modifiedTime.getTime();\n\n const formatTime = niceDaysInt(difTime, \"ms\");\n\n return formatTime.trim() !== \"\" ? `${formatTime} ago` : \"Just now\";\n };\n\n return (\n \n {shareFileModalOpen && actualInfo && (\n \n )}\n {retentionModalOpen && actualInfo && (\n \n )}\n {deleteOpen && (\n \n )}\n {legalholdOpen && actualInfo && (\n \n )}\n {previewOpen && actualInfo && (\n {\n setPreviewOpen(false);\n }}\n />\n )}\n {tagModalOpen && actualInfo && (\n \n )}\n {inspectModalOpen && actualInfo && (\n \n )}\n {longFileOpen && actualInfo && (\n \n )}\n\n {loadingObjectInfo ? (\n {loaderForContainer}\n ) : (\n \n \n {displayFileIconName(objectName || \"\", true)}\n \n {objectName}\n \n \n }\n items={multiActionButtons}\n />\n \n \n \n }\n iconLocation={\"start\"}\n fullWidth\n variant={\"secondary\"}\n onClick={() => {\n setDeleteOpen(true);\n }}\n disabled={\n selectedVersion === \"\" && actualInfo.is_delete_marker\n }\n sx={{\n width: \"calc(100% - 44px)\",\n margin: \"8px 0\",\n }}\n label={`Delete${selectedVersion !== \"\" ? \" version\" : \"\"}`}\n />\n \n \n \n } label={\"Object Info\"} />\n \n Name:\n
    \n
    {objectName}
    \n
    \n {selectedVersion !== \"\" && (\n \n Version ID:\n
    \n {selectedVersion}\n
    \n )}\n \n Size:\n
    \n {niceBytes(`${actualInfo.size || \"0\"}`)}\n
    \n {actualInfo.version_id &&\n actualInfo.version_id !== \"null\" &&\n selectedVersion === \"\" && (\n \n Versions:\n
    \n {versions.length} version{versions.length !== 1 ? \"s\" : \"\"},{\" \"}\n {niceBytesInt(totalVersionsSize)}\n
    \n )}\n {selectedVersion === \"\" && (\n \n Last Modified:\n
    \n {calculateLastModifyTime(actualInfo.last_modified || \"\")}\n
    \n )}\n \n ETAG:\n
    \n {actualInfo.etag || \"N/A\"}\n
    \n \n Tags:\n
    \n {tagKeys.length === 0\n ? \"N/A\"\n : tagKeys.map((tagKey, index) => {\n return (\n \n {tagKey}:{get(actualInfo, `tags.${tagKey}`, \"\")}\n {index < tagKeys.length - 1 ? \", \" : \"\"}\n \n );\n })}\n
    \n \n \n \n Legal Hold:\n
    \n {actualInfo.legal_hold_status ? \"On\" : \"Off\"}\n
    \n \n
    \n \n \n \n Retention Policy:\n
    \n \n {actualInfo.version_id && actualInfo.version_id !== \"null\" ? (\n \n {actualInfo.retention_mode\n ? actualInfo.retention_mode.toLowerCase()\n : \"None\"}\n \n ) : (\n \n {actualInfo.retention_mode\n ? actualInfo.retention_mode.toLowerCase()\n : \"None\"}\n \n )}\n \n
    \n \n
    \n {!actualInfo.is_delete_marker && (\n \n } />\n \n {actualInfo && metaData ? (\n \n ) : null}\n \n \n )}\n
    \n )}\n
    \n );\n};\n\nexport default withStyles(styles)(ObjectDetailPanel);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { 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 { encodeURLString } from \"../../../../../../common/utils\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { Box, RecoverIcon } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\nimport { restoreLocalObjectList } from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport { BucketObject } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IRestoreFileVersion {\n classes: any;\n restoreOpen: boolean;\n bucketName: string;\n versionToRestore: BucketObject;\n objectPath: string;\n onCloseAndUpdate: (refresh: boolean) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...modalBasic,\n });\n\nconst RestoreFileVersion = ({\n classes,\n versionToRestore,\n bucketName,\n objectPath,\n restoreOpen,\n onCloseAndUpdate,\n}: IRestoreFileVersion) => {\n const dispatch = useAppDispatch();\n const [restoreLoading, setRestoreLoading] = useState(false);\n\n const restoreVersion = () => {\n setRestoreLoading(true);\n\n api.buckets\n .putObjectRestore(bucketName, {\n prefix: encodeURLString(objectPath),\n version_id: versionToRestore.version_id || \"\",\n })\n .then(() => {\n setRestoreLoading(false);\n onCloseAndUpdate(true);\n dispatch(\n restoreLocalObjectList({\n prefix: objectPath,\n objectInfo: versionToRestore,\n }),\n );\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setRestoreLoading(false);\n });\n };\n\n return (\n }\n onConfirm={restoreVersion}\n confirmButtonProps={{\n variant: \"secondary\",\n disabled: restoreLoading,\n }}\n onClose={() => {\n onCloseAndUpdate(false);\n }}\n confirmationContent={\n \n Are you sure you want to restore
    \n {objectPath}
    with Version ID:\n
    \n {versionToRestore.version_id}?\n
    \n }\n />\n );\n};\n\nexport default withStyles(styles)(RestoreFileVersion);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\n\ninterface ISpecificVersionPillProps {\n type: \"null\" | \"current\" | \"deleted\";\n}\n\nconst SpecificVersionPill = ({ type }: ISpecificVersionPillProps) => {\n let bgColor = \"#000\";\n let message = \"\";\n\n switch (type) {\n case \"null\":\n bgColor = \"#07193E\";\n message = \"NULL VERSION\";\n break;\n case \"deleted\":\n bgColor = \"#868686\";\n message = \"DELETED\";\n break;\n default:\n bgColor = \"#174551\";\n message = \"CURRENT VERSION\";\n }\n\n return (\n \n {message}\n \n );\n};\n\nexport default SpecificVersionPill;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more 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 \n )}\n \n
    \n );\n};\n\nexport default withStyles(styles)(CheckboxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { DateTime } from \"luxon\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { displayFileIconName } from \"../ListObjects/utils\";\nimport {\n DownloadIcon,\n PreviewIcon,\n RecoverIcon,\n ShareIcon,\n IconButton,\n Tooltip,\n Grid,\n} from \"mds\";\nimport { niceBytes } from \"../../../../../../common/utils\";\nimport SpecificVersionPill from \"./SpecificVersionPill\";\nimport CheckboxWrapper from \"../../../../Common/FormComponents/CheckboxWrapper/CheckboxWrapper\";\nimport { BucketObject } from \"api/consoleApi\";\n\ninterface IFileVersionItem {\n fileName: string;\n versionInfo: BucketObject;\n index: number;\n isSelected?: boolean;\n checkable: boolean;\n isChecked: boolean;\n onCheck: (versionID: string) => void;\n onShare: (versionInfo: BucketObject) => void;\n onDownload: (versionInfo: BucketObject) => void;\n onRestore: (versionInfo: BucketObject) => void;\n onPreview: (versionInfo: BucketObject) => void;\n globalClick: (versionInfo: BucketObject) => void;\n key: any;\n style: any;\n}\n\nconst FileVersionStyled = styled.div(({ theme }) => {\n return {\n \"&:before\": {\n content: \"' '\",\n display: \"block\",\n position: \"absolute\",\n width: \"2px\",\n height: \"calc(100% + 2px)\",\n backgroundColor: get(theme, \"borderColor\", \"#F8F8F8\"),\n left: \"24px\",\n },\n \"& .mainFileVersionItem\": {\n borderBottom: `${get(theme, \"borderColor\", \"#F8F8F8\")} 1px solid`,\n padding: \"1rem 0\",\n margin: \"0 0.5rem 0 2.5rem\",\n cursor: \"pointer\",\n \"&.deleted\": {\n color: \"#868686\",\n },\n },\n \"& .intermediateLayer\": {\n margin: \"0 1.5rem 0 1.5rem\",\n \"&:hover, &.selected\": {\n backgroundColor: get(theme, \"boxBackground\", \"#F8F8F8\"),\n \"& > div\": {\n borderBottomColor: get(theme, \"boxBackground\", \"#F8F8F8\"),\n },\n },\n },\n \"& .versionContainer\": {\n fontSize: 16,\n fontWeight: \"bold\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg.min-icon\": {\n width: 18,\n height: 18,\n minWidth: 18,\n minHeight: 18,\n marginRight: 10,\n },\n },\n \"& .buttonContainer\": {\n textAlign: \"right\",\n \"& button\": {\n marginLeft: \"1.5rem\",\n },\n },\n \"& .versionID\": {\n fontSize: \"12px\",\n margin: \"2px 0\",\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\",\n maxWidth: \"95%\",\n overflow: \"hidden\",\n },\n \"& .versionData\": {\n marginRight: \"10px\",\n fontSize: 12,\n color: \"#868686\",\n },\n \"@media (max-width: 600px)\": {\n \"& .buttonContainer\": {\n \"& button\": {\n marginLeft: \"5px\",\n },\n },\n },\n \"@media (max-width: 799px)\": {\n \"&:before\": {\n display: \"none\",\n },\n \"& .mainFileVersionItem\": {\n padding: \"5px 0px\",\n margin: 0,\n },\n \"& .intermediateLayer\": {\n margin: 0,\n \"&:hover, &.selected\": {\n backgroundColor: \"transparent\",\n \"& > div\": {\n borderBottomColor: get(theme, \"boxBackground\", \"#F8F8F8\"),\n },\n },\n },\n \"& .versionContainer\": {\n fontSize: 14,\n \"& svg.min-icon\": {\n display: \"none\",\n },\n },\n \"& .versionData\": {\n textOverflow: \"ellipsis\",\n maxWidth: \"95%\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n },\n \"& .collapsableInfo\": {\n display: \"flex\",\n flexDirection: \"column\",\n },\n \"& .versionItem\": {\n display: \"none\",\n },\n },\n };\n});\n\nconst FileVersionItem = ({\n fileName,\n versionInfo,\n isSelected,\n checkable,\n isChecked,\n onCheck,\n onShare,\n onDownload,\n onRestore,\n onPreview,\n globalClick,\n index,\n key,\n style,\n}: IFileVersionItem) => {\n const disableButtons = versionInfo.is_delete_marker;\n\n const versionItemButtons = [\n {\n icon: ,\n action: onPreview,\n tooltip: \"Preview\",\n },\n {\n icon: ,\n action: onDownload,\n tooltip: \"Download this version\",\n },\n {\n icon: ,\n action: onShare,\n tooltip: \"Share this version\",\n },\n {\n icon: ,\n action: onRestore,\n tooltip: \"Restore this version\",\n },\n ];\n\n let pill: \"deleted\" | \"current\" | \"null\" | null = null;\n\n if (versionInfo.is_delete_marker) {\n pill = \"deleted\";\n } else if (versionInfo.is_latest) {\n pill = \"current\";\n } else if (versionInfo.version_id === \"null\") {\n pill = \"null\";\n }\n\n let lastModified = DateTime.now();\n\n if (versionInfo.last_modified) {\n lastModified = DateTime.fromISO(versionInfo.last_modified);\n }\n\n return (\n \n {\n globalClick(versionInfo);\n }}\n key={key}\n style={style}\n >\n \n \n \n \n \n {checkable && (\n {\n e.stopPropagation();\n e.preventDefault();\n onCheck(versionInfo.version_id || \"\");\n }}\n value={versionInfo.version_id || \"\"}\n disabled={versionInfo.is_delete_marker}\n overrideCheckboxStyles={{\n paddingLeft: 0,\n height: 34,\n width: 25,\n }}\n noTopMargin\n />\n )}\n {displayFileIconName(fileName, true)} v{index.toString()}\n \n {pill && }\n \n \n \n {versionItemButtons.map((button, index) => {\n return (\n \n {\n e.stopPropagation();\n if (!disableButtons) {\n button.action(versionInfo);\n } else {\n e.preventDefault();\n }\n }}\n sx={{\n backgroundColor: \"#F8F8F8\",\n borderRadius: \"100%\",\n width: \"28px\",\n height: \"28px\",\n padding: \"5px\",\n \"& .min-icon\": {\n width: \"14px\",\n height: \"14px\",\n },\n }}\n >\n {button.icon}\n \n \n );\n })}\n \n \n \n \n {versionInfo.version_id !== \"null\" ? versionInfo.version_id : \"-\"}\n \n \n \n Last modified:{\" \"}\n {lastModified.toFormat(\"ccc, LLL dd yyyy HH:mm:ss (ZZZZ)\")}\n \n \n Size: {niceBytes(`${versionInfo.size || \"0\"}`)}\n \n \n \n \n \n \n );\n};\n\nexport default FileVersionItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\n\nimport { decodeURLString } from \"../../../../../../common/utils\";\nimport { ConfirmDeleteIcon, Switch, Grid, InputBox } from \"mds\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IDeleteNonCurrentProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedObject: string;\n selectedBucket: string;\n}\n\nconst DeleteNonCurrentVersions = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedObject,\n}: IDeleteNonCurrentProps) => {\n const dispatch = useAppDispatch();\n const [deleteLoading, setDeleteLoading] = useState(false);\n const [typeConfirm, setTypeConfirm] = useState(\"\");\n const [bypassGovernance, setBypassGovernance] = useState(false);\n\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig,\n );\n\n const canBypass =\n hasPermission(\n [selectedBucket],\n [IAM_SCOPES.S3_BYPASS_GOVERNANCE_RETENTION],\n ) && retentionConfig?.mode === \"governance\";\n\n useEffect(() => {\n if (deleteLoading) {\n api.buckets\n .deleteObject(selectedBucket, {\n path: selectedObject,\n non_current_versions: true,\n bypass: bypassGovernance,\n })\n .then(() => {\n closeDeleteModalAndRefresh(true);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setDeleteLoading(false);\n });\n }\n }, [\n deleteLoading,\n closeDeleteModalAndRefresh,\n dispatch,\n selectedObject,\n selectedBucket,\n bypassGovernance,\n ]);\n\n if (!selectedObject) {\n return null;\n }\n const onConfirmDelete = () => {\n setDeleteLoading(true);\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={() => closeDeleteModalAndRefresh(false)}\n confirmButtonProps={{\n disabled: typeConfirm !== \"YES, PROCEED\" || deleteLoading,\n }}\n confirmationContent={\n \n Are you sure you want to delete all the non-current versions for:{\" \"}\n {decodeURLString(selectedObject)}?
    \n {canBypass && (\n \n \n {\n setBypassGovernance(!bypassGovernance);\n }}\n description=\"\"\n />\n \n \n )}\n
    \n To continue please type YES, PROCEED in the box.\n
    \n
    \n \n ) => {\n setTypeConfirm(event.target.value);\n }}\n label=\"\"\n value={typeConfirm}\n />\n \n
    \n }\n />\n );\n};\n\nexport default DeleteNonCurrentVersions;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon, Switch } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { useSelector } from \"react-redux\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IDeleteSelectedVersionsProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedVersions: string[];\n selectedObject: string;\n selectedBucket: string;\n}\n\nconst DeleteObject = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedVersions,\n selectedObject,\n}: IDeleteSelectedVersionsProps) => {\n const dispatch = useAppDispatch();\n const [deleteLoading, setDeleteLoading] = useState(false);\n const [bypassGovernance, setBypassGovernance] = useState(false);\n\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig,\n );\n\n const canBypass =\n hasPermission(\n [selectedBucket],\n [IAM_SCOPES.S3_BYPASS_GOVERNANCE_RETENTION],\n ) && retentionConfig?.mode === \"governance\";\n\n const onClose = () => closeDeleteModalAndRefresh(false);\n const onConfirmDelete = () => {\n setDeleteLoading(true);\n };\n\n useEffect(() => {\n if (deleteLoading) {\n const selectedObjectsRequest = selectedVersions.map((versionID) => {\n return {\n path: selectedObject,\n versionID: versionID,\n recursive: false,\n };\n });\n\n if (selectedObjectsRequest.length > 0) {\n api.buckets\n .deleteMultipleObjects(selectedBucket, selectedObjectsRequest, {\n all_versions: false,\n bypass: bypassGovernance,\n })\n .then(() => {\n setDeleteLoading(false);\n closeDeleteModalAndRefresh(true);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n setDeleteLoading(false);\n });\n }\n }\n }, [\n deleteLoading,\n closeDeleteModalAndRefresh,\n selectedBucket,\n selectedObject,\n selectedVersions,\n bypassGovernance,\n dispatch,\n ]);\n\n if (!selectedVersions) {\n return null;\n }\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the selected {selectedVersions.length}{\" \"}\n versions for {selectedObject}?\n {canBypass && (\n \n \n {\n setBypassGovernance(!bypassGovernance);\n }}\n description=\"\"\n />\n \n \n )}\n \n }\n />\n );\n};\n\nexport default DeleteObject;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { withStyles } from \"@mui/styles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\n\nimport Grid from \"@mui/material/Grid\";\nimport ShareFile from \"./ShareFile\";\nimport {\n actionsTray,\n containerForHeader,\n objectBrowserCommon,\n objectBrowserExtras,\n spacingUtils,\n tableStyles,\n textStyleUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nimport { decodeURLString, niceBytesInt } from \"../../../../../../common/utils\";\nimport RestoreFileVersion from \"./RestoreFileVersion\";\n\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport {\n Button,\n DeleteIcon,\n DeleteNonCurrentIcon,\n Select,\n SelectMultipleIcon,\n VersionsIcon,\n ScreenTitle,\n ProgressBar,\n} from \"mds\";\nimport FileVersionItem from \"./FileVersionItem\";\nimport PreviewFileModal from \"../Preview/PreviewFileModal\";\nimport DeleteNonCurrent from \"../ListObjects/DeleteNonCurrent\";\nimport BrowserBreadcrumbs from \"../../../../ObjectBrowser/BrowserBreadcrumbs\";\nimport DeleteSelectedVersions from \"./DeleteSelectedVersions\";\nimport {\n selDistSet,\n setErrorSnackMessage,\n} from \"../../../../../../systemSlice\";\nimport {\n setLoadingObjectInfo,\n setLoadingVersions,\n setSelectedVersion,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport { List, ListRowProps } from \"react-virtualized\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\nimport { downloadObject } from \"../../../../ObjectBrowser/utils\";\nimport { BucketObject } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n versionsContainer: {\n padding: 10,\n \"@media (max-width: 799px)\": {\n minHeight: 800,\n },\n },\n noBottomBorder: {\n borderBottom: 0,\n },\n versionsVirtualPanel: {\n flexGrow: 1,\n height: \"calc(100% - 120px)\",\n overflow: \"auto\",\n \"@media (max-width: 799px)\": {\n height: 600,\n },\n },\n screenTitleContainer: {\n position: \"relative\",\n \"@media (max-width: 799px)\": {\n \"&::before\": {\n display: \"none\",\n },\n },\n },\n sortByLabel: {\n color: \"#838383\",\n fontWeight: \"bold\",\n whiteSpace: \"nowrap\",\n marginRight: 12,\n fontSize: 14,\n \"@media (max-width: 600px)\": {\n display: \"none\",\n },\n },\n ...actionsTray,\n ...tableStyles,\n ...spacingUtils,\n ...textStyleUtils,\n ...objectBrowserCommon,\n ...objectBrowserExtras,\n ...containerForHeader,\n });\n\ninterface IVersionsNavigatorProps {\n classes: any;\n internalPaths: string;\n bucketName: string;\n}\n\nconst emptyFile: BucketObject = {\n is_latest: true,\n last_modified: \"\",\n legal_hold_status: \"\",\n name: \"\",\n retention_mode: \"\",\n retention_until_date: \"\",\n size: 0,\n tags: {},\n version_id: undefined,\n};\n\nconst VersionsNavigator = ({\n classes,\n internalPaths,\n bucketName,\n}: IVersionsNavigatorProps) => {\n const dispatch = useAppDispatch();\n\n const searchVersions = useSelector(\n (state: AppState) => state.objectBrowser.searchVersions,\n );\n const loadingVersions = useSelector(\n (state: AppState) => state.objectBrowser.loadingVersions,\n );\n const selectedVersion = useSelector(\n (state: AppState) => state.objectBrowser.selectedVersion,\n );\n\n const distributedSetup = useSelector(selDistSet);\n const [shareFileModalOpen, setShareFileModalOpen] = useState(false);\n const [actualInfo, setActualInfo] = useState(null);\n const [objectToShare, setObjectToShare] = useState(null);\n const [versions, setVersions] = useState([]);\n const [restoreVersionOpen, setRestoreVersionOpen] = useState(false);\n const [restoreVersion, setRestoreVersion] = useState(\n null,\n );\n const [sortValue, setSortValue] = useState(\"date\");\n const [previewOpen, setPreviewOpen] = useState(false);\n const [deleteNonCurrentOpen, setDeleteNonCurrentOpen] =\n useState(false);\n const [selectEnabled, setSelectEnabled] = useState(false);\n const [selectedItems, setSelectedItems] = useState([]);\n const [delSelectedVOpen, setDelSelectedVOpen] = useState(false);\n\n // calculate object name to display\n let objectNameArray: string[] = [];\n if (actualInfo && actualInfo.name) {\n objectNameArray = actualInfo.name.split(\"/\");\n }\n\n useEffect(() => {\n if (!loadingVersions && !actualInfo) {\n dispatch(setLoadingVersions(true));\n }\n }, [loadingVersions, actualInfo, dispatch]);\n\n useEffect(() => {\n if (loadingVersions && internalPaths !== \"\") {\n api.buckets\n .listObjects(bucketName, {\n prefix: internalPaths,\n with_versions: distributedSetup,\n })\n .then((res) => {\n const result = get(res.data, \"objects\", []);\n\n const decodedInternalPaths = decodeURLString(internalPaths);\n\n // Filter the results prefixes as API can return more files than expected.\n const filteredPrefixes = result.filter(\n (item: BucketObject) => item.name === decodedInternalPaths,\n );\n\n if (distributedSetup) {\n setActualInfo(\n filteredPrefixes.find((el: BucketObject) => el.is_latest) ||\n emptyFile,\n );\n setVersions(filteredPrefixes);\n } else {\n setActualInfo(filteredPrefixes[0]);\n setVersions([]);\n }\n\n dispatch(setLoadingVersions(false));\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n dispatch(setLoadingVersions(false));\n });\n }\n }, [loadingVersions, bucketName, internalPaths, dispatch, distributedSetup]);\n\n const shareObject = () => {\n setShareFileModalOpen(true);\n };\n\n const closeShareModal = () => {\n setObjectToShare(null);\n setShareFileModalOpen(false);\n setPreviewOpen(false);\n };\n\n const onShareItem = (item: BucketObject) => {\n setObjectToShare(item);\n shareObject();\n };\n\n const onPreviewItem = (item: BucketObject) => {\n setObjectToShare(item);\n setPreviewOpen(true);\n };\n\n const onRestoreItem = (item: BucketObject) => {\n setRestoreVersion(item);\n setRestoreVersionOpen(true);\n };\n\n const onDownloadItem = (item: BucketObject) => {\n downloadObject(dispatch, bucketName, internalPaths, item);\n };\n\n const onGlobalClick = (item: BucketObject) => {\n dispatch(setSelectedVersion(item.version_id || \"\"));\n };\n\n const filteredRecords = versions.filter((version) => {\n if (version.version_id) {\n return version.version_id.includes(searchVersions);\n }\n return false;\n });\n\n const closeRestoreModal = (reloadObjectData: boolean) => {\n setRestoreVersionOpen(false);\n setRestoreVersion(null);\n\n if (reloadObjectData) {\n dispatch(setLoadingVersions(true));\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeDeleteNonCurrent = (reloadAfterDelete: boolean) => {\n setDeleteNonCurrentOpen(false);\n\n if (reloadAfterDelete) {\n dispatch(setLoadingVersions(true));\n dispatch(setSelectedVersion(\"\"));\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeSelectedVersions = (reloadOnComplete: boolean) => {\n setDelSelectedVOpen(false);\n\n if (reloadOnComplete) {\n dispatch(setLoadingVersions(true));\n dispatch(setSelectedVersion(\"\"));\n dispatch(setLoadingObjectInfo(true));\n setSelectedItems([]);\n }\n };\n\n const totalSpace = versions.reduce((acc: number, currValue: BucketObject) => {\n if (currValue.size) {\n return acc + currValue.size;\n }\n return acc;\n }, 0);\n\n filteredRecords.sort((a, b) => {\n switch (sortValue) {\n case \"size\":\n if (a.size && b.size) {\n if (a.size < b.size) {\n return -1;\n }\n if (a.size > b.size) {\n return 1;\n }\n return 0;\n }\n return 0;\n default:\n const dateA = new Date(a.last_modified || \"\").getTime();\n const dateB = new Date(b.last_modified || \"\").getTime();\n\n if (dateA < dateB) {\n return 1;\n }\n if (dateA > dateB) {\n return -1;\n }\n return 0;\n }\n });\n\n const onCheckVersion = (selectedVersion: string) => {\n if (selectedItems.includes(selectedVersion)) {\n const filteredItems = selectedItems.filter(\n (element) => element !== selectedVersion,\n );\n\n setSelectedItems(filteredItems);\n\n return;\n }\n\n const cloneState = [...selectedItems];\n cloneState.push(selectedVersion);\n\n setSelectedItems(cloneState);\n };\n\n const rowRenderer = ({\n key, // Unique key within array of rows\n index, // Index of row within collection\n isScrolling, // The List is currently being scrolled\n isVisible, // This row is visible within the List (eg it is not an overscanned row)\n style, // Style object to be applied to row (to position it)\n }: ListRowProps) => {\n const versOrd = versions.length - index;\n return (\n \n );\n };\n\n return (\n \n {shareFileModalOpen && actualInfo && (\n \n )}\n {restoreVersionOpen && actualInfo && restoreVersion && (\n \n )}\n {previewOpen && actualInfo && (\n {\n setPreviewOpen(false);\n }}\n />\n )}\n {deleteNonCurrentOpen && (\n \n )}\n {delSelectedVOpen && (\n \n )}\n \n {!actualInfo && (\n \n \n \n )}\n\n {actualInfo && (\n \n \n \n \n \n \n \n \n }\n title={`${\n objectNameArray.length > 0\n ? objectNameArray[objectNameArray.length - 1]\n : actualInfo.name\n } Versions`}\n subTitle={\n \n \n \n {versions.length} Version\n {versions.length === 1 ? \"\" : \"s\"}   \n \n \n \n {niceBytesInt(totalSpace)}\n \n \n }\n actions={\n \n \n {\n setSelectEnabled(!selectEnabled);\n }}\n icon={}\n variant={selectEnabled ? \"callAction\" : \"regular\"}\n style={{ marginRight: 8 }}\n />\n \n {selectEnabled && (\n \n {\n setDelSelectedVOpen(true);\n }}\n icon={}\n variant={\"secondary\"}\n style={{ marginRight: 8 }}\n disabled={selectedItems.length === 0}\n />\n \n )}\n \n {\n setDeleteNonCurrentOpen(true);\n }}\n icon={}\n variant={\"secondary\"}\n style={{ marginRight: 15 }}\n disabled={versions.length <= 1}\n />\n \n {\n setSortValue(newValue);\n }}\n noLabelMinWidth\n />\n \n }\n bottomBorder={false}\n />\n \n \n {actualInfo.version_id && actualInfo.version_id !== \"null\" && (\n // @ts-ignore\n \n )}\n \n \n )}\n \n \n );\n};\n\nexport default withStyles(styles)(VersionsNavigator);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { DateTime } from \"luxon\";\nimport { BucketObjectItem } from \"./types\";\nimport { niceBytes } from \"../../../../../../common/utils\";\nimport { displayFileIconName } from \"./utils\";\n\n// Functions\n\nexport const displayParsedDate = (object: BucketObjectItem) => {\n if (object.name.endsWith(\"/\")) {\n return \"\";\n }\n\n const currTime = DateTime.now();\n const objectTime = DateTime.fromISO(object.last_modified);\n\n const isToday =\n currTime.hasSame(objectTime, \"day\") &&\n currTime.hasSame(objectTime, \"month\") &&\n currTime.hasSame(objectTime, \"year\");\n\n if (isToday) {\n return `Today, ${objectTime.toFormat(\"HH:mm\")}`;\n }\n\n return objectTime.toFormat(\"ccc, LLL dd yyyy HH:mm (ZZZZ)\");\n};\n\nexport const displayNiceBytes = (object: BucketObjectItem) => {\n if (object.name.endsWith(\"/\") || !object.size) {\n return \"-\";\n }\n return niceBytes(String(object.size));\n};\n\nexport const displayDeleteFlag = (state: boolean) => {\n return state ? \"Yes\" : \"No\";\n};\n\n// Table Props\n\nexport const listModeColumns = [\n {\n label: \"Name\",\n elementKey: \"name\",\n renderFunction: displayFileIconName,\n enableSort: true,\n },\n {\n label: \"Last Modified\",\n elementKey: \"last_modified\",\n renderFunction: displayParsedDate,\n renderFullObject: true,\n enableSort: true,\n },\n {\n label: \"Size\",\n elementKey: \"size\",\n renderFunction: displayNiceBytes,\n renderFullObject: true,\n width: 100,\n enableSort: true,\n },\n];\n\nexport const rewindModeColumns = [\n {\n label: \"Name\",\n elementKey: \"name\",\n renderFunction: displayFileIconName,\n enableSort: true,\n },\n {\n label: \"Object Date\",\n elementKey: \"last_modified\",\n renderFunction: displayParsedDate,\n renderFullObject: true,\n enableSort: true,\n },\n {\n label: \"Size\",\n elementKey: \"size\",\n renderFunction: displayNiceBytes,\n renderFullObject: true,\n width: 100,\n enableSort: true,\n },\n {\n label: \"Deleted\",\n elementKey: \"delete_flag\",\n renderFunction: displayDeleteFlag,\n width: 60,\n },\n];\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { listModeColumns, rewindModeColumns } from \"./ListObjectsHelpers\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { selFeatures } from \"../../../../consoleSlice\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport {\n setIsOpeningOD,\n setLoadingObjects,\n setLoadingVersions,\n setObjectDetailsView,\n setSelectedObjects,\n setSelectedObjectView,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport get from \"lodash/get\";\nimport { sortListObjects } from \"../utils\";\nimport { BucketObjectItem } from \"./types\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../../../common/SecureComponent/permissions\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { downloadObject } from \"../../../../ObjectBrowser/utils\";\nimport { DataTable, ItemActions } from \"mds\";\nimport { BucketObject } from \"api/consoleApi\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n browsePaper: {\n border: 0,\n \"@media (max-width: 800px)\": {\n width: 800,\n },\n },\n parentWrapper: {\n position: \"relative\",\n height: \"calc(100% - 60px)\",\n \"@media (max-width: 800px)\": {\n overflowX: \"auto\",\n },\n \"@media (max-width: 1060px)\": {\n height: \"calc(100% - 115px)\",\n },\n },\n \"@global\": {\n \".rowLine:hover .iconFileElm\": {\n backgroundImage: \"url(/images/ob_file_filled.svg)\",\n },\n \".rowLine:hover .iconFolderElm\": {\n backgroundImage: \"url(/images/ob_folder_filled.svg)\",\n },\n },\n }),\n);\n\ninterface IListObjectTable {\n internalPaths: string | null;\n}\n\nconst ListObjectsTable = ({ internalPaths }: IListObjectTable) => {\n const classes = useStyles();\n const dispatch = useAppDispatch();\n const params = useParams();\n const navigate = useNavigate();\n\n const [sortDirection, setSortDirection] = useState<\n \"ASC\" | \"DESC\" | undefined\n >(\"ASC\");\n const [currentSortField, setCurrentSortField] = useState(\"name\");\n\n const bucketName = params.bucketName || \"\";\n\n const detailsOpen = useSelector(\n (state: AppState) => state.objectBrowser.objectDetailsOpen,\n );\n\n const loadingObjects = useSelector(\n (state: AppState) => state.objectBrowser.loadingObjects,\n );\n\n const features = useSelector(selFeatures);\n const obOnly = !!features?.includes(\"object-browser-only\");\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled,\n );\n const records = useSelector((state: AppState) => state.objectBrowser.records);\n const searchObjects = useSelector(\n (state: AppState) => state.objectBrowser.searchObjects,\n );\n const selectedObjects = useSelector(\n (state: AppState) => state.objectBrowser.selectedObjects,\n );\n const connectionError = useSelector(\n (state: AppState) => state.objectBrowser.connectionError,\n );\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode,\n );\n\n const displayListObjects = hasPermission(bucketName, [\n IAM_SCOPES.S3_LIST_BUCKET,\n IAM_SCOPES.S3_ALL_LIST_BUCKET,\n ]);\n\n const filteredRecords = records.filter((b: BucketObjectItem) => {\n if (searchObjects === \"\") {\n return true;\n } else {\n const objectName = b.name.toLowerCase();\n if (objectName.indexOf(searchObjects.toLowerCase()) >= 0) {\n return true;\n } else {\n return false;\n }\n }\n });\n\n const plSelect = filteredRecords;\n const sortASC = plSelect.sort(sortListObjects(currentSortField));\n\n let payload: BucketObjectItem[] = [];\n\n if (sortDirection === \"ASC\") {\n payload = sortASC;\n } else {\n payload = sortASC.reverse();\n }\n\n const openPath = (object: BucketObject) => {\n const idElement = object.name || \"\";\n const newPath = `/browser/${bucketName}${\n idElement ? `/${encodeURLString(idElement)}` : ``\n }`;\n\n // for anonymous start download\n if (\n anonymousMode &&\n internalPaths !== null &&\n !object.name?.endsWith(\"/\")\n ) {\n downloadObject(\n dispatch,\n bucketName,\n `${encodeURLString(idElement)}`,\n object,\n );\n return;\n }\n dispatch(setSelectedObjects([]));\n\n navigate(newPath);\n\n if (!anonymousMode) {\n dispatch(setObjectDetailsView(true));\n dispatch(setLoadingVersions(true));\n dispatch(setIsOpeningOD(true));\n }\n dispatch(\n setSelectedObjectView(\n `${idElement ? `${encodeURLString(idElement)}` : ``}`,\n ),\n );\n };\n const tableActions: ItemActions[] = [\n {\n type: \"view\",\n tooltip: \"View\",\n onClick: openPath,\n sendOnlyId: false,\n },\n ];\n\n const sortChange = (sortData: any) => {\n const newSortDirection = get(sortData, \"sortDirection\", \"DESC\");\n setCurrentSortField(sortData.sortBy);\n setSortDirection(newSortDirection);\n dispatch(setLoadingObjects(true));\n };\n\n const selectAllItems = () => {\n dispatch(setSelectedObjectView(null));\n\n if (selectedObjects.length === payload.length) {\n dispatch(setSelectedObjects([]));\n return;\n }\n\n const elements = payload.map((item) => item.name);\n dispatch(setSelectedObjects(elements));\n };\n\n const selectListObjects = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selectedObjects]; // We clone the selectedBuckets array\n\n if (checked) {\n // If the user has checked this field we need to push this to selectedBucketsList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n dispatch(setSelectedObjects(elements));\n dispatch(setSelectedObjectView(null));\n\n return elements;\n };\n\n let errorMessage =\n !displayListObjects && !anonymousMode\n ? permissionTooltipHelper(\n [IAM_SCOPES.S3_LIST_BUCKET, IAM_SCOPES.S3_ALL_LIST_BUCKET],\n \"view Objects in this bucket\",\n )\n : `This location is empty${\n !rewindEnabled ? \", please try uploading a new file\" : \"\"\n }`;\n\n if (connectionError) {\n errorMessage =\n \"Objects List unavailable. Please review your WebSockets configuration and try again\";\n }\n\n let customPaperHeight = \"calc(100vh - 290px)\";\n\n if (obOnly) {\n customPaperHeight = \"calc(100vh - 315px)\";\n }\n\n return (\n {\n if (payload[index]?.delete_flag) {\n return \"deleted\";\n }\n\n return \"\";\n }}\n parentClassName={classes.parentWrapper}\n sx={{\n minHeight: detailsOpen ? \"100%\" : \"initial\",\n }}\n noBackground\n />\n );\n};\nexport default ListObjectsTable;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport { AppState } from \"../../../store\";\nimport { encodeURLString, getClientOS } from \"../../../common/utils\";\nimport { BucketObjectItem } from \"../Buckets/ListBuckets/Objects/ListObjects/types\";\nimport { makeid, storeCallForObjectWithID } from \"./transferManager\";\nimport {\n download,\n downloadSelectedAsZip,\n} from \"../Buckets/ListBuckets/Objects/utils\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n setAnonymousAccessOpen,\n setDownloadRenameModal,\n setNewObject,\n setPreviewOpen,\n setSelectedPreview,\n setShareFileModalOpen,\n updateProgress,\n} from \"./objectBrowserSlice\";\nimport { setSnackBarMessage } from \"../../../systemSlice\";\nimport { DateTime } from \"luxon\";\n\nexport const downloadSelected = createAsyncThunk(\n \"objectBrowser/downloadSelected\",\n async (bucketName: string, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n\n const downloadObject = (object: BucketObjectItem) => {\n const identityDownload = encodeURLString(\n `${bucketName}-${object.name}-${new Date().getTime()}-${Math.random()}`,\n );\n\n const ID = makeid(8);\n\n const downloadCall = download(\n bucketName,\n encodeURLString(object.name),\n object.version_id,\n object.size,\n null,\n ID,\n (progress) => {\n dispatch(\n updateProgress({\n instanceID: identityDownload,\n progress: progress,\n }),\n );\n },\n () => {\n dispatch(completeObject(identityDownload));\n },\n (msg: string) => {\n dispatch(failObject({ instanceID: identityDownload, msg }));\n },\n () => {\n dispatch(cancelObjectInList(identityDownload));\n },\n () => {\n dispatch(\n setSnackBarMessage(\n \"File download will be handled directly by the browser.\",\n ),\n );\n },\n );\n storeCallForObjectWithID(ID, downloadCall);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identityDownload,\n percentage: 0,\n prefix: object.name,\n type: \"download\",\n waitingForFile: true,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n }),\n );\n };\n\n if (state.objectBrowser.selectedObjects.length !== 0) {\n let itemsToDownload: BucketObjectItem[] = [];\n\n const filterFunction = (currValue: BucketObjectItem) =>\n state.objectBrowser.selectedObjects.includes(currValue.name);\n\n itemsToDownload = state.objectBrowser.records.filter(filterFunction);\n\n // In case just one element is selected, then we trigger download modal validation.\n if (itemsToDownload.length === 1) {\n if (\n itemsToDownload[0].name.length > 200 &&\n getClientOS().toLowerCase().includes(\"win\")\n ) {\n dispatch(setDownloadRenameModal(itemsToDownload[0]));\n return;\n } else {\n downloadObject(itemsToDownload[0]);\n }\n } else {\n if (itemsToDownload.length === 1) {\n downloadObject(itemsToDownload[0]);\n } else if (itemsToDownload.length > 1) {\n const fileName = `${DateTime.now().toFormat(\n \"LL-dd-yyyy-HH-mm-ss\",\n )}_files_list.zip`;\n\n // We are enforcing zip download when multiple files are selected for better user experience\n const multiObjList = itemsToDownload.reduce((dwList: any[], bi) => {\n // Download objects/prefixes(recursively) as zip\n // Skip any deleted files selected via \"Show deleted objects\" in selection and log for debugging\n const isDeleted = bi?.delete_flag;\n if (bi && !isDeleted) {\n dwList.push(bi.name);\n } else {\n console.log(`Skipping ${bi?.name} from download.`);\n }\n return dwList;\n }, []);\n\n await downloadSelectedAsZip(bucketName, multiObjList, fileName);\n return;\n }\n }\n }\n },\n);\n\nexport const openPreview = createAsyncThunk(\n \"objectBrowser/openPreview\",\n async (_, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n\n if (state.objectBrowser.selectedObjects.length === 1) {\n let fileObject: BucketObjectItem | undefined;\n\n const findFunction = (currValue: BucketObjectItem) =>\n state.objectBrowser.selectedObjects.includes(currValue.name);\n\n fileObject = state.objectBrowser.records.find(findFunction);\n\n if (fileObject) {\n dispatch(setSelectedPreview(fileObject));\n dispatch(setPreviewOpen(true));\n }\n }\n },\n);\n\nexport const openShare = createAsyncThunk(\n \"objectBrowser/openShare\",\n async (_, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n\n if (state.objectBrowser.selectedObjects.length === 1) {\n let fileObject: BucketObjectItem | undefined;\n\n const findFunction = (currValue: BucketObjectItem) =>\n state.objectBrowser.selectedObjects.includes(currValue.name);\n\n fileObject = state.objectBrowser.records.find(findFunction);\n\n if (fileObject) {\n dispatch(setSelectedPreview(fileObject));\n dispatch(setShareFileModalOpen(true));\n }\n }\n },\n);\n\nexport const openAnonymousAccess = createAsyncThunk(\n \"objectBrowser/openAnonymousAccess\",\n async (_, { getState, dispatch }) => {\n const state = getState() as AppState;\n\n if (\n state.objectBrowser.selectedObjects.length === 1 &&\n state.objectBrowser.selectedObjects[0].endsWith(\"/\")\n ) {\n dispatch(setAnonymousAccessOpen(true));\n }\n },\n);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { setSearchObjects } from \"./objectBrowserSlice\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { useSelector } from \"react-redux\";\n\nconst FilterObjectsSB = () => {\n const dispatch = useAppDispatch();\n\n const searchObjects = useSelector(\n (state: AppState) => state.objectBrowser.searchObjects,\n );\n return (\n {\n dispatch(setSearchObjects(value));\n }}\n value={searchObjects}\n />\n );\n};\nexport default FilterObjectsSB;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, {\n Fragment,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useLocation, useNavigate, useParams } from \"react-router-dom\";\nimport { useDropzone } from \"react-dropzone\";\nimport { Theme } from \"@mui/material/styles\";\nimport {\n AccessRuleIcon,\n ActionsList,\n BucketsIcon,\n Button,\n DeleteIcon,\n DownloadIcon,\n HistoryIcon,\n PageLayout,\n PreviewIcon,\n RefreshIcon,\n ScreenTitle,\n ShareIcon,\n} from \"mds\";\nimport { DateTime } from \"luxon\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport get from \"lodash/get\";\nimport {\n decodeURLString,\n encodeURLString,\n niceBytesInt,\n} from \"../../../../../../common/utils\";\n\nimport {\n actionsTray,\n containerForHeader,\n objectBrowserCommon,\n objectBrowserExtras,\n searchField,\n tableStyles,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { Badge } from \"@mui/material\";\nimport BrowserBreadcrumbs from \"../../../../ObjectBrowser/BrowserBreadcrumbs\";\nimport { AllowedPreviews, previewObjectType } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\n\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../../../common/SecureComponent\";\nimport withSuspense from \"../../../../Common/Components/withSuspense\";\nimport UploadFilesButton from \"../../UploadFilesButton\";\nimport DetailsListPanel from \"./DetailsListPanel\";\nimport ObjectDetailPanel from \"./ObjectDetailPanel\";\nimport VersionsNavigator from \"../ObjectDetails/VersionsNavigator\";\nimport CheckboxWrapper from \"../../../../Common/FormComponents/CheckboxWrapper/CheckboxWrapper\";\n\nimport {\n setErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../../../systemSlice\";\n\nimport {\n makeid,\n removeTrace,\n storeCallForObjectWithID,\n storeFormDataWithID,\n} from \"../../../../ObjectBrowser/transferManager\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n openList,\n resetMessages,\n resetRewind,\n setAnonymousAccessOpen,\n setDownloadRenameModal,\n setLoadingObjects,\n setLoadingRecords,\n setLoadingVersions,\n setNewObject,\n setObjectDetailsView,\n setPreviewOpen,\n setRetentionConfig,\n setSearchObjects,\n setSelectedBucket,\n setSelectedObjects,\n setSelectedObjectView,\n setSelectedPreview,\n setShareFileModalOpen,\n setShowDeletedObjects,\n setVersionsModeEnabled,\n updateProgress,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n selBucketDetailsInfo,\n selBucketDetailsLoading,\n setBucketDetailsLoad,\n setBucketInfo,\n} from \"../../../BucketDetails/bucketDetailsSlice\";\nimport RenameLongFileName from \"../../../../ObjectBrowser/RenameLongFilename\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\nimport ListObjectsTable from \"./ListObjectsTable\";\nimport {\n downloadSelected,\n openAnonymousAccess,\n openPreview,\n openShare,\n} from \"../../../../ObjectBrowser/objectBrowserThunks\";\n\nimport FilterObjectsSB from \"../../../../ObjectBrowser/FilterObjectsSB\";\nimport AddAccessRule from \"../../../BucketDetails/AddAccessRule\";\nimport { isVersionedMode } from \"../../../../../../utils/validationFunctions\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { BucketQuota } from \"api/consoleApi\";\nimport {\n extractFileExtn,\n getPolicyAllowedFileExtensions,\n getSessionGrantsWildCard,\n} from \"../../UploadPermissionUtils\";\n\nconst DeleteMultipleObjects = withSuspense(\n React.lazy(() => import(\"./DeleteMultipleObjects\")),\n);\nconst ShareFile = withSuspense(\n React.lazy(() => import(\"../ObjectDetails/ShareFile\")),\n);\nconst RewindEnable = withSuspense(React.lazy(() => import(\"./RewindEnable\")));\nconst PreviewFileModal = withSuspense(\n React.lazy(() => import(\"../Preview/PreviewFileModal\")),\n);\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n badgeOverlap: {\n \"& .MuiBadge-badge\": {\n top: 10,\n right: 1,\n width: 5,\n height: 5,\n minWidth: 5,\n },\n },\n ...tableStyles,\n ...actionsTray,\n ...searchField,\n\n searchField: {\n ...searchField.searchField,\n maxWidth: 380,\n },\n screenTitleContainer: {\n border: \"#EAEDEE 1px solid\",\n padding: \"0 5px\",\n },\n labelStyle: {\n color: \"#969FA8\",\n fontSize: \"12px\",\n },\n breadcrumbsContainer: {\n padding: \"12px 14px 5px\",\n },\n fullContainer: {\n width: \"100%\",\n position: \"relative\",\n \"&.detailsOpen\": {\n \"@media (max-width: 799px)\": {\n display: \"none\",\n },\n },\n },\n hideListOnSmall: {\n \"@media (max-width: 799px)\": {\n display: \"none\",\n },\n },\n actionsSection: {\n display: \"flex\",\n justifyContent: \"space-between\",\n width: \"100%\",\n },\n ...objectBrowserExtras,\n ...objectBrowserCommon,\n ...containerForHeader,\n }),\n);\n\nconst baseDnDStyle = {\n borderWidth: 2,\n borderRadius: 2,\n borderColor: \"#eeeeee\",\n outline: \"none\",\n};\n\nconst activeDnDStyle = {\n borderStyle: \"dashed\",\n backgroundColor: \"#fafafa\",\n borderColor: \"#2196f3\",\n};\n\nconst acceptDnDStyle = {\n borderStyle: \"dashed\",\n backgroundColor: \"#fafafa\",\n borderColor: \"#00e676\",\n};\n\nconst ListObjects = () => {\n const classes = useStyles();\n const dispatch = useAppDispatch();\n const params = useParams();\n const navigate = useNavigate();\n const location = useLocation();\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled,\n );\n const bucketToRewind = useSelector(\n (state: AppState) => state.objectBrowser.rewind.bucketToRewind,\n );\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode,\n );\n\n const showDeleted = useSelector(\n (state: AppState) => state.objectBrowser.showDeleted,\n );\n const detailsOpen = useSelector(\n (state: AppState) => state.objectBrowser.objectDetailsOpen,\n );\n const selectedInternalPaths = useSelector(\n (state: AppState) => state.objectBrowser.selectedInternalPaths,\n );\n const loadingObjects = useSelector(\n (state: AppState) => state.objectBrowser.loadingObjects,\n );\n const simplePath = useSelector(\n (state: AppState) => state.objectBrowser.simplePath,\n );\n\n const versioningConfig = useSelector(\n (state: AppState) => state.objectBrowser.versionInfo,\n );\n const lockingEnabled = useSelector(\n (state: AppState) => state.objectBrowser.lockingEnabled,\n );\n const downloadRenameModal = useSelector(\n (state: AppState) => state.objectBrowser.downloadRenameModal,\n );\n const selectedPreview = useSelector(\n (state: AppState) => state.objectBrowser.selectedPreview,\n );\n const shareFileModalOpen = useSelector(\n (state: AppState) => state.objectBrowser.shareFileModalOpen,\n );\n const previewOpen = useSelector(\n (state: AppState) => state.objectBrowser.previewOpen,\n );\n const selectedBucket = useSelector(\n (state: AppState) => state.objectBrowser.selectedBucket,\n );\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode,\n );\n const anonymousAccessOpen = useSelector(\n (state: AppState) => state.objectBrowser.anonymousAccessOpen,\n );\n\n const loadingBucket = useSelector(selBucketDetailsLoading);\n const bucketInfo = useSelector(selBucketDetailsInfo);\n\n const [deleteMultipleOpen, setDeleteMultipleOpen] = useState(false);\n const [rewindSelect, setRewindSelect] = useState(false);\n const [iniLoad, setIniLoad] = useState(false);\n const [canShareFile, setCanShareFile] = useState(false);\n const [canPreviewFile, setCanPreviewFile] = useState(false);\n const [quota, setQuota] = useState(null);\n\n const [metaData, setMetaData] = useState(null);\n const [isMetaDataLoaded, setIsMetaDataLoaded] = useState(false);\n\n const isVersioningApplied = isVersionedMode(versioningConfig.status);\n const bucketName = params.bucketName || \"\";\n\n const pathSegment = location.pathname.split(`/browser/${bucketName}/`);\n const internalPaths = pathSegment.length === 2 ? pathSegment[1] : \"\";\n\n const pageTitle = decodeURLString(internalPaths);\n const currentPath = pageTitle.split(\"/\").filter((i: string) => i !== \"\");\n\n let uploadPath = [bucketName];\n if (currentPath.length > 0) {\n uploadPath = uploadPath.concat(currentPath);\n }\n\n const fileUpload = useRef(null);\n const folderUpload = useRef(null);\n\n const sessionGrants = useSelector((state: AppState) =>\n state.console.session ? state.console.session.permissions || {} : {},\n );\n\n const putObjectPermScopes = [\n IAM_SCOPES.S3_PUT_OBJECT,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ];\n\n const pathAsResourceInPolicy = uploadPath.join(\"/\");\n const allowedFileExtensions = getPolicyAllowedFileExtensions(\n sessionGrants,\n pathAsResourceInPolicy,\n putObjectPermScopes,\n );\n\n const sessionGrantWildCards = getSessionGrantsWildCard(\n sessionGrants,\n pathAsResourceInPolicy,\n putObjectPermScopes,\n );\n\n const canDownload = hasPermission(\n [pathAsResourceInPolicy, ...sessionGrantWildCards],\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n );\n const canDelete = hasPermission(\n [pathAsResourceInPolicy, ...sessionGrantWildCards],\n [IAM_SCOPES.S3_DELETE_OBJECT],\n );\n const canUpload =\n hasPermission(\n [pathAsResourceInPolicy, ...sessionGrantWildCards],\n putObjectPermScopes,\n ) || anonymousMode;\n\n const canSetAnonymousAccess = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_POLICY,\n IAM_SCOPES.S3_PUT_BUCKET_POLICY,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n\n const selectedObjects = useSelector(\n (state: AppState) => state.objectBrowser.selectedObjects,\n );\n\n const fetchMetadata = useCallback(() => {\n const objectName = selectedObjects[0];\n\n if (!isMetaDataLoaded) {\n const encodedPath = encodeURLString(objectName);\n api.buckets\n .getObjectMetadata(bucketName, {\n prefix: encodedPath,\n })\n .then((res) => {\n let metadata = get(res.data, \"objectMetadata\", {});\n setIsMetaDataLoaded(true);\n setMetaData(metadata);\n })\n .catch((err) => {\n console.error(\n \"Error Getting Metadata Status: \",\n err,\n err?.detailedError,\n );\n setIsMetaDataLoaded(true);\n });\n }\n }, [bucketName, selectedObjects, isMetaDataLoaded]);\n\n useEffect(() => {\n if (bucketName && selectedObjects.length === 1) {\n fetchMetadata();\n }\n }, [bucketName, selectedObjects, fetchMetadata]);\n\n useEffect(() => {\n dispatch(setSearchObjects(\"\"));\n dispatch(setLoadingObjects(true));\n dispatch(setSelectedObjects([]));\n }, [simplePath, dispatch]);\n\n useEffect(() => {\n if (rewindEnabled) {\n if (bucketToRewind !== bucketName) {\n dispatch(resetRewind());\n return;\n }\n }\n }, [rewindEnabled, bucketToRewind, bucketName, dispatch]);\n\n // END OF WS HANDLERS\n\n useEffect(() => {\n if (folderUpload.current !== null) {\n folderUpload.current.setAttribute(\"directory\", \"\");\n folderUpload.current.setAttribute(\"webkitdirectory\", \"\");\n }\n }, [folderUpload]);\n\n useEffect(() => {\n if (selectedObjects.length === 1) {\n const objectName = selectedObjects[0];\n let objectType: AllowedPreviews = previewObjectType(metaData, objectName);\n\n if (objectType !== \"none\" && canDownload) {\n setCanPreviewFile(true);\n } else {\n setCanPreviewFile(false);\n }\n\n if (objectName.endsWith(\"/\") || canDownload) {\n setCanShareFile(true);\n } else {\n setCanShareFile(false);\n }\n } else {\n setCanShareFile(false);\n setCanPreviewFile(false);\n }\n }, [selectedObjects, canDownload, metaData]);\n\n useEffect(() => {\n if (!quota && !anonymousMode) {\n api.buckets\n .getBucketQuota(bucketName)\n .then((res) => {\n let quotaVals = null;\n\n if (res.data.quota) {\n quotaVals = res.data;\n }\n\n setQuota(quotaVals);\n })\n .catch((err) => {\n console.error(\n \"Error Getting Quota Status: \",\n err.error.detailedMessage,\n );\n setQuota(null);\n });\n }\n }, [quota, bucketName, anonymousMode]);\n\n useEffect(() => {\n if (selectedObjects.length > 0) {\n dispatch(setObjectDetailsView(true));\n return;\n }\n\n if (\n selectedObjects.length === 0 &&\n selectedInternalPaths === null &&\n !loadingObjects\n ) {\n dispatch(setObjectDetailsView(false));\n }\n }, [selectedObjects, selectedInternalPaths, dispatch, loadingObjects]);\n\n useEffect(() => {\n if (!iniLoad) {\n dispatch(setBucketDetailsLoad(true));\n setIniLoad(true);\n }\n }, [iniLoad, dispatch, setIniLoad]);\n\n // bucket info\n useEffect(() => {\n if ((loadingObjects || loadingBucket) && !anonymousMode) {\n api.buckets\n .bucketInfo(bucketName)\n .then((res) => {\n dispatch(setBucketDetailsLoad(false));\n dispatch(setBucketInfo(res.data));\n dispatch(setSelectedBucket(bucketName));\n })\n .catch((err) => {\n dispatch(setBucketDetailsLoad(false));\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n });\n }\n }, [bucketName, loadingBucket, dispatch, anonymousMode, loadingObjects]);\n\n // Load retention Config\n\n useEffect(() => {\n if (selectedBucket !== \"\") {\n api.buckets\n .getBucketRetentionConfig(selectedBucket)\n .then((res) => {\n dispatch(setRetentionConfig(res.data));\n })\n .catch(() => {\n dispatch(setRetentionConfig(null));\n });\n }\n }, [selectedBucket, dispatch]);\n\n const closeDeleteMultipleModalAndRefresh = (refresh: boolean) => {\n setDeleteMultipleOpen(false);\n\n if (refresh) {\n dispatch(setSnackBarMessage(`Objects deleted successfully.`));\n dispatch(setSelectedObjects([]));\n dispatch(setLoadingObjects(true));\n }\n };\n\n const handleUploadButton = (e: any) => {\n if (\n e === null ||\n e === undefined ||\n e.target.files === null ||\n e.target.files === undefined\n ) {\n return;\n }\n e.preventDefault();\n var newFiles: File[] = [];\n\n for (var i = 0; i < e.target.files.length; i++) {\n newFiles.push(e.target.files[i]);\n }\n uploadObject(newFiles, \"\");\n\n e.target.value = \"\";\n };\n\n const uploadObject = useCallback(\n (files: File[], folderPath: string): void => {\n let pathPrefix = \"\";\n if (simplePath) {\n pathPrefix = simplePath.endsWith(\"/\") ? simplePath : simplePath + \"/\";\n }\n\n const upload = (\n files: File[],\n bucketName: string,\n path: string,\n folderPath: string,\n ) => {\n let uploadPromise = (file: File) => {\n return new Promise((resolve, reject) => {\n let uploadUrl = `api/v1/buckets/${bucketName}/objects/upload`;\n const fileName = file.name;\n\n const blobFile = new Blob([file], { type: file.type });\n\n let encodedPath = \"\";\n\n const filePath = get(file, \"path\", \"\");\n const fileWebkitRelativePath = get(file, \"webkitRelativePath\", \"\");\n\n let relativeFolderPath = folderPath;\n const ID = makeid(8);\n\n // File was uploaded via drag & drop\n if (filePath !== \"\") {\n relativeFolderPath = filePath;\n } else if (fileWebkitRelativePath !== \"\") {\n // File was uploaded using upload button\n relativeFolderPath = fileWebkitRelativePath;\n }\n\n if (path !== \"\" || relativeFolderPath !== \"\") {\n const finalFolderPath = relativeFolderPath\n .split(\"/\")\n .slice(0, -1)\n .join(\"/\");\n\n const pathClean = path.endsWith(\"/\") ? path.slice(0, -1) : path;\n\n encodedPath = encodeURLString(\n `${pathClean}${\n !pathClean.endsWith(\"/\") &&\n finalFolderPath !== \"\" &&\n !finalFolderPath.startsWith(\"/\")\n ? \"/\"\n : \"\"\n }${finalFolderPath}${\n !finalFolderPath.endsWith(\"/\") ||\n (finalFolderPath.trim() === \"\" && !path.endsWith(\"/\"))\n ? \"/\"\n : \"\"\n }`,\n );\n }\n\n if (encodedPath !== \"\") {\n uploadUrl = `${uploadUrl}?prefix=${encodedPath}`;\n }\n\n const identity = encodeURLString(\n `${bucketName}-${encodedPath}-${new Date().getTime()}-${Math.random()}`,\n );\n\n let xhr = new XMLHttpRequest();\n xhr.open(\"POST\", uploadUrl, true);\n if (anonymousMode) {\n xhr.setRequestHeader(\"X-Anonymous\", \"1\");\n }\n // xhr.setRequestHeader(\"X-Anonymous\", \"1\");\n\n const areMultipleFiles = files.length > 1;\n let errorMessage = `An error occurred while uploading the file${\n areMultipleFiles ? \"s\" : \"\"\n }.`;\n\n const errorMessages: any = {\n 413: \"Error - File size too large\",\n };\n\n xhr.withCredentials = false;\n xhr.onload = function (event) {\n // resolve promise only when HTTP code is ok\n if (xhr.status >= 200 && xhr.status < 300) {\n dispatch(completeObject(identity));\n resolve({ status: xhr.status });\n\n removeTrace(ID);\n } else {\n // reject promise if there was a server error\n if (errorMessages[xhr.status]) {\n errorMessage = errorMessages[xhr.status];\n } else if (xhr.response) {\n try {\n const err = JSON.parse(xhr.response);\n errorMessage = err.detailedMessage;\n } catch (e) {\n errorMessage = \"something went wrong\";\n }\n }\n\n dispatch(\n failObject({\n instanceID: identity,\n msg: errorMessage,\n }),\n );\n reject({ status: xhr.status, message: errorMessage });\n\n removeTrace(ID);\n }\n };\n\n xhr.upload.addEventListener(\"error\", (event) => {\n reject(errorMessage);\n dispatch(\n failObject({\n instanceID: identity,\n msg: \"A network error occurred.\",\n }),\n );\n return;\n });\n\n xhr.upload.addEventListener(\"progress\", (event) => {\n const progress = Math.floor((event.loaded * 100) / event.total);\n\n dispatch(\n updateProgress({\n instanceID: identity,\n progress: progress,\n }),\n );\n });\n\n xhr.onerror = () => {\n reject(errorMessage);\n dispatch(\n failObject({\n instanceID: identity,\n msg: \"A network error occurred.\",\n }),\n );\n return;\n };\n xhr.onloadend = () => {\n if (files.length === 0) {\n dispatch(setLoadingObjects(true));\n }\n };\n xhr.onabort = () => {\n dispatch(cancelObjectInList(identity));\n };\n\n const formData = new FormData();\n if (file.size !== undefined) {\n formData.append(file.size.toString(), blobFile, fileName);\n storeCallForObjectWithID(ID, xhr);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identity,\n percentage: 0,\n prefix: `${decodeURLString(encodedPath)}${fileName}`,\n type: \"upload\",\n waitingForFile: false,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n }),\n );\n storeFormDataWithID(ID, formData);\n }\n });\n };\n\n const uploadFilePromises: any = [];\n // open object manager\n dispatch(openList());\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n uploadFilePromises.push(uploadPromise(file));\n }\n Promise.allSettled(uploadFilePromises).then((results: Array) => {\n const errors = results.filter(\n (result) => result.status === \"rejected\",\n );\n if (errors.length > 0) {\n const totalFiles = uploadFilePromises.length;\n const successUploadedFiles =\n uploadFilePromises.length - errors.length;\n const err: ErrorResponseHandler = {\n errorMessage: \"There were some errors during file upload\",\n detailedError: `Uploaded files ${successUploadedFiles}/${totalFiles}`,\n };\n dispatch(setErrorSnackMessage(err));\n }\n // We force objects list reload after all promises were handled\n dispatch(setLoadingObjects(true));\n dispatch(setSelectedObjects([]));\n });\n };\n\n upload(files, bucketName, pathPrefix, folderPath);\n },\n [bucketName, dispatch, simplePath, anonymousMode],\n );\n\n const onDrop = useCallback(\n (acceptedFiles: any[]) => {\n if (acceptedFiles && acceptedFiles.length > 0 && canUpload) {\n let newFolderPath: string = acceptedFiles[0].path;\n //Should we filter by allowed file extensions if any?.\n let allowedFiles = [];\n if (allowedFileExtensions.length > 0) {\n allowedFiles = acceptedFiles.filter((file) => {\n const fileExtn = extractFileExtn(file.name);\n return allowedFileExtensions.includes(fileExtn);\n });\n } else {\n allowedFiles = acceptedFiles;\n }\n\n if (allowedFiles.length) {\n uploadObject(allowedFiles, newFolderPath);\n console.log(\n `${allowedFiles.length} Allowed Files Processed out of ${acceptedFiles.length}.`,\n pathAsResourceInPolicy,\n ...sessionGrantWildCards,\n );\n\n if (allowedFiles.length !== acceptedFiles.length) {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Upload is restricted.\",\n detailedError: permissionTooltipHelper(\n [IAM_SCOPES.S3_PUT_OBJECT, IAM_SCOPES.S3_PUT_ACTIONS],\n \"upload objects to this location\",\n ),\n }),\n );\n }\n } else {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Could not process drag and drop.\",\n detailedError: permissionTooltipHelper(\n [IAM_SCOPES.S3_PUT_OBJECT, IAM_SCOPES.S3_PUT_ACTIONS],\n \"upload objects to this location\",\n ),\n }),\n );\n\n console.error(\n \"Could not process drag and drop . upload may be restricted.\",\n pathAsResourceInPolicy,\n ...sessionGrantWildCards,\n );\n }\n }\n if (!canUpload) {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Upload not allowed\",\n detailedError: permissionTooltipHelper(\n [IAM_SCOPES.S3_PUT_OBJECT, IAM_SCOPES.S3_PUT_ACTIONS],\n \"upload objects to this location\",\n ),\n }),\n );\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [uploadObject],\n );\n\n const { getRootProps, getInputProps, isDragActive, isDragAccept } =\n useDropzone({\n noClick: true,\n onDrop,\n });\n\n const dndStyles = useMemo(\n () => ({\n ...baseDnDStyle,\n ...(isDragActive ? activeDnDStyle : {}),\n ...(isDragAccept ? acceptDnDStyle : {}),\n }),\n [isDragActive, isDragAccept],\n );\n\n const closeShareModal = () => {\n dispatch(setShareFileModalOpen(false));\n dispatch(setSelectedPreview(null));\n };\n\n const rewindCloseModal = () => {\n setRewindSelect(false);\n };\n\n const closePreviewWindow = () => {\n dispatch(setPreviewOpen(false));\n dispatch(setSelectedPreview(null));\n };\n\n const onClosePanel = (forceRefresh: boolean) => {\n dispatch(setSelectedObjectView(null));\n dispatch(setVersionsModeEnabled({ status: false }));\n if (detailsOpen && selectedInternalPaths !== null) {\n // We change URL to be the contained folder\n\n const decodedPath = decodeURLString(internalPaths);\n const splitURLS = decodedPath.split(\"/\");\n\n // We remove the last section of the URL as it should be a file\n splitURLS.pop();\n\n let URLItem = \"\";\n\n if (splitURLS && splitURLS.length > 0) {\n URLItem = `${splitURLS.join(\"/\")}/`;\n }\n\n navigate(`/browser/${bucketName}/${encodeURLString(URLItem)}`);\n }\n\n dispatch(setObjectDetailsView(false));\n dispatch(setSelectedObjects([]));\n\n if (forceRefresh) {\n dispatch(setLoadingObjects(true));\n }\n };\n\n const setDeletedAction = () => {\n dispatch(resetMessages());\n dispatch(setShowDeletedObjects(!showDeleted));\n onClosePanel(true);\n };\n\n const closeRenameModal = () => {\n dispatch(setDownloadRenameModal(null));\n };\n\n const closeAddAccessRule = () => {\n dispatch(setAnonymousAccessOpen(false));\n };\n\n let createdTime = DateTime.now();\n\n if (bucketInfo?.creation_date) {\n createdTime = DateTime.fromISO(bucketInfo.creation_date);\n }\n\n const downloadToolTip =\n selectedObjects?.length <= 1\n ? \"Download Selected\"\n : ` Download selected objects as Zip. Any Deleted objects in the selection would be skipped from download.`;\n\n const multiActionButtons = [\n {\n action: () => {\n dispatch(downloadSelected(bucketName));\n },\n label: \"Download\",\n disabled: !canDownload || selectedObjects?.length === 0,\n icon: ,\n tooltip: canDownload\n ? downloadToolTip\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n \"download objects from this bucket\",\n ),\n },\n {\n action: () => {\n dispatch(openShare());\n },\n label: \"Share\",\n disabled: selectedObjects.length !== 1 || !canShareFile,\n icon: ,\n tooltip: canShareFile ? \"Share Selected File\" : \"Sharing unavailable\",\n },\n {\n action: () => {\n dispatch(openPreview());\n },\n label: \"Preview\",\n disabled: selectedObjects.length !== 1 || !canPreviewFile,\n icon: ,\n tooltip: canPreviewFile ? \"Preview Selected File\" : \"Preview unavailable\",\n },\n {\n action: () => {\n dispatch(openAnonymousAccess());\n },\n label: \"Anonymous Access\",\n disabled:\n selectedObjects.length !== 1 ||\n !selectedObjects[0].endsWith(\"/\") ||\n !canSetAnonymousAccess,\n icon: ,\n tooltip:\n selectedObjects.length === 1 && selectedObjects[0].endsWith(\"/\")\n ? \"Set Anonymous Access to this Folder\"\n : \"Anonymous Access unavailable\",\n },\n {\n action: () => {\n setDeleteMultipleOpen(true);\n },\n label: \"Delete\",\n icon: ,\n disabled: !canDelete || selectedObjects.length === 0,\n tooltip: canDelete\n ? \"Delete Selected Files\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_DELETE_OBJECT],\n \"delete objects in this bucket\",\n ),\n },\n ];\n\n return (\n \n {shareFileModalOpen && selectedPreview && (\n \n )}\n {deleteMultipleOpen && (\n \n )}\n {rewindSelect && (\n \n )}\n {previewOpen && (\n \n )}\n {!!downloadRenameModal && (\n \n )}\n {anonymousAccessOpen && (\n \n )}\n\n \n {anonymousMode && (\n
    \n \n
    \n )}\n \n \n \n \n }\n title={bucketName}\n subTitle={\n !anonymousMode ? (\n \n \n Created on:  \n \n {bucketInfo?.creation_date\n ? createdTime.toFormat(\n \"ccc, LLL dd yyyy HH:mm:ss (ZZZZ)\",\n )\n : \"\"}\n \n \n \n Access:   \n {bucketInfo?.access || \"\"}\n \n {bucketInfo && (\n \n \n {bucketInfo.size && (\n {niceBytesInt(bucketInfo.size)}\n )}\n {bucketInfo.size && quota && (\n \n {\" \"}\n / {niceBytesInt(quota.quota || 0)}\n \n )}\n {bucketInfo.size && bucketInfo.objects ? \" - \" : \"\"}\n {bucketInfo.objects && (\n \n {bucketInfo.objects} Object\n {bucketInfo.objects && bucketInfo.objects !== 1\n ? \"s\"\n : \"\"}\n \n )}\n \n \n )}\n \n ) : null\n }\n actions={\n \n {!anonymousMode && (\n \n \n \n \n }\n variant={\"regular\"}\n onClick={() => {\n setRewindSelect(true);\n }}\n disabled={\n !isVersioningApplied ||\n !hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_OBJECT,\n IAM_SCOPES.S3_GET_ACTIONS,\n ])\n }\n />\n \n )}\n \n }\n variant={\"regular\"}\n onClick={() => {\n if (versionsMode) {\n dispatch(setLoadingVersions(true));\n } else {\n dispatch(resetMessages());\n dispatch(setLoadingRecords(true));\n dispatch(setLoadingObjects(true));\n }\n }}\n disabled={\n anonymousMode\n ? false\n : !hasPermission(bucketName, [\n IAM_SCOPES.S3_LIST_BUCKET,\n IAM_SCOPES.S3_ALL_LIST_BUCKET,\n ]) || rewindEnabled\n }\n />\n \n \n \n {\n if (fileUpload && fileUpload.current) {\n fileUpload.current.click();\n }\n closeMenu();\n }}\n uploadFolderFunction={(closeMenu) => {\n if (folderUpload && folderUpload.current) {\n folderUpload.current.click();\n }\n closeMenu();\n }}\n />\n \n }\n bottomBorder={false}\n />\n \n \n \n \n {versionsMode ? (\n \n {selectedInternalPaths !== null && (\n \n )}\n \n ) : (\n \n \n {!anonymousMode && (\n \n \n \n \n )\n }\n hidePathButton={false}\n />\n \n )}\n \n \n \n )}\n {!anonymousMode && (\n \n {\n onClosePanel(false);\n }}\n className={`${versionsMode ? classes.hideListOnSmall : \"\"}`}\n >\n {selectedObjects.length > 0 && (\n \n )}\n {selectedInternalPaths !== null && (\n \n )}\n \n \n )}\n \n \n
    \n
    \n );\n};\n\nexport default ListObjects;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect } from \"react\";\nimport {\n IAM_PAGES,\n IAM_PERMISSIONS,\n IAM_ROLES,\n IAM_SCOPES,\n} from \"../../../common/SecureComponent/permissions\";\nimport { SecureComponent } from \"../../../common/SecureComponent\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport { BackLink, Button, SettingsIcon, Grid } from \"mds\";\nimport AutoColorIcon from \"../Common/Components/AutoColorIcon\";\nimport { useSelector } from \"react-redux\";\nimport { selFeatures } from \"../consoleSlice\";\nimport hasPermission from \"../../../common/SecureComponent/accessControl\";\nimport { useNavigate } from \"react-router-dom\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { setSearchVersions } from \"./objectBrowserSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport FilterObjectsSB from \"./FilterObjectsSB\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport ObjectManagerButton from \"../Common/ObjectManager/ObjectManagerButton\";\nimport HelpMenu from \"../HelpMenu\";\nimport { setHelpName } from \"../../../systemSlice\";\n\ninterface IOBHeader {\n bucketName: string;\n}\n\nconst OBHeader = ({ bucketName }: IOBHeader) => {\n const dispatch = useAppDispatch();\n const features = useSelector(selFeatures);\n\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode,\n );\n const versionedFile = useSelector(\n (state: AppState) => state.objectBrowser.versionedFile,\n );\n const searchVersions = useSelector(\n (state: AppState) => state.objectBrowser.searchVersions,\n );\n\n const obOnly = !!features?.includes(\"object-browser-only\");\n\n const navigate = useNavigate();\n\n const configureBucketAllowed = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_POLICY,\n IAM_SCOPES.S3_PUT_BUCKET_POLICY,\n IAM_SCOPES.S3_GET_BUCKET_VERSIONING,\n IAM_SCOPES.S3_PUT_BUCKET_VERSIONING,\n IAM_SCOPES.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,\n IAM_SCOPES.S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION,\n IAM_SCOPES.S3_DELETE_BUCKET,\n IAM_SCOPES.S3_GET_BUCKET_NOTIFICATIONS,\n IAM_SCOPES.S3_PUT_BUCKET_NOTIFICATIONS,\n IAM_SCOPES.S3_GET_REPLICATION_CONFIGURATION,\n IAM_SCOPES.S3_PUT_REPLICATION_CONFIGURATION,\n IAM_SCOPES.S3_GET_LIFECYCLE_CONFIGURATION,\n IAM_SCOPES.S3_PUT_LIFECYCLE_CONFIGURATION,\n IAM_SCOPES.ADMIN_GET_BUCKET_QUOTA,\n IAM_SCOPES.ADMIN_SET_BUCKET_QUOTA,\n IAM_SCOPES.S3_PUT_BUCKET_TAGGING,\n IAM_SCOPES.S3_GET_BUCKET_TAGGING,\n IAM_SCOPES.S3_LIST_BUCKET_VERSIONS,\n IAM_SCOPES.S3_GET_BUCKET_POLICY_STATUS,\n IAM_SCOPES.S3_DELETE_BUCKET_POLICY,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n\n const searchBar = (\n \n {!versionsMode ? (\n \n \n \n ) : (\n \n {\n dispatch(setSearchVersions(value));\n }}\n value={searchVersions}\n />\n \n )}\n \n );\n\n useEffect(() => {\n dispatch(setHelpName(\"object_browser\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {!obOnly ? (\n {\n navigate(IAM_PAGES.OBJECT_BROWSER_VIEW);\n }}\n />\n }\n actions={\n \n \n \n navigate(`/buckets/${bucketName}/admin`)}\n icon={\n \n }\n style={{\n padding: \"0 10px\",\n }}\n />\n \n \n \n \n }\n middleComponent={searchBar}\n />\n ) : (\n \n \n \n \n \n {searchBar}\n \n \n \n )}\n \n );\n};\n\nexport default OBHeader;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { DateTime } from \"luxon\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\nimport { Grid, InputBox, InputLabel, LinkIcon } from \"mds\";\n\ninterface IDaysSelector {\n classes: any;\n id: string;\n initialDate: Date;\n maxDays?: number;\n label: string;\n entity: string;\n onChange: (newDate: string, isValid: boolean) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n labelContainer: {\n display: \"flex\",\n alignItems: \"center\",\n marginBottom: 15,\n },\n fieldContainer: {\n ...fieldBasic.fieldContainer,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingBottom: 10,\n marginTop: 11,\n marginBottom: 6,\n },\n durationInputs: {\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"flex-start\",\n gap: 10,\n },\n\n validityIndicator: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n marginTop: 25,\n marginLeft: 10,\n },\n invalidDurationText: {\n marginTop: 15,\n display: \"flex\",\n color: \"red\",\n fontSize: 11,\n },\n reverseInput: {\n flexFlow: \"row-reverse\",\n \"& > label\": {\n fontWeight: 400,\n marginLeft: 15,\n marginRight: 25,\n },\n },\n validityText: {\n fontSize: 14,\n marginTop: 15,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n \"& > .min-icon\": {\n color: \"#5E5E5E\",\n width: 15,\n height: 15,\n marginRight: 10,\n },\n },\n validTill: {\n fontWeight: \"bold\",\n marginLeft: 15,\n },\n });\n\nconst calculateNewTime = (\n initialDate: Date,\n days: number,\n hours: number,\n minutes: number,\n) => {\n return DateTime.fromJSDate(initialDate).plus({ days, hours, minutes });\n};\n\nconst DaysSelector = ({\n classes,\n id,\n initialDate,\n label,\n maxDays,\n entity,\n onChange,\n}: IDaysSelector) => {\n const [selectedDays, setSelectedDays] = useState(7);\n const [selectedHours, setSelectedHours] = useState(0);\n const [selectedMinutes, setSelectedMinutes] = useState(0);\n const [validDate, setValidDate] = useState(true);\n const [dateSelected, setDateSelected] = useState(DateTime.now());\n\n useEffect(() => {\n if (\n !isNaN(selectedHours) &&\n !isNaN(selectedDays) &&\n !isNaN(selectedMinutes)\n ) {\n setDateSelected(\n calculateNewTime(\n initialDate,\n selectedDays,\n selectedHours,\n selectedMinutes,\n ),\n );\n }\n }, [initialDate, selectedDays, selectedHours, selectedMinutes]);\n\n useEffect(() => {\n if (validDate) {\n const formattedDate = dateSelected.toFormat(\"yyyy-MM-dd HH:mm:ss\");\n onChange(formattedDate.split(\" \").join(\"T\"), true);\n } else {\n onChange(\"0000-00-00\", false);\n }\n }, [dateSelected, onChange, validDate]);\n\n // Basic validation for inputs\n useEffect(() => {\n let valid = true;\n if (\n selectedDays < 0 ||\n (maxDays && selectedDays > maxDays) ||\n isNaN(selectedDays)\n ) {\n valid = false;\n }\n\n if (selectedHours < 0 || selectedHours > 23 || isNaN(selectedHours)) {\n valid = false;\n }\n\n if (selectedMinutes < 0 || selectedMinutes > 59 || isNaN(selectedMinutes)) {\n valid = false;\n }\n\n if (\n maxDays &&\n selectedDays === maxDays &&\n (selectedHours !== 0 || selectedMinutes !== 0)\n ) {\n valid = false;\n }\n\n if (selectedDays <= 0 && selectedHours <= 0 && selectedMinutes <= 0) {\n valid = false;\n }\n\n setValidDate(valid);\n }, [\n dateSelected,\n maxDays,\n onChange,\n selectedDays,\n selectedHours,\n selectedMinutes,\n ]);\n\n const extraStyles = {\n \"& .textBoxContainer\": {\n minWidth: 0,\n },\n \"& input\": {\n textAlign: \"center\" as const,\n paddingRight: 10,\n paddingLeft: 10,\n width: 40,\n },\n };\n\n return (\n \n \n \n {label}\n \n \n \n {\n setSelectedDays(parseInt(e.target.value));\n }}\n value={selectedDays.toString()}\n sx={extraStyles}\n noLabelMinWidth\n />\n \n \n {\n setSelectedHours(parseInt(e.target.value));\n }}\n value={selectedHours.toString()}\n sx={extraStyles}\n noLabelMinWidth\n />\n \n \n {\n setSelectedMinutes(parseInt(e.target.value));\n }}\n value={selectedMinutes.toString()}\n sx={extraStyles}\n noLabelMinWidth\n />\n \n \n \n {validDate ? (\n
    \n \n
    \n {entity} will be available until:\n
    {\" \"}\n
    \n {dateSelected.toFormat(\"MM/dd/yyyy HH:mm:ss\")}\n
    \n
    \n ) : (\n
    \n Please select a valid duration.\n
    \n )}\n
    \n \n
    \n );\n};\n\nexport default withStyles(styles)(DaysSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Button, CopyIcon, ReadBox, ShareIcon, Grid, ProgressBar } from \"mds\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport DaysSelector from \"../../../../Common/FormComponents/DaysSelector/DaysSelector\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport {\n selDistSet,\n setModalErrorSnackMessage,\n setModalSnackMessage,\n} from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\nimport { BucketObject } from \"api/consoleApi\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\n\ninterface IShareFileProps {\n open: boolean;\n bucketName: string;\n dataObject: BucketObject;\n closeModalAndRefresh: () => void;\n}\n\nconst ShareFile = ({\n open,\n closeModalAndRefresh,\n bucketName,\n dataObject,\n}: IShareFileProps) => {\n const dispatch = useAppDispatch();\n const distributedSetup = useSelector(selDistSet);\n const [shareURL, setShareURL] = useState(\"\");\n const [isLoadingVersion, setIsLoadingVersion] = useState(true);\n const [isLoadingFile, setIsLoadingFile] = useState(false);\n const [selectedDate, setSelectedDate] = useState(\"\");\n const [dateValid, setDateValid] = useState(true);\n const [versionID, setVersionID] = useState(\"null\");\n\n const initialDate = new Date();\n\n const dateChanged = (newDate: string, isValid: boolean) => {\n setDateValid(isValid);\n if (isValid) {\n setSelectedDate(newDate);\n return;\n }\n setSelectedDate(\"\");\n setShareURL(\"\");\n };\n\n useEffect(() => {\n // In case version is undefined, we get the latest version of the object\n if (dataObject.version_id === undefined) {\n // In case it is not distributed setup, then we default to \"null\";\n if (distributedSetup) {\n api.buckets\n .listObjects(bucketName, {\n prefix: encodeURLString(dataObject.name || \"\"),\n with_versions: distributedSetup,\n })\n .then((res) => {\n const result: BucketObject[] = res.data.objects || [];\n\n const latestVersion: BucketObject | undefined = result.find(\n (elem: BucketObject) => elem.is_latest,\n );\n\n if (latestVersion) {\n setVersionID(`${latestVersion.version_id}`);\n return;\n }\n\n // Version couldn't be retrieved, we default\n setVersionID(\"null\");\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n\n setIsLoadingVersion(false);\n return;\n }\n setVersionID(\"null\");\n setIsLoadingVersion(false);\n return;\n }\n setVersionID(dataObject.version_id || \"null\");\n setIsLoadingVersion(false);\n }, [bucketName, dataObject, distributedSetup, dispatch]);\n\n useEffect(() => {\n if (dateValid && !isLoadingVersion) {\n setIsLoadingFile(true);\n setShareURL(\"\");\n\n const slDate = new Date(`${selectedDate}`);\n const currDate = new Date();\n\n const diffDate = Math.ceil(\n (slDate.getTime() - currDate.getTime()) / 1000,\n );\n\n if (diffDate > 0) {\n api.buckets\n .shareObject(bucketName, {\n prefix: encodeURLString(dataObject.name || \"\"),\n version_id: versionID,\n expires: selectedDate !== \"\" ? `${diffDate}s` : \"\",\n })\n .then((res) => {\n setShareURL(res.data);\n setIsLoadingFile(false);\n })\n .catch((err) => {\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n setShareURL(\"\");\n setIsLoadingFile(false);\n });\n }\n }\n }, [\n dataObject,\n selectedDate,\n bucketName,\n dateValid,\n setShareURL,\n dispatch,\n distributedSetup,\n isLoadingVersion,\n versionID,\n ]);\n\n return (\n \n }\n modalOpen={open}\n onClose={() => {\n closeModalAndRefresh();\n }}\n >\n {isLoadingVersion && (\n \n \n \n )}\n {!isLoadingVersion && (\n \n \n This is a temporary URL with integrated access credentials for\n sharing objects valid for up to 7 days.\n
    \n
    \n The temporary URL expires after the configured time limit.\n \n
    \n \n \n \n \n \n {\n dispatch(\n setModalSnackMessage(\"Share URL Copied to clipboard\"),\n );\n }}\n disabled={shareURL === \"\" || isLoadingFile}\n style={{\n width: \"28px\",\n height: \"28px\",\n padding: \"0px\",\n }}\n icon={}\n />\n \n }\n >\n {shareURL}\n \n \n
    \n )}\n \n
    \n );\n};\n\nexport default ShareFile;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid } from \"@mui/material\";\nimport { BucketObjectItem } from \"../ListObjects/types\";\nimport { AllowedPreviews, previewObjectType } from \"../utils\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport clsx from \"clsx\";\nimport WarningMessage from \"../../../../Common/WarningMessage/WarningMessage\";\nimport { api } from \"../../../../../../api\";\nimport get from \"lodash/get\";\nimport { ProgressBar } from \"mds\";\n\nconst styles = () =>\n createStyles({\n iframeContainer: {\n border: \"0px\",\n flex: \"1 1 auto\",\n width: \"100%\",\n height: 250,\n backgroundColor: \"transparent\",\n borderRadius: 5,\n\n \"&.image\": {\n height: 500,\n },\n \"&.text\": {\n height: 700,\n },\n \"&.audio\": {\n height: 150,\n },\n \"&.video\": {\n height: 350,\n },\n \"&.fullHeight\": {\n height: \"calc(100vh - 185px)\",\n },\n },\n iframeBase: {\n backgroundColor: \"#fff\",\n },\n iframeHidden: {\n display: \"none\",\n },\n });\n\ninterface IPreviewFileProps {\n bucketName: string;\n object: BucketObjectItem | null;\n isFullscreen?: boolean;\n classes: any;\n}\n\nconst PreviewFile = ({\n bucketName,\n object,\n isFullscreen = false,\n classes,\n}: IPreviewFileProps) => {\n const [loading, setLoading] = useState(true);\n\n const [metaData, setMetaData] = useState(null);\n const [isMetaDataLoaded, setIsMetaDataLoaded] = useState(false);\n\n const objectName = object?.name || \"\";\n\n const fetchMetadata = useCallback(() => {\n if (!isMetaDataLoaded) {\n const encodedPath = encodeURLString(objectName);\n api.buckets\n .getObjectMetadata(bucketName, {\n prefix: encodedPath,\n })\n .then((res) => {\n let metadata = get(res.data, \"objectMetadata\", {});\n setIsMetaDataLoaded(true);\n setMetaData(metadata);\n })\n .catch((err) => {\n console.error(\n \"Error Getting Metadata Status: \",\n err,\n err?.detailedError,\n );\n setIsMetaDataLoaded(true);\n });\n }\n }, [bucketName, objectName, isMetaDataLoaded]);\n\n useEffect(() => {\n if (bucketName && objectName) {\n fetchMetadata();\n }\n }, [bucketName, objectName, fetchMetadata]);\n\n let path = \"\";\n\n if (object) {\n const encodedPath = encodeURLString(object.name);\n let basename = document.baseURI.replace(window.location.origin, \"\");\n path = `${window.location.origin}${basename}api/v1/buckets/${bucketName}/objects/download?preview=true&prefix=${encodedPath}`;\n if (object.version_id) {\n path = path.concat(`&version_id=${object.version_id}`);\n }\n }\n\n let objectType: AllowedPreviews = previewObjectType(metaData, objectName);\n\n const iframeLoaded = () => {\n setLoading(false);\n };\n\n return (\n \n {objectType !== \"none\" && loading && (\n \n \n \n )}\n {isMetaDataLoaded ? (\n
    \n {objectType === \"video\" && (\n \n \n \n )}\n {objectType === \"audio\" && (\n \n \n \n )}\n {objectType === \"image\" && (\n \n )}\n {objectType === \"none\" && (\n
    \n \n
    \n )}\n {objectType !== \"none\" &&\n objectType !== \"video\" &&\n objectType !== \"audio\" &&\n objectType !== \"image\" && (\n \n \n File couldn't be loaded. Please try Download instead\n \n
    \n )}\n \n ) : null}\n
    \n );\n};\nexport default withStyles(styles)(PreviewFile);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport PreviewFileContent from \"./PreviewFileContent\";\nimport { BucketObjectItem } from \"../ListObjects/types\";\nimport { ObjectPreviewIcon } from \"mds\";\n\ninterface IPreviewFileProps {\n open: boolean;\n bucketName: string;\n object: BucketObjectItem | null;\n onClosePreview: () => void;\n}\n\nconst PreviewFileModal = ({\n open,\n bucketName,\n object,\n onClosePreview,\n}: IPreviewFileProps) => {\n return (\n \n }\n >\n \n \n \n );\n};\n\nexport default PreviewFileModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { BucketObjectItem } from \"./ListObjects/types\";\nimport { encodeURLString } from \"../../../../../common/utils\";\nimport { removeTrace } from \"../../../ObjectBrowser/transferManager\";\nimport store from \"../../../../../store\";\nimport { ContentType, PermissionResource } from \"api/consoleApi\";\nimport { api } from \"../../../../../api\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\n\nconst downloadWithLink = (href: string, downloadFileName: string) => {\n const link = document.createElement(\"a\");\n link.href = href;\n link.download = downloadFileName;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n};\n\nexport const downloadSelectedAsZip = async (\n bucketName: string,\n objectList: string[],\n resultFileName: string,\n) => {\n const state = store.getState();\n const anonymousMode = state.system.anonymousMode;\n\n try {\n const resp = await api.buckets.downloadMultipleObjects(\n bucketName,\n objectList,\n {\n type: ContentType.Json,\n headers: anonymousMode\n ? {\n \"X-Anonymous\": \"1\",\n }\n : undefined,\n },\n );\n const blob = await resp.blob();\n const href = window.URL.createObjectURL(blob);\n downloadWithLink(href, resultFileName);\n } catch (err: any) {\n store.dispatch(\n setErrorSnackMessage({\n errorMessage: `Download of multiple files failed. ${err.statusText}`,\n detailedError: \"\",\n }),\n );\n }\n};\nexport const download = (\n bucketName: string,\n objectPath: string,\n versionID: any,\n fileSize: number,\n overrideFileName: string | null = null,\n id: string,\n progressCallback: (progress: number) => void,\n completeCallback: () => void,\n errorCallback: (msg: string) => void,\n abortCallback: () => void,\n toastCallback: () => void,\n) => {\n let basename = document.baseURI.replace(window.location.origin, \"\");\n const state = store.getState();\n const anonymousMode = state.system.anonymousMode;\n\n let path = `${\n window.location.origin\n }${basename}api/v1/buckets/${bucketName}/objects/download?prefix=${objectPath}${\n overrideFileName !== null && overrideFileName.trim() !== \"\"\n ? `&override_file_name=${encodeURLString(overrideFileName || \"\")}`\n : \"\"\n }`;\n if (versionID) {\n path = path.concat(`&version_id=${versionID}`);\n }\n\n // If file is greater than 50GiB then we force browser download, if not then we use HTTP Request for Object Manager\n if (fileSize > 53687091200) {\n return new BrowserDownload(path, id, completeCallback, toastCallback);\n }\n\n let req = new XMLHttpRequest();\n req.open(\"GET\", path, true);\n if (anonymousMode) {\n req.setRequestHeader(\"X-Anonymous\", \"1\");\n }\n req.addEventListener(\n \"progress\",\n function (evt) {\n let percentComplete = Math.round((evt.loaded / fileSize) * 100);\n\n if (progressCallback) {\n progressCallback(percentComplete);\n }\n },\n false,\n );\n\n req.responseType = \"blob\";\n req.onreadystatechange = () => {\n if (req.readyState === 4) {\n if (req.status === 200) {\n const rspHeader = req.getResponseHeader(\"Content-Disposition\");\n\n let filename = \"download\";\n if (rspHeader) {\n let rspHeaderDecoded = decodeURIComponent(rspHeader);\n filename = rspHeaderDecoded.split('\"')[1];\n }\n\n if (completeCallback) {\n completeCallback();\n }\n\n removeTrace(id);\n\n downloadWithLink(window.URL.createObjectURL(req.response), filename);\n } else {\n if (req.getResponseHeader(\"Content-Type\") === \"application/json\") {\n const rspBody: { detailedMessage?: string } = JSON.parse(\n req.response,\n );\n if (rspBody.detailedMessage) {\n errorCallback(rspBody.detailedMessage);\n return;\n }\n }\n errorCallback(`Unexpected response status code (${req.status}).`);\n }\n }\n };\n req.onerror = () => {\n if (errorCallback) {\n errorCallback(\"A network error occurred.\");\n }\n };\n req.onabort = () => {\n if (abortCallback) {\n abortCallback();\n }\n };\n\n return req;\n};\n\nclass BrowserDownload {\n path: string;\n id: string;\n completeCallback: () => void;\n toastCallback: () => void;\n\n constructor(\n path: string,\n id: string,\n completeCallback: () => void,\n toastCallback: () => void,\n ) {\n this.path = path;\n this.id = id;\n this.completeCallback = completeCallback;\n this.toastCallback = toastCallback;\n }\n\n send(): void {\n this.toastCallback();\n const link = document.createElement(\"a\");\n link.href = this.path;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n this.completeCallback();\n removeTrace(this.id);\n }\n}\n\nexport type AllowedPreviews = \"image\" | \"text\" | \"audio\" | \"video\" | \"none\";\nexport const contentTypePreview = (contentType: string): AllowedPreviews => {\n if (contentType) {\n const mimeObjectType = (contentType || \"\").toLowerCase();\n\n if (mimeObjectType.includes(\"image\")) {\n return \"image\";\n }\n if (mimeObjectType.includes(\"text\")) {\n return \"text\";\n }\n if (mimeObjectType.includes(\"audio\")) {\n return \"audio\";\n }\n if (mimeObjectType.includes(\"video\")) {\n return \"video\";\n }\n }\n\n return \"none\";\n};\n\n// Review file extension by name & returns the type of preview browser that can be used\nexport const extensionPreview = (fileName: string): AllowedPreviews => {\n const imageExtensions = [\n \"jif\",\n \"jfif\",\n \"apng\",\n \"avif\",\n \"svg\",\n \"webp\",\n \"bmp\",\n \"ico\",\n \"jpg\",\n \"jpe\",\n \"jpeg\",\n \"gif\",\n \"png\",\n \"heic\",\n ];\n const textExtensions = [\"pdf\"];\n const audioExtensions = [\"wav\", \"mp3\", \"alac\", \"aiff\", \"dsd\", \"pcm\"];\n const videoExtensions = [\n \"mp4\",\n \"avi\",\n \"mpg\",\n \"webm\",\n \"mov\",\n \"flv\",\n \"mkv\",\n \"wmv\",\n \"avchd\",\n \"mpeg-4\",\n ];\n\n let fileExtension = fileName.split(\".\").pop();\n\n if (!fileExtension) {\n return \"none\";\n }\n\n fileExtension = fileExtension.toLowerCase();\n\n if (imageExtensions.includes(fileExtension)) {\n return \"image\";\n }\n\n if (textExtensions.includes(fileExtension)) {\n return \"text\";\n }\n\n if (audioExtensions.includes(fileExtension)) {\n return \"audio\";\n }\n\n if (videoExtensions.includes(fileExtension)) {\n return \"video\";\n }\n\n return \"none\";\n};\n\nexport const previewObjectType = (\n metaData: Record,\n objectName: string,\n) => {\n const metaContentType = (\n (metaData && metaData[\"Content-Type\"]) ||\n \"\"\n ).toString();\n\n const extensionType = extensionPreview(objectName || \"\");\n const contentType = contentTypePreview(metaContentType);\n\n let objectType: AllowedPreviews = extensionType;\n\n if (extensionType === contentType) {\n objectType = extensionType;\n } else if (extensionType === \"none\" && contentType !== \"none\") {\n objectType = contentType;\n } else if (contentType === \"none\" && extensionType !== \"none\") {\n objectType = extensionType;\n }\n\n return objectType;\n};\nexport const sortListObjects = (fieldSort: string) => {\n switch (fieldSort) {\n case \"name\":\n return (a: BucketObjectItem, b: BucketObjectItem) =>\n a.name.localeCompare(b.name);\n case \"last_modified\":\n return (a: BucketObjectItem, b: BucketObjectItem) =>\n new Date(a.last_modified).getTime() -\n new Date(b.last_modified).getTime();\n case \"size\":\n return (a: BucketObjectItem, b: BucketObjectItem) =>\n (a.size || -1) - (b.size || -1);\n }\n};\n\nexport const permissionItems = (\n bucketName: string,\n currentPath: string,\n permissionsArray: PermissionResource[],\n): BucketObjectItem[] | null => {\n if (permissionsArray.length === 0) {\n return null;\n }\n\n // We get permissions applied to the current bucket\n const filteredPermissionsForBucket = permissionsArray.filter(\n (permissionItem) =>\n permissionItem.resource?.endsWith(`:${bucketName}`) ||\n permissionItem.resource?.includes(`:${bucketName}/`),\n );\n\n // No permissions for this bucket. we can throw the error message at this point\n if (filteredPermissionsForBucket.length === 0) {\n return null;\n }\n\n let returnElements: BucketObjectItem[] = [];\n\n // We split current path\n const splitCurrentPath = currentPath.split(\"/\");\n\n filteredPermissionsForBucket.forEach((permissionElement) => {\n // We review paths in resource address\n\n // We split ARN & get the last item to check the URL\n const splitARN = permissionElement.resource?.split(\":\");\n const urlARN = splitARN?.pop() || \"\";\n\n // We split the paths of the URL & compare against current location to see if there are more items to include. In case current level is a wildcard or is the last one, we omit this validation\n\n const splitURLARN = urlARN.split(\"/\");\n\n // splitURL has more items than bucket name, we can continue validating\n if (splitURLARN.length > 1) {\n splitURLARN.every((currentElementInPath, index) => {\n // It is a wildcard element. We can store the verification as value should be included (?)\n if (currentElementInPath === \"*\") {\n return false;\n }\n\n // Element is not included in the path. The user is trying to browse something else.\n if (\n splitCurrentPath[index] &&\n splitCurrentPath[index] !== currentElementInPath\n ) {\n return false;\n }\n\n // This element is not included by index in the current paths list. We add it so user can browse into it\n if (!splitCurrentPath[index]) {\n returnElements.push({\n name: `${currentElementInPath}/`,\n size: 0,\n last_modified: \"\",\n version_id: \"\",\n });\n }\n\n return true;\n });\n }\n\n // We review prefixes in allow resources for StringEquals variant only.\n if (\n permissionElement.conditionOperator === \"StringEquals\" ||\n permissionElement.conditionOperator === \"StringLike\"\n ) {\n permissionElement.prefixes?.forEach((prefixItem) => {\n // Prefix Item is not empty?\n if (prefixItem !== \"\") {\n const splitItems = prefixItem.split(\"/\");\n\n let pathToRouteElements: string[] = [];\n\n // We verify if currentPath is contained in the path begin, if is not contained the user has no access to this subpath\n const cleanCurrPath = currentPath.replace(/\\/$/, \"\");\n\n if (!prefixItem.startsWith(cleanCurrPath) && currentPath !== \"\") {\n return;\n }\n\n // For every split element we iterate and check if we can construct a URL\n splitItems.every((splitElement, index) => {\n if (!splitElement.includes(\"*\") && splitElement !== \"\") {\n if (splitElement !== splitCurrentPath[index]) {\n returnElements.push({\n name: `${pathToRouteElements.join(\"/\")}${\n pathToRouteElements.length > 0 ? \"/\" : \"\"\n }${splitElement}/`,\n size: 0,\n last_modified: \"\",\n version_id: \"\",\n });\n return false;\n }\n if (splitElement !== \"\") {\n pathToRouteElements.push(splitElement);\n }\n\n return true;\n }\n return false;\n });\n }\n });\n }\n });\n\n // We clean duplicated name entries\n if (returnElements.length > 0) {\n let clElements: BucketObjectItem[] = [];\n let keys: string[] = [];\n\n returnElements.forEach((itm) => {\n if (!keys.includes(itm.name)) {\n clElements.push(itm);\n keys.push(itm.name);\n }\n });\n\n returnElements = clElements;\n }\n\n return returnElements;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

    (\n WrappedComponent: ComponentType

    ,\n fallback: SuspenseProps[\"fallback\"] = null,\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { InputLabel, Switch, Tooltip, Typography } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport { actionsTray, fieldBasic } from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input/Input\";\n\ninterface IFormSwitch {\n label?: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n description?: string;\n index?: number;\n checked: boolean;\n switchOnly?: boolean;\n indicatorLabels?: string[];\n extraInputProps?: StandardInputProps[\"inputProps\"];\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n indicatorLabelOn: {\n fontWeight: \"bold\",\n color: \"#081C42 !important\",\n },\n indicatorLabel: {\n fontSize: 12,\n color: \"#E2E2E2\",\n margin: \"0 8px 0 10px\",\n },\n fieldDescription: {\n marginTop: 4,\n color: \"#999999\",\n },\n tooltip: {\n fontSize: 16,\n },\n ...actionsTray,\n ...fieldBasic,\n });\n\nconst StyledSwitch = withStyles((theme) => ({\n root: {\n width: 50,\n height: 24,\n padding: 0,\n margin: 0,\n },\n switchBase: {\n padding: 1,\n \"&$checked\": {\n transform: \"translateX(24px)\",\n color: theme.palette.common.white,\n \"& + $track\": {\n backgroundColor: \"#4CCB92\",\n boxShadow: \"inset 0px 1px 4px rgba(0,0,0,0.1)\",\n opacity: 1,\n border: \"none\",\n },\n },\n \"&$focusVisible $thumb\": {\n color: \"#4CCB92\",\n border: \"6px solid #fff\",\n },\n },\n thumb: {\n width: 22,\n height: 22,\n backgroundColor: \"#FAFAFA\",\n border: \"2px solid #FFFFFF\",\n marginLeft: 1,\n },\n track: {\n borderRadius: 24 / 2,\n backgroundColor: \"#E2E2E2\",\n boxShadow: \"inset 0px 1px 4px rgba(0,0,0,0.1)\",\n opacity: 1,\n transition: theme.transitions.create([\"background-color\", \"border\"]),\n },\n checked: {},\n focusVisible: {},\n switchContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n },\n}))(Switch);\n\nconst FormSwitchWrapper = ({\n label = \"\",\n onChange,\n value,\n id,\n name,\n checked = false,\n disabled = false,\n switchOnly = false,\n tooltip = \"\",\n description = \"\",\n classes,\n indicatorLabels,\n extraInputProps = {},\n}: IFormSwitch) => {\n const switchComponent = (\n \n {!switchOnly && (\n \n {indicatorLabels && indicatorLabels.length > 1\n ? indicatorLabels[1]\n : \"OFF\"}\n \n )}\n \n {!switchOnly && (\n \n {indicatorLabels ? indicatorLabels[0] : \"ON\"}\n \n )}\n \n );\n\n if (switchOnly) {\n return switchComponent;\n }\n\n return (\n

    \n \n \n {label !== \"\" && (\n \n {label}\n {tooltip !== \"\" && (\n
    \n \n
    \n \n
    \n
    \n
    \n )}\n
    \n )}\n
    \n \n {switchComponent}\n
    \n {description !== \"\" && (\n \n \n {description}\n \n \n )}\n \n
    \n );\n};\n\nexport default withStyles(styles)(FormSwitchWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { ClipboardEvent, useState } from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n onKeyPress?: (e: any) => void;\n onFocus?: () => void;\n onPaste?: (e: ClipboardEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayId?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n }),\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayId,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n onFocus,\n onPaste,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n const [toggleTextInput, setToggleTextInput] = useState(false);\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n let inputBoxWrapperIcon = overlayIcon;\n let inputBoxWrapperType = type;\n\n if (type === \"password\" && overlayIcon === null) {\n inputBoxWrapperIcon = toggleTextInput ? (\n \n ) : (\n \n );\n inputBoxWrapperType = toggleTextInput ? \"text\" : \"password\";\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
    \n \n
    \n \n
    \n
    \n
    \n )}\n \n )}\n\n
    \n \n {inputBoxWrapperIcon && (\n \n {\n overlayAction();\n }\n : () => setToggleTextInput(!toggleTextInput)\n }\n id={overlayId}\n size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {inputBoxWrapperIcon}\n \n
    \n )}\n {overlayObject && (\n \n {overlayObject}\n \n )}\n \n \n
    \n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 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

    {title}

    \n
    {label}
    \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\";\nimport { Box } from \"@mui/material\";\nimport { Button, CopyIcon } from \"mds\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\n\nconst KeyRevealer = ({ value }: { value: string }) => {\n const [shown, setShown] = useState(false);\n\n return (\n \n {}}\n value={value}\n overlayIcon={}\n extraInputProps={{\n readOnly: true,\n }}\n overlayAction={() => navigator.clipboard.writeText(value)}\n />\n\n setShown(!shown)}\n label={\"Show/Hide\"}\n />\n \n );\n};\n\nexport default KeyRevealer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\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 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":["_ref","modalOpen","onClose","bucket","prefilledRoute","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","prefix","setPrefix","_useState3","_useState4","selectedAccess","setSelectedAccess","useEffect","_jsx","ModalWrapper","title","titleIcon","AddAccessRuleIcon","children","_jsxs","FormLayout","withBorders","containerPadding","InputBox","value","label","id","name","placeholder","onChange","e","target","tooltip","Select","options","disabled","Grid","item","xs","sx","modalStyleUtils","modalButtonBar","Button","type","variant","onClick","trim","api","setAccessRuleWithBucket","access","then","res","setSnackBarMessage","catch","setErrorSnackMessage","errorToHandler","error","objectsWS","extractFileExtn","resourceStr","match","getSessionGrantsWildCard","sessionGrants","uploadPath","scopes","arguments","length","undefined","grantsWithExtension","Object","keys","reduce","acc","grantKey","includes","filter","sessionGrantKey","hasScope","some","actionKey","find","scopeKey","wildCardMatch","indexOf","scopeActionKey","substring","isUploadPathMatching","concat","CreatePathModal","withSuspense","React","useStyles","makeStyles","theme","createStyles","_objectSpread","objectBrowserCommon","slashSpacingStyle","margin","bucketName","internalPaths","hidePathButton","additionalOptions","navigate","useNavigate","classes","rewindEnabled","useSelector","state","objectBrowser","rewind","versionsMode","versionedFile","anonymousMode","system","createFolderOpen","setCreateFolderOpen","putObjectPermScopes","IAM_SCOPES","S3_PUT_OBJECT","S3_PUT_ACTIONS","console","session","permissions","paths","splitPaths","split","path","lastBreadcrumbsIndex","pathToCheckPerms","sessionGrantWildCards","canCreatePath","hasPermission","_toConsumableArray","breadcrumbsMap","map","objectItem","index","subSplit","slice","join","route","encodeURLString","Fragment","className","style","cursor","whiteSpace","safeDecodeURIComponent","Link","to","setVersionsModeEnabled","status","objectName","toString","versionsItem","listBreadcrumbs","breadcrumbsMain","folderName","Breadcrumbs","goBackFunction","prevPath","CopyToClipboard","text","icon","CopyIcon","width","height","fill","marginTop","color","border","marginRight","Tooltip","permissionTooltipHelper","NewPathIcon","breadcrumbsSecond","withStyles","listUploadIcons","_ref$forceDisable","forceDisable","uploadFileFunction","uploadFolderFunction","_ref$overrideStyles","overrideStyles","anchorEl","setAnchorEl","openUploadMenu","Boolean","handleCloseUpload","uploadObjectAllowed","uploadFolderAllowed","uploadEnabled","TooltipWrapper","event","currentTarget","UploadIcon","Menu","open","anchorOrigin","vertical","horizontal","transformOrigin","MenuItem","ListItemIcon","ListItemText","UploadFolderIcon","detailsList","borderColor","borderWidth","borderStyle","borderRadius","borderBottomLeftRadius","borderBottomRightRadius","transitionDuration","overflowX","overflowY","position","opacity","marginLeft","minWidth","borderLeftWidth","closePanel","_ref$className","ClosePanelIcon","right","top","padding","backgroundColor","months","days","Array","from","_","num","currentYear","Date","getFullYear","years","numYear","DateSelector","forwardRef","ref","_ref$disableOptions","disableOptions","_ref$addSwitch","addSwitch","_ref$tooltip","_ref$borderBottom","borderBottom","onDateChange","_ref$value","useImperativeHandle","resetDate","dateEnabled","setDateEnabled","month","setMonth","_useState5","_useState6","day","setDay","_useState7","_useState8","year","setYear","valueSplit","parseInt","_validDate","currentDate","parse","isNaN","parsedMonth","parsedDay","monthForString","dayForString","parsedDate","toISOString","dateString","validDate","_validDate2","isValid","isDateDisabled","monthForDropDown","daysForDrop","yearsForDrop","clsx","fieldContainer","_defineProperty","fieldContainerBorder","labelContainer","container","InputLabel","htmlFor","tooltipContainer","placement","HelpIcon","Switch","indicatorLabels","checked","switchOnly","Box","display","gap","newValue","fieldBasic","tooltipHelper","alignItems","justifyContent","paddingBottom","marginBottom","formFieldStyles","spacingUtils","closeModalAndRefresh","objectInfo","retentionConfig","statusEnabled","setStatusEnabled","setType","date","setDate","isDateValid","setIsDateValid","_useState9","_useState10","isSaving","setIsSaving","_useState11","_useState12","alreadyConfigured","setAlreadyConfigured","retention_mode","mode","ObjectRetentionMode","Governance","retention_until_date","valueDate","getMonth","getDate","dateElement","useRef","resetForm","current","showSwitcher","spacerBottom","noValidate","autoComplete","onSubmit","preventDefault","formFieldRow","RadioGroup","currentValue","selectorOptions","Compliance","dateSelector","selectedObject","versionId","version_id","expireDate","buckets","putObjectRetention","expires","err","setModalErrorSnackMessage","addRetention","deleteObjectRetention","disableRetention","isVersionedMode","closeDeleteModalAndRefresh","deleteOpen","selectedBucket","versioningInfo","_ref$selectedVersion","selectedVersion","_useApi","useApi","detailedError","_useApi2","deleteLoading","invokeDeleteApi","deleteVersions","setDeleteVersions","bypassGovernance","setBypassGovernance","canBypass","S3_BYPASS_GOVERNANCE_RETENTION","ConfirmDialog","confirmText","isOpen","ConfirmDeleteIcon","isLoading","onConfirm","recursive","decodeURLString","endsWith","confirmationContent","description","actualInfo","legalHoldEnabled","setLegalHoldEnabled","get","putObjectLegalHold","ObjectLegalHoldStatus","Enabled","Disabled","itemRendererFn","element","isArray","titleItem","detailsPanel","metaData","_ref$linear","linear","metaKeys","renderItem","metadataLinear","Table","table","TableBody","TableRow","TableCell","component","scope","align","fileName","minHeight","fileNameText","overflow","textOverflow","strings","replaceUnicodeChar","extensionToIcon","FileVideoIcon","extensions","FileMusicIcon","FilePdfIcon","FilePptIcon","FileXlsIcon","FileLockIcon","FileCodeIcon","FileConfigIcon","FileDbIcon","FileFontIcon","FileTxtIcon","FileZipIcon","FileBookIcon","FileImageIcon","displayFileIconName","returnOnlyIcon","elementString","FileNonType","FolderBrowserIcon","lowercaseElement","toLowerCase","_i","_extensionToIcon","_step","etc","_iterator","_createForOfIteratorHelper","s","n","done","ext","f","FileMissingIcon","splitItem","IconWithLabel","newTileHeader","fontSize","fontWeight","tagsForLabel","currentTagsContainer","noTagsForObject","deleteTag","_actualInfo$name","onCloseAndUpdate","distributedSetup","selDistSet","newKey","setNewKey","newLabel","setNewLabel","isSending","setIsSending","deleteEnabled","setDeleteEnabled","deleteKey","setDeleteKey","deleteLabel","setDeleteLabel","currentTags","tags","currTagKeys","allPathData","currentItem","pop","tagsFor","plural","DisabledIcon","EditTagIcon","cleanObject","verID","putObjectTags","SecureComponent","S3_GET_OBJECT_TAGGING","S3_GET_ACTIONS","resource","flexFlow","tagKey","tag","S3_DELETE_OBJECT_TAGGING","errorProps","deleteIcon","onDelete","Chip","textTransform","size","CloseIcon","onDeleteTag","S3_PUT_OBJECT_TAGGING","SectionTitle","AddNewTagIcon","separator","newTag","newTagList","closeInspectModalAndRefresh","inspectOpen","inspectPath","volumeName","isEncrypt","setIsEncrypt","decryptionKey","setDecryptionKey","insFileName","setInsFileName","makeRequest","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","url","wrap","_context","prev","next","fetch","method","abrupt","sent","stop","_x","apply","performInspect","_ref3","_callee3","file","volume","urlOfInspectApi","_context3","_ref4","_callee2","resErr","blob","filename","decryptKey","_context2","ok","json","errorMessage","message","code","headers","getCookieValue","performDownload","_x2","InspectMenuIcon","deleteCookie","PasswordKeyIcon","DialogContentText","KeyRevealer","downloadObject","object","_object$name","identityDownload","getTime","Math","random","isWinOs","getClientOS","setLongFileOpen","ID","makeid","downloadCall","download","progress","updateProgress","instanceID","completeObject","msg","failObject","cancelObjectInList","storeCallForObjectWithID","setNewObject","percentage","waitingForFile","failed","cancelled","containerForHeader","closeModal","newFileName","setNewFileName","acceptLongName","setAcceptLongName","EditIcon","doDownload","modalFormScrollable","InputBoxWrapper","FormSwitchWrapper","emptyFile","is_latest","last_modified","legal_hold_status","ObjectDetailsTitle","objectNameContainer","capitalizeFirst","actionsTray","textStyleUtils","locking","onClosePanel","loadingObjectInfo","shareFileModalOpen","setShareFileModalOpen","retentionModalOpen","setRetentionModalOpen","tagModalOpen","setTagModalOpen","legalholdOpen","setLegalholdOpen","inspectModalOpen","setInspectModalOpen","setActualInfo","_useState13","_useState14","allInfoElements","setAllInfoElements","_useState15","_useState16","objectToShare","setObjectToShare","_useState17","_useState18","versions","setVersions","_useState19","_useState20","setDeleteOpen","_useState21","_useState22","previewOpen","setPreviewOpen","_useState23","_useState24","totalVersionsSize","setTotalVersionsSize","_useState25","_useState26","longFileOpen","_useState27","_useState28","setMetaData","_useState29","_useState30","loadMetadata","setLoadingMetadata","objectNameArray","infoElement","el","is_delete_marker","listObjects","with_versions","result","data","objects","tVersionSize","currValue","resInfo","setLoadingObjectInfo","getObjectMetadata","metadata","tagKeys","loaderForContainer","textAlign","Loader","objectResources","canSetLegalHold","S3_PUT_OBJECT_LEGAL_HOLD","canSetTags","canChangeRetention","S3_GET_OBJECT_RETENTION","S3_PUT_OBJECT_RETENTION","canInspect","ADMIN_INSPECT_DATA","canChangeVersioning","S3_GET_BUCKET_VERSIONING","S3_PUT_BUCKET_VERSIONING","S3_GET_OBJECT_VERSION","canGetObject","S3_GET_OBJECT","canDelete","S3_DELETE_OBJECT","objectType","previewObjectType","multiActionButtons","action","DownloadIcon","ShareIcon","PreviewIcon","LegalHoldIcon","RetentionIcon","TagsIcon","VersionsIcon","ShareFile","dataObject","SetRetention","updateInfo","DeleteObject","closeAndReload","setLoadingVersions","setSelectedVersion","SetLegalHoldModal","reload","PreviewFileModal","content_type","onClosePreview","TagsModal","reloadObjectData","InspectObject","RenameLongFileName","ActionsList","items","DeleteIcon","iconLocation","fullWidth","SimpleHeader","ObjectInfoIcon","detailContainer","overflowWrap","niceBytes","niceBytesInt","lastModified","currentTime","modifiedTime","difTime","formatTime","niceDaysInt","calculateLastModifyTime","etag","S3_GET_OBJECT_LEGAL_HOLD","MetadataIcon","ObjectMetaData","modalBasic","versionToRestore","objectPath","restoreOpen","restoreLoading","setRestoreLoading","RecoverIcon","putObjectRestore","restoreLocalObjectList","confirmButtonProps","wrapText","bgColor","checkboxIcons","flexBasis","flexWrap","noTopMargin","_ref$checked","_ref$disabled","_ref$noTopMargin","_ref$overrideLabelCla","overrideLabelClasses","overrideCheckboxStyles","Checkbox","inputProps","checkedIcon","unCheckedIcon","disableRipple","disableFocusRipple","focusRipple","centerRipple","disableTouchRipple","noMinWidthLabel","FileVersionStyled","styled","div","content","left","borderBottomColor","maxWidth","flexDirection","versionInfo","isSelected","checkable","isChecked","onCheck","onShare","onDownload","onRestore","onPreview","globalClick","key","disableButtons","versionItemButtons","pill","DateTime","now","fromISO","md","CheckboxWrapper","stopPropagation","paddingLeft","SpecificVersionPill","button","IconButton","toFormat","setDeleteLoading","typeConfirm","setTypeConfirm","deleteObject","non_current_versions","bypass","selectedVersions","selectedObjectsRequest","versionID","deleteMultipleObjects","all_versions","versionsContainer","noBottomBorder","versionsVirtualPanel","flexGrow","screenTitleContainer","sortByLabel","tableStyles","objectBrowserExtras","searchVersions","loadingVersions","restoreVersionOpen","setRestoreVersionOpen","restoreVersion","setRestoreVersion","sortValue","setSortValue","deleteNonCurrentOpen","setDeleteNonCurrentOpen","selectEnabled","setSelectEnabled","selectedItems","setSelectedItems","delSelectedVOpen","setDelSelectedVOpen","decodedInternalPaths","filteredPrefixes","onShareItem","onPreviewItem","onRestoreItem","onDownloadItem","onGlobalClick","filteredRecords","version","totalSpace","sort","a","b","dateA","dateB","onCheckVersion","filteredItems","cloneState","push","RestoreFileVersion","DeleteNonCurrent","reloadAfterDelete","DeleteSelectedVersions","reloadOnComplete","ProgressBar","BrowserBreadcrumbs","ScreenTitle","listIcon","subTitle","detailsSpacer","actions","SelectMultipleIcon","DeleteNonCurrentIcon","noLabelMinWidth","bottomBorder","List","containerStyle","rowCount","rowHeight","rowRenderer","isScrolling","isVisible","versOrd","FileVersionItem","displayParsedDate","currTime","objectTime","hasSame","displayNiceBytes","String","listModeColumns","elementKey","renderFunction","enableSort","renderFullObject","rewindModeColumns","browsePaper","parentWrapper","backgroundImage","params","useParams","sortDirection","setSortDirection","currentSortField","setCurrentSortField","detailsOpen","objectDetailsOpen","loadingObjects","features","selFeatures","obOnly","records","searchObjects","selectedObjects","connectionError","displayListObjects","S3_LIST_BUCKET","S3_ALL_LIST_BUCKET","sortASC","sortListObjects","payload","reverse","tableActions","idElement","newPath","setSelectedObjects","setObjectDetailsView","setIsOpeningOD","setSelectedObjectView","sendOnlyId","customPaperHeight","DataTable","itemActions","columns","entityName","idField","onSelect","targetD","elements","customEmptyMessage","sortConfig","currentSort","currentDirection","triggerSort","sortData","newSortDirection","sortBy","setLoadingObjects","onSelectAll","rowStyle","_payload$index","delete_flag","parentClassName","noBackground","downloadSelected","createAsyncThunk","getState","itemsToDownload","filterFunction","multiObjList","rejectWithValue","setDownloadRenameModal","dwList","bi","isDeleted","log","downloadSelectedAsZip","openPreview","fileObject","findFunction","setSelectedPreview","_x3","_x4","openShare","_ref6","_ref5","_x5","_x6","openAnonymousAccess","_ref8","_callee4","_ref7","_context4","setAnonymousAccessOpen","_x7","_x8","SearchBox","setSearchObjects","DeleteMultipleObjects","RewindEnable","badgeOverlap","searchField","labelStyle","breadcrumbsContainer","fullContainer","hideListOnSmall","actionsSection","baseDnDStyle","outline","activeDnDStyle","acceptDnDStyle","_downloadRenameModal$","location","useLocation","bucketToRewind","showDeleted","selectedInternalPaths","simplePath","versioningConfig","lockingEnabled","downloadRenameModal","selectedPreview","anonymousAccessOpen","loadingBucket","selBucketDetailsLoading","bucketInfo","selBucketDetailsInfo","deleteMultipleOpen","setDeleteMultipleOpen","rewindSelect","setRewindSelect","iniLoad","setIniLoad","canShareFile","setCanShareFile","canPreviewFile","setCanPreviewFile","quota","setQuota","isMetaDataLoaded","setIsMetaDataLoaded","isVersioningApplied","pathSegment","pathname","pageTitle","currentPath","i","fileUpload","folderUpload","pathAsResourceInPolicy","allowedFileExtensions","cv","extension","Set","getPolicyAllowedFileExtensions","canDownload","canUpload","canSetAnonymousAccess","S3_GET_BUCKET_POLICY","S3_PUT_BUCKET_POLICY","fetchMetadata","useCallback","encodedPath","resetRewind","setAttribute","getBucketQuota","quotaVals","detailedMessage","setBucketDetailsLoad","setBucketInfo","setSelectedBucket","getBucketRetentionConfig","setRetentionConfig","handleUploadButton","files","newFiles","uploadObject","folderPath","pathPrefix","uploadPromise","Promise","resolve","reject","uploadUrl","blobFile","Blob","filePath","fileWebkitRelativePath","relativeFolderPath","finalFolderPath","pathClean","startsWith","identity","xhr","XMLHttpRequest","setRequestHeader","areMultipleFiles","errorMessages","withCredentials","onload","removeTrace","response","JSON","upload","addEventListener","floor","loaded","total","onerror","onloadend","onabort","formData","FormData","append","storeFormDataWithID","uploadFilePromises","openList","allSettled","results","errors","totalFiles","successUploadedFiles","onDrop","acceptedFiles","_console","_console2","newFolderPath","allowedFiles","fileExtn","_useDropzone","useDropzone","noClick","getRootProps","getInputProps","isDragActive","isDragAccept","dndStyles","useMemo","forceRefresh","splitURLS","URLItem","createdTime","creation_date","downloadToolTip","AccessRuleIcon","refresh","versioning","AddAccessRule","PageLayout","FilterObjectsSB","BucketsIcon","Badge","badgeContent","invisible","HistoryIcon","RefreshIcon","resetMessages","setLoadingRecords","multiple","accept","UploadFilesButton","closeMenu","click","tableBlock","borderTop","VersionsNavigator","setShowDeletedObjects","overrideShowDeleted","ListObjectsTable","DetailsListPanel","ObjectDetailPanel","configureBucketAllowed","S3_GET_BUCKET_ENCRYPTION_CONFIGURATION","S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION","S3_DELETE_BUCKET","S3_GET_BUCKET_NOTIFICATIONS","S3_PUT_BUCKET_NOTIFICATIONS","S3_GET_REPLICATION_CONFIGURATION","S3_PUT_REPLICATION_CONFIGURATION","S3_GET_LIFECYCLE_CONFIGURATION","S3_PUT_LIFECYCLE_CONFIGURATION","ADMIN_GET_BUCKET_QUOTA","ADMIN_SET_BUCKET_QUOTA","S3_PUT_BUCKET_TAGGING","S3_GET_BUCKET_TAGGING","S3_LIST_BUCKET_VERSIONS","S3_GET_BUCKET_POLICY_STATUS","S3_DELETE_BUCKET_POLICY","searchBar","setSearchVersions","setHelpName","AutoColorIcon","ObjectManagerButton","PageHeaderWrapper","BackLink","IAM_PAGES","OBJECT_BROWSER_VIEW","IAM_PERMISSIONS","IAM_ROLES","BUCKET_ADMIN","SettingsIcon","HelpMenu","middleComponent","currentRequestID","errorCounter","wsInFlight","initWSConnection","openCallback","onMessageCallback","connErrorCallback","URL","window","port","baseUrl","document","baseURI","wsProt","wsProtocol","protocol","WebSocket","hostname","onopen","onmessage","reconnectFn","onclose","warn","setTimeout","loadingVersioning","rewindDate","dateToRewind","allowResources","loadingLocking","loadRecords","isOpeningOD","isOpeningObjectDetail","onMessageCallBack","request_id","internalPathsPrefix","decodedPath","permitItems","permissionItems","setRecords","request_end","newMessage","initWSRequest","readyState","newRequestID","errorInConnection","request","bucket_name","send","stringify","decodedIPaths","setLoadingVersioning","setSimplePathHandler","setLoadingLocking","parentPath","requestDate","getBucketVersioning","setIsVersioned","getBucketObjectLockingStatus","setLockingEnabled","object_locking_enabled","OBHeader","ListObjects","durationInputs","validityIndicator","invalidDurationText","reverseInput","validityText","validTill","initialDate","maxDays","entity","selectedDays","setSelectedDays","selectedHours","setSelectedHours","selectedMinutes","setSelectedMinutes","setValidDate","dateSelected","setDateSelected","hours","minutes","fromJSDate","plus","calculateNewTime","formattedDate","valid","extraStyles","paddingRight","dateInputContainer","min","max","LinkIcon","validityLabel","shareURL","setShareURL","isLoadingVersion","setIsLoadingVersion","isLoadingFile","setIsLoadingFile","selectedDate","setSelectedDate","dateValid","setDateValid","setVersionID","latestVersion","elem","slDate","currDate","diffDate","ceil","shareObject","DaysSelector","newDate","ReadBox","actionButton","setModalSnackMessage","iframeContainer","flex","iframeBase","iframeHidden","_ref$isFullscreen","isFullscreen","loading","setLoading","basename","replace","origin","iframeLoaded","maxHeight","autoPlay","controls","muted","playsInline","onPlay","src","alt","onLoad","WarningMessage","allowTransparency","wideLimit","ObjectPreviewIcon","PreviewFileContent","downloadWithLink","href","downloadFileName","link","createElement","body","appendChild","removeChild","objectList","resultFileName","resp","store","downloadMultipleObjects","ContentType","Json","createObjectURL","t0","statusText","fileSize","overrideFileName","progressCallback","completeCallback","errorCallback","abortCallback","toastCallback","BrowserDownload","req","evt","percentComplete","round","responseType","onreadystatechange","rspHeader","getResponseHeader","decodeURIComponent","rspBody","_classCallCheck","this","_createClass","metaContentType","extensionType","fileExtension","extensionPreview","contentType","mimeObjectType","contentTypePreview","fieldSort","localeCompare","permissionsArray","filteredPermissionsForBucket","permissionItem","_permissionItem$resou","_permissionItem$resou2","returnElements","splitCurrentPath","forEach","permissionElement","_permissionElement$re","_permissionElement$pr","splitARN","splitURLARN","every","currentElementInPath","conditionOperator","prefixes","prefixItem","splitItems","pathToRouteElements","cleanCurrPath","splitElement","clElements","itm","WrappedComponent","fallback","props","Suspense","StyledSwitch","root","switchBase","transform","palette","common","white","boxShadow","thumb","track","transition","transitions","create","focusVisible","switchContainer","indicatorLabelOn","indicatorLabel","fieldDescription","_ref$label","_ref$switchOnly","_ref$description","_ref$extraInputProps","extraInputProps","switchComponent","sm","inputLabel","Typography","inputStyles","inputFieldStyles","InputField","TextField","InputProps","textBoxContainer","overlayAction","_ref$type","_ref$autoComplete","_ref$multiline","multiline","_ref$index","_ref$error","_ref$required","required","_ref$placeholder","overlayId","_ref$overlayIcon","overlayIcon","_ref$overlayObject","overlayObject","_ref$noLabelMinWidth","_ref$pattern","pattern","_ref$autoFocus","autoFocus","onKeyPress","onFocus","onPaste","toggleTextInput","setToggleTextInput","inputBoxWrapperIcon","inputBoxWrapperType","VisibilityOffIcon","RemoveRedEyeIcon","errorInField","inputBoxContainer","helperText","inputRebase","headerContainer","labelHeadline","labelText","shown","setShown","readOnly","navigator","clipboard","writeText","WSCloseAbnormalClosure","WSClosePolicyViolation","WSCloseInternalServerErr"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/8360.df2c85af.chunk.js b/portal-ui/build/static/js/8360.8ac053e0.chunk.js similarity index 98% rename from portal-ui/build/static/js/8360.df2c85af.chunk.js rename to portal-ui/build/static/js/8360.8ac053e0.chunk.js index 8decb9c547..213ad71b23 100644 --- a/portal-ui/build/static/js/8360.df2c85af.chunk.js +++ b/portal-ui/build/static/js/8360.8ac053e0.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[8360],{18360:function(e,t,n){n.r(t),n.d(t,{default:function(){return T}});var i=n(1413),s=n(29439),l=n(72791),o=n(57689),r=n(29945),a=n(56087),c=n(87995),d=n(81551),u=n(23508),x=n(9505),p=n(17691),m=n(26181),h=n.n(m),f=n(56028),j=n(23814),g=n(80184),v=p.ZP.div((function(e){var t=e.theme;return{"& .alertText":{color:h()(t,"signalColors.danger","#C51B3F")}}})),y=function(e){var t=e.editSite,n=void 0===t?{}:t,i=e.onClose,o=e.onComplete,a=(0,d.TL)(),u=(0,l.useState)(""),p=(0,s.Z)(u,2),m=p[0],h=p[1],y=(0,x.Z)((function(e){e.success?a((0,c.y1)(e.status)):a((0,c.Ih)({errorMessage:"Error",detailedError:e.status})),o()}),(function(e){a((0,c.Ih)(e)),o()})),S=(0,s.Z)(y,2),b=S[0],C=S[1],I=!1;try{new URL(m),I=!0}catch(Z){I=!1}return(0,g.jsxs)(f.Z,{title:"Edit Replication Endpoint ",modalOpen:!0,titleIcon:(0,g.jsx)(r.dY8,{}),onClose:i,children:[(0,g.jsxs)(v,{children:[(0,g.jsxs)(r.xuv,{sx:{display:"flex",flexFlow:"column",marginBottom:"15px"},children:[(0,g.jsxs)(r.xuv,{sx:{marginBottom:"10px"},children:[(0,g.jsx)("strong",{children:"Site:"})," "," ",n.name]}),(0,g.jsxs)(r.xuv,{sx:{marginBottom:"10px"},children:[(0,g.jsx)("strong",{children:"Current Endpoint:"})," "," ",n.endpoint]})]}),(0,g.jsxs)(r.rjZ,{item:!0,xs:12,children:[(0,g.jsx)(r.AZs,{sx:{marginBottom:5},children:"New Endpoint:"}),(0,g.jsx)(r.Wzg,{id:"edit-rep-peer-endpoint",name:"edit-rep-peer-endpoint",placeholder:"https://dr.minio-storage:9000",onChange:function(e){h(e.target.value)},label:"",value:m})]}),(0,g.jsxs)(r.rjZ,{item:!0,xs:12,sx:{marginBottom:15,fontStyle:"italic",display:"flex",alignItems:"center",fontSize:"12px",marginTop:2},children:[(0,g.jsx)("strong",{children:"Note:"}),"\xa0",(0,g.jsx)("span",{className:"alertText",children:"Access Key and Secret Key should be same on the new site/endpoint."})]})]}),(0,g.jsxs)(r.rjZ,{item:!0,xs:12,sx:j.ID.modalButtonBar,children:[(0,g.jsx)(r.zxk,{id:"close",type:"button",variant:"regular",onClick:i,label:"Cancel"}),(0,g.jsx)(r.zxk,{id:"update",type:"button",variant:"callAction",disabled:b||!I,onClick:function(){C("PUT","api/v1/admin/site-replication",{endpoint:m,name:n.name,deploymentId:n.deploymentID})},label:"Update"})]})]})},S=p.ZP.div((function(e){var t=e.theme;return{display:"flex",gap:10,"& .currentIndicator":{"& .min-icon":{width:12,height:12,fill:h()(t,"signalColors.good","#4CCB92")}},"& .endpointName":{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}}})),b=function(e){var t=e.sites,n=e.onDeleteSite,i=e.onRefresh,o=(0,l.useState)(""),a=(0,s.Z)(o,2),c=a[0],d=a[1],x=(0,l.useState)(null),p=(0,s.Z)(x,2),m=p[0],h=p[1],f=[{label:"Site Name",elementKey:"name"},{label:"Endpoint",elementKey:"endpoint",renderFullObject:!0,renderFunction:function(e){return(0,g.jsxs)(S,{children:[e.isCurrent?(0,g.jsx)(r.ua7,{tooltip:"This site/cluster",placement:"top",children:(0,g.jsx)(r.xuv,{className:"currentIndicator",children:(0,g.jsx)(r.J$M,{})})}):null,(0,g.jsx)(r.ua7,{tooltip:e.endpoint,children:(0,g.jsx)(r.xuv,{className:"endpointName",children:e.endpoint})})]})}}],j=[{type:"edit",onClick:function(e){return h(e)},tooltip:"Edit Endpoint"},{type:"delete",onClick:function(e){return d(e.name)},tooltip:"Delete Site"}];return(0,g.jsxs)(l.Fragment,{children:[(0,g.jsx)(r.wQF,{columns:f,records:t,itemActions:j,idField:"name",customPaperHeight:"calc(100vh - 660px)",sx:{marginBottom:20}}),""!==c&&(0,g.jsx)(u.Z,{title:"Delete Replication Site",confirmText:"Delete",isOpen:""!==c,titleIcon:(0,g.jsx)(r.NvT,{}),isLoading:!1,onConfirm:function(){n(!1,[c])},onClose:function(){d("")},confirmationContent:(0,g.jsxs)(l.Fragment,{children:["Are you sure you want to remove the replication site:"," ",(0,g.jsx)("strong",{children:c}),"?"]})}),null!==m&&(0,g.jsx)(y,{onComplete:function(){h(null),i()},editSite:m,onClose:function(){h(null)}})]})},C=n(27454),I=n(47974),Z=n(99670),T=function(){var e=(0,d.TL)(),t=(0,o.s0)(),n=(0,l.useState)([]),p=(0,s.Z)(n,2),m=p[0],h=p[1],f=(0,l.useState)(!1),j=(0,s.Z)(f,2),v=j[0],y=j[1],S=(0,x.Z)((function(e){var t=e.sites,n=e.name,s=t.findIndex((function(e){return e.name===n}));if(-1!==s){var l=t[s];l=(0,i.Z)((0,i.Z)({},l),{},{isCurrent:!0}),t.splice(s,1,l)}t.sort((function(e,t){return e.name===n?-1:t.name===n?1:0})),h(t)}),(function(e){h([])})),T=(0,s.Z)(S,2),A=T[0],D=T[1],E=function(){D("GET","api/v1/admin/site-replication")},w=(0,x.Z)((function(t){y(!1),e((0,c.y1)("Successfully deleted.")),E()}),(function(t){e((0,c.Ih)(t))})),R=(0,s.Z)(w,2),k=R[0],N=R[1],O=function(){N("DELETE","api/v1/admin/site-replication",{all:arguments.length>0&&void 0!==arguments[0]&&arguments[0],sites:arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]})};(0,l.useEffect)((function(){E()}),[]);var F=null===m||void 0===m?void 0:m.length;return(0,l.useEffect)((function(){e((0,c.Sc)("site-replication"))}),[]),(0,g.jsxs)(l.Fragment,{children:[(0,g.jsx)(I.Z,{label:"Site Replication",actions:(0,g.jsx)(Z.Z,{})}),(0,g.jsxs)(r.Xgh,{children:[(0,g.jsx)(r.NZf,{separator:!!F,sx:{marginBottom:15},actions:(0,g.jsxs)(r.xuv,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end",gap:8},children:[F?(0,g.jsxs)(l.Fragment,{children:[(0,g.jsx)(C.Z,{tooltip:"Delete All",children:(0,g.jsx)(r.zxk,{id:"delete-all",label:"Delete All",variant:"secondary",disabled:k,icon:(0,g.jsx)(r.XHJ,{}),onClick:function(){y(!0)}})}),(0,g.jsx)(C.Z,{tooltip:"Replication Status",children:(0,g.jsx)(r.zxk,{id:"replication-status",label:"Replication Status",variant:"regular",icon:(0,g.jsx)(r.D7Y,{}),onClick:function(e){e.preventDefault(),t(a.gA.SITE_REPLICATION_STATUS)}})})]}):null,(0,g.jsx)(C.Z,{tooltip:"Add Replication Sites",children:(0,g.jsx)(r.zxk,{id:"add-replication-site",label:"Add Sites",variant:"callAction",disabled:k,icon:(0,g.jsx)(r.dtP,{}),onClick:function(){t(a.gA.SITE_REPLICATION_ADD)}})})]}),children:F?"List of Replicated Sites":""}),F?(0,g.jsx)(b,{sites:m,onDeleteSite:O,onRefresh:E}):null,A?(0,g.jsx)(r.xuv,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"calc( 100vh - 450px )"},children:(0,g.jsx)(r.aNw,{style:{width:16,height:16}})}):null,F||A?null:(0,g.jsx)(r.rjZ,{container:!0,children:(0,g.jsx)(r.rjZ,{item:!0,xs:8,children:(0,g.jsx)(r.KfX,{title:"Site Replication",iconComponent:(0,g.jsx)(r.aWt,{}),help:(0,g.jsxs)(l.Fragment,{children:["This feature allows multiple independent MinIO sites (or clusters) that are using the same external IDentity Provider (IDP) to be configured as replicas.",(0,g.jsx)("br",{}),(0,g.jsx)("br",{}),"To get started,"," ",(0,g.jsx)(r.vmT,{isLoading:!1,label:"",onClick:function(){t(a.gA.SITE_REPLICATION_ADD)},children:"Add a Replication Site"}),".",(0,g.jsx)("br",{}),"You can learn more at our"," ",(0,g.jsx)("a",{href:"https://min.io/docs/minio/linux/operations/install-deploy-manage/multi-site-replication.html?ref=con",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})})}),F&&!A?(0,g.jsx)(r.KfX,{title:"Site Replication",iconComponent:(0,g.jsx)(r.aWt,{}),help:(0,g.jsxs)(l.Fragment,{children:["This feature allows multiple independent MinIO sites (or clusters) that are using the same external IDentity Provider (IDP) to be configured as replicas. In this situation the set of replica sites are referred to as peer sites or just sites.",(0,g.jsx)("br",{}),(0,g.jsx)("br",{}),"Initially, only one of the sites added for replication may have data. After site-replication is successfully configured, this data is replicated to the other (initially empty) sites. Subsequently, objects may be written to any of the sites, and they will be replicated to all other sites.",(0,g.jsx)("br",{}),(0,g.jsx)("br",{}),"All sites must have the same deployment credentials (i.e. MINIO_ROOT_USER, MINIO_ROOT_PASSWORD).",(0,g.jsx)("br",{}),(0,g.jsx)("br",{}),"All sites must be using the same external IDP(s) if any.",(0,g.jsx)("br",{}),(0,g.jsx)("br",{}),"For SSE-S3 or SSE-KMS encryption via KMS, all sites must have access to a central KMS deployment server.",(0,g.jsx)("br",{}),(0,g.jsx)("br",{}),"You can learn more at our"," ",(0,g.jsx)("a",{href:"https://github.com/minio/minio/tree/master/docs/site-replication?ref=con",target:"_blank",rel:"noopener",children:"documentation"}),"."]})}):null,v?(0,g.jsx)(u.Z,{title:"Delete All",confirmText:"Delete",isOpen:!0,titleIcon:(0,g.jsx)(r.NvT,{}),isLoading:!1,onConfirm:function(){var e=m.map((function(e){return e.name}));O(!0,e)},onClose:function(){y(!1)},confirmationContent:(0,g.jsx)(l.Fragment,{children:"Are you sure you want to remove all the replication sites?."})}):null]})]})}}}]); -//# sourceMappingURL=8360.df2c85af.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[8360],{18360:function(e,t,n){n.r(t),n.d(t,{default:function(){return T}});var i=n(1413),s=n(29439),l=n(72791),o=n(57689),r=n(29945),a=n(56087),c=n(87995),d=n(44690),u=n(23508),x=n(9505),p=n(17691),m=n(26181),h=n.n(m),f=n(56028),j=n(23814),g=n(80184),v=p.ZP.div((function(e){var t=e.theme;return{"& .alertText":{color:h()(t,"signalColors.danger","#C51B3F")}}})),y=function(e){var t=e.editSite,n=void 0===t?{}:t,i=e.onClose,o=e.onComplete,a=(0,d.TL)(),u=(0,l.useState)(""),p=(0,s.Z)(u,2),m=p[0],h=p[1],y=(0,x.Z)((function(e){e.success?a((0,c.y1)(e.status)):a((0,c.Ih)({errorMessage:"Error",detailedError:e.status})),o()}),(function(e){a((0,c.Ih)(e)),o()})),S=(0,s.Z)(y,2),b=S[0],C=S[1],I=!1;try{new URL(m),I=!0}catch(Z){I=!1}return(0,g.jsxs)(f.Z,{title:"Edit Replication Endpoint ",modalOpen:!0,titleIcon:(0,g.jsx)(r.dY8,{}),onClose:i,children:[(0,g.jsxs)(v,{children:[(0,g.jsxs)(r.xuv,{sx:{display:"flex",flexFlow:"column",marginBottom:"15px"},children:[(0,g.jsxs)(r.xuv,{sx:{marginBottom:"10px"},children:[(0,g.jsx)("strong",{children:"Site:"})," "," ",n.name]}),(0,g.jsxs)(r.xuv,{sx:{marginBottom:"10px"},children:[(0,g.jsx)("strong",{children:"Current Endpoint:"})," "," ",n.endpoint]})]}),(0,g.jsxs)(r.rjZ,{item:!0,xs:12,children:[(0,g.jsx)(r.AZs,{sx:{marginBottom:5},children:"New Endpoint:"}),(0,g.jsx)(r.Wzg,{id:"edit-rep-peer-endpoint",name:"edit-rep-peer-endpoint",placeholder:"https://dr.minio-storage:9000",onChange:function(e){h(e.target.value)},label:"",value:m})]}),(0,g.jsxs)(r.rjZ,{item:!0,xs:12,sx:{marginBottom:15,fontStyle:"italic",display:"flex",alignItems:"center",fontSize:"12px",marginTop:2},children:[(0,g.jsx)("strong",{children:"Note:"}),"\xa0",(0,g.jsx)("span",{className:"alertText",children:"Access Key and Secret Key should be same on the new site/endpoint."})]})]}),(0,g.jsxs)(r.rjZ,{item:!0,xs:12,sx:j.ID.modalButtonBar,children:[(0,g.jsx)(r.zxk,{id:"close",type:"button",variant:"regular",onClick:i,label:"Cancel"}),(0,g.jsx)(r.zxk,{id:"update",type:"button",variant:"callAction",disabled:b||!I,onClick:function(){C("PUT","api/v1/admin/site-replication",{endpoint:m,name:n.name,deploymentId:n.deploymentID})},label:"Update"})]})]})},S=p.ZP.div((function(e){var t=e.theme;return{display:"flex",gap:10,"& .currentIndicator":{"& .min-icon":{width:12,height:12,fill:h()(t,"signalColors.good","#4CCB92")}},"& .endpointName":{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}}})),b=function(e){var t=e.sites,n=e.onDeleteSite,i=e.onRefresh,o=(0,l.useState)(""),a=(0,s.Z)(o,2),c=a[0],d=a[1],x=(0,l.useState)(null),p=(0,s.Z)(x,2),m=p[0],h=p[1],f=[{label:"Site Name",elementKey:"name"},{label:"Endpoint",elementKey:"endpoint",renderFullObject:!0,renderFunction:function(e){return(0,g.jsxs)(S,{children:[e.isCurrent?(0,g.jsx)(r.ua7,{tooltip:"This site/cluster",placement:"top",children:(0,g.jsx)(r.xuv,{className:"currentIndicator",children:(0,g.jsx)(r.J$M,{})})}):null,(0,g.jsx)(r.ua7,{tooltip:e.endpoint,children:(0,g.jsx)(r.xuv,{className:"endpointName",children:e.endpoint})})]})}}],j=[{type:"edit",onClick:function(e){return h(e)},tooltip:"Edit Endpoint"},{type:"delete",onClick:function(e){return d(e.name)},tooltip:"Delete Site"}];return(0,g.jsxs)(l.Fragment,{children:[(0,g.jsx)(r.wQF,{columns:f,records:t,itemActions:j,idField:"name",customPaperHeight:"calc(100vh - 660px)",sx:{marginBottom:20}}),""!==c&&(0,g.jsx)(u.Z,{title:"Delete Replication Site",confirmText:"Delete",isOpen:""!==c,titleIcon:(0,g.jsx)(r.NvT,{}),isLoading:!1,onConfirm:function(){n(!1,[c])},onClose:function(){d("")},confirmationContent:(0,g.jsxs)(l.Fragment,{children:["Are you sure you want to remove the replication site:"," ",(0,g.jsx)("strong",{children:c}),"?"]})}),null!==m&&(0,g.jsx)(y,{onComplete:function(){h(null),i()},editSite:m,onClose:function(){h(null)}})]})},C=n(27454),I=n(47974),Z=n(99670),T=function(){var e=(0,d.TL)(),t=(0,o.s0)(),n=(0,l.useState)([]),p=(0,s.Z)(n,2),m=p[0],h=p[1],f=(0,l.useState)(!1),j=(0,s.Z)(f,2),v=j[0],y=j[1],S=(0,x.Z)((function(e){var t=e.sites,n=e.name,s=t.findIndex((function(e){return e.name===n}));if(-1!==s){var l=t[s];l=(0,i.Z)((0,i.Z)({},l),{},{isCurrent:!0}),t.splice(s,1,l)}t.sort((function(e,t){return e.name===n?-1:t.name===n?1:0})),h(t)}),(function(e){h([])})),T=(0,s.Z)(S,2),A=T[0],D=T[1],E=function(){D("GET","api/v1/admin/site-replication")},w=(0,x.Z)((function(t){y(!1),e((0,c.y1)("Successfully deleted.")),E()}),(function(t){e((0,c.Ih)(t))})),R=(0,s.Z)(w,2),k=R[0],N=R[1],O=function(){N("DELETE","api/v1/admin/site-replication",{all:arguments.length>0&&void 0!==arguments[0]&&arguments[0],sites:arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]})};(0,l.useEffect)((function(){E()}),[]);var F=null===m||void 0===m?void 0:m.length;return(0,l.useEffect)((function(){e((0,c.Sc)("site-replication"))}),[]),(0,g.jsxs)(l.Fragment,{children:[(0,g.jsx)(I.Z,{label:"Site Replication",actions:(0,g.jsx)(Z.Z,{})}),(0,g.jsxs)(r.Xgh,{children:[(0,g.jsx)(r.NZf,{separator:!!F,sx:{marginBottom:15},actions:(0,g.jsxs)(r.xuv,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end",gap:8},children:[F?(0,g.jsxs)(l.Fragment,{children:[(0,g.jsx)(C.Z,{tooltip:"Delete All",children:(0,g.jsx)(r.zxk,{id:"delete-all",label:"Delete All",variant:"secondary",disabled:k,icon:(0,g.jsx)(r.XHJ,{}),onClick:function(){y(!0)}})}),(0,g.jsx)(C.Z,{tooltip:"Replication Status",children:(0,g.jsx)(r.zxk,{id:"replication-status",label:"Replication Status",variant:"regular",icon:(0,g.jsx)(r.D7Y,{}),onClick:function(e){e.preventDefault(),t(a.gA.SITE_REPLICATION_STATUS)}})})]}):null,(0,g.jsx)(C.Z,{tooltip:"Add Replication Sites",children:(0,g.jsx)(r.zxk,{id:"add-replication-site",label:"Add Sites",variant:"callAction",disabled:k,icon:(0,g.jsx)(r.dtP,{}),onClick:function(){t(a.gA.SITE_REPLICATION_ADD)}})})]}),children:F?"List of Replicated Sites":""}),F?(0,g.jsx)(b,{sites:m,onDeleteSite:O,onRefresh:E}):null,A?(0,g.jsx)(r.xuv,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"calc( 100vh - 450px )"},children:(0,g.jsx)(r.aNw,{style:{width:16,height:16}})}):null,F||A?null:(0,g.jsx)(r.rjZ,{container:!0,children:(0,g.jsx)(r.rjZ,{item:!0,xs:8,children:(0,g.jsx)(r.KfX,{title:"Site Replication",iconComponent:(0,g.jsx)(r.aWt,{}),help:(0,g.jsxs)(l.Fragment,{children:["This feature allows multiple independent MinIO sites (or clusters) that are using the same external IDentity Provider (IDP) to be configured as replicas.",(0,g.jsx)("br",{}),(0,g.jsx)("br",{}),"To get started,"," ",(0,g.jsx)(r.vmT,{isLoading:!1,label:"",onClick:function(){t(a.gA.SITE_REPLICATION_ADD)},children:"Add a Replication Site"}),".",(0,g.jsx)("br",{}),"You can learn more at our"," ",(0,g.jsx)("a",{href:"https://min.io/docs/minio/linux/operations/install-deploy-manage/multi-site-replication.html?ref=con",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})})}),F&&!A?(0,g.jsx)(r.KfX,{title:"Site Replication",iconComponent:(0,g.jsx)(r.aWt,{}),help:(0,g.jsxs)(l.Fragment,{children:["This feature allows multiple independent MinIO sites (or clusters) that are using the same external IDentity Provider (IDP) to be configured as replicas. In this situation the set of replica sites are referred to as peer sites or just sites.",(0,g.jsx)("br",{}),(0,g.jsx)("br",{}),"Initially, only one of the sites added for replication may have data. After site-replication is successfully configured, this data is replicated to the other (initially empty) sites. Subsequently, objects may be written to any of the sites, and they will be replicated to all other sites.",(0,g.jsx)("br",{}),(0,g.jsx)("br",{}),"All sites must have the same deployment credentials (i.e. MINIO_ROOT_USER, MINIO_ROOT_PASSWORD).",(0,g.jsx)("br",{}),(0,g.jsx)("br",{}),"All sites must be using the same external IDP(s) if any.",(0,g.jsx)("br",{}),(0,g.jsx)("br",{}),"For SSE-S3 or SSE-KMS encryption via KMS, all sites must have access to a central KMS deployment server.",(0,g.jsx)("br",{}),(0,g.jsx)("br",{}),"You can learn more at our"," ",(0,g.jsx)("a",{href:"https://github.com/minio/minio/tree/master/docs/site-replication?ref=con",target:"_blank",rel:"noopener",children:"documentation"}),"."]})}):null,v?(0,g.jsx)(u.Z,{title:"Delete All",confirmText:"Delete",isOpen:!0,titleIcon:(0,g.jsx)(r.NvT,{}),isLoading:!1,onConfirm:function(){var e=m.map((function(e){return e.name}));O(!0,e)},onClose:function(){y(!1)},confirmationContent:(0,g.jsx)(l.Fragment,{children:"Are you sure you want to remove all the replication sites?."})}):null]})]})}}}]); +//# sourceMappingURL=8360.8ac053e0.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/8360.df2c85af.chunk.js.map b/portal-ui/build/static/js/8360.8ac053e0.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/8360.df2c85af.chunk.js.map rename to portal-ui/build/static/js/8360.8ac053e0.chunk.js.map index 0cabcd45ee..90e7bbdd76 100644 --- a/portal-ui/build/static/js/8360.df2c85af.chunk.js.map +++ b/portal-ui/build/static/js/8360.8ac053e0.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/8360.df2c85af.chunk.js","mappings":"0UA6BMA,EAAwBC,EAAAA,GAAOC,KAAI,SAAAC,GAAA,IAAGC,EAAKD,EAALC,MAAK,MAAQ,CACvD,eAAgB,CACdC,MAAOC,IAAIF,EAAO,sBAAuB,YAE5C,IAgID,EA9HyB,SAAHG,GAQf,IAADC,EAAAD,EAPJE,SAAAA,OAAQ,IAAAD,EAAG,CAAC,EAACA,EACbE,EAAOH,EAAPG,QACAC,EAAUJ,EAAVI,WAMMC,GAAWC,EAAAA,EAAAA,MACjBC,GAAgDC,EAAAA,EAAAA,UAAiB,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA7DI,EAAgBF,EAAA,GAAEG,EAAmBH,EAAA,GAE5CI,GAAuCC,EAAAA,EAAAA,IACrC,SAACC,GACKA,EAAIC,QACNX,GAASY,EAAAA,EAAAA,IAAmBF,EAAIG,SAEhCb,GACEc,EAAAA,EAAAA,IAAqB,CACnBC,aAAc,QACdC,cAAeN,EAAIG,UAIzBd,GACF,IACA,SAACkB,GACCjB,GAASc,EAAAA,EAAAA,IAAqBG,IAC9BlB,GACF,IACDmB,GAAAb,EAAAA,EAAAA,GAAAG,EAAA,GAlBMW,EAASD,EAAA,GAAEE,EAAiBF,EAAA,GA4B/BG,GAAqB,EAEzB,IACE,IAAIC,IAAIhB,GACRe,GAAqB,CACvB,CAAE,MAAOJ,GACPI,GAAqB,CACvB,CAEA,OACEE,EAAAA,EAAAA,MAACC,EAAAA,EAAY,CACXC,MAAK,6BACLC,WAAW,EACXC,WAAWC,EAAAA,EAAAA,KAACC,EAAAA,IAAQ,IACpB/B,QAASA,EAAQgC,SAAA,EAEjBP,EAAAA,EAAAA,MAACnC,EAAqB,CAAA0C,SAAA,EACpBP,EAAAA,EAAAA,MAACQ,EAAAA,IAAG,CACFC,GAAI,CACFC,QAAS,OACTC,SAAU,SACVC,aAAc,QACdL,SAAA,EAEFP,EAAAA,EAAAA,MAACQ,EAAAA,IAAG,CAACC,GAAI,CAAEG,aAAc,QAASL,SAAA,EAChCF,EAAAA,EAAAA,KAAA,UAAAE,SAAQ,UAAc,IAAE,KACvBjC,EAASuC,SAEZb,EAAAA,EAAAA,MAACQ,EAAAA,IAAG,CAACC,GAAI,CAAEG,aAAc,QAASL,SAAA,EAChCF,EAAAA,EAAAA,KAAA,UAAAE,SAAQ,sBAA0B,IAAE,KACnCjC,EAASwC,gBAIdd,EAAAA,EAAAA,MAACe,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAGV,SAAA,EAChBF,EAAAA,EAAAA,KAACa,EAAAA,IAAU,CAACT,GAAI,CAAEG,aAAc,GAAIL,SAAC,mBACrCF,EAAAA,EAAAA,KAACc,EAAAA,IAAQ,CACPC,GAAG,yBACHP,KAAK,yBACLQ,YAAa,gCACbC,SAAU,SAACC,GACTvC,EAAoBuC,EAAMC,OAAOC,MACnC,EACAC,MAAM,GACND,MAAO1C,QAGXiB,EAAAA,EAAAA,MAACe,EAAAA,IAAI,CACHC,MAAI,EACJC,GAAI,GACJR,GAAI,CACFG,aAAc,GACde,UAAW,SACXjB,QAAS,OACTkB,WAAY,SACZC,SAAU,OACVC,UAAW,GACXvB,SAAA,EAEFF,EAAAA,EAAAA,KAAA,UAAAE,SAAQ,UAAc,QACtBF,EAAAA,EAAAA,KAAA,QAAM0B,UAAW,YAAYxB,SAAC,8EAMlCP,EAAAA,EAAAA,MAACe,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAIR,GAAIuB,EAAAA,GAAgBC,eAAe1B,SAAA,EACpDF,EAAAA,EAAAA,KAAC6B,EAAAA,IAAM,CACLd,GAAI,QACJe,KAAK,SACLC,QAAQ,UACRC,QAAS9D,EACTmD,MAAO,YAETrB,EAAAA,EAAAA,KAAC6B,EAAAA,IAAM,CACLd,GAAI,SACJe,KAAK,SACLC,QAAQ,aACRE,SAAU1C,IAAcE,EACxBuC,QAvFe,WACrBxC,EAAkB,MAAM,gCAAkC,CACxDiB,SAAU/B,EACV8B,KAAMvC,EAASuC,KACf0B,aAAcjE,EAASkE,cAE3B,EAkFQd,MAAO,gBAKjB,EChIMe,EAAiB3E,EAAAA,GAAOC,KAAI,SAAAC,GAAA,IAAGC,EAAKD,EAALC,MAAK,MAAQ,CAChDyC,QAAS,OACTgC,IAAK,GACL,sBAAuB,CACrB,cAAe,CACbC,MAAO,GACPC,OAAQ,GACRC,KAAM1E,IAAIF,EAAO,oBAAqB,aAG1C,kBAAmB,CACjB6E,SAAU,SACVC,aAAc,WACdC,WAAY,UAEf,IAmGD,EAjGyB,SAAH5E,GAQf,IAPL6E,EAAK7E,EAAL6E,MACAC,EAAY9E,EAAZ8E,aACAC,EAAS/E,EAAT+E,UAMAxE,GAA4CC,EAAAA,EAAAA,UAAiB,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAzDyE,EAAavE,EAAA,GAAEwE,EAAkBxE,EAAA,GACxCyE,GAAgC1E,EAAAA,EAAAA,UAAc,MAAK2E,GAAAzE,EAAAA,EAAAA,GAAAwE,EAAA,GAA5ChF,EAAQiF,EAAA,GAAEC,EAAWD,EAAA,GAEtBE,EAAiC,CACrC,CAAE/B,MAAO,YAAagC,WAAY,QAClC,CACEhC,MAAO,WACPgC,WAAY,WACZC,kBAAkB,EAClBC,eAAgB,SAACC,GAAQ,OACvB7D,EAAAA,EAAAA,MAACyC,EAAc,CAAAlC,SAAA,CACZsD,EAASC,WACRzD,EAAAA,EAAAA,KAAC0D,EAAAA,IAAO,CAACC,QAAS,oBAAqBC,UAAU,MAAK1D,UACpDF,EAAAA,EAAAA,KAACG,EAAAA,IAAG,CAACuB,UAAW,mBAAmBxB,UACjCF,EAAAA,EAAAA,KAAC6D,EAAAA,IAAU,QAGb,MACJ7D,EAAAA,EAAAA,KAAC0D,EAAAA,IAAO,CAACC,QAASH,EAAS/C,SAASP,UAClCF,EAAAA,EAAAA,KAACG,EAAAA,IAAG,CAACuB,UAAW,eAAexB,SAAEsD,EAAS/C,eAE7B,IAKjBqD,EAAyB,CAC7B,CACEhC,KAAM,OACNE,QAAS,SAAC+B,GAAW,OAAKZ,EAAYY,EAAY,EAClDJ,QAAS,iBAEX,CACE7B,KAAM,SACNE,QAAS,SAAC+B,GAAW,OAAKf,EAAmBe,EAAYvD,KAAK,EAC9DmD,QAAS,gBAIb,OACEhE,EAAAA,EAAAA,MAACqE,EAAAA,SAAQ,CAAA9D,SAAA,EACPF,EAAAA,EAAAA,KAACiE,EAAAA,IAAS,CACRC,QAASd,EACTe,QAASvB,EACTwB,YAAaN,EACbO,QAAS,OACTC,kBAAmB,sBACnBlE,GAAI,CAAEG,aAAc,MAGH,KAAlBwC,IACC/C,EAAAA,EAAAA,KAACuE,EAAAA,EAAa,CACZ1E,MAAK,0BACL2E,YAAa,SACbC,OAA0B,KAAlB1B,EACRhD,WAAWC,EAAAA,EAAAA,KAAC0E,EAAAA,IAAiB,IAC7BC,WAAW,EACXC,UAAW,WACT/B,GAAa,EAAO,CAACE,GACvB,EACA7E,QAAS,WACP8E,EAAmB,GACrB,EACA6B,qBACElF,EAAAA,EAAAA,MAACqE,EAAAA,SAAQ,CAAA9D,SAAA,CAAC,wDAC8C,KACtDF,EAAAA,EAAAA,KAAA,UAAAE,SAAS6C,IAAuB,SAM1B,OAAb9E,IACC+B,EAAAA,EAAAA,KAAC8E,EAAgB,CACf3G,WAAY,WACVgF,EAAY,MACZL,GACF,EACA7E,SAAUA,EACVC,QAAS,WACPiF,EAAY,KACd,MAKV,E,iCCsKA,EA/PwB,WACtB,IAAM/E,GAAWC,EAAAA,EAAAA,MACX0G,GAAWC,EAAAA,EAAAA,MAEjB1G,GAA0BC,EAAAA,EAAAA,UAAS,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA/BsE,EAAKpE,EAAA,GAAEyG,EAAQzG,EAAA,GAEtByE,GAAoC1E,EAAAA,EAAAA,WAAS,GAAM2E,GAAAzE,EAAAA,EAAAA,GAAAwE,EAAA,GAA5CiC,EAAShC,EAAA,GAAEiC,EAAcjC,EAAA,GAChCtE,GAA+CC,EAAAA,EAAAA,IAC7C,SAACC,GACC,IAAesG,EAAgCtG,EAAvC8D,MAAuByC,EAAgBvG,EAAtB0B,KAEnB8E,EAAWF,EAASG,WAAU,SAACC,GAAO,OAAKA,EAAGhF,OAAS6E,CAAW,IACxE,IAAkB,IAAdC,EAAiB,CACnB,IAAIG,EAAUL,EAASE,GACvBG,GAAOC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACFD,GAAO,IACVhC,WAAW,IAEb2B,EAASO,OAAOL,EAAU,EAAGG,EAC/B,CAEAL,EAASQ,MAAK,SAACC,EAAQC,GACrB,OAAOD,EAAErF,OAAS6E,GAAe,EAAIS,EAAEtF,OAAS6E,EAAc,EAAI,CACpE,IACAJ,EAASG,EACX,IACA,SAAC/F,GACC4F,EAAS,GACX,IACD3F,GAAAb,EAAAA,EAAAA,GAAAG,EAAA,GAtBMmH,EAAiBzG,EAAA,GAAE0G,EAAiB1G,EAAA,GAwBrC2G,EAAW,WACfD,EAAkB,MAAM,gCAC1B,EAEAE,GAA0CrH,EAAAA,EAAAA,IACxC,SAACC,GACCqG,GAAe,GACf/G,GAASY,EAAAA,EAAAA,IAAmB,0BAC5BiH,GACF,IACA,SAAC5G,GACCjB,GAASc,EAAAA,EAAAA,IAAqBG,GAChC,IACD8G,GAAA1H,EAAAA,EAAAA,GAAAyH,EAAA,GATME,EAAUD,EAAA,GAAEE,EAAmBF,EAAA,GAWhCG,EAAc,WAClBD,EAAoB,SAAS,gCAAkC,CAC7DE,IAF+BC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAG/B5D,MAH2D4D,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,IAKlE,GAEAG,EAAAA,EAAAA,YAAU,WACRV,GAEF,GAAG,IAEH,IAAMW,EAAgB,OAALhE,QAAK,IAALA,OAAK,EAALA,EAAO6D,OAOxB,OALAE,EAAAA,EAAAA,YAAU,WACRvI,GAASyI,EAAAA,EAAAA,IAAY,oBAEvB,GAAG,KAGDlH,EAAAA,EAAAA,MAACqE,EAAAA,SAAQ,CAAA9D,SAAA,EACPF,EAAAA,EAAAA,KAAC8G,EAAAA,EAAiB,CAACzF,MAAO,mBAAoByC,SAAS9D,EAAAA,EAAAA,KAAC+G,EAAAA,EAAQ,OAChEpH,EAAAA,EAAAA,MAACqH,EAAAA,IAAU,CAAA9G,SAAA,EACTF,EAAAA,EAAAA,KAACiH,EAAAA,IAAY,CACXC,YAAaN,EACbxG,GAAI,CAAEG,aAAc,IACpBuD,SACEnE,EAAAA,EAAAA,MAACQ,EAAAA,IAAG,CACFC,GAAI,CACFC,QAAS,OACTkB,WAAY,SACZ4F,eAAgB,WAChB9E,IAAK,GACLnC,SAAA,CAED0G,GACCjH,EAAAA,EAAAA,MAACqE,EAAAA,SAAQ,CAAA9D,SAAA,EACPF,EAAAA,EAAAA,KAACoH,EAAAA,EAAc,CAACzD,QAAS,aAAazD,UACpCF,EAAAA,EAAAA,KAAC6B,EAAAA,IAAM,CACLd,GAAI,aACJM,MAAO,aACPU,QAAQ,YACRE,SAAUmE,EACViB,MAAMrH,EAAAA,EAAAA,KAACsH,EAAAA,IAAS,IAChBtF,QAAS,WACPmD,GAAe,EACjB,OAGJnF,EAAAA,EAAAA,KAACoH,EAAAA,EAAc,CAACzD,QAAS,qBAAqBzD,UAC5CF,EAAAA,EAAAA,KAAC6B,EAAAA,IAAM,CACLd,GAAI,qBACJM,MAAO,qBACPU,QAAQ,UACRsF,MAAMrH,EAAAA,EAAAA,KAACuH,EAAAA,IAAW,IAClBvF,QAAS,SAACwF,GACRA,EAAEC,iBACF1C,EAAS2C,EAAAA,GAAUC,wBACrB,SAIJ,MACJ3H,EAAAA,EAAAA,KAACoH,EAAAA,EAAc,CAACzD,QAAS,wBAAwBzD,UAC/CF,EAAAA,EAAAA,KAAC6B,EAAAA,IAAM,CACLd,GAAI,uBACJM,MAAO,YACPU,QAAQ,aACRE,SAAUmE,EACViB,MAAMrH,EAAAA,EAAAA,KAAC4H,EAAAA,IAAO,IACd5F,QAAS,WACP+C,EAAS2C,EAAAA,GAAUG,qBACrB,SAIP3H,SAEA0G,EAAW,2BAA6B,KAE1CA,GACC5G,EAAAA,EAAAA,KAAC8H,EAAgB,CACflF,MAAOA,EACPC,aAAcyD,EACdxD,UAAWmD,IAEX,KACHF,GACC/F,EAAAA,EAAAA,KAACG,EAAAA,IAAG,CACFC,GAAI,CACFC,QAAS,OACT8G,eAAgB,SAChB5F,WAAY,SACZgB,OAAQ,yBACRrC,UAEFF,EAAAA,EAAAA,KAAC+H,EAAAA,IAAM,CAACC,MAAO,CAAE1F,MAAO,GAAIC,OAAQ,QAEpC,KACFqE,GAAab,EAuCX,MAtCF/F,EAAAA,EAAAA,KAACU,EAAAA,IAAI,CAACuH,WAAS,EAAA/H,UACbF,EAAAA,EAAAA,KAACU,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,EAAEV,UACfF,EAAAA,EAAAA,KAACkI,EAAAA,IAAO,CACNrI,MAAO,mBACPsI,eAAenI,EAAAA,EAAAA,KAACoI,EAAAA,IAAY,IAC5BC,MACE1I,EAAAA,EAAAA,MAACqE,EAAAA,SAAQ,CAAA9D,SAAA,CAAC,6JAIRF,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,SAAM,kBACU,KAChBA,EAAAA,EAAAA,KAACsI,EAAAA,IAAU,CACT3D,WAAW,EACXtD,MAAO,GACPW,QAAS,WACP+C,EAAS2C,EAAAA,GAAUG,qBACrB,EAAE3H,SACH,2BAEY,KAEbF,EAAAA,EAAAA,KAAA,SAAM,4BACoB,KAC1BA,EAAAA,EAAAA,KAAA,KACEuI,KAAK,uGACLpH,OAAO,SACPqH,IAAI,WAAUtI,SACf,kBAEG,aAQf0G,IAAab,GACZ/F,EAAAA,EAAAA,KAACkI,EAAAA,IAAO,CACNrI,MAAO,mBACPsI,eAAenI,EAAAA,EAAAA,KAACoI,EAAAA,IAAY,IAC5BC,MACE1I,EAAAA,EAAAA,MAACqE,EAAAA,SAAQ,CAAA9D,SAAA,CAAC,qPAKRF,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,SAAM,oSAMNA,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,SAAM,oGAGNA,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,SAAM,4DAENA,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,SAAM,4GAGNA,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,SAAM,4BACoB,KAC1BA,EAAAA,EAAAA,KAAA,KACEuI,KAAK,2EACLpH,OAAO,SACPqH,IAAI,WAAUtI,SACf,kBAEG,SAKR,KAEHgF,GACClF,EAAAA,EAAAA,KAACuE,EAAAA,EAAa,CACZ1E,MAAK,aACL2E,YAAa,SACbC,QAAQ,EACR1E,WAAWC,EAAAA,EAAAA,KAAC0E,EAAAA,IAAiB,IAC7BC,WAAW,EACXC,UAAW,WACT,IAAM6D,EAAY7F,EAAM8F,KAAI,SAACC,GAAM,OAAKA,EAAEnI,IAAI,IAC9C8F,GAAY,EAAMmC,EACpB,EACAvK,QAAS,WACPiH,GAAe,EACjB,EACAN,qBACE7E,EAAAA,EAAAA,KAACgE,EAAAA,SAAQ,CAAA9D,SAAC,kEAKZ,UAIZ,C","sources":["screens/Console/Configurations/SiteReplication/EditSiteEndPoint.tsx","screens/Console/Configurations/SiteReplication/ReplicationSites.tsx","screens/Console/Configurations/SiteReplication/SiteReplication.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 { Box, Button, EditIcon, Grid, InputBox, InputLabel } from \"mds\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport {\n setErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\n\nconst SiteEndpointContainer = styled.div(({ theme }) => ({\n \"& .alertText\": {\n color: get(theme, \"signalColors.danger\", \"#C51B3F\"),\n },\n}));\n\nconst EditSiteEndPoint = ({\n editSite = {},\n onClose,\n onComplete,\n}: {\n editSite: any;\n onClose: () => void;\n onComplete: () => void;\n}) => {\n const dispatch = useAppDispatch();\n const [editEndPointName, setEditEndPointName] = useState(\"\");\n\n const [isEditing, invokeSiteEditApi] = useApi(\n (res: any) => {\n if (res.success) {\n dispatch(setSnackBarMessage(res.status));\n } else {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Error\",\n detailedError: res.status,\n }),\n );\n }\n onComplete();\n },\n (err: any) => {\n dispatch(setErrorSnackMessage(err));\n onComplete();\n },\n );\n\n const updatePeerSite = () => {\n invokeSiteEditApi(\"PUT\", `api/v1/admin/site-replication`, {\n endpoint: editEndPointName,\n name: editSite.name,\n deploymentId: editSite.deploymentID, // readonly\n });\n };\n\n let isValidEndPointUrl = false;\n\n try {\n new URL(editEndPointName);\n isValidEndPointUrl = true;\n } catch (err) {\n isValidEndPointUrl = false;\n }\n\n return (\n }\n onClose={onClose}\n >\n \n \n \n Site: {\" \"}\n {editSite.name}\n \n \n Current Endpoint: {\" \"}\n {editSite.endpoint}\n \n \n\n \n New Endpoint:\n ) => {\n setEditEndPointName(event.target.value);\n }}\n label=\"\"\n value={editEndPointName}\n />\n \n \n Note: \n \n Access Key and Secret Key should be same on the new site/endpoint.\n \n \n \n\n \n \n \n \n \n );\n};\nexport default EditSiteEndPoint;\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 {\n Box,\n CircleIcon,\n ConfirmDeleteIcon,\n DataTable,\n IColumns,\n ItemActions,\n Tooltip,\n} from \"mds\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { ReplicationSite } from \"./SiteReplication\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport EditSiteEndPoint from \"./EditSiteEndPoint\";\n\nconst EndpointRender = styled.div(({ theme }) => ({\n display: \"flex\",\n gap: 10,\n \"& .currentIndicator\": {\n \"& .min-icon\": {\n width: 12,\n height: 12,\n fill: get(theme, \"signalColors.good\", \"#4CCB92\"),\n },\n },\n \"& .endpointName\": {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n}));\n\nconst ReplicationSites = ({\n sites,\n onDeleteSite,\n onRefresh,\n}: {\n sites: ReplicationSite[];\n onDeleteSite: (isAll: boolean, sites: string[]) => void;\n onRefresh: () => void;\n}) => {\n const [deleteSiteKey, setIsDeleteSiteKey] = useState(\"\");\n const [editSite, setEditSite] = useState(null);\n\n const replicationColumns: IColumns[] = [\n { label: \"Site Name\", elementKey: \"name\" },\n {\n label: \"Endpoint\",\n elementKey: \"endpoint\",\n renderFullObject: true,\n renderFunction: (siteInfo) => (\n \n {siteInfo.isCurrent ? (\n \n \n \n \n \n ) : null}\n \n {siteInfo.endpoint}\n \n \n ),\n },\n ];\n\n const actions: ItemActions[] = [\n {\n type: \"edit\",\n onClick: (valueToSend) => setEditSite(valueToSend),\n tooltip: \"Edit Endpoint\",\n },\n {\n type: \"delete\",\n onClick: (valueToSend) => setIsDeleteSiteKey(valueToSend.name),\n tooltip: \"Delete Site\",\n },\n ];\n\n return (\n \n \n\n {deleteSiteKey !== \"\" && (\n }\n isLoading={false}\n onConfirm={() => {\n onDeleteSite(false, [deleteSiteKey]);\n }}\n onClose={() => {\n setIsDeleteSiteKey(\"\");\n }}\n confirmationContent={\n \n Are you sure you want to remove the replication site:{\" \"}\n {deleteSiteKey}?\n \n }\n />\n )}\n\n {editSite !== null && (\n {\n setEditSite(null);\n onRefresh();\n }}\n editSite={editSite}\n onClose={() => {\n setEditSite(null);\n }}\n />\n )}\n \n );\n};\n\nexport default ReplicationSites;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n ActionLink,\n AddIcon,\n Box,\n Button,\n ClustersIcon,\n ConfirmDeleteIcon,\n Grid,\n HelpBox,\n Loader,\n PageLayout,\n RecoverIcon,\n SectionTitle,\n TrashIcon,\n} from \"mds\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport { IAM_PAGES } from \"../../../../common/SecureComponent/permissions\";\nimport {\n setErrorSnackMessage,\n setHelpName,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport ReplicationSites from \"./ReplicationSites\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../../HelpMenu\";\n\nexport type ReplicationSite = {\n deploymentID: string;\n endpoint: string;\n name: string;\n isCurrent?: boolean;\n};\n\nconst SiteReplication = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [sites, setSites] = useState([]);\n\n const [deleteAll, setIsDeleteAll] = useState(false);\n const [isSiteInfoLoading, invokeSiteInfoApi] = useApi(\n (res: any) => {\n const { sites: siteList, name: curSiteName } = res;\n // current site name to be the fist one.\n const foundIdx = siteList.findIndex((el: any) => el.name === curSiteName);\n if (foundIdx !== -1) {\n let curSite = siteList[foundIdx];\n curSite = {\n ...curSite,\n isCurrent: true,\n };\n siteList.splice(foundIdx, 1, curSite);\n }\n\n siteList.sort((x: any, y: any) => {\n return x.name === curSiteName ? -1 : y.name === curSiteName ? 1 : 0;\n });\n setSites(siteList);\n },\n (err: any) => {\n setSites([]);\n },\n );\n\n const getSites = () => {\n invokeSiteInfoApi(\"GET\", `api/v1/admin/site-replication`);\n };\n\n const [isRemoving, invokeSiteRemoveApi] = useApi(\n (res: any) => {\n setIsDeleteAll(false);\n dispatch(setSnackBarMessage(`Successfully deleted.`));\n getSites();\n },\n (err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n },\n );\n\n const removeSites = (isAll: boolean = false, delSites: string[] = []) => {\n invokeSiteRemoveApi(\"DELETE\", `api/v1/admin/site-replication`, {\n all: isAll,\n sites: delSites,\n });\n };\n\n useEffect(() => {\n getSites();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const hasSites = sites?.length;\n\n useEffect(() => {\n dispatch(setHelpName(\"site-replication\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n } />\n \n \n {hasSites ? (\n \n \n }\n onClick={() => {\n setIsDeleteAll(true);\n }}\n />\n \n \n }\n onClick={(e) => {\n e.preventDefault();\n navigate(IAM_PAGES.SITE_REPLICATION_STATUS);\n }}\n />\n \n \n ) : null}\n \n }\n onClick={() => {\n navigate(IAM_PAGES.SITE_REPLICATION_ADD);\n }}\n />\n \n \n }\n >\n {hasSites ? \"List of Replicated Sites\" : \"\"}\n \n {hasSites ? (\n \n ) : null}\n {isSiteInfoLoading ? (\n \n \n \n ) : null}\n {!hasSites && !isSiteInfoLoading ? (\n \n \n }\n help={\n \n This feature allows multiple independent MinIO sites (or\n clusters) that are using the same external IDentity Provider\n (IDP) to be configured as replicas.\n
    \n
    \n To get started,{\" \"}\n {\n navigate(IAM_PAGES.SITE_REPLICATION_ADD);\n }}\n >\n Add a Replication Site\n \n .\n
    \n You can learn more at our{\" \"}\n \n documentation\n \n .\n
    \n }\n />\n
    \n
    \n ) : null}\n {hasSites && !isSiteInfoLoading ? (\n }\n help={\n \n This feature allows multiple independent MinIO sites (or\n clusters) that are using the same external IDentity Provider\n (IDP) to be configured as replicas. In this situation the set of\n replica sites are referred to as peer sites or just sites.\n
    \n
    \n Initially, only one of the sites added for replication may have\n data. After site-replication is successfully configured, this\n data is replicated to the other (initially empty) sites.\n Subsequently, objects may be written to any of the sites, and\n they will be replicated to all other sites.\n
    \n
    \n All sites must have the same deployment credentials (i.e.\n MINIO_ROOT_USER, MINIO_ROOT_PASSWORD).\n
    \n
    \n All sites must be using the same external IDP(s) if any.\n
    \n
    \n For SSE-S3 or SSE-KMS encryption via KMS, all sites must have\n access to a central KMS deployment server.\n
    \n
    \n You can learn more at our{\" \"}\n \n documentation\n \n .\n
    \n }\n />\n ) : null}\n\n {deleteAll ? (\n }\n isLoading={false}\n onConfirm={() => {\n const siteNames = sites.map((s: any) => s.name);\n removeSites(true, siteNames);\n }}\n onClose={() => {\n setIsDeleteAll(false);\n }}\n confirmationContent={\n \n Are you sure you want to remove all the replication sites?.\n \n }\n />\n ) : null}\n
    \n
    \n );\n};\n\nexport default SiteReplication;\n"],"names":["SiteEndpointContainer","styled","div","_ref","theme","color","get","_ref2","_ref2$editSite","editSite","onClose","onComplete","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","editEndPointName","setEditEndPointName","_useApi","useApi","res","success","setSnackBarMessage","status","setErrorSnackMessage","errorMessage","detailedError","err","_useApi2","isEditing","invokeSiteEditApi","isValidEndPointUrl","URL","_jsxs","ModalWrapper","title","modalOpen","titleIcon","_jsx","EditIcon","children","Box","sx","display","flexFlow","marginBottom","name","endpoint","Grid","item","xs","InputLabel","InputBox","id","placeholder","onChange","event","target","value","label","fontStyle","alignItems","fontSize","marginTop","className","modalStyleUtils","modalButtonBar","Button","type","variant","onClick","disabled","deploymentId","deploymentID","EndpointRender","gap","width","height","fill","overflow","textOverflow","whiteSpace","sites","onDeleteSite","onRefresh","deleteSiteKey","setIsDeleteSiteKey","_useState3","_useState4","setEditSite","replicationColumns","elementKey","renderFullObject","renderFunction","siteInfo","isCurrent","Tooltip","tooltip","placement","CircleIcon","actions","valueToSend","Fragment","DataTable","columns","records","itemActions","idField","customPaperHeight","ConfirmDialog","confirmText","isOpen","ConfirmDeleteIcon","isLoading","onConfirm","confirmationContent","EditSiteEndPoint","navigate","useNavigate","setSites","deleteAll","setIsDeleteAll","siteList","curSiteName","foundIdx","findIndex","el","curSite","_objectSpread","splice","sort","x","y","isSiteInfoLoading","invokeSiteInfoApi","getSites","_useApi3","_useApi4","isRemoving","invokeSiteRemoveApi","removeSites","all","arguments","length","undefined","useEffect","hasSites","setHelpName","PageHeaderWrapper","HelpMenu","PageLayout","SectionTitle","separator","justifyContent","TooltipWrapper","icon","TrashIcon","RecoverIcon","e","preventDefault","IAM_PAGES","SITE_REPLICATION_STATUS","AddIcon","SITE_REPLICATION_ADD","ReplicationSites","Loader","style","container","HelpBox","iconComponent","ClustersIcon","help","ActionLink","href","rel","siteNames","map","s"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/8360.8ac053e0.chunk.js","mappings":"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","sources":["screens/Console/Configurations/SiteReplication/EditSiteEndPoint.tsx","screens/Console/Configurations/SiteReplication/ReplicationSites.tsx","screens/Console/Configurations/SiteReplication/SiteReplication.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 { Box, Button, EditIcon, Grid, InputBox, InputLabel } from \"mds\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport {\n setErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\n\nconst SiteEndpointContainer = styled.div(({ theme }) => ({\n \"& .alertText\": {\n color: get(theme, \"signalColors.danger\", \"#C51B3F\"),\n },\n}));\n\nconst EditSiteEndPoint = ({\n editSite = {},\n onClose,\n onComplete,\n}: {\n editSite: any;\n onClose: () => void;\n onComplete: () => void;\n}) => {\n const dispatch = useAppDispatch();\n const [editEndPointName, setEditEndPointName] = useState(\"\");\n\n const [isEditing, invokeSiteEditApi] = useApi(\n (res: any) => {\n if (res.success) {\n dispatch(setSnackBarMessage(res.status));\n } else {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Error\",\n detailedError: res.status,\n }),\n );\n }\n onComplete();\n },\n (err: any) => {\n dispatch(setErrorSnackMessage(err));\n onComplete();\n },\n );\n\n const updatePeerSite = () => {\n invokeSiteEditApi(\"PUT\", `api/v1/admin/site-replication`, {\n endpoint: editEndPointName,\n name: editSite.name,\n deploymentId: editSite.deploymentID, // readonly\n });\n };\n\n let isValidEndPointUrl = false;\n\n try {\n new URL(editEndPointName);\n isValidEndPointUrl = true;\n } catch (err) {\n isValidEndPointUrl = false;\n }\n\n return (\n }\n onClose={onClose}\n >\n \n \n \n Site: {\" \"}\n {editSite.name}\n \n \n Current Endpoint: {\" \"}\n {editSite.endpoint}\n \n \n\n \n New Endpoint:\n ) => {\n setEditEndPointName(event.target.value);\n }}\n label=\"\"\n value={editEndPointName}\n />\n \n \n Note: \n \n Access Key and Secret Key should be same on the new site/endpoint.\n \n \n \n\n \n \n \n \n \n );\n};\nexport default EditSiteEndPoint;\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 {\n Box,\n CircleIcon,\n ConfirmDeleteIcon,\n DataTable,\n IColumns,\n ItemActions,\n Tooltip,\n} from \"mds\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { ReplicationSite } from \"./SiteReplication\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport EditSiteEndPoint from \"./EditSiteEndPoint\";\n\nconst EndpointRender = styled.div(({ theme }) => ({\n display: \"flex\",\n gap: 10,\n \"& .currentIndicator\": {\n \"& .min-icon\": {\n width: 12,\n height: 12,\n fill: get(theme, \"signalColors.good\", \"#4CCB92\"),\n },\n },\n \"& .endpointName\": {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n}));\n\nconst ReplicationSites = ({\n sites,\n onDeleteSite,\n onRefresh,\n}: {\n sites: ReplicationSite[];\n onDeleteSite: (isAll: boolean, sites: string[]) => void;\n onRefresh: () => void;\n}) => {\n const [deleteSiteKey, setIsDeleteSiteKey] = useState(\"\");\n const [editSite, setEditSite] = useState(null);\n\n const replicationColumns: IColumns[] = [\n { label: \"Site Name\", elementKey: \"name\" },\n {\n label: \"Endpoint\",\n elementKey: \"endpoint\",\n renderFullObject: true,\n renderFunction: (siteInfo) => (\n \n {siteInfo.isCurrent ? (\n \n \n \n \n \n ) : null}\n \n {siteInfo.endpoint}\n \n \n ),\n },\n ];\n\n const actions: ItemActions[] = [\n {\n type: \"edit\",\n onClick: (valueToSend) => setEditSite(valueToSend),\n tooltip: \"Edit Endpoint\",\n },\n {\n type: \"delete\",\n onClick: (valueToSend) => setIsDeleteSiteKey(valueToSend.name),\n tooltip: \"Delete Site\",\n },\n ];\n\n return (\n \n \n\n {deleteSiteKey !== \"\" && (\n }\n isLoading={false}\n onConfirm={() => {\n onDeleteSite(false, [deleteSiteKey]);\n }}\n onClose={() => {\n setIsDeleteSiteKey(\"\");\n }}\n confirmationContent={\n \n Are you sure you want to remove the replication site:{\" \"}\n {deleteSiteKey}?\n \n }\n />\n )}\n\n {editSite !== null && (\n {\n setEditSite(null);\n onRefresh();\n }}\n editSite={editSite}\n onClose={() => {\n setEditSite(null);\n }}\n />\n )}\n \n );\n};\n\nexport default ReplicationSites;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n ActionLink,\n AddIcon,\n Box,\n Button,\n ClustersIcon,\n ConfirmDeleteIcon,\n Grid,\n HelpBox,\n Loader,\n PageLayout,\n RecoverIcon,\n SectionTitle,\n TrashIcon,\n} from \"mds\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport { IAM_PAGES } from \"../../../../common/SecureComponent/permissions\";\nimport {\n setErrorSnackMessage,\n setHelpName,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport ReplicationSites from \"./ReplicationSites\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../../HelpMenu\";\n\nexport type ReplicationSite = {\n deploymentID: string;\n endpoint: string;\n name: string;\n isCurrent?: boolean;\n};\n\nconst SiteReplication = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [sites, setSites] = useState([]);\n\n const [deleteAll, setIsDeleteAll] = useState(false);\n const [isSiteInfoLoading, invokeSiteInfoApi] = useApi(\n (res: any) => {\n const { sites: siteList, name: curSiteName } = res;\n // current site name to be the fist one.\n const foundIdx = siteList.findIndex((el: any) => el.name === curSiteName);\n if (foundIdx !== -1) {\n let curSite = siteList[foundIdx];\n curSite = {\n ...curSite,\n isCurrent: true,\n };\n siteList.splice(foundIdx, 1, curSite);\n }\n\n siteList.sort((x: any, y: any) => {\n return x.name === curSiteName ? -1 : y.name === curSiteName ? 1 : 0;\n });\n setSites(siteList);\n },\n (err: any) => {\n setSites([]);\n },\n );\n\n const getSites = () => {\n invokeSiteInfoApi(\"GET\", `api/v1/admin/site-replication`);\n };\n\n const [isRemoving, invokeSiteRemoveApi] = useApi(\n (res: any) => {\n setIsDeleteAll(false);\n dispatch(setSnackBarMessage(`Successfully deleted.`));\n getSites();\n },\n (err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n },\n );\n\n const removeSites = (isAll: boolean = false, delSites: string[] = []) => {\n invokeSiteRemoveApi(\"DELETE\", `api/v1/admin/site-replication`, {\n all: isAll,\n sites: delSites,\n });\n };\n\n useEffect(() => {\n getSites();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const hasSites = sites?.length;\n\n useEffect(() => {\n dispatch(setHelpName(\"site-replication\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n } />\n \n \n {hasSites ? (\n \n \n }\n onClick={() => {\n setIsDeleteAll(true);\n }}\n />\n \n \n }\n onClick={(e) => {\n e.preventDefault();\n navigate(IAM_PAGES.SITE_REPLICATION_STATUS);\n }}\n />\n \n \n ) : null}\n \n }\n onClick={() => {\n navigate(IAM_PAGES.SITE_REPLICATION_ADD);\n }}\n />\n \n \n }\n >\n {hasSites ? \"List of Replicated Sites\" : \"\"}\n \n {hasSites ? (\n \n ) : null}\n {isSiteInfoLoading ? (\n \n \n \n ) : null}\n {!hasSites && !isSiteInfoLoading ? (\n \n \n }\n help={\n \n This feature allows multiple independent MinIO sites (or\n clusters) that are using the same external IDentity Provider\n (IDP) to be configured as replicas.\n
    \n
    \n To get started,{\" \"}\n {\n navigate(IAM_PAGES.SITE_REPLICATION_ADD);\n }}\n >\n Add a Replication Site\n \n .\n
    \n You can learn more at our{\" \"}\n \n documentation\n \n .\n
    \n }\n />\n
    \n
    \n ) : null}\n {hasSites && !isSiteInfoLoading ? (\n }\n help={\n \n This feature allows multiple independent MinIO sites (or\n clusters) that are using the same external IDentity Provider\n (IDP) to be configured as replicas. In this situation the set of\n replica sites are referred to as peer sites or just sites.\n
    \n
    \n Initially, only one of the sites added for replication may have\n data. After site-replication is successfully configured, this\n data is replicated to the other (initially empty) sites.\n Subsequently, objects may be written to any of the sites, and\n they will be replicated to all other sites.\n
    \n
    \n All sites must have the same deployment credentials (i.e.\n MINIO_ROOT_USER, MINIO_ROOT_PASSWORD).\n
    \n
    \n All sites must be using the same external IDP(s) if any.\n
    \n
    \n For SSE-S3 or SSE-KMS encryption via KMS, all sites must have\n access to a central KMS deployment server.\n
    \n
    \n You can learn more at our{\" \"}\n \n documentation\n \n .\n
    \n }\n />\n ) : null}\n\n {deleteAll ? (\n }\n isLoading={false}\n onConfirm={() => {\n const siteNames = sites.map((s: any) => s.name);\n removeSites(true, siteNames);\n }}\n onClose={() => {\n setIsDeleteAll(false);\n }}\n confirmationContent={\n \n Are you sure you want to remove all the replication sites?.\n \n }\n />\n ) : null}\n
    \n
    \n );\n};\n\nexport default SiteReplication;\n"],"names":["SiteEndpointContainer","styled","div","_ref","theme","color","get","_ref2","_ref2$editSite","editSite","onClose","onComplete","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","editEndPointName","setEditEndPointName","_useApi","useApi","res","success","setSnackBarMessage","status","setErrorSnackMessage","errorMessage","detailedError","err","_useApi2","isEditing","invokeSiteEditApi","isValidEndPointUrl","URL","_jsxs","ModalWrapper","title","modalOpen","titleIcon","_jsx","EditIcon","children","Box","sx","display","flexFlow","marginBottom","name","endpoint","Grid","item","xs","InputLabel","InputBox","id","placeholder","onChange","event","target","value","label","fontStyle","alignItems","fontSize","marginTop","className","modalStyleUtils","modalButtonBar","Button","type","variant","onClick","disabled","deploymentId","deploymentID","EndpointRender","gap","width","height","fill","overflow","textOverflow","whiteSpace","sites","onDeleteSite","onRefresh","deleteSiteKey","setIsDeleteSiteKey","_useState3","_useState4","setEditSite","replicationColumns","elementKey","renderFullObject","renderFunction","siteInfo","isCurrent","Tooltip","tooltip","placement","CircleIcon","actions","valueToSend","Fragment","DataTable","columns","records","itemActions","idField","customPaperHeight","ConfirmDialog","confirmText","isOpen","ConfirmDeleteIcon","isLoading","onConfirm","confirmationContent","EditSiteEndPoint","navigate","useNavigate","setSites","deleteAll","setIsDeleteAll","siteList","curSiteName","foundIdx","findIndex","el","curSite","_objectSpread","splice","sort","x","y","isSiteInfoLoading","invokeSiteInfoApi","getSites","_useApi3","_useApi4","isRemoving","invokeSiteRemoveApi","removeSites","all","arguments","length","undefined","useEffect","hasSites","setHelpName","PageHeaderWrapper","HelpMenu","PageLayout","SectionTitle","separator","justifyContent","TooltipWrapper","icon","TrashIcon","RecoverIcon","e","preventDefault","IAM_PAGES","SITE_REPLICATION_STATUS","AddIcon","SITE_REPLICATION_ADD","ReplicationSites","Loader","style","container","HelpBox","iconComponent","ClustersIcon","help","ActionLink","href","rel","siteNames","map","s"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/8388.408870e9.chunk.js b/portal-ui/build/static/js/8388.af3ddceb.chunk.js similarity index 99% rename from portal-ui/build/static/js/8388.408870e9.chunk.js rename to portal-ui/build/static/js/8388.af3ddceb.chunk.js index bdb41290cc..12e5bbd9ee 100644 --- a/portal-ui/build/static/js/8388.408870e9.chunk.js +++ b/portal-ui/build/static/js/8388.af3ddceb.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[8388],{63856:function(e,t,n){n(72791);var i=n(29945),a=n(64554),l=n(27197),r=n(32686),o=n(80705),s=n(80184),d=function(){return(0,s.jsx)(a.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{width:"10px",height:"10px"}},children:(0,s.jsx)(i.Q2V,{})})};t.Z=function(e){var t=e.timeStart,n=e.setTimeStart,c=e.timeEnd,x=e.setTimeEnd,u=e.triggerSync,m=e.label,p=void 0===m?"Filter:":m,f=e.startLabel,g=void 0===f?"Start Time:":f,h=e.endLabel,v=void 0===h?"End Time:":h;return(0,s.jsx)(i.rjZ,{item:!0,xs:12,sx:{"& .filter-date-input-label, .end-time-input-label":{display:"none"},"& .MuiInputBase-adornedEnd.filter-date-date-time-input":{width:"100%",border:"1px solid #eaeaea",paddingLeft:"8px",paddingRight:"8px",borderRadius:"1px"},"& .MuiInputAdornment-root button":{height:"20px",width:"20px",marginRight:"5px"},"& .filter-date-input-wrapper":{height:"30px",width:"100%","& .MuiTextField-root":{height:"30px",width:"90%","& input.Mui-disabled":{color:"#000000",WebkitTextFillColor:"#101010"}}}},children:(0,s.jsxs)(a.Z,{sx:{display:"grid",height:{md:"40px",xs:"auto"},alignItems:"center",gridTemplateColumns:{md:"auto 2fr auto",sm:"1fr"},padding:{md:"0",xs:" 5px"},gap:"5px"},children:[(0,s.jsx)(a.Z,{sx:{fontSize:"14px",fontWeight:500,marginRight:"5px"},children:p}),(0,s.jsxs)(a.Z,{sx:{display:"grid",height:{md:"40px",xs:"auto"},border:{md:"1px solid #eaeaea"},alignItems:"center",gridTemplateColumns:{md:"1fr 1fr",sm:"1fr"},gap:"8px",paddingLeft:"8px",paddingRight:"8px"},children:[(0,s.jsxs)(a.Z,{sx:{display:"grid",height:"30px",alignItems:"center",gridTemplateColumns:{xs:"12px auto 1fr"},gap:"5px"},children:[(0,s.jsx)(a.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{width:"10px",height:"10px",fill:"#B4B5B4"}},children:(0,s.jsx)(l.Z,{className:"min-icon"})}),(0,s.jsx)(a.Z,{sx:{fontSize:"12px",marginLeft:"8px"},children:g}),(0,s.jsx)(a.Z,{children:(0,s.jsx)(o.Z,{value:t,onChange:n,id:"stTime",classNamePrefix:"filter-date-",forFilterContained:!0,noInputIcon:!0,openPickerIcon:d})})]}),(0,s.jsxs)(a.Z,{sx:{display:"grid",height:"30px",alignItems:"center",gridTemplateColumns:{xs:"12px auto 1fr"},gap:"5px"},children:[(0,s.jsx)(a.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{width:"10px",height:"10px",fill:"#B4B5B4"}},children:(0,s.jsx)(r.Z,{className:"min-icon"})}),(0,s.jsx)(a.Z,{sx:{fontSize:"12px",marginLeft:"8px"},children:v}),(0,s.jsx)(a.Z,{children:(0,s.jsx)(o.Z,{value:c,onChange:x,id:"endTime",classNamePrefix:"filter-date-",forFilterContained:!0,noInputIcon:!0,openPickerIcon:d})})]})]}),u&&(0,s.jsx)(a.Z,{sx:{alignItems:"flex-end",display:"flex",justifyContent:"flex-end"},children:(0,s.jsx)(i.zxk,{id:"sync",type:"button",variant:"callAction",onClick:u,icon:(0,s.jsx)(i.bnu,{}),label:"Sync"})})]})})}},80705:function(e,t,n){var i=n(1413),a=n(72791),l=n(29945),r=n(20817),o=n(36571),s=n(80916),d=n(36612),c=n(63466),x=n(27197),u=n(11135),m=n(25787),p=n(23814),f=n(80184);t.Z=(0,m.Z)((function(e){return(0,u.Z)((0,i.Z)((0,i.Z)({dateSelectorOverride:{height:40,border:"#EAEDEE 1px solid",marginLeft:15,backgroundColor:"#fff",padding:"0 16px",borderRadius:5,"&.MuiInput-underline:hover:not(.Mui-disabled):before":{borderBottom:0},"&:hover":{borderColor:"#000","&:before, &:after":{borderColor:"transparent",borderBottom:0}},"&:before, &:after":{borderColor:"transparent",borderBottom:0},"& input":{fontSize:12,fontWeight:600,color:"#393939"}},dateSelectorFilterOverride:{width:180,height:42,marginLeft:20,padding:0,borderRadius:5,"&.MuiInput-underline:hover:not(.Mui-disabled):before":{borderBottom:0},"&:hover":{"&:before, &:after":{borderColor:"transparent",borderBottom:0}},"&:before, &:after":{borderColor:"transparent",borderBottom:0},"& input":{fontSize:12,fontWeight:"bold",color:"#081C42"},"@media (max-width: 900px)":{width:103}},dateSelectorFormOverride:{width:"100%",maxWidth:840},parentDateOverride:{flexGrow:1},textBoxContainer:{width:"calc(100% - 190px)"},openListIcon:{color:"#9D9E9D",width:8,marginTop:2},paperOverride:{"& .MuiCalendarPicker-root":{padding:"0 22px","& > div":{padding:0,"& > div > div.PrivatePickersFadeTransitionGroup-root:first-of-type":{color:"#0A224C",fontWeight:"bold"},"& > div > div.PrivatePickersFadeTransitionGroup-root:last-of-type":{color:"#9D9E9D","& + button.MuiButtonBase-root":{color:"#9D9E9D"}},"& > div:nth-child(2)":{"& > div":{width:0},"& > button.MuiButtonBase-root":{color:"#0A224C"}}}},"& .MuiTypography-root.MuiTypography-caption":{width:26,height:26,margin:5,color:"#BCBCBC",fontSize:10},"& button.MuiPickersDay-root":{fontWeight:"bold",width:26,height:26,margin:5,textAlign:"center","&.Mui-selected":{backgroundColor:e.palette.primary.main,color:"#fff"}},"& div.MuiPickersDay-hiddenDaySpacingFiller":{width:26,height:26,margin:5},"& div.PrivatePickersSlideTransition-root":{minHeight:240},"& div.MuiCalendarPicker-viewTransitionContainer":{borderTop:"#F0F3F5 1px solid"},"& .MuiClockPicker-arrowSwitcher":{marginRight:10,marginTop:-1,"& > div":{width:0},"& > button.MuiButtonBase-root":{color:"#0A224C"},"& + div > div":{width:255,height:255,backgroundColor:"#fff",marginTop:30,marginBottom:14,border:"#F0F3F5 3px solid","& > div:nth-child(2)":{backgroundColor:"#B4B5B4",width:12,height:12,"&::before":{content:"' '",width:35,height:35,display:"block",position:"absolute",border:"#F0F3F5 3px solid",top:-12,left:-12,borderRadius:"100%"}},"& > div:nth-child(3)":{backgroundColor:"#B4B5B4",width:4},"& > div:last-of-type":{marginTop:15,"& > span":{color:"#0A224C","&.Mui-selected":{color:"#fff"},"&[aria-label='1 hours'], &[aria-label='2 hours'], &[aria-label='3 hours'], &[aria-label='4 hours'], &[aria-label='5 hours'], &[aria-label='6 hours'], &[aria-label='7 hours'], &[aria-label='8 hours'], &[aria-label='9 hours'], &[aria-label='10 hours'], &[aria-label='11 hours'], &[aria-label='12 hours']":{fontWeight:"bold",fontSize:20,marginTop:-1}}}}}}},p.YI),p.Hr))}))((function(e){var t=e.value,n=e.onChange,u=e.classes,m=e.forSearchBlock,p=void 0!==m&&m,g=e.forFilterContained,h=void 0!==g&&g,v=e.label,j=e.tooltip,y=void 0===j?"":j,b=e.required,C=e.id,w=e.disabled,S=void 0!==w&&w,Z=e.noInputIcon,T=void 0!==Z&&Z,I=e.classNamePrefix,E=void 0===I?"":I,N=e.openPickerIcon,F={};T||(F={startAdornment:(0,f.jsx)(c.Z,{position:"start",children:(0,f.jsx)(x.Z,{})})}),h&&(F={endAdornment:(0,f.jsx)(c.Z,{position:"end",children:(0,f.jsx)(l.Q2V,{className:u.openListIcon})})});var k="".concat(E,"date-time-input ").concat(p?u.dateSelectorOverride:""," ").concat(h&&!p?u.dateSelectorFilterOverride:""),A=p?u.parentDateOverride:u.dateSelectorFormOverride,L=(0,f.jsx)(o._,{dateAdapter:d.Z,children:(0,f.jsx)(s.x,{value:t,onChange:n,InputProps:(0,i.Z)((0,i.Z)({},F),{},{className:k}),components:{OpenPickerIcon:N},label:"",className:A,disabled:S,renderInput:function(e){return(0,f.jsx)(r.Z,(0,i.Z)((0,i.Z)({id:C,variant:"standard"},e),{},{disabled:!0}))},ampm:!1,PopperProps:{className:u.paperOverride},inputFormat:"LL/dd/yyyy HH:mm"})});if(p)return L;var B=h?"":u.fieldContainer;return(0,f.jsx)(a.Fragment,{children:(0,f.jsxs)(l.rjZ,{item:!0,xs:12,className:"".concat(B," ").concat(E,"input-field-container"),sx:{display:"grid",gridAutoColumns:"max-content"},children:[""!==v&&(0,f.jsxs)(l.AZs,{htmlFor:C,children:[(0,f.jsxs)("span",{children:[v,b?"*":""]}),""!==y&&(0,f.jsx)("div",{className:u.tooltipContainer,children:(0,f.jsx)(l.ua7,{tooltip:y,placement:"top",children:(0,f.jsx)("div",{className:u.tooltip,children:(0,f.jsx)(l.byK,{})})})})]}),(0,f.jsx)(l.xuv,{className:"".concat(u.textBoxContainer," ").concat(E,"input-wrapper"),children:L})]})})}))},31300:function(e,t,n){var i=n(4942),a=(n(72791),n(17691)),l=n(26181),r=n.n(l),o=n(29945),s=n(80184),d=a.ZP.div((function(e){var t,n,a=e.theme;return{fontFamily:"Inter,sans-serif",maxWidth:"321px",display:"flex",marginLeft:"auto",marginRight:"auto",cursor:"default",color:r()(a,"signalColors.main","#07193E"),"& .mainBox":(n={flex:1,display:"flex",padding:"0 8px 0 8px"},(0,i.Z)(n,"@media (max-width: ".concat(o.Egj.sm,"px)"),{padding:"0 10px 0 10px"}),(0,i.Z)(n,"& .indicatorIcon",{width:"20px",height:"20px",marginTop:"8px",maxWidth:"26px","& .min-icon":{width:"16px",height:"16px"}}),(0,i.Z)(n,"& .indicatorContainer",{flex:1,display:"flex",flexFlow:"column","& .indicatorLabel":{fontSize:"16px",fontWeight:600},"& .counterIndicator":(t={display:"flex",alignItems:"center",gap:"5px",justifyContent:"space-between",paddingBottom:0,fontSize:"55px"},(0,i.Z)(t,"@media (max-width: ".concat(o.Egj.sm,"px)"),{paddingBottom:10,fontSize:"35px"}),(0,i.Z)(t,"@media (max-width: ".concat(o.Egj.lg,"px)"),{fontSize:"45px"}),(0,i.Z)(t,"@media (max-width: ".concat(o.Egj.xl,"px)"),{fontSize:"50px"}),(0,i.Z)(t,"flexFlow","row"),(0,i.Z)(t,"fontWeight",600),(0,i.Z)(t,"& .stat-text",{color:r()(a,"mutedText","#87888D"),fontSize:"12px",marginTop:"8px"}),(0,i.Z)(t,"& .stat-value",{textAlign:"center",height:"50px"}),(0,i.Z)(t,"& .min-icon",{marginRight:"8px",marginTop:"8px",height:"10px",width:"10px"}),t),"& .onlineCounter":{display:"flex",alignItems:"center",marginTop:"5px","& .min-icon":{fill:r()(a,"signalColors.good","#4CCB92")}},"& .offlineCount":{display:"flex",alignItems:"center",marginTop:"8px","& .min-icon":{fill:r()(a,"signalColors.danger","#C51B3F")}}}),n)}}));t.Z=function(e){var t=e.onlineCount,n=void 0===t?0:t,i=e.offlineCount,a=void 0===i?0:i,l=e.icon,r=void 0===l?null:l,c=e.label,x=void 0===c?"":c,u=e.okStatusText,m=void 0===u?"Online":u,p=e.notOkStatusText,f=void 0===p?"Offline":p;return(0,s.jsx)(d,{children:(0,s.jsxs)(o.xuv,{className:"mainBox",children:[(0,s.jsxs)(o.xuv,{className:"indicatorContainer",children:[(0,s.jsx)(o.xuv,{className:"indicatorLabel",children:x}),(0,s.jsxs)(o.xuv,{className:"counterIndicator",children:[(0,s.jsxs)(o.xuv,{children:[(0,s.jsx)(o.xuv,{className:"stat-value",children:n}),(0,s.jsxs)(o.xuv,{className:"onlineCounter",children:[(0,s.jsx)(o.J$M,{}),(0,s.jsx)("div",{className:"stat-text",children:m})]})]}),(0,s.jsxs)(o.xuv,{children:[(0,s.jsx)(o.xuv,{className:"stat-value",children:a}),(0,s.jsxs)(o.xuv,{className:"offlineCount",children:[(0,s.jsx)(o.J$M,{})," ",(0,s.jsx)("div",{className:"stat-text",children:f})]})]})]})]}),(0,s.jsx)(o.xuv,{className:"indicatorIcon",children:r})]})})}},879:function(e,t,n){n.d(t,{D_:function(){return r},Et:function(){return a},GJ:function(){return l},yh:function(){return i}});var i={RED:"#C83B51",GREEN:"#4CCB92",YELLOW:"#FFBD62"},a=function(e,t){return e<=t/2?"bad":2!==t&&e===t/2+1?"warn":e===t?"good":void 0},l=function(e){switch(e){case"offline":return"bad";case"online":return"good";default:return"warn"}},r=function(e,t){return e<=t/2?"bad":e===t/2+1?"warn":e===t?"good":void 0}},8388:function(e,t,n){n.r(t),n.d(t,{default:function(){return yt}});var i,a=n(29439),l=n(72791),r=n(29945),o=n(78687),s=n(81551),d=n(32110),c=n(46078),x=n(87995),u=n(93433),m=n(1413),p=n(26181),f=n.n(p),g=function(e){return e.singleValue="singleValue",e.linearGraph="linearGraph",e.areaGraph="areaGraph",e.barChart="barChart",e.pieChart="pieChart",e.singleRep="singleRep",e.simpleWidget="simpleWidget",e}({}),h=n(45248),v=n(80184),j=["#C4D4E9","#DCD1EE","#D1EEE7","#EEDED1","#AAF38F","#F9E6C5","#C83B51","#F4CECE","#D6D6D6"],y=function(e){return(0,h.v1)(e,"ns")},b=function(e){return parseInt(e).toString(10)},C=[{id:1,title:"Uptime",data:"N/A",type:g.simpleWidget,widgetIcon:(0,v.jsx)(r.oNq,{}),labelDisplayFunction:h.v1},{id:50,title:"Capacity",data:[],dataOuter:[{name:"outer",value:100}],widgetConfiguration:{outerChart:{colorList:["#9c9c9c"],innerRadius:0,outerRadius:0,startAngle:0,endAngle:0},innerChart:{colorList:j,innerRadius:20,outerRadius:50,startAngle:90,endAngle:-200}},type:g.pieChart,innerLabel:"N/A",labelDisplayFunction:h.ae},{id:51,title:"Usable Capacity",data:[],dataOuter:[{name:"outer",value:100}],widgetConfiguration:{outerChart:{colorList:["#9c9c9c"],innerRadius:0,outerRadius:0,startAngle:0,endAngle:0},innerChart:{colorList:j,innerRadius:20,outerRadius:50,startAngle:90,endAngle:-200}},type:g.pieChart,innerLabel:"N/A",labelDisplayFunction:h.ae},{id:68,title:"Data Usage Growth",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:g.areaGraph,yAxisFormatter:h.ae,xAxisFormatter:h.Ue},{id:52,title:"Object size distribution",data:[],widgetConfiguration:[{dataKey:"a",color:"#2781B0",background:{fill:"#EEF1F4"},greatestColor:"#081C42"}],customStructure:[{originTag:"LESS_THAN_1024_B",displayTag:"Less than 1024B"},{originTag:"BETWEEN_1024_B_AND_1_MB",displayTag:"Between 1024B and 1MB"},{originTag:"BETWEEN_1_MB_AND_10_MB",displayTag:"Between 1MB and 10MB"},{originTag:"BETWEEN_10_MB_AND_64_MB",displayTag:"Between 10MB and 64MB"},{originTag:"BETWEEN_64_MB_AND_128_MB",displayTag:"Between 64MB and 128MB"},{originTag:"BETWEEN_128_MB_AND_512_MB",displayTag:"Between 128MB and 512MB"},{originTag:"GREATER_THAN_512_MB",displayTag:"Greater than 512MB"}],type:g.barChart},{id:66,title:"Buckets",data:[],innerLabel:"N/A",type:g.singleRep,color:"#0071BC",fillColor:"#ADD5E0"},{id:44,title:"Objects",data:[],innerLabel:"N/A",type:g.singleRep,color:"#0071BC",fillColor:"#ADD5E0"},{id:63,title:"API Data Received Rate",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000",strokeWidth:3}],type:g.linearGraph,xAxisFormatter:h.Ue,yAxisFormatter:h.ae},{id:61,title:"Total Open FDs",data:[],innerLabel:"N/A",type:g.singleRep,color:"#22B573",fillColor:"#A6E8C4"},{id:62,title:"Total Goroutines",data:[],innerLabel:"N/A",type:g.singleRep,color:"#F7655E",fillColor:"#F4CECE"},{id:77,title:"Node CPU Usage",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:g.linearGraph,yAxisFormatter:b,xAxisFormatter:h.Ue},{id:60,title:"API Request Rate",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:g.linearGraph,yAxisFormatter:b,xAxisFormatter:h.Ue},{id:70,title:"API Data Sent Rate",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:g.linearGraph,xAxisFormatter:h.Ue,yAxisFormatter:h.ae},{id:17,title:"Internode Data Transfer",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:g.linearGraph,yAxisFormatter:h.ae,xAxisFormatter:h.Ue},{id:73,title:"Node IO",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:g.linearGraph,yAxisFormatter:h.ae,xAxisFormatter:h.Ue},{id:80,title:"Time Since Last Heal Activity",data:"N/A",type:g.simpleWidget,widgetIcon:(0,v.jsx)(r.lnI,{}),labelDisplayFunction:y},{id:81,title:"Time Since Last Scan Activity",data:"N/A",type:g.simpleWidget,widgetIcon:(0,v.jsx)(r.MXM,{}),labelDisplayFunction:y},{id:71,title:"API Request Error Rate",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:g.linearGraph,xAxisFormatter:h.Ue},{id:76,title:"Node Memory Usage",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:g.linearGraph,xAxisFormatter:h.Ue,yAxisFormatter:h.ae},{id:74,title:"Drive Used Capacity",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:g.linearGraph,xAxisFormatter:h.Ue,yAxisFormatter:h.ae},{id:82,title:"Drives Free Inodes",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:g.linearGraph,disableYAxis:!0,xAxisFormatter:h.Ue},{id:11,title:"Node Syscalls",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:g.linearGraph,yAxisFormatter:b,xAxisFormatter:h.Ue},{id:8,title:"Node File Descriptors",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:g.linearGraph,yAxisFormatter:b,xAxisFormatter:h.Ue},{id:500,mergedPanels:[{id:53,title:"Online",data:"N/A",type:g.singleValue},{id:69,title:"Offline",data:"N/A",type:g.singleValue}],title:"Servers"},{id:501,mergedPanels:[{id:9,title:"Online",data:"N/A",type:g.singleValue},{id:78,title:"Offline",data:"N/A",type:g.singleValue}],title:"Drives"},{id:502,mergedPanels:[{id:65,title:"Upload",data:"N/A",type:g.singleValue,labelDisplayFunction:h.ae},{id:64,title:"Download",data:"N/A",type:g.singleValue,labelDisplayFunction:h.ae}],title:"Network"}],w=function(e,t){if(0===e.length)return["","0"];if("mean"===t){var n=e.reduce((function(e,t){return e+parseFloat(t[1])}),0);return["",Math.floor(n/e.length).toString()]}var i=e.sort((function(e,t){return e[0]-t[0]}));return i[i.length-1]},S=function(e,t){if(!e)return t;var n=e.type;switch(t.type){case g.singleValue:case g.simpleWidget:if("stat"===n||"singlestat"===n){var i=f()(e,"targets[0].result[0].values",[]);null===i&&(i=[]);var a=f()(e,"options.reduceOptions.calcs[0]","lastNotNull"),l=w(i,a),r=t.labelDisplayFunction?t.labelDisplayFunction(l[1]):l[1];return(0,m.Z)((0,m.Z)({},t),{},{data:r})}break;case g.pieChart:if("gauge"===n){var o=f()(e,"options.reduceOptions.calcs[0]","lastNotNull"),s=f()(e,"targets",[]).filter((function(e){return null!==e})),d=s.map((function(e){var t=(e.result&&Array.isArray(e.result)?e.result:[]).map((function(t){var n=f()(t,"values",[]),i=Object.keys(t.metric),a=n.sort((function(e,t){return parseInt(e[0][1])-parseInt(t[0][1])})),l=t.metric[i[0]],r=a[a.length-1];return{name:l,value:parseInt(r[1]),legend:e.legendFormat}}));return t})),c=s[0].result&&s[0].result.length>0?s[0].result[0].values:[],x=w(c,o),u=t.labelDisplayFunction?t.labelDisplayFunction(x[1]):x[1];return(0,m.Z)((0,m.Z)({},t),{},{data:d,innerLabel:u})}break;case g.linearGraph:case g.areaGraph:if("graph"===n){var p=f()(e,"targets",[]);null===p&&(p=[]);var v=[],y=[];p.forEach((function(e,t){var n=f()(e,"result",[]),i=e.legendFormat;null===n&&(n=[]),n.forEach((function(e){var n=function(e,t){var n=Object.keys(e),i=new RegExp("{{(".concat(n.join("|"),")}}"),"g"),a=t.replace(i,(function(t){var n=t.replace(/({{|}})/g,"");return e[n]})),l=(a.match(/{{/g)||[]).length,r=(a.match(/}}/g)||[]).length,o=a.replace(/{{(.*?)}}/g,"");return l===r&&0!==l&&0!==r&&(n.forEach((function(t){a=a.replace(t,e[t])})),o=a),o}(e.metric,i),a="key_".concat(t).concat(n);v.push({dataKey:a,keyLabel:n,lineColor:"",fillColor:""});var l=f()(e,"values",[]);null===l&&(l=[]),l.forEach((function(e){var t=y.findIndex((function(t){return t.name===e[0]}));if(-1===t){var n={name:e[0]};n[a]=e[1],y.push(n)}else y[t][a]=e[1]}))}))}));var b=v.sort((function(e,t){return e.keyLabelt.keyLabel?1:0})).map((function(e,t){return(0,m.Z)((0,m.Z)({},e),{},{lineColor:j[t]||(0,h.C5)(e.keyLabel),fillColor:j[t]||(0,h.C5)(e.keyLabel)})})),C=y.sort((function(e,t){return e.name-t.name}));return(0,m.Z)((0,m.Z)({},t),{},{widgetConfiguration:b,data:C})}break;case g.barChart:if("bargauge"===n){var S=f()(e,"targets[0].result",[]);null===S&&(S=[]);var Z=function(e,t){return e[0]-t[0]},T=[];return T=t.customStructure?t.customStructure.map((function(e){var t=S.find((function(t){return t.metric.range===e.originTag})),n=f()(t,"values",[]).sort(Z),i=n[n.length-1]||["","0"];return{name:e.displayTag,a:parseInt(i[1])}})):S.map((function(e){var t=Object.keys(e.metric),n=e.metric[t[0]],i=f()(e,"values",[]).sort(Z),a=i[i.length-1]||["","0"];return{name:n,a:parseInt(a[1])}})),(0,m.Z)((0,m.Z)({},t),{},{data:T})}break;case g.singleRep:if("stat"===n){var I=f()(e,"targets[0].result[0].values",[]);null===I&&(I=[]);var E=f()(e,"options.reduceOptions.calcs[0]","lastNotNull"),N=w(I,E),F=I.sort((function(e,t){return e[0]-t[0]})),k=[];1===F.length&&k.push({value:0}),F.forEach((function(e){k.push({value:parseInt(e[1])})}));var A=t.labelDisplayFunction?t.labelDisplayFunction(N[1]):N[1];return(0,m.Z)((0,m.Z)({},t),{},{data:k,innerLabel:A})}}return t},Z=function(e){var t=e.split(" "),n=function(){var t=e;return isNaN(parseFloat(e))||(t=(0,h.nk)(parseFloat(e))),(0,v.jsx)(l.Fragment,{children:t})};return 2!==t.length?n():h.Dl.includes(t[1])?(0,v.jsxs)("span",{className:"commonValue",children:[t[0],(0,v.jsx)("span",{className:"unitText",children:t[1]})]}):n()},T=n(17691),I=n(20601),E=n(38725),N=n(90466),F=n(12891),k=n(57702),A=n(41048),L=n(35667),B=n(23814),W=n(64119),z=n(64554),D=n(71080),P=function(e){var t=e.panelItem,n=(0,s.TL)();return(0,v.jsx)(z.Z,{sx:{alignItems:"right",gap:"10px","& .link-text":{color:"#2781B0",fontSize:"12px",fontWeight:600},"& .zoom-graph-icon":{backgroundColor:"transparent",border:0,padding:0,cursor:"pointer","& svg":{color:"#D0D0D0",height:16},"&:hover":{"& svg":{color:"#404143"}}}},children:(0,v.jsx)("button",{onClick:function(){n((0,D.xG)(t))},className:"zoom-graph-icon",children:(0,v.jsx)(W.Z,{})})})},R=n(80911),U=n(77865),M=n(49900),O=n(91097),G=function(e){var t=e.title,n=e.componentRef,i=e.data,o=l.useState(null),d=(0,a.Z)(o,2),c=d[0],u=d[1],m=Boolean(c),p=(0,s.TL)(),f=function(){var e;null!==i&&i.length>0?function(e,t){var n=document.createElement("a");n.setAttribute("href","data:text/plain;charset=utf-8,"+t),n.setAttribute("download",e),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n)}(null!==t?(t+"_"+Date.now().toString()+".csv").replace(/\s+/g,"").trim().toLowerCase():"widgetData_"+Date.now().toString()+".csv",(e=i,[Object.keys(e[0])].concat(e).map((function(e){return Object.values(e).toString()})).join("\n"))):function(e){p((0,x.Ih)(e))}({errorMessage:"Unable to download widget data",detailedError:"Unable to download widget data - data not available"})};return(0,v.jsx)(l.Fragment,{children:(0,v.jsxs)(z.Z,{justifyItems:"center",sx:{"& .download-icon":{backgroundColor:"transparent",border:0,padding:0,cursor:"pointer","& svg":{color:"#D0D0D0",height:16},"&:hover":{"& svg":{color:"#404143"}}}},children:[(0,v.jsx)("button",{onClick:function(e){u(e.currentTarget)},className:"download-icon",children:(0,v.jsx)(r._8t,{})}),(0,v.jsxs)(R.Z,{id:"download-widget-main-menu","aria-labelledby":"download-widget-main",anchorEl:c,open:m,onClose:function(){u(null)},children:[(0,v.jsx)(U.Z,{onClick:function(){f()},children:(0,v.jsx)(M.Z,{children:"Download as CSV"})}),(0,v.jsx)(U.Z,{onClick:function(){!function(){if(null!==t){var e=(t+"_"+Date.now().toString()+".png").replace(/\s+/g,"").trim().toLowerCase();(0,O.exportComponentAsPNG)(n,{fileName:e})}else{var i="widgetData_"+Date.now().toString()+".png";(0,O.exportComponentAsPNG)(n,{fileName:i})}}()},children:(0,v.jsx)(M.Z,{children:"Download as PNG"})})]})]})})},_=n(11135),V=n(25787),K=(0,V.Z)((function(e){return(0,_.Z)((0,m.Z)({},B.Rp))}))((function(e){var t=e.active,n=e.payload,i=e.label,a=e.barChartConfiguration,l=e.classes;return t?(0,v.jsxs)("div",{className:l.customTooltip,children:[(0,v.jsx)("div",{className:l.timeStampTitle,children:i}),n&&n.map((function(e,t){return(0,v.jsxs)("div",{className:l.labelContainer,children:[(0,v.jsx)("div",{className:l.labelColor,style:{backgroundColor:a[t].color}}),(0,v.jsx)("div",{className:l.itemValue,children:(0,v.jsx)("span",{className:l.valueContainer,children:e.value})})]},"pltiem-".concat(t,"-").concat(i))}))]}):null})),H=n(81207),$=T.ZP.div((function(e){var t=e.theme;return(0,m.Z)((0,m.Z)({},(0,B.NP)(t)),{},{loadingAlign:{width:"100%",paddingTop:"15px",textAlign:"center",margin:"auto"}})})),J=function(e){var t=e.y,n=e.payload;return(0,v.jsx)("text",{width:50,fontSize:"69.7%",textAnchor:"start",fill:"#333",transform:"translate(5,".concat(t,")"),fontWeight:400,dy:3,children:n.value})},X=function(e){var t=e.title,n=e.panelItem,i=e.timeStart,d=e.timeEnd,c=e.apiPrefix,u=e.zoomActivated,m=void 0!==u&&u,p=(0,s.TL)(),f=(0,l.useState)(!1),g=(0,a.Z)(f,2),h=g[0],j=g[1],y=(0,l.useState)([]),b=(0,a.Z)(y,2),C=b[0],w=b[1],Z=(0,l.useState)(null),T=(0,a.Z)(Z,2),B=T[0],W=T[1],z=(0,l.useState)(!1),D=(0,a.Z)(z,2),R=D[0],U=D[1],M=(0,l.useState)(window.innerWidth>=r.Egj.md),O=(0,a.Z)(M,2),_=O[0],V=O[1],X=(0,l.useRef)(),Y=(0,o.v9)((function(e){return e.dashboard.widgetLoadVersion}));(0,l.useEffect)((function(){j(!0)}),[Y]),(0,l.useEffect)((function(){var e=function(){var e=!1;window.innerWidth>=r.Egj.md&&(console.log("Bigger"),e=!0),V(e)};return window.addEventListener("resize",e),function(){window.removeEventListener("resize",e)}}),[]),(0,l.useEffect)((function(){if(h){var e=0;if(null!==i&&null!==d){var t=d.toUnixInteger()-i.toUnixInteger(),a=Math.floor(t/60);e=a<1?15:a}H.Z.invoke("GET","/api/v1/".concat(c,"/info/widgets/").concat(n.id,"/?step=").concat(e,"&").concat(null!==i?"&start=".concat(i.toUnixInteger()):"").concat(null!==i&&null!==d?"&":"").concat(null!==d?"end=".concat(d.toUnixInteger()):"")).then((function(e){var t=S(e,n);w(t.data),W(t),j(!1)})).catch((function(e){p((0,x.Ih)(e)),j(!1)}))}}),[h,n,d,i,p,c]);var q=B?B.widgetConfiguration:[],Q=0,ee=0;if(1===q.length){var te=q[0];C.forEach((function(e,t){e[te.dataKey]>ee&&(ee=e[te.dataKey],Q=t)}))}return(0,v.jsx)($,{children:(0,v.jsxs)(r.xuv,{className:m?"":"singleValueContainer",onMouseOver:function(){U(!0)},onMouseLeave:function(){U(!1)},children:[!m&&(0,v.jsxs)(r.rjZ,{container:!0,children:[(0,v.jsx)(r.rjZ,{item:!0,xs:10,sx:{alignItems:"start",justifyItems:"start"},children:(0,v.jsx)("div",{className:"titleContainer",children:t})}),(0,v.jsx)(r.rjZ,{item:!0,xs:1,sx:{display:"flex",justifyContent:"flex-end"},children:R&&(0,v.jsx)(P,{panelItem:n})}),(0,v.jsx)(r.rjZ,{item:!0,xs:1,sx:{display:"flex",justifyContent:"flex-end"},children:(0,v.jsx)(G,{title:t,componentRef:X,data:C})})]}),h&&(0,v.jsx)(r.xuv,{className:"loadingAlign",children:(0,v.jsx)(r.aNw,{})}),!h&&(0,v.jsx)("div",{ref:X,className:m?"zoomChartCont":"contentContainer",children:(0,v.jsx)(I.h,{width:"99%",children:(0,v.jsxs)(E.v,{data:C,layout:"vertical",barCategoryGap:1,children:[(0,v.jsx)(N.K,{type:"number",hide:!0}),(0,v.jsx)(F.B,{dataKey:"name",type:"category",interval:0,tick:(0,v.jsx)(J,{}),tickLine:!1,axisLine:!1,width:150,hide:!_,style:{fontSize:"12px",fontWeight:100}}),q.map((function(e){return(0,v.jsx)(k.$,{dataKey:e.dataKey,fill:e.color,background:e.background,barSize:m?25:12,children:1===q.length?(0,v.jsx)(l.Fragment,{children:C.map((function(t,n){return(0,v.jsx)(A.b,{fill:n===Q?e.greatestColor:e.color},"chart-bar-".concat(n.toString()))}))}):null},"bar-".concat(e.dataKey))})),(0,v.jsx)(L.u,{cursor:{fill:"rgba(255, 255, 255, 0.3)"},content:(0,v.jsx)(K,{barChartConfiguration:q})})]})})})]})})},Y=n(37762),q=n(4942),Q=n(28265),ee=n(82839),te=n(18602),ne=(0,V.Z)((function(e){return(0,_.Z)((0,m.Z)({},B.Rp))}))((function(e){var t=e.active,n=e.payload,i=e.label,a=e.linearConfiguration,l=e.yAxisFormatter,r=e.classes;return t?(0,v.jsxs)("div",{className:r.customTooltip,children:[(0,v.jsx)("div",{className:r.timeStampTitle,children:(0,h.Ue)(i,!0)}),n&&n.map((function(e,t){return(0,v.jsxs)("div",{className:r.labelContainer,children:[(0,v.jsx)("div",{className:r.labelColor,style:{backgroundColor:a[t].lineColor}}),(0,v.jsx)("div",{className:r.itemValue,children:(0,v.jsxs)("span",{className:r.valueContainer,children:[a[t].keyLabel,":"," ",l(e.value)]})})]},"lbPl-".concat(t,"-").concat(a[t].keyLabel))}))]}):null})),ie=T.ZP.div((function(e){var t=e.theme;return(0,m.Z)((0,m.Z)({},(0,B.NP)(t)),{},{"& .chartCont":{position:"relative",height:140,width:"100%"},"& .legendChart":(0,q.Z)({display:"flex",flexDirection:"column",flex:"0 1 auto",maxHeight:130,margin:0,overflowY:"auto",position:"relative",textAlign:"center",width:"100%",justifyContent:"flex-start",color:f()(t,"mutedText","#87888d"),fontWeight:"bold",fontSize:12},"@media (max-width: ".concat(r.Egj.md,"px)"),{display:"none"}),"& .loadingAlign":{width:40,height:40,textAlign:"center",margin:"15px auto"}})})),ae=function(e){var t=e.title,n=e.timeStart,i=e.timeEnd,d=e.panelItem,c=e.apiPrefix,u=e.hideYAxis,p=void 0!==u&&u,f=e.areaWidget,g=void 0!==f&&f,h=e.yAxisFormatter,j=void 0===h?function(e){return e}:h,y=e.xAxisFormatter,b=void 0===y?function(e,t,n){return e}:y,C=e.zoomActivated,w=void 0!==C&&C,Z=(0,s.TL)(),T=(0,l.useState)(!1),E=(0,a.Z)(T,2),k=E[0],A=E[1],B=(0,l.useState)(!1),W=(0,a.Z)(B,2),z=W[0],D=W[1],R=(0,l.useState)([]),U=(0,a.Z)(R,2),M=U[0],O=U[1],_=(0,l.useState)([]),V=(0,a.Z)(_,2),K=V[0],$=V[1],J=(0,l.useState)(0),X=(0,a.Z)(J,2),ae=X[0],le=X[1],re=(0,l.useState)(null),oe=(0,a.Z)(re,2),se=oe[0],de=oe[1],ce=(0,o.v9)((function(e){return e.dashboard.widgetLoadVersion})),xe=(0,l.useRef)(null);(0,l.useEffect)((function(){A(!0)}),[ce]),(0,l.useEffect)((function(){if(k){var e=0;if(null!==n&&null!==i){var t=i.toUnixInteger()-n.toUnixInteger(),a=Math.floor(t/60);e=a<1?15:a}H.Z.invoke("GET","/api/v1/".concat(c,"/info/widgets/").concat(d.id,"/?step=").concat(e,"&").concat(null!==n?"&start=".concat(n.toUnixInteger()):"").concat(null!==n&&null!==i?"&":"").concat(null!==i?"end=".concat(i.toUnixInteger()):"")).then((function(e){var t=S(e,d);O(t.data),de(t),A(!1);var n,i=0,a=(0,Y.Z)(t.data);try{for(a.s();!(n=a.n()).done;){var l=n.value;for(var r in l)if("name"!==r){var o=parseInt(l[r]);isNaN(o)&&(o=0),i5&&void 0!==arguments[5]&&arguments[5];switch(e.type){case g.singleValue:return(0,v.jsx)(ve,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,apiPrefix:a});case g.simpleWidget:var r,o=null;return 80===e.id?o=we:81===e.id?o=Se:1===e.id&&(o=Ze),[80,81,1].includes(e.id)&&(r=function(e){var t=e.valueToRender,n=e.loading,i=e.title,a=e.id,l=e.iconWidget;return(0,v.jsx)(o,{valueToRender:t,loading:n,title:i,id:a,iconWidget:l})}),(0,v.jsx)(ce,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,apiPrefix:a,iconWidget:e.widgetIcon,renderFn:r});case g.pieChart:return 50===e.id?(0,v.jsx)(xe,{children:(0,v.jsx)(ye,{value:e,timeStart:t,timeEnd:n,apiPrefix:a})}):(0,v.jsx)(se,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,apiPrefix:a});case g.linearGraph:case g.areaGraph:return(0,v.jsx)(ae,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,hideYAxis:e.disableYAxis,xAxisFormatter:e.xAxisFormatter,yAxisFormatter:e.yAxisFormatter,apiPrefix:a,areaWidget:e.type===g.areaGraph,zoomActivated:l});case g.barChart:return(0,v.jsx)(X,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,apiPrefix:a,zoomActivated:l});case g.singleRep:var s=e.fillColor?e.fillColor:e.color;return(0,v.jsx)(ge,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:i,color:e.color,fillColor:s,apiPrefix:a});default:return null}},Ie=[{sx:(i={minWidth:0,display:"grid",gap:"30px",gridTemplateColumns:"1fr 1fr 1fr 1fr"},(0,q.Z)(i,"@media (max-width: ".concat(r.Egj.sm,"px)"),{gridTemplateColumns:"1fr"}),(0,q.Z)(i,"@media (max-width: ".concat(r.Egj.md,"px)"),{gridTemplateColumns:"1fr 1fr"}),i),columns:[{componentId:66},{componentId:44},{componentId:500},{componentId:501}]},{sx:(0,q.Z)({display:"grid",minWidth:0,gap:"30px",gridTemplateColumns:"1fr 1fr"},"@media (max-width: ".concat(r.Egj.md,"px)"),{gridTemplateColumns:"1fr"}),columns:[{componentId:50},{componentId:502}]},{sx:(0,q.Z)({display:"grid",minWidth:0,gap:"30px",gridTemplateColumns:"1fr 1fr 1fr"},"@media (max-width: ".concat(r.Egj.md,"px)"),{gridTemplateColumns:"1fr"}),columns:[{componentId:80},{componentId:81},{componentId:1}]},{sx:(0,q.Z)({display:"grid",minWidth:0,gap:"30px",gridTemplateColumns:"1fr 1fr"},"@media (max-width: ".concat(r.Egj.md,"px)"),{gridTemplateColumns:"1fr"}),columns:[{componentId:68},{componentId:52}]},{sx:(0,q.Z)({display:"grid",minWidth:0,gap:"30px",gridTemplateColumns:"1fr 1fr"},"@media (max-width: ".concat(r.Egj.md,"px)"),{gridTemplateColumns:"1fr"}),columns:[{componentId:63},{componentId:70}]}],Ee=[{sx:{display:"grid",gridTemplateColumns:"1fr",gap:"30px"},columns:[{componentId:60}]},{sx:(0,q.Z)({display:"grid",minWidth:0,gap:"30px",gridTemplateColumns:"1fr 1fr"},"@media (max-width: ".concat(r.Egj.md,"px)"),{gridTemplateColumns:"1fr"}),columns:[{componentId:71,sx:{flex:1,width:"50%",flexShrink:0}},{componentId:17,sx:{flex:1,width:"50%",flexShrink:0}}]},{sx:{display:"grid",gridTemplateColumns:"1fr",gap:"30px"},columns:[{componentId:73}]}],Ne=[{sx:{display:"grid",minWidth:0,gridTemplateColumns:"1fr 1fr",gap:"30px"},columns:[{componentId:76},{componentId:77}]},{sx:{display:"grid",minWidth:0,gridTemplateColumns:"1fr 1fr",gap:"30px"},columns:[{componentId:82},{componentId:74}]}],Fe=[{sx:{display:"grid",minWidth:0,gridTemplateColumns:"1fr 1fr",gap:"30px"},columns:[{componentId:11},{componentId:8}]}],ke=function(e){var t=e.children;return(0,v.jsx)(r.xuv,{sx:{display:"grid",gridTemplateColumns:"1fr",gap:"30px"},children:t})},Ae=n(56028),Le=function(e){var t=e.value,n=e.modalOpen,i=e.timeStart,a=e.timeEnd,r=e.apiPrefix,o=(0,s.TL)();return t?(0,v.jsx)(Ae.Z,{title:t.title,onClose:function(){o((0,D.jv)())},modalOpen:n,wideLimit:!1,sx:{padding:0},children:(0,v.jsx)(l.Fragment,{children:Te(t,i,a,!0,r,!0)})}):null},Be=n(63856),We=n(11087),ze=T.ZP.div((function(e){var t=e.theme;return(0,m.Z)((0,m.Z)({},(0,B.NP)(t)),{},{"& .metricText":{fontSize:70,lineHeight:1.1,color:f()(t,"signalColors.main","#07193E"),fontWeight:"bold"},"& .unitText":{fontSize:10,color:f()(t,"mutedText","#87888d"),fontWeight:"normal"},"& .subHeaderContainer":{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center"},"& .subMessage":{fontSize:10,color:f()(t,"mutedText","#87888d"),"&.bold":{fontWeight:"bold"}},"& .headerContainer":{display:"flex",justifyContent:"space-between"},"& .viewAll":{fontSize:10,color:f()(t,"signalColors.danger","#C83B51"),textTransform:"capitalize","& a, & a:hover, & a:visited, & a:active":{color:f()(t,"signalColors.danger","#C83B51")}}})})),De=function(e){var t=e.title,n=e.metricValue,i=e.metricUnit,a=e.subMessage,o=e.moreLink,s=e.rightComponent,d=e.extraMargin,c=void 0!==d&&d,x=function(){return(0,v.jsx)(l.Fragment,{children:(0,v.jsxs)("div",{className:"subHeaderContainer",children:[(0,v.jsxs)("div",{className:"leftSide",children:[(0,v.jsx)("div",{children:(0,v.jsxs)("span",{className:"metricText",children:[n,(0,v.jsx)("span",{className:"unitText",children:i})]})}),a&&(0,v.jsx)(r.xuv,{sx:{fontWeight:a.fontWeight||"normal"},children:a.message})]}),(0,v.jsx)("div",{className:"rightSide",children:s})]})})},u=function(){return(0,v.jsx)(l.Fragment,{children:(0,v.jsxs)("div",{className:"headerContainer",children:[(0,v.jsx)("span",{className:"titleContainer",children:t}),o&&(0,v.jsx)(l.Fragment,{children:(0,v.jsx)("span",{className:"viewAll",children:(0,v.jsx)(We.rU,{to:o,children:"View All"})})})]})})};return(0,v.jsx)(l.Fragment,{children:(0,v.jsx)(r.xuv,{withBorders:!0,sx:{height:200,padding:16,margin:c?"10px 20px 10px 0":""},children:""!==n&&(0,v.jsxs)(ze,{children:[(0,v.jsx)(u,{}),(0,v.jsx)(x,{})]})})})},Pe=function(e){var t=e.title,n=e.leftComponent,i=e.rightComponent;return(0,v.jsx)(l.Fragment,{children:(0,v.jsx)(De,{title:t,metricValue:n,rightComponent:i})})},Re=function(e){var t=e.panelItem,n=e.timeStart,i=e.timeEnd,d=e.apiPrefix,c=e.statLabel,u=(0,s.TL)(),m=(0,l.useState)(!1),p=(0,a.Z)(m,2),f=p[0],g=p[1],h=(0,l.useState)(""),j=(0,a.Z)(h,2),y=j[0],b=j[1],C=(0,o.v9)((function(e){return e.dashboard.widgetLoadVersion}));return(0,l.useEffect)((function(){g(!0)}),[C]),(0,l.useEffect)((function(){if(f){var e=0;if(null!==n&&null!==i){var a=i.toUnixInteger()-n.toUnixInteger(),l=Math.floor(a/60);e=l<1?15:l}H.Z.invoke("GET","/api/v1/".concat(d,"/info/widgets/").concat(t.id,"/?step=").concat(e,"&").concat(null!==n?"&start=".concat(n.toUnixInteger()):"").concat(null!==n&&null!==i?"&":"").concat(null!==i?"end=".concat(i.toUnixInteger()):"")).then((function(e){var n=S(e,t);b(n.data),g(!1)})).catch((function(e){u((0,x.Ih)(e)),g(!1)}))}}),[f,t,i,n,u,d]),f?(0,v.jsx)(r.xuv,{sx:{width:"100%",paddingTop:"5px",textAlign:"center",margin:"auto"},children:(0,v.jsx)(r.aNw,{style:{width:12,height:12}})}):(0,v.jsxs)(r.xuv,{children:[(0,v.jsx)(r.xuv,{className:"stat-value",children:y}),c]})},Ue=T.ZP.div((function(e){var t=e.theme;return{fontFamily:"Inter,sans-serif",color:f()(t,"signalColors.main","#07193E"),maxWidth:"321px",display:"flex",marginLeft:"auto",marginRight:"auto",cursor:"default","& .stat-text":{color:f()(t,"mutedText","#87888d"),fontSize:"12px",marginTop:"8px"}}})),Me=function(e){var t=e.statItemLeft,n=void 0===t?null:t,i=e.statItemRight,a=void 0===i?null:i,l=e.icon,o=void 0===l?null:l,s=e.label,d=void 0===s?"":s;return(0,v.jsx)(Ue,{children:function(){var e;return(0,v.jsxs)(r.xuv,{sx:(0,q.Z)({flex:1,display:"flex",padding:"0 8px 0 8px"},"@media (max-width: ".concat(r.Egj.sm,"px)"),{padding:"0 10px 0 10px"}),children:[(0,v.jsxs)(r.xuv,{sx:{flex:1,display:"flex",flexFlow:"column"},children:[(0,v.jsx)(r.xuv,{sx:{fontSize:"16px",fontWeight:600},children:d}),(0,v.jsxs)(r.xuv,{sx:(e={display:"flex",alignItems:"center",gap:5,justifyContent:"space-between",paddingBottom:0,fontSize:55,flexFlow:"row",fontWeight:600,"& .stat-value":{textAlign:"center",height:"50px"},"& .min-icon":{marginRight:"8px",marginTop:"8px",height:"10px",width:"10px"}},(0,q.Z)(e,"@media (max-width: ".concat(r.Egj.sm,"px)"),{fontSize:35}),(0,q.Z)(e,"@media (max-width: ".concat(r.Egj.lg,"px)"),{fontSize:45}),(0,q.Z)(e,"@media (max-width: ".concat(r.Egj.xl,"px)"),{fontSize:50}),e),children:[n,a]})]}),(0,v.jsx)(r.xuv,{sx:{width:"20px",height:"20px",marginTop:"8px",maxWidth:"26px","& .min-icon":{width:"16px",height:"16px"}},children:o})]})}()})},Oe=T.ZP.div((function(e){var t=e.theme;return{display:"flex",alignItems:"center",marginTop:"5px",gap:8,"&.online":{"& .min-icon":{margin:0,fill:f()(t,"signalColors.good","#4CCB92")}},"&.offline":{"& .min-icon":{margin:0,fill:f()(t,"signalColors.danger","#C51B3F")}},"& .indicatorText":{color:f()(t,"mutedText","#C51B3F"),fontSize:12}}})),Ge=function(e){var t=e.info,n=e.timeStart,i=e.timeEnd,l=e.apiPrefix,o=t.mergedPanels,s=void 0===o?[]:o,d=t.id,c=(0,a.Z)(s,2),x=c[0],u=c[1],m=(0,v.jsx)(Re,{panelItem:x,timeStart:n,timeEnd:i,apiPrefix:l,statLabel:(0,v.jsxs)(Oe,{className:"online",children:[(0,v.jsx)(r.J$M,{}),(0,v.jsx)(r.xuv,{className:"indicatorText",children:"Online"})]})}),p=(0,v.jsx)(Re,{panelItem:u,timeStart:n,timeEnd:i,apiPrefix:l,statLabel:(0,v.jsxs)(Oe,{className:"offline",children:[(0,v.jsx)(r.J$M,{}),(0,v.jsx)(r.xuv,{className:"indicatorText",children:"Offline"})]})}),f=null,g="";return 500===d?(f=(0,v.jsx)(r.SBZ,{}),g="Servers"):501===d&&(f=(0,v.jsx)(r.FU8,{}),g="Drives"),(0,v.jsx)(Me,{statItemLeft:m,statItemRight:p,icon:f,label:g})},_e=T.ZP.div((function(e){var t=e.theme;return{"& .putLabel":{display:"flex",gap:10,alignItems:"center",marginTop:"10px","& .min-icon":{height:15,width:15,fill:f()(t,"signalColors.good","#4CCB92")},"& .getText":{fontSize:"18px",color:f()(t,"mutedText","#87888d"),fontWeight:"bold"},"& .valueText":{fontSize:50,fontFamily:"Inter",fontWeight:600}}}})),Ve=function(e){var t=e.value,n=e.loading;return(0,v.jsxs)(_e,{children:[(0,v.jsxs)(r.xuv,{className:"putLabel",children:[(0,v.jsx)(r.xuv,{className:"getText",children:"GET"}),n?(0,v.jsx)(r.aNw,{style:{width:"15px",height:"15px"}}):(0,v.jsx)(r.vUj,{})]}),(0,v.jsx)(r.xuv,{className:"valueText",children:t})]})},Ke=T.ZP.div((function(e){var t=e.theme;return{"& .putLabel":{display:"flex",gap:10,alignItems:"center",marginTop:"10px","& .min-icon":{height:15,width:15,fill:f()(t,"signalColors.info","#2781B0")},"& .putText":{fontSize:"18px",color:f()(t,"mutedText","#87888d"),fontWeight:"bold"},"& .valueText":{fontSize:50,fontFamily:"Inter",fontWeight:600}}}})),He=function(e){var t=e.value,n=e.loading;return(0,v.jsxs)(Ke,{children:[(0,v.jsxs)(r.xuv,{className:"putLabel",children:[(0,v.jsx)(r.xuv,{className:"putText",children:"PUT"}),n?(0,v.jsx)(r.aNw,{style:{width:"15px",height:"15px"}}):(0,v.jsx)(r.Uxq,{})]}),(0,v.jsx)(r.xuv,{className:"valueText",children:t})]})},$e=T.ZP.div((function(e){var t=e.theme;return(0,q.Z)({flex:1,display:"flex",alignItems:"center",flexFlow:"row",gap:"15px","& .unitText":{fontSize:"14px",color:f()(t,"mutedText","#87888d"),marginLeft:"5px"},"& .unit":{color:f()(t,"mutedText","#87888d"),fontSize:"18px",marginLeft:"12px",marginTop:"10px"}},"@media (max-width: ".concat(r.Egj.sm,"px)"),{flexFlow:"column"})})),Je=function(e){var t=e.value,n=e.timeStart,i=e.timeEnd,l=e.apiPrefix,o=t.mergedPanels,s=void 0===o?[]:o,d=(0,a.Z)(s,2),c=d[0],x=d[1],u=(0,v.jsx)(ve,{title:t.title,panelItem:c,timeStart:n,timeEnd:i,apiPrefix:l,renderFn:function(e){var t=e.valueToRender,n=e.loading,i=e.title,a=e.id;return(0,v.jsx)(He,{value:t,loading:n,title:i,id:a})}}),m=(0,v.jsx)(ve,{title:t.title,panelItem:x,timeStart:n,timeEnd:i,apiPrefix:l,renderFn:function(e){var t=e.valueToRender,n=e.loading,i=e.title,a=e.id;return(0,v.jsx)(Ve,{value:t,loading:n,title:i,id:a})}});return(0,v.jsxs)($e,{children:[(0,v.jsx)(r.xuv,{sx:{fontSize:"16px",fontWeight:600},children:"Network"}),(0,v.jsx)(r.xuv,{sx:(0,q.Z)({position:"relative",width:110,height:110,marginLeft:"auto"},"@media (max-width: ".concat(r.Egj.sm,"px)"),{marginLeft:"0"}),children:(0,v.jsx)(r.xuv,{sx:{position:"absolute",display:"flex",flexFlow:"column",alignItems:"center",top:"50%",left:"50%",transform:"translate(-50%, -50%)",fontWeight:"bold",fontSize:12},children:m})}),(0,v.jsx)(r.xuv,{sx:(0,q.Z)({display:"flex",alignItems:"center",marginLeft:"auto"},"@media (max-width: ".concat(r.Egj.sm,"px)"),{marginLeft:"0"}),children:(0,v.jsx)(r.xuv,{sx:{display:"flex",alignItems:"center","& .value":{fontSize:"50px",fontFamily:"Inter"}},children:u})}),(0,v.jsx)(r.xuv,{sx:{marginLeft:"15px",height:"100%",display:"flex",alignItems:"flex-start","& .min-icon":{height:"15px",width:"15px"}},children:(0,v.jsx)(r.QBB,{})})]})},Xe=function(e){var t=e.info,n=e.timeStart,i=e.timeEnd,l=e.loading,r=e.apiPrefix,o=t.mergedPanels,s=void 0===o?[]:o,d=t.title,c=void 0===d?"":d,x=t.id,u=(0,a.Z)(s,2),m=u[0],p=u[1];return[500,501].includes(x)?(0,v.jsx)(xe,{children:(0,v.jsx)(Ge,{info:t,timeStart:n,timeEnd:i,apiPrefix:r})}):502===x?(0,v.jsx)(xe,{children:(0,v.jsx)(Je,{apiPrefix:r,timeEnd:i,timeStart:n,value:t})}):(0,v.jsx)(Pe,{title:c,leftComponent:Te(m,n,i,l,r),rightComponent:Te(p,n,i,l,r)})},Ye=n(31300),qe=n(98444),Qe=n.n(qe),et=n(879),tt=T.ZP.div((function(e){var t=e.theme;return{alignItems:"baseline",padding:"5px",display:"flex",gap:"5px","& .StatBox":{display:"flex",alignItems:"center",justifyContent:"center",flexFlow:"column","& .stat-text":{color:f()(t,"mutedText","#87888d"),fontSize:"12px"},"& .stat-value":{fontSize:"18px",color:f()(t,"signalColors.main","#07193E"),display:"flex",fontWeight:500,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap","& .stat-container":{display:"flex",alignItems:"center",justifyContent:"center",flexFlow:"column",marginLeft:"5px",maxWidth:"40px","&:first-of-type(svg)":{fill:f()(t,"mutedText","#87888d")},"& .stat-indicator":{marginRight:"0px",justifyContent:"center",alignItems:"center",textAlign:"center","& svg.min-icon":{width:"10px",height:"10px"},"&.good":{"& svg.min-icon":{fill:f()(t,"signalColors.good","#4CCB92")}},"&.warn":{"& svg.min-icon":{fill:f()(t,"signalColors.warning","#FFBD62")}},"&.bad":{"& svg.min-icon":{fill:f()(t,"signalColors.danger","#C51B3F")}}}}}}}})),nt=T.ZP.div((function(e){var t=e.theme;return{display:"flex",alignItems:"flex-start",flexFlow:"column",flex:1,"& .server-state":{marginLeft:"8px","& .min-icon":{height:"14px",width:"14px"},"&.good":{"& svg.min-icon":{fill:f()(t,"signalColors.good","#4CCB92")}},"&.warn":{"& svg.min-icon":{fill:f()(t,"signalColors.warning","#FFBD62")}},"&.bad":{"& svg.min-icon":{fill:f()(t,"signalColors.danger","#C51B3F")}}}}})),it=function(e){var t=e.label,n=void 0===t?"":t,i=e.value,a=void 0===i?"":i,l=e.statusColor,o=void 0===l?"warn":l,s=e.hasStatus,d=void 0!==s&&s;return(0,v.jsx)(tt,{children:(0,v.jsxs)(r.xuv,{className:"StatBox",children:[(0,v.jsxs)("div",{className:"stat-value",children:[a," ",(0,v.jsx)(r.xuv,{className:"stat-container",children:d?(0,v.jsx)(r.xuv,{className:"stat-indicator ".concat(o),children:(0,v.jsx)(r.J$M,{})}):(0,v.jsx)(r.xuv,{sx:{width:"12px",height:"12px"}})})]}),(0,v.jsx)("div",{className:"stat-text",children:n})]})})},at=function(e){var t=e.server,n=Object.keys(f()(t,"network",{})),i=n.length,a=t.drives?t.drives.length:0,l=n.reduce((function(e,n){return"online"===(t.network?t.network[n]:"")?e+1:e}),0),o=t.drives?t.drives.filter((function(e){return"ok"===e.state})).length:0;return(0,v.jsx)(nt,{children:(0,v.jsxs)(r.xuv,{sx:(0,q.Z)({display:"flex",alignItems:"center",padding:"3px",gap:"15px",justifyContent:"space-between",width:"100%",paddingLeft:"20px",flexFlow:"row"},"@media (max-width: ".concat(r.Egj.md,"px)"),{flexFlow:"column"}),children:[(0,v.jsxs)(r.xuv,{sx:{display:"flex",alignItems:"center"},children:[(0,v.jsx)(r.xuv,{sx:{fontWeight:600,textTransform:"none"},children:t.endpoint||""}),(null===t||void 0===t?void 0:t.state)&&(0,v.jsx)(r.xuv,{className:"server-state ".concat((0,et.GJ)(t.state)),children:(0,v.jsx)(r.J$M,{})})]}),(0,v.jsxs)(r.xuv,{sx:{display:"flex",alignItems:"center",justifyContent:"center",flex:"1.5",gap:"5%"},children:[(0,v.jsx)(it,{statusColor:(0,et.Et)(o,a),label:"Drives",hasStatus:!0,value:"".concat(o,"/").concat(a)}),(0,v.jsx)(it,{statusColor:(0,et.D_)(l,i),label:"Network",hasStatus:!0,value:"".concat(l,"/").concat(i)}),(0,v.jsx)(it,{statusColor:"good",label:"Up time",value:null!==t&&void 0!==t&&t.uptime?(0,h.v1)("".concat(t.uptime)):"N/A"})]}),(0,v.jsx)(it,{statusColor:"good",label:"",value:(0,v.jsxs)(r.xuv,{sx:{background:"rgb(235, 236, 237)",color:"#000000",paddingLeft:"10px",paddingRight:"10px",borderRadius:"2px",fontSize:"12px",marginTop:"5px","& .label":{fontWeight:600,marginRight:"3px"}},children:[(0,v.jsx)("span",{className:"label",children:"Version:"}),t.version?t.version:"N/A"]})})]})})},lt=function(e){switch(e){case"offline":return et.yh.RED;case"ok":return et.yh.GREEN;default:return et.yh.YELLOW}},rt=T.ZP.div((function(e){var t=e.theme;return(0,q.Z)({flex:1,display:"flex",alignItems:"center",paddingLeft:"20px",marginTop:"10px",flexFlow:"row","& .info-label":{color:f()(t,"mutedText","#87888d"),fontSize:"12px",textAlign:"center"},"& .info-value":{fontSize:"18px",color:f()(t,"signalColors.main","#07193E"),display:"flex",fontWeight:500,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},"@media (max-width: ".concat(r.Egj.sm,"px)"),{flexFlow:"column"})})),ot=function(e){var t=e.drive,n=t.totalSpace||0,i=t.usedSpace||0;return(0,v.jsx)(r.xuv,{withBorders:!0,sx:{display:"flex",flex:1,alignItems:"center",paddingBottom:"10px",padding:"20px"},children:(0,v.jsxs)(r.xuv,{sx:{display:"flex",flexFlow:"column",marginLeft:"10px",flex:1},children:[(0,v.jsxs)(r.xuv,{sx:{fontSize:"14px",fontWeight:400,display:"flex",alignItems:"center","& .min-icon":{marginRight:"10px",height:"10px",width:"10px",fill:lt(t.state||""),flexShrink:0},"& .drive-endpoint":(0,q.Z)({overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"normal",wordBreak:"break-all",marginRight:"8px",fontWeight:600,fontSize:16},"@media (max-width: ".concat(r.Egj.sm,"px)"),{fontSize:10})},children:[(0,v.jsx)("div",{className:"drive-endpoint",children:t.endpoint||""}),t.state&&(0,v.jsx)(r.J$M,{})]}),(0,v.jsxs)(rt,{children:[(0,v.jsx)(r.xuv,{sx:{flex:1},children:(0,v.jsx)(r.mWO,{label:!0,usedBytes:i,totalBytes:n,width:"120",height:"120"})}),(0,v.jsxs)(r.xuv,{sx:{display:"flex",gap:"5%",alignItems:"center",flex:2,flexGrow:1},children:[(0,v.jsxs)(r.xuv,{sx:{display:"flex",flexFlow:"column"},children:[(0,v.jsx)("div",{className:"info-value",children:(0,h.ae)(t.totalSpace?t.totalSpace.toString():"0")}),(0,v.jsx)("label",{className:"info-label",children:"Capacity"})]}),(0,v.jsxs)(r.xuv,{sx:{display:"flex",flexFlow:"column"},children:[(0,v.jsx)("div",{className:"info-value",children:(0,h.ae)(t.usedSpace?t.usedSpace.toString():"0")}),(0,v.jsx)("label",{className:"info-label",children:"Used"})]}),(0,v.jsxs)(r.xuv,{sx:{display:"flex",flexFlow:"column"},children:[(0,v.jsx)("div",{className:"info-value",children:(0,h.ae)(t.availableSpace?t.availableSpace.toString():"0")}),(0,v.jsx)("label",{className:"info-label",children:"Available"})]})]})]})]})})},st=function(e){var t=e.data,n=l.useState(t.length>1?"":t[0].endpoint+"-0"),i=(0,a.Z)(n,2),o=i[0],s=i[1],d=function(e){s(e)};return(0,v.jsxs)(r.xuv,{children:[(0,v.jsxs)(r.xuv,{sx:{fontSize:18,lineHeight:2,fontWeight:700},children:["Servers (",t.length,")"]}),(0,v.jsx)(r.xuv,{children:t.map((function(e,t){var n,i,a="".concat(e.endpoint,"-").concat(t),l=o===a;return(0,v.jsxs)(r.UQy,{expanded:l,onTitleClick:function(){d(l?"":a)},id:"key",title:(0,v.jsx)(at,{server:e,index:t}),sx:{marginBottom:15},children:[(0,v.jsxs)(r.xuv,{useBackground:!0,sx:{padding:"10px 30px",fontWeight:"bold"},children:["Drives (",null===(n=e.drives)||void 0===n?void 0:n.length,")"]}),(0,v.jsx)(r.xuv,{sx:(0,q.Z)({flex:1,display:"flex",flexDirection:"column",padding:"15px 30px",gap:15},"@media (max-width: ".concat(r.Egj.sm,"px)"),{padding:"10px 10px"}),children:null===(i=e.drives)||void 0===i?void 0:i.map((function(e,t){return(0,v.jsx)(ot,{drive:e},"".concat(e.endpoint,"-").concat(t))}))})]},a)}))})]})},dt=T.ZP.div((function(e){var t=e.theme;return{fontFamily:"Inter,sans-serif",color:f()(t,"signalColors.main","#07193E"),maxWidth:"300px",display:"flex",marginLeft:"auto",marginRight:"auto",cursor:"default",position:"relative",width:"100%"}})),ct=function(e){var t,n=e.counterValue,i=e.label,a=void 0===i?"":i,l=e.icon,o=void 0===l?null:l,s=e.actions,d=void 0===s?null:s;return(0,v.jsx)(dt,{children:(0,v.jsxs)(r.xuv,{sx:(0,q.Z)({flex:1,display:"flex",width:"100%",padding:"0 8px 0 8px",position:"absolute"},"@media (max-width: ".concat(r.Egj.md,"px)"),{padding:"0 10px 0 10px"}),children:[(0,v.jsxs)(r.xuv,{sx:{flex:1,display:"flex",flexFlow:"column",marginTop:"8px",zIndex:10,overflow:"hidden"},children:[(0,v.jsx)(r.xuv,{sx:{fontSize:"16px",fontWeight:600},children:a}),(0,v.jsx)(r.ua7,{tooltip:n,placement:"bottom",children:(0,v.jsx)(r.xuv,{sx:(t={fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",maxWidth:187,flexFlow:"row",fontSize:n.toString().length>=5?50:55},(0,q.Z)(t,"@media (max-width: ".concat(r.Egj.sm,"px)"),{flexFlow:"column",maxWidth:200,fontSize:n.toString().length>=5?20:35}),(0,q.Z)(t,"@media (max-width: ".concat(r.Egj.md,"px)"),{fontSize:n.toString().length>=5?28:35}),(0,q.Z)(t,"@media (max-width: ".concat(r.Egj.lg,"px)"),{fontSize:n.toString().length>=5?28:36}),(0,q.Z)(t,"@media (max-width: ".concat(r.Egj.xl,"px)"),{fontSize:n.toString().length>=5?45:50}),t),children:n})})]}),(0,v.jsxs)(r.xuv,{sx:{display:"flex",flexFlow:"column",alignItems:"center",justifyContent:"flex-start",marginTop:"8px",maxWidth:"26px","& .min-icon":{width:"16px",height:"16px"}},children:[o,(0,v.jsx)(r.xuv,{sx:{display:"flex"},children:d})]})]})})},xt=T.ZP.div((function(e){var t=e.theme;return{maxHeight:"110px",display:"flex",alignItems:"center",justifyContent:"space-between",fontSize:"19px",padding:"10px","& .unit-value":{fontSize:"50px",color:f()(t,"signalColors.main","#07193E")},"& .unit-type":{fontSize:"18px",color:f()(t,"mutedText","#87888d"),marginTop:"20px",marginLeft:"5px"},"& .usage-label":{display:"flex",alignItems:"center",fontSize:"16px",fontWeight:600,marginRight:"20px",marginTop:"-10px","& .min-icon":{marginLeft:"10px",height:16,width:16}}}})),ut=function(e){var t=e.usageValue,n=e.total,i=e.unit,a=[{value:n,color:"#D6D6D6",label:"Free Space"},{value:t,color:"#073052",label:"Used Space"}];return(0,v.jsxs)(xt,{children:[(0,v.jsxs)(r.xuv,{children:[(0,v.jsx)("div",{className:"usage-label",children:(0,v.jsx)("span",{children:"Reported Usage"})}),(0,v.jsx)(r.ua7,{tooltip:"".concat(t," Bytes"),children:(0,v.jsx)("label",{className:"unit-value",style:{fontWeight:600},children:n})}),(0,v.jsx)("label",{className:"unit-type",children:i})]}),(0,v.jsx)(r.xuv,{children:(0,v.jsx)(r.xuv,{sx:{flex:1},children:(0,v.jsx)("div",{style:{position:"relative",width:105,height:105,top:"-8px"},children:(0,v.jsx)("div",{children:(0,v.jsx)(le.u,{width:105,height:105,children:(0,v.jsx)(re.b,{data:a,cx:"50%",cy:"50%",dataKey:"value",outerRadius:45,innerRadius:35,startAngle:-70,endAngle:360,animationDuration:1,children:a.map((function(e,t){return(0,v.jsx)(A.b,{fill:e.color},"cellCapacity-".concat(t))}))})})})})})})]})},mt=n(56087),pt=n(27454),ft=function(e){var t=e.children;return(0,v.jsx)(r.xuv,{withBorders:!0,sx:(0,q.Z)({padding:15,height:"136px",maxWidth:"100%"},"@media (max-width: ".concat(r.Egj.sm,"px)"),{padding:5,maxWidth:"initial"}),children:t})},gt=function(e){var t,n,i,a,l,o,s,d,c,x,m,p=e.usage,f=p&&p.usage?p.usage.toString():"0",g=function(e){return void 0===e?{total:"0",unit:"Mi"}:(0,h.Am)(e)}(f),j={},y=j.lastScan,b=void 0===y?"n/a":y,C=j.lastHeal,w=void 0===C?"n/a":C,S=j.upTime,Z=void 0===S?"n/a":S,T=function(e){return e&&e.servers?(0,u.Z)(e.servers).sort((function(e,t){var n,i,a=(null===(n=e.endpoint)||void 0===n?void 0:n.toLowerCase())||"",l=(null===(i=t.endpoint)||void 0===i?void 0:i.toLowerCase())||"";return al?1:0})):[]}(p),I=[];T.forEach((function(e){var t,n=null===(t=e.drives)||void 0===t?void 0:t.map((function(e){return e}));n&&(I=[].concat((0,u.Z)(I),(0,u.Z)(n)))}));var E=Qe()(T,"state"),N=E.offline,F=void 0===N?[]:N,k=E.online,A=void 0===k?[]:k,L=Qe()(I,"state"),B=L.offline,W=void 0===B?[]:B,z=L.ok,D=void 0===z?[]:z;return(0,v.jsx)(r.xuv,{children:(0,v.jsxs)(r.xuv,{sx:{display:"grid",gridTemplateRows:"1fr",gridTemplateColumns:"1fr",gap:27,marginBottom:40},children:[(0,v.jsxs)(r.xuv,{sx:{display:"grid",gridTemplateColumns:"1fr",gap:"40px"},children:[(0,v.jsxs)(r.xuv,{sx:(t={display:"grid",gridTemplateRows:"136px",gridTemplateColumns:"1fr 1fr 1fr",gap:20},(0,q.Z)(t,"@media (max-width: ".concat(r.Egj.sm,"px)"),{gridTemplateColumns:"1fr"}),(0,q.Z)(t,"@media (max-width: ".concat(r.Egj.md,"px)"),{marginBottom:0}),t),children:[(0,v.jsx)(ft,{children:(0,v.jsx)(ct,{label:"Buckets",icon:(0,v.jsx)(r.wNb,{}),counterValue:p?(0,h.nk)(p.buckets):0,actions:(0,v.jsx)(We.rU,{to:mt.gA.BUCKETS,style:{zIndex:3,textDecoration:"none",top:"40px",position:"relative",marginRight:"75px"},children:(0,v.jsx)(pt.Z,{tooltip:"Browse",children:(0,v.jsx)(r.zxk,{id:"browse-dashboard",onClick:function(){},label:"Browse",icon:(0,v.jsx)(r.LZ3,{}),variant:"regular",style:{padding:5,height:30,fontSize:14,marginTop:20}})})})})}),(0,v.jsx)(ft,{children:(0,v.jsx)(ct,{label:"Objects",icon:(0,v.jsx)(r.xpX,{}),counterValue:p?(0,h.nk)(p.objects):0})}),(0,v.jsx)(ft,{children:(0,v.jsx)(Ye.Z,{onlineCount:A.length,offlineCount:F.length,label:"Servers",icon:(0,v.jsx)(r.SBZ,{})})}),(0,v.jsx)(ft,{children:(0,v.jsx)(Ye.Z,{offlineCount:(null===p||void 0===p||null===(n=p.backend)||void 0===n?void 0:n.offlineDrives)||W.length,onlineCount:(null===p||void 0===p||null===(i=p.backend)||void 0===i?void 0:i.onlineDrives)||D.length,label:"Drives",icon:(0,v.jsx)(r.FU8,{})})}),(0,v.jsxs)(r.xuv,{withBorders:!0,sx:{gridRowStart:"1",gridRowEnd:"3",gridColumnStart:"3",padding:15,display:"grid",justifyContent:"stretch"},children:[(0,v.jsx)(ut,{usageValue:f,total:g.total,unit:g.unit}),(0,v.jsxs)(r.xuv,{sx:{display:"flex",flexFlow:"column",gap:"14px"},children:[(0,v.jsx)(Ce,{icon:(0,v.jsx)(r.lnI,{}),label:(0,v.jsxs)(r.xuv,{children:[(0,v.jsx)(r.xuv,{sx:(0,q.Z)({display:"inline"},"@media (max-width: ".concat(r.Egj.sm,"px)"),{display:"none"}),children:"Time since last"})," ","Heal Activity"]}),value:w}),(0,v.jsx)(Ce,{icon:(0,v.jsx)(r.EY8,{}),label:(0,v.jsxs)(r.xuv,{children:[(0,v.jsx)(r.xuv,{sx:(0,q.Z)({display:"inline"},"@media (max-width: ".concat(r.Egj.sm,"px)"),{display:"none"}),children:"Time since last"})," ","Scan Activity"]}),value:b}),(0,v.jsx)(Ce,{icon:(0,v.jsx)(r.oNq,{}),label:"Uptime",value:Z})]})]})]}),(0,v.jsxs)(r.xuv,{sx:(0,q.Z)({display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gap:"14px"},"@media (max-width: ".concat(r.Egj.lg,"px)"),{gridTemplateColumns:"1fr"}),children:[(0,v.jsx)(Ce,{icon:(0,v.jsx)(r.idV,{}),label:"Backend type",value:null!==(a=null===p||void 0===p||null===(l=p.backend)||void 0===l?void 0:l.backendType)&&void 0!==a?a:"Unknown"}),(0,v.jsx)(Ce,{icon:(0,v.jsx)(r.QaX,{}),label:"Standard storage class parity",value:null!==(o=null===p||void 0===p||null===(s=p.backend)||void 0===s||null===(d=s.standardSCParity)||void 0===d?void 0:d.toString())&&void 0!==o?o:"n/a"}),(0,v.jsx)(Ce,{icon:(0,v.jsx)(r.QaX,{}),label:"Reduced redundancy storage class parity",value:null!==(c=null===p||void 0===p||null===(x=p.backend)||void 0===x||null===(m=x.rrSCParity)||void 0===m?void 0:m.toString())&&void 0!==c?c:"n/a"})]}),(0,v.jsx)(r.xuv,{sx:{display:"grid",gridTemplateRows:"auto",gridTemplateColumns:"1fr",gap:"auto"},children:(0,v.jsx)(st,{data:T})})]}),"not configured"===(null===p||void 0===p?void 0:p.advancedMetricsStatus)&&(0,v.jsx)(r.xuv,{children:(0,v.jsx)(r.KfX,{iconComponent:(0,v.jsx)(r.a$2,{}),title:"We can\u2019t retrieve advanced metrics at this time.",help:(0,v.jsxs)(r.xuv,{children:[(0,v.jsx)(r.xuv,{sx:{fontSize:"14px"},children:"MinIO Dashboard will display basic metrics as we couldn\u2019t connect to Prometheus successfully. Please try again in a few minutes. If the problem persists, you can review your configuration and confirm that Prometheus server is up and running."}),(0,v.jsx)(r.xuv,{sx:{paddingTop:20,fontSize:14},children:(0,v.jsx)("a",{href:"https://min.io/docs/minio/linux/operations/monitoring/collect-minio-metrics-using-prometheus.html",target:"_blank",rel:"noopener",children:"Read more about Prometheus on our Docs site."})})]})})})]})})},ht=function(e){var t=e.apiPrefix,n=void 0===t?"admin":t,i=e.usage,x=(0,s.TL)(),m=(0,o.v9)((function(e){return e.dashboard.loadingUsage})),p=(0,o.v9)((function(e){return e.dashboard.zoom.openZoom})),f=(0,o.v9)((function(e){return e.dashboard.zoom.widgetRender})),g=(0,o.v9)(c.$4),h=!(null===g||void 0===g||!g.includes("object-browser-only")),j=!1;(null!==g&&void 0!==g&&g.includes("hide-menu")||h)&&(j=!0);var y,b=(0,l.useState)(null),w=(0,a.Z)(b,2),S=w[0],Z=w[1],T=(0,l.useState)(null),I=(0,a.Z)(T,2),E=I[0],N=I[1],F=C,k=(0,l.useState)("not configured"===(null===i||void 0===i?void 0:i.advancedMetricsStatus)?"info":"usage"),A=(0,a.Z)(k,2),L=A[0],B=A[1],W=function(e){return e.reduce((function(e,t,i){var a=t.columns,o=(void 0===a?[]:a).map((function(e,t){var a;return function(e,t){return(0,v.jsx)(l.Fragment,{children:e?(0,v.jsx)(l.Fragment,{children:(0,v.jsx)(r.xuv,{children:e.mergedPanels?(0,v.jsx)(Xe,{info:e,timeStart:S,timeEnd:E,loading:!0,apiPrefix:n}):Te(e,S,E,!0,n,p)})}):null},"widget-".concat(t))}((a=e.componentId,F.find((function(e){return e.id===a}))),"".concat(i,"-").concat(t))})),s=(0,v.jsx)(r.xuv,{sx:t.sx,children:o},"layout-row-".concat(i));return[].concat((0,u.Z)(e),[s])}),[])},z="not configured"===(null===i||void 0===i?void 0:i.advancedMetricsStatus),P=(0,v.jsx)(r.xuv,{sx:{marginBottom:20},children:"info"===L?(0,v.jsxs)(r.rjZ,{container:!0,children:[(0,v.jsx)(r.rjZ,{item:!0,children:(0,v.jsx)(r.xuv,{sx:{fontSize:18,lineHeight:2,fontWeight:700},children:"Server Information"})}),(0,v.jsx)(r.rjZ,{item:!0,xs:!0,children:(0,v.jsx)(r.rjZ,{container:!0,direction:"row-reverse",children:(0,v.jsx)(r.rjZ,{item:!0,children:(0,v.jsx)(r.zxk,{id:"sync",type:"button",variant:"callAction",onClick:function(){x((0,d.y)())},disabled:m,icon:(0,v.jsx)(r.bnu,{}),label:"Sync"})})})})]}):(0,v.jsx)(Be.Z,{timeStart:S,setTimeStart:Z,timeEnd:E,setTimeEnd:N,triggerSync:function(){x((0,D.JO)())}})}),R={tabConfig:{label:"Info",id:"info",disabled:!1},content:(0,v.jsxs)(l.Fragment,{children:[(!i||m)&&(0,v.jsx)(r.kod,{}),i&&!m&&(0,v.jsxs)(l.Fragment,{children:[P,(0,v.jsx)(gt,{usage:i})]})]})},U=[{tabConfig:{label:"Usage",id:"usage",disabled:z},content:(0,v.jsxs)(l.Fragment,{children:[P,(0,v.jsxs)(ke,{children:["unavailable"===(null===i||void 0===i?void 0:i.advancedMetricsStatus)&&(0,v.jsx)(r.KfX,{iconComponent:(0,v.jsx)(r.a$2,{}),title:"We can\u2019t retrieve advanced metrics at this time.",help:(0,v.jsx)(r.xuv,{sx:{fontSize:"14px"},children:"It looks like Prometheus is not available or reachable at the moment."})}),F.length?W(Ie):null]})]})},{tabConfig:{label:"Traffic",id:"traffic",disabled:z},content:(0,v.jsxs)(l.Fragment,{children:[P,(0,v.jsxs)(ke,{children:["unavailable"===(null===i||void 0===i?void 0:i.advancedMetricsStatus)&&(0,v.jsx)(r.KfX,{iconComponent:(0,v.jsx)(r.a$2,{}),title:"We can\u2019t retrieve advanced metrics at this time.",help:(0,v.jsx)(r.xuv,{sx:{fontSize:"14px"},children:"It looks like Prometheus is not available or reachable at the moment."})}),F.length?W(Ee):null]})]})},{tabConfig:{label:"Resources",id:"resources",disabled:z},content:(0,v.jsxs)(l.Fragment,{children:[P,(0,v.jsxs)(ke,{children:["unavailable"===(null===i||void 0===i?void 0:i.advancedMetricsStatus)&&(0,v.jsx)(r.KfX,{iconComponent:(0,v.jsx)(r.a$2,{}),title:"We can\u2019t retrieve advanced metrics at this time.",help:(0,v.jsx)(r.xuv,{sx:{fontSize:"14px"},children:"It looks like Prometheus is not available or reachable at the moment."})}),F.length?W(Ne):null,(0,v.jsx)("h2",{style:{margin:0,borderBottom:"1px solid #dedede"},children:"Advanced"}),F.length?W(Fe):null]})]})}];return y=z?[R].concat(U):[].concat(U,[R]),(0,v.jsxs)(r.Xgh,{sx:{padding:j?0:"2rem"},children:[p&&(0,v.jsx)(Le,{modalOpen:p,timeStart:S,timeEnd:E,widgetRender:0,value:f,apiPrefix:n}),(0,v.jsx)(r.mQc,{horizontal:!0,options:y,currentTabOrPath:L,onTabClick:function(e){B(e)}})]})},vt=n(47974),jt=n(99670),yt=function(){var e=(0,s.TL)(),t=(0,l.useState)(!0),n=(0,a.Z)(t,2),i=n[0],u=n[1],m=(0,o.v9)((function(e){return e.dashboard.usage})),p=(0,o.v9)(c.$4),f=!(null===p||void 0===p||!p.includes("object-browser-only")),g=!1;return(null!==p&&void 0!==p&&p.includes("hide-menu")||f)&&(g=!0),(0,l.useEffect)((function(){i&&(u(!1),e((0,d.y)()))}),[i,e]),(0,l.useEffect)((function(){e((0,x.Sc)("metrics"))}),[]),(0,v.jsxs)(l.Fragment,{children:[!g&&(0,v.jsx)(vt.Z,{label:"Metrics",actions:(0,v.jsx)(jt.Z,{})}),i?(0,v.jsx)(r.rjZ,{container:!0,children:(0,v.jsx)(r.rjZ,{item:!0,xs:12,children:(0,v.jsx)(r.kod,{})})}):(0,v.jsx)(ht,{usage:m})]})}}}]); -//# sourceMappingURL=8388.408870e9.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[8388],{63856:function(e,t,n){n(72791);var i=n(29945),a=n(64554),l=n(27197),r=n(32686),o=n(80705),s=n(80184),d=function(){return(0,s.jsx)(a.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{width:"10px",height:"10px"}},children:(0,s.jsx)(i.Q2V,{})})};t.Z=function(e){var t=e.timeStart,n=e.setTimeStart,c=e.timeEnd,x=e.setTimeEnd,u=e.triggerSync,m=e.label,p=void 0===m?"Filter:":m,f=e.startLabel,g=void 0===f?"Start Time:":f,h=e.endLabel,v=void 0===h?"End Time:":h;return(0,s.jsx)(i.rjZ,{item:!0,xs:12,sx:{"& .filter-date-input-label, .end-time-input-label":{display:"none"},"& .MuiInputBase-adornedEnd.filter-date-date-time-input":{width:"100%",border:"1px solid #eaeaea",paddingLeft:"8px",paddingRight:"8px",borderRadius:"1px"},"& .MuiInputAdornment-root button":{height:"20px",width:"20px",marginRight:"5px"},"& .filter-date-input-wrapper":{height:"30px",width:"100%","& .MuiTextField-root":{height:"30px",width:"90%","& input.Mui-disabled":{color:"#000000",WebkitTextFillColor:"#101010"}}}},children:(0,s.jsxs)(a.Z,{sx:{display:"grid",height:{md:"40px",xs:"auto"},alignItems:"center",gridTemplateColumns:{md:"auto 2fr auto",sm:"1fr"},padding:{md:"0",xs:" 5px"},gap:"5px"},children:[(0,s.jsx)(a.Z,{sx:{fontSize:"14px",fontWeight:500,marginRight:"5px"},children:p}),(0,s.jsxs)(a.Z,{sx:{display:"grid",height:{md:"40px",xs:"auto"},border:{md:"1px solid #eaeaea"},alignItems:"center",gridTemplateColumns:{md:"1fr 1fr",sm:"1fr"},gap:"8px",paddingLeft:"8px",paddingRight:"8px"},children:[(0,s.jsxs)(a.Z,{sx:{display:"grid",height:"30px",alignItems:"center",gridTemplateColumns:{xs:"12px auto 1fr"},gap:"5px"},children:[(0,s.jsx)(a.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{width:"10px",height:"10px",fill:"#B4B5B4"}},children:(0,s.jsx)(l.Z,{className:"min-icon"})}),(0,s.jsx)(a.Z,{sx:{fontSize:"12px",marginLeft:"8px"},children:g}),(0,s.jsx)(a.Z,{children:(0,s.jsx)(o.Z,{value:t,onChange:n,id:"stTime",classNamePrefix:"filter-date-",forFilterContained:!0,noInputIcon:!0,openPickerIcon:d})})]}),(0,s.jsxs)(a.Z,{sx:{display:"grid",height:"30px",alignItems:"center",gridTemplateColumns:{xs:"12px auto 1fr"},gap:"5px"},children:[(0,s.jsx)(a.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{width:"10px",height:"10px",fill:"#B4B5B4"}},children:(0,s.jsx)(r.Z,{className:"min-icon"})}),(0,s.jsx)(a.Z,{sx:{fontSize:"12px",marginLeft:"8px"},children:v}),(0,s.jsx)(a.Z,{children:(0,s.jsx)(o.Z,{value:c,onChange:x,id:"endTime",classNamePrefix:"filter-date-",forFilterContained:!0,noInputIcon:!0,openPickerIcon:d})})]})]}),u&&(0,s.jsx)(a.Z,{sx:{alignItems:"flex-end",display:"flex",justifyContent:"flex-end"},children:(0,s.jsx)(i.zxk,{id:"sync",type:"button",variant:"callAction",onClick:u,icon:(0,s.jsx)(i.bnu,{}),label:"Sync"})})]})})}},80705:function(e,t,n){var i=n(1413),a=n(72791),l=n(29945),r=n(20817),o=n(36571),s=n(80916),d=n(36612),c=n(63466),x=n(27197),u=n(11135),m=n(25787),p=n(23814),f=n(80184);t.Z=(0,m.Z)((function(e){return(0,u.Z)((0,i.Z)((0,i.Z)({dateSelectorOverride:{height:40,border:"#EAEDEE 1px solid",marginLeft:15,backgroundColor:"#fff",padding:"0 16px",borderRadius:5,"&.MuiInput-underline:hover:not(.Mui-disabled):before":{borderBottom:0},"&:hover":{borderColor:"#000","&:before, &:after":{borderColor:"transparent",borderBottom:0}},"&:before, &:after":{borderColor:"transparent",borderBottom:0},"& input":{fontSize:12,fontWeight:600,color:"#393939"}},dateSelectorFilterOverride:{width:180,height:42,marginLeft:20,padding:0,borderRadius:5,"&.MuiInput-underline:hover:not(.Mui-disabled):before":{borderBottom:0},"&:hover":{"&:before, &:after":{borderColor:"transparent",borderBottom:0}},"&:before, &:after":{borderColor:"transparent",borderBottom:0},"& input":{fontSize:12,fontWeight:"bold",color:"#081C42"},"@media (max-width: 900px)":{width:103}},dateSelectorFormOverride:{width:"100%",maxWidth:840},parentDateOverride:{flexGrow:1},textBoxContainer:{width:"calc(100% - 190px)"},openListIcon:{color:"#9D9E9D",width:8,marginTop:2},paperOverride:{"& .MuiCalendarPicker-root":{padding:"0 22px","& > div":{padding:0,"& > div > div.PrivatePickersFadeTransitionGroup-root:first-of-type":{color:"#0A224C",fontWeight:"bold"},"& > div > div.PrivatePickersFadeTransitionGroup-root:last-of-type":{color:"#9D9E9D","& + button.MuiButtonBase-root":{color:"#9D9E9D"}},"& > div:nth-child(2)":{"& > div":{width:0},"& > button.MuiButtonBase-root":{color:"#0A224C"}}}},"& .MuiTypography-root.MuiTypography-caption":{width:26,height:26,margin:5,color:"#BCBCBC",fontSize:10},"& button.MuiPickersDay-root":{fontWeight:"bold",width:26,height:26,margin:5,textAlign:"center","&.Mui-selected":{backgroundColor:e.palette.primary.main,color:"#fff"}},"& div.MuiPickersDay-hiddenDaySpacingFiller":{width:26,height:26,margin:5},"& div.PrivatePickersSlideTransition-root":{minHeight:240},"& div.MuiCalendarPicker-viewTransitionContainer":{borderTop:"#F0F3F5 1px solid"},"& .MuiClockPicker-arrowSwitcher":{marginRight:10,marginTop:-1,"& > div":{width:0},"& > button.MuiButtonBase-root":{color:"#0A224C"},"& + div > div":{width:255,height:255,backgroundColor:"#fff",marginTop:30,marginBottom:14,border:"#F0F3F5 3px solid","& > div:nth-child(2)":{backgroundColor:"#B4B5B4",width:12,height:12,"&::before":{content:"' '",width:35,height:35,display:"block",position:"absolute",border:"#F0F3F5 3px solid",top:-12,left:-12,borderRadius:"100%"}},"& > div:nth-child(3)":{backgroundColor:"#B4B5B4",width:4},"& > div:last-of-type":{marginTop:15,"& > span":{color:"#0A224C","&.Mui-selected":{color:"#fff"},"&[aria-label='1 hours'], &[aria-label='2 hours'], &[aria-label='3 hours'], &[aria-label='4 hours'], &[aria-label='5 hours'], &[aria-label='6 hours'], &[aria-label='7 hours'], &[aria-label='8 hours'], &[aria-label='9 hours'], &[aria-label='10 hours'], &[aria-label='11 hours'], &[aria-label='12 hours']":{fontWeight:"bold",fontSize:20,marginTop:-1}}}}}}},p.YI),p.Hr))}))((function(e){var t=e.value,n=e.onChange,u=e.classes,m=e.forSearchBlock,p=void 0!==m&&m,g=e.forFilterContained,h=void 0!==g&&g,v=e.label,j=e.tooltip,y=void 0===j?"":j,b=e.required,C=e.id,w=e.disabled,S=void 0!==w&&w,Z=e.noInputIcon,T=void 0!==Z&&Z,I=e.classNamePrefix,E=void 0===I?"":I,N=e.openPickerIcon,F={};T||(F={startAdornment:(0,f.jsx)(c.Z,{position:"start",children:(0,f.jsx)(x.Z,{})})}),h&&(F={endAdornment:(0,f.jsx)(c.Z,{position:"end",children:(0,f.jsx)(l.Q2V,{className:u.openListIcon})})});var k="".concat(E,"date-time-input ").concat(p?u.dateSelectorOverride:""," ").concat(h&&!p?u.dateSelectorFilterOverride:""),A=p?u.parentDateOverride:u.dateSelectorFormOverride,L=(0,f.jsx)(o._,{dateAdapter:d.Z,children:(0,f.jsx)(s.x,{value:t,onChange:n,InputProps:(0,i.Z)((0,i.Z)({},F),{},{className:k}),components:{OpenPickerIcon:N},label:"",className:A,disabled:S,renderInput:function(e){return(0,f.jsx)(r.Z,(0,i.Z)((0,i.Z)({id:C,variant:"standard"},e),{},{disabled:!0}))},ampm:!1,PopperProps:{className:u.paperOverride},inputFormat:"LL/dd/yyyy HH:mm"})});if(p)return L;var B=h?"":u.fieldContainer;return(0,f.jsx)(a.Fragment,{children:(0,f.jsxs)(l.rjZ,{item:!0,xs:12,className:"".concat(B," ").concat(E,"input-field-container"),sx:{display:"grid",gridAutoColumns:"max-content"},children:[""!==v&&(0,f.jsxs)(l.AZs,{htmlFor:C,children:[(0,f.jsxs)("span",{children:[v,b?"*":""]}),""!==y&&(0,f.jsx)("div",{className:u.tooltipContainer,children:(0,f.jsx)(l.ua7,{tooltip:y,placement:"top",children:(0,f.jsx)("div",{className:u.tooltip,children:(0,f.jsx)(l.byK,{})})})})]}),(0,f.jsx)(l.xuv,{className:"".concat(u.textBoxContainer," ").concat(E,"input-wrapper"),children:L})]})})}))},31300:function(e,t,n){var i=n(4942),a=(n(72791),n(17691)),l=n(26181),r=n.n(l),o=n(29945),s=n(80184),d=a.ZP.div((function(e){var t,n,a=e.theme;return{fontFamily:"Inter,sans-serif",maxWidth:"321px",display:"flex",marginLeft:"auto",marginRight:"auto",cursor:"default",color:r()(a,"signalColors.main","#07193E"),"& .mainBox":(n={flex:1,display:"flex",padding:"0 8px 0 8px"},(0,i.Z)(n,"@media (max-width: ".concat(o.Egj.sm,"px)"),{padding:"0 10px 0 10px"}),(0,i.Z)(n,"& .indicatorIcon",{width:"20px",height:"20px",marginTop:"8px",maxWidth:"26px","& .min-icon":{width:"16px",height:"16px"}}),(0,i.Z)(n,"& .indicatorContainer",{flex:1,display:"flex",flexFlow:"column","& .indicatorLabel":{fontSize:"16px",fontWeight:600},"& .counterIndicator":(t={display:"flex",alignItems:"center",gap:"5px",justifyContent:"space-between",paddingBottom:0,fontSize:"55px"},(0,i.Z)(t,"@media (max-width: ".concat(o.Egj.sm,"px)"),{paddingBottom:10,fontSize:"35px"}),(0,i.Z)(t,"@media (max-width: ".concat(o.Egj.lg,"px)"),{fontSize:"45px"}),(0,i.Z)(t,"@media (max-width: ".concat(o.Egj.xl,"px)"),{fontSize:"50px"}),(0,i.Z)(t,"flexFlow","row"),(0,i.Z)(t,"fontWeight",600),(0,i.Z)(t,"& .stat-text",{color:r()(a,"mutedText","#87888D"),fontSize:"12px",marginTop:"8px"}),(0,i.Z)(t,"& .stat-value",{textAlign:"center",height:"50px"}),(0,i.Z)(t,"& .min-icon",{marginRight:"8px",marginTop:"8px",height:"10px",width:"10px"}),t),"& .onlineCounter":{display:"flex",alignItems:"center",marginTop:"5px","& .min-icon":{fill:r()(a,"signalColors.good","#4CCB92")}},"& .offlineCount":{display:"flex",alignItems:"center",marginTop:"8px","& .min-icon":{fill:r()(a,"signalColors.danger","#C51B3F")}}}),n)}}));t.Z=function(e){var t=e.onlineCount,n=void 0===t?0:t,i=e.offlineCount,a=void 0===i?0:i,l=e.icon,r=void 0===l?null:l,c=e.label,x=void 0===c?"":c,u=e.okStatusText,m=void 0===u?"Online":u,p=e.notOkStatusText,f=void 0===p?"Offline":p;return(0,s.jsx)(d,{children:(0,s.jsxs)(o.xuv,{className:"mainBox",children:[(0,s.jsxs)(o.xuv,{className:"indicatorContainer",children:[(0,s.jsx)(o.xuv,{className:"indicatorLabel",children:x}),(0,s.jsxs)(o.xuv,{className:"counterIndicator",children:[(0,s.jsxs)(o.xuv,{children:[(0,s.jsx)(o.xuv,{className:"stat-value",children:n}),(0,s.jsxs)(o.xuv,{className:"onlineCounter",children:[(0,s.jsx)(o.J$M,{}),(0,s.jsx)("div",{className:"stat-text",children:m})]})]}),(0,s.jsxs)(o.xuv,{children:[(0,s.jsx)(o.xuv,{className:"stat-value",children:a}),(0,s.jsxs)(o.xuv,{className:"offlineCount",children:[(0,s.jsx)(o.J$M,{})," ",(0,s.jsx)("div",{className:"stat-text",children:f})]})]})]})]}),(0,s.jsx)(o.xuv,{className:"indicatorIcon",children:r})]})})}},879:function(e,t,n){n.d(t,{D_:function(){return r},Et:function(){return a},GJ:function(){return l},yh:function(){return i}});var i={RED:"#C83B51",GREEN:"#4CCB92",YELLOW:"#FFBD62"},a=function(e,t){return e<=t/2?"bad":2!==t&&e===t/2+1?"warn":e===t?"good":void 0},l=function(e){switch(e){case"offline":return"bad";case"online":return"good";default:return"warn"}},r=function(e,t){return e<=t/2?"bad":e===t/2+1?"warn":e===t?"good":void 0}},8388:function(e,t,n){n.r(t),n.d(t,{default:function(){return yt}});var i,a=n(29439),l=n(72791),r=n(29945),o=n(78687),s=n(44690),d=n(32110),c=n(46078),x=n(87995),u=n(93433),m=n(1413),p=n(26181),f=n.n(p),g=function(e){return e.singleValue="singleValue",e.linearGraph="linearGraph",e.areaGraph="areaGraph",e.barChart="barChart",e.pieChart="pieChart",e.singleRep="singleRep",e.simpleWidget="simpleWidget",e}({}),h=n(45248),v=n(80184),j=["#C4D4E9","#DCD1EE","#D1EEE7","#EEDED1","#AAF38F","#F9E6C5","#C83B51","#F4CECE","#D6D6D6"],y=function(e){return(0,h.v1)(e,"ns")},b=function(e){return parseInt(e).toString(10)},C=[{id:1,title:"Uptime",data:"N/A",type:g.simpleWidget,widgetIcon:(0,v.jsx)(r.oNq,{}),labelDisplayFunction:h.v1},{id:50,title:"Capacity",data:[],dataOuter:[{name:"outer",value:100}],widgetConfiguration:{outerChart:{colorList:["#9c9c9c"],innerRadius:0,outerRadius:0,startAngle:0,endAngle:0},innerChart:{colorList:j,innerRadius:20,outerRadius:50,startAngle:90,endAngle:-200}},type:g.pieChart,innerLabel:"N/A",labelDisplayFunction:h.ae},{id:51,title:"Usable Capacity",data:[],dataOuter:[{name:"outer",value:100}],widgetConfiguration:{outerChart:{colorList:["#9c9c9c"],innerRadius:0,outerRadius:0,startAngle:0,endAngle:0},innerChart:{colorList:j,innerRadius:20,outerRadius:50,startAngle:90,endAngle:-200}},type:g.pieChart,innerLabel:"N/A",labelDisplayFunction:h.ae},{id:68,title:"Data Usage Growth",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:g.areaGraph,yAxisFormatter:h.ae,xAxisFormatter:h.Ue},{id:52,title:"Object size distribution",data:[],widgetConfiguration:[{dataKey:"a",color:"#2781B0",background:{fill:"#EEF1F4"},greatestColor:"#081C42"}],customStructure:[{originTag:"LESS_THAN_1024_B",displayTag:"Less than 1024B"},{originTag:"BETWEEN_1024_B_AND_1_MB",displayTag:"Between 1024B and 1MB"},{originTag:"BETWEEN_1_MB_AND_10_MB",displayTag:"Between 1MB and 10MB"},{originTag:"BETWEEN_10_MB_AND_64_MB",displayTag:"Between 10MB and 64MB"},{originTag:"BETWEEN_64_MB_AND_128_MB",displayTag:"Between 64MB and 128MB"},{originTag:"BETWEEN_128_MB_AND_512_MB",displayTag:"Between 128MB and 512MB"},{originTag:"GREATER_THAN_512_MB",displayTag:"Greater than 512MB"}],type:g.barChart},{id:66,title:"Buckets",data:[],innerLabel:"N/A",type:g.singleRep,color:"#0071BC",fillColor:"#ADD5E0"},{id:44,title:"Objects",data:[],innerLabel:"N/A",type:g.singleRep,color:"#0071BC",fillColor:"#ADD5E0"},{id:63,title:"API Data Received Rate",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000",strokeWidth:3}],type:g.linearGraph,xAxisFormatter:h.Ue,yAxisFormatter:h.ae},{id:61,title:"Total Open FDs",data:[],innerLabel:"N/A",type:g.singleRep,color:"#22B573",fillColor:"#A6E8C4"},{id:62,title:"Total Goroutines",data:[],innerLabel:"N/A",type:g.singleRep,color:"#F7655E",fillColor:"#F4CECE"},{id:77,title:"Node CPU Usage",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:g.linearGraph,yAxisFormatter:b,xAxisFormatter:h.Ue},{id:60,title:"API Request Rate",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:g.linearGraph,yAxisFormatter:b,xAxisFormatter:h.Ue},{id:70,title:"API Data Sent Rate",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:g.linearGraph,xAxisFormatter:h.Ue,yAxisFormatter:h.ae},{id:17,title:"Internode Data Transfer",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:g.linearGraph,yAxisFormatter:h.ae,xAxisFormatter:h.Ue},{id:73,title:"Node IO",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:g.linearGraph,yAxisFormatter:h.ae,xAxisFormatter:h.Ue},{id:80,title:"Time Since Last Heal Activity",data:"N/A",type:g.simpleWidget,widgetIcon:(0,v.jsx)(r.lnI,{}),labelDisplayFunction:y},{id:81,title:"Time Since Last Scan Activity",data:"N/A",type:g.simpleWidget,widgetIcon:(0,v.jsx)(r.MXM,{}),labelDisplayFunction:y},{id:71,title:"API Request Error Rate",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:g.linearGraph,xAxisFormatter:h.Ue},{id:76,title:"Node Memory Usage",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:g.linearGraph,xAxisFormatter:h.Ue,yAxisFormatter:h.ae},{id:74,title:"Drive Used Capacity",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:g.linearGraph,xAxisFormatter:h.Ue,yAxisFormatter:h.ae},{id:82,title:"Drives Free Inodes",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:g.linearGraph,disableYAxis:!0,xAxisFormatter:h.Ue},{id:11,title:"Node Syscalls",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:g.linearGraph,yAxisFormatter:b,xAxisFormatter:h.Ue},{id:8,title:"Node File Descriptors",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:g.linearGraph,yAxisFormatter:b,xAxisFormatter:h.Ue},{id:500,mergedPanels:[{id:53,title:"Online",data:"N/A",type:g.singleValue},{id:69,title:"Offline",data:"N/A",type:g.singleValue}],title:"Servers"},{id:501,mergedPanels:[{id:9,title:"Online",data:"N/A",type:g.singleValue},{id:78,title:"Offline",data:"N/A",type:g.singleValue}],title:"Drives"},{id:502,mergedPanels:[{id:65,title:"Upload",data:"N/A",type:g.singleValue,labelDisplayFunction:h.ae},{id:64,title:"Download",data:"N/A",type:g.singleValue,labelDisplayFunction:h.ae}],title:"Network"}],w=function(e,t){if(0===e.length)return["","0"];if("mean"===t){var n=e.reduce((function(e,t){return e+parseFloat(t[1])}),0);return["",Math.floor(n/e.length).toString()]}var i=e.sort((function(e,t){return e[0]-t[0]}));return i[i.length-1]},S=function(e,t){if(!e)return t;var n=e.type;switch(t.type){case g.singleValue:case g.simpleWidget:if("stat"===n||"singlestat"===n){var i=f()(e,"targets[0].result[0].values",[]);null===i&&(i=[]);var a=f()(e,"options.reduceOptions.calcs[0]","lastNotNull"),l=w(i,a),r=t.labelDisplayFunction?t.labelDisplayFunction(l[1]):l[1];return(0,m.Z)((0,m.Z)({},t),{},{data:r})}break;case g.pieChart:if("gauge"===n){var o=f()(e,"options.reduceOptions.calcs[0]","lastNotNull"),s=f()(e,"targets",[]).filter((function(e){return null!==e})),d=s.map((function(e){var t=(e.result&&Array.isArray(e.result)?e.result:[]).map((function(t){var n=f()(t,"values",[]),i=Object.keys(t.metric),a=n.sort((function(e,t){return parseInt(e[0][1])-parseInt(t[0][1])})),l=t.metric[i[0]],r=a[a.length-1];return{name:l,value:parseInt(r[1]),legend:e.legendFormat}}));return t})),c=s[0].result&&s[0].result.length>0?s[0].result[0].values:[],x=w(c,o),u=t.labelDisplayFunction?t.labelDisplayFunction(x[1]):x[1];return(0,m.Z)((0,m.Z)({},t),{},{data:d,innerLabel:u})}break;case g.linearGraph:case g.areaGraph:if("graph"===n){var p=f()(e,"targets",[]);null===p&&(p=[]);var v=[],y=[];p.forEach((function(e,t){var n=f()(e,"result",[]),i=e.legendFormat;null===n&&(n=[]),n.forEach((function(e){var n=function(e,t){var n=Object.keys(e),i=new RegExp("{{(".concat(n.join("|"),")}}"),"g"),a=t.replace(i,(function(t){var n=t.replace(/({{|}})/g,"");return e[n]})),l=(a.match(/{{/g)||[]).length,r=(a.match(/}}/g)||[]).length,o=a.replace(/{{(.*?)}}/g,"");return l===r&&0!==l&&0!==r&&(n.forEach((function(t){a=a.replace(t,e[t])})),o=a),o}(e.metric,i),a="key_".concat(t).concat(n);v.push({dataKey:a,keyLabel:n,lineColor:"",fillColor:""});var l=f()(e,"values",[]);null===l&&(l=[]),l.forEach((function(e){var t=y.findIndex((function(t){return t.name===e[0]}));if(-1===t){var n={name:e[0]};n[a]=e[1],y.push(n)}else y[t][a]=e[1]}))}))}));var b=v.sort((function(e,t){return e.keyLabelt.keyLabel?1:0})).map((function(e,t){return(0,m.Z)((0,m.Z)({},e),{},{lineColor:j[t]||(0,h.C5)(e.keyLabel),fillColor:j[t]||(0,h.C5)(e.keyLabel)})})),C=y.sort((function(e,t){return e.name-t.name}));return(0,m.Z)((0,m.Z)({},t),{},{widgetConfiguration:b,data:C})}break;case g.barChart:if("bargauge"===n){var S=f()(e,"targets[0].result",[]);null===S&&(S=[]);var Z=function(e,t){return e[0]-t[0]},T=[];return T=t.customStructure?t.customStructure.map((function(e){var t=S.find((function(t){return t.metric.range===e.originTag})),n=f()(t,"values",[]).sort(Z),i=n[n.length-1]||["","0"];return{name:e.displayTag,a:parseInt(i[1])}})):S.map((function(e){var t=Object.keys(e.metric),n=e.metric[t[0]],i=f()(e,"values",[]).sort(Z),a=i[i.length-1]||["","0"];return{name:n,a:parseInt(a[1])}})),(0,m.Z)((0,m.Z)({},t),{},{data:T})}break;case g.singleRep:if("stat"===n){var I=f()(e,"targets[0].result[0].values",[]);null===I&&(I=[]);var E=f()(e,"options.reduceOptions.calcs[0]","lastNotNull"),N=w(I,E),F=I.sort((function(e,t){return e[0]-t[0]})),k=[];1===F.length&&k.push({value:0}),F.forEach((function(e){k.push({value:parseInt(e[1])})}));var A=t.labelDisplayFunction?t.labelDisplayFunction(N[1]):N[1];return(0,m.Z)((0,m.Z)({},t),{},{data:k,innerLabel:A})}}return t},Z=function(e){var t=e.split(" "),n=function(){var t=e;return isNaN(parseFloat(e))||(t=(0,h.nk)(parseFloat(e))),(0,v.jsx)(l.Fragment,{children:t})};return 2!==t.length?n():h.Dl.includes(t[1])?(0,v.jsxs)("span",{className:"commonValue",children:[t[0],(0,v.jsx)("span",{className:"unitText",children:t[1]})]}):n()},T=n(17691),I=n(20601),E=n(38725),N=n(90466),F=n(12891),k=n(57702),A=n(41048),L=n(35667),B=n(23814),W=n(64119),z=n(64554),D=n(71080),P=function(e){var t=e.panelItem,n=(0,s.TL)();return(0,v.jsx)(z.Z,{sx:{alignItems:"right",gap:"10px","& .link-text":{color:"#2781B0",fontSize:"12px",fontWeight:600},"& .zoom-graph-icon":{backgroundColor:"transparent",border:0,padding:0,cursor:"pointer","& svg":{color:"#D0D0D0",height:16},"&:hover":{"& svg":{color:"#404143"}}}},children:(0,v.jsx)("button",{onClick:function(){n((0,D.xG)(t))},className:"zoom-graph-icon",children:(0,v.jsx)(W.Z,{})})})},R=n(80911),U=n(77865),M=n(49900),O=n(91097),G=function(e){var t=e.title,n=e.componentRef,i=e.data,o=l.useState(null),d=(0,a.Z)(o,2),c=d[0],u=d[1],m=Boolean(c),p=(0,s.TL)(),f=function(){var e;null!==i&&i.length>0?function(e,t){var n=document.createElement("a");n.setAttribute("href","data:text/plain;charset=utf-8,"+t),n.setAttribute("download",e),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n)}(null!==t?(t+"_"+Date.now().toString()+".csv").replace(/\s+/g,"").trim().toLowerCase():"widgetData_"+Date.now().toString()+".csv",(e=i,[Object.keys(e[0])].concat(e).map((function(e){return Object.values(e).toString()})).join("\n"))):function(e){p((0,x.Ih)(e))}({errorMessage:"Unable to download widget data",detailedError:"Unable to download widget data - data not available"})};return(0,v.jsx)(l.Fragment,{children:(0,v.jsxs)(z.Z,{justifyItems:"center",sx:{"& .download-icon":{backgroundColor:"transparent",border:0,padding:0,cursor:"pointer","& svg":{color:"#D0D0D0",height:16},"&:hover":{"& svg":{color:"#404143"}}}},children:[(0,v.jsx)("button",{onClick:function(e){u(e.currentTarget)},className:"download-icon",children:(0,v.jsx)(r._8t,{})}),(0,v.jsxs)(R.Z,{id:"download-widget-main-menu","aria-labelledby":"download-widget-main",anchorEl:c,open:m,onClose:function(){u(null)},children:[(0,v.jsx)(U.Z,{onClick:function(){f()},children:(0,v.jsx)(M.Z,{children:"Download as CSV"})}),(0,v.jsx)(U.Z,{onClick:function(){!function(){if(null!==t){var e=(t+"_"+Date.now().toString()+".png").replace(/\s+/g,"").trim().toLowerCase();(0,O.exportComponentAsPNG)(n,{fileName:e})}else{var i="widgetData_"+Date.now().toString()+".png";(0,O.exportComponentAsPNG)(n,{fileName:i})}}()},children:(0,v.jsx)(M.Z,{children:"Download as PNG"})})]})]})})},_=n(11135),V=n(25787),K=(0,V.Z)((function(e){return(0,_.Z)((0,m.Z)({},B.Rp))}))((function(e){var t=e.active,n=e.payload,i=e.label,a=e.barChartConfiguration,l=e.classes;return t?(0,v.jsxs)("div",{className:l.customTooltip,children:[(0,v.jsx)("div",{className:l.timeStampTitle,children:i}),n&&n.map((function(e,t){return(0,v.jsxs)("div",{className:l.labelContainer,children:[(0,v.jsx)("div",{className:l.labelColor,style:{backgroundColor:a[t].color}}),(0,v.jsx)("div",{className:l.itemValue,children:(0,v.jsx)("span",{className:l.valueContainer,children:e.value})})]},"pltiem-".concat(t,"-").concat(i))}))]}):null})),H=n(81207),$=T.ZP.div((function(e){var t=e.theme;return(0,m.Z)((0,m.Z)({},(0,B.NP)(t)),{},{loadingAlign:{width:"100%",paddingTop:"15px",textAlign:"center",margin:"auto"}})})),J=function(e){var t=e.y,n=e.payload;return(0,v.jsx)("text",{width:50,fontSize:"69.7%",textAnchor:"start",fill:"#333",transform:"translate(5,".concat(t,")"),fontWeight:400,dy:3,children:n.value})},X=function(e){var t=e.title,n=e.panelItem,i=e.timeStart,d=e.timeEnd,c=e.apiPrefix,u=e.zoomActivated,m=void 0!==u&&u,p=(0,s.TL)(),f=(0,l.useState)(!1),g=(0,a.Z)(f,2),h=g[0],j=g[1],y=(0,l.useState)([]),b=(0,a.Z)(y,2),C=b[0],w=b[1],Z=(0,l.useState)(null),T=(0,a.Z)(Z,2),B=T[0],W=T[1],z=(0,l.useState)(!1),D=(0,a.Z)(z,2),R=D[0],U=D[1],M=(0,l.useState)(window.innerWidth>=r.Egj.md),O=(0,a.Z)(M,2),_=O[0],V=O[1],X=(0,l.useRef)(),Y=(0,o.v9)((function(e){return e.dashboard.widgetLoadVersion}));(0,l.useEffect)((function(){j(!0)}),[Y]),(0,l.useEffect)((function(){var e=function(){var e=!1;window.innerWidth>=r.Egj.md&&(console.log("Bigger"),e=!0),V(e)};return window.addEventListener("resize",e),function(){window.removeEventListener("resize",e)}}),[]),(0,l.useEffect)((function(){if(h){var e=0;if(null!==i&&null!==d){var t=d.toUnixInteger()-i.toUnixInteger(),a=Math.floor(t/60);e=a<1?15:a}H.Z.invoke("GET","/api/v1/".concat(c,"/info/widgets/").concat(n.id,"/?step=").concat(e,"&").concat(null!==i?"&start=".concat(i.toUnixInteger()):"").concat(null!==i&&null!==d?"&":"").concat(null!==d?"end=".concat(d.toUnixInteger()):"")).then((function(e){var t=S(e,n);w(t.data),W(t),j(!1)})).catch((function(e){p((0,x.Ih)(e)),j(!1)}))}}),[h,n,d,i,p,c]);var q=B?B.widgetConfiguration:[],Q=0,ee=0;if(1===q.length){var te=q[0];C.forEach((function(e,t){e[te.dataKey]>ee&&(ee=e[te.dataKey],Q=t)}))}return(0,v.jsx)($,{children:(0,v.jsxs)(r.xuv,{className:m?"":"singleValueContainer",onMouseOver:function(){U(!0)},onMouseLeave:function(){U(!1)},children:[!m&&(0,v.jsxs)(r.rjZ,{container:!0,children:[(0,v.jsx)(r.rjZ,{item:!0,xs:10,sx:{alignItems:"start",justifyItems:"start"},children:(0,v.jsx)("div",{className:"titleContainer",children:t})}),(0,v.jsx)(r.rjZ,{item:!0,xs:1,sx:{display:"flex",justifyContent:"flex-end"},children:R&&(0,v.jsx)(P,{panelItem:n})}),(0,v.jsx)(r.rjZ,{item:!0,xs:1,sx:{display:"flex",justifyContent:"flex-end"},children:(0,v.jsx)(G,{title:t,componentRef:X,data:C})})]}),h&&(0,v.jsx)(r.xuv,{className:"loadingAlign",children:(0,v.jsx)(r.aNw,{})}),!h&&(0,v.jsx)("div",{ref:X,className:m?"zoomChartCont":"contentContainer",children:(0,v.jsx)(I.h,{width:"99%",children:(0,v.jsxs)(E.v,{data:C,layout:"vertical",barCategoryGap:1,children:[(0,v.jsx)(N.K,{type:"number",hide:!0}),(0,v.jsx)(F.B,{dataKey:"name",type:"category",interval:0,tick:(0,v.jsx)(J,{}),tickLine:!1,axisLine:!1,width:150,hide:!_,style:{fontSize:"12px",fontWeight:100}}),q.map((function(e){return(0,v.jsx)(k.$,{dataKey:e.dataKey,fill:e.color,background:e.background,barSize:m?25:12,children:1===q.length?(0,v.jsx)(l.Fragment,{children:C.map((function(t,n){return(0,v.jsx)(A.b,{fill:n===Q?e.greatestColor:e.color},"chart-bar-".concat(n.toString()))}))}):null},"bar-".concat(e.dataKey))})),(0,v.jsx)(L.u,{cursor:{fill:"rgba(255, 255, 255, 0.3)"},content:(0,v.jsx)(K,{barChartConfiguration:q})})]})})})]})})},Y=n(37762),q=n(4942),Q=n(28265),ee=n(82839),te=n(18602),ne=(0,V.Z)((function(e){return(0,_.Z)((0,m.Z)({},B.Rp))}))((function(e){var t=e.active,n=e.payload,i=e.label,a=e.linearConfiguration,l=e.yAxisFormatter,r=e.classes;return t?(0,v.jsxs)("div",{className:r.customTooltip,children:[(0,v.jsx)("div",{className:r.timeStampTitle,children:(0,h.Ue)(i,!0)}),n&&n.map((function(e,t){return(0,v.jsxs)("div",{className:r.labelContainer,children:[(0,v.jsx)("div",{className:r.labelColor,style:{backgroundColor:a[t].lineColor}}),(0,v.jsx)("div",{className:r.itemValue,children:(0,v.jsxs)("span",{className:r.valueContainer,children:[a[t].keyLabel,":"," ",l(e.value)]})})]},"lbPl-".concat(t,"-").concat(a[t].keyLabel))}))]}):null})),ie=T.ZP.div((function(e){var t=e.theme;return(0,m.Z)((0,m.Z)({},(0,B.NP)(t)),{},{"& .chartCont":{position:"relative",height:140,width:"100%"},"& .legendChart":(0,q.Z)({display:"flex",flexDirection:"column",flex:"0 1 auto",maxHeight:130,margin:0,overflowY:"auto",position:"relative",textAlign:"center",width:"100%",justifyContent:"flex-start",color:f()(t,"mutedText","#87888d"),fontWeight:"bold",fontSize:12},"@media (max-width: ".concat(r.Egj.md,"px)"),{display:"none"}),"& .loadingAlign":{width:40,height:40,textAlign:"center",margin:"15px auto"}})})),ae=function(e){var t=e.title,n=e.timeStart,i=e.timeEnd,d=e.panelItem,c=e.apiPrefix,u=e.hideYAxis,p=void 0!==u&&u,f=e.areaWidget,g=void 0!==f&&f,h=e.yAxisFormatter,j=void 0===h?function(e){return e}:h,y=e.xAxisFormatter,b=void 0===y?function(e,t,n){return e}:y,C=e.zoomActivated,w=void 0!==C&&C,Z=(0,s.TL)(),T=(0,l.useState)(!1),E=(0,a.Z)(T,2),k=E[0],A=E[1],B=(0,l.useState)(!1),W=(0,a.Z)(B,2),z=W[0],D=W[1],R=(0,l.useState)([]),U=(0,a.Z)(R,2),M=U[0],O=U[1],_=(0,l.useState)([]),V=(0,a.Z)(_,2),K=V[0],$=V[1],J=(0,l.useState)(0),X=(0,a.Z)(J,2),ae=X[0],le=X[1],re=(0,l.useState)(null),oe=(0,a.Z)(re,2),se=oe[0],de=oe[1],ce=(0,o.v9)((function(e){return e.dashboard.widgetLoadVersion})),xe=(0,l.useRef)(null);(0,l.useEffect)((function(){A(!0)}),[ce]),(0,l.useEffect)((function(){if(k){var e=0;if(null!==n&&null!==i){var t=i.toUnixInteger()-n.toUnixInteger(),a=Math.floor(t/60);e=a<1?15:a}H.Z.invoke("GET","/api/v1/".concat(c,"/info/widgets/").concat(d.id,"/?step=").concat(e,"&").concat(null!==n?"&start=".concat(n.toUnixInteger()):"").concat(null!==n&&null!==i?"&":"").concat(null!==i?"end=".concat(i.toUnixInteger()):"")).then((function(e){var t=S(e,d);O(t.data),de(t),A(!1);var n,i=0,a=(0,Y.Z)(t.data);try{for(a.s();!(n=a.n()).done;){var l=n.value;for(var r in l)if("name"!==r){var o=parseInt(l[r]);isNaN(o)&&(o=0),i5&&void 0!==arguments[5]&&arguments[5];switch(e.type){case g.singleValue:return(0,v.jsx)(ve,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,apiPrefix:a});case g.simpleWidget:var r,o=null;return 80===e.id?o=we:81===e.id?o=Se:1===e.id&&(o=Ze),[80,81,1].includes(e.id)&&(r=function(e){var t=e.valueToRender,n=e.loading,i=e.title,a=e.id,l=e.iconWidget;return(0,v.jsx)(o,{valueToRender:t,loading:n,title:i,id:a,iconWidget:l})}),(0,v.jsx)(ce,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,apiPrefix:a,iconWidget:e.widgetIcon,renderFn:r});case g.pieChart:return 50===e.id?(0,v.jsx)(xe,{children:(0,v.jsx)(ye,{value:e,timeStart:t,timeEnd:n,apiPrefix:a})}):(0,v.jsx)(se,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,apiPrefix:a});case g.linearGraph:case g.areaGraph:return(0,v.jsx)(ae,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,hideYAxis:e.disableYAxis,xAxisFormatter:e.xAxisFormatter,yAxisFormatter:e.yAxisFormatter,apiPrefix:a,areaWidget:e.type===g.areaGraph,zoomActivated:l});case g.barChart:return(0,v.jsx)(X,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,apiPrefix:a,zoomActivated:l});case g.singleRep:var s=e.fillColor?e.fillColor:e.color;return(0,v.jsx)(ge,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:i,color:e.color,fillColor:s,apiPrefix:a});default:return null}},Ie=[{sx:(i={minWidth:0,display:"grid",gap:"30px",gridTemplateColumns:"1fr 1fr 1fr 1fr"},(0,q.Z)(i,"@media (max-width: ".concat(r.Egj.sm,"px)"),{gridTemplateColumns:"1fr"}),(0,q.Z)(i,"@media (max-width: ".concat(r.Egj.md,"px)"),{gridTemplateColumns:"1fr 1fr"}),i),columns:[{componentId:66},{componentId:44},{componentId:500},{componentId:501}]},{sx:(0,q.Z)({display:"grid",minWidth:0,gap:"30px",gridTemplateColumns:"1fr 1fr"},"@media (max-width: ".concat(r.Egj.md,"px)"),{gridTemplateColumns:"1fr"}),columns:[{componentId:50},{componentId:502}]},{sx:(0,q.Z)({display:"grid",minWidth:0,gap:"30px",gridTemplateColumns:"1fr 1fr 1fr"},"@media (max-width: ".concat(r.Egj.md,"px)"),{gridTemplateColumns:"1fr"}),columns:[{componentId:80},{componentId:81},{componentId:1}]},{sx:(0,q.Z)({display:"grid",minWidth:0,gap:"30px",gridTemplateColumns:"1fr 1fr"},"@media (max-width: ".concat(r.Egj.md,"px)"),{gridTemplateColumns:"1fr"}),columns:[{componentId:68},{componentId:52}]},{sx:(0,q.Z)({display:"grid",minWidth:0,gap:"30px",gridTemplateColumns:"1fr 1fr"},"@media (max-width: ".concat(r.Egj.md,"px)"),{gridTemplateColumns:"1fr"}),columns:[{componentId:63},{componentId:70}]}],Ee=[{sx:{display:"grid",gridTemplateColumns:"1fr",gap:"30px"},columns:[{componentId:60}]},{sx:(0,q.Z)({display:"grid",minWidth:0,gap:"30px",gridTemplateColumns:"1fr 1fr"},"@media (max-width: ".concat(r.Egj.md,"px)"),{gridTemplateColumns:"1fr"}),columns:[{componentId:71,sx:{flex:1,width:"50%",flexShrink:0}},{componentId:17,sx:{flex:1,width:"50%",flexShrink:0}}]},{sx:{display:"grid",gridTemplateColumns:"1fr",gap:"30px"},columns:[{componentId:73}]}],Ne=[{sx:{display:"grid",minWidth:0,gridTemplateColumns:"1fr 1fr",gap:"30px"},columns:[{componentId:76},{componentId:77}]},{sx:{display:"grid",minWidth:0,gridTemplateColumns:"1fr 1fr",gap:"30px"},columns:[{componentId:82},{componentId:74}]}],Fe=[{sx:{display:"grid",minWidth:0,gridTemplateColumns:"1fr 1fr",gap:"30px"},columns:[{componentId:11},{componentId:8}]}],ke=function(e){var t=e.children;return(0,v.jsx)(r.xuv,{sx:{display:"grid",gridTemplateColumns:"1fr",gap:"30px"},children:t})},Ae=n(56028),Le=function(e){var t=e.value,n=e.modalOpen,i=e.timeStart,a=e.timeEnd,r=e.apiPrefix,o=(0,s.TL)();return t?(0,v.jsx)(Ae.Z,{title:t.title,onClose:function(){o((0,D.jv)())},modalOpen:n,wideLimit:!1,sx:{padding:0},children:(0,v.jsx)(l.Fragment,{children:Te(t,i,a,!0,r,!0)})}):null},Be=n(63856),We=n(11087),ze=T.ZP.div((function(e){var t=e.theme;return(0,m.Z)((0,m.Z)({},(0,B.NP)(t)),{},{"& .metricText":{fontSize:70,lineHeight:1.1,color:f()(t,"signalColors.main","#07193E"),fontWeight:"bold"},"& .unitText":{fontSize:10,color:f()(t,"mutedText","#87888d"),fontWeight:"normal"},"& .subHeaderContainer":{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center"},"& .subMessage":{fontSize:10,color:f()(t,"mutedText","#87888d"),"&.bold":{fontWeight:"bold"}},"& .headerContainer":{display:"flex",justifyContent:"space-between"},"& .viewAll":{fontSize:10,color:f()(t,"signalColors.danger","#C83B51"),textTransform:"capitalize","& a, & a:hover, & a:visited, & a:active":{color:f()(t,"signalColors.danger","#C83B51")}}})})),De=function(e){var t=e.title,n=e.metricValue,i=e.metricUnit,a=e.subMessage,o=e.moreLink,s=e.rightComponent,d=e.extraMargin,c=void 0!==d&&d,x=function(){return(0,v.jsx)(l.Fragment,{children:(0,v.jsxs)("div",{className:"subHeaderContainer",children:[(0,v.jsxs)("div",{className:"leftSide",children:[(0,v.jsx)("div",{children:(0,v.jsxs)("span",{className:"metricText",children:[n,(0,v.jsx)("span",{className:"unitText",children:i})]})}),a&&(0,v.jsx)(r.xuv,{sx:{fontWeight:a.fontWeight||"normal"},children:a.message})]}),(0,v.jsx)("div",{className:"rightSide",children:s})]})})},u=function(){return(0,v.jsx)(l.Fragment,{children:(0,v.jsxs)("div",{className:"headerContainer",children:[(0,v.jsx)("span",{className:"titleContainer",children:t}),o&&(0,v.jsx)(l.Fragment,{children:(0,v.jsx)("span",{className:"viewAll",children:(0,v.jsx)(We.rU,{to:o,children:"View All"})})})]})})};return(0,v.jsx)(l.Fragment,{children:(0,v.jsx)(r.xuv,{withBorders:!0,sx:{height:200,padding:16,margin:c?"10px 20px 10px 0":""},children:""!==n&&(0,v.jsxs)(ze,{children:[(0,v.jsx)(u,{}),(0,v.jsx)(x,{})]})})})},Pe=function(e){var t=e.title,n=e.leftComponent,i=e.rightComponent;return(0,v.jsx)(l.Fragment,{children:(0,v.jsx)(De,{title:t,metricValue:n,rightComponent:i})})},Re=function(e){var t=e.panelItem,n=e.timeStart,i=e.timeEnd,d=e.apiPrefix,c=e.statLabel,u=(0,s.TL)(),m=(0,l.useState)(!1),p=(0,a.Z)(m,2),f=p[0],g=p[1],h=(0,l.useState)(""),j=(0,a.Z)(h,2),y=j[0],b=j[1],C=(0,o.v9)((function(e){return e.dashboard.widgetLoadVersion}));return(0,l.useEffect)((function(){g(!0)}),[C]),(0,l.useEffect)((function(){if(f){var e=0;if(null!==n&&null!==i){var a=i.toUnixInteger()-n.toUnixInteger(),l=Math.floor(a/60);e=l<1?15:l}H.Z.invoke("GET","/api/v1/".concat(d,"/info/widgets/").concat(t.id,"/?step=").concat(e,"&").concat(null!==n?"&start=".concat(n.toUnixInteger()):"").concat(null!==n&&null!==i?"&":"").concat(null!==i?"end=".concat(i.toUnixInteger()):"")).then((function(e){var n=S(e,t);b(n.data),g(!1)})).catch((function(e){u((0,x.Ih)(e)),g(!1)}))}}),[f,t,i,n,u,d]),f?(0,v.jsx)(r.xuv,{sx:{width:"100%",paddingTop:"5px",textAlign:"center",margin:"auto"},children:(0,v.jsx)(r.aNw,{style:{width:12,height:12}})}):(0,v.jsxs)(r.xuv,{children:[(0,v.jsx)(r.xuv,{className:"stat-value",children:y}),c]})},Ue=T.ZP.div((function(e){var t=e.theme;return{fontFamily:"Inter,sans-serif",color:f()(t,"signalColors.main","#07193E"),maxWidth:"321px",display:"flex",marginLeft:"auto",marginRight:"auto",cursor:"default","& .stat-text":{color:f()(t,"mutedText","#87888d"),fontSize:"12px",marginTop:"8px"}}})),Me=function(e){var t=e.statItemLeft,n=void 0===t?null:t,i=e.statItemRight,a=void 0===i?null:i,l=e.icon,o=void 0===l?null:l,s=e.label,d=void 0===s?"":s;return(0,v.jsx)(Ue,{children:function(){var e;return(0,v.jsxs)(r.xuv,{sx:(0,q.Z)({flex:1,display:"flex",padding:"0 8px 0 8px"},"@media (max-width: ".concat(r.Egj.sm,"px)"),{padding:"0 10px 0 10px"}),children:[(0,v.jsxs)(r.xuv,{sx:{flex:1,display:"flex",flexFlow:"column"},children:[(0,v.jsx)(r.xuv,{sx:{fontSize:"16px",fontWeight:600},children:d}),(0,v.jsxs)(r.xuv,{sx:(e={display:"flex",alignItems:"center",gap:5,justifyContent:"space-between",paddingBottom:0,fontSize:55,flexFlow:"row",fontWeight:600,"& .stat-value":{textAlign:"center",height:"50px"},"& .min-icon":{marginRight:"8px",marginTop:"8px",height:"10px",width:"10px"}},(0,q.Z)(e,"@media (max-width: ".concat(r.Egj.sm,"px)"),{fontSize:35}),(0,q.Z)(e,"@media (max-width: ".concat(r.Egj.lg,"px)"),{fontSize:45}),(0,q.Z)(e,"@media (max-width: ".concat(r.Egj.xl,"px)"),{fontSize:50}),e),children:[n,a]})]}),(0,v.jsx)(r.xuv,{sx:{width:"20px",height:"20px",marginTop:"8px",maxWidth:"26px","& .min-icon":{width:"16px",height:"16px"}},children:o})]})}()})},Oe=T.ZP.div((function(e){var t=e.theme;return{display:"flex",alignItems:"center",marginTop:"5px",gap:8,"&.online":{"& .min-icon":{margin:0,fill:f()(t,"signalColors.good","#4CCB92")}},"&.offline":{"& .min-icon":{margin:0,fill:f()(t,"signalColors.danger","#C51B3F")}},"& .indicatorText":{color:f()(t,"mutedText","#C51B3F"),fontSize:12}}})),Ge=function(e){var t=e.info,n=e.timeStart,i=e.timeEnd,l=e.apiPrefix,o=t.mergedPanels,s=void 0===o?[]:o,d=t.id,c=(0,a.Z)(s,2),x=c[0],u=c[1],m=(0,v.jsx)(Re,{panelItem:x,timeStart:n,timeEnd:i,apiPrefix:l,statLabel:(0,v.jsxs)(Oe,{className:"online",children:[(0,v.jsx)(r.J$M,{}),(0,v.jsx)(r.xuv,{className:"indicatorText",children:"Online"})]})}),p=(0,v.jsx)(Re,{panelItem:u,timeStart:n,timeEnd:i,apiPrefix:l,statLabel:(0,v.jsxs)(Oe,{className:"offline",children:[(0,v.jsx)(r.J$M,{}),(0,v.jsx)(r.xuv,{className:"indicatorText",children:"Offline"})]})}),f=null,g="";return 500===d?(f=(0,v.jsx)(r.SBZ,{}),g="Servers"):501===d&&(f=(0,v.jsx)(r.FU8,{}),g="Drives"),(0,v.jsx)(Me,{statItemLeft:m,statItemRight:p,icon:f,label:g})},_e=T.ZP.div((function(e){var t=e.theme;return{"& .putLabel":{display:"flex",gap:10,alignItems:"center",marginTop:"10px","& .min-icon":{height:15,width:15,fill:f()(t,"signalColors.good","#4CCB92")},"& .getText":{fontSize:"18px",color:f()(t,"mutedText","#87888d"),fontWeight:"bold"},"& .valueText":{fontSize:50,fontFamily:"Inter",fontWeight:600}}}})),Ve=function(e){var t=e.value,n=e.loading;return(0,v.jsxs)(_e,{children:[(0,v.jsxs)(r.xuv,{className:"putLabel",children:[(0,v.jsx)(r.xuv,{className:"getText",children:"GET"}),n?(0,v.jsx)(r.aNw,{style:{width:"15px",height:"15px"}}):(0,v.jsx)(r.vUj,{})]}),(0,v.jsx)(r.xuv,{className:"valueText",children:t})]})},Ke=T.ZP.div((function(e){var t=e.theme;return{"& .putLabel":{display:"flex",gap:10,alignItems:"center",marginTop:"10px","& .min-icon":{height:15,width:15,fill:f()(t,"signalColors.info","#2781B0")},"& .putText":{fontSize:"18px",color:f()(t,"mutedText","#87888d"),fontWeight:"bold"},"& .valueText":{fontSize:50,fontFamily:"Inter",fontWeight:600}}}})),He=function(e){var t=e.value,n=e.loading;return(0,v.jsxs)(Ke,{children:[(0,v.jsxs)(r.xuv,{className:"putLabel",children:[(0,v.jsx)(r.xuv,{className:"putText",children:"PUT"}),n?(0,v.jsx)(r.aNw,{style:{width:"15px",height:"15px"}}):(0,v.jsx)(r.Uxq,{})]}),(0,v.jsx)(r.xuv,{className:"valueText",children:t})]})},$e=T.ZP.div((function(e){var t=e.theme;return(0,q.Z)({flex:1,display:"flex",alignItems:"center",flexFlow:"row",gap:"15px","& .unitText":{fontSize:"14px",color:f()(t,"mutedText","#87888d"),marginLeft:"5px"},"& .unit":{color:f()(t,"mutedText","#87888d"),fontSize:"18px",marginLeft:"12px",marginTop:"10px"}},"@media (max-width: ".concat(r.Egj.sm,"px)"),{flexFlow:"column"})})),Je=function(e){var t=e.value,n=e.timeStart,i=e.timeEnd,l=e.apiPrefix,o=t.mergedPanels,s=void 0===o?[]:o,d=(0,a.Z)(s,2),c=d[0],x=d[1],u=(0,v.jsx)(ve,{title:t.title,panelItem:c,timeStart:n,timeEnd:i,apiPrefix:l,renderFn:function(e){var t=e.valueToRender,n=e.loading,i=e.title,a=e.id;return(0,v.jsx)(He,{value:t,loading:n,title:i,id:a})}}),m=(0,v.jsx)(ve,{title:t.title,panelItem:x,timeStart:n,timeEnd:i,apiPrefix:l,renderFn:function(e){var t=e.valueToRender,n=e.loading,i=e.title,a=e.id;return(0,v.jsx)(Ve,{value:t,loading:n,title:i,id:a})}});return(0,v.jsxs)($e,{children:[(0,v.jsx)(r.xuv,{sx:{fontSize:"16px",fontWeight:600},children:"Network"}),(0,v.jsx)(r.xuv,{sx:(0,q.Z)({position:"relative",width:110,height:110,marginLeft:"auto"},"@media (max-width: ".concat(r.Egj.sm,"px)"),{marginLeft:"0"}),children:(0,v.jsx)(r.xuv,{sx:{position:"absolute",display:"flex",flexFlow:"column",alignItems:"center",top:"50%",left:"50%",transform:"translate(-50%, -50%)",fontWeight:"bold",fontSize:12},children:m})}),(0,v.jsx)(r.xuv,{sx:(0,q.Z)({display:"flex",alignItems:"center",marginLeft:"auto"},"@media (max-width: ".concat(r.Egj.sm,"px)"),{marginLeft:"0"}),children:(0,v.jsx)(r.xuv,{sx:{display:"flex",alignItems:"center","& .value":{fontSize:"50px",fontFamily:"Inter"}},children:u})}),(0,v.jsx)(r.xuv,{sx:{marginLeft:"15px",height:"100%",display:"flex",alignItems:"flex-start","& .min-icon":{height:"15px",width:"15px"}},children:(0,v.jsx)(r.QBB,{})})]})},Xe=function(e){var t=e.info,n=e.timeStart,i=e.timeEnd,l=e.loading,r=e.apiPrefix,o=t.mergedPanels,s=void 0===o?[]:o,d=t.title,c=void 0===d?"":d,x=t.id,u=(0,a.Z)(s,2),m=u[0],p=u[1];return[500,501].includes(x)?(0,v.jsx)(xe,{children:(0,v.jsx)(Ge,{info:t,timeStart:n,timeEnd:i,apiPrefix:r})}):502===x?(0,v.jsx)(xe,{children:(0,v.jsx)(Je,{apiPrefix:r,timeEnd:i,timeStart:n,value:t})}):(0,v.jsx)(Pe,{title:c,leftComponent:Te(m,n,i,l,r),rightComponent:Te(p,n,i,l,r)})},Ye=n(31300),qe=n(98444),Qe=n.n(qe),et=n(879),tt=T.ZP.div((function(e){var t=e.theme;return{alignItems:"baseline",padding:"5px",display:"flex",gap:"5px","& .StatBox":{display:"flex",alignItems:"center",justifyContent:"center",flexFlow:"column","& .stat-text":{color:f()(t,"mutedText","#87888d"),fontSize:"12px"},"& .stat-value":{fontSize:"18px",color:f()(t,"signalColors.main","#07193E"),display:"flex",fontWeight:500,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap","& .stat-container":{display:"flex",alignItems:"center",justifyContent:"center",flexFlow:"column",marginLeft:"5px",maxWidth:"40px","&:first-of-type(svg)":{fill:f()(t,"mutedText","#87888d")},"& .stat-indicator":{marginRight:"0px",justifyContent:"center",alignItems:"center",textAlign:"center","& svg.min-icon":{width:"10px",height:"10px"},"&.good":{"& svg.min-icon":{fill:f()(t,"signalColors.good","#4CCB92")}},"&.warn":{"& svg.min-icon":{fill:f()(t,"signalColors.warning","#FFBD62")}},"&.bad":{"& svg.min-icon":{fill:f()(t,"signalColors.danger","#C51B3F")}}}}}}}})),nt=T.ZP.div((function(e){var t=e.theme;return{display:"flex",alignItems:"flex-start",flexFlow:"column",flex:1,"& .server-state":{marginLeft:"8px","& .min-icon":{height:"14px",width:"14px"},"&.good":{"& svg.min-icon":{fill:f()(t,"signalColors.good","#4CCB92")}},"&.warn":{"& svg.min-icon":{fill:f()(t,"signalColors.warning","#FFBD62")}},"&.bad":{"& svg.min-icon":{fill:f()(t,"signalColors.danger","#C51B3F")}}}}})),it=function(e){var t=e.label,n=void 0===t?"":t,i=e.value,a=void 0===i?"":i,l=e.statusColor,o=void 0===l?"warn":l,s=e.hasStatus,d=void 0!==s&&s;return(0,v.jsx)(tt,{children:(0,v.jsxs)(r.xuv,{className:"StatBox",children:[(0,v.jsxs)("div",{className:"stat-value",children:[a," ",(0,v.jsx)(r.xuv,{className:"stat-container",children:d?(0,v.jsx)(r.xuv,{className:"stat-indicator ".concat(o),children:(0,v.jsx)(r.J$M,{})}):(0,v.jsx)(r.xuv,{sx:{width:"12px",height:"12px"}})})]}),(0,v.jsx)("div",{className:"stat-text",children:n})]})})},at=function(e){var t=e.server,n=Object.keys(f()(t,"network",{})),i=n.length,a=t.drives?t.drives.length:0,l=n.reduce((function(e,n){return"online"===(t.network?t.network[n]:"")?e+1:e}),0),o=t.drives?t.drives.filter((function(e){return"ok"===e.state})).length:0;return(0,v.jsx)(nt,{children:(0,v.jsxs)(r.xuv,{sx:(0,q.Z)({display:"flex",alignItems:"center",padding:"3px",gap:"15px",justifyContent:"space-between",width:"100%",paddingLeft:"20px",flexFlow:"row"},"@media (max-width: ".concat(r.Egj.md,"px)"),{flexFlow:"column"}),children:[(0,v.jsxs)(r.xuv,{sx:{display:"flex",alignItems:"center"},children:[(0,v.jsx)(r.xuv,{sx:{fontWeight:600,textTransform:"none"},children:t.endpoint||""}),(null===t||void 0===t?void 0:t.state)&&(0,v.jsx)(r.xuv,{className:"server-state ".concat((0,et.GJ)(t.state)),children:(0,v.jsx)(r.J$M,{})})]}),(0,v.jsxs)(r.xuv,{sx:{display:"flex",alignItems:"center",justifyContent:"center",flex:"1.5",gap:"5%"},children:[(0,v.jsx)(it,{statusColor:(0,et.Et)(o,a),label:"Drives",hasStatus:!0,value:"".concat(o,"/").concat(a)}),(0,v.jsx)(it,{statusColor:(0,et.D_)(l,i),label:"Network",hasStatus:!0,value:"".concat(l,"/").concat(i)}),(0,v.jsx)(it,{statusColor:"good",label:"Up time",value:null!==t&&void 0!==t&&t.uptime?(0,h.v1)("".concat(t.uptime)):"N/A"})]}),(0,v.jsx)(it,{statusColor:"good",label:"",value:(0,v.jsxs)(r.xuv,{sx:{background:"rgb(235, 236, 237)",color:"#000000",paddingLeft:"10px",paddingRight:"10px",borderRadius:"2px",fontSize:"12px",marginTop:"5px","& .label":{fontWeight:600,marginRight:"3px"}},children:[(0,v.jsx)("span",{className:"label",children:"Version:"}),t.version?t.version:"N/A"]})})]})})},lt=function(e){switch(e){case"offline":return et.yh.RED;case"ok":return et.yh.GREEN;default:return et.yh.YELLOW}},rt=T.ZP.div((function(e){var t=e.theme;return(0,q.Z)({flex:1,display:"flex",alignItems:"center",paddingLeft:"20px",marginTop:"10px",flexFlow:"row","& .info-label":{color:f()(t,"mutedText","#87888d"),fontSize:"12px",textAlign:"center"},"& .info-value":{fontSize:"18px",color:f()(t,"signalColors.main","#07193E"),display:"flex",fontWeight:500,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},"@media (max-width: ".concat(r.Egj.sm,"px)"),{flexFlow:"column"})})),ot=function(e){var t=e.drive,n=t.totalSpace||0,i=t.usedSpace||0;return(0,v.jsx)(r.xuv,{withBorders:!0,sx:{display:"flex",flex:1,alignItems:"center",paddingBottom:"10px",padding:"20px"},children:(0,v.jsxs)(r.xuv,{sx:{display:"flex",flexFlow:"column",marginLeft:"10px",flex:1},children:[(0,v.jsxs)(r.xuv,{sx:{fontSize:"14px",fontWeight:400,display:"flex",alignItems:"center","& .min-icon":{marginRight:"10px",height:"10px",width:"10px",fill:lt(t.state||""),flexShrink:0},"& .drive-endpoint":(0,q.Z)({overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"normal",wordBreak:"break-all",marginRight:"8px",fontWeight:600,fontSize:16},"@media (max-width: ".concat(r.Egj.sm,"px)"),{fontSize:10})},children:[(0,v.jsx)("div",{className:"drive-endpoint",children:t.endpoint||""}),t.state&&(0,v.jsx)(r.J$M,{})]}),(0,v.jsxs)(rt,{children:[(0,v.jsx)(r.xuv,{sx:{flex:1},children:(0,v.jsx)(r.mWO,{label:!0,usedBytes:i,totalBytes:n,width:"120",height:"120"})}),(0,v.jsxs)(r.xuv,{sx:{display:"flex",gap:"5%",alignItems:"center",flex:2,flexGrow:1},children:[(0,v.jsxs)(r.xuv,{sx:{display:"flex",flexFlow:"column"},children:[(0,v.jsx)("div",{className:"info-value",children:(0,h.ae)(t.totalSpace?t.totalSpace.toString():"0")}),(0,v.jsx)("label",{className:"info-label",children:"Capacity"})]}),(0,v.jsxs)(r.xuv,{sx:{display:"flex",flexFlow:"column"},children:[(0,v.jsx)("div",{className:"info-value",children:(0,h.ae)(t.usedSpace?t.usedSpace.toString():"0")}),(0,v.jsx)("label",{className:"info-label",children:"Used"})]}),(0,v.jsxs)(r.xuv,{sx:{display:"flex",flexFlow:"column"},children:[(0,v.jsx)("div",{className:"info-value",children:(0,h.ae)(t.availableSpace?t.availableSpace.toString():"0")}),(0,v.jsx)("label",{className:"info-label",children:"Available"})]})]})]})]})})},st=function(e){var t=e.data,n=l.useState(t.length>1?"":t[0].endpoint+"-0"),i=(0,a.Z)(n,2),o=i[0],s=i[1],d=function(e){s(e)};return(0,v.jsxs)(r.xuv,{children:[(0,v.jsxs)(r.xuv,{sx:{fontSize:18,lineHeight:2,fontWeight:700},children:["Servers (",t.length,")"]}),(0,v.jsx)(r.xuv,{children:t.map((function(e,t){var n,i,a="".concat(e.endpoint,"-").concat(t),l=o===a;return(0,v.jsxs)(r.UQy,{expanded:l,onTitleClick:function(){d(l?"":a)},id:"key",title:(0,v.jsx)(at,{server:e,index:t}),sx:{marginBottom:15},children:[(0,v.jsxs)(r.xuv,{useBackground:!0,sx:{padding:"10px 30px",fontWeight:"bold"},children:["Drives (",null===(n=e.drives)||void 0===n?void 0:n.length,")"]}),(0,v.jsx)(r.xuv,{sx:(0,q.Z)({flex:1,display:"flex",flexDirection:"column",padding:"15px 30px",gap:15},"@media (max-width: ".concat(r.Egj.sm,"px)"),{padding:"10px 10px"}),children:null===(i=e.drives)||void 0===i?void 0:i.map((function(e,t){return(0,v.jsx)(ot,{drive:e},"".concat(e.endpoint,"-").concat(t))}))})]},a)}))})]})},dt=T.ZP.div((function(e){var t=e.theme;return{fontFamily:"Inter,sans-serif",color:f()(t,"signalColors.main","#07193E"),maxWidth:"300px",display:"flex",marginLeft:"auto",marginRight:"auto",cursor:"default",position:"relative",width:"100%"}})),ct=function(e){var t,n=e.counterValue,i=e.label,a=void 0===i?"":i,l=e.icon,o=void 0===l?null:l,s=e.actions,d=void 0===s?null:s;return(0,v.jsx)(dt,{children:(0,v.jsxs)(r.xuv,{sx:(0,q.Z)({flex:1,display:"flex",width:"100%",padding:"0 8px 0 8px",position:"absolute"},"@media (max-width: ".concat(r.Egj.md,"px)"),{padding:"0 10px 0 10px"}),children:[(0,v.jsxs)(r.xuv,{sx:{flex:1,display:"flex",flexFlow:"column",marginTop:"8px",zIndex:10,overflow:"hidden"},children:[(0,v.jsx)(r.xuv,{sx:{fontSize:"16px",fontWeight:600},children:a}),(0,v.jsx)(r.ua7,{tooltip:n,placement:"bottom",children:(0,v.jsx)(r.xuv,{sx:(t={fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",maxWidth:187,flexFlow:"row",fontSize:n.toString().length>=5?50:55},(0,q.Z)(t,"@media (max-width: ".concat(r.Egj.sm,"px)"),{flexFlow:"column",maxWidth:200,fontSize:n.toString().length>=5?20:35}),(0,q.Z)(t,"@media (max-width: ".concat(r.Egj.md,"px)"),{fontSize:n.toString().length>=5?28:35}),(0,q.Z)(t,"@media (max-width: ".concat(r.Egj.lg,"px)"),{fontSize:n.toString().length>=5?28:36}),(0,q.Z)(t,"@media (max-width: ".concat(r.Egj.xl,"px)"),{fontSize:n.toString().length>=5?45:50}),t),children:n})})]}),(0,v.jsxs)(r.xuv,{sx:{display:"flex",flexFlow:"column",alignItems:"center",justifyContent:"flex-start",marginTop:"8px",maxWidth:"26px","& .min-icon":{width:"16px",height:"16px"}},children:[o,(0,v.jsx)(r.xuv,{sx:{display:"flex"},children:d})]})]})})},xt=T.ZP.div((function(e){var t=e.theme;return{maxHeight:"110px",display:"flex",alignItems:"center",justifyContent:"space-between",fontSize:"19px",padding:"10px","& .unit-value":{fontSize:"50px",color:f()(t,"signalColors.main","#07193E")},"& .unit-type":{fontSize:"18px",color:f()(t,"mutedText","#87888d"),marginTop:"20px",marginLeft:"5px"},"& .usage-label":{display:"flex",alignItems:"center",fontSize:"16px",fontWeight:600,marginRight:"20px",marginTop:"-10px","& .min-icon":{marginLeft:"10px",height:16,width:16}}}})),ut=function(e){var t=e.usageValue,n=e.total,i=e.unit,a=[{value:n,color:"#D6D6D6",label:"Free Space"},{value:t,color:"#073052",label:"Used Space"}];return(0,v.jsxs)(xt,{children:[(0,v.jsxs)(r.xuv,{children:[(0,v.jsx)("div",{className:"usage-label",children:(0,v.jsx)("span",{children:"Reported Usage"})}),(0,v.jsx)(r.ua7,{tooltip:"".concat(t," Bytes"),children:(0,v.jsx)("label",{className:"unit-value",style:{fontWeight:600},children:n})}),(0,v.jsx)("label",{className:"unit-type",children:i})]}),(0,v.jsx)(r.xuv,{children:(0,v.jsx)(r.xuv,{sx:{flex:1},children:(0,v.jsx)("div",{style:{position:"relative",width:105,height:105,top:"-8px"},children:(0,v.jsx)("div",{children:(0,v.jsx)(le.u,{width:105,height:105,children:(0,v.jsx)(re.b,{data:a,cx:"50%",cy:"50%",dataKey:"value",outerRadius:45,innerRadius:35,startAngle:-70,endAngle:360,animationDuration:1,children:a.map((function(e,t){return(0,v.jsx)(A.b,{fill:e.color},"cellCapacity-".concat(t))}))})})})})})})]})},mt=n(56087),pt=n(27454),ft=function(e){var t=e.children;return(0,v.jsx)(r.xuv,{withBorders:!0,sx:(0,q.Z)({padding:15,height:"136px",maxWidth:"100%"},"@media (max-width: ".concat(r.Egj.sm,"px)"),{padding:5,maxWidth:"initial"}),children:t})},gt=function(e){var t,n,i,a,l,o,s,d,c,x,m,p=e.usage,f=p&&p.usage?p.usage.toString():"0",g=function(e){return void 0===e?{total:"0",unit:"Mi"}:(0,h.Am)(e)}(f),j={},y=j.lastScan,b=void 0===y?"n/a":y,C=j.lastHeal,w=void 0===C?"n/a":C,S=j.upTime,Z=void 0===S?"n/a":S,T=function(e){return e&&e.servers?(0,u.Z)(e.servers).sort((function(e,t){var n,i,a=(null===(n=e.endpoint)||void 0===n?void 0:n.toLowerCase())||"",l=(null===(i=t.endpoint)||void 0===i?void 0:i.toLowerCase())||"";return al?1:0})):[]}(p),I=[];T.forEach((function(e){var t,n=null===(t=e.drives)||void 0===t?void 0:t.map((function(e){return e}));n&&(I=[].concat((0,u.Z)(I),(0,u.Z)(n)))}));var E=Qe()(T,"state"),N=E.offline,F=void 0===N?[]:N,k=E.online,A=void 0===k?[]:k,L=Qe()(I,"state"),B=L.offline,W=void 0===B?[]:B,z=L.ok,D=void 0===z?[]:z;return(0,v.jsx)(r.xuv,{children:(0,v.jsxs)(r.xuv,{sx:{display:"grid",gridTemplateRows:"1fr",gridTemplateColumns:"1fr",gap:27,marginBottom:40},children:[(0,v.jsxs)(r.xuv,{sx:{display:"grid",gridTemplateColumns:"1fr",gap:"40px"},children:[(0,v.jsxs)(r.xuv,{sx:(t={display:"grid",gridTemplateRows:"136px",gridTemplateColumns:"1fr 1fr 1fr",gap:20},(0,q.Z)(t,"@media (max-width: ".concat(r.Egj.sm,"px)"),{gridTemplateColumns:"1fr"}),(0,q.Z)(t,"@media (max-width: ".concat(r.Egj.md,"px)"),{marginBottom:0}),t),children:[(0,v.jsx)(ft,{children:(0,v.jsx)(ct,{label:"Buckets",icon:(0,v.jsx)(r.wNb,{}),counterValue:p?(0,h.nk)(p.buckets):0,actions:(0,v.jsx)(We.rU,{to:mt.gA.BUCKETS,style:{zIndex:3,textDecoration:"none",top:"40px",position:"relative",marginRight:"75px"},children:(0,v.jsx)(pt.Z,{tooltip:"Browse",children:(0,v.jsx)(r.zxk,{id:"browse-dashboard",onClick:function(){},label:"Browse",icon:(0,v.jsx)(r.LZ3,{}),variant:"regular",style:{padding:5,height:30,fontSize:14,marginTop:20}})})})})}),(0,v.jsx)(ft,{children:(0,v.jsx)(ct,{label:"Objects",icon:(0,v.jsx)(r.xpX,{}),counterValue:p?(0,h.nk)(p.objects):0})}),(0,v.jsx)(ft,{children:(0,v.jsx)(Ye.Z,{onlineCount:A.length,offlineCount:F.length,label:"Servers",icon:(0,v.jsx)(r.SBZ,{})})}),(0,v.jsx)(ft,{children:(0,v.jsx)(Ye.Z,{offlineCount:(null===p||void 0===p||null===(n=p.backend)||void 0===n?void 0:n.offlineDrives)||W.length,onlineCount:(null===p||void 0===p||null===(i=p.backend)||void 0===i?void 0:i.onlineDrives)||D.length,label:"Drives",icon:(0,v.jsx)(r.FU8,{})})}),(0,v.jsxs)(r.xuv,{withBorders:!0,sx:{gridRowStart:"1",gridRowEnd:"3",gridColumnStart:"3",padding:15,display:"grid",justifyContent:"stretch"},children:[(0,v.jsx)(ut,{usageValue:f,total:g.total,unit:g.unit}),(0,v.jsxs)(r.xuv,{sx:{display:"flex",flexFlow:"column",gap:"14px"},children:[(0,v.jsx)(Ce,{icon:(0,v.jsx)(r.lnI,{}),label:(0,v.jsxs)(r.xuv,{children:[(0,v.jsx)(r.xuv,{sx:(0,q.Z)({display:"inline"},"@media (max-width: ".concat(r.Egj.sm,"px)"),{display:"none"}),children:"Time since last"})," ","Heal Activity"]}),value:w}),(0,v.jsx)(Ce,{icon:(0,v.jsx)(r.EY8,{}),label:(0,v.jsxs)(r.xuv,{children:[(0,v.jsx)(r.xuv,{sx:(0,q.Z)({display:"inline"},"@media (max-width: ".concat(r.Egj.sm,"px)"),{display:"none"}),children:"Time since last"})," ","Scan Activity"]}),value:b}),(0,v.jsx)(Ce,{icon:(0,v.jsx)(r.oNq,{}),label:"Uptime",value:Z})]})]})]}),(0,v.jsxs)(r.xuv,{sx:(0,q.Z)({display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gap:"14px"},"@media (max-width: ".concat(r.Egj.lg,"px)"),{gridTemplateColumns:"1fr"}),children:[(0,v.jsx)(Ce,{icon:(0,v.jsx)(r.idV,{}),label:"Backend type",value:null!==(a=null===p||void 0===p||null===(l=p.backend)||void 0===l?void 0:l.backendType)&&void 0!==a?a:"Unknown"}),(0,v.jsx)(Ce,{icon:(0,v.jsx)(r.QaX,{}),label:"Standard storage class parity",value:null!==(o=null===p||void 0===p||null===(s=p.backend)||void 0===s||null===(d=s.standardSCParity)||void 0===d?void 0:d.toString())&&void 0!==o?o:"n/a"}),(0,v.jsx)(Ce,{icon:(0,v.jsx)(r.QaX,{}),label:"Reduced redundancy storage class parity",value:null!==(c=null===p||void 0===p||null===(x=p.backend)||void 0===x||null===(m=x.rrSCParity)||void 0===m?void 0:m.toString())&&void 0!==c?c:"n/a"})]}),(0,v.jsx)(r.xuv,{sx:{display:"grid",gridTemplateRows:"auto",gridTemplateColumns:"1fr",gap:"auto"},children:(0,v.jsx)(st,{data:T})})]}),"not configured"===(null===p||void 0===p?void 0:p.advancedMetricsStatus)&&(0,v.jsx)(r.xuv,{children:(0,v.jsx)(r.KfX,{iconComponent:(0,v.jsx)(r.a$2,{}),title:"We can\u2019t retrieve advanced metrics at this time.",help:(0,v.jsxs)(r.xuv,{children:[(0,v.jsx)(r.xuv,{sx:{fontSize:"14px"},children:"MinIO Dashboard will display basic metrics as we couldn\u2019t connect to Prometheus successfully. Please try again in a few minutes. If the problem persists, you can review your configuration and confirm that Prometheus server is up and running."}),(0,v.jsx)(r.xuv,{sx:{paddingTop:20,fontSize:14},children:(0,v.jsx)("a",{href:"https://min.io/docs/minio/linux/operations/monitoring/collect-minio-metrics-using-prometheus.html",target:"_blank",rel:"noopener",children:"Read more about Prometheus on our Docs site."})})]})})})]})})},ht=function(e){var t=e.apiPrefix,n=void 0===t?"admin":t,i=e.usage,x=(0,s.TL)(),m=(0,o.v9)((function(e){return e.dashboard.loadingUsage})),p=(0,o.v9)((function(e){return e.dashboard.zoom.openZoom})),f=(0,o.v9)((function(e){return e.dashboard.zoom.widgetRender})),g=(0,o.v9)(c.$4),h=!(null===g||void 0===g||!g.includes("object-browser-only")),j=!1;(null!==g&&void 0!==g&&g.includes("hide-menu")||h)&&(j=!0);var y,b=(0,l.useState)(null),w=(0,a.Z)(b,2),S=w[0],Z=w[1],T=(0,l.useState)(null),I=(0,a.Z)(T,2),E=I[0],N=I[1],F=C,k=(0,l.useState)("not configured"===(null===i||void 0===i?void 0:i.advancedMetricsStatus)?"info":"usage"),A=(0,a.Z)(k,2),L=A[0],B=A[1],W=function(e){return e.reduce((function(e,t,i){var a=t.columns,o=(void 0===a?[]:a).map((function(e,t){var a;return function(e,t){return(0,v.jsx)(l.Fragment,{children:e?(0,v.jsx)(l.Fragment,{children:(0,v.jsx)(r.xuv,{children:e.mergedPanels?(0,v.jsx)(Xe,{info:e,timeStart:S,timeEnd:E,loading:!0,apiPrefix:n}):Te(e,S,E,!0,n,p)})}):null},"widget-".concat(t))}((a=e.componentId,F.find((function(e){return e.id===a}))),"".concat(i,"-").concat(t))})),s=(0,v.jsx)(r.xuv,{sx:t.sx,children:o},"layout-row-".concat(i));return[].concat((0,u.Z)(e),[s])}),[])},z="not configured"===(null===i||void 0===i?void 0:i.advancedMetricsStatus),P=(0,v.jsx)(r.xuv,{sx:{marginBottom:20},children:"info"===L?(0,v.jsxs)(r.rjZ,{container:!0,children:[(0,v.jsx)(r.rjZ,{item:!0,children:(0,v.jsx)(r.xuv,{sx:{fontSize:18,lineHeight:2,fontWeight:700},children:"Server Information"})}),(0,v.jsx)(r.rjZ,{item:!0,xs:!0,children:(0,v.jsx)(r.rjZ,{container:!0,direction:"row-reverse",children:(0,v.jsx)(r.rjZ,{item:!0,children:(0,v.jsx)(r.zxk,{id:"sync",type:"button",variant:"callAction",onClick:function(){x((0,d.y)())},disabled:m,icon:(0,v.jsx)(r.bnu,{}),label:"Sync"})})})})]}):(0,v.jsx)(Be.Z,{timeStart:S,setTimeStart:Z,timeEnd:E,setTimeEnd:N,triggerSync:function(){x((0,D.JO)())}})}),R={tabConfig:{label:"Info",id:"info",disabled:!1},content:(0,v.jsxs)(l.Fragment,{children:[(!i||m)&&(0,v.jsx)(r.kod,{}),i&&!m&&(0,v.jsxs)(l.Fragment,{children:[P,(0,v.jsx)(gt,{usage:i})]})]})},U=[{tabConfig:{label:"Usage",id:"usage",disabled:z},content:(0,v.jsxs)(l.Fragment,{children:[P,(0,v.jsxs)(ke,{children:["unavailable"===(null===i||void 0===i?void 0:i.advancedMetricsStatus)&&(0,v.jsx)(r.KfX,{iconComponent:(0,v.jsx)(r.a$2,{}),title:"We can\u2019t retrieve advanced metrics at this time.",help:(0,v.jsx)(r.xuv,{sx:{fontSize:"14px"},children:"It looks like Prometheus is not available or reachable at the moment."})}),F.length?W(Ie):null]})]})},{tabConfig:{label:"Traffic",id:"traffic",disabled:z},content:(0,v.jsxs)(l.Fragment,{children:[P,(0,v.jsxs)(ke,{children:["unavailable"===(null===i||void 0===i?void 0:i.advancedMetricsStatus)&&(0,v.jsx)(r.KfX,{iconComponent:(0,v.jsx)(r.a$2,{}),title:"We can\u2019t retrieve advanced metrics at this time.",help:(0,v.jsx)(r.xuv,{sx:{fontSize:"14px"},children:"It looks like Prometheus is not available or reachable at the moment."})}),F.length?W(Ee):null]})]})},{tabConfig:{label:"Resources",id:"resources",disabled:z},content:(0,v.jsxs)(l.Fragment,{children:[P,(0,v.jsxs)(ke,{children:["unavailable"===(null===i||void 0===i?void 0:i.advancedMetricsStatus)&&(0,v.jsx)(r.KfX,{iconComponent:(0,v.jsx)(r.a$2,{}),title:"We can\u2019t retrieve advanced metrics at this time.",help:(0,v.jsx)(r.xuv,{sx:{fontSize:"14px"},children:"It looks like Prometheus is not available or reachable at the moment."})}),F.length?W(Ne):null,(0,v.jsx)("h2",{style:{margin:0,borderBottom:"1px solid #dedede"},children:"Advanced"}),F.length?W(Fe):null]})]})}];return y=z?[R].concat(U):[].concat(U,[R]),(0,v.jsxs)(r.Xgh,{sx:{padding:j?0:"2rem"},children:[p&&(0,v.jsx)(Le,{modalOpen:p,timeStart:S,timeEnd:E,widgetRender:0,value:f,apiPrefix:n}),(0,v.jsx)(r.mQc,{horizontal:!0,options:y,currentTabOrPath:L,onTabClick:function(e){B(e)}})]})},vt=n(47974),jt=n(99670),yt=function(){var e=(0,s.TL)(),t=(0,l.useState)(!0),n=(0,a.Z)(t,2),i=n[0],u=n[1],m=(0,o.v9)((function(e){return e.dashboard.usage})),p=(0,o.v9)(c.$4),f=!(null===p||void 0===p||!p.includes("object-browser-only")),g=!1;return(null!==p&&void 0!==p&&p.includes("hide-menu")||f)&&(g=!0),(0,l.useEffect)((function(){i&&(u(!1),e((0,d.y)()))}),[i,e]),(0,l.useEffect)((function(){e((0,x.Sc)("metrics"))}),[]),(0,v.jsxs)(l.Fragment,{children:[!g&&(0,v.jsx)(vt.Z,{label:"Metrics",actions:(0,v.jsx)(jt.Z,{})}),i?(0,v.jsx)(r.rjZ,{container:!0,children:(0,v.jsx)(r.rjZ,{item:!0,xs:12,children:(0,v.jsx)(r.kod,{})})}):(0,v.jsx)(ht,{usage:m})]})}}}]); +//# sourceMappingURL=8388.af3ddceb.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/8388.408870e9.chunk.js.map b/portal-ui/build/static/js/8388.af3ddceb.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/8388.408870e9.chunk.js.map rename to portal-ui/build/static/js/8388.af3ddceb.chunk.js.map index 882f4bb75b..3510ee5c4f 100644 --- a/portal-ui/build/static/js/8388.408870e9.chunk.js.map +++ b/portal-ui/build/static/js/8388.af3ddceb.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/8388.408870e9.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/DateRangeSelector/DateRangeSelector.tsx","screens/Console/Common/FormComponents/DateTimePickerWrapper/DateTimePickerWrapper.tsx","screens/Console/Dashboard/BasicDashboard/StatusCountCard.tsx","screens/Console/Dashboard/BasicDashboard/Utils.tsx","screens/Console/Dashboard/Prometheus/types.ts","screens/Console/Dashboard/Prometheus/utils.tsx","screens/Console/Dashboard/Prometheus/Widgets/ExpandGraphLink.tsx","screens/Console/Dashboard/DownloadWidgetDataButton.tsx","screens/Console/Dashboard/Prometheus/Widgets/tooltips/BarChartTooltip.tsx","screens/Console/Dashboard/Prometheus/Widgets/BarChartWidget.tsx","screens/Console/Dashboard/Prometheus/Widgets/tooltips/LineChartTooltip.tsx","screens/Console/Dashboard/Prometheus/Widgets/LinearGraphWidget.tsx","screens/Console/Dashboard/Prometheus/Widgets/PieChartWidget.tsx","screens/Console/Dashboard/Prometheus/Widgets/SimpleWidget.tsx","screens/Console/Dashboard/DashboardItemBox.tsx","screens/Console/Dashboard/Prometheus/Widgets/NumericStatCard.tsx","screens/Console/Dashboard/Prometheus/Widgets/BucketsCountItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/ObjectsCountItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/SingleRepWidget.tsx","screens/Console/Dashboard/Prometheus/Widgets/SingleValueWidget.tsx","screens/Console/Dashboard/Prometheus/Widgets/CapacityItem.tsx","screens/Console/Dashboard/TimeStatItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/HealActivityRenderer.tsx","screens/Console/Dashboard/Prometheus/Widgets/ScanActivityRenderer.tsx","screens/Console/Dashboard/Prometheus/Widgets/UptimeActivityRenderer.tsx","screens/Console/Dashboard/Prometheus/widgetUtils.tsx","screens/Console/Dashboard/Prometheus/Widgets/LayoutUtil.tsx","screens/Console/Dashboard/Prometheus/ZoomWidget.tsx","screens/Console/Dashboard/CommonCard.tsx","screens/Console/Dashboard/Prometheus/MergedWidgets.tsx","screens/Console/Dashboard/Prometheus/Widgets/EntityStateStatItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/DualStatCard.tsx","screens/Console/Dashboard/Prometheus/Widgets/EntityStateItemRenderer.tsx","screens/Console/Dashboard/Prometheus/Widgets/NetworkGetItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/NetworkPutItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/NetworkItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/MergedWidgetsRenderer.tsx","screens/Console/Dashboard/BasicDashboard/ServerInfoItem.tsx","screens/Console/Dashboard/BasicDashboard/DriveInfoItem.tsx","screens/Console/Dashboard/BasicDashboard/ServersList.tsx","screens/Console/Dashboard/BasicDashboard/CounterCard.tsx","screens/Console/Dashboard/BasicDashboard/ReportedUsage.tsx","screens/Console/Dashboard/BasicDashboard/BasicDashboard.tsx","screens/Console/Dashboard/Prometheus/PrDashboard.tsx","screens/Console/Dashboard/Dashboard.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 { Button, OpenListIcon, SyncIcon, Grid } from \"mds\";\nimport { DateTime } from \"luxon\";\nimport { Box } from \"@mui/material\";\nimport ScheduleIcon from \"@mui/icons-material/Schedule\";\nimport WatchLaterIcon from \"@mui/icons-material/WatchLater\";\nimport DateTimePickerWrapper from \"../DateTimePickerWrapper/DateTimePickerWrapper\";\n\ninterface IDateRangeSelector {\n timeStart: DateTime | null;\n setTimeStart: (value: DateTime | null) => void;\n timeEnd: DateTime | null;\n setTimeEnd: (value: DateTime | null) => void;\n triggerSync?: () => void;\n label?: string;\n startLabel?: string;\n endLabel?: string;\n}\n\nconst DateFilterAdornIcon = () => {\n return (\n \n \n \n );\n};\n\nconst DateRangeSelector = ({\n timeStart,\n setTimeStart,\n timeEnd,\n setTimeEnd,\n triggerSync,\n label = \"Filter:\",\n startLabel = \"Start Time:\",\n endLabel = \"End Time:\",\n}: IDateRangeSelector) => {\n return (\n \n \n \n {label}\n \n \n \n \n \n \n \n {startLabel}\n \n \n \n \n \n\n \n \n \n \n \n {endLabel}\n \n \n \n \n \n \n\n {triggerSync && (\n \n }\n label={\"Sync\"}\n />\n \n )}\n \n \n );\n};\n\nexport default DateRangeSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { DateTime } from \"luxon\";\nimport { HelpIcon, OpenListIcon, Grid, InputLabel, Tooltip, Box } from \"mds\";\nimport { TextField } from \"@mui/material\";\nimport { DateTimePicker, LocalizationProvider } from \"@mui/x-date-pickers\";\nimport { AdapterLuxon } from \"@mui/x-date-pickers/AdapterLuxon\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport ScheduleIcon from \"@mui/icons-material/Schedule\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\n\ninterface IDateTimePicker {\n value: DateTime | null;\n onChange: (value: DateTime | null) => void;\n classes: any;\n forSearchBlock?: boolean;\n forFilterContained?: boolean;\n label?: string;\n required?: boolean;\n tooltip?: string;\n id: string;\n disabled?: boolean;\n noInputIcon?: boolean;\n classNamePrefix?: string;\n openPickerIcon?: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n dateSelectorOverride: {\n height: 40,\n border: \"#EAEDEE 1px solid\",\n marginLeft: 15,\n backgroundColor: \"#fff\",\n padding: \"0 16px\",\n borderRadius: 5,\n \"&.MuiInput-underline:hover:not(.Mui-disabled):before\": {\n borderBottom: 0,\n },\n \"&:hover\": {\n borderColor: \"#000\",\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n },\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n \"& input\": {\n fontSize: 12,\n fontWeight: 600,\n color: \"#393939\",\n },\n },\n dateSelectorFilterOverride: {\n width: 180,\n height: 42,\n marginLeft: 20,\n padding: 0,\n borderRadius: 5,\n \"&.MuiInput-underline:hover:not(.Mui-disabled):before\": {\n borderBottom: 0,\n },\n \"&:hover\": {\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n },\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n \"& input\": {\n fontSize: 12,\n fontWeight: \"bold\",\n color: \"#081C42\",\n },\n \"@media (max-width: 900px)\": {\n width: 103,\n },\n },\n dateSelectorFormOverride: {\n width: \"100%\",\n maxWidth: 840,\n },\n parentDateOverride: {\n flexGrow: 1,\n },\n textBoxContainer: {\n width: \"calc(100% - 190px)\",\n },\n openListIcon: {\n color: \"#9D9E9D\",\n width: 8,\n marginTop: 2,\n },\n paperOverride: {\n \"& .MuiCalendarPicker-root\": {\n padding: \"0 22px\",\n \"& > div\": {\n padding: 0,\n \"& > div > div.PrivatePickersFadeTransitionGroup-root:first-of-type\":\n {\n color: \"#0A224C\",\n fontWeight: \"bold\",\n },\n \"& > div > div.PrivatePickersFadeTransitionGroup-root:last-of-type\": {\n color: \"#9D9E9D\",\n \"& + button.MuiButtonBase-root\": {\n color: \"#9D9E9D\",\n },\n },\n \"& > div:nth-child(2)\": {\n \"& > div\": {\n width: 0,\n },\n \"& > button.MuiButtonBase-root\": {\n color: \"#0A224C\",\n },\n },\n },\n },\n \"& .MuiTypography-root.MuiTypography-caption\": {\n width: 26,\n height: 26,\n margin: 5,\n color: \"#BCBCBC\",\n fontSize: 10,\n },\n \"& button.MuiPickersDay-root\": {\n fontWeight: \"bold\",\n width: 26,\n height: 26,\n margin: 5,\n textAlign: \"center\",\n \"&.Mui-selected\": {\n backgroundColor: theme.palette.primary.main,\n color: \"#fff\",\n },\n },\n \"& div.MuiPickersDay-hiddenDaySpacingFiller\": {\n width: 26,\n height: 26,\n margin: 5,\n },\n \"& div.PrivatePickersSlideTransition-root\": {\n minHeight: 240,\n },\n \"& div.MuiCalendarPicker-viewTransitionContainer\": {\n borderTop: \"#F0F3F5 1px solid\",\n },\n \"& .MuiClockPicker-arrowSwitcher\": {\n marginRight: 10,\n marginTop: -1,\n \"& > div\": {\n width: 0,\n },\n \"& > button.MuiButtonBase-root\": {\n color: \"#0A224C\",\n },\n \"& + div > div\": {\n width: 255,\n height: 255,\n backgroundColor: \"#fff\",\n marginTop: 30,\n marginBottom: 14,\n border: \"#F0F3F5 3px solid\",\n \"& > div:nth-child(2)\": {\n backgroundColor: \"#B4B5B4\",\n width: 12,\n height: 12,\n \"&::before\": {\n content: \"' '\",\n width: 35,\n height: 35,\n display: \"block\",\n position: \"absolute\",\n border: \"#F0F3F5 3px solid\",\n top: -12,\n left: -12,\n borderRadius: \"100%\",\n },\n },\n \"& > div:nth-child(3)\": {\n backgroundColor: \"#B4B5B4\",\n width: 4,\n },\n \"& > div:last-of-type\": {\n marginTop: 15,\n \"& > span\": {\n color: \"#0A224C\",\n \"&.Mui-selected\": {\n color: \"#fff\",\n },\n \"&[aria-label='1 hours'], &[aria-label='2 hours'], &[aria-label='3 hours'], &[aria-label='4 hours'], &[aria-label='5 hours'], &[aria-label='6 hours'], &[aria-label='7 hours'], &[aria-label='8 hours'], &[aria-label='9 hours'], &[aria-label='10 hours'], &[aria-label='11 hours'], &[aria-label='12 hours']\":\n {\n fontWeight: \"bold\",\n fontSize: 20,\n marginTop: -1,\n },\n },\n },\n },\n },\n },\n ...fieldBasic,\n ...tooltipHelper,\n });\n\nconst DateTimePickerWrapper = ({\n value,\n onChange,\n classes,\n forSearchBlock = false,\n forFilterContained = false,\n label,\n tooltip = \"\",\n required,\n id,\n disabled = false,\n noInputIcon = false,\n classNamePrefix = \"\",\n openPickerIcon,\n}: IDateTimePicker) => {\n let adornment = {};\n\n if (!noInputIcon) {\n adornment = {\n startAdornment: (\n \n \n \n ),\n };\n }\n\n if (forFilterContained) {\n adornment = {\n endAdornment: (\n \n \n \n ),\n };\n }\n\n const classOverridden = `${classNamePrefix}date-time-input ${\n forSearchBlock ? classes.dateSelectorOverride : \"\"\n } ${\n forFilterContained && !forSearchBlock\n ? classes.dateSelectorFilterOverride\n : \"\"\n }`;\n\n const clsName = forSearchBlock\n ? classes.parentDateOverride\n : classes.dateSelectorFormOverride;\n\n const inputItem = (\n \n (\n \n )}\n ampm={false}\n PopperProps={{\n className: classes.paperOverride,\n }}\n inputFormat={\"LL/dd/yyyy HH:mm\"}\n />\n \n );\n\n if (forSearchBlock) {\n return inputItem;\n }\n\n const containerCls = !forFilterContained ? classes.fieldContainer : \"\";\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
    \n \n
    \n \n
    \n
    \n
    \n )}\n
    \n )}\n\n \n {inputItem}\n \n \n
    \n );\n};\n\nexport default withStyles(styles)(DateTimePickerWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 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 styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { Box, breakPoints, CircleIcon } from \"mds\";\n\nconst StatusCountBase = styled.div(({ theme }) => ({\n fontFamily: \"Inter,sans-serif\",\n maxWidth: \"321px\",\n display: \"flex\",\n marginLeft: \"auto\",\n marginRight: \"auto\",\n cursor: \"default\",\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n \"& .mainBox\": {\n flex: 1,\n display: \"flex\",\n padding: \"0 8px 0 8px\",\n [`@media (max-width: ${breakPoints.sm}px)`]: {\n padding: \"0 10px 0 10px\",\n },\n \"& .indicatorIcon\": {\n width: \"20px\",\n height: \"20px\",\n marginTop: \"8px\",\n maxWidth: \"26px\",\n \"& .min-icon\": {\n width: \"16px\",\n height: \"16px\",\n },\n },\n \"& .indicatorContainer\": {\n flex: 1,\n display: \"flex\",\n flexFlow: \"column\",\n \"& .indicatorLabel\": {\n fontSize: \"16px\",\n fontWeight: 600,\n },\n \"& .counterIndicator\": {\n display: \"flex\",\n alignItems: \"center\",\n gap: \"5px\",\n justifyContent: \"space-between\",\n paddingBottom: 0,\n fontSize: \"55px\",\n [`@media (max-width: ${breakPoints.sm}px)`]: {\n paddingBottom: 10,\n fontSize: \"35px\",\n },\n [`@media (max-width: ${breakPoints.lg}px)`]: {\n fontSize: \"45px\",\n },\n [`@media (max-width: ${breakPoints.xl}px)`]: {\n fontSize: \"50px\",\n },\n flexFlow: \"row\",\n fontWeight: 600,\n\n \"& .stat-text\": {\n color: get(theme, \"mutedText\", \"#87888D\"),\n fontSize: \"12px\",\n marginTop: \"8px\",\n },\n \"& .stat-value\": {\n textAlign: \"center\",\n height: \"50px\",\n },\n \"& .min-icon\": {\n marginRight: \"8px\",\n marginTop: \"8px\",\n height: \"10px\",\n width: \"10px\",\n },\n },\n \"& .onlineCounter\": {\n display: \"flex\",\n alignItems: \"center\",\n marginTop: \"5px\",\n \"& .min-icon\": {\n fill: get(theme, \"signalColors.good\", \"#4CCB92\"),\n },\n },\n \"& .offlineCount\": {\n display: \"flex\",\n alignItems: \"center\",\n marginTop: \"8px\",\n \"& .min-icon\": {\n fill: get(theme, \"signalColors.danger\", \"#C51B3F\"),\n },\n },\n },\n },\n}));\n\nexport const StatusCountCard = ({\n onlineCount = 0,\n offlineCount = 0,\n icon = null,\n label = \"\",\n okStatusText = \"Online\",\n notOkStatusText = \"Offline\",\n}: {\n icon: any;\n onlineCount: number;\n offlineCount: number;\n label: string;\n okStatusText?: string;\n notOkStatusText?: string;\n}) => {\n return (\n \n \n \n {label}\n\n \n \n {onlineCount}\n \n \n
    {okStatusText}
    \n
    \n
    \n\n \n {offlineCount}\n \n {\" \"}\n
    {notOkStatusText}
    \n
    \n
    \n
    \n
    \n {icon}\n
    \n
    \n );\n};\n\nexport default StatusCountCard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const STATUS_COLORS = {\n RED: \"#C83B51\",\n GREEN: \"#4CCB92\",\n YELLOW: \"#FFBD62\",\n};\n\nexport const getDriveStatusColor = (\n activeDisks: number,\n totalDrives: number,\n) => {\n if (activeDisks <= totalDrives / 2) {\n return \"bad\";\n }\n if (totalDrives !== 2 && activeDisks === totalDrives / 2 + 1) {\n return \"warn\";\n }\n if (activeDisks === totalDrives) {\n return \"good\";\n }\n};\n\nexport const serverStatusColor = (health_status: string) => {\n switch (health_status) {\n case \"offline\":\n return \"bad\";\n case \"online\":\n return \"good\";\n default:\n return \"warn\";\n }\n};\nexport const getNetworkStatusColor = (\n activeNetwork: number,\n networkTotal: number,\n) => {\n if (activeNetwork <= networkTotal / 2) {\n return \"bad\";\n }\n if (activeNetwork === networkTotal / 2 + 1) {\n return \"warn\";\n }\n if (activeNetwork === networkTotal) {\n return \"good\";\n }\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport {\n IBarChartConfiguration,\n IBarChartRelation,\n IDataSRep,\n ILinearGraphConfiguration,\n IPieChartConfiguration,\n} from \"./Widgets/types\";\n\nexport enum widgetType {\n singleValue = \"singleValue\",\n linearGraph = \"linearGraph\",\n areaGraph = \"areaGraph\",\n barChart = \"barChart\",\n pieChart = \"pieChart\",\n singleRep = \"singleRep\",\n simpleWidget = \"simpleWidget\",\n}\n\nexport interface IDashboardPanel {\n id: number;\n mergedPanels?: IDashboardPanel[];\n title: string;\n data?: string | object[] | IDataSRep[];\n dataOuter?: string | object[];\n type?: widgetType;\n widgetIcon?: any;\n widgetConfiguration?:\n | ILinearGraphConfiguration[]\n | IBarChartConfiguration[]\n | IPieChartConfiguration;\n color?: string;\n fillColor?: string;\n innerLabel?: string;\n labelDisplayFunction?: (value: string) => any;\n disableYAxis?: boolean;\n xAxisFormatter?: (item: string) => string;\n yAxisFormatter?: (item: string) => string;\n customStructure?: IBarChartRelation[];\n}\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport get from \"lodash/get\";\nimport { IDashboardPanel, widgetType } from \"./types\";\nimport {\n getTimeFromTimestamp,\n niceBytes,\n niceDays,\n representationNumber,\n textToRGBColor,\n units,\n} from \"../../../../common/utils\";\nimport { DiagnosticsIcon, HealIcon, UptimeIcon } from \"mds\";\n\nconst colorsMain = [\n \"#C4D4E9\",\n \"#DCD1EE\",\n \"#D1EEE7\",\n \"#EEDED1\",\n \"#AAF38F\",\n \"#F9E6C5\",\n \"#C83B51\",\n \"#F4CECE\",\n \"#D6D6D6\",\n];\n\nconst niceDaysFromNS = (seconds: string) => {\n return niceDays(seconds, \"ns\");\n};\n\nconst roundNumber = (value: string) => {\n return parseInt(value).toString(10);\n};\n\nexport const panelsConfiguration: IDashboardPanel[] = [\n {\n id: 1,\n title: \"Uptime\",\n data: \"N/A\",\n type: widgetType.simpleWidget,\n widgetIcon: ,\n labelDisplayFunction: niceDays,\n },\n {\n id: 50,\n title: \"Capacity\",\n data: [],\n dataOuter: [{ name: \"outer\", value: 100 }],\n widgetConfiguration: {\n outerChart: {\n colorList: [\"#9c9c9c\"],\n innerRadius: 0,\n outerRadius: 0,\n startAngle: 0,\n endAngle: 0,\n },\n innerChart: {\n colorList: colorsMain,\n innerRadius: 20,\n outerRadius: 50,\n startAngle: 90,\n endAngle: -200,\n },\n },\n type: widgetType.pieChart,\n innerLabel: \"N/A\",\n labelDisplayFunction: niceBytes,\n },\n {\n id: 51,\n title: \"Usable Capacity\",\n data: [],\n dataOuter: [{ name: \"outer\", value: 100 }],\n widgetConfiguration: {\n outerChart: {\n colorList: [\"#9c9c9c\"],\n innerRadius: 0,\n outerRadius: 0,\n startAngle: 0,\n endAngle: 0,\n },\n innerChart: {\n colorList: colorsMain,\n innerRadius: 20,\n outerRadius: 50,\n startAngle: 90,\n endAngle: -200,\n },\n },\n type: widgetType.pieChart,\n innerLabel: \"N/A\",\n labelDisplayFunction: niceBytes,\n },\n {\n id: 68,\n title: \"Data Usage Growth\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.areaGraph,\n yAxisFormatter: niceBytes,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 52,\n title: \"Object size distribution\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"a\",\n color: \"#2781B0\",\n background: {\n fill: \"#EEF1F4\",\n },\n greatestColor: \"#081C42\",\n },\n ],\n customStructure: [\n { originTag: \"LESS_THAN_1024_B\", displayTag: \"Less than 1024B\" },\n {\n originTag: \"BETWEEN_1024_B_AND_1_MB\",\n displayTag: \"Between 1024B and 1MB\",\n },\n {\n originTag: \"BETWEEN_1_MB_AND_10_MB\",\n displayTag: \"Between 1MB and 10MB\",\n },\n {\n originTag: \"BETWEEN_10_MB_AND_64_MB\",\n displayTag: \"Between 10MB and 64MB\",\n },\n {\n originTag: \"BETWEEN_64_MB_AND_128_MB\",\n displayTag: \"Between 64MB and 128MB\",\n },\n {\n originTag: \"BETWEEN_128_MB_AND_512_MB\",\n displayTag: \"Between 128MB and 512MB\",\n },\n {\n originTag: \"GREATER_THAN_512_MB\",\n displayTag: \"Greater than 512MB\",\n },\n ],\n type: widgetType.barChart,\n },\n {\n id: 66,\n title: \"Buckets\",\n data: [],\n innerLabel: \"N/A\",\n type: widgetType.singleRep,\n color: \"#0071BC\",\n fillColor: \"#ADD5E0\",\n },\n {\n id: 44,\n title: \"Objects\",\n data: [],\n innerLabel: \"N/A\",\n type: widgetType.singleRep,\n color: \"#0071BC\",\n fillColor: \"#ADD5E0\",\n },\n {\n id: 63,\n title: \"API Data Received Rate\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n strokeWidth: 3,\n },\n ],\n type: widgetType.linearGraph,\n\n xAxisFormatter: getTimeFromTimestamp,\n yAxisFormatter: niceBytes,\n },\n {\n id: 61,\n title: \"Total Open FDs\",\n data: [],\n innerLabel: \"N/A\",\n type: widgetType.singleRep,\n color: \"#22B573\",\n fillColor: \"#A6E8C4\",\n },\n {\n id: 62,\n title: \"Total Goroutines\",\n data: [],\n innerLabel: \"N/A\",\n type: widgetType.singleRep,\n color: \"#F7655E\",\n fillColor: \"#F4CECE\",\n },\n {\n id: 77,\n title: \"Node CPU Usage\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n yAxisFormatter: roundNumber,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 60,\n title: \"API Request Rate\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n yAxisFormatter: roundNumber,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 70,\n title: \"API Data Sent Rate\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n xAxisFormatter: getTimeFromTimestamp,\n yAxisFormatter: niceBytes,\n },\n {\n id: 17,\n title: \"Internode Data Transfer\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n yAxisFormatter: niceBytes,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 73,\n title: \"Node IO\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n yAxisFormatter: niceBytes,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 80,\n title: \"Time Since Last Heal Activity\",\n data: \"N/A\",\n type: widgetType.simpleWidget,\n widgetIcon: ,\n labelDisplayFunction: niceDaysFromNS,\n },\n {\n id: 81,\n title: \"Time Since Last Scan Activity\",\n data: \"N/A\",\n type: widgetType.simpleWidget,\n widgetIcon: ,\n labelDisplayFunction: niceDaysFromNS,\n },\n {\n id: 71,\n title: \"API Request Error Rate\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 76,\n title: \"Node Memory Usage\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n xAxisFormatter: getTimeFromTimestamp,\n yAxisFormatter: niceBytes,\n },\n {\n id: 74,\n title: \"Drive Used Capacity\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n xAxisFormatter: getTimeFromTimestamp,\n yAxisFormatter: niceBytes,\n },\n {\n id: 82,\n title: \"Drives Free Inodes\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n disableYAxis: true,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 11,\n title: \"Node Syscalls\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n yAxisFormatter: roundNumber,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 8,\n title: \"Node File Descriptors\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n yAxisFormatter: roundNumber,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 500,\n mergedPanels: [\n {\n id: 53,\n title: \"Online\",\n data: \"N/A\",\n type: widgetType.singleValue,\n },\n {\n id: 69,\n title: \"Offline\",\n data: \"N/A\",\n type: widgetType.singleValue,\n },\n ],\n title: \"Servers\",\n },\n {\n id: 501,\n mergedPanels: [\n {\n id: 9,\n title: \"Online\",\n data: \"N/A\",\n type: widgetType.singleValue,\n },\n {\n id: 78,\n title: \"Offline\",\n data: \"N/A\",\n type: widgetType.singleValue,\n },\n ],\n title: \"Drives\",\n },\n {\n id: 502,\n mergedPanels: [\n {\n id: 65,\n title: \"Upload\",\n data: \"N/A\",\n type: widgetType.singleValue,\n\n labelDisplayFunction: niceBytes,\n },\n {\n id: 64,\n title: \"Download\",\n data: \"N/A\",\n type: widgetType.singleValue,\n\n labelDisplayFunction: niceBytes,\n },\n ],\n title: \"Network\",\n },\n];\n\nconst calculateMainValue = (elements: any[], metricCalc: string) => {\n if (elements.length === 0) {\n return [\"\", \"0\"];\n }\n\n switch (metricCalc) {\n case \"mean\":\n const sumValues = elements.reduce((accumulator, currValue) => {\n return accumulator + parseFloat(currValue[1]);\n }, 0);\n\n const mean = Math.floor(sumValues / elements.length);\n\n return [\"\", mean.toString()];\n default:\n const sortResult = elements.sort(\n (value1: any[], value2: any[]) => value1[0] - value2[0],\n );\n\n return sortResult[sortResult.length - 1];\n }\n};\n\nconst constructLabelNames = (metrics: any, legendFormat: string) => {\n const keysToReplace = Object.keys(metrics);\n const expToReplace = new RegExp(`{{(${keysToReplace.join(\"|\")})}}`, \"g\");\n\n let replacedLegend = legendFormat.replace(expToReplace, (matchItem) => {\n const nwMatchItem = matchItem.replace(/({{|}})/g, \"\");\n return metrics[nwMatchItem];\n });\n\n const countVarsOpen = (replacedLegend.match(/{{/g) || []).length;\n const countVarsClose = (replacedLegend.match(/}}/g) || []).length;\n\n let cleanLegend = replacedLegend.replace(/{{(.*?)}}/g, \"\");\n\n if (\n countVarsOpen === countVarsClose &&\n countVarsOpen !== 0 &&\n countVarsClose !== 0\n ) {\n keysToReplace.forEach((element) => {\n replacedLegend = replacedLegend.replace(element, metrics[element]);\n });\n\n cleanLegend = replacedLegend;\n }\n\n // In case not all the legends were replaced, we remove the placeholders.\n return cleanLegend;\n};\n\nexport const widgetDetailsToPanel = (\n payloadData: any,\n panelItem: IDashboardPanel,\n) => {\n if (!payloadData) {\n return panelItem;\n }\n\n const typeOfPayload = payloadData.type;\n\n switch (panelItem.type) {\n case widgetType.singleValue:\n case widgetType.simpleWidget:\n if (typeOfPayload === \"stat\" || typeOfPayload === \"singlestat\") {\n // We sort values & get the last value\n let elements = get(payloadData, \"targets[0].result[0].values\", []);\n\n if (elements === null) {\n elements = [];\n }\n\n const metricCalc = get(\n payloadData,\n \"options.reduceOptions.calcs[0]\",\n \"lastNotNull\",\n );\n\n const valueDisplay = calculateMainValue(elements, metricCalc);\n\n const data = panelItem.labelDisplayFunction\n ? panelItem.labelDisplayFunction(valueDisplay[1])\n : valueDisplay[1];\n\n return {\n ...panelItem,\n data,\n };\n }\n break;\n case widgetType.pieChart:\n if (typeOfPayload === \"gauge\") {\n const metricCalc = get(\n payloadData,\n \"options.reduceOptions.calcs[0]\",\n \"lastNotNull\",\n );\n\n let chartSeries = get(payloadData, \"targets\", []).filter(\n (seriesItem: any) => seriesItem !== null,\n );\n\n const values = chartSeries.map((chartTarget: any) => {\n const resultMap =\n chartTarget.result && Array.isArray(chartTarget.result)\n ? chartTarget.result\n : [];\n\n const values = resultMap.map((elementValue: any) => {\n const values = get(elementValue, \"values\", []);\n const metricKeyItem = Object.keys(elementValue.metric);\n const sortResult = values.sort(\n (value1: any[], value2: any[]) =>\n parseInt(value1[0][1]) - parseInt(value2[0][1]),\n );\n\n const metricName = elementValue.metric[metricKeyItem[0]];\n const value = sortResult[sortResult.length - 1];\n return {\n name: metricName,\n value: parseInt(value[1]),\n legend: chartTarget.legendFormat,\n };\n });\n\n return values;\n });\n\n const firstTarget =\n chartSeries[0].result && chartSeries[0].result.length > 0\n ? chartSeries[0].result[0].values\n : [];\n\n const totalValues = calculateMainValue(firstTarget, metricCalc);\n\n const innerLabel = panelItem.labelDisplayFunction\n ? panelItem.labelDisplayFunction(totalValues[1])\n : totalValues[1];\n\n return {\n ...panelItem,\n data: values,\n innerLabel,\n };\n }\n break;\n case widgetType.linearGraph:\n case widgetType.areaGraph:\n if (typeOfPayload === \"graph\") {\n let targets = get(payloadData, \"targets\", []);\n if (targets === null) {\n targets = [];\n }\n\n const series: any[] = [];\n const plotValues: any[] = [];\n\n targets.forEach(\n (\n targetMaster: { legendFormat: string; result: any[] },\n index: number,\n ) => {\n // Add a new serie to plot variables in case it is not from multiple values\n let results = get(targetMaster, \"result\", []);\n const legendFormat = targetMaster.legendFormat;\n if (results === null) {\n results = [];\n }\n\n results.forEach((itemVals: { metric: object; values: any[] }) => {\n // Label Creation\n const labelName = constructLabelNames(\n itemVals.metric,\n legendFormat,\n );\n const keyName = `key_${index}${labelName}`;\n\n // series creation with recently created label\n series.push({\n dataKey: keyName,\n keyLabel: labelName,\n lineColor: \"\",\n fillColor: \"\",\n });\n\n // we iterate over values and create elements\n let values = get(itemVals, \"values\", []);\n if (values === null) {\n values = [];\n }\n\n values.forEach((valInfo: any[]) => {\n const itemIndex = plotValues.findIndex(\n (element) => element.name === valInfo[0],\n );\n\n // Element not exists yet\n if (itemIndex === -1) {\n let itemToPush: any = { name: valInfo[0] };\n itemToPush[keyName] = valInfo[1];\n\n plotValues.push(itemToPush);\n } else {\n plotValues[itemIndex][keyName] = valInfo[1];\n }\n });\n });\n },\n );\n\n const sortedSeries = series.sort((series1: any, series2: any) => {\n if (series1.keyLabel < series2.keyLabel) {\n return -1;\n }\n if (series1.keyLabel > series2.keyLabel) {\n return 1;\n }\n return 0;\n });\n\n const seriesWithColors = sortedSeries.map(\n (serialC: any, index: number) => {\n return {\n ...serialC,\n lineColor: colorsMain[index] || textToRGBColor(serialC.keyLabel),\n fillColor: colorsMain[index] || textToRGBColor(serialC.keyLabel),\n };\n },\n );\n\n const sortedVals = plotValues.sort(\n (value1: any, value2: any) => value1.name - value2.name,\n );\n\n return {\n ...panelItem,\n widgetConfiguration: seriesWithColors,\n data: sortedVals,\n };\n }\n break;\n case widgetType.barChart:\n if (typeOfPayload === \"bargauge\") {\n let chartBars = get(payloadData, \"targets[0].result\", []);\n\n if (chartBars === null) {\n chartBars = [];\n }\n\n const sortFunction = (value1: any[], value2: any[]) =>\n value1[0] - value2[0];\n\n let values = [];\n if (panelItem.customStructure) {\n values = panelItem.customStructure.map((structureItem) => {\n const metricTake = chartBars.find((element: any) => {\n return element.metric.range === structureItem.originTag;\n });\n\n const elements = get(metricTake, \"values\", []);\n\n const sortResult = elements.sort(sortFunction);\n const lastValue = sortResult[sortResult.length - 1] || [\"\", \"0\"];\n\n return {\n name: structureItem.displayTag,\n a: parseInt(lastValue[1]),\n };\n });\n } else {\n // If no configuration is set, we construct the series for bar chart and return the element\n values = chartBars.map((elementValue: any) => {\n const metricKeyItem = Object.keys(elementValue.metric);\n\n const metricName = elementValue.metric[metricKeyItem[0]];\n\n const elements = get(elementValue, \"values\", []);\n\n const sortResult = elements.sort(sortFunction);\n const lastValue = sortResult[sortResult.length - 1] || [\"\", \"0\"];\n return { name: metricName, a: parseInt(lastValue[1]) };\n });\n }\n\n return {\n ...panelItem,\n data: values,\n };\n }\n break;\n case widgetType.singleRep:\n if (typeOfPayload === \"stat\") {\n // We sort values & get the last value\n let elements = get(payloadData, \"targets[0].result[0].values\", []);\n if (elements === null) {\n elements = [];\n }\n const metricCalc = get(\n payloadData,\n \"options.reduceOptions.calcs[0]\",\n \"lastNotNull\",\n );\n\n const valueDisplay = calculateMainValue(elements, metricCalc);\n\n const sortResult = elements.sort(\n (value1: any[], value2: any[]) => value1[0] - value2[0],\n );\n\n let valuesForBackground = [];\n\n if (sortResult.length === 1) {\n valuesForBackground.push({ value: 0 });\n }\n\n sortResult.forEach((eachVal: any) => {\n valuesForBackground.push({ value: parseInt(eachVal[1]) });\n });\n\n const innerLabel = panelItem.labelDisplayFunction\n ? panelItem.labelDisplayFunction(valueDisplay[1])\n : valueDisplay[1];\n\n return {\n ...panelItem,\n data: valuesForBackground,\n innerLabel,\n };\n }\n break;\n }\n\n return panelItem;\n};\n\nconst verifyNumeric = (item: string) => {\n return !isNaN(parseFloat(item));\n};\n\nexport const splitSizeMetric = (val: string) => {\n const splittedText = val.split(\" \");\n // Value is not a size metric, we return as common string\n\n const singleValue = () => {\n let vl = val;\n\n if (verifyNumeric(val)) {\n vl = representationNumber(parseFloat(val));\n }\n return {vl};\n };\n\n if (splittedText.length !== 2) {\n return singleValue();\n }\n\n if (!units.includes(splittedText[1])) {\n return singleValue();\n }\n\n return (\n \n {splittedText[0]}\n {splittedText[1]}\n \n );\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport ZoomOutMapIcon from \"@mui/icons-material/ZoomOutMap\";\nimport { Box } from \"@mui/material\";\nimport { IDashboardPanel } from \"../types\";\n\nimport { openZoomPage } from \"../../dashboardSlice\";\nimport { useAppDispatch } from \"../../../../../store\";\n\nconst ExpandGraphLink = ({ panelItem }: { panelItem: IDashboardPanel }) => {\n const dispatch = useAppDispatch();\n return (\n \n {\n dispatch(openZoomPage(panelItem));\n }}\n className={\"zoom-graph-icon\"}\n >\n \n \n \n );\n};\n\nexport default ExpandGraphLink;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Box, Menu, MenuItem } from \"@mui/material\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport { DownloadIcon } from \"mds\";\nimport { exportComponentAsPNG } from \"react-component-export-image\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { useAppDispatch } from \"../../../../src/store\";\nimport { setErrorSnackMessage } from \"../../../../src/systemSlice\";\n\ninterface IDownloadWidgetDataButton {\n title: any;\n componentRef: any;\n data: any;\n}\n\nconst DownloadWidgetDataButton = ({\n title,\n componentRef,\n data,\n}: IDownloadWidgetDataButton) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const openDownloadMenu = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleCloseDownload = () => {\n setAnchorEl(null);\n };\n const download = (filename: string, text: string) => {\n let element = document.createElement(\"a\");\n element.setAttribute(\"href\", \"data:text/plain;charset=utf-8,\" + text);\n element.setAttribute(\"download\", filename);\n\n element.style.display = \"none\";\n document.body.appendChild(element);\n\n element.click();\n document.body.removeChild(element);\n };\n\n const dispatch = useAppDispatch();\n const onDownloadError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n\n const convertToCSV = (objectToConvert: any) => {\n const array = [Object.keys(objectToConvert[0])].concat(objectToConvert);\n return array\n .map((it) => {\n return Object.values(it).toString();\n })\n .join(\"\\n\");\n };\n\n const widgetDataCSVFileName = () => {\n if (title !== null) {\n return (title + \"_\" + Date.now().toString() + \".csv\")\n .replace(/\\s+/g, \"\")\n .trim()\n .toLowerCase();\n } else {\n return \"widgetData_\" + Date.now().toString() + \".csv\";\n }\n };\n\n const downloadAsCSV = () => {\n if (data !== null && data.length > 0) {\n download(widgetDataCSVFileName(), convertToCSV(data));\n } else {\n let err: ErrorResponseHandler;\n err = {\n errorMessage: \"Unable to download widget data\",\n detailedError: \"Unable to download widget data - data not available\",\n };\n onDownloadError(err);\n }\n };\n\n const downloadAsPNG = () => {\n if (title !== null) {\n const pngFileName = (title + \"_\" + Date.now().toString() + \".png\")\n .replace(/\\s+/g, \"\")\n .trim()\n .toLowerCase();\n exportComponentAsPNG(componentRef, { fileName: pngFileName });\n } else {\n const pngFileName = \"widgetData_\" + Date.now().toString() + \".png\";\n exportComponentAsPNG(componentRef, { fileName: pngFileName });\n }\n };\n\n return (\n \n \n \n {\n handleCloseDownload();\n }}\n >\n {\n downloadAsCSV();\n }}\n >\n Download as CSV\n \n {\n downloadAsPNG();\n }}\n >\n Download as PNG\n \n \n \n \n );\n};\n\nexport default DownloadWidgetDataButton;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { tooltipCommon } from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tooltipCommon,\n });\n\nconst BarChartTooltip = ({\n active,\n payload,\n label,\n barChartConfiguration,\n classes,\n}: any) => {\n if (active) {\n return (\n
    \n
    {label}
    \n {payload &&\n payload.map((pl: any, index: number) => {\n return (\n \n \n
    \n {pl.value}\n
    \n
    \n );\n })}\n \n );\n }\n\n return null;\n};\n\nexport default withStyles(styles)(BarChartTooltip);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useRef, useState } from \"react\";\nimport styled from \"styled-components\";\nimport { Box, breakPoints, Grid, Loader } from \"mds\";\nimport { useSelector } from \"react-redux\";\nimport {\n Bar,\n BarChart,\n Cell,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport { IBarChartConfiguration } from \"./types\";\nimport { widgetCommon } from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { IDashboardPanel } from \"../types\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport ExpandGraphLink from \"./ExpandGraphLink\";\nimport DownloadWidgetDataButton from \"../../DownloadWidgetDataButton\";\nimport BarChartTooltip from \"./tooltips/BarChartTooltip\";\nimport api from \"../../../../../common/api\";\n\ninterface IBarChartWidget {\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n apiPrefix: string;\n zoomActivated?: boolean;\n}\n\nconst BarChartMain = styled.div(({ theme }) => ({\n ...widgetCommon(theme),\n loadingAlign: {\n width: \"100%\",\n paddingTop: \"15px\",\n textAlign: \"center\",\n margin: \"auto\",\n },\n}));\n\nconst CustomizedAxisTick = ({ y, payload }: any) => {\n return (\n \n {payload.value}\n \n );\n};\n\nconst BarChartWidget = ({\n title,\n panelItem,\n timeStart,\n timeEnd,\n apiPrefix,\n zoomActivated = false,\n}: IBarChartWidget) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [data, setData] = useState([]);\n const [result, setResult] = useState(null);\n const [hover, setHover] = useState(false);\n const [biggerThanMd, setBiggerThanMd] = useState(\n window.innerWidth >= breakPoints.md,\n );\n\n const componentRef = useRef();\n const widgetVersion = useSelector(\n (state: AppState) => state.dashboard.widgetLoadVersion,\n );\n\n const onHover = () => {\n setHover(true);\n };\n const onStopHover = () => {\n setHover(false);\n };\n\n useEffect(() => {\n setLoading(true);\n }, [widgetVersion]);\n\n useEffect(() => {\n const handleWindowResize = () => {\n let extMD = false;\n if (window.innerWidth >= breakPoints.md) {\n console.log(\"Bigger\");\n extMD = true;\n }\n setBiggerThanMd(extMD);\n };\n\n window.addEventListener(\"resize\", handleWindowResize);\n\n return () => {\n window.removeEventListener(\"resize\", handleWindowResize);\n };\n }, []);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod =\n timeEnd.toUnixInteger() - timeStart.toUnixInteger();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.toUnixInteger()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.toUnixInteger()}` : \"\"\n }`,\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n setData(widgetsWithValue.data);\n setResult(widgetsWithValue);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n const barChartConfiguration = result\n ? (result.widgetConfiguration as IBarChartConfiguration[])\n : [];\n\n let greatestIndex = 0;\n let currentValue = 0;\n\n if (barChartConfiguration.length === 1) {\n const dataGraph = barChartConfiguration[0];\n data.forEach((item: any, index: number) => {\n if (item[dataGraph.dataKey] > currentValue) {\n currentValue = item[dataGraph.dataKey];\n greatestIndex = index;\n }\n });\n }\n\n return (\n \n \n {!zoomActivated && (\n \n \n
    {title}
    \n
    \n \n {hover && }\n \n \n \n \n \n )}\n {loading && (\n \n \n \n )}\n {!loading && (\n }\n className={zoomActivated ? \"zoomChartCont\" : \"contentContainer\"}\n >\n \n \n \n }\n tickLine={false}\n axisLine={false}\n width={150}\n hide={!biggerThanMd}\n style={{\n fontSize: \"12px\",\n fontWeight: 100,\n }}\n />\n {barChartConfiguration.map((bar) => (\n \n {barChartConfiguration.length === 1 ? (\n \n {data.map((_: any, index: number) => (\n \n ))}\n \n ) : null}\n \n ))}\n \n }\n />\n \n \n \n )}\n \n
    \n );\n};\n\nexport default BarChartWidget;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { getTimeFromTimestamp } from \"../../../../../../common/utils\";\nimport { tooltipCommon } from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tooltipCommon,\n });\n\nconst LineChartTooltip = ({\n active,\n payload,\n label,\n linearConfiguration,\n yAxisFormatter,\n classes,\n}: any) => {\n if (active) {\n return (\n
    \n
    \n {getTimeFromTimestamp(label, true)}\n
    \n {payload &&\n payload.map((pl: any, index: number) => {\n return (\n \n \n
    \n \n {linearConfiguration[index].keyLabel}:{\" \"}\n {yAxisFormatter(pl.value)}\n \n
    \n
    \n );\n })}\n \n );\n }\n\n return null;\n};\n\nexport default withStyles(styles)(LineChartTooltip);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useRef, useState } from \"react\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport {\n Area,\n AreaChart,\n CartesianGrid,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport { Box, breakPoints, Grid, Loader } from \"mds\";\nimport { ILinearGraphConfiguration } from \"./types\";\nimport { widgetCommon } from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { IDashboardPanel } from \"../types\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport api from \"../../../../../common/api\";\nimport LineChartTooltip from \"./tooltips/LineChartTooltip\";\nimport ExpandGraphLink from \"./ExpandGraphLink\";\nimport DownloadWidgetDataButton from \"../../DownloadWidgetDataButton\";\n\ninterface ILinearGraphWidget {\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n apiPrefix: string;\n hideYAxis?: boolean;\n yAxisFormatter?: (item: string) => string;\n xAxisFormatter?: (item: string, var1: boolean, var2: boolean) => string;\n areaWidget?: boolean;\n zoomActivated?: boolean;\n}\n\nconst LinearGraphMain = styled.div(({ theme }) => ({\n ...widgetCommon(theme),\n \"& .chartCont\": {\n position: \"relative\",\n height: 140,\n width: \"100%\",\n },\n \"& .legendChart\": {\n display: \"flex\",\n flexDirection: \"column\",\n flex: \"0 1 auto\",\n maxHeight: 130,\n margin: 0,\n overflowY: \"auto\",\n position: \"relative\",\n textAlign: \"center\",\n width: \"100%\",\n justifyContent: \"flex-start\",\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontWeight: \"bold\",\n fontSize: 12,\n [`@media (max-width: ${breakPoints.md}px)`]: {\n display: \"none\",\n },\n },\n \"& .loadingAlign\": {\n width: 40,\n height: 40,\n textAlign: \"center\",\n margin: \"15px auto\",\n },\n}));\n\nconst LinearGraphWidget = ({\n title,\n timeStart,\n timeEnd,\n panelItem,\n apiPrefix,\n hideYAxis = false,\n areaWidget = false,\n yAxisFormatter = (item: string) => item,\n xAxisFormatter = (item: string, var1: boolean, var2: boolean) => item,\n zoomActivated = false,\n}: ILinearGraphWidget) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [hover, setHover] = useState(false);\n const [data, setData] = useState([]);\n const [csvData, setCsvData] = useState([]);\n const [dataMax, setDataMax] = useState(0);\n const [result, setResult] = useState(null);\n const widgetVersion = useSelector(\n (state: AppState) => state.dashboard.widgetLoadVersion,\n );\n\n const componentRef = useRef(null);\n\n useEffect(() => {\n setLoading(true);\n }, [widgetVersion]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod =\n timeEnd.toUnixInteger() - timeStart.toUnixInteger();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.toUnixInteger()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.toUnixInteger()}` : \"\"\n }`,\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n setData(widgetsWithValue.data);\n setResult(widgetsWithValue);\n setLoading(false);\n let maxVal = 0;\n for (const dp of widgetsWithValue.data) {\n for (const key in dp) {\n if (key === \"name\") {\n continue;\n }\n let val = parseInt(dp[key]);\n\n if (isNaN(val)) {\n val = 0;\n }\n\n if (maxVal < val) {\n maxVal = val;\n }\n }\n }\n setDataMax(maxVal);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n let intervalCount = Math.floor(data.length / 5);\n\n const onHover = () => {\n setHover(true);\n };\n\n const onStopHover = () => {\n setHover(false);\n };\n\n useEffect(() => {\n const fmtData = data.map((el: any) => {\n const date = new Date(el?.name * 1000);\n return {\n ...el,\n name: date,\n };\n });\n\n setCsvData(fmtData);\n }, [data]);\n\n const linearConfiguration = result\n ? (result?.widgetConfiguration as ILinearGraphConfiguration[])\n : [];\n\n const CustomizedDot = (prop: any) => {\n const { cx, cy, index } = prop;\n\n if (index % 3 !== 0) {\n return null;\n }\n return ;\n };\n\n let dspLongDate = false;\n\n if (zoomActivated) {\n dspLongDate = true;\n }\n\n return (\n \n \n {!zoomActivated && (\n \n \n {title}\n \n \n {hover && }\n \n \n {componentRef !== null && (\n \n )}\n \n \n )}\n
    \n \n {loading && }\n {!loading && (\n \n \n \n \n {areaWidget && (\n \n \n \n \n\n \n \n \n )}\n \n \n xAxisFormatter(value, dspLongDate, true)\n }\n interval={intervalCount}\n tick={{\n fontSize: \"68%\",\n fontWeight: \"normal\",\n color: \"#404143\",\n }}\n tickCount={10}\n stroke={\"#082045\"}\n />\n yAxisFormatter(value)}\n tick={{\n fontSize: \"68%\",\n fontWeight: \"normal\",\n color: \"#404143\",\n }}\n stroke={\"#082045\"}\n />\n {linearConfiguration.map((section, index) => {\n return (\n : false}\n />\n );\n })}\n \n }\n wrapperStyle={{\n zIndex: 5000,\n }}\n />\n \n \n \n {!areaWidget && (\n \n {zoomActivated && (\n \n Series\n
    \n
    \n
    \n )}\n\n \n {linearConfiguration.map((section, index) => {\n return (\n \n \n \n {section.keyLabel}\n \n \n );\n })}\n \n
    \n )}\n
    \n )}\n \n
    \n \n
    \n );\n};\n\nexport default LinearGraphWidget;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport styled from \"styled-components\";\nimport { Box, Loader } from \"mds\";\nimport { Cell, Pie, PieChart, ResponsiveContainer } from \"recharts\";\nimport { useSelector } from \"react-redux\";\nimport api from \"../../../../../common/api\";\nimport { IPieChartConfiguration } from \"./types\";\nimport { widgetCommon } from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { IDashboardPanel } from \"../types\";\nimport { splitSizeMetric, widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\n\ninterface IPieChartWidget {\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n apiPrefix: string;\n}\n\nconst PieChartMain = styled.div(({ theme }) => ({\n ...widgetCommon(theme),\n \"& .loadingAlign\": {\n width: \"100%\",\n paddingTop: \"15px\",\n textAlign: \"center\",\n margin: \"auto\",\n },\n \"& .pieChartLabel\": {\n fontSize: 60,\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n fontWeight: \"bold\",\n width: \"100%\",\n \"& .unitText\": {\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontSize: 12,\n },\n },\n \"& .chartContainer\": {\n width: \"100%\",\n height: 140,\n },\n}));\n\nconst PieChartWidget = ({\n title,\n panelItem,\n timeStart,\n timeEnd,\n apiPrefix,\n}: IPieChartWidget) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [dataInner, setDataInner] = useState([]);\n const [dataOuter, setDataOuter] = useState([]);\n const [result, setResult] = useState(null);\n const widgetVersion = useSelector(\n (state: AppState) => state.dashboard.widgetLoadVersion,\n );\n\n useEffect(() => {\n setLoading(true);\n }, [widgetVersion]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod =\n timeEnd.toUnixInteger() - timeStart.toUnixInteger();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.toUnixInteger()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.toUnixInteger()}` : \"\"\n }`,\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n setDataInner(widgetsWithValue.data);\n setDataOuter(widgetsWithValue.dataOuter as object[]);\n setResult(widgetsWithValue);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n const pieChartConfiguration = result\n ? (result.widgetConfiguration as IPieChartConfiguration)\n : [];\n const middleLabel = result?.innerLabel;\n\n const innerColors = get(pieChartConfiguration, \"innerChart.colorList\", []);\n const outerColors = get(pieChartConfiguration, \"outerChart.colorList\", []);\n\n return (\n \n \n {title}\n {loading && (\n \n \n \n )}\n {!loading && (\n \n \n {middleLabel && splitSizeMetric(middleLabel)}\n \n \n \n \n {dataOuter && (\n \n {dataOuter.map((entry, index) => (\n \n ))}\n \n )}\n {dataInner && (\n \n {dataInner.map((entry, index) => {\n return (\n \n );\n })}\n \n )}\n \n \n \n \n )}\n \n \n );\n};\n\nexport default PieChartWidget;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { Loader } from \"mds\";\nimport api from \"../../../../../common/api\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { IDashboardPanel } from \"../types\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\n\ninterface ISimpleWidget {\n iconWidget: any;\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n apiPrefix: string;\n renderFn?: undefined | null | ((arg: Record) => any);\n}\n\nconst SimpleWidgetMain = styled.span(({ theme }) => ({\n display: \"inline-flex\",\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n alignItems: \"center\",\n \"& .icon\": {\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n fill: get(theme, \"signalColors.main\", \"#07193E\"),\n marginRight: 5,\n marginLeft: 12,\n },\n \"& .widgetLabel\": {\n fontWeight: \"bold\",\n textTransform: \"uppercase\",\n marginRight: 10,\n },\n \"& .widgetValue\": {\n marginRight: 25,\n },\n}));\n\nconst SimpleWidget = ({\n iconWidget,\n title,\n panelItem,\n timeStart,\n timeEnd,\n apiPrefix,\n renderFn,\n}: ISimpleWidget) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [data, setData] = useState(\"\");\n const widgetVersion = useSelector(\n (state: AppState) => state.dashboard.widgetLoadVersion,\n );\n\n useEffect(() => {\n setLoading(true);\n }, [widgetVersion]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod =\n timeEnd.toUnixInteger() - timeStart.toUnixInteger();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.toUnixInteger()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.toUnixInteger()}` : \"\"\n }`,\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n setData(widgetsWithValue.data);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n if (renderFn) {\n return renderFn({\n valueToRender: data,\n loading,\n title,\n id: panelItem.id,\n iconWidget: iconWidget,\n });\n }\n return (\n \n {loading && (\n
    \n \n
    \n )}\n {!loading && (\n \n {iconWidget ? iconWidget : null}\n {title}: \n {data}\n \n )}\n
    \n );\n};\n\nexport default SimpleWidget;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box, breakPoints } from \"mds\";\n\nconst DashboardItemBox = ({ children }: { children: any }) => {\n return (\n \n {children}\n \n );\n};\n\nexport default DashboardItemBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { Box, breakPoints, Loader, Tooltip } from \"mds\";\n\nconst StatCardMain = styled.div(({ theme }) => ({\n fontFamily: \"Inter,sans-serif\",\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n maxWidth: \"300px\",\n display: \"flex\",\n marginLeft: \"auto\",\n marginRight: \"auto\",\n cursor: \"default\",\n position: \"relative\",\n width: \"100%\",\n}));\n\nconst NumericStatCard = ({\n value,\n label = \"\",\n icon = null,\n loading = false,\n}: {\n value: string | number;\n label?: any;\n icon?: any;\n loading?: boolean;\n}) => {\n const getContent = () => {\n return (\n \n \n \n {label}\n \n\n \n \n {value}\n \n \n \n \n {}\n {loading ? (\n \n ) : (\n icon\n )}\n \n \n );\n };\n\n return {getContent()};\n};\n\nexport default NumericStatCard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport NumericStatCard from \"./NumericStatCard\";\nimport { BucketsIcon } from \"mds\";\n\nconst BucketsCountItem = ({\n title,\n value,\n loading,\n}: {\n title: string;\n value: string;\n loading?: boolean;\n}) => {\n return (\n }\n value={value}\n loading={loading}\n />\n );\n};\n\nexport default BucketsCountItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport NumericStatCard from \"./NumericStatCard\";\nimport { TotalObjectsIcon } from \"mds\";\n\nconst ObjectsCountItem = ({\n title,\n value,\n loading,\n}: {\n title: string;\n value: string;\n loading?: boolean;\n}) => {\n return (\n }\n value={value}\n loading={loading}\n />\n );\n};\n\nexport default ObjectsCountItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { connect, useSelector } from \"react-redux\";\nimport { IDashboardPanel } from \"../types\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { representationNumber } from \"../../../../../common/utils\";\nimport api from \"../../../../../common/api\";\nimport DashboardItemBox from \"../../DashboardItemBox\";\nimport BucketsCountItem from \"./BucketsCountItem\";\nimport ObjectsCountItem from \"./ObjectsCountItem\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\n\ninterface ISingleRepWidget {\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n\n color?: string;\n fillColor?: string;\n apiPrefix: string;\n}\n\nconst SingleRepWidget = ({\n title,\n panelItem,\n timeStart,\n timeEnd,\n propLoading,\n\n apiPrefix,\n}: ISingleRepWidget) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [result, setResult] = useState(null);\n const widgetVersion = useSelector(\n (state: AppState) => state.dashboard.widgetLoadVersion,\n );\n\n useEffect(() => {\n setLoading(true);\n }, [widgetVersion]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod =\n timeEnd.toUnixInteger() - timeStart.toUnixInteger();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.toUnixInteger()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.toUnixInteger()}` : \"\"\n }`,\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n setResult(widgetsWithValue);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n let repNumber = \"\";\n\n if (result) {\n const resultRep = parseInt(result.innerLabel || \"0\");\n\n if (!isNaN(resultRep)) {\n repNumber = representationNumber(resultRep);\n } else {\n repNumber = \"0\";\n }\n }\n\n const renderById = (id: number) => {\n if (id === 66) {\n return (\n \n \n \n );\n }\n if (id === 44) {\n return (\n \n \n \n );\n }\n\n return null;\n };\n\n return renderById(panelItem.id);\n};\n\nconst connector = connect(null, {\n setErrorSnackMessage: setErrorSnackMessage,\n});\n\nexport default connector(SingleRepWidget);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Box, Loader } from \"mds\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { widgetCommon } from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { splitSizeMetric, widgetDetailsToPanel } from \"../utils\";\nimport { IDashboardPanel } from \"../types\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport api from \"../../../../../common/api\";\n\ninterface ISingleValueWidget {\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n apiPrefix: string;\n renderFn?: (arg: Record) => any;\n}\n\nconst SingleValueWidgetMain = styled.div(({ theme }) => ({\n display: \"flex\",\n height: 140,\n flexDirection: \"column\",\n justifyContent: \"center\",\n \"& .unitText\": {\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontSize: 12,\n },\n \"& .loadingAlign\": {\n width: \"100%\",\n textAlign: \"center\",\n margin: \"auto\",\n },\n \"& .metric\": {\n fontSize: 60,\n lineHeight: 1,\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n fontWeight: 700,\n },\n \"& .titleElement\": {\n fontSize: 10,\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontWeight: 700,\n },\n ...widgetCommon(theme),\n}));\n\nconst SingleValueWidget = ({\n title,\n panelItem,\n timeStart,\n timeEnd,\n apiPrefix,\n renderFn,\n}: ISingleValueWidget) => {\n const dispatch = useAppDispatch();\n\n const [loading, setLoading] = useState(false);\n const [data, setData] = useState(\"\");\n const widgetVersion = useSelector(\n (state: AppState) => state.dashboard.widgetLoadVersion,\n );\n\n useEffect(() => {\n setLoading(true);\n }, [widgetVersion]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod =\n timeEnd.toUnixInteger() - timeStart.toUnixInteger();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.toUnixInteger()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.toUnixInteger()}` : \"\"\n }`,\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n setData(widgetsWithValue.data);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n const valueToRender = splitSizeMetric(data);\n\n if (renderFn) {\n return renderFn({ valueToRender, loading, title, id: panelItem.id });\n }\n return (\n \n {loading && (\n \n \n \n )}\n {!loading && (\n \n {splitSizeMetric(data)}\n {title}\n \n )}\n \n );\n};\n\nexport default SingleValueWidget;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { Box, breakPoints, Loader, ReportedUsageIcon } from \"mds\";\nimport { Cell, Pie, PieChart } from \"recharts\";\nimport { useSelector } from \"react-redux\";\nimport api from \"../../../../../common/api\";\nimport { IDashboardPanel } from \"../types\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport {\n calculateBytes,\n capacityColors,\n niceBytesInt,\n} from \"../../../../../common/utils\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\n\nconst CapacityItemMain = styled.div(({ theme }) => ({\n flex: 1,\n display: \"flex\",\n alignItems: \"center\",\n flexFlow: \"row\",\n \"& .usableLabel\": {\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontSize: \"10px\",\n display: \"flex\",\n flexFlow: \"column\",\n alignItems: \"center\",\n textAlign: \"center\",\n },\n \"& .usedLabel\": {\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontWeight: \"bold\",\n fontSize: \"14px\",\n },\n \"& .totalUsed\": {\n display: \"flex\",\n \"& .value\": {\n fontSize: \"50px\",\n fontFamily: \"Inter\",\n fontWeight: 600,\n alignSelf: \"flex-end\",\n lineHeight: 1,\n },\n \"& .unit\": {\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontWeight: \"bold\",\n fontSize: \"14px\",\n marginLeft: \"12px\",\n alignSelf: \"flex-end\",\n },\n },\n \"& .ofUsed\": {\n marginTop: \"5px\",\n \"& .value\": {\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontWeight: \"bold\",\n fontSize: \"14px\",\n textAlign: \"right\",\n },\n },\n [`@media (max-width: ${breakPoints.sm}px)`]: {\n flexFlow: \"column\",\n },\n}));\n\nconst CapacityItem = ({\n value,\n timeStart,\n timeEnd,\n apiPrefix,\n}: {\n value: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n apiPrefix: string;\n}) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n\n const [totalUsableFree, setTotalUsableFree] = useState(0);\n const [totalUsableFreeRatio, setTotalUsableFreeRatio] = useState(0);\n const [totalUsed, setTotalUsed] = useState(0);\n const [totalUsable, setTotalUsable] = useState(0);\n const widgetVersion = useSelector(\n (state: AppState) => state.dashboard.widgetLoadVersion,\n );\n\n useEffect(() => {\n setLoading(true);\n }, [widgetVersion]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod =\n timeEnd.toUnixInteger() - timeStart.toUnixInteger();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${value.id}/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.toUnixInteger()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.toUnixInteger()}` : \"\"\n }`,\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, value);\n\n let tUsable = 0;\n let tUsed = 0;\n let tFree = 0;\n\n widgetsWithValue.data.forEach((eachArray: any[]) => {\n eachArray.forEach((itemSum) => {\n switch (itemSum.legend) {\n case \"Total Usable\":\n tUsable += itemSum.value;\n break;\n case \"Used Space\":\n tUsed += itemSum.value;\n break;\n case \"Usable Free\":\n tFree += itemSum.value;\n break;\n }\n });\n });\n\n const freeRatio = Math.round((tFree / tUsable) * 100);\n\n setTotalUsableFree(tFree);\n setTotalUsableFreeRatio(freeRatio);\n setTotalUsed(tUsed);\n setTotalUsable(tUsable);\n\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, value, timeEnd, timeStart, dispatch, apiPrefix]);\n\n const usedConvert = calculateBytes(totalUsed, true, false);\n\n const plotValues = [\n {\n value: totalUsableFree,\n color: \"#D6D6D6\",\n label: \"Usable Available Space\",\n },\n {\n value: totalUsed,\n color: capacityColors(totalUsed, totalUsable),\n label: \"Used Space\",\n },\n ];\n return (\n \n \n Capacity\n \n \n \n {`${totalUsableFreeRatio}%`}\n
    \n Free\n \n \n \n {plotValues.map((entry, index) => (\n \n ))}\n \n \n \n \n \n Used:\n \n
    {usedConvert.total}
    \n
    {usedConvert.unit}
    \n
    \n \n
    Of: {niceBytesInt(totalUsable)}
    \n
    \n
    \n\n \n \n {loading ? (\n \n ) : (\n \n )}\n \n \n \n
    \n );\n};\n\nexport default CapacityItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { Box, Loader, SuccessIcon } from \"mds\";\n\nconst TimeStatBase = styled.div(({ theme }) => ({\n display: \"grid\",\n alignItems: \"center\",\n gap: 8,\n height: 33,\n paddingLeft: 15,\n gridTemplateColumns: \"20px 1.5fr .5fr 20px\",\n background: get(theme, \"boxBackground\", \"#FBFAFA\"), // #EBF9EE\n \"& .min-icon\": {\n height: \"12px\",\n width: \"12px\",\n fill: get(theme, \"signalColors.good\", \"#4CCB92\"),\n },\n \"& .ok-icon\": {\n height: \"8px\",\n width: \"8px\",\n fill: get(theme, \"signalColors.good\", \"#4CCB92\"),\n color: get(theme, \"signalColors.good\", \"#4CCB92\"),\n },\n \"& .timeStatLabel\": {\n fontSize: \"12px\",\n color: get(theme, \"signalColors.good\", \"#4CCB92\"),\n fontWeight: 600,\n },\n \"& .timeStatValue\": {\n fontSize: \"12px\",\n color: get(theme, \"signalColors.good\", \"#4CCB92\"),\n },\n}));\n\nconst TimeStatItem = ({\n icon,\n label,\n value,\n loading = false,\n}: {\n icon: any;\n label: any;\n value: string;\n loading?: boolean;\n}) => {\n return (\n \n {loading ? : icon}\n {label}\n {value}\n {value !== \"n/a\" ? : null}\n \n );\n};\n\nexport default TimeStatItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box, breakPoints } from \"mds\";\nimport TimeStatItem from \"../../TimeStatItem\";\n\nexport type SimpleWidgetRenderProps = {\n valueToRender?: any;\n loading?: boolean;\n title?: any;\n id?: number;\n iconWidget?: any;\n};\nconst HealActivityRenderer = ({\n valueToRender = \"\",\n loading = false,\n iconWidget = null,\n}: SimpleWidgetRenderProps) => {\n return (\n \n \n \n Time since last\n {\" \"}\n Heal Activity\n \n }\n value={valueToRender}\n />\n \n );\n};\n\nexport default HealActivityRenderer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box, breakPoints } from \"mds\";\nimport TimeStatItem from \"../../TimeStatItem\";\nimport { SimpleWidgetRenderProps } from \"./HealActivityRenderer\";\n\nconst ScanActivityRenderer = ({\n valueToRender = \"\",\n loading = false,\n iconWidget = null,\n}: SimpleWidgetRenderProps) => {\n return (\n \n \n \n Time since last\n {\" \"}\n Scan Activity\n \n }\n value={valueToRender}\n />\n \n );\n};\n\nexport default ScanActivityRenderer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"mds\";\nimport TimeStatItem from \"../../TimeStatItem\";\n\nexport type SimpleWidgetRenderProps = {\n valueToRender?: any;\n loading?: boolean;\n title?: any;\n id?: number;\n iconWidget?: any;\n};\nconst UptimeActivityRenderer = ({\n valueToRender = \"\",\n loading = false,\n iconWidget = null,\n}: SimpleWidgetRenderProps) => {\n return (\n \n Uptime}\n value={valueToRender}\n />\n \n );\n};\n\nexport default UptimeActivityRenderer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { IDashboardPanel, widgetType } from \"./types\";\nimport BarChartWidget from \"./Widgets/BarChartWidget\";\nimport LinearGraphWidget from \"./Widgets/LinearGraphWidget\";\nimport PieChartWidget from \"./Widgets/PieChartWidget\";\nimport SimpleWidget from \"./Widgets/SimpleWidget\";\nimport SingleRepWidget from \"./Widgets/SingleRepWidget\";\nimport SingleValueWidget from \"./Widgets/SingleValueWidget\";\nimport CapacityItem from \"./Widgets/CapacityItem\";\nimport DashboardItemBox from \"../DashboardItemBox\";\nimport HealActivityRenderer, {\n SimpleWidgetRenderProps,\n} from \"./Widgets/HealActivityRenderer\";\nimport ScanActivityRenderer from \"./Widgets/ScanActivityRenderer\";\nimport UptimeActivityRenderer from \"./Widgets/UptimeActivityRenderer\";\n\nexport const componentToUse = (\n value: IDashboardPanel,\n timeStart: any,\n timeEnd: any,\n loading: boolean,\n apiPrefix: string,\n zoomActivated: boolean = false,\n) => {\n switch (value.type) {\n case widgetType.singleValue:\n return (\n \n );\n case widgetType.simpleWidget:\n let renderFn;\n let CmpToRender: any = null;\n if (value.id === 80) {\n CmpToRender = HealActivityRenderer;\n } else if (value.id === 81) {\n CmpToRender = ScanActivityRenderer;\n } else if (value.id === 1) {\n CmpToRender = UptimeActivityRenderer;\n }\n\n if ([80, 81, 1].includes(value.id)) {\n renderFn = ({\n valueToRender,\n loading,\n title,\n id,\n iconWidget,\n }: SimpleWidgetRenderProps) => {\n return (\n \n );\n };\n }\n return (\n \n );\n case widgetType.pieChart:\n if (value.id === 50) {\n return (\n \n \n \n );\n }\n return (\n \n );\n case widgetType.linearGraph:\n case widgetType.areaGraph:\n return (\n \n );\n case widgetType.barChart:\n return (\n \n );\n case widgetType.singleRep:\n const fillColor = value.fillColor ? value.fillColor : value.color;\n return (\n \n );\n default:\n return null;\n }\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Box } from \"mds\";\nimport { CSSObject } from \"styled-components\";\nimport { breakPoints } from \"mds\";\n\nexport type DLayoutColumnProps = {\n componentId: number;\n sx?: CSSObject;\n};\nexport type DLayoutRowProps = {\n sx?: CSSObject;\n columns: DLayoutColumnProps[];\n};\n\nexport const summaryPanelsLayout: DLayoutRowProps[] = [\n {\n sx: {\n minWidth: 0,\n display: \"grid\",\n gap: \"30px\",\n gridTemplateColumns: \"1fr 1fr 1fr 1fr\",\n [`@media (max-width: ${breakPoints.sm}px)`]: {\n gridTemplateColumns: \"1fr\",\n },\n [`@media (max-width: ${breakPoints.md}px)`]: {\n gridTemplateColumns: \"1fr 1fr\",\n },\n },\n columns: [\n {\n componentId: 66,\n },\n {\n componentId: 44,\n },\n {\n componentId: 500,\n },\n {\n componentId: 501,\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n minWidth: 0, // important to avoid css grid blow out.\n gap: \"30px\",\n gridTemplateColumns: \"1fr 1fr\",\n [`@media (max-width: ${breakPoints.md}px)`]: {\n gridTemplateColumns: \"1fr\",\n },\n },\n columns: [\n {\n componentId: 50,\n },\n {\n componentId: 502,\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gap: \"30px\",\n gridTemplateColumns: \"1fr 1fr 1fr\",\n [`@media (max-width: ${breakPoints.md}px)`]: {\n gridTemplateColumns: \"1fr\",\n },\n },\n columns: [\n {\n componentId: 80,\n },\n {\n componentId: 81,\n },\n {\n componentId: 1,\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gap: \"30px\",\n gridTemplateColumns: \"1fr 1fr\",\n [`@media (max-width: ${breakPoints.md}px)`]: {\n gridTemplateColumns: \"1fr\",\n },\n },\n columns: [\n {\n componentId: 68,\n },\n {\n componentId: 52,\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gap: \"30px\",\n gridTemplateColumns: \"1fr 1fr\",\n [`@media (max-width: ${breakPoints.md}px)`]: {\n gridTemplateColumns: \"1fr\",\n },\n },\n columns: [\n {\n componentId: 63,\n },\n {\n componentId: 70,\n },\n ],\n },\n];\n\nexport const trafficPanelsLayout: DLayoutRowProps[] = [\n {\n sx: {\n display: \"grid\",\n gridTemplateColumns: \"1fr\",\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 60,\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gap: \"30px\",\n gridTemplateColumns: \"1fr 1fr\",\n [`@media (max-width: ${breakPoints.md}px)`]: {\n gridTemplateColumns: \"1fr\",\n },\n },\n columns: [\n {\n componentId: 71,\n sx: {\n flex: 1,\n width: \"50%\",\n flexShrink: 0,\n },\n },\n {\n componentId: 17,\n sx: {\n flex: 1,\n width: \"50%\",\n flexShrink: 0,\n },\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n gridTemplateColumns: \"1fr\",\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 73,\n },\n ],\n },\n];\n\nexport const resourcesPanelsLayout: DLayoutRowProps[] = [\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gridTemplateColumns: \"1fr 1fr\",\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 76,\n },\n {\n componentId: 77,\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gridTemplateColumns: \"1fr 1fr\",\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 82,\n },\n {\n componentId: 74,\n },\n ],\n },\n];\nexport const resourcesPanelsLayoutAdvanced: DLayoutRowProps[] = [\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gridTemplateColumns: \"1fr 1fr\",\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 11,\n },\n {\n componentId: 8,\n },\n ],\n },\n];\n\nexport const RowPanelLayout = ({ children }: { children: any }) => {\n return (\n \n {children}\n \n );\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\n\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { IDashboardPanel } from \"./types\";\nimport { componentToUse } from \"./widgetUtils\";\nimport { closeZoomPage } from \"../dashboardSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IZoomWidget {\n widgetRender: number;\n value: IDashboardPanel | null;\n modalOpen: boolean;\n timeStart: any;\n timeEnd: any;\n apiPrefix: string;\n}\n\nconst ZoomWidget = ({\n value,\n modalOpen,\n timeStart,\n timeEnd,\n apiPrefix,\n}: IZoomWidget) => {\n const dispatch = useAppDispatch();\n if (!value) {\n return null;\n }\n\n return (\n {\n dispatch(closeZoomPage());\n }}\n modalOpen={modalOpen}\n wideLimit={false}\n sx={{\n padding: 0,\n }}\n >\n \n {componentToUse(value, timeStart, timeEnd, true, apiPrefix, true)}\n \n \n );\n};\n\nexport default ZoomWidget;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { Box } from \"mds\";\nimport { Link } from \"react-router-dom\";\nimport { widgetCommon } from \"../Common/FormComponents/common/styleLibrary\";\n\nexport interface ISubInterface {\n message: string;\n fontWeight?: \"normal\" | \"bold\";\n}\n\ninterface ICommonCard {\n title: string;\n metricValue: any;\n metricUnit?: string;\n subMessage?: ISubInterface;\n moreLink?: string;\n rightComponent?: any;\n extraMargin?: boolean;\n}\n\nconst CommonCardItem = styled.div(({ theme }) => ({\n ...widgetCommon(theme),\n \"& .metricText\": {\n fontSize: 70,\n lineHeight: 1.1,\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n fontWeight: \"bold\",\n },\n \"& .unitText\": {\n fontSize: 10,\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontWeight: \"normal\",\n },\n \"& .subHeaderContainer\": {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n },\n \"& .subMessage\": {\n fontSize: 10,\n color: get(theme, \"mutedText\", \"#87888d\"),\n \"&.bold\": {\n fontWeight: \"bold\",\n },\n },\n \"& .headerContainer\": {\n display: \"flex\",\n justifyContent: \"space-between\",\n },\n \"& .viewAll\": {\n fontSize: 10,\n color: get(theme, \"signalColors.danger\", \"#C83B51\"),\n textTransform: \"capitalize\",\n\n \"& a, & a:hover, & a:visited, & a:active\": {\n color: get(theme, \"signalColors.danger\", \"#C83B51\"),\n },\n },\n}));\n\nconst CommonCard = ({\n title,\n metricValue,\n metricUnit,\n subMessage,\n moreLink,\n rightComponent,\n extraMargin = false,\n}: ICommonCard) => {\n const SubHeader = () => {\n return (\n \n
    \n
    \n
    \n \n {metricValue}\n {metricUnit}\n \n
    \n {subMessage && (\n \n {subMessage.message}\n \n )}\n
    \n
    {rightComponent}
    \n
    \n
    \n );\n };\n\n const Header = () => {\n return (\n \n
    \n {title}\n {moreLink && (\n \n \n View All\n \n \n )}\n
    \n
    \n );\n };\n\n return (\n \n \n {metricValue !== \"\" && (\n \n
    \n \n \n )}\n \n \n );\n};\n\nexport default CommonCard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport CommonCard from \"../CommonCard\";\n\ninterface IMergedWidgets {\n title: string;\n leftComponent: any;\n rightComponent: any;\n}\n\nconst MergedWidgets = ({\n title,\n leftComponent,\n rightComponent,\n}: IMergedWidgets) => {\n return (\n \n \n \n );\n};\n\nexport default MergedWidgets;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { Loader, Box } from \"mds\";\nimport { useSelector } from \"react-redux\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { IDashboardPanel } from \"../types\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport api from \"../../../../../common/api\";\n\nconst EntityStateStatItem = ({\n panelItem,\n timeStart,\n timeEnd,\n apiPrefix,\n statLabel,\n}: {\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n apiPrefix: string;\n statLabel: any;\n}) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [data, setData] = useState(\"\");\n const widgetVersion = useSelector(\n (state: AppState) => state.dashboard.widgetLoadVersion,\n );\n\n useEffect(() => {\n setLoading(true);\n }, [widgetVersion]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod =\n timeEnd.toUnixInteger() - timeStart.toUnixInteger();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.toUnixInteger()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.toUnixInteger()}` : \"\"\n }`,\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n setData(widgetsWithValue.data);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n let toRender = loading ? (\n \n \n \n ) : (\n \n {data}\n {statLabel}\n \n );\n\n return toRender;\n};\n\nexport default EntityStateStatItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { Box, breakPoints } from \"mds\";\n\nconst DualSTCardContent = styled.div(({ theme }) => ({\n fontFamily: \"Inter,sans-serif\",\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n maxWidth: \"321px\",\n display: \"flex\",\n marginLeft: \"auto\",\n marginRight: \"auto\",\n cursor: \"default\",\n \"& .stat-text\": {\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontSize: \"12px\",\n marginTop: \"8px\",\n },\n}));\n\nconst DualStatCard = ({\n statItemLeft = null,\n statItemRight = null,\n icon = null,\n label = \"\",\n}: {\n statItemLeft: any;\n statItemRight: any;\n icon: any;\n label: string;\n}) => {\n const getContent = () => {\n return (\n \n \n \n {label}\n \n\n \n {statItemLeft}\n {statItemRight}\n \n \n \n {icon}\n \n \n );\n };\n\n return {getContent()};\n};\n\nexport default DualStatCard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { CircleIcon, DrivesIcon, ServersIcon, Box } from \"mds\";\nimport EntityStateStatItem from \"./EntityStateStatItem\";\nimport DualStatCard from \"./DualStatCard\";\nimport { IDashboardPanel } from \"../types\";\n\nconst StateIndicator = styled.div(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n marginTop: \"5px\",\n gap: 8,\n \"&.online\": {\n \"& .min-icon\": {\n margin: 0,\n fill: get(theme, \"signalColors.good\", \"#4CCB92\"),\n },\n },\n \"&.offline\": {\n \"& .min-icon\": {\n margin: 0,\n fill: get(theme, \"signalColors.danger\", \"#C51B3F\"),\n },\n },\n \"& .indicatorText\": {\n color: get(theme, \"mutedText\", \"#C51B3F\"),\n fontSize: 12,\n },\n}));\n\nconst EntityStateItemRenderer = ({\n info,\n timeStart,\n timeEnd,\n apiPrefix,\n}: {\n info: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n apiPrefix: string;\n}) => {\n const { mergedPanels = [], id } = info;\n const [leftPanel, rightPanel] = mergedPanels;\n\n const lStatItem = (\n \n \n Online\n \n }\n />\n );\n const rStatItem = (\n \n \n Offline\n \n }\n />\n );\n\n let statIcon = null;\n let statLabel = \"\";\n if (id === 500) {\n statIcon = ;\n statLabel = \"Servers\";\n } else if (id === 501) {\n statIcon = ;\n statLabel = \"Drives\";\n }\n\n return (\n \n );\n};\nexport default EntityStateItemRenderer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { Loader, NetworkGetIcon, Box } from \"mds\";\n\nconst NetworkGetBase = styled.div(({ theme }) => ({\n \"& .putLabel\": {\n display: \"flex\",\n gap: 10,\n alignItems: \"center\",\n marginTop: \"10px\",\n\n \"& .min-icon\": {\n height: 15,\n width: 15,\n fill: get(theme, \"signalColors.good\", \"#4CCB92\"),\n },\n\n \"& .getText\": {\n fontSize: \"18px\",\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontWeight: \"bold\",\n },\n \"& .valueText\": {\n fontSize: 50,\n fontFamily: \"Inter\",\n fontWeight: 600,\n },\n },\n}));\n\nconst NetworkGetItem = ({\n value,\n loading,\n}: {\n value: any;\n loading: boolean;\n title?: any;\n id?: number;\n}) => {\n return (\n \n \n GET\n {loading ? (\n \n ) : (\n \n )}\n \n {value}\n \n );\n};\n\nexport default NetworkGetItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { Box, Loader, NetworkPutIcon } from \"mds\";\n\nconst NetworkPutBase = styled.div(({ theme }) => ({\n \"& .putLabel\": {\n display: \"flex\",\n gap: 10,\n alignItems: \"center\",\n marginTop: \"10px\",\n\n \"& .min-icon\": {\n height: 15,\n width: 15,\n fill: get(theme, \"signalColors.info\", \"#2781B0\"),\n },\n\n \"& .putText\": {\n fontSize: \"18px\",\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontWeight: \"bold\",\n },\n \"& .valueText\": {\n fontSize: 50,\n fontFamily: \"Inter\",\n fontWeight: 600,\n },\n },\n}));\n\nconst NetworkPutItem = ({\n value,\n loading,\n}: {\n value: any;\n loading: boolean;\n title?: any;\n id?: number;\n}) => {\n return (\n \n \n PUT\n {loading ? (\n \n ) : (\n \n )}\n \n {value}\n \n );\n};\n\nexport default NetworkPutItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { Box, breakPoints, SpeedtestIcon } from \"mds\";\nimport { IDashboardPanel } from \"../types\";\nimport SingleValueWidget from \"./SingleValueWidget\";\nimport NetworkGetItem from \"./NetworkGetItem\";\nimport NetworkPutItem from \"./NetworkPutItem\";\n\nconst NetworkItemBase = styled.div(({ theme }) => ({\n flex: 1,\n display: \"flex\",\n alignItems: \"center\",\n flexFlow: \"row\",\n gap: \"15px\",\n \"& .unitText\": {\n fontSize: \"14px\",\n color: get(theme, \"mutedText\", \"#87888d\"),\n marginLeft: \"5px\",\n },\n \"& .unit\": {\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontSize: \"18px\",\n marginLeft: \"12px\",\n marginTop: \"10px\",\n },\n [`@media (max-width: ${breakPoints.sm}px)`]: {\n flexFlow: \"column\",\n },\n}));\n\nconst NetworkItem = ({\n value,\n timeStart,\n timeEnd,\n apiPrefix,\n}: {\n value: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n apiPrefix: string;\n}) => {\n const { mergedPanels = [] } = value;\n const [leftPanel, rightPanel] = mergedPanels;\n\n const rightCmp = (\n {\n return (\n \n );\n }}\n />\n );\n const leftCmp = (\n {\n return (\n \n );\n }}\n />\n );\n\n return (\n \n \n Network\n \n \n \n {leftCmp}\n \n \n \n \n {rightCmp}\n \n \n \n \n \n \n );\n};\n\nexport default NetworkItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { componentToUse } from \"../widgetUtils\";\nimport { IDashboardPanel } from \"../types\";\nimport MergedWidgets from \"../MergedWidgets\";\nimport EntityStateItemRenderer from \"./EntityStateItemRenderer\";\nimport NetworkItem from \"./NetworkItem\";\nimport DashboardItemBox from \"../../DashboardItemBox\";\n\nconst MergedWidgetsRenderer = ({\n info,\n timeStart,\n timeEnd,\n loading,\n apiPrefix,\n}: {\n info: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n loading: boolean;\n apiPrefix: string;\n}) => {\n const { mergedPanels = [], title = \"\", id } = info;\n const [leftPanel, rightPanel] = mergedPanels;\n\n const renderById = () => {\n if ([500, 501].includes(id)) {\n return (\n \n \n \n );\n }\n\n if (id === 502) {\n return (\n \n \n \n );\n }\n\n return (\n \n );\n };\n\n return renderById();\n};\n\nexport default MergedWidgetsRenderer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 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 styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { Box, breakPoints, CircleIcon } from \"mds\";\nimport { niceDays } from \"../../../../common/utils\";\nimport {\n getDriveStatusColor,\n getNetworkStatusColor,\n serverStatusColor,\n} from \"./Utils\";\nimport { ServerProperties } from \"api/consoleApi\";\n\ninterface ICardProps {\n server: ServerProperties;\n index: number;\n}\n\nconst ServerStatItemMain = styled.div(({ theme }) => ({\n alignItems: \"baseline\",\n padding: \"5px\",\n display: \"flex\",\n gap: \"5px\",\n \"& .StatBox\": {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexFlow: \"column\",\n \"& .stat-text\": {\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontSize: \"12px\",\n },\n \"& .stat-value\": {\n fontSize: \"18px\",\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n display: \"flex\",\n fontWeight: 500,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n \"& .stat-container\": {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexFlow: \"column\",\n marginLeft: \"5px\",\n maxWidth: \"40px\",\n \"&:first-of-type(svg)\": {\n fill: get(theme, \"mutedText\", \"#87888d\"),\n },\n \"& .stat-indicator\": {\n marginRight: \"0px\",\n justifyContent: \"center\",\n alignItems: \"center\",\n textAlign: \"center\",\n \"& svg.min-icon\": {\n width: \"10px\",\n height: \"10px\",\n },\n \"&.good\": {\n \"& svg.min-icon\": {\n fill: get(theme, \"signalColors.good\", \"#4CCB92\"),\n },\n },\n \"&.warn\": {\n \"& svg.min-icon\": {\n fill: get(theme, \"signalColors.warning\", \"#FFBD62\"),\n },\n },\n \"&.bad\": {\n \"& svg.min-icon\": {\n fill: get(theme, \"signalColors.danger\", \"#C51B3F\"),\n },\n },\n },\n },\n },\n },\n}));\n\nconst ServerInfoItemMain = styled.div(({ theme }) => ({\n display: \"flex\",\n alignItems: \"flex-start\",\n flexFlow: \"column\",\n flex: 1,\n \"& .server-state\": {\n marginLeft: \"8px\",\n \"& .min-icon\": {\n height: \"14px\",\n width: \"14px\",\n },\n \"&.good\": {\n \"& svg.min-icon\": {\n fill: get(theme, \"signalColors.good\", \"#4CCB92\"),\n },\n },\n \"&.warn\": {\n \"& svg.min-icon\": {\n fill: get(theme, \"signalColors.warning\", \"#FFBD62\"),\n },\n },\n \"&.bad\": {\n \"& svg.min-icon\": {\n fill: get(theme, \"signalColors.danger\", \"#C51B3F\"),\n },\n },\n },\n}));\n\nconst ServerStatItem = ({\n label = \"\",\n value = \"\",\n statusColor = \"warn\",\n hasStatus = false,\n}: {\n label?: string;\n value?: any;\n hasStatus?: boolean;\n statusColor?: \"good\" | \"warn\" | \"bad\";\n}) => {\n return (\n \n \n
    \n {value}{\" \"}\n \n {hasStatus ? (\n \n \n \n ) : (\n \n )}\n \n
    \n
    {label}
    \n
    \n
    \n );\n};\n\nconst ServerInfoItem = ({ server }: ICardProps) => {\n const networkKeys = Object.keys(get(server, \"network\", {}));\n const networkTotal = networkKeys.length;\n const totalDrives = server.drives ? server.drives.length : 0;\n const activeNetwork = networkKeys.reduce((acc: number, currValue: string) => {\n const item = server.network ? server.network[currValue] : \"\";\n if (item === \"online\") {\n return acc + 1;\n }\n return acc;\n }, 0);\n const activeDisks = server.drives\n ? server.drives.filter((element) => element.state === \"ok\").length\n : 0;\n return (\n \n \n \n \n {server.endpoint || \"\"}\n \n {server?.state && (\n \n \n \n )}\n \n\n \n \n \n \n \n \n Version:\n {server.version ? server.version : \"N/A\"}\n \n }\n />\n \n \n );\n};\nexport default ServerInfoItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport get from \"lodash/get\";\nimport styled from \"styled-components\";\nimport { niceBytes } from \"../../../../common/utils\";\nimport { Box, breakPoints, CircleIcon, SizeChart } from \"mds\";\nimport { ServerDrives } from \"api/consoleApi\";\nimport { STATUS_COLORS } from \"./Utils\";\n\ninterface ICardProps {\n drive: ServerDrives;\n}\n\nconst driveStatusColor = (health_status: string) => {\n switch (health_status) {\n case \"offline\":\n return STATUS_COLORS.RED;\n case \"ok\":\n return STATUS_COLORS.GREEN;\n default:\n return STATUS_COLORS.YELLOW;\n }\n};\n\nconst DataContainerMain = styled.div(({ theme }) => ({\n flex: 1,\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: \"20px\",\n marginTop: \"10px\",\n flexFlow: \"row\",\n \"& .info-label\": {\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontSize: \"12px\",\n textAlign: \"center\",\n },\n \"& .info-value\": {\n fontSize: \"18px\",\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n display: \"flex\",\n fontWeight: 500,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n [`@media (max-width: ${breakPoints.sm}px)`]: {\n flexFlow: \"column\",\n },\n}));\n\nconst DriveInfoItem = ({ drive }: ICardProps) => {\n const totalSpace = drive.totalSpace || 0;\n const usedSpace = drive.usedSpace || 0;\n\n return (\n \n \n \n
    {drive.endpoint || \"\"}
    \n {drive.state && }\n \n\n \n \n \n \n\n \n \n
    \n {niceBytes(\n drive.totalSpace ? drive.totalSpace.toString() : \"0\",\n )}\n
    \n \n \n\n \n
    \n {niceBytes(drive.usedSpace ? drive.usedSpace.toString() : \"0\")}\n
    \n \n \n \n
    \n {niceBytes(\n drive.availableSpace ? drive.availableSpace.toString() : \"0\",\n )}\n
    \n \n \n \n
    \n \n \n );\n};\n\nexport default DriveInfoItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Accordion, Box, breakPoints } from \"mds\";\nimport ServerInfoItem from \"./ServerInfoItem\";\nimport DriveInfoItem from \"./DriveInfoItem\";\nimport { ServerProperties } from \"api/consoleApi\";\n\nconst ServersList = ({ data }: { data: ServerProperties[] }) => {\n const [expanded, setExpanded] = React.useState(\n data.length > 1 ? \"\" : data[0].endpoint + \"-0\",\n );\n\n const handleClick = (key: string) => {\n setExpanded(key);\n };\n\n return (\n \n \n Servers ({data.length})\n \n \n {data.map((serverInfo, index) => {\n const key = `${serverInfo.endpoint}-${index}`;\n const isExpanded = expanded === key;\n return (\n {\n if (!isExpanded) {\n handleClick(key);\n } else {\n handleClick(\"\");\n }\n }}\n id={\"key\"}\n title={}\n sx={{ marginBottom: 15 }}\n >\n \n Drives ({serverInfo.drives?.length})\n \n \n {serverInfo.drives?.map((driveInfo, index) => {\n return (\n \n );\n })}\n \n \n );\n })}\n \n \n );\n};\n\nexport default ServersList;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport get from \"lodash/get\";\nimport styled from \"styled-components\";\nimport { Box, breakPoints, Tooltip } from \"mds\";\n\nconst CounterCardMain = styled.div(({ theme }) => ({\n fontFamily: \"Inter,sans-serif\",\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n maxWidth: \"300px\",\n display: \"flex\",\n marginLeft: \"auto\",\n marginRight: \"auto\",\n cursor: \"default\",\n position: \"relative\",\n width: \"100%\",\n}));\n\nconst CounterCard = ({\n counterValue,\n label = \"\",\n icon = null,\n actions = null,\n}: {\n counterValue: string | number;\n label?: any;\n icon?: any;\n actions?: any;\n}) => {\n return (\n \n \n \n \n {label}\n \n\n \n = 5 ? 50 : 55,\n [`@media (max-width: ${breakPoints.sm}px)`]: {\n flexFlow: \"column\",\n maxWidth: 200,\n fontSize: counterValue.toString().length >= 5 ? 20 : 35,\n },\n [`@media (max-width: ${breakPoints.md}px)`]: {\n fontSize: counterValue.toString().length >= 5 ? 28 : 35,\n },\n [`@media (max-width: ${breakPoints.lg}px)`]: {\n fontSize: counterValue.toString().length >= 5 ? 28 : 36,\n },\n [`@media (max-width: ${breakPoints.xl}px)`]: {\n fontSize: counterValue.toString().length >= 5 ? 45 : 50,\n },\n }}\n >\n {counterValue}\n \n \n \n \n {icon}\n\n \n {actions}\n \n \n \n \n );\n};\n\nexport default CounterCard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport get from \"lodash/get\";\nimport styled from \"styled-components\";\nimport { Box, Tooltip } from \"mds\";\nimport { Cell, Pie, PieChart } from \"recharts\";\n\nconst ReportedUsageMain = styled.div(({ theme }) => ({\n maxHeight: \"110px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n fontSize: \"19px\",\n\n padding: \"10px\",\n \"& .unit-value\": {\n fontSize: \"50px\",\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n },\n \"& .unit-type\": {\n fontSize: \"18px\",\n color: get(theme, \"mutedText\", \"#87888d\"),\n marginTop: \"20px\",\n marginLeft: \"5px\",\n },\n\n \"& .usage-label\": {\n display: \"flex\",\n alignItems: \"center\",\n fontSize: \"16px\",\n fontWeight: 600,\n marginRight: \"20px\",\n marginTop: \"-10px\",\n \"& .min-icon\": {\n marginLeft: \"10px\",\n height: 16,\n width: 16,\n },\n },\n}));\n\nconst ReportedUsage = ({\n usageValue,\n total,\n unit,\n}: {\n usageValue: string;\n total: number | string;\n unit: string;\n}) => {\n const plotValues = [\n { value: total, color: \"#D6D6D6\", label: \"Free Space\" },\n {\n value: usageValue,\n color: \"#073052\",\n label: \"Used Space\",\n },\n ];\n\n return (\n \n \n
    \n Reported Usage\n
    \n\n \n \n {total}\n \n \n \n
    \n\n \n \n \n
    \n \n \n {plotValues.map((entry, index) => (\n \n ))}\n \n \n
    \n \n
    \n
    \n
    \n );\n};\n\nexport default ReportedUsage;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport {\n ArrowRightIcon,\n Box,\n breakPoints,\n BucketsIcon,\n Button,\n DiagnosticsMenuIcon,\n DrivesIcon,\n FormatDrivesIcon,\n HealIcon,\n HelpBox,\n PrometheusErrorIcon,\n ServersIcon,\n StorageIcon,\n TotalObjectsIcon,\n UptimeIcon,\n} from \"mds\";\nimport { calculateBytes, representationNumber } from \"../../../../common/utils\";\nimport StatusCountCard from \"./StatusCountCard\";\nimport groupBy from \"lodash/groupBy\";\nimport ServersList from \"./ServersList\";\nimport CounterCard from \"./CounterCard\";\nimport ReportedUsage from \"./ReportedUsage\";\nimport { Link } from \"react-router-dom\";\nimport { IAM_PAGES } from \"../../../../common/SecureComponent/permissions\";\nimport TimeStatItem from \"../TimeStatItem\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport { AdminInfoResponse, ServerDrives } from \"api/consoleApi\";\n\nconst BoxItem = ({ children }: { children: any }) => {\n return (\n \n {children}\n \n );\n};\n\ninterface IDashboardProps {\n usage: AdminInfoResponse | undefined;\n}\n\nconst getServersList = (usage: AdminInfoResponse | undefined) => {\n if (usage && usage.servers) {\n return [...usage.servers].sort(function (a, b) {\n const nameA = a.endpoint?.toLowerCase() || \"\";\n const nameB = b.endpoint?.toLowerCase() || \"\";\n if (nameA < nameB) {\n return -1;\n }\n if (nameA > nameB) {\n return 1;\n }\n return 0;\n });\n }\n\n return [];\n};\n\nconst prettyUsage = (usage: string | undefined) => {\n if (usage === undefined) {\n return { total: \"0\", unit: \"Mi\" };\n }\n\n return calculateBytes(usage);\n};\n\nconst BasicDashboard = ({ usage }: IDashboardProps) => {\n const usageValue = usage && usage.usage ? usage.usage.toString() : \"0\";\n const usageToRepresent = prettyUsage(usageValue);\n\n const { lastScan = \"n/a\", lastHeal = \"n/a\", upTime = \"n/a\" } = {};\n\n const serverList = getServersList(usage);\n\n let allDrivesArray: ServerDrives[] = [];\n\n serverList.forEach((server) => {\n const drivesInput = server.drives?.map((drive) => {\n return drive;\n });\n if (drivesInput) {\n allDrivesArray = [...allDrivesArray, ...drivesInput];\n }\n });\n\n const serversGroup = groupBy(serverList, \"state\");\n const { offline: offlineServers = [], online: onlineServers = [] } =\n serversGroup;\n const drivesGroup = groupBy(allDrivesArray, \"state\");\n const { offline: offlineDrives = [], ok: onlineDrives = [] } = drivesGroup;\n return (\n \n \n \n \n \n }\n counterValue={usage ? representationNumber(usage.buckets) : 0}\n actions={\n \n \n {}}\n label={\"Browse\"}\n icon={}\n variant={\"regular\"}\n style={{\n padding: 5,\n height: 30,\n fontSize: 14,\n marginTop: 20,\n }}\n />\n \n \n }\n />\n \n \n }\n counterValue={usage ? representationNumber(usage.objects) : 0}\n />\n \n\n \n }\n />\n \n \n }\n />\n \n\n \n \n\n \n }\n label={\n \n \n Time since last\n {\" \"}\n Heal Activity\n \n }\n value={lastHeal}\n />\n }\n label={\n \n \n Time since last\n {\" \"}\n Scan Activity\n \n }\n value={lastScan}\n />\n }\n label={\"Uptime\"}\n value={upTime}\n />\n \n \n \n \n }\n label={\"Backend type\"}\n value={usage?.backend?.backendType ?? \"Unknown\"}\n />\n }\n label={\"Standard storage class parity\"}\n value={usage?.backend?.standardSCParity?.toString() ?? \"n/a\"}\n />\n }\n label={\"Reduced redundancy storage class parity\"}\n value={usage?.backend?.rrSCParity?.toString() ?? \"n/a\"}\n />\n \n\n \n \n \n \n {usage?.advancedMetricsStatus === \"not configured\" && (\n \n }\n title={\"We can’t retrieve advanced metrics at this time.\"}\n help={\n \n \n MinIO Dashboard will display basic metrics as we couldn’t\n connect to Prometheus successfully. Please try again in a\n few minutes. If the problem persists, you can review your\n configuration and confirm that Prometheus server is up and\n running.\n \n \n \n Read more about Prometheus on our Docs site.\n \n \n \n }\n />\n \n )}\n \n \n );\n};\n\nexport default BasicDashboard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport {\n Box,\n Button,\n Grid,\n HelpBox,\n PageLayout,\n ProgressBar,\n PrometheusErrorIcon,\n SyncIcon,\n TabItemProps,\n Tabs,\n} from \"mds\";\nimport { IDashboardPanel } from \"./types\";\nimport { panelsConfiguration } from \"./utils\";\nimport { componentToUse } from \"./widgetUtils\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport {\n DLayoutColumnProps,\n DLayoutRowProps,\n resourcesPanelsLayout,\n resourcesPanelsLayoutAdvanced,\n RowPanelLayout,\n summaryPanelsLayout,\n trafficPanelsLayout,\n} from \"./Widgets/LayoutUtil\";\nimport { getUsageAsync } from \"../dashboardThunks\";\nimport { reloadWidgets } from \"../dashboardSlice\";\nimport { selFeatures } from \"../../consoleSlice\";\nimport { AdminInfoResponse } from \"api/consoleApi\";\nimport ZoomWidget from \"./ZoomWidget\";\nimport DateRangeSelector from \"../../Common/FormComponents/DateRangeSelector/DateRangeSelector\";\nimport MergedWidgetsRenderer from \"./Widgets/MergedWidgetsRenderer\";\nimport BasicDashboard from \"../BasicDashboard/BasicDashboard\";\n\ninterface IPrDashboard {\n apiPrefix?: string;\n usage: AdminInfoResponse | null;\n}\n\nconst PrDashboard = ({ apiPrefix = \"admin\", usage }: IPrDashboard) => {\n const dispatch = useAppDispatch();\n const loadingUsage = useSelector(\n (state: AppState) => state.dashboard.loadingUsage,\n );\n const zoomOpen = useSelector(\n (state: AppState) => state.dashboard.zoom.openZoom,\n );\n const zoomWidget = useSelector(\n (state: AppState) => state.dashboard.zoom.widgetRender,\n );\n const features = useSelector(selFeatures);\n const obOnly = !!features?.includes(\"object-browser-only\");\n let hideMenu = false;\n if (features?.includes(\"hide-menu\")) {\n hideMenu = true;\n } else if (obOnly) {\n hideMenu = true;\n }\n\n const [timeStart, setTimeStart] = useState(null);\n const [timeEnd, setTimeEnd] = useState(null);\n const panelInformation = panelsConfiguration;\n const [curTab, setCurTab] = useState(\n usage?.advancedMetricsStatus === \"not configured\" ? \"info\" : \"usage\",\n );\n\n const getPanelDetails = (id: number) => {\n return panelInformation.find((panel) => panel.id === id);\n };\n\n const triggerLoad = () => {\n dispatch(reloadWidgets());\n };\n\n const renderCmpByConfig = (\n panelInfo: IDashboardPanel | undefined,\n key: string,\n ) => {\n return (\n \n {panelInfo ? (\n \n \n {panelInfo.mergedPanels ? (\n \n ) : (\n componentToUse(\n panelInfo,\n timeStart,\n timeEnd,\n true,\n apiPrefix,\n zoomOpen,\n )\n )}\n \n \n ) : null}\n \n );\n };\n\n const renderPanelItems = (layoutRows: DLayoutRowProps[]) => {\n return layoutRows.reduce((prev: any[], rowItem, rIdx) => {\n const { columns = [] } = rowItem;\n const cellItems: any[] = columns.map(\n (cellItem: DLayoutColumnProps, colIdx: number) => {\n const panelInfo = getPanelDetails(cellItem.componentId);\n return renderCmpByConfig(panelInfo, `${rIdx}-${colIdx}`);\n },\n );\n const rowConfig = (\n \n {cellItems}\n \n );\n return [...prev, rowConfig];\n }, []);\n };\n\n const renderSummaryPanels = () => {\n return renderPanelItems(summaryPanelsLayout);\n };\n\n const renderTrafficPanels = () => {\n return renderPanelItems(trafficPanelsLayout);\n };\n\n const renderResourcesPanels = () => {\n return renderPanelItems(resourcesPanelsLayout);\n };\n\n const renderAdvancedResourcesPanels = () => {\n return renderPanelItems(resourcesPanelsLayoutAdvanced);\n };\n\n const prometheusOptionsDisabled =\n usage?.advancedMetricsStatus === \"not configured\";\n\n const searchBox = (\n \n {curTab === \"info\" ? (\n \n \n \n Server Information\n \n \n \n \n \n {\n dispatch(getUsageAsync());\n }}\n disabled={loadingUsage}\n icon={}\n label={\"Sync\"}\n />\n \n \n \n \n ) : (\n \n )}\n \n );\n\n const infoTab: TabItemProps = {\n tabConfig: { label: \"Info\", id: \"info\", disabled: false },\n content: (\n \n {(!usage || loadingUsage) && }\n {usage && !loadingUsage && (\n \n {searchBox}\n \n \n )}\n \n ),\n };\n\n const prometheusTabs: TabItemProps[] = [\n {\n tabConfig: {\n label: \"Usage\",\n id: \"usage\",\n disabled: prometheusOptionsDisabled,\n },\n content: (\n \n {searchBox}\n \n {usage?.advancedMetricsStatus === \"unavailable\" && (\n }\n title={\"We can’t retrieve advanced metrics at this time.\"}\n help={\n \n It looks like Prometheus is not available or reachable at\n the moment.\n \n }\n />\n )}\n {panelInformation.length ? renderSummaryPanels() : null}\n \n \n ),\n },\n {\n tabConfig: {\n label: \"Traffic\",\n id: \"traffic\",\n disabled: prometheusOptionsDisabled,\n },\n content: (\n \n {searchBox}\n \n {usage?.advancedMetricsStatus === \"unavailable\" && (\n }\n title={\"We can’t retrieve advanced metrics at this time.\"}\n help={\n \n It looks like Prometheus is not available or reachable at\n the moment.\n \n }\n />\n )}\n {panelInformation.length ? renderTrafficPanels() : null}\n \n \n ),\n },\n {\n tabConfig: {\n label: \"Resources\",\n id: \"resources\",\n disabled: prometheusOptionsDisabled,\n },\n content: (\n \n {searchBox}\n \n {usage?.advancedMetricsStatus === \"unavailable\" && (\n }\n title={\"We can’t retrieve advanced metrics at this time.\"}\n help={\n \n It looks like Prometheus is not available or reachable at\n the moment.\n \n }\n />\n )}\n {panelInformation.length ? renderResourcesPanels() : null}\n

    \n Advanced\n

    \n {panelInformation.length ? renderAdvancedResourcesPanels() : null}\n
    \n
    \n ),\n },\n ];\n\n let tabsOptions: TabItemProps[];\n\n if (!prometheusOptionsDisabled) {\n tabsOptions = [...prometheusTabs, infoTab];\n } else {\n tabsOptions = [infoTab, ...prometheusTabs];\n }\n\n return (\n \n {zoomOpen && (\n \n )}\n\n {\n setCurTab(newValue);\n }}\n />\n \n );\n};\n\nexport default PrDashboard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { Grid, ProgressBar } from \"mds\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { getUsageAsync } from \"./dashboardThunks\";\nimport { selFeatures } from \"../consoleSlice\";\nimport { setHelpName } from \"../../../systemSlice\";\nimport PrDashboard from \"./Prometheus/PrDashboard\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst Dashboard = () => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(true);\n\n const usage = useSelector((state: AppState) => state.dashboard.usage);\n const features = useSelector(selFeatures);\n const obOnly = !!features?.includes(\"object-browser-only\");\n let hideMenu = false;\n if (features?.includes(\"hide-menu\")) {\n hideMenu = true;\n } else if (obOnly) {\n hideMenu = true;\n }\n\n useEffect(() => {\n if (loading) {\n setLoading(false);\n dispatch(getUsageAsync());\n }\n }, [loading, dispatch]);\n\n useEffect(() => {\n dispatch(setHelpName(\"metrics\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {!hideMenu && (\n } />\n )}\n {loading ? (\n \n \n \n \n \n ) : (\n \n )}\n \n );\n};\n\nexport default Dashboard;\n"],"names":["DateFilterAdornIcon","_jsx","Box","sx","display","alignItems","width","height","children","OpenListIcon","_ref","timeStart","setTimeStart","timeEnd","setTimeEnd","triggerSync","_ref$label","label","_ref$startLabel","startLabel","_ref$endLabel","endLabel","Grid","item","xs","border","paddingLeft","paddingRight","borderRadius","marginRight","color","WebkitTextFillColor","_jsxs","md","gridTemplateColumns","sm","padding","gap","fontSize","fontWeight","fill","ScheduleIcon","className","marginLeft","DateTimePickerWrapper","value","onChange","id","classNamePrefix","forFilterContained","noInputIcon","openPickerIcon","WatchLaterIcon","justifyContent","Button","type","variant","onClick","icon","SyncIcon","withStyles","theme","createStyles","_objectSpread","dateSelectorOverride","backgroundColor","borderBottom","borderColor","dateSelectorFilterOverride","dateSelectorFormOverride","maxWidth","parentDateOverride","flexGrow","textBoxContainer","openListIcon","marginTop","paperOverride","margin","textAlign","palette","primary","main","minHeight","borderTop","marginBottom","content","position","top","left","fieldBasic","tooltipHelper","classes","_ref$forSearchBlock","forSearchBlock","_ref$forFilterContain","_ref$tooltip","tooltip","required","_ref$disabled","disabled","_ref$noInputIcon","_ref$classNamePrefix","adornment","startAdornment","InputAdornment","endAdornment","classOverridden","concat","clsName","inputItem","LocalizationProvider","dateAdapter","AdapterLuxon","DateTimePicker","InputProps","components","OpenPickerIcon","renderInput","props","TextField","ampm","PopperProps","inputFormat","containerCls","fieldContainer","Fragment","gridAutoColumns","InputLabel","htmlFor","tooltipContainer","Tooltip","placement","HelpIcon","StatusCountBase","styled","div","_counterIndicator","_mainBox","fontFamily","cursor","get","flex","_defineProperty","breakPoints","flexFlow","paddingBottom","lg","xl","_ref2","_ref2$onlineCount","onlineCount","_ref2$offlineCount","offlineCount","_ref2$icon","_ref2$label","_ref2$okStatusText","okStatusText","_ref2$notOkStatusText","notOkStatusText","CircleIcon","STATUS_COLORS","RED","GREEN","YELLOW","getDriveStatusColor","activeDisks","totalDrives","serverStatusColor","health_status","getNetworkStatusColor","activeNetwork","networkTotal","widgetType","colorsMain","niceDaysFromNS","seconds","niceDays","roundNumber","parseInt","toString","panelsConfiguration","title","data","simpleWidget","widgetIcon","UptimeIcon","labelDisplayFunction","dataOuter","name","widgetConfiguration","outerChart","colorList","innerRadius","outerRadius","startAngle","endAngle","innerChart","pieChart","innerLabel","niceBytes","dataKey","keyLabel","lineColor","fillColor","areaGraph","yAxisFormatter","xAxisFormatter","getTimeFromTimestamp","background","greatestColor","customStructure","originTag","displayTag","barChart","singleRep","strokeWidth","linearGraph","HealIcon","DiagnosticsIcon","disableYAxis","mergedPanels","singleValue","calculateMainValue","elements","metricCalc","length","sumValues","reduce","accumulator","currValue","parseFloat","Math","floor","sortResult","sort","value1","value2","widgetDetailsToPanel","payloadData","panelItem","typeOfPayload","valueDisplay","chartSeries","filter","seriesItem","values","map","chartTarget","result","Array","isArray","elementValue","metricKeyItem","Object","keys","metric","metricName","legend","legendFormat","firstTarget","totalValues","targets","series","plotValues","forEach","targetMaster","index","results","itemVals","labelName","metrics","keysToReplace","expToReplace","RegExp","join","replacedLegend","replace","matchItem","nwMatchItem","countVarsOpen","match","countVarsClose","cleanLegend","element","constructLabelNames","keyName","push","valInfo","itemIndex","findIndex","itemToPush","seriesWithColors","series1","series2","serialC","textToRGBColor","sortedVals","chartBars","sortFunction","structureItem","metricTake","find","range","lastValue","a","valuesForBackground","eachVal","splitSizeMetric","val","splittedText","split","vl","isNaN","representationNumber","units","includes","dispatch","useAppDispatch","openZoomPage","ZoomOutMapIcon","componentRef","_React$useState","React","_React$useState2","_slicedToArray","anchorEl","setAnchorEl","openDownloadMenu","Boolean","downloadAsCSV","objectToConvert","filename","text","document","createElement","setAttribute","style","body","appendChild","click","removeChild","download","Date","now","trim","toLowerCase","it","err","setErrorSnackMessage","onDownloadError","errorMessage","detailedError","justifyItems","event","currentTarget","DownloadIcon","Menu","open","onClose","MenuItem","ListItemText","pngFileName","exportComponentAsPNG","fileName","downloadAsPNG","tooltipCommon","active","payload","barChartConfiguration","customTooltip","timeStampTitle","pl","labelContainer","labelColor","itemValue","valueContainer","BarChartMain","widgetCommon","loadingAlign","paddingTop","CustomizedAxisTick","y","textAnchor","transform","dy","_ref3","apiPrefix","_ref3$zoomActivated","zoomActivated","_useState","useState","_useState2","loading","setLoading","_useState3","_useState4","setData","_useState5","_useState6","setResult","_useState7","_useState8","hover","setHover","_useState9","window","innerWidth","_useState10","biggerThanMd","setBiggerThanMd","useRef","widgetVersion","useSelector","state","dashboard","widgetLoadVersion","useEffect","handleWindowResize","extMD","console","log","addEventListener","removeEventListener","stepCalc","secondsInPeriod","toUnixInteger","periods","api","invoke","then","res","widgetsWithValue","catch","greatestIndex","currentValue","dataGraph","onMouseOver","onMouseLeave","container","ExpandGraphLink","DownloadWidgetDataButton","Loader","ref","ResponsiveContainer","BarChart","layout","barCategoryGap","XAxis","hide","YAxis","interval","tick","tickLine","axisLine","bar","Bar","barSize","_","Cell","BarChartTooltip","linearConfiguration","LinearGraphMain","flexDirection","maxHeight","overflowY","_ref2$hideYAxis","hideYAxis","_ref2$areaWidget","areaWidget","_ref2$yAxisFormatter","_ref2$xAxisFormatter","var1","var2","_ref2$zoomActivated","csvData","setCsvData","dataMax","setDataMax","_useState11","_useState12","_step","maxVal","_iterator","_createForOfIteratorHelper","s","n","done","dp","key","e","f","intervalCount","fmtData","el","date","CustomizedDot","prop","cx","cy","r","dspLongDate","alignContent","AreaChart","right","bottom","x1","y1","x2","y2","offset","stopColor","stopOpacity","CartesianGrid","strokeDasharray","strokeOpacity","stroke","vertical","tickFormatter","tickCount","domain","section","Area","isAnimationActive","fillOpacity","strokeLinecap","dot","LineChartTooltip","wrapperStyle","zIndex","PieChartMain","dataInner","setDataInner","setDataOuter","pieChartConfiguration","middleLabel","innerColors","outerColors","PieChart","Pie","entry","SimpleWidgetMain","span","textTransform","iconWidget","renderFn","valueToRender","withBorders","StatCardMain","_ref2$loading","_ref4","overflow","textOverflow","getContent","NumericStatCard","BucketsIcon","TotalObjectsIcon","connect","propLoading","repNumber","resultRep","DashboardItemBox","BucketsCountItem","ObjectsCountItem","SingleValueWidgetMain","lineHeight","CapacityItemMain","alignSelf","totalUsableFree","setTotalUsableFree","totalUsableFreeRatio","setTotalUsableFreeRatio","totalUsed","setTotalUsed","totalUsable","setTotalUsable","tUsable","tUsed","tFree","eachArray","itemSum","freeRatio","round","usedConvert","calculateBytes","capacityColors","animationDuration","total","unit","niceBytesInt","ReportedUsageIcon","TimeStatBase","SuccessIcon","_ref$valueToRender","_ref$loading","_ref$iconWidget","TimeStatItem","componentToUse","arguments","undefined","SingleValueWidget","CmpToRender","HealActivityRenderer","ScanActivityRenderer","UptimeActivityRenderer","SimpleWidget","CapacityItem","PieChartWidget","LinearGraphWidget","BarChartWidget","SingleRepWidget","summaryPanelsLayout","_sx","minWidth","columns","componentId","trafficPanelsLayout","flexShrink","resourcesPanelsLayout","resourcesPanelsLayoutAdvanced","RowPanelLayout","modalOpen","ModalWrapper","closeZoomPage","wideLimit","CommonCardItem","metricValue","metricUnit","subMessage","moreLink","rightComponent","_ref2$extraMargin","extraMargin","SubHeader","message","Header","Link","to","leftComponent","CommonCard","statLabel","DualSTCardContent","_ref2$statItemLeft","statItemLeft","_ref2$statItemRight","statItemRight","StateIndicator","info","_info$mergedPanels","_mergedPanels","leftPanel","rightPanel","lStatItem","EntityStateStatItem","rStatItem","statIcon","ServersIcon","DrivesIcon","DualStatCard","NetworkGetBase","NetworkGetIcon","NetworkPutBase","NetworkPutIcon","NetworkItemBase","_value$mergedPanels","rightCmp","NetworkPutItem","leftCmp","_ref5","NetworkGetItem","SpeedtestIcon","_info$title","EntityStateItemRenderer","NetworkItem","MergedWidgets","ServerStatItemMain","whiteSpace","ServerInfoItemMain","ServerStatItem","_ref3$label","_ref3$value","_ref3$statusColor","statusColor","_ref3$hasStatus","hasStatus","server","networkKeys","drives","acc","network","endpoint","uptime","version","driveStatusColor","DataContainerMain","drive","totalSpace","usedSpace","wordBreak","SizeChart","usedBytes","totalBytes","availableSpace","expanded","setExpanded","handleClick","serverInfo","_serverInfo$drives","_serverInfo$drives2","isExpanded","Accordion","onTitleClick","ServerInfoItem","useBackground","driveInfo","DriveInfoItem","CounterCardMain","counterValue","_ref2$actions","actions","ReportedUsageMain","usageValue","BoxItem","_usage$backend","_usage$backend2","_usage$backend$backen","_usage$backend3","_usage$backend$standa","_usage$backend4","_usage$backend4$stand","_usage$backend$rrSCPa","_usage$backend5","_usage$backend5$rrSCP","usage","usageToRepresent","prettyUsage","_ref4$lastScan","lastScan","_ref4$lastHeal","lastHeal","_ref4$upTime","upTime","serverList","servers","_toConsumableArray","b","_a$endpoint","_b$endpoint","nameA","nameB","getServersList","allDrivesArray","_server$drives","drivesInput","serversGroup","groupBy","_serversGroup$offline","offline","offlineServers","_serversGroup$online","online","onlineServers","drivesGroup","_drivesGroup$offline","offlineDrives","_drivesGroup$ok","ok","onlineDrives","gridTemplateRows","CounterCard","buckets","IAM_PAGES","BUCKETS","textDecoration","TooltipWrapper","ArrowRightIcon","objects","StatusCountCard","backend","gridRowStart","gridRowEnd","gridColumnStart","ReportedUsage","DiagnosticsMenuIcon","StorageIcon","backendType","FormatDrivesIcon","standardSCParity","rrSCParity","ServersList","advancedMetricsStatus","HelpBox","iconComponent","PrometheusErrorIcon","help","href","target","rel","_ref$apiPrefix","loadingUsage","zoomOpen","zoom","openZoom","zoomWidget","widgetRender","features","selFeatures","obOnly","hideMenu","tabsOptions","panelInformation","curTab","setCurTab","renderPanelItems","layoutRows","prev","rowItem","rIdx","_rowItem$columns","cellItems","cellItem","colIdx","panelInfo","MergedWidgetsRenderer","renderCmpByConfig","panel","rowConfig","prometheusOptionsDisabled","searchBox","direction","getUsageAsync","DateRangeSelector","reloadWidgets","infoTab","tabConfig","ProgressBar","BasicDashboard","prometheusTabs","PageLayout","ZoomWidget","Tabs","horizontal","options","currentTabOrPath","onTabClick","newValue","setHelpName","PageHeaderWrapper","HelpMenu","PrDashboard"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/8388.af3ddceb.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/DateRangeSelector/DateRangeSelector.tsx","screens/Console/Common/FormComponents/DateTimePickerWrapper/DateTimePickerWrapper.tsx","screens/Console/Dashboard/BasicDashboard/StatusCountCard.tsx","screens/Console/Dashboard/BasicDashboard/Utils.tsx","screens/Console/Dashboard/Prometheus/types.ts","screens/Console/Dashboard/Prometheus/utils.tsx","screens/Console/Dashboard/Prometheus/Widgets/ExpandGraphLink.tsx","screens/Console/Dashboard/DownloadWidgetDataButton.tsx","screens/Console/Dashboard/Prometheus/Widgets/tooltips/BarChartTooltip.tsx","screens/Console/Dashboard/Prometheus/Widgets/BarChartWidget.tsx","screens/Console/Dashboard/Prometheus/Widgets/tooltips/LineChartTooltip.tsx","screens/Console/Dashboard/Prometheus/Widgets/LinearGraphWidget.tsx","screens/Console/Dashboard/Prometheus/Widgets/PieChartWidget.tsx","screens/Console/Dashboard/Prometheus/Widgets/SimpleWidget.tsx","screens/Console/Dashboard/DashboardItemBox.tsx","screens/Console/Dashboard/Prometheus/Widgets/NumericStatCard.tsx","screens/Console/Dashboard/Prometheus/Widgets/BucketsCountItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/ObjectsCountItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/SingleRepWidget.tsx","screens/Console/Dashboard/Prometheus/Widgets/SingleValueWidget.tsx","screens/Console/Dashboard/Prometheus/Widgets/CapacityItem.tsx","screens/Console/Dashboard/TimeStatItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/HealActivityRenderer.tsx","screens/Console/Dashboard/Prometheus/Widgets/ScanActivityRenderer.tsx","screens/Console/Dashboard/Prometheus/Widgets/UptimeActivityRenderer.tsx","screens/Console/Dashboard/Prometheus/widgetUtils.tsx","screens/Console/Dashboard/Prometheus/Widgets/LayoutUtil.tsx","screens/Console/Dashboard/Prometheus/ZoomWidget.tsx","screens/Console/Dashboard/CommonCard.tsx","screens/Console/Dashboard/Prometheus/MergedWidgets.tsx","screens/Console/Dashboard/Prometheus/Widgets/EntityStateStatItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/DualStatCard.tsx","screens/Console/Dashboard/Prometheus/Widgets/EntityStateItemRenderer.tsx","screens/Console/Dashboard/Prometheus/Widgets/NetworkGetItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/NetworkPutItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/NetworkItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/MergedWidgetsRenderer.tsx","screens/Console/Dashboard/BasicDashboard/ServerInfoItem.tsx","screens/Console/Dashboard/BasicDashboard/DriveInfoItem.tsx","screens/Console/Dashboard/BasicDashboard/ServersList.tsx","screens/Console/Dashboard/BasicDashboard/CounterCard.tsx","screens/Console/Dashboard/BasicDashboard/ReportedUsage.tsx","screens/Console/Dashboard/BasicDashboard/BasicDashboard.tsx","screens/Console/Dashboard/Prometheus/PrDashboard.tsx","screens/Console/Dashboard/Dashboard.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 { Button, OpenListIcon, SyncIcon, Grid } from \"mds\";\nimport { DateTime } from \"luxon\";\nimport { Box } from \"@mui/material\";\nimport ScheduleIcon from \"@mui/icons-material/Schedule\";\nimport WatchLaterIcon from \"@mui/icons-material/WatchLater\";\nimport DateTimePickerWrapper from \"../DateTimePickerWrapper/DateTimePickerWrapper\";\n\ninterface IDateRangeSelector {\n timeStart: DateTime | null;\n setTimeStart: (value: DateTime | null) => void;\n timeEnd: DateTime | null;\n setTimeEnd: (value: DateTime | null) => void;\n triggerSync?: () => void;\n label?: string;\n startLabel?: string;\n endLabel?: string;\n}\n\nconst DateFilterAdornIcon = () => {\n return (\n \n \n \n );\n};\n\nconst DateRangeSelector = ({\n timeStart,\n setTimeStart,\n timeEnd,\n setTimeEnd,\n triggerSync,\n label = \"Filter:\",\n startLabel = \"Start Time:\",\n endLabel = \"End Time:\",\n}: IDateRangeSelector) => {\n return (\n \n \n \n {label}\n \n \n \n \n \n \n \n {startLabel}\n \n \n \n \n \n\n \n \n \n \n \n {endLabel}\n \n \n \n \n \n \n\n {triggerSync && (\n \n }\n label={\"Sync\"}\n />\n \n )}\n \n \n );\n};\n\nexport default DateRangeSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { DateTime } from \"luxon\";\nimport { HelpIcon, OpenListIcon, Grid, InputLabel, Tooltip, Box } from \"mds\";\nimport { TextField } from \"@mui/material\";\nimport { DateTimePicker, LocalizationProvider } from \"@mui/x-date-pickers\";\nimport { AdapterLuxon } from \"@mui/x-date-pickers/AdapterLuxon\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport ScheduleIcon from \"@mui/icons-material/Schedule\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\n\ninterface IDateTimePicker {\n value: DateTime | null;\n onChange: (value: DateTime | null) => void;\n classes: any;\n forSearchBlock?: boolean;\n forFilterContained?: boolean;\n label?: string;\n required?: boolean;\n tooltip?: string;\n id: string;\n disabled?: boolean;\n noInputIcon?: boolean;\n classNamePrefix?: string;\n openPickerIcon?: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n dateSelectorOverride: {\n height: 40,\n border: \"#EAEDEE 1px solid\",\n marginLeft: 15,\n backgroundColor: \"#fff\",\n padding: \"0 16px\",\n borderRadius: 5,\n \"&.MuiInput-underline:hover:not(.Mui-disabled):before\": {\n borderBottom: 0,\n },\n \"&:hover\": {\n borderColor: \"#000\",\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n },\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n \"& input\": {\n fontSize: 12,\n fontWeight: 600,\n color: \"#393939\",\n },\n },\n dateSelectorFilterOverride: {\n width: 180,\n height: 42,\n marginLeft: 20,\n padding: 0,\n borderRadius: 5,\n \"&.MuiInput-underline:hover:not(.Mui-disabled):before\": {\n borderBottom: 0,\n },\n \"&:hover\": {\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n },\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n \"& input\": {\n fontSize: 12,\n fontWeight: \"bold\",\n color: \"#081C42\",\n },\n \"@media (max-width: 900px)\": {\n width: 103,\n },\n },\n dateSelectorFormOverride: {\n width: \"100%\",\n maxWidth: 840,\n },\n parentDateOverride: {\n flexGrow: 1,\n },\n textBoxContainer: {\n width: \"calc(100% - 190px)\",\n },\n openListIcon: {\n color: \"#9D9E9D\",\n width: 8,\n marginTop: 2,\n },\n paperOverride: {\n \"& .MuiCalendarPicker-root\": {\n padding: \"0 22px\",\n \"& > div\": {\n padding: 0,\n \"& > div > div.PrivatePickersFadeTransitionGroup-root:first-of-type\":\n {\n color: \"#0A224C\",\n fontWeight: \"bold\",\n },\n \"& > div > div.PrivatePickersFadeTransitionGroup-root:last-of-type\": {\n color: \"#9D9E9D\",\n \"& + button.MuiButtonBase-root\": {\n color: \"#9D9E9D\",\n },\n },\n \"& > div:nth-child(2)\": {\n \"& > div\": {\n width: 0,\n },\n \"& > button.MuiButtonBase-root\": {\n color: \"#0A224C\",\n },\n },\n },\n },\n \"& .MuiTypography-root.MuiTypography-caption\": {\n width: 26,\n height: 26,\n margin: 5,\n color: \"#BCBCBC\",\n fontSize: 10,\n },\n \"& button.MuiPickersDay-root\": {\n fontWeight: \"bold\",\n width: 26,\n height: 26,\n margin: 5,\n textAlign: \"center\",\n \"&.Mui-selected\": {\n backgroundColor: theme.palette.primary.main,\n color: \"#fff\",\n },\n },\n \"& div.MuiPickersDay-hiddenDaySpacingFiller\": {\n width: 26,\n height: 26,\n margin: 5,\n },\n \"& div.PrivatePickersSlideTransition-root\": {\n minHeight: 240,\n },\n \"& div.MuiCalendarPicker-viewTransitionContainer\": {\n borderTop: \"#F0F3F5 1px solid\",\n },\n \"& .MuiClockPicker-arrowSwitcher\": {\n marginRight: 10,\n marginTop: -1,\n \"& > div\": {\n width: 0,\n },\n \"& > button.MuiButtonBase-root\": {\n color: \"#0A224C\",\n },\n \"& + div > div\": {\n width: 255,\n height: 255,\n backgroundColor: \"#fff\",\n marginTop: 30,\n marginBottom: 14,\n border: \"#F0F3F5 3px solid\",\n \"& > div:nth-child(2)\": {\n backgroundColor: \"#B4B5B4\",\n width: 12,\n height: 12,\n \"&::before\": {\n content: \"' '\",\n width: 35,\n height: 35,\n display: \"block\",\n position: \"absolute\",\n border: \"#F0F3F5 3px solid\",\n top: -12,\n left: -12,\n borderRadius: \"100%\",\n },\n },\n \"& > div:nth-child(3)\": {\n backgroundColor: \"#B4B5B4\",\n width: 4,\n },\n \"& > div:last-of-type\": {\n marginTop: 15,\n \"& > span\": {\n color: \"#0A224C\",\n \"&.Mui-selected\": {\n color: \"#fff\",\n },\n \"&[aria-label='1 hours'], &[aria-label='2 hours'], &[aria-label='3 hours'], &[aria-label='4 hours'], &[aria-label='5 hours'], &[aria-label='6 hours'], &[aria-label='7 hours'], &[aria-label='8 hours'], &[aria-label='9 hours'], &[aria-label='10 hours'], &[aria-label='11 hours'], &[aria-label='12 hours']\":\n {\n fontWeight: \"bold\",\n fontSize: 20,\n marginTop: -1,\n },\n },\n },\n },\n },\n },\n ...fieldBasic,\n ...tooltipHelper,\n });\n\nconst DateTimePickerWrapper = ({\n value,\n onChange,\n classes,\n forSearchBlock = false,\n forFilterContained = false,\n label,\n tooltip = \"\",\n required,\n id,\n disabled = false,\n noInputIcon = false,\n classNamePrefix = \"\",\n openPickerIcon,\n}: IDateTimePicker) => {\n let adornment = {};\n\n if (!noInputIcon) {\n adornment = {\n startAdornment: (\n \n \n \n ),\n };\n }\n\n if (forFilterContained) {\n adornment = {\n endAdornment: (\n \n \n \n ),\n };\n }\n\n const classOverridden = `${classNamePrefix}date-time-input ${\n forSearchBlock ? classes.dateSelectorOverride : \"\"\n } ${\n forFilterContained && !forSearchBlock\n ? classes.dateSelectorFilterOverride\n : \"\"\n }`;\n\n const clsName = forSearchBlock\n ? classes.parentDateOverride\n : classes.dateSelectorFormOverride;\n\n const inputItem = (\n \n (\n \n )}\n ampm={false}\n PopperProps={{\n className: classes.paperOverride,\n }}\n inputFormat={\"LL/dd/yyyy HH:mm\"}\n />\n \n );\n\n if (forSearchBlock) {\n return inputItem;\n }\n\n const containerCls = !forFilterContained ? classes.fieldContainer : \"\";\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
    \n \n
    \n \n
    \n
    \n
    \n )}\n
    \n )}\n\n \n {inputItem}\n \n \n
    \n );\n};\n\nexport default withStyles(styles)(DateTimePickerWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 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 styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { Box, breakPoints, CircleIcon } from \"mds\";\n\nconst StatusCountBase = styled.div(({ theme }) => ({\n fontFamily: \"Inter,sans-serif\",\n maxWidth: \"321px\",\n display: \"flex\",\n marginLeft: \"auto\",\n marginRight: \"auto\",\n cursor: \"default\",\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n \"& .mainBox\": {\n flex: 1,\n display: \"flex\",\n padding: \"0 8px 0 8px\",\n [`@media (max-width: ${breakPoints.sm}px)`]: {\n padding: \"0 10px 0 10px\",\n },\n \"& .indicatorIcon\": {\n width: \"20px\",\n height: \"20px\",\n marginTop: \"8px\",\n maxWidth: \"26px\",\n \"& .min-icon\": {\n width: \"16px\",\n height: \"16px\",\n },\n },\n \"& .indicatorContainer\": {\n flex: 1,\n display: \"flex\",\n flexFlow: \"column\",\n \"& .indicatorLabel\": {\n fontSize: \"16px\",\n fontWeight: 600,\n },\n \"& .counterIndicator\": {\n display: \"flex\",\n alignItems: \"center\",\n gap: \"5px\",\n justifyContent: \"space-between\",\n paddingBottom: 0,\n fontSize: \"55px\",\n [`@media (max-width: ${breakPoints.sm}px)`]: {\n paddingBottom: 10,\n fontSize: \"35px\",\n },\n [`@media (max-width: ${breakPoints.lg}px)`]: {\n fontSize: \"45px\",\n },\n [`@media (max-width: ${breakPoints.xl}px)`]: {\n fontSize: \"50px\",\n },\n flexFlow: \"row\",\n fontWeight: 600,\n\n \"& .stat-text\": {\n color: get(theme, \"mutedText\", \"#87888D\"),\n fontSize: \"12px\",\n marginTop: \"8px\",\n },\n \"& .stat-value\": {\n textAlign: \"center\",\n height: \"50px\",\n },\n \"& .min-icon\": {\n marginRight: \"8px\",\n marginTop: \"8px\",\n height: \"10px\",\n width: \"10px\",\n },\n },\n \"& .onlineCounter\": {\n display: \"flex\",\n alignItems: \"center\",\n marginTop: \"5px\",\n \"& .min-icon\": {\n fill: get(theme, \"signalColors.good\", \"#4CCB92\"),\n },\n },\n \"& .offlineCount\": {\n display: \"flex\",\n alignItems: \"center\",\n marginTop: \"8px\",\n \"& .min-icon\": {\n fill: get(theme, \"signalColors.danger\", \"#C51B3F\"),\n },\n },\n },\n },\n}));\n\nexport const StatusCountCard = ({\n onlineCount = 0,\n offlineCount = 0,\n icon = null,\n label = \"\",\n okStatusText = \"Online\",\n notOkStatusText = \"Offline\",\n}: {\n icon: any;\n onlineCount: number;\n offlineCount: number;\n label: string;\n okStatusText?: string;\n notOkStatusText?: string;\n}) => {\n return (\n \n \n \n {label}\n\n \n \n {onlineCount}\n \n \n
    {okStatusText}
    \n
    \n
    \n\n \n {offlineCount}\n \n {\" \"}\n
    {notOkStatusText}
    \n
    \n
    \n
    \n
    \n {icon}\n
    \n
    \n );\n};\n\nexport default StatusCountCard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const STATUS_COLORS = {\n RED: \"#C83B51\",\n GREEN: \"#4CCB92\",\n YELLOW: \"#FFBD62\",\n};\n\nexport const getDriveStatusColor = (\n activeDisks: number,\n totalDrives: number,\n) => {\n if (activeDisks <= totalDrives / 2) {\n return \"bad\";\n }\n if (totalDrives !== 2 && activeDisks === totalDrives / 2 + 1) {\n return \"warn\";\n }\n if (activeDisks === totalDrives) {\n return \"good\";\n }\n};\n\nexport const serverStatusColor = (health_status: string) => {\n switch (health_status) {\n case \"offline\":\n return \"bad\";\n case \"online\":\n return \"good\";\n default:\n return \"warn\";\n }\n};\nexport const getNetworkStatusColor = (\n activeNetwork: number,\n networkTotal: number,\n) => {\n if (activeNetwork <= networkTotal / 2) {\n return \"bad\";\n }\n if (activeNetwork === networkTotal / 2 + 1) {\n return \"warn\";\n }\n if (activeNetwork === networkTotal) {\n return \"good\";\n }\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport {\n IBarChartConfiguration,\n IBarChartRelation,\n IDataSRep,\n ILinearGraphConfiguration,\n IPieChartConfiguration,\n} from \"./Widgets/types\";\n\nexport enum widgetType {\n singleValue = \"singleValue\",\n linearGraph = \"linearGraph\",\n areaGraph = \"areaGraph\",\n barChart = \"barChart\",\n pieChart = \"pieChart\",\n singleRep = \"singleRep\",\n simpleWidget = \"simpleWidget\",\n}\n\nexport interface IDashboardPanel {\n id: number;\n mergedPanels?: IDashboardPanel[];\n title: string;\n data?: string | object[] | IDataSRep[];\n dataOuter?: string | object[];\n type?: widgetType;\n widgetIcon?: any;\n widgetConfiguration?:\n | ILinearGraphConfiguration[]\n | IBarChartConfiguration[]\n | IPieChartConfiguration;\n color?: string;\n fillColor?: string;\n innerLabel?: string;\n labelDisplayFunction?: (value: string) => any;\n disableYAxis?: boolean;\n xAxisFormatter?: (item: string) => string;\n yAxisFormatter?: (item: string) => string;\n customStructure?: IBarChartRelation[];\n}\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport get from \"lodash/get\";\nimport { IDashboardPanel, widgetType } from \"./types\";\nimport {\n getTimeFromTimestamp,\n niceBytes,\n niceDays,\n representationNumber,\n textToRGBColor,\n units,\n} from \"../../../../common/utils\";\nimport { DiagnosticsIcon, HealIcon, UptimeIcon } from \"mds\";\n\nconst colorsMain = [\n \"#C4D4E9\",\n \"#DCD1EE\",\n \"#D1EEE7\",\n \"#EEDED1\",\n \"#AAF38F\",\n \"#F9E6C5\",\n \"#C83B51\",\n \"#F4CECE\",\n \"#D6D6D6\",\n];\n\nconst niceDaysFromNS = (seconds: string) => {\n return niceDays(seconds, \"ns\");\n};\n\nconst roundNumber = (value: string) => {\n return parseInt(value).toString(10);\n};\n\nexport const panelsConfiguration: IDashboardPanel[] = [\n {\n id: 1,\n title: \"Uptime\",\n data: \"N/A\",\n type: widgetType.simpleWidget,\n widgetIcon: ,\n labelDisplayFunction: niceDays,\n },\n {\n id: 50,\n title: \"Capacity\",\n data: [],\n dataOuter: [{ name: \"outer\", value: 100 }],\n widgetConfiguration: {\n outerChart: {\n colorList: [\"#9c9c9c\"],\n innerRadius: 0,\n outerRadius: 0,\n startAngle: 0,\n endAngle: 0,\n },\n innerChart: {\n colorList: colorsMain,\n innerRadius: 20,\n outerRadius: 50,\n startAngle: 90,\n endAngle: -200,\n },\n },\n type: widgetType.pieChart,\n innerLabel: \"N/A\",\n labelDisplayFunction: niceBytes,\n },\n {\n id: 51,\n title: \"Usable Capacity\",\n data: [],\n dataOuter: [{ name: \"outer\", value: 100 }],\n widgetConfiguration: {\n outerChart: {\n colorList: [\"#9c9c9c\"],\n innerRadius: 0,\n outerRadius: 0,\n startAngle: 0,\n endAngle: 0,\n },\n innerChart: {\n colorList: colorsMain,\n innerRadius: 20,\n outerRadius: 50,\n startAngle: 90,\n endAngle: -200,\n },\n },\n type: widgetType.pieChart,\n innerLabel: \"N/A\",\n labelDisplayFunction: niceBytes,\n },\n {\n id: 68,\n title: \"Data Usage Growth\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.areaGraph,\n yAxisFormatter: niceBytes,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 52,\n title: \"Object size distribution\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"a\",\n color: \"#2781B0\",\n background: {\n fill: \"#EEF1F4\",\n },\n greatestColor: \"#081C42\",\n },\n ],\n customStructure: [\n { originTag: \"LESS_THAN_1024_B\", displayTag: \"Less than 1024B\" },\n {\n originTag: \"BETWEEN_1024_B_AND_1_MB\",\n displayTag: \"Between 1024B and 1MB\",\n },\n {\n originTag: \"BETWEEN_1_MB_AND_10_MB\",\n displayTag: \"Between 1MB and 10MB\",\n },\n {\n originTag: \"BETWEEN_10_MB_AND_64_MB\",\n displayTag: \"Between 10MB and 64MB\",\n },\n {\n originTag: \"BETWEEN_64_MB_AND_128_MB\",\n displayTag: \"Between 64MB and 128MB\",\n },\n {\n originTag: \"BETWEEN_128_MB_AND_512_MB\",\n displayTag: \"Between 128MB and 512MB\",\n },\n {\n originTag: \"GREATER_THAN_512_MB\",\n displayTag: \"Greater than 512MB\",\n },\n ],\n type: widgetType.barChart,\n },\n {\n id: 66,\n title: \"Buckets\",\n data: [],\n innerLabel: \"N/A\",\n type: widgetType.singleRep,\n color: \"#0071BC\",\n fillColor: \"#ADD5E0\",\n },\n {\n id: 44,\n title: \"Objects\",\n data: [],\n innerLabel: \"N/A\",\n type: widgetType.singleRep,\n color: \"#0071BC\",\n fillColor: \"#ADD5E0\",\n },\n {\n id: 63,\n title: \"API Data Received Rate\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n strokeWidth: 3,\n },\n ],\n type: widgetType.linearGraph,\n\n xAxisFormatter: getTimeFromTimestamp,\n yAxisFormatter: niceBytes,\n },\n {\n id: 61,\n title: \"Total Open FDs\",\n data: [],\n innerLabel: \"N/A\",\n type: widgetType.singleRep,\n color: \"#22B573\",\n fillColor: \"#A6E8C4\",\n },\n {\n id: 62,\n title: \"Total Goroutines\",\n data: [],\n innerLabel: \"N/A\",\n type: widgetType.singleRep,\n color: \"#F7655E\",\n fillColor: \"#F4CECE\",\n },\n {\n id: 77,\n title: \"Node CPU Usage\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n yAxisFormatter: roundNumber,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 60,\n title: \"API Request Rate\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n yAxisFormatter: roundNumber,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 70,\n title: \"API Data Sent Rate\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n xAxisFormatter: getTimeFromTimestamp,\n yAxisFormatter: niceBytes,\n },\n {\n id: 17,\n title: \"Internode Data Transfer\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n yAxisFormatter: niceBytes,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 73,\n title: \"Node IO\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n yAxisFormatter: niceBytes,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 80,\n title: \"Time Since Last Heal Activity\",\n data: \"N/A\",\n type: widgetType.simpleWidget,\n widgetIcon: ,\n labelDisplayFunction: niceDaysFromNS,\n },\n {\n id: 81,\n title: \"Time Since Last Scan Activity\",\n data: \"N/A\",\n type: widgetType.simpleWidget,\n widgetIcon: ,\n labelDisplayFunction: niceDaysFromNS,\n },\n {\n id: 71,\n title: \"API Request Error Rate\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 76,\n title: \"Node Memory Usage\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n xAxisFormatter: getTimeFromTimestamp,\n yAxisFormatter: niceBytes,\n },\n {\n id: 74,\n title: \"Drive Used Capacity\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n xAxisFormatter: getTimeFromTimestamp,\n yAxisFormatter: niceBytes,\n },\n {\n id: 82,\n title: \"Drives Free Inodes\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n disableYAxis: true,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 11,\n title: \"Node Syscalls\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n yAxisFormatter: roundNumber,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 8,\n title: \"Node File Descriptors\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n yAxisFormatter: roundNumber,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 500,\n mergedPanels: [\n {\n id: 53,\n title: \"Online\",\n data: \"N/A\",\n type: widgetType.singleValue,\n },\n {\n id: 69,\n title: \"Offline\",\n data: \"N/A\",\n type: widgetType.singleValue,\n },\n ],\n title: \"Servers\",\n },\n {\n id: 501,\n mergedPanels: [\n {\n id: 9,\n title: \"Online\",\n data: \"N/A\",\n type: widgetType.singleValue,\n },\n {\n id: 78,\n title: \"Offline\",\n data: \"N/A\",\n type: widgetType.singleValue,\n },\n ],\n title: \"Drives\",\n },\n {\n id: 502,\n mergedPanels: [\n {\n id: 65,\n title: \"Upload\",\n data: \"N/A\",\n type: widgetType.singleValue,\n\n labelDisplayFunction: niceBytes,\n },\n {\n id: 64,\n title: \"Download\",\n data: \"N/A\",\n type: widgetType.singleValue,\n\n labelDisplayFunction: niceBytes,\n },\n ],\n title: \"Network\",\n },\n];\n\nconst calculateMainValue = (elements: any[], metricCalc: string) => {\n if (elements.length === 0) {\n return [\"\", \"0\"];\n }\n\n switch (metricCalc) {\n case \"mean\":\n const sumValues = elements.reduce((accumulator, currValue) => {\n return accumulator + parseFloat(currValue[1]);\n }, 0);\n\n const mean = Math.floor(sumValues / elements.length);\n\n return [\"\", mean.toString()];\n default:\n const sortResult = elements.sort(\n (value1: any[], value2: any[]) => value1[0] - value2[0],\n );\n\n return sortResult[sortResult.length - 1];\n }\n};\n\nconst constructLabelNames = (metrics: any, legendFormat: string) => {\n const keysToReplace = Object.keys(metrics);\n const expToReplace = new RegExp(`{{(${keysToReplace.join(\"|\")})}}`, \"g\");\n\n let replacedLegend = legendFormat.replace(expToReplace, (matchItem) => {\n const nwMatchItem = matchItem.replace(/({{|}})/g, \"\");\n return metrics[nwMatchItem];\n });\n\n const countVarsOpen = (replacedLegend.match(/{{/g) || []).length;\n const countVarsClose = (replacedLegend.match(/}}/g) || []).length;\n\n let cleanLegend = replacedLegend.replace(/{{(.*?)}}/g, \"\");\n\n if (\n countVarsOpen === countVarsClose &&\n countVarsOpen !== 0 &&\n countVarsClose !== 0\n ) {\n keysToReplace.forEach((element) => {\n replacedLegend = replacedLegend.replace(element, metrics[element]);\n });\n\n cleanLegend = replacedLegend;\n }\n\n // In case not all the legends were replaced, we remove the placeholders.\n return cleanLegend;\n};\n\nexport const widgetDetailsToPanel = (\n payloadData: any,\n panelItem: IDashboardPanel,\n) => {\n if (!payloadData) {\n return panelItem;\n }\n\n const typeOfPayload = payloadData.type;\n\n switch (panelItem.type) {\n case widgetType.singleValue:\n case widgetType.simpleWidget:\n if (typeOfPayload === \"stat\" || typeOfPayload === \"singlestat\") {\n // We sort values & get the last value\n let elements = get(payloadData, \"targets[0].result[0].values\", []);\n\n if (elements === null) {\n elements = [];\n }\n\n const metricCalc = get(\n payloadData,\n \"options.reduceOptions.calcs[0]\",\n \"lastNotNull\",\n );\n\n const valueDisplay = calculateMainValue(elements, metricCalc);\n\n const data = panelItem.labelDisplayFunction\n ? panelItem.labelDisplayFunction(valueDisplay[1])\n : valueDisplay[1];\n\n return {\n ...panelItem,\n data,\n };\n }\n break;\n case widgetType.pieChart:\n if (typeOfPayload === \"gauge\") {\n const metricCalc = get(\n payloadData,\n \"options.reduceOptions.calcs[0]\",\n \"lastNotNull\",\n );\n\n let chartSeries = get(payloadData, \"targets\", []).filter(\n (seriesItem: any) => seriesItem !== null,\n );\n\n const values = chartSeries.map((chartTarget: any) => {\n const resultMap =\n chartTarget.result && Array.isArray(chartTarget.result)\n ? chartTarget.result\n : [];\n\n const values = resultMap.map((elementValue: any) => {\n const values = get(elementValue, \"values\", []);\n const metricKeyItem = Object.keys(elementValue.metric);\n const sortResult = values.sort(\n (value1: any[], value2: any[]) =>\n parseInt(value1[0][1]) - parseInt(value2[0][1]),\n );\n\n const metricName = elementValue.metric[metricKeyItem[0]];\n const value = sortResult[sortResult.length - 1];\n return {\n name: metricName,\n value: parseInt(value[1]),\n legend: chartTarget.legendFormat,\n };\n });\n\n return values;\n });\n\n const firstTarget =\n chartSeries[0].result && chartSeries[0].result.length > 0\n ? chartSeries[0].result[0].values\n : [];\n\n const totalValues = calculateMainValue(firstTarget, metricCalc);\n\n const innerLabel = panelItem.labelDisplayFunction\n ? panelItem.labelDisplayFunction(totalValues[1])\n : totalValues[1];\n\n return {\n ...panelItem,\n data: values,\n innerLabel,\n };\n }\n break;\n case widgetType.linearGraph:\n case widgetType.areaGraph:\n if (typeOfPayload === \"graph\") {\n let targets = get(payloadData, \"targets\", []);\n if (targets === null) {\n targets = [];\n }\n\n const series: any[] = [];\n const plotValues: any[] = [];\n\n targets.forEach(\n (\n targetMaster: { legendFormat: string; result: any[] },\n index: number,\n ) => {\n // Add a new serie to plot variables in case it is not from multiple values\n let results = get(targetMaster, \"result\", []);\n const legendFormat = targetMaster.legendFormat;\n if (results === null) {\n results = [];\n }\n\n results.forEach((itemVals: { metric: object; values: any[] }) => {\n // Label Creation\n const labelName = constructLabelNames(\n itemVals.metric,\n legendFormat,\n );\n const keyName = `key_${index}${labelName}`;\n\n // series creation with recently created label\n series.push({\n dataKey: keyName,\n keyLabel: labelName,\n lineColor: \"\",\n fillColor: \"\",\n });\n\n // we iterate over values and create elements\n let values = get(itemVals, \"values\", []);\n if (values === null) {\n values = [];\n }\n\n values.forEach((valInfo: any[]) => {\n const itemIndex = plotValues.findIndex(\n (element) => element.name === valInfo[0],\n );\n\n // Element not exists yet\n if (itemIndex === -1) {\n let itemToPush: any = { name: valInfo[0] };\n itemToPush[keyName] = valInfo[1];\n\n plotValues.push(itemToPush);\n } else {\n plotValues[itemIndex][keyName] = valInfo[1];\n }\n });\n });\n },\n );\n\n const sortedSeries = series.sort((series1: any, series2: any) => {\n if (series1.keyLabel < series2.keyLabel) {\n return -1;\n }\n if (series1.keyLabel > series2.keyLabel) {\n return 1;\n }\n return 0;\n });\n\n const seriesWithColors = sortedSeries.map(\n (serialC: any, index: number) => {\n return {\n ...serialC,\n lineColor: colorsMain[index] || textToRGBColor(serialC.keyLabel),\n fillColor: colorsMain[index] || textToRGBColor(serialC.keyLabel),\n };\n },\n );\n\n const sortedVals = plotValues.sort(\n (value1: any, value2: any) => value1.name - value2.name,\n );\n\n return {\n ...panelItem,\n widgetConfiguration: seriesWithColors,\n data: sortedVals,\n };\n }\n break;\n case widgetType.barChart:\n if (typeOfPayload === \"bargauge\") {\n let chartBars = get(payloadData, \"targets[0].result\", []);\n\n if (chartBars === null) {\n chartBars = [];\n }\n\n const sortFunction = (value1: any[], value2: any[]) =>\n value1[0] - value2[0];\n\n let values = [];\n if (panelItem.customStructure) {\n values = panelItem.customStructure.map((structureItem) => {\n const metricTake = chartBars.find((element: any) => {\n return element.metric.range === structureItem.originTag;\n });\n\n const elements = get(metricTake, \"values\", []);\n\n const sortResult = elements.sort(sortFunction);\n const lastValue = sortResult[sortResult.length - 1] || [\"\", \"0\"];\n\n return {\n name: structureItem.displayTag,\n a: parseInt(lastValue[1]),\n };\n });\n } else {\n // If no configuration is set, we construct the series for bar chart and return the element\n values = chartBars.map((elementValue: any) => {\n const metricKeyItem = Object.keys(elementValue.metric);\n\n const metricName = elementValue.metric[metricKeyItem[0]];\n\n const elements = get(elementValue, \"values\", []);\n\n const sortResult = elements.sort(sortFunction);\n const lastValue = sortResult[sortResult.length - 1] || [\"\", \"0\"];\n return { name: metricName, a: parseInt(lastValue[1]) };\n });\n }\n\n return {\n ...panelItem,\n data: values,\n };\n }\n break;\n case widgetType.singleRep:\n if (typeOfPayload === \"stat\") {\n // We sort values & get the last value\n let elements = get(payloadData, \"targets[0].result[0].values\", []);\n if (elements === null) {\n elements = [];\n }\n const metricCalc = get(\n payloadData,\n \"options.reduceOptions.calcs[0]\",\n \"lastNotNull\",\n );\n\n const valueDisplay = calculateMainValue(elements, metricCalc);\n\n const sortResult = elements.sort(\n (value1: any[], value2: any[]) => value1[0] - value2[0],\n );\n\n let valuesForBackground = [];\n\n if (sortResult.length === 1) {\n valuesForBackground.push({ value: 0 });\n }\n\n sortResult.forEach((eachVal: any) => {\n valuesForBackground.push({ value: parseInt(eachVal[1]) });\n });\n\n const innerLabel = panelItem.labelDisplayFunction\n ? panelItem.labelDisplayFunction(valueDisplay[1])\n : valueDisplay[1];\n\n return {\n ...panelItem,\n data: valuesForBackground,\n innerLabel,\n };\n }\n break;\n }\n\n return panelItem;\n};\n\nconst verifyNumeric = (item: string) => {\n return !isNaN(parseFloat(item));\n};\n\nexport const splitSizeMetric = (val: string) => {\n const splittedText = val.split(\" \");\n // Value is not a size metric, we return as common string\n\n const singleValue = () => {\n let vl = val;\n\n if (verifyNumeric(val)) {\n vl = representationNumber(parseFloat(val));\n }\n return {vl};\n };\n\n if (splittedText.length !== 2) {\n return singleValue();\n }\n\n if (!units.includes(splittedText[1])) {\n return singleValue();\n }\n\n return (\n \n {splittedText[0]}\n {splittedText[1]}\n \n );\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport ZoomOutMapIcon from \"@mui/icons-material/ZoomOutMap\";\nimport { Box } from \"@mui/material\";\nimport { IDashboardPanel } from \"../types\";\n\nimport { openZoomPage } from \"../../dashboardSlice\";\nimport { useAppDispatch } from \"../../../../../store\";\n\nconst ExpandGraphLink = ({ panelItem }: { panelItem: IDashboardPanel }) => {\n const dispatch = useAppDispatch();\n return (\n \n {\n dispatch(openZoomPage(panelItem));\n }}\n className={\"zoom-graph-icon\"}\n >\n \n \n \n );\n};\n\nexport default ExpandGraphLink;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Box, Menu, MenuItem } from \"@mui/material\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport { DownloadIcon } from \"mds\";\nimport { exportComponentAsPNG } from \"react-component-export-image\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { useAppDispatch } from \"../../../../src/store\";\nimport { setErrorSnackMessage } from \"../../../../src/systemSlice\";\n\ninterface IDownloadWidgetDataButton {\n title: any;\n componentRef: any;\n data: any;\n}\n\nconst DownloadWidgetDataButton = ({\n title,\n componentRef,\n data,\n}: IDownloadWidgetDataButton) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const openDownloadMenu = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleCloseDownload = () => {\n setAnchorEl(null);\n };\n const download = (filename: string, text: string) => {\n let element = document.createElement(\"a\");\n element.setAttribute(\"href\", \"data:text/plain;charset=utf-8,\" + text);\n element.setAttribute(\"download\", filename);\n\n element.style.display = \"none\";\n document.body.appendChild(element);\n\n element.click();\n document.body.removeChild(element);\n };\n\n const dispatch = useAppDispatch();\n const onDownloadError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n\n const convertToCSV = (objectToConvert: any) => {\n const array = [Object.keys(objectToConvert[0])].concat(objectToConvert);\n return array\n .map((it) => {\n return Object.values(it).toString();\n })\n .join(\"\\n\");\n };\n\n const widgetDataCSVFileName = () => {\n if (title !== null) {\n return (title + \"_\" + Date.now().toString() + \".csv\")\n .replace(/\\s+/g, \"\")\n .trim()\n .toLowerCase();\n } else {\n return \"widgetData_\" + Date.now().toString() + \".csv\";\n }\n };\n\n const downloadAsCSV = () => {\n if (data !== null && data.length > 0) {\n download(widgetDataCSVFileName(), convertToCSV(data));\n } else {\n let err: ErrorResponseHandler;\n err = {\n errorMessage: \"Unable to download widget data\",\n detailedError: \"Unable to download widget data - data not available\",\n };\n onDownloadError(err);\n }\n };\n\n const downloadAsPNG = () => {\n if (title !== null) {\n const pngFileName = (title + \"_\" + Date.now().toString() + \".png\")\n .replace(/\\s+/g, \"\")\n .trim()\n .toLowerCase();\n exportComponentAsPNG(componentRef, { fileName: pngFileName });\n } else {\n const pngFileName = \"widgetData_\" + Date.now().toString() + \".png\";\n exportComponentAsPNG(componentRef, { fileName: pngFileName });\n }\n };\n\n return (\n \n \n \n {\n handleCloseDownload();\n }}\n >\n {\n downloadAsCSV();\n }}\n >\n Download as CSV\n \n {\n downloadAsPNG();\n }}\n >\n Download as PNG\n \n \n \n \n );\n};\n\nexport default DownloadWidgetDataButton;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { tooltipCommon } from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tooltipCommon,\n });\n\nconst BarChartTooltip = ({\n active,\n payload,\n label,\n barChartConfiguration,\n classes,\n}: any) => {\n if (active) {\n return (\n
    \n
    {label}
    \n {payload &&\n payload.map((pl: any, index: number) => {\n return (\n \n \n
    \n {pl.value}\n
    \n
    \n );\n })}\n \n );\n }\n\n return null;\n};\n\nexport default withStyles(styles)(BarChartTooltip);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useRef, useState } from \"react\";\nimport styled from \"styled-components\";\nimport { Box, breakPoints, Grid, Loader } from \"mds\";\nimport { useSelector } from \"react-redux\";\nimport {\n Bar,\n BarChart,\n Cell,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport { IBarChartConfiguration } from \"./types\";\nimport { widgetCommon } from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { IDashboardPanel } from \"../types\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport ExpandGraphLink from \"./ExpandGraphLink\";\nimport DownloadWidgetDataButton from \"../../DownloadWidgetDataButton\";\nimport BarChartTooltip from \"./tooltips/BarChartTooltip\";\nimport api from \"../../../../../common/api\";\n\ninterface IBarChartWidget {\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n apiPrefix: string;\n zoomActivated?: boolean;\n}\n\nconst BarChartMain = styled.div(({ theme }) => ({\n ...widgetCommon(theme),\n loadingAlign: {\n width: \"100%\",\n paddingTop: \"15px\",\n textAlign: \"center\",\n margin: \"auto\",\n },\n}));\n\nconst CustomizedAxisTick = ({ y, payload }: any) => {\n return (\n \n {payload.value}\n \n );\n};\n\nconst BarChartWidget = ({\n title,\n panelItem,\n timeStart,\n timeEnd,\n apiPrefix,\n zoomActivated = false,\n}: IBarChartWidget) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [data, setData] = useState([]);\n const [result, setResult] = useState(null);\n const [hover, setHover] = useState(false);\n const [biggerThanMd, setBiggerThanMd] = useState(\n window.innerWidth >= breakPoints.md,\n );\n\n const componentRef = useRef();\n const widgetVersion = useSelector(\n (state: AppState) => state.dashboard.widgetLoadVersion,\n );\n\n const onHover = () => {\n setHover(true);\n };\n const onStopHover = () => {\n setHover(false);\n };\n\n useEffect(() => {\n setLoading(true);\n }, [widgetVersion]);\n\n useEffect(() => {\n const handleWindowResize = () => {\n let extMD = false;\n if (window.innerWidth >= breakPoints.md) {\n console.log(\"Bigger\");\n extMD = true;\n }\n setBiggerThanMd(extMD);\n };\n\n window.addEventListener(\"resize\", handleWindowResize);\n\n return () => {\n window.removeEventListener(\"resize\", handleWindowResize);\n };\n }, []);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod =\n timeEnd.toUnixInteger() - timeStart.toUnixInteger();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.toUnixInteger()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.toUnixInteger()}` : \"\"\n }`,\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n setData(widgetsWithValue.data);\n setResult(widgetsWithValue);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n const barChartConfiguration = result\n ? (result.widgetConfiguration as IBarChartConfiguration[])\n : [];\n\n let greatestIndex = 0;\n let currentValue = 0;\n\n if (barChartConfiguration.length === 1) {\n const dataGraph = barChartConfiguration[0];\n data.forEach((item: any, index: number) => {\n if (item[dataGraph.dataKey] > currentValue) {\n currentValue = item[dataGraph.dataKey];\n greatestIndex = index;\n }\n });\n }\n\n return (\n \n \n {!zoomActivated && (\n \n \n
    {title}
    \n
    \n \n {hover && }\n \n \n \n \n \n )}\n {loading && (\n \n \n \n )}\n {!loading && (\n }\n className={zoomActivated ? \"zoomChartCont\" : \"contentContainer\"}\n >\n \n \n \n }\n tickLine={false}\n axisLine={false}\n width={150}\n hide={!biggerThanMd}\n style={{\n fontSize: \"12px\",\n fontWeight: 100,\n }}\n />\n {barChartConfiguration.map((bar) => (\n \n {barChartConfiguration.length === 1 ? (\n \n {data.map((_: any, index: number) => (\n \n ))}\n \n ) : null}\n \n ))}\n \n }\n />\n \n \n \n )}\n \n
    \n );\n};\n\nexport default BarChartWidget;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { getTimeFromTimestamp } from \"../../../../../../common/utils\";\nimport { tooltipCommon } from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tooltipCommon,\n });\n\nconst LineChartTooltip = ({\n active,\n payload,\n label,\n linearConfiguration,\n yAxisFormatter,\n classes,\n}: any) => {\n if (active) {\n return (\n
    \n
    \n {getTimeFromTimestamp(label, true)}\n
    \n {payload &&\n payload.map((pl: any, index: number) => {\n return (\n \n \n
    \n \n {linearConfiguration[index].keyLabel}:{\" \"}\n {yAxisFormatter(pl.value)}\n \n
    \n
    \n );\n })}\n \n );\n }\n\n return null;\n};\n\nexport default withStyles(styles)(LineChartTooltip);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useRef, useState } from \"react\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport {\n Area,\n AreaChart,\n CartesianGrid,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport { Box, breakPoints, Grid, Loader } from \"mds\";\nimport { ILinearGraphConfiguration } from \"./types\";\nimport { widgetCommon } from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { IDashboardPanel } from \"../types\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport api from \"../../../../../common/api\";\nimport LineChartTooltip from \"./tooltips/LineChartTooltip\";\nimport ExpandGraphLink from \"./ExpandGraphLink\";\nimport DownloadWidgetDataButton from \"../../DownloadWidgetDataButton\";\n\ninterface ILinearGraphWidget {\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n apiPrefix: string;\n hideYAxis?: boolean;\n yAxisFormatter?: (item: string) => string;\n xAxisFormatter?: (item: string, var1: boolean, var2: boolean) => string;\n areaWidget?: boolean;\n zoomActivated?: boolean;\n}\n\nconst LinearGraphMain = styled.div(({ theme }) => ({\n ...widgetCommon(theme),\n \"& .chartCont\": {\n position: \"relative\",\n height: 140,\n width: \"100%\",\n },\n \"& .legendChart\": {\n display: \"flex\",\n flexDirection: \"column\",\n flex: \"0 1 auto\",\n maxHeight: 130,\n margin: 0,\n overflowY: \"auto\",\n position: \"relative\",\n textAlign: \"center\",\n width: \"100%\",\n justifyContent: \"flex-start\",\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontWeight: \"bold\",\n fontSize: 12,\n [`@media (max-width: ${breakPoints.md}px)`]: {\n display: \"none\",\n },\n },\n \"& .loadingAlign\": {\n width: 40,\n height: 40,\n textAlign: \"center\",\n margin: \"15px auto\",\n },\n}));\n\nconst LinearGraphWidget = ({\n title,\n timeStart,\n timeEnd,\n panelItem,\n apiPrefix,\n hideYAxis = false,\n areaWidget = false,\n yAxisFormatter = (item: string) => item,\n xAxisFormatter = (item: string, var1: boolean, var2: boolean) => item,\n zoomActivated = false,\n}: ILinearGraphWidget) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [hover, setHover] = useState(false);\n const [data, setData] = useState([]);\n const [csvData, setCsvData] = useState([]);\n const [dataMax, setDataMax] = useState(0);\n const [result, setResult] = useState(null);\n const widgetVersion = useSelector(\n (state: AppState) => state.dashboard.widgetLoadVersion,\n );\n\n const componentRef = useRef(null);\n\n useEffect(() => {\n setLoading(true);\n }, [widgetVersion]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod =\n timeEnd.toUnixInteger() - timeStart.toUnixInteger();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.toUnixInteger()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.toUnixInteger()}` : \"\"\n }`,\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n setData(widgetsWithValue.data);\n setResult(widgetsWithValue);\n setLoading(false);\n let maxVal = 0;\n for (const dp of widgetsWithValue.data) {\n for (const key in dp) {\n if (key === \"name\") {\n continue;\n }\n let val = parseInt(dp[key]);\n\n if (isNaN(val)) {\n val = 0;\n }\n\n if (maxVal < val) {\n maxVal = val;\n }\n }\n }\n setDataMax(maxVal);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n let intervalCount = Math.floor(data.length / 5);\n\n const onHover = () => {\n setHover(true);\n };\n\n const onStopHover = () => {\n setHover(false);\n };\n\n useEffect(() => {\n const fmtData = data.map((el: any) => {\n const date = new Date(el?.name * 1000);\n return {\n ...el,\n name: date,\n };\n });\n\n setCsvData(fmtData);\n }, [data]);\n\n const linearConfiguration = result\n ? (result?.widgetConfiguration as ILinearGraphConfiguration[])\n : [];\n\n const CustomizedDot = (prop: any) => {\n const { cx, cy, index } = prop;\n\n if (index % 3 !== 0) {\n return null;\n }\n return ;\n };\n\n let dspLongDate = false;\n\n if (zoomActivated) {\n dspLongDate = true;\n }\n\n return (\n \n \n {!zoomActivated && (\n \n \n {title}\n \n \n {hover && }\n \n \n {componentRef !== null && (\n \n )}\n \n \n )}\n
    \n \n {loading && }\n {!loading && (\n \n \n \n \n {areaWidget && (\n \n \n \n \n\n \n \n \n )}\n \n \n xAxisFormatter(value, dspLongDate, true)\n }\n interval={intervalCount}\n tick={{\n fontSize: \"68%\",\n fontWeight: \"normal\",\n color: \"#404143\",\n }}\n tickCount={10}\n stroke={\"#082045\"}\n />\n yAxisFormatter(value)}\n tick={{\n fontSize: \"68%\",\n fontWeight: \"normal\",\n color: \"#404143\",\n }}\n stroke={\"#082045\"}\n />\n {linearConfiguration.map((section, index) => {\n return (\n : false}\n />\n );\n })}\n \n }\n wrapperStyle={{\n zIndex: 5000,\n }}\n />\n \n \n \n {!areaWidget && (\n \n {zoomActivated && (\n \n Series\n
    \n
    \n
    \n )}\n\n \n {linearConfiguration.map((section, index) => {\n return (\n \n \n \n {section.keyLabel}\n \n \n );\n })}\n \n
    \n )}\n
    \n )}\n \n
    \n \n
    \n );\n};\n\nexport default LinearGraphWidget;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport styled from \"styled-components\";\nimport { Box, Loader } from \"mds\";\nimport { Cell, Pie, PieChart, ResponsiveContainer } from \"recharts\";\nimport { useSelector } from \"react-redux\";\nimport api from \"../../../../../common/api\";\nimport { IPieChartConfiguration } from \"./types\";\nimport { widgetCommon } from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { IDashboardPanel } from \"../types\";\nimport { splitSizeMetric, widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\n\ninterface IPieChartWidget {\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n apiPrefix: string;\n}\n\nconst PieChartMain = styled.div(({ theme }) => ({\n ...widgetCommon(theme),\n \"& .loadingAlign\": {\n width: \"100%\",\n paddingTop: \"15px\",\n textAlign: \"center\",\n margin: \"auto\",\n },\n \"& .pieChartLabel\": {\n fontSize: 60,\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n fontWeight: \"bold\",\n width: \"100%\",\n \"& .unitText\": {\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontSize: 12,\n },\n },\n \"& .chartContainer\": {\n width: \"100%\",\n height: 140,\n },\n}));\n\nconst PieChartWidget = ({\n title,\n panelItem,\n timeStart,\n timeEnd,\n apiPrefix,\n}: IPieChartWidget) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [dataInner, setDataInner] = useState([]);\n const [dataOuter, setDataOuter] = useState([]);\n const [result, setResult] = useState(null);\n const widgetVersion = useSelector(\n (state: AppState) => state.dashboard.widgetLoadVersion,\n );\n\n useEffect(() => {\n setLoading(true);\n }, [widgetVersion]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod =\n timeEnd.toUnixInteger() - timeStart.toUnixInteger();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.toUnixInteger()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.toUnixInteger()}` : \"\"\n }`,\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n setDataInner(widgetsWithValue.data);\n setDataOuter(widgetsWithValue.dataOuter as object[]);\n setResult(widgetsWithValue);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n const pieChartConfiguration = result\n ? (result.widgetConfiguration as IPieChartConfiguration)\n : [];\n const middleLabel = result?.innerLabel;\n\n const innerColors = get(pieChartConfiguration, \"innerChart.colorList\", []);\n const outerColors = get(pieChartConfiguration, \"outerChart.colorList\", []);\n\n return (\n \n \n {title}\n {loading && (\n \n \n \n )}\n {!loading && (\n \n \n {middleLabel && splitSizeMetric(middleLabel)}\n \n \n \n \n {dataOuter && (\n \n {dataOuter.map((entry, index) => (\n \n ))}\n \n )}\n {dataInner && (\n \n {dataInner.map((entry, index) => {\n return (\n \n );\n })}\n \n )}\n \n \n \n \n )}\n \n \n );\n};\n\nexport default PieChartWidget;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { Loader } from \"mds\";\nimport api from \"../../../../../common/api\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { IDashboardPanel } from \"../types\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\n\ninterface ISimpleWidget {\n iconWidget: any;\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n apiPrefix: string;\n renderFn?: undefined | null | ((arg: Record) => any);\n}\n\nconst SimpleWidgetMain = styled.span(({ theme }) => ({\n display: \"inline-flex\",\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n alignItems: \"center\",\n \"& .icon\": {\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n fill: get(theme, \"signalColors.main\", \"#07193E\"),\n marginRight: 5,\n marginLeft: 12,\n },\n \"& .widgetLabel\": {\n fontWeight: \"bold\",\n textTransform: \"uppercase\",\n marginRight: 10,\n },\n \"& .widgetValue\": {\n marginRight: 25,\n },\n}));\n\nconst SimpleWidget = ({\n iconWidget,\n title,\n panelItem,\n timeStart,\n timeEnd,\n apiPrefix,\n renderFn,\n}: ISimpleWidget) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [data, setData] = useState(\"\");\n const widgetVersion = useSelector(\n (state: AppState) => state.dashboard.widgetLoadVersion,\n );\n\n useEffect(() => {\n setLoading(true);\n }, [widgetVersion]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod =\n timeEnd.toUnixInteger() - timeStart.toUnixInteger();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.toUnixInteger()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.toUnixInteger()}` : \"\"\n }`,\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n setData(widgetsWithValue.data);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n if (renderFn) {\n return renderFn({\n valueToRender: data,\n loading,\n title,\n id: panelItem.id,\n iconWidget: iconWidget,\n });\n }\n return (\n \n {loading && (\n
    \n \n
    \n )}\n {!loading && (\n \n {iconWidget ? iconWidget : null}\n {title}: \n {data}\n \n )}\n
    \n );\n};\n\nexport default SimpleWidget;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box, breakPoints } from \"mds\";\n\nconst DashboardItemBox = ({ children }: { children: any }) => {\n return (\n \n {children}\n \n );\n};\n\nexport default DashboardItemBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { Box, breakPoints, Loader, Tooltip } from \"mds\";\n\nconst StatCardMain = styled.div(({ theme }) => ({\n fontFamily: \"Inter,sans-serif\",\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n maxWidth: \"300px\",\n display: \"flex\",\n marginLeft: \"auto\",\n marginRight: \"auto\",\n cursor: \"default\",\n position: \"relative\",\n width: \"100%\",\n}));\n\nconst NumericStatCard = ({\n value,\n label = \"\",\n icon = null,\n loading = false,\n}: {\n value: string | number;\n label?: any;\n icon?: any;\n loading?: boolean;\n}) => {\n const getContent = () => {\n return (\n \n \n \n {label}\n \n\n \n \n {value}\n \n \n \n \n {}\n {loading ? (\n \n ) : (\n icon\n )}\n \n \n );\n };\n\n return {getContent()};\n};\n\nexport default NumericStatCard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport NumericStatCard from \"./NumericStatCard\";\nimport { BucketsIcon } from \"mds\";\n\nconst BucketsCountItem = ({\n title,\n value,\n loading,\n}: {\n title: string;\n value: string;\n loading?: boolean;\n}) => {\n return (\n }\n value={value}\n loading={loading}\n />\n );\n};\n\nexport default BucketsCountItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport NumericStatCard from \"./NumericStatCard\";\nimport { TotalObjectsIcon } from \"mds\";\n\nconst ObjectsCountItem = ({\n title,\n value,\n loading,\n}: {\n title: string;\n value: string;\n loading?: boolean;\n}) => {\n return (\n }\n value={value}\n loading={loading}\n />\n );\n};\n\nexport default ObjectsCountItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { connect, useSelector } from \"react-redux\";\nimport { IDashboardPanel } from \"../types\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { representationNumber } from \"../../../../../common/utils\";\nimport api from \"../../../../../common/api\";\nimport DashboardItemBox from \"../../DashboardItemBox\";\nimport BucketsCountItem from \"./BucketsCountItem\";\nimport ObjectsCountItem from \"./ObjectsCountItem\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\n\ninterface ISingleRepWidget {\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n\n color?: string;\n fillColor?: string;\n apiPrefix: string;\n}\n\nconst SingleRepWidget = ({\n title,\n panelItem,\n timeStart,\n timeEnd,\n propLoading,\n\n apiPrefix,\n}: ISingleRepWidget) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [result, setResult] = useState(null);\n const widgetVersion = useSelector(\n (state: AppState) => state.dashboard.widgetLoadVersion,\n );\n\n useEffect(() => {\n setLoading(true);\n }, [widgetVersion]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod =\n timeEnd.toUnixInteger() - timeStart.toUnixInteger();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.toUnixInteger()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.toUnixInteger()}` : \"\"\n }`,\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n setResult(widgetsWithValue);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n let repNumber = \"\";\n\n if (result) {\n const resultRep = parseInt(result.innerLabel || \"0\");\n\n if (!isNaN(resultRep)) {\n repNumber = representationNumber(resultRep);\n } else {\n repNumber = \"0\";\n }\n }\n\n const renderById = (id: number) => {\n if (id === 66) {\n return (\n \n \n \n );\n }\n if (id === 44) {\n return (\n \n \n \n );\n }\n\n return null;\n };\n\n return renderById(panelItem.id);\n};\n\nconst connector = connect(null, {\n setErrorSnackMessage: setErrorSnackMessage,\n});\n\nexport default connector(SingleRepWidget);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Box, Loader } from \"mds\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { widgetCommon } from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { splitSizeMetric, widgetDetailsToPanel } from \"../utils\";\nimport { IDashboardPanel } from \"../types\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport api from \"../../../../../common/api\";\n\ninterface ISingleValueWidget {\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n apiPrefix: string;\n renderFn?: (arg: Record) => any;\n}\n\nconst SingleValueWidgetMain = styled.div(({ theme }) => ({\n display: \"flex\",\n height: 140,\n flexDirection: \"column\",\n justifyContent: \"center\",\n \"& .unitText\": {\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontSize: 12,\n },\n \"& .loadingAlign\": {\n width: \"100%\",\n textAlign: \"center\",\n margin: \"auto\",\n },\n \"& .metric\": {\n fontSize: 60,\n lineHeight: 1,\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n fontWeight: 700,\n },\n \"& .titleElement\": {\n fontSize: 10,\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontWeight: 700,\n },\n ...widgetCommon(theme),\n}));\n\nconst SingleValueWidget = ({\n title,\n panelItem,\n timeStart,\n timeEnd,\n apiPrefix,\n renderFn,\n}: ISingleValueWidget) => {\n const dispatch = useAppDispatch();\n\n const [loading, setLoading] = useState(false);\n const [data, setData] = useState(\"\");\n const widgetVersion = useSelector(\n (state: AppState) => state.dashboard.widgetLoadVersion,\n );\n\n useEffect(() => {\n setLoading(true);\n }, [widgetVersion]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod =\n timeEnd.toUnixInteger() - timeStart.toUnixInteger();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.toUnixInteger()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.toUnixInteger()}` : \"\"\n }`,\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n setData(widgetsWithValue.data);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n const valueToRender = splitSizeMetric(data);\n\n if (renderFn) {\n return renderFn({ valueToRender, loading, title, id: panelItem.id });\n }\n return (\n \n {loading && (\n \n \n \n )}\n {!loading && (\n \n {splitSizeMetric(data)}\n {title}\n \n )}\n \n );\n};\n\nexport default SingleValueWidget;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { Box, breakPoints, Loader, ReportedUsageIcon } from \"mds\";\nimport { Cell, Pie, PieChart } from \"recharts\";\nimport { useSelector } from \"react-redux\";\nimport api from \"../../../../../common/api\";\nimport { IDashboardPanel } from \"../types\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport {\n calculateBytes,\n capacityColors,\n niceBytesInt,\n} from \"../../../../../common/utils\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\n\nconst CapacityItemMain = styled.div(({ theme }) => ({\n flex: 1,\n display: \"flex\",\n alignItems: \"center\",\n flexFlow: \"row\",\n \"& .usableLabel\": {\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontSize: \"10px\",\n display: \"flex\",\n flexFlow: \"column\",\n alignItems: \"center\",\n textAlign: \"center\",\n },\n \"& .usedLabel\": {\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontWeight: \"bold\",\n fontSize: \"14px\",\n },\n \"& .totalUsed\": {\n display: \"flex\",\n \"& .value\": {\n fontSize: \"50px\",\n fontFamily: \"Inter\",\n fontWeight: 600,\n alignSelf: \"flex-end\",\n lineHeight: 1,\n },\n \"& .unit\": {\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontWeight: \"bold\",\n fontSize: \"14px\",\n marginLeft: \"12px\",\n alignSelf: \"flex-end\",\n },\n },\n \"& .ofUsed\": {\n marginTop: \"5px\",\n \"& .value\": {\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontWeight: \"bold\",\n fontSize: \"14px\",\n textAlign: \"right\",\n },\n },\n [`@media (max-width: ${breakPoints.sm}px)`]: {\n flexFlow: \"column\",\n },\n}));\n\nconst CapacityItem = ({\n value,\n timeStart,\n timeEnd,\n apiPrefix,\n}: {\n value: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n apiPrefix: string;\n}) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n\n const [totalUsableFree, setTotalUsableFree] = useState(0);\n const [totalUsableFreeRatio, setTotalUsableFreeRatio] = useState(0);\n const [totalUsed, setTotalUsed] = useState(0);\n const [totalUsable, setTotalUsable] = useState(0);\n const widgetVersion = useSelector(\n (state: AppState) => state.dashboard.widgetLoadVersion,\n );\n\n useEffect(() => {\n setLoading(true);\n }, [widgetVersion]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod =\n timeEnd.toUnixInteger() - timeStart.toUnixInteger();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${value.id}/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.toUnixInteger()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.toUnixInteger()}` : \"\"\n }`,\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, value);\n\n let tUsable = 0;\n let tUsed = 0;\n let tFree = 0;\n\n widgetsWithValue.data.forEach((eachArray: any[]) => {\n eachArray.forEach((itemSum) => {\n switch (itemSum.legend) {\n case \"Total Usable\":\n tUsable += itemSum.value;\n break;\n case \"Used Space\":\n tUsed += itemSum.value;\n break;\n case \"Usable Free\":\n tFree += itemSum.value;\n break;\n }\n });\n });\n\n const freeRatio = Math.round((tFree / tUsable) * 100);\n\n setTotalUsableFree(tFree);\n setTotalUsableFreeRatio(freeRatio);\n setTotalUsed(tUsed);\n setTotalUsable(tUsable);\n\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, value, timeEnd, timeStart, dispatch, apiPrefix]);\n\n const usedConvert = calculateBytes(totalUsed, true, false);\n\n const plotValues = [\n {\n value: totalUsableFree,\n color: \"#D6D6D6\",\n label: \"Usable Available Space\",\n },\n {\n value: totalUsed,\n color: capacityColors(totalUsed, totalUsable),\n label: \"Used Space\",\n },\n ];\n return (\n \n \n Capacity\n \n \n \n {`${totalUsableFreeRatio}%`}\n
    \n Free\n \n \n \n {plotValues.map((entry, index) => (\n \n ))}\n \n \n \n \n \n Used:\n \n
    {usedConvert.total}
    \n
    {usedConvert.unit}
    \n
    \n \n
    Of: {niceBytesInt(totalUsable)}
    \n
    \n
    \n\n \n \n {loading ? (\n \n ) : (\n \n )}\n \n \n \n
    \n );\n};\n\nexport default CapacityItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { Box, Loader, SuccessIcon } from \"mds\";\n\nconst TimeStatBase = styled.div(({ theme }) => ({\n display: \"grid\",\n alignItems: \"center\",\n gap: 8,\n height: 33,\n paddingLeft: 15,\n gridTemplateColumns: \"20px 1.5fr .5fr 20px\",\n background: get(theme, \"boxBackground\", \"#FBFAFA\"), // #EBF9EE\n \"& .min-icon\": {\n height: \"12px\",\n width: \"12px\",\n fill: get(theme, \"signalColors.good\", \"#4CCB92\"),\n },\n \"& .ok-icon\": {\n height: \"8px\",\n width: \"8px\",\n fill: get(theme, \"signalColors.good\", \"#4CCB92\"),\n color: get(theme, \"signalColors.good\", \"#4CCB92\"),\n },\n \"& .timeStatLabel\": {\n fontSize: \"12px\",\n color: get(theme, \"signalColors.good\", \"#4CCB92\"),\n fontWeight: 600,\n },\n \"& .timeStatValue\": {\n fontSize: \"12px\",\n color: get(theme, \"signalColors.good\", \"#4CCB92\"),\n },\n}));\n\nconst TimeStatItem = ({\n icon,\n label,\n value,\n loading = false,\n}: {\n icon: any;\n label: any;\n value: string;\n loading?: boolean;\n}) => {\n return (\n \n {loading ? : icon}\n {label}\n {value}\n {value !== \"n/a\" ? : null}\n \n );\n};\n\nexport default TimeStatItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box, breakPoints } from \"mds\";\nimport TimeStatItem from \"../../TimeStatItem\";\n\nexport type SimpleWidgetRenderProps = {\n valueToRender?: any;\n loading?: boolean;\n title?: any;\n id?: number;\n iconWidget?: any;\n};\nconst HealActivityRenderer = ({\n valueToRender = \"\",\n loading = false,\n iconWidget = null,\n}: SimpleWidgetRenderProps) => {\n return (\n \n \n \n Time since last\n {\" \"}\n Heal Activity\n \n }\n value={valueToRender}\n />\n \n );\n};\n\nexport default HealActivityRenderer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box, breakPoints } from \"mds\";\nimport TimeStatItem from \"../../TimeStatItem\";\nimport { SimpleWidgetRenderProps } from \"./HealActivityRenderer\";\n\nconst ScanActivityRenderer = ({\n valueToRender = \"\",\n loading = false,\n iconWidget = null,\n}: SimpleWidgetRenderProps) => {\n return (\n \n \n \n Time since last\n {\" \"}\n Scan Activity\n \n }\n value={valueToRender}\n />\n \n );\n};\n\nexport default ScanActivityRenderer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"mds\";\nimport TimeStatItem from \"../../TimeStatItem\";\n\nexport type SimpleWidgetRenderProps = {\n valueToRender?: any;\n loading?: boolean;\n title?: any;\n id?: number;\n iconWidget?: any;\n};\nconst UptimeActivityRenderer = ({\n valueToRender = \"\",\n loading = false,\n iconWidget = null,\n}: SimpleWidgetRenderProps) => {\n return (\n \n Uptime}\n value={valueToRender}\n />\n \n );\n};\n\nexport default UptimeActivityRenderer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { IDashboardPanel, widgetType } from \"./types\";\nimport BarChartWidget from \"./Widgets/BarChartWidget\";\nimport LinearGraphWidget from \"./Widgets/LinearGraphWidget\";\nimport PieChartWidget from \"./Widgets/PieChartWidget\";\nimport SimpleWidget from \"./Widgets/SimpleWidget\";\nimport SingleRepWidget from \"./Widgets/SingleRepWidget\";\nimport SingleValueWidget from \"./Widgets/SingleValueWidget\";\nimport CapacityItem from \"./Widgets/CapacityItem\";\nimport DashboardItemBox from \"../DashboardItemBox\";\nimport HealActivityRenderer, {\n SimpleWidgetRenderProps,\n} from \"./Widgets/HealActivityRenderer\";\nimport ScanActivityRenderer from \"./Widgets/ScanActivityRenderer\";\nimport UptimeActivityRenderer from \"./Widgets/UptimeActivityRenderer\";\n\nexport const componentToUse = (\n value: IDashboardPanel,\n timeStart: any,\n timeEnd: any,\n loading: boolean,\n apiPrefix: string,\n zoomActivated: boolean = false,\n) => {\n switch (value.type) {\n case widgetType.singleValue:\n return (\n \n );\n case widgetType.simpleWidget:\n let renderFn;\n let CmpToRender: any = null;\n if (value.id === 80) {\n CmpToRender = HealActivityRenderer;\n } else if (value.id === 81) {\n CmpToRender = ScanActivityRenderer;\n } else if (value.id === 1) {\n CmpToRender = UptimeActivityRenderer;\n }\n\n if ([80, 81, 1].includes(value.id)) {\n renderFn = ({\n valueToRender,\n loading,\n title,\n id,\n iconWidget,\n }: SimpleWidgetRenderProps) => {\n return (\n \n );\n };\n }\n return (\n \n );\n case widgetType.pieChart:\n if (value.id === 50) {\n return (\n \n \n \n );\n }\n return (\n \n );\n case widgetType.linearGraph:\n case widgetType.areaGraph:\n return (\n \n );\n case widgetType.barChart:\n return (\n \n );\n case widgetType.singleRep:\n const fillColor = value.fillColor ? value.fillColor : value.color;\n return (\n \n );\n default:\n return null;\n }\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Box } from \"mds\";\nimport { CSSObject } from \"styled-components\";\nimport { breakPoints } from \"mds\";\n\nexport type DLayoutColumnProps = {\n componentId: number;\n sx?: CSSObject;\n};\nexport type DLayoutRowProps = {\n sx?: CSSObject;\n columns: DLayoutColumnProps[];\n};\n\nexport const summaryPanelsLayout: DLayoutRowProps[] = [\n {\n sx: {\n minWidth: 0,\n display: \"grid\",\n gap: \"30px\",\n gridTemplateColumns: \"1fr 1fr 1fr 1fr\",\n [`@media (max-width: ${breakPoints.sm}px)`]: {\n gridTemplateColumns: \"1fr\",\n },\n [`@media (max-width: ${breakPoints.md}px)`]: {\n gridTemplateColumns: \"1fr 1fr\",\n },\n },\n columns: [\n {\n componentId: 66,\n },\n {\n componentId: 44,\n },\n {\n componentId: 500,\n },\n {\n componentId: 501,\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n minWidth: 0, // important to avoid css grid blow out.\n gap: \"30px\",\n gridTemplateColumns: \"1fr 1fr\",\n [`@media (max-width: ${breakPoints.md}px)`]: {\n gridTemplateColumns: \"1fr\",\n },\n },\n columns: [\n {\n componentId: 50,\n },\n {\n componentId: 502,\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gap: \"30px\",\n gridTemplateColumns: \"1fr 1fr 1fr\",\n [`@media (max-width: ${breakPoints.md}px)`]: {\n gridTemplateColumns: \"1fr\",\n },\n },\n columns: [\n {\n componentId: 80,\n },\n {\n componentId: 81,\n },\n {\n componentId: 1,\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gap: \"30px\",\n gridTemplateColumns: \"1fr 1fr\",\n [`@media (max-width: ${breakPoints.md}px)`]: {\n gridTemplateColumns: \"1fr\",\n },\n },\n columns: [\n {\n componentId: 68,\n },\n {\n componentId: 52,\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gap: \"30px\",\n gridTemplateColumns: \"1fr 1fr\",\n [`@media (max-width: ${breakPoints.md}px)`]: {\n gridTemplateColumns: \"1fr\",\n },\n },\n columns: [\n {\n componentId: 63,\n },\n {\n componentId: 70,\n },\n ],\n },\n];\n\nexport const trafficPanelsLayout: DLayoutRowProps[] = [\n {\n sx: {\n display: \"grid\",\n gridTemplateColumns: \"1fr\",\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 60,\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gap: \"30px\",\n gridTemplateColumns: \"1fr 1fr\",\n [`@media (max-width: ${breakPoints.md}px)`]: {\n gridTemplateColumns: \"1fr\",\n },\n },\n columns: [\n {\n componentId: 71,\n sx: {\n flex: 1,\n width: \"50%\",\n flexShrink: 0,\n },\n },\n {\n componentId: 17,\n sx: {\n flex: 1,\n width: \"50%\",\n flexShrink: 0,\n },\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n gridTemplateColumns: \"1fr\",\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 73,\n },\n ],\n },\n];\n\nexport const resourcesPanelsLayout: DLayoutRowProps[] = [\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gridTemplateColumns: \"1fr 1fr\",\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 76,\n },\n {\n componentId: 77,\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gridTemplateColumns: \"1fr 1fr\",\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 82,\n },\n {\n componentId: 74,\n },\n ],\n },\n];\nexport const resourcesPanelsLayoutAdvanced: DLayoutRowProps[] = [\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gridTemplateColumns: \"1fr 1fr\",\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 11,\n },\n {\n componentId: 8,\n },\n ],\n },\n];\n\nexport const RowPanelLayout = ({ children }: { children: any }) => {\n return (\n \n {children}\n \n );\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\n\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { IDashboardPanel } from \"./types\";\nimport { componentToUse } from \"./widgetUtils\";\nimport { closeZoomPage } from \"../dashboardSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IZoomWidget {\n widgetRender: number;\n value: IDashboardPanel | null;\n modalOpen: boolean;\n timeStart: any;\n timeEnd: any;\n apiPrefix: string;\n}\n\nconst ZoomWidget = ({\n value,\n modalOpen,\n timeStart,\n timeEnd,\n apiPrefix,\n}: IZoomWidget) => {\n const dispatch = useAppDispatch();\n if (!value) {\n return null;\n }\n\n return (\n {\n dispatch(closeZoomPage());\n }}\n modalOpen={modalOpen}\n wideLimit={false}\n sx={{\n padding: 0,\n }}\n >\n \n {componentToUse(value, timeStart, timeEnd, true, apiPrefix, true)}\n \n \n );\n};\n\nexport default ZoomWidget;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { Box } from \"mds\";\nimport { Link } from \"react-router-dom\";\nimport { widgetCommon } from \"../Common/FormComponents/common/styleLibrary\";\n\nexport interface ISubInterface {\n message: string;\n fontWeight?: \"normal\" | \"bold\";\n}\n\ninterface ICommonCard {\n title: string;\n metricValue: any;\n metricUnit?: string;\n subMessage?: ISubInterface;\n moreLink?: string;\n rightComponent?: any;\n extraMargin?: boolean;\n}\n\nconst CommonCardItem = styled.div(({ theme }) => ({\n ...widgetCommon(theme),\n \"& .metricText\": {\n fontSize: 70,\n lineHeight: 1.1,\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n fontWeight: \"bold\",\n },\n \"& .unitText\": {\n fontSize: 10,\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontWeight: \"normal\",\n },\n \"& .subHeaderContainer\": {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n },\n \"& .subMessage\": {\n fontSize: 10,\n color: get(theme, \"mutedText\", \"#87888d\"),\n \"&.bold\": {\n fontWeight: \"bold\",\n },\n },\n \"& .headerContainer\": {\n display: \"flex\",\n justifyContent: \"space-between\",\n },\n \"& .viewAll\": {\n fontSize: 10,\n color: get(theme, \"signalColors.danger\", \"#C83B51\"),\n textTransform: \"capitalize\",\n\n \"& a, & a:hover, & a:visited, & a:active\": {\n color: get(theme, \"signalColors.danger\", \"#C83B51\"),\n },\n },\n}));\n\nconst CommonCard = ({\n title,\n metricValue,\n metricUnit,\n subMessage,\n moreLink,\n rightComponent,\n extraMargin = false,\n}: ICommonCard) => {\n const SubHeader = () => {\n return (\n \n
    \n
    \n
    \n \n {metricValue}\n {metricUnit}\n \n
    \n {subMessage && (\n \n {subMessage.message}\n \n )}\n
    \n
    {rightComponent}
    \n
    \n
    \n );\n };\n\n const Header = () => {\n return (\n \n
    \n {title}\n {moreLink && (\n \n \n View All\n \n \n )}\n
    \n
    \n );\n };\n\n return (\n \n \n {metricValue !== \"\" && (\n \n
    \n \n \n )}\n \n \n );\n};\n\nexport default CommonCard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport CommonCard from \"../CommonCard\";\n\ninterface IMergedWidgets {\n title: string;\n leftComponent: any;\n rightComponent: any;\n}\n\nconst MergedWidgets = ({\n title,\n leftComponent,\n rightComponent,\n}: IMergedWidgets) => {\n return (\n \n \n \n );\n};\n\nexport default MergedWidgets;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { Loader, Box } from \"mds\";\nimport { useSelector } from \"react-redux\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { IDashboardPanel } from \"../types\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport api from \"../../../../../common/api\";\n\nconst EntityStateStatItem = ({\n panelItem,\n timeStart,\n timeEnd,\n apiPrefix,\n statLabel,\n}: {\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n apiPrefix: string;\n statLabel: any;\n}) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [data, setData] = useState(\"\");\n const widgetVersion = useSelector(\n (state: AppState) => state.dashboard.widgetLoadVersion,\n );\n\n useEffect(() => {\n setLoading(true);\n }, [widgetVersion]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod =\n timeEnd.toUnixInteger() - timeStart.toUnixInteger();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.toUnixInteger()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.toUnixInteger()}` : \"\"\n }`,\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n setData(widgetsWithValue.data);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n let toRender = loading ? (\n \n \n \n ) : (\n \n {data}\n {statLabel}\n \n );\n\n return toRender;\n};\n\nexport default EntityStateStatItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { Box, breakPoints } from \"mds\";\n\nconst DualSTCardContent = styled.div(({ theme }) => ({\n fontFamily: \"Inter,sans-serif\",\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n maxWidth: \"321px\",\n display: \"flex\",\n marginLeft: \"auto\",\n marginRight: \"auto\",\n cursor: \"default\",\n \"& .stat-text\": {\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontSize: \"12px\",\n marginTop: \"8px\",\n },\n}));\n\nconst DualStatCard = ({\n statItemLeft = null,\n statItemRight = null,\n icon = null,\n label = \"\",\n}: {\n statItemLeft: any;\n statItemRight: any;\n icon: any;\n label: string;\n}) => {\n const getContent = () => {\n return (\n \n \n \n {label}\n \n\n \n {statItemLeft}\n {statItemRight}\n \n \n \n {icon}\n \n \n );\n };\n\n return {getContent()};\n};\n\nexport default DualStatCard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { CircleIcon, DrivesIcon, ServersIcon, Box } from \"mds\";\nimport EntityStateStatItem from \"./EntityStateStatItem\";\nimport DualStatCard from \"./DualStatCard\";\nimport { IDashboardPanel } from \"../types\";\n\nconst StateIndicator = styled.div(({ theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n marginTop: \"5px\",\n gap: 8,\n \"&.online\": {\n \"& .min-icon\": {\n margin: 0,\n fill: get(theme, \"signalColors.good\", \"#4CCB92\"),\n },\n },\n \"&.offline\": {\n \"& .min-icon\": {\n margin: 0,\n fill: get(theme, \"signalColors.danger\", \"#C51B3F\"),\n },\n },\n \"& .indicatorText\": {\n color: get(theme, \"mutedText\", \"#C51B3F\"),\n fontSize: 12,\n },\n}));\n\nconst EntityStateItemRenderer = ({\n info,\n timeStart,\n timeEnd,\n apiPrefix,\n}: {\n info: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n apiPrefix: string;\n}) => {\n const { mergedPanels = [], id } = info;\n const [leftPanel, rightPanel] = mergedPanels;\n\n const lStatItem = (\n \n \n Online\n \n }\n />\n );\n const rStatItem = (\n \n \n Offline\n \n }\n />\n );\n\n let statIcon = null;\n let statLabel = \"\";\n if (id === 500) {\n statIcon = ;\n statLabel = \"Servers\";\n } else if (id === 501) {\n statIcon = ;\n statLabel = \"Drives\";\n }\n\n return (\n \n );\n};\nexport default EntityStateItemRenderer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { Loader, NetworkGetIcon, Box } from \"mds\";\n\nconst NetworkGetBase = styled.div(({ theme }) => ({\n \"& .putLabel\": {\n display: \"flex\",\n gap: 10,\n alignItems: \"center\",\n marginTop: \"10px\",\n\n \"& .min-icon\": {\n height: 15,\n width: 15,\n fill: get(theme, \"signalColors.good\", \"#4CCB92\"),\n },\n\n \"& .getText\": {\n fontSize: \"18px\",\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontWeight: \"bold\",\n },\n \"& .valueText\": {\n fontSize: 50,\n fontFamily: \"Inter\",\n fontWeight: 600,\n },\n },\n}));\n\nconst NetworkGetItem = ({\n value,\n loading,\n}: {\n value: any;\n loading: boolean;\n title?: any;\n id?: number;\n}) => {\n return (\n \n \n GET\n {loading ? (\n \n ) : (\n \n )}\n \n {value}\n \n );\n};\n\nexport default NetworkGetItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { Box, Loader, NetworkPutIcon } from \"mds\";\n\nconst NetworkPutBase = styled.div(({ theme }) => ({\n \"& .putLabel\": {\n display: \"flex\",\n gap: 10,\n alignItems: \"center\",\n marginTop: \"10px\",\n\n \"& .min-icon\": {\n height: 15,\n width: 15,\n fill: get(theme, \"signalColors.info\", \"#2781B0\"),\n },\n\n \"& .putText\": {\n fontSize: \"18px\",\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontWeight: \"bold\",\n },\n \"& .valueText\": {\n fontSize: 50,\n fontFamily: \"Inter\",\n fontWeight: 600,\n },\n },\n}));\n\nconst NetworkPutItem = ({\n value,\n loading,\n}: {\n value: any;\n loading: boolean;\n title?: any;\n id?: number;\n}) => {\n return (\n \n \n PUT\n {loading ? (\n \n ) : (\n \n )}\n \n {value}\n \n );\n};\n\nexport default NetworkPutItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { Box, breakPoints, SpeedtestIcon } from \"mds\";\nimport { IDashboardPanel } from \"../types\";\nimport SingleValueWidget from \"./SingleValueWidget\";\nimport NetworkGetItem from \"./NetworkGetItem\";\nimport NetworkPutItem from \"./NetworkPutItem\";\n\nconst NetworkItemBase = styled.div(({ theme }) => ({\n flex: 1,\n display: \"flex\",\n alignItems: \"center\",\n flexFlow: \"row\",\n gap: \"15px\",\n \"& .unitText\": {\n fontSize: \"14px\",\n color: get(theme, \"mutedText\", \"#87888d\"),\n marginLeft: \"5px\",\n },\n \"& .unit\": {\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontSize: \"18px\",\n marginLeft: \"12px\",\n marginTop: \"10px\",\n },\n [`@media (max-width: ${breakPoints.sm}px)`]: {\n flexFlow: \"column\",\n },\n}));\n\nconst NetworkItem = ({\n value,\n timeStart,\n timeEnd,\n apiPrefix,\n}: {\n value: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n apiPrefix: string;\n}) => {\n const { mergedPanels = [] } = value;\n const [leftPanel, rightPanel] = mergedPanels;\n\n const rightCmp = (\n {\n return (\n \n );\n }}\n />\n );\n const leftCmp = (\n {\n return (\n \n );\n }}\n />\n );\n\n return (\n \n \n Network\n \n \n \n {leftCmp}\n \n \n \n \n {rightCmp}\n \n \n \n \n \n \n );\n};\n\nexport default NetworkItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { componentToUse } from \"../widgetUtils\";\nimport { IDashboardPanel } from \"../types\";\nimport MergedWidgets from \"../MergedWidgets\";\nimport EntityStateItemRenderer from \"./EntityStateItemRenderer\";\nimport NetworkItem from \"./NetworkItem\";\nimport DashboardItemBox from \"../../DashboardItemBox\";\n\nconst MergedWidgetsRenderer = ({\n info,\n timeStart,\n timeEnd,\n loading,\n apiPrefix,\n}: {\n info: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n loading: boolean;\n apiPrefix: string;\n}) => {\n const { mergedPanels = [], title = \"\", id } = info;\n const [leftPanel, rightPanel] = mergedPanels;\n\n const renderById = () => {\n if ([500, 501].includes(id)) {\n return (\n \n \n \n );\n }\n\n if (id === 502) {\n return (\n \n \n \n );\n }\n\n return (\n \n );\n };\n\n return renderById();\n};\n\nexport default MergedWidgetsRenderer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 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 styled from \"styled-components\";\nimport get from \"lodash/get\";\nimport { Box, breakPoints, CircleIcon } from \"mds\";\nimport { niceDays } from \"../../../../common/utils\";\nimport {\n getDriveStatusColor,\n getNetworkStatusColor,\n serverStatusColor,\n} from \"./Utils\";\nimport { ServerProperties } from \"api/consoleApi\";\n\ninterface ICardProps {\n server: ServerProperties;\n index: number;\n}\n\nconst ServerStatItemMain = styled.div(({ theme }) => ({\n alignItems: \"baseline\",\n padding: \"5px\",\n display: \"flex\",\n gap: \"5px\",\n \"& .StatBox\": {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexFlow: \"column\",\n \"& .stat-text\": {\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontSize: \"12px\",\n },\n \"& .stat-value\": {\n fontSize: \"18px\",\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n display: \"flex\",\n fontWeight: 500,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n \"& .stat-container\": {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexFlow: \"column\",\n marginLeft: \"5px\",\n maxWidth: \"40px\",\n \"&:first-of-type(svg)\": {\n fill: get(theme, \"mutedText\", \"#87888d\"),\n },\n \"& .stat-indicator\": {\n marginRight: \"0px\",\n justifyContent: \"center\",\n alignItems: \"center\",\n textAlign: \"center\",\n \"& svg.min-icon\": {\n width: \"10px\",\n height: \"10px\",\n },\n \"&.good\": {\n \"& svg.min-icon\": {\n fill: get(theme, \"signalColors.good\", \"#4CCB92\"),\n },\n },\n \"&.warn\": {\n \"& svg.min-icon\": {\n fill: get(theme, \"signalColors.warning\", \"#FFBD62\"),\n },\n },\n \"&.bad\": {\n \"& svg.min-icon\": {\n fill: get(theme, \"signalColors.danger\", \"#C51B3F\"),\n },\n },\n },\n },\n },\n },\n}));\n\nconst ServerInfoItemMain = styled.div(({ theme }) => ({\n display: \"flex\",\n alignItems: \"flex-start\",\n flexFlow: \"column\",\n flex: 1,\n \"& .server-state\": {\n marginLeft: \"8px\",\n \"& .min-icon\": {\n height: \"14px\",\n width: \"14px\",\n },\n \"&.good\": {\n \"& svg.min-icon\": {\n fill: get(theme, \"signalColors.good\", \"#4CCB92\"),\n },\n },\n \"&.warn\": {\n \"& svg.min-icon\": {\n fill: get(theme, \"signalColors.warning\", \"#FFBD62\"),\n },\n },\n \"&.bad\": {\n \"& svg.min-icon\": {\n fill: get(theme, \"signalColors.danger\", \"#C51B3F\"),\n },\n },\n },\n}));\n\nconst ServerStatItem = ({\n label = \"\",\n value = \"\",\n statusColor = \"warn\",\n hasStatus = false,\n}: {\n label?: string;\n value?: any;\n hasStatus?: boolean;\n statusColor?: \"good\" | \"warn\" | \"bad\";\n}) => {\n return (\n \n \n
    \n {value}{\" \"}\n \n {hasStatus ? (\n \n \n \n ) : (\n \n )}\n \n
    \n
    {label}
    \n
    \n
    \n );\n};\n\nconst ServerInfoItem = ({ server }: ICardProps) => {\n const networkKeys = Object.keys(get(server, \"network\", {}));\n const networkTotal = networkKeys.length;\n const totalDrives = server.drives ? server.drives.length : 0;\n const activeNetwork = networkKeys.reduce((acc: number, currValue: string) => {\n const item = server.network ? server.network[currValue] : \"\";\n if (item === \"online\") {\n return acc + 1;\n }\n return acc;\n }, 0);\n const activeDisks = server.drives\n ? server.drives.filter((element) => element.state === \"ok\").length\n : 0;\n return (\n \n \n \n \n {server.endpoint || \"\"}\n \n {server?.state && (\n \n \n \n )}\n \n\n \n \n \n \n \n \n Version:\n {server.version ? server.version : \"N/A\"}\n \n }\n />\n \n \n );\n};\nexport default ServerInfoItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport get from \"lodash/get\";\nimport styled from \"styled-components\";\nimport { niceBytes } from \"../../../../common/utils\";\nimport { Box, breakPoints, CircleIcon, SizeChart } from \"mds\";\nimport { ServerDrives } from \"api/consoleApi\";\nimport { STATUS_COLORS } from \"./Utils\";\n\ninterface ICardProps {\n drive: ServerDrives;\n}\n\nconst driveStatusColor = (health_status: string) => {\n switch (health_status) {\n case \"offline\":\n return STATUS_COLORS.RED;\n case \"ok\":\n return STATUS_COLORS.GREEN;\n default:\n return STATUS_COLORS.YELLOW;\n }\n};\n\nconst DataContainerMain = styled.div(({ theme }) => ({\n flex: 1,\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: \"20px\",\n marginTop: \"10px\",\n flexFlow: \"row\",\n \"& .info-label\": {\n color: get(theme, \"mutedText\", \"#87888d\"),\n fontSize: \"12px\",\n textAlign: \"center\",\n },\n \"& .info-value\": {\n fontSize: \"18px\",\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n display: \"flex\",\n fontWeight: 500,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n [`@media (max-width: ${breakPoints.sm}px)`]: {\n flexFlow: \"column\",\n },\n}));\n\nconst DriveInfoItem = ({ drive }: ICardProps) => {\n const totalSpace = drive.totalSpace || 0;\n const usedSpace = drive.usedSpace || 0;\n\n return (\n \n \n \n
    {drive.endpoint || \"\"}
    \n {drive.state && }\n \n\n \n \n \n \n\n \n \n
    \n {niceBytes(\n drive.totalSpace ? drive.totalSpace.toString() : \"0\",\n )}\n
    \n \n \n\n \n
    \n {niceBytes(drive.usedSpace ? drive.usedSpace.toString() : \"0\")}\n
    \n \n \n \n
    \n {niceBytes(\n drive.availableSpace ? drive.availableSpace.toString() : \"0\",\n )}\n
    \n \n \n \n
    \n \n \n );\n};\n\nexport default DriveInfoItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Accordion, Box, breakPoints } from \"mds\";\nimport ServerInfoItem from \"./ServerInfoItem\";\nimport DriveInfoItem from \"./DriveInfoItem\";\nimport { ServerProperties } from \"api/consoleApi\";\n\nconst ServersList = ({ data }: { data: ServerProperties[] }) => {\n const [expanded, setExpanded] = React.useState(\n data.length > 1 ? \"\" : data[0].endpoint + \"-0\",\n );\n\n const handleClick = (key: string) => {\n setExpanded(key);\n };\n\n return (\n \n \n Servers ({data.length})\n \n \n {data.map((serverInfo, index) => {\n const key = `${serverInfo.endpoint}-${index}`;\n const isExpanded = expanded === key;\n return (\n {\n if (!isExpanded) {\n handleClick(key);\n } else {\n handleClick(\"\");\n }\n }}\n id={\"key\"}\n title={}\n sx={{ marginBottom: 15 }}\n >\n \n Drives ({serverInfo.drives?.length})\n \n \n {serverInfo.drives?.map((driveInfo, index) => {\n return (\n \n );\n })}\n \n \n );\n })}\n \n \n );\n};\n\nexport default ServersList;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport get from \"lodash/get\";\nimport styled from \"styled-components\";\nimport { Box, breakPoints, Tooltip } from \"mds\";\n\nconst CounterCardMain = styled.div(({ theme }) => ({\n fontFamily: \"Inter,sans-serif\",\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n maxWidth: \"300px\",\n display: \"flex\",\n marginLeft: \"auto\",\n marginRight: \"auto\",\n cursor: \"default\",\n position: \"relative\",\n width: \"100%\",\n}));\n\nconst CounterCard = ({\n counterValue,\n label = \"\",\n icon = null,\n actions = null,\n}: {\n counterValue: string | number;\n label?: any;\n icon?: any;\n actions?: any;\n}) => {\n return (\n \n \n \n \n {label}\n \n\n \n = 5 ? 50 : 55,\n [`@media (max-width: ${breakPoints.sm}px)`]: {\n flexFlow: \"column\",\n maxWidth: 200,\n fontSize: counterValue.toString().length >= 5 ? 20 : 35,\n },\n [`@media (max-width: ${breakPoints.md}px)`]: {\n fontSize: counterValue.toString().length >= 5 ? 28 : 35,\n },\n [`@media (max-width: ${breakPoints.lg}px)`]: {\n fontSize: counterValue.toString().length >= 5 ? 28 : 36,\n },\n [`@media (max-width: ${breakPoints.xl}px)`]: {\n fontSize: counterValue.toString().length >= 5 ? 45 : 50,\n },\n }}\n >\n {counterValue}\n \n \n \n \n {icon}\n\n \n {actions}\n \n \n \n \n );\n};\n\nexport default CounterCard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport get from \"lodash/get\";\nimport styled from \"styled-components\";\nimport { Box, Tooltip } from \"mds\";\nimport { Cell, Pie, PieChart } from \"recharts\";\n\nconst ReportedUsageMain = styled.div(({ theme }) => ({\n maxHeight: \"110px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n fontSize: \"19px\",\n\n padding: \"10px\",\n \"& .unit-value\": {\n fontSize: \"50px\",\n color: get(theme, \"signalColors.main\", \"#07193E\"),\n },\n \"& .unit-type\": {\n fontSize: \"18px\",\n color: get(theme, \"mutedText\", \"#87888d\"),\n marginTop: \"20px\",\n marginLeft: \"5px\",\n },\n\n \"& .usage-label\": {\n display: \"flex\",\n alignItems: \"center\",\n fontSize: \"16px\",\n fontWeight: 600,\n marginRight: \"20px\",\n marginTop: \"-10px\",\n \"& .min-icon\": {\n marginLeft: \"10px\",\n height: 16,\n width: 16,\n },\n },\n}));\n\nconst ReportedUsage = ({\n usageValue,\n total,\n unit,\n}: {\n usageValue: string;\n total: number | string;\n unit: string;\n}) => {\n const plotValues = [\n { value: total, color: \"#D6D6D6\", label: \"Free Space\" },\n {\n value: usageValue,\n color: \"#073052\",\n label: \"Used Space\",\n },\n ];\n\n return (\n \n \n
    \n Reported Usage\n
    \n\n \n \n {total}\n \n \n \n
    \n\n \n \n \n
    \n \n \n {plotValues.map((entry, index) => (\n \n ))}\n \n \n
    \n \n
    \n
    \n
    \n );\n};\n\nexport default ReportedUsage;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport {\n ArrowRightIcon,\n Box,\n breakPoints,\n BucketsIcon,\n Button,\n DiagnosticsMenuIcon,\n DrivesIcon,\n FormatDrivesIcon,\n HealIcon,\n HelpBox,\n PrometheusErrorIcon,\n ServersIcon,\n StorageIcon,\n TotalObjectsIcon,\n UptimeIcon,\n} from \"mds\";\nimport { calculateBytes, representationNumber } from \"../../../../common/utils\";\nimport StatusCountCard from \"./StatusCountCard\";\nimport groupBy from \"lodash/groupBy\";\nimport ServersList from \"./ServersList\";\nimport CounterCard from \"./CounterCard\";\nimport ReportedUsage from \"./ReportedUsage\";\nimport { Link } from \"react-router-dom\";\nimport { IAM_PAGES } from \"../../../../common/SecureComponent/permissions\";\nimport TimeStatItem from \"../TimeStatItem\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport { AdminInfoResponse, ServerDrives } from \"api/consoleApi\";\n\nconst BoxItem = ({ children }: { children: any }) => {\n return (\n \n {children}\n \n );\n};\n\ninterface IDashboardProps {\n usage: AdminInfoResponse | undefined;\n}\n\nconst getServersList = (usage: AdminInfoResponse | undefined) => {\n if (usage && usage.servers) {\n return [...usage.servers].sort(function (a, b) {\n const nameA = a.endpoint?.toLowerCase() || \"\";\n const nameB = b.endpoint?.toLowerCase() || \"\";\n if (nameA < nameB) {\n return -1;\n }\n if (nameA > nameB) {\n return 1;\n }\n return 0;\n });\n }\n\n return [];\n};\n\nconst prettyUsage = (usage: string | undefined) => {\n if (usage === undefined) {\n return { total: \"0\", unit: \"Mi\" };\n }\n\n return calculateBytes(usage);\n};\n\nconst BasicDashboard = ({ usage }: IDashboardProps) => {\n const usageValue = usage && usage.usage ? usage.usage.toString() : \"0\";\n const usageToRepresent = prettyUsage(usageValue);\n\n const { lastScan = \"n/a\", lastHeal = \"n/a\", upTime = \"n/a\" } = {};\n\n const serverList = getServersList(usage);\n\n let allDrivesArray: ServerDrives[] = [];\n\n serverList.forEach((server) => {\n const drivesInput = server.drives?.map((drive) => {\n return drive;\n });\n if (drivesInput) {\n allDrivesArray = [...allDrivesArray, ...drivesInput];\n }\n });\n\n const serversGroup = groupBy(serverList, \"state\");\n const { offline: offlineServers = [], online: onlineServers = [] } =\n serversGroup;\n const drivesGroup = groupBy(allDrivesArray, \"state\");\n const { offline: offlineDrives = [], ok: onlineDrives = [] } = drivesGroup;\n return (\n \n \n \n \n \n }\n counterValue={usage ? representationNumber(usage.buckets) : 0}\n actions={\n \n \n {}}\n label={\"Browse\"}\n icon={}\n variant={\"regular\"}\n style={{\n padding: 5,\n height: 30,\n fontSize: 14,\n marginTop: 20,\n }}\n />\n \n \n }\n />\n \n \n }\n counterValue={usage ? representationNumber(usage.objects) : 0}\n />\n \n\n \n }\n />\n \n \n }\n />\n \n\n \n \n\n \n }\n label={\n \n \n Time since last\n {\" \"}\n Heal Activity\n \n }\n value={lastHeal}\n />\n }\n label={\n \n \n Time since last\n {\" \"}\n Scan Activity\n \n }\n value={lastScan}\n />\n }\n label={\"Uptime\"}\n value={upTime}\n />\n \n \n \n \n }\n label={\"Backend type\"}\n value={usage?.backend?.backendType ?? \"Unknown\"}\n />\n }\n label={\"Standard storage class parity\"}\n value={usage?.backend?.standardSCParity?.toString() ?? \"n/a\"}\n />\n }\n label={\"Reduced redundancy storage class parity\"}\n value={usage?.backend?.rrSCParity?.toString() ?? \"n/a\"}\n />\n \n\n \n \n \n \n {usage?.advancedMetricsStatus === \"not configured\" && (\n \n }\n title={\"We can’t retrieve advanced metrics at this time.\"}\n help={\n \n \n MinIO Dashboard will display basic metrics as we couldn’t\n connect to Prometheus successfully. Please try again in a\n few minutes. If the problem persists, you can review your\n configuration and confirm that Prometheus server is up and\n running.\n \n \n \n Read more about Prometheus on our Docs site.\n \n \n \n }\n />\n \n )}\n \n \n );\n};\n\nexport default BasicDashboard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport {\n Box,\n Button,\n Grid,\n HelpBox,\n PageLayout,\n ProgressBar,\n PrometheusErrorIcon,\n SyncIcon,\n TabItemProps,\n Tabs,\n} from \"mds\";\nimport { IDashboardPanel } from \"./types\";\nimport { panelsConfiguration } from \"./utils\";\nimport { componentToUse } from \"./widgetUtils\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport {\n DLayoutColumnProps,\n DLayoutRowProps,\n resourcesPanelsLayout,\n resourcesPanelsLayoutAdvanced,\n RowPanelLayout,\n summaryPanelsLayout,\n trafficPanelsLayout,\n} from \"./Widgets/LayoutUtil\";\nimport { getUsageAsync } from \"../dashboardThunks\";\nimport { reloadWidgets } from \"../dashboardSlice\";\nimport { selFeatures } from \"../../consoleSlice\";\nimport { AdminInfoResponse } from \"api/consoleApi\";\nimport ZoomWidget from \"./ZoomWidget\";\nimport DateRangeSelector from \"../../Common/FormComponents/DateRangeSelector/DateRangeSelector\";\nimport MergedWidgetsRenderer from \"./Widgets/MergedWidgetsRenderer\";\nimport BasicDashboard from \"../BasicDashboard/BasicDashboard\";\n\ninterface IPrDashboard {\n apiPrefix?: string;\n usage: AdminInfoResponse | null;\n}\n\nconst PrDashboard = ({ apiPrefix = \"admin\", usage }: IPrDashboard) => {\n const dispatch = useAppDispatch();\n const loadingUsage = useSelector(\n (state: AppState) => state.dashboard.loadingUsage,\n );\n const zoomOpen = useSelector(\n (state: AppState) => state.dashboard.zoom.openZoom,\n );\n const zoomWidget = useSelector(\n (state: AppState) => state.dashboard.zoom.widgetRender,\n );\n const features = useSelector(selFeatures);\n const obOnly = !!features?.includes(\"object-browser-only\");\n let hideMenu = false;\n if (features?.includes(\"hide-menu\")) {\n hideMenu = true;\n } else if (obOnly) {\n hideMenu = true;\n }\n\n const [timeStart, setTimeStart] = useState(null);\n const [timeEnd, setTimeEnd] = useState(null);\n const panelInformation = panelsConfiguration;\n const [curTab, setCurTab] = useState(\n usage?.advancedMetricsStatus === \"not configured\" ? \"info\" : \"usage\",\n );\n\n const getPanelDetails = (id: number) => {\n return panelInformation.find((panel) => panel.id === id);\n };\n\n const triggerLoad = () => {\n dispatch(reloadWidgets());\n };\n\n const renderCmpByConfig = (\n panelInfo: IDashboardPanel | undefined,\n key: string,\n ) => {\n return (\n \n {panelInfo ? (\n \n \n {panelInfo.mergedPanels ? (\n \n ) : (\n componentToUse(\n panelInfo,\n timeStart,\n timeEnd,\n true,\n apiPrefix,\n zoomOpen,\n )\n )}\n \n \n ) : null}\n \n );\n };\n\n const renderPanelItems = (layoutRows: DLayoutRowProps[]) => {\n return layoutRows.reduce((prev: any[], rowItem, rIdx) => {\n const { columns = [] } = rowItem;\n const cellItems: any[] = columns.map(\n (cellItem: DLayoutColumnProps, colIdx: number) => {\n const panelInfo = getPanelDetails(cellItem.componentId);\n return renderCmpByConfig(panelInfo, `${rIdx}-${colIdx}`);\n },\n );\n const rowConfig = (\n \n {cellItems}\n \n );\n return [...prev, rowConfig];\n }, []);\n };\n\n const renderSummaryPanels = () => {\n return renderPanelItems(summaryPanelsLayout);\n };\n\n const renderTrafficPanels = () => {\n return renderPanelItems(trafficPanelsLayout);\n };\n\n const renderResourcesPanels = () => {\n return renderPanelItems(resourcesPanelsLayout);\n };\n\n const renderAdvancedResourcesPanels = () => {\n return renderPanelItems(resourcesPanelsLayoutAdvanced);\n };\n\n const prometheusOptionsDisabled =\n usage?.advancedMetricsStatus === \"not configured\";\n\n const searchBox = (\n \n {curTab === \"info\" ? (\n \n \n \n Server Information\n \n \n \n \n \n {\n dispatch(getUsageAsync());\n }}\n disabled={loadingUsage}\n icon={}\n label={\"Sync\"}\n />\n \n \n \n \n ) : (\n \n )}\n \n );\n\n const infoTab: TabItemProps = {\n tabConfig: { label: \"Info\", id: \"info\", disabled: false },\n content: (\n \n {(!usage || loadingUsage) && }\n {usage && !loadingUsage && (\n \n {searchBox}\n \n \n )}\n \n ),\n };\n\n const prometheusTabs: TabItemProps[] = [\n {\n tabConfig: {\n label: \"Usage\",\n id: \"usage\",\n disabled: prometheusOptionsDisabled,\n },\n content: (\n \n {searchBox}\n \n {usage?.advancedMetricsStatus === \"unavailable\" && (\n }\n title={\"We can’t retrieve advanced metrics at this time.\"}\n help={\n \n It looks like Prometheus is not available or reachable at\n the moment.\n \n }\n />\n )}\n {panelInformation.length ? renderSummaryPanels() : null}\n \n \n ),\n },\n {\n tabConfig: {\n label: \"Traffic\",\n id: \"traffic\",\n disabled: prometheusOptionsDisabled,\n },\n content: (\n \n {searchBox}\n \n {usage?.advancedMetricsStatus === \"unavailable\" && (\n }\n title={\"We can’t retrieve advanced metrics at this time.\"}\n help={\n \n It looks like Prometheus is not available or reachable at\n the moment.\n \n }\n />\n )}\n {panelInformation.length ? renderTrafficPanels() : null}\n \n \n ),\n },\n {\n tabConfig: {\n label: \"Resources\",\n id: \"resources\",\n disabled: prometheusOptionsDisabled,\n },\n content: (\n \n {searchBox}\n \n {usage?.advancedMetricsStatus === \"unavailable\" && (\n }\n title={\"We can’t retrieve advanced metrics at this time.\"}\n help={\n \n It looks like Prometheus is not available or reachable at\n the moment.\n \n }\n />\n )}\n {panelInformation.length ? renderResourcesPanels() : null}\n

    \n Advanced\n

    \n {panelInformation.length ? renderAdvancedResourcesPanels() : null}\n
    \n
    \n ),\n },\n ];\n\n let tabsOptions: TabItemProps[];\n\n if (!prometheusOptionsDisabled) {\n tabsOptions = [...prometheusTabs, infoTab];\n } else {\n tabsOptions = [infoTab, ...prometheusTabs];\n }\n\n return (\n \n {zoomOpen && (\n \n )}\n\n {\n setCurTab(newValue);\n }}\n />\n \n );\n};\n\nexport default PrDashboard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { Grid, ProgressBar } from \"mds\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { getUsageAsync } from \"./dashboardThunks\";\nimport { selFeatures } from \"../consoleSlice\";\nimport { setHelpName } from \"../../../systemSlice\";\nimport PrDashboard from \"./Prometheus/PrDashboard\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst Dashboard = () => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(true);\n\n const usage = useSelector((state: AppState) => state.dashboard.usage);\n const features = useSelector(selFeatures);\n const obOnly = !!features?.includes(\"object-browser-only\");\n let hideMenu = false;\n if (features?.includes(\"hide-menu\")) {\n hideMenu = true;\n } else if (obOnly) {\n hideMenu = true;\n }\n\n useEffect(() => {\n if (loading) {\n setLoading(false);\n dispatch(getUsageAsync());\n }\n }, [loading, dispatch]);\n\n useEffect(() => {\n dispatch(setHelpName(\"metrics\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n {!hideMenu && (\n } />\n )}\n {loading ? (\n \n \n \n \n \n ) : (\n \n )}\n \n );\n};\n\nexport default Dashboard;\n"],"names":["DateFilterAdornIcon","_jsx","Box","sx","display","alignItems","width","height","children","OpenListIcon","_ref","timeStart","setTimeStart","timeEnd","setTimeEnd","triggerSync","_ref$label","label","_ref$startLabel","startLabel","_ref$endLabel","endLabel","Grid","item","xs","border","paddingLeft","paddingRight","borderRadius","marginRight","color","WebkitTextFillColor","_jsxs","md","gridTemplateColumns","sm","padding","gap","fontSize","fontWeight","fill","ScheduleIcon","className","marginLeft","DateTimePickerWrapper","value","onChange","id","classNamePrefix","forFilterContained","noInputIcon","openPickerIcon","WatchLaterIcon","justifyContent","Button","type","variant","onClick","icon","SyncIcon","withStyles","theme","createStyles","_objectSpread","dateSelectorOverride","backgroundColor","borderBottom","borderColor","dateSelectorFilterOverride","dateSelectorFormOverride","maxWidth","parentDateOverride","flexGrow","textBoxContainer","openListIcon","marginTop","paperOverride","margin","textAlign","palette","primary","main","minHeight","borderTop","marginBottom","content","position","top","left","fieldBasic","tooltipHelper","classes","_ref$forSearchBlock","forSearchBlock","_ref$forFilterContain","_ref$tooltip","tooltip","required","_ref$disabled","disabled","_ref$noInputIcon","_ref$classNamePrefix","adornment","startAdornment","InputAdornment","endAdornment","classOverridden","concat","clsName","inputItem","LocalizationProvider","dateAdapter","AdapterLuxon","DateTimePicker","InputProps","components","OpenPickerIcon","renderInput","props","TextField","ampm","PopperProps","inputFormat","containerCls","fieldContainer","Fragment","gridAutoColumns","InputLabel","htmlFor","tooltipContainer","Tooltip","placement","HelpIcon","StatusCountBase","styled","div","_counterIndicator","_mainBox","fontFamily","cursor","get","flex","_defineProperty","breakPoints","flexFlow","paddingBottom","lg","xl","_ref2","_ref2$onlineCount","onlineCount","_ref2$offlineCount","offlineCount","_ref2$icon","_ref2$label","_ref2$okStatusText","okStatusText","_ref2$notOkStatusText","notOkStatusText","CircleIcon","STATUS_COLORS","RED","GREEN","YELLOW","getDriveStatusColor","activeDisks","totalDrives","serverStatusColor","health_status","getNetworkStatusColor","activeNetwork","networkTotal","widgetType","colorsMain","niceDaysFromNS","seconds","niceDays","roundNumber","parseInt","toString","panelsConfiguration","title","data","simpleWidget","widgetIcon","UptimeIcon","labelDisplayFunction","dataOuter","name","widgetConfiguration","outerChart","colorList","innerRadius","outerRadius","startAngle","endAngle","innerChart","pieChart","innerLabel","niceBytes","dataKey","keyLabel","lineColor","fillColor","areaGraph","yAxisFormatter","xAxisFormatter","getTimeFromTimestamp","background","greatestColor","customStructure","originTag","displayTag","barChart","singleRep","strokeWidth","linearGraph","HealIcon","DiagnosticsIcon","disableYAxis","mergedPanels","singleValue","calculateMainValue","elements","metricCalc","length","sumValues","reduce","accumulator","currValue","parseFloat","Math","floor","sortResult","sort","value1","value2","widgetDetailsToPanel","payloadData","panelItem","typeOfPayload","valueDisplay","chartSeries","filter","seriesItem","values","map","chartTarget","result","Array","isArray","elementValue","metricKeyItem","Object","keys","metric","metricName","legend","legendFormat","firstTarget","totalValues","targets","series","plotValues","forEach","targetMaster","index","results","itemVals","labelName","metrics","keysToReplace","expToReplace","RegExp","join","replacedLegend","replace","matchItem","nwMatchItem","countVarsOpen","match","countVarsClose","cleanLegend","element","constructLabelNames","keyName","push","valInfo","itemIndex","findIndex","itemToPush","seriesWithColors","series1","series2","serialC","textToRGBColor","sortedVals","chartBars","sortFunction","structureItem","metricTake","find","range","lastValue","a","valuesForBackground","eachVal","splitSizeMetric","val","splittedText","split","vl","isNaN","representationNumber","units","includes","dispatch","useAppDispatch","openZoomPage","ZoomOutMapIcon","componentRef","_React$useState","React","_React$useState2","_slicedToArray","anchorEl","setAnchorEl","openDownloadMenu","Boolean","downloadAsCSV","objectToConvert","filename","text","document","createElement","setAttribute","style","body","appendChild","click","removeChild","download","Date","now","trim","toLowerCase","it","err","setErrorSnackMessage","onDownloadError","errorMessage","detailedError","justifyItems","event","currentTarget","DownloadIcon","Menu","open","onClose","MenuItem","ListItemText","pngFileName","exportComponentAsPNG","fileName","downloadAsPNG","tooltipCommon","active","payload","barChartConfiguration","customTooltip","timeStampTitle","pl","labelContainer","labelColor","itemValue","valueContainer","BarChartMain","widgetCommon","loadingAlign","paddingTop","CustomizedAxisTick","y","textAnchor","transform","dy","_ref3","apiPrefix","_ref3$zoomActivated","zoomActivated","_useState","useState","_useState2","loading","setLoading","_useState3","_useState4","setData","_useState5","_useState6","setResult","_useState7","_useState8","hover","setHover","_useState9","window","innerWidth","_useState10","biggerThanMd","setBiggerThanMd","useRef","widgetVersion","useSelector","state","dashboard","widgetLoadVersion","useEffect","handleWindowResize","extMD","console","log","addEventListener","removeEventListener","stepCalc","secondsInPeriod","toUnixInteger","periods","api","invoke","then","res","widgetsWithValue","catch","greatestIndex","currentValue","dataGraph","onMouseOver","onMouseLeave","container","ExpandGraphLink","DownloadWidgetDataButton","Loader","ref","ResponsiveContainer","BarChart","layout","barCategoryGap","XAxis","hide","YAxis","interval","tick","tickLine","axisLine","bar","Bar","barSize","_","Cell","BarChartTooltip","linearConfiguration","LinearGraphMain","flexDirection","maxHeight","overflowY","_ref2$hideYAxis","hideYAxis","_ref2$areaWidget","areaWidget","_ref2$yAxisFormatter","_ref2$xAxisFormatter","var1","var2","_ref2$zoomActivated","csvData","setCsvData","dataMax","setDataMax","_useState11","_useState12","_step","maxVal","_iterator","_createForOfIteratorHelper","s","n","done","dp","key","e","f","intervalCount","fmtData","el","date","CustomizedDot","prop","cx","cy","r","dspLongDate","alignContent","AreaChart","right","bottom","x1","y1","x2","y2","offset","stopColor","stopOpacity","CartesianGrid","strokeDasharray","strokeOpacity","stroke","vertical","tickFormatter","tickCount","domain","section","Area","isAnimationActive","fillOpacity","strokeLinecap","dot","LineChartTooltip","wrapperStyle","zIndex","PieChartMain","dataInner","setDataInner","setDataOuter","pieChartConfiguration","middleLabel","innerColors","outerColors","PieChart","Pie","entry","SimpleWidgetMain","span","textTransform","iconWidget","renderFn","valueToRender","withBorders","StatCardMain","_ref2$loading","_ref4","overflow","textOverflow","getContent","NumericStatCard","BucketsIcon","TotalObjectsIcon","connect","propLoading","repNumber","resultRep","DashboardItemBox","BucketsCountItem","ObjectsCountItem","SingleValueWidgetMain","lineHeight","CapacityItemMain","alignSelf","totalUsableFree","setTotalUsableFree","totalUsableFreeRatio","setTotalUsableFreeRatio","totalUsed","setTotalUsed","totalUsable","setTotalUsable","tUsable","tUsed","tFree","eachArray","itemSum","freeRatio","round","usedConvert","calculateBytes","capacityColors","animationDuration","total","unit","niceBytesInt","ReportedUsageIcon","TimeStatBase","SuccessIcon","_ref$valueToRender","_ref$loading","_ref$iconWidget","TimeStatItem","componentToUse","arguments","undefined","SingleValueWidget","CmpToRender","HealActivityRenderer","ScanActivityRenderer","UptimeActivityRenderer","SimpleWidget","CapacityItem","PieChartWidget","LinearGraphWidget","BarChartWidget","SingleRepWidget","summaryPanelsLayout","_sx","minWidth","columns","componentId","trafficPanelsLayout","flexShrink","resourcesPanelsLayout","resourcesPanelsLayoutAdvanced","RowPanelLayout","modalOpen","ModalWrapper","closeZoomPage","wideLimit","CommonCardItem","metricValue","metricUnit","subMessage","moreLink","rightComponent","_ref2$extraMargin","extraMargin","SubHeader","message","Header","Link","to","leftComponent","CommonCard","statLabel","DualSTCardContent","_ref2$statItemLeft","statItemLeft","_ref2$statItemRight","statItemRight","StateIndicator","info","_info$mergedPanels","_mergedPanels","leftPanel","rightPanel","lStatItem","EntityStateStatItem","rStatItem","statIcon","ServersIcon","DrivesIcon","DualStatCard","NetworkGetBase","NetworkGetIcon","NetworkPutBase","NetworkPutIcon","NetworkItemBase","_value$mergedPanels","rightCmp","NetworkPutItem","leftCmp","_ref5","NetworkGetItem","SpeedtestIcon","_info$title","EntityStateItemRenderer","NetworkItem","MergedWidgets","ServerStatItemMain","whiteSpace","ServerInfoItemMain","ServerStatItem","_ref3$label","_ref3$value","_ref3$statusColor","statusColor","_ref3$hasStatus","hasStatus","server","networkKeys","drives","acc","network","endpoint","uptime","version","driveStatusColor","DataContainerMain","drive","totalSpace","usedSpace","wordBreak","SizeChart","usedBytes","totalBytes","availableSpace","expanded","setExpanded","handleClick","serverInfo","_serverInfo$drives","_serverInfo$drives2","isExpanded","Accordion","onTitleClick","ServerInfoItem","useBackground","driveInfo","DriveInfoItem","CounterCardMain","counterValue","_ref2$actions","actions","ReportedUsageMain","usageValue","BoxItem","_usage$backend","_usage$backend2","_usage$backend$backen","_usage$backend3","_usage$backend$standa","_usage$backend4","_usage$backend4$stand","_usage$backend$rrSCPa","_usage$backend5","_usage$backend5$rrSCP","usage","usageToRepresent","prettyUsage","_ref4$lastScan","lastScan","_ref4$lastHeal","lastHeal","_ref4$upTime","upTime","serverList","servers","_toConsumableArray","b","_a$endpoint","_b$endpoint","nameA","nameB","getServersList","allDrivesArray","_server$drives","drivesInput","serversGroup","groupBy","_serversGroup$offline","offline","offlineServers","_serversGroup$online","online","onlineServers","drivesGroup","_drivesGroup$offline","offlineDrives","_drivesGroup$ok","ok","onlineDrives","gridTemplateRows","CounterCard","buckets","IAM_PAGES","BUCKETS","textDecoration","TooltipWrapper","ArrowRightIcon","objects","StatusCountCard","backend","gridRowStart","gridRowEnd","gridColumnStart","ReportedUsage","DiagnosticsMenuIcon","StorageIcon","backendType","FormatDrivesIcon","standardSCParity","rrSCParity","ServersList","advancedMetricsStatus","HelpBox","iconComponent","PrometheusErrorIcon","help","href","target","rel","_ref$apiPrefix","loadingUsage","zoomOpen","zoom","openZoom","zoomWidget","widgetRender","features","selFeatures","obOnly","hideMenu","tabsOptions","panelInformation","curTab","setCurTab","renderPanelItems","layoutRows","prev","rowItem","rIdx","_rowItem$columns","cellItems","cellItem","colIdx","panelInfo","MergedWidgetsRenderer","renderCmpByConfig","panel","rowConfig","prometheusOptionsDisabled","searchBox","direction","getUsageAsync","DateRangeSelector","reloadWidgets","infoTab","tabConfig","ProgressBar","BasicDashboard","prometheusTabs","PageLayout","ZoomWidget","Tabs","horizontal","options","currentTabOrPath","onTabClick","newValue","setHelpName","PageHeaderWrapper","HelpMenu","PrDashboard"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/8455.97773e2f.chunk.js b/portal-ui/build/static/js/8455.6e72f5ad.chunk.js similarity index 91% rename from portal-ui/build/static/js/8455.97773e2f.chunk.js rename to portal-ui/build/static/js/8455.6e72f5ad.chunk.js index aea0876934..126e4ccf03 100644 --- a/portal-ui/build/static/js/8455.97773e2f.chunk.js +++ b/portal-ui/build/static/js/8455.6e72f5ad.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[8455],{58455:function(e,t,n){n.r(t);var a=n(29439),l=n(72791),c=n(29945),i=n(31776),s=n(82342),o=n(23814),r=n(87995),u=n(81551),d=n(56028),h=n(80184);t.default=function(e){var t=e.modalOpen,n=e.onClose,b=e.bucket,x=e.toEdit,f=e.initial,k=(0,u.TL)(),p=(0,l.useState)(f),v=(0,a.Z)(p,2),j=v[0],m=v[1];return(0,h.jsx)(l.Fragment,{children:(0,h.jsxs)(d.Z,{modalOpen:t,title:"Edit Anonymous Access Rule for ".concat("".concat(b,"/").concat(x||"")),onClose:n,titleIcon:(0,h.jsx)(c.sR0,{}),children:[(0,h.jsx)(c.ltY,{containerPadding:!1,withBorders:!1,children:(0,h.jsx)(c.PhF,{id:"access",name:"Access",onChange:function(e){m(e)},label:"Access",value:j,options:[{label:"readonly",value:"readonly"},{label:"writeonly",value:"writeonly"},{label:"readwrite",value:"readwrite"}],disabled:!1})}),(0,h.jsxs)(c.rjZ,{item:!0,xs:12,sx:o.ID.modalButtonBar,children:[(0,h.jsx)(c.zxk,{id:"clear",type:"button",variant:"regular",onClick:function(){m(f)},label:"Clear"}),(0,h.jsx)(c.zxk,{id:"save",type:"submit",variant:"callAction",onClick:function(){i.h.bucket.setAccessRuleWithBucket(b,{prefix:x,access:j}).then((function(){n()})).catch((function(e){k((0,r.Ih)((0,s.g)(e.error))),n()}))},label:"Save"})]})]})})}}}]); -//# sourceMappingURL=8455.97773e2f.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[8455],{58455:function(e,t,n){n.r(t);var a=n(29439),l=n(72791),c=n(29945),i=n(31776),s=n(82342),o=n(23814),r=n(87995),u=n(44690),d=n(56028),h=n(80184);t.default=function(e){var t=e.modalOpen,n=e.onClose,b=e.bucket,x=e.toEdit,f=e.initial,k=(0,u.TL)(),p=(0,l.useState)(f),v=(0,a.Z)(p,2),j=v[0],m=v[1];return(0,h.jsx)(l.Fragment,{children:(0,h.jsxs)(d.Z,{modalOpen:t,title:"Edit Anonymous Access Rule for ".concat("".concat(b,"/").concat(x||"")),onClose:n,titleIcon:(0,h.jsx)(c.sR0,{}),children:[(0,h.jsx)(c.ltY,{containerPadding:!1,withBorders:!1,children:(0,h.jsx)(c.PhF,{id:"access",name:"Access",onChange:function(e){m(e)},label:"Access",value:j,options:[{label:"readonly",value:"readonly"},{label:"writeonly",value:"writeonly"},{label:"readwrite",value:"readwrite"}],disabled:!1})}),(0,h.jsxs)(c.rjZ,{item:!0,xs:12,sx:o.ID.modalButtonBar,children:[(0,h.jsx)(c.zxk,{id:"clear",type:"button",variant:"regular",onClick:function(){m(f)},label:"Clear"}),(0,h.jsx)(c.zxk,{id:"save",type:"submit",variant:"callAction",onClick:function(){i.h.bucket.setAccessRuleWithBucket(b,{prefix:x,access:j}).then((function(){n()})).catch((function(e){k((0,r.Ih)((0,s.g)(e.error))),n()}))},label:"Save"})]})]})})}}}]); +//# sourceMappingURL=8455.6e72f5ad.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/8455.97773e2f.chunk.js.map b/portal-ui/build/static/js/8455.6e72f5ad.chunk.js.map similarity index 98% rename from portal-ui/build/static/js/8455.97773e2f.chunk.js.map rename to portal-ui/build/static/js/8455.6e72f5ad.chunk.js.map index 9a4663adaa..39fdde5883 100644 --- a/portal-ui/build/static/js/8455.97773e2f.chunk.js.map +++ b/portal-ui/build/static/js/8455.6e72f5ad.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/8455.97773e2f.chunk.js","mappings":"sOA8GA,UA7EuB,SAAHA,GAMI,IALtBC,EAASD,EAATC,UACAC,EAAOF,EAAPE,QACAC,EAAMH,EAANG,OACAC,EAAMJ,EAANI,OACAC,EAAOL,EAAPK,QAEMC,GAAWC,EAAAA,EAAAA,MACjBC,GAA4CC,EAAAA,EAAAA,UAAcJ,GAAQK,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA3DI,EAAcF,EAAA,GAAEG,EAAiBH,EAAA,GA2BxC,OACEI,EAAAA,EAAAA,KAACC,EAAAA,SAAQ,CAAAC,UACPC,EAAAA,EAAAA,MAACC,EAAAA,EAAY,CACXjB,UAAWA,EACXkB,MAAK,kCAAAC,OAAA,GAAAA,OAAuCjB,EAAM,KAAAiB,OAAIhB,GAAU,KAChEF,QAASA,EACTmB,WAAWP,EAAAA,EAAAA,KAACQ,EAAAA,IAAiB,IAAIN,SAAA,EAEjCF,EAAAA,EAAAA,KAACS,EAAAA,IAAU,CAACC,kBAAkB,EAAOC,aAAa,EAAMT,UACtDF,EAAAA,EAAAA,KAACY,EAAAA,IAAM,CACLC,GAAG,SACHC,KAAK,SACLC,SAAU,SAACC,GACTjB,EAAkBiB,EACpB,EACAC,MAAM,SACND,MAAOlB,EACPoB,QA1CY,CACpB,CAAED,MAAO,WAAYD,MAAO,YAC5B,CAAEC,MAAO,YAAaD,MAAO,aAC7B,CAAEC,MAAO,YAAaD,MAAO,cAwCrBG,UAAU,OAGdhB,EAAAA,EAAAA,MAACiB,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAIC,GAAIC,EAAAA,GAAgBC,eAAevB,SAAA,EACpDF,EAAAA,EAAAA,KAAC0B,EAAAA,IAAM,CACLb,GAAI,QACJc,KAAK,SACLC,QAAQ,UACRC,QA7CQ,WAChB9B,EAAkBR,EACpB,EA4CU0B,MAAO,WAETjB,EAAAA,EAAAA,KAAC0B,EAAAA,IAAM,CACLb,GAAI,OACJc,KAAK,SACLC,QAAQ,aACRC,QAhDY,WACpBC,EAAAA,EAAIzC,OACD0C,wBAAwB1C,EAAQ,CAC/B2C,OAAQ1C,EACR2C,OAAQnC,IAEToC,MAAK,WACJ9C,GACF,IACC+C,OAAM,SAACC,GACN5C,GAAS6C,EAAAA,EAAAA,KAAqBC,EAAAA,EAAAA,GAAeF,EAAIG,SACjDnD,GACF,GACJ,EAoCU6B,MAAO,gBAMnB,C","sources":["screens/Console/Buckets/BucketDetails/EditAccessRule.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { AddAccessRuleIcon, Button, FormLayout, Grid, Select } from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\n\ninterface IEditAccessRule {\n modalOpen: boolean;\n onClose: () => any;\n bucket: string;\n toEdit: string;\n initial: string;\n}\n\nconst EditAccessRule = ({\n modalOpen,\n onClose,\n bucket,\n toEdit,\n initial,\n}: IEditAccessRule) => {\n const dispatch = useAppDispatch();\n const [selectedAccess, setSelectedAccess] = useState(initial);\n\n const accessOptions = [\n { label: \"readonly\", value: \"readonly\" },\n { label: \"writeonly\", value: \"writeonly\" },\n { label: \"readwrite\", value: \"readwrite\" },\n ];\n\n const resetForm = () => {\n setSelectedAccess(initial);\n };\n\n const createProcess = () => {\n api.bucket\n .setAccessRuleWithBucket(bucket, {\n prefix: toEdit,\n access: selectedAccess,\n })\n .then(() => {\n onClose();\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n onClose();\n });\n };\n\n return (\n \n }\n >\n \n {\n setSelectedAccess(value);\n }}\n label=\"Access\"\n value={selectedAccess}\n options={accessOptions}\n disabled={false}\n />\n \n \n \n \n \n \n \n );\n};\n\nexport default EditAccessRule;\n"],"names":["_ref","modalOpen","onClose","bucket","toEdit","initial","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","selectedAccess","setSelectedAccess","_jsx","Fragment","children","_jsxs","ModalWrapper","title","concat","titleIcon","AddAccessRuleIcon","FormLayout","containerPadding","withBorders","Select","id","name","onChange","value","label","options","disabled","Grid","item","xs","sx","modalStyleUtils","modalButtonBar","Button","type","variant","onClick","api","setAccessRuleWithBucket","prefix","access","then","catch","err","setErrorSnackMessage","errorToHandler","error"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/8455.6e72f5ad.chunk.js","mappings":"sOA8GA,UA7EuB,SAAHA,GAMI,IALtBC,EAASD,EAATC,UACAC,EAAOF,EAAPE,QACAC,EAAMH,EAANG,OACAC,EAAMJ,EAANI,OACAC,EAAOL,EAAPK,QAEMC,GAAWC,EAAAA,EAAAA,MACjBC,GAA4CC,EAAAA,EAAAA,UAAcJ,GAAQK,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA3DI,EAAcF,EAAA,GAAEG,EAAiBH,EAAA,GA2BxC,OACEI,EAAAA,EAAAA,KAACC,EAAAA,SAAQ,CAAAC,UACPC,EAAAA,EAAAA,MAACC,EAAAA,EAAY,CACXjB,UAAWA,EACXkB,MAAK,kCAAAC,OAAA,GAAAA,OAAuCjB,EAAM,KAAAiB,OAAIhB,GAAU,KAChEF,QAASA,EACTmB,WAAWP,EAAAA,EAAAA,KAACQ,EAAAA,IAAiB,IAAIN,SAAA,EAEjCF,EAAAA,EAAAA,KAACS,EAAAA,IAAU,CAACC,kBAAkB,EAAOC,aAAa,EAAMT,UACtDF,EAAAA,EAAAA,KAACY,EAAAA,IAAM,CACLC,GAAG,SACHC,KAAK,SACLC,SAAU,SAACC,GACTjB,EAAkBiB,EACpB,EACAC,MAAM,SACND,MAAOlB,EACPoB,QA1CY,CACpB,CAAED,MAAO,WAAYD,MAAO,YAC5B,CAAEC,MAAO,YAAaD,MAAO,aAC7B,CAAEC,MAAO,YAAaD,MAAO,cAwCrBG,UAAU,OAGdhB,EAAAA,EAAAA,MAACiB,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAIC,GAAIC,EAAAA,GAAgBC,eAAevB,SAAA,EACpDF,EAAAA,EAAAA,KAAC0B,EAAAA,IAAM,CACLb,GAAI,QACJc,KAAK,SACLC,QAAQ,UACRC,QA7CQ,WAChB9B,EAAkBR,EACpB,EA4CU0B,MAAO,WAETjB,EAAAA,EAAAA,KAAC0B,EAAAA,IAAM,CACLb,GAAI,OACJc,KAAK,SACLC,QAAQ,aACRC,QAhDY,WACpBC,EAAAA,EAAIzC,OACD0C,wBAAwB1C,EAAQ,CAC/B2C,OAAQ1C,EACR2C,OAAQnC,IAEToC,MAAK,WACJ9C,GACF,IACC+C,OAAM,SAACC,GACN5C,GAAS6C,EAAAA,EAAAA,KAAqBC,EAAAA,EAAAA,GAAeF,EAAIG,SACjDnD,GACF,GACJ,EAoCU6B,MAAO,gBAMnB,C","sources":["screens/Console/Buckets/BucketDetails/EditAccessRule.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { AddAccessRuleIcon, Button, FormLayout, Grid, Select } from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\n\ninterface IEditAccessRule {\n modalOpen: boolean;\n onClose: () => any;\n bucket: string;\n toEdit: string;\n initial: string;\n}\n\nconst EditAccessRule = ({\n modalOpen,\n onClose,\n bucket,\n toEdit,\n initial,\n}: IEditAccessRule) => {\n const dispatch = useAppDispatch();\n const [selectedAccess, setSelectedAccess] = useState(initial);\n\n const accessOptions = [\n { label: \"readonly\", value: \"readonly\" },\n { label: \"writeonly\", value: \"writeonly\" },\n { label: \"readwrite\", value: \"readwrite\" },\n ];\n\n const resetForm = () => {\n setSelectedAccess(initial);\n };\n\n const createProcess = () => {\n api.bucket\n .setAccessRuleWithBucket(bucket, {\n prefix: toEdit,\n access: selectedAccess,\n })\n .then(() => {\n onClose();\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(errorToHandler(err.error)));\n onClose();\n });\n };\n\n return (\n \n }\n >\n \n {\n setSelectedAccess(value);\n }}\n label=\"Access\"\n value={selectedAccess}\n options={accessOptions}\n disabled={false}\n />\n \n \n \n \n \n \n \n );\n};\n\nexport default EditAccessRule;\n"],"names":["_ref","modalOpen","onClose","bucket","toEdit","initial","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","selectedAccess","setSelectedAccess","_jsx","Fragment","children","_jsxs","ModalWrapper","title","concat","titleIcon","AddAccessRuleIcon","FormLayout","containerPadding","withBorders","Select","id","name","onChange","value","label","options","disabled","Grid","item","xs","sx","modalStyleUtils","modalButtonBar","Button","type","variant","onClick","api","setAccessRuleWithBucket","prefix","access","then","catch","err","setErrorSnackMessage","errorToHandler","error"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/8521.06664483.chunk.js b/portal-ui/build/static/js/8521.06664483.chunk.js new file mode 100644 index 0000000000..e966904b55 --- /dev/null +++ b/portal-ui/build/static/js/8521.06664483.chunk.js @@ -0,0 +1,2 @@ +(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[8521],{98521:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return U}});var o=n(93433),i=n(29439),r=n(72791),s=n(95087),l=n(29945),a=n(78687),c=n(44690),d=n(26824),u=n(69129),h=n(87995),p=n(59114),f=n(81207),x=n(35527),g=n(79836),m=n(53382),v=n(87462),y=n(63366),j=n(63733),w=n(94419),b=n(31402),Z=n(66934),C=n(75878),S=n(21217);function E(e){return(0,S.Z)("MuiTableContainer",e)}(0,C.Z)("MuiTableContainer",["root"]);var T=n(80184),k=["className","component"],A=(0,Z.ZP)("div",{name:"MuiTableContainer",slot:"Root",overridesResolver:function(e,t){return t.root}})({width:"100%",overflowX:"auto"}),L=r.forwardRef((function(e,t){var n=(0,b.Z)({props:e,name:"MuiTableContainer"}),o=n.className,i=n.component,r=void 0===i?"div":i,s=(0,y.Z)(n,k),l=(0,v.Z)({},n,{component:r}),a=function(e){var t=e.classes;return(0,w.Z)({root:["root"]},E,t)}(l);return(0,T.jsx)(A,(0,v.Z)({ref:t,as:r,className:(0,j.Z)(a.root,o),ownerState:l},s))})),R=n(99779),z=n(35855),M=n(53994),F=n(56125),I=n(64554),O=n(20890),_=n(26181),D=n.n(_),N="HH:mm:ss ZZZZ MM/dd/yyyy",H=function(e){var t=e.log,n=(0,r.useState)(!1),o=(0,i.Z)(n,2),s=o[0],a=o[1],c=function(e){return D()(t,e,"")},d="",u=c("ConsoleMsg"),h=c("error.message");""!==u?d=u:""!==h&&(d=h);var p=(d||"").replace(/\u2501|\u250f|\u2513|\u2503|\u2517|\u251b/g,"");p=p.replace(/([^\x20-\x7F])/g,"");var f=(0,T.jsx)(r.Fragment,{});""!==u?f=function(e){var t=e.ConsoleMsg;return t=(t=t.replace(/\x1B/g," ")).replace(/((\[[0-9;]+m))/g,""),(0,T.jsx)("div",{style:{display:"table",tableLayout:"fixed",width:"100%",paddingLeft:10,paddingRight:10},children:(0,T.jsx)("div",{style:{display:"table-cell",whiteSpace:"nowrap",textOverflow:"ellipsis",overflowX:"auto"},children:(0,T.jsx)("pre",{children:t})})})}(t):""!==h&&(f=function(e){var t={color:"#C83B51",fontWeight:400,fontFamily:"monospace",fontSize:"12px"},n={fontFamily:"monospace",fontSize:"12px"},o=function(t){return D()(e,t,"")},i=R.ou.fromFormat(e.time.toString(),"HH:mm:ss z MM/dd/yyyy",{zone:"UTC"});return(0,T.jsxs)(r.Fragment,{children:[(0,T.jsxs)("div",{children:[(0,T.jsx)("b",{style:n,children:"API:\xa0"}),(0,T.jsx)("span",{style:t,children:o("api.name")})]}),(0,T.jsxs)("div",{children:[(0,T.jsx)("b",{style:n,children:"Time:\xa0"}),(0,T.jsx)("span",{style:t,children:i.toFormat(N)})]}),(0,T.jsxs)("div",{children:[(0,T.jsx)("b",{style:n,children:"DeploymentID:\xa0"}),(0,T.jsx)("span",{style:t,children:o("deploymentid")})]}),(0,T.jsxs)("div",{children:[(0,T.jsx)("b",{style:n,children:"RequestID:\xa0"}),(0,T.jsx)("span",{style:t,children:o("requestID")})]}),(0,T.jsxs)("div",{children:[(0,T.jsx)("b",{style:n,children:"RemoteHost:\xa0"}),(0,T.jsx)("span",{style:t,children:o("remotehost")})]}),(0,T.jsxs)("div",{children:[(0,T.jsx)("b",{style:n,children:"UserAgent:\xa0"}),(0,T.jsx)("span",{style:t,children:o("userAgent")})]}),(0,T.jsxs)("div",{children:[(0,T.jsx)("b",{style:n,children:"Error:\xa0"}),(0,T.jsx)("span",{style:t,children:o("error.message")})]}),(0,T.jsx)("br",{}),(0,T.jsx)("div",{children:(0,T.jsx)("b",{style:n,children:"Backtrace:\xa0"})}),(e.error.source||[]).map((function(e,o){return(0,T.jsxs)("div",{children:[(0,T.jsxs)("b",{style:n,children:[o,":\xa0"]}),(0,T.jsx)("span",{style:t,children:e})]})}))]})}(t)),p=(p||"").replace(/((\[[0-9;]+m))/g,"");var x=R.ou.fromFormat(t.time.toString(),"HH:mm:ss z MM/dd/yyyy",{zone:"UTC"}),g=x.toJSDate(),m=(0,T.jsx)(r.Fragment,{children:x.toFormat(N)});return 1===g.getFullYear()&&(m=(0,T.jsx)(r.Fragment,{children:"n/a"})),(0,T.jsxs)(r.Fragment,{children:[(0,T.jsxs)(z.Z,{sx:{"& > *":{borderBottom:"unset"},cursor:"pointer",borderLeft:"0",borderRight:"0"},style:{backgroundColor:"#FDFDFD"},children:[(0,T.jsx)(M.Z,{onClick:function(){return a(!s)},style:{width:280,color:"#989898",fontSize:12},children:(0,T.jsxs)(I.Z,{sx:{display:"flex",gap:1,alignItems:"center","& .min-icon":{width:12,marginRight:1},fontWeight:"bold",lineHeight:1},children:[(0,T.jsx)(l.AeX,{}),(0,T.jsx)("div",{children:m})]})}),(0,T.jsx)(M.Z,{onClick:function(){return a(!s)},style:{width:200,color:"#989898",fontSize:12},children:(0,T.jsx)(I.Z,{sx:{"& .min-icon":{width:12,marginRight:1},fontWeight:"bold",lineHeight:1},children:t.errKind})}),(0,T.jsx)(M.Z,{onClick:function(){return a(!s)},children:(0,T.jsx)("div",{style:{display:"table",tableLayout:"fixed",width:"100%",paddingLeft:10,paddingRight:10},children:(0,T.jsx)("div",{style:{display:"table-cell",whiteSpace:"nowrap",textOverflow:"ellipsis",overflow:"hidden"},children:p})})}),(0,T.jsx)(M.Z,{onClick:function(){return a(!s)},style:{width:40},children:(0,T.jsx)(I.Z,{sx:{"& .min-icon":{display:"flex",alignItems:"center",justifyContent:"center",borderRadius:"2px"},"&:hover .min-icon":{fill:"#eaeaea"}},children:s?(0,T.jsx)(l.Ekf,{}):(0,T.jsx)(l._f_,{})})})]}),s?(0,T.jsxs)(z.Z,{children:[(0,T.jsx)(M.Z,{style:{paddingBottom:0,paddingTop:0,width:200,textTransform:"uppercase",verticalAlign:"top",textAlign:"right",color:"#8399AB",fontWeight:"bold"},children:(0,T.jsx)(F.Z,{in:s,timeout:"auto",unmountOnExit:!0,children:(0,T.jsx)("div",{style:{marginTop:10},children:"Log Details"})})}),(0,T.jsx)(M.Z,{colSpan:2,style:{paddingBottom:0,paddingTop:0},children:(0,T.jsx)(F.Z,{in:s,timeout:"auto",unmountOnExit:!0,children:(0,T.jsx)(I.Z,{sx:{margin:1},children:(0,T.jsx)(O.Z,{style:{background:"#efefef",border:"1px solid #dedede",padding:4,fontSize:14,color:"#666666"},children:f})})})}),(0,T.jsx)(M.Z,{style:{paddingBottom:0,paddingTop:0,width:40}})]}):null]},x.toString())},P=n(47974),W=n(99670),B=null,U=function(){var e=(0,c.TL)(),t=(0,a.v9)((function(e){return e.logs.logMessages})),n=(0,a.v9)((function(e){return e.logs.logsStarted})),v=(0,r.useState)(""),y=(0,i.Z)(v,2),j=y[0],w=y[1],b=(0,r.useState)([""]),Z=(0,i.Z)(b,2),C=Z[0],S=Z[1],E=(0,r.useState)("all"),k=(0,i.Z)(E,2),A=k[0],R=k[1],z=(0,r.useState)("Select user agent"),M=(0,i.Z)(z,2),F=M[0],I=M[1],O=(0,r.useState)(["All User Agents"]),_=(0,i.Z)(O,2),D=_[0],N=_[1],U=(0,r.useState)("all"),G=(0,i.Z)(U,2),X=G[0],q=G[1],J=(0,r.useState)(!1),K=(0,i.Z)(J,2),Q=K[0],Y=K[1],V=j.toLowerCase(),$=t.filter((function(e){return(e.userAgent===F||"All User Agents"===F||"Select user agent"===F)&&(""===j||(e.ConsoleMsg.toLowerCase().indexOf(V)>=0||(!!(e.error&&e.error.source&&e.error.source.filter((function(e){return e.toLowerCase().indexOf(V)>=0})).length>0)||(!!(e.error&&e.error.message.toLowerCase().indexOf(V)>=0)||!!(e.api&&e.api.name.toLowerCase().indexOf(V)>=0)))))}));return(0,r.useEffect)((function(){Y(!0),f.Z.invoke("GET","/api/v1/nodes").then((function(e){S(e),Y(!1)})).catch((function(e){Y(!1)}))}),[]),(0,r.useEffect)((function(){e((0,h.Sc)("error_logs"))}),[]),(0,T.jsxs)(r.Fragment,{children:[(0,T.jsx)(P.Z,{label:"Logs",actions:(0,T.jsx)(W.Z,{})}),(0,T.jsx)(l.Xgh,{children:(0,T.jsxs)(l.rjZ,{container:!0,sx:{gap:15},children:[(0,T.jsx)(l.rjZ,{item:!0,xs:3,children:Q?(0,T.jsx)("h3",{children:" Loading nodes"}):(0,T.jsx)(l.PhF,{id:"node-selector",name:"node","data-test-id":"node-selector",value:A,onChange:function(e){R(e)},disabled:Q||n,options:[{label:"All Nodes",value:"all"}].concat((0,o.Z)(C.map((function(e){return{label:e,value:e}}))))})}),(0,T.jsx)(l.rjZ,{item:!0,xs:3,children:(0,T.jsx)(l.PhF,{id:"logType",name:"logType","data-test-id":"log-type",value:X,onChange:function(e){q(e)},disabled:Q||n,options:[{value:"all",label:"All Log Types"},{value:"minio",label:"MinIO"},{value:"application",label:"Application"}]})}),(0,T.jsx)(l.rjZ,{item:!0,xs:3,children:D.length>1&&(0,T.jsx)(l.PhF,{id:"userAgent",name:"userAgent","data-test-id":"user-agent",value:F,onChange:function(e){I(e)},disabled:D.length<1||n,options:D.map((function(e){return{label:e,value:e}}))})}),(0,T.jsxs)(l.rjZ,{item:!0,xs:2,sx:{display:"flex",justifyContent:"flex-end"},children:[!n&&(0,T.jsx)(l.zxk,{id:"start-logs",type:"submit",variant:"callAction",disabled:!1,onClick:function(){e((0,u.i1)());var t=new URL(window.location.toString()),n=t.port,o=(0,d.x2)(t.protocol),i=new URL(document.baseURI).pathname;B=new s.w3cwebsocket("".concat(o,"://").concat(t.hostname,":").concat(n).concat(i,"ws/console/?logType=").concat(X,"&node=").concat("Select node"===A?"":A));var r=null;if(null!==B)return B.onopen=function(){console.log("WebSocket Client Connected"),e((0,u.v0)(!0)),B.send("ok"),r=setInterval((function(){B.send("ok")}),1e4)},B.onmessage=function(t){var n=JSON.parse(t.data.toString()),o=!0;""===n.level&&""===n.errKind&&"00:00:00 UTC 01/01/0001"===n.time&&""===n.ConsoleMsg&&""===n.node&&(o=!1),n.key=Math.random(),D.indexOf(n.userAgent)<0&&void 0!==n.userAgent&&(D.push(n.userAgent),N(D)),o&&e((0,u.Qo)(n))},B.onclose=function(){clearInterval(r),console.log("connection closed by server"),e((0,u.v0)(!1))},function(){B.close(1e3),clearInterval(r),console.log("closing websockets"),e((0,u.v0)(!1))}},label:"Start Logs"}),n&&(0,T.jsx)(l.zxk,{id:"stop-logs",type:"button",variant:"callAction",onClick:function(){null!==B&&void 0!==B&&(B.close(1e3),e((0,u.v0)(!1)))},label:"Stop Logs"})]}),(0,T.jsx)(l.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"1rem","& button":{flexGrow:0,marginLeft:8,marginBottom:0}},children:(0,T.jsx)(p.Z,{placeholder:"Filter",onChange:function(e){w(e)},value:j})}),(0,T.jsx)(l.rjZ,{item:!0,xs:12,children:(0,T.jsx)(l.xuv,{id:"logs-container","data-test-id":"logs-list-container",sx:{minHeight:400,height:"calc(100vh - 200px)",overflow:"auto",fontSize:13,borderRadius:4},children:(0,T.jsxs)(L,{component:x.Z,children:[(0,T.jsx)(g.Z,{"aria-label":"collapsible table",children:(0,T.jsx)(m.Z,{children:$.map((function(e){return(0,T.jsx)(H,{log:e})}))})}),0===$.length&&(0,T.jsx)("div",{style:{padding:20,textAlign:"center"},children:"No logs to display"})]})})})]})})]})}},56125:function(e,t,n){"use strict";n.d(t,{Z:function(){return S}});var o=n(4942),i=n(63366),r=n(87462),s=n(72791),l=n(63733),a=n(18875),c=n(94419),d=n(66934),u=n(31402),h=n(81314),p=n(4999),f=n(13967),x=n(42071),g=n(75878),m=n(21217);function v(e){return(0,m.Z)("MuiCollapse",e)}(0,g.Z)("MuiCollapse",["root","horizontal","vertical","entered","hidden","wrapper","wrapperInner"]);var y=n(80184),j=["addEndListener","children","className","collapsedSize","component","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","orientation","style","timeout","TransitionComponent"],w=(0,d.ZP)("div",{name:"MuiCollapse",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState;return[t.root,t[n.orientation],"entered"===n.state&&t.entered,"exited"===n.state&&!n.in&&"0px"===n.collapsedSize&&t.hidden]}})((function(e){var t=e.theme,n=e.ownerState;return(0,r.Z)({height:0,overflow:"hidden",transition:t.transitions.create("height")},"horizontal"===n.orientation&&{height:"auto",width:0,transition:t.transitions.create("width")},"entered"===n.state&&(0,r.Z)({height:"auto",overflow:"visible"},"horizontal"===n.orientation&&{width:"auto"}),"exited"===n.state&&!n.in&&"0px"===n.collapsedSize&&{visibility:"hidden"})})),b=(0,d.ZP)("div",{name:"MuiCollapse",slot:"Wrapper",overridesResolver:function(e,t){return t.wrapper}})((function(e){var t=e.ownerState;return(0,r.Z)({display:"flex",width:"100%"},"horizontal"===t.orientation&&{width:"auto",height:"100%"})})),Z=(0,d.ZP)("div",{name:"MuiCollapse",slot:"WrapperInner",overridesResolver:function(e,t){return t.wrapperInner}})((function(e){var t=e.ownerState;return(0,r.Z)({width:"100%"},"horizontal"===t.orientation&&{width:"auto",height:"100%"})})),C=s.forwardRef((function(e,t){var n=(0,u.Z)({props:e,name:"MuiCollapse"}),d=n.addEndListener,g=n.children,m=n.className,C=n.collapsedSize,S=void 0===C?"0px":C,E=n.component,T=n.easing,k=n.in,A=n.onEnter,L=n.onEntered,R=n.onEntering,z=n.onExit,M=n.onExited,F=n.onExiting,I=n.orientation,O=void 0===I?"vertical":I,_=n.style,D=n.timeout,N=void 0===D?h.x9.standard:D,H=n.TransitionComponent,P=void 0===H?a.ZP:H,W=(0,i.Z)(n,j),B=(0,r.Z)({},n,{orientation:O,collapsedSize:S}),U=function(e){var t=e.orientation,n=e.classes,o={root:["root","".concat(t)],entered:["entered"],hidden:["hidden"],wrapper:["wrapper","".concat(t)],wrapperInner:["wrapperInner","".concat(t)]};return(0,c.Z)(o,v,n)}(B),G=(0,f.Z)(),X=s.useRef(),q=s.useRef(null),J=s.useRef(),K="number"===typeof S?"".concat(S,"px"):S,Q="horizontal"===O,Y=Q?"width":"height";s.useEffect((function(){return function(){clearTimeout(X.current)}}),[]);var V=s.useRef(null),$=(0,x.Z)(t,V),ee=function(e){return function(t){if(e){var n=V.current;void 0===t?e(n):e(n,t)}}},te=function(){return q.current?q.current[Q?"clientWidth":"clientHeight"]:0},ne=ee((function(e,t){q.current&&Q&&(q.current.style.position="absolute"),e.style[Y]=K,A&&A(e,t)})),oe=ee((function(e,t){var n=te();q.current&&Q&&(q.current.style.position="");var o=(0,p.C)({style:_,timeout:N,easing:T},{mode:"enter"}),i=o.duration,r=o.easing;if("auto"===N){var s=G.transitions.getAutoHeightDuration(n);e.style.transitionDuration="".concat(s,"ms"),J.current=s}else e.style.transitionDuration="string"===typeof i?i:"".concat(i,"ms");e.style[Y]="".concat(n,"px"),e.style.transitionTimingFunction=r,R&&R(e,t)})),ie=ee((function(e,t){e.style[Y]="auto",L&&L(e,t)})),re=ee((function(e){e.style[Y]="".concat(te(),"px"),z&&z(e)})),se=ee(M),le=ee((function(e){var t=te(),n=(0,p.C)({style:_,timeout:N,easing:T},{mode:"exit"}),o=n.duration,i=n.easing;if("auto"===N){var r=G.transitions.getAutoHeightDuration(t);e.style.transitionDuration="".concat(r,"ms"),J.current=r}else e.style.transitionDuration="string"===typeof o?o:"".concat(o,"ms");e.style[Y]=K,e.style.transitionTimingFunction=i,F&&F(e)}));return(0,y.jsx)(P,(0,r.Z)({in:k,onEnter:ne,onEntered:ie,onEntering:oe,onExit:re,onExited:se,onExiting:le,addEndListener:function(e){"auto"===N&&(X.current=setTimeout(e,J.current||0)),d&&d(V.current,e)},nodeRef:V,timeout:"auto"===N?null:N},W,{children:function(e,t){return(0,y.jsx)(w,(0,r.Z)({as:E,className:(0,l.Z)(U.root,m,{entered:U.entered,exited:!k&&"0px"===K&&U.hidden}[e]),style:(0,r.Z)((0,o.Z)({},Q?"minWidth":"minHeight",K),_),ownerState:(0,r.Z)({},B,{state:e}),ref:$},t,{children:(0,y.jsx)(b,{ownerState:(0,r.Z)({},B,{state:e}),className:U.wrapper,ref:q,children:(0,y.jsx)(Z,{ownerState:(0,r.Z)({},B,{state:e}),className:U.wrapperInner,children:g})})}))}}))}));C.muiSupportAuto=!0;var S=C},94210:function(e){var t=function(){if("object"===typeof self&&self)return self;if("object"===typeof window&&window)return window;throw new Error("Unable to resolve global `this`")};e.exports=function(){if(this)return this;if("object"===typeof globalThis&&globalThis)return globalThis;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch(e){return t()}try{return __global__||t()}finally{delete Object.prototype.__global__}}()},95087:function(e,t,n){var o;if("object"===typeof globalThis)o=globalThis;else try{o=n(94210)}catch(l){}finally{if(o||"undefined"===typeof window||(o=window),!o)throw new Error("Could not determine global this")}var i=o.WebSocket||o.MozWebSocket,r=n(51496);function s(e,t){return t?new i(e,t):new i(e)}i&&["CONNECTING","OPEN","CLOSING","CLOSED"].forEach((function(e){Object.defineProperty(s,e,{get:function(){return i[e]}})})),e.exports={w3cwebsocket:i?s:null,version:r}},51496:function(e,t,n){e.exports=n(19794).version},19794:function(e){"use strict";e.exports={version:"1.0.34"}}}]); +//# sourceMappingURL=8521.06664483.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/8521.06664483.chunk.js.map b/portal-ui/build/static/js/8521.06664483.chunk.js.map new file mode 100644 index 0000000000..04d7fe5d4e --- /dev/null +++ b/portal-ui/build/static/js/8521.06664483.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/8521.06664483.chunk.js","mappings":"2ZAEO,SAASA,EAA8BC,GAC5C,OAAOC,EAAAA,EAAAA,GAAqB,oBAAqBD,EACnD,EAC8BE,EAAAA,EAAAA,GAAuB,oBAAqB,CAAC,SAA3E,I,WCDMC,EAAY,CAAC,YAAa,aAkB1BC,GAAqBC,EAAAA,EAAAA,IAAO,MAAO,CACvCC,KAAM,oBACNN,KAAM,OACNO,kBAAmB,SAACC,EAAOC,GAAM,OAAKA,EAAOC,IAAI,GAHxBL,CAIxB,CACDM,MAAO,OACPC,UAAW,SAkDb,EAhDoCC,EAAAA,YAAiB,SAAwBC,EAASC,GACpF,IAAMP,GAAQQ,EAAAA,EAAAA,GAAc,CAC1BR,MAAOM,EACPR,KAAM,sBAGJW,EAEET,EAFFS,UAASC,EAEPV,EADFW,UAAAA,OAAS,IAAAD,EAAG,MAAKA,EAEnBE,GAAQC,EAAAA,EAAAA,GAA8Bb,EAAOL,GACzCmB,GAAaC,EAAAA,EAAAA,GAAS,CAAC,EAAGf,EAAO,CACrCW,UAAAA,IAEIK,EA9BkB,SAAAF,GACxB,IACEE,EACEF,EADFE,QAKF,OAAOC,EAAAA,EAAAA,GAHO,CACZf,KAAM,CAAC,SAEoBX,EAA+ByB,EAC9D,CAsBkBE,CAAkBJ,GAClC,OAAoBK,EAAAA,EAAAA,KAAKvB,GAAoBmB,EAAAA,EAAAA,GAAS,CACpDR,IAAKA,EACLa,GAAIT,EACJF,WAAWY,EAAAA,EAAAA,GAAKL,EAAQd,KAAMO,GAC9BK,WAAYA,GACXF,GACL,I,sFCvBMU,EAAsB,2BAyR5B,EA9KgB,SAACtB,GACf,IAAQuB,EAAQvB,EAARuB,IACRC,GAAwBC,EAAAA,EAAAA,WAAkB,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAzCI,EAAIF,EAAA,GAAEG,EAAOH,EAAA,GAEdI,EAAgB,SAACC,GACrB,OAAOC,IAAST,EAAKQ,EAAS,GAChC,EAEIE,EAAa,GACbC,EAAaJ,EAAc,cAC3BK,EAASL,EAAc,iBACR,KAAfI,EACFD,EAAaC,EACO,KAAXC,IACTF,EAAaE,GAGf,IAAIC,GAAmBH,GAAc,IAAII,QAAQ,6CAAgB,IAEjED,EAAkBA,EAAgBC,QAAQ,kBAAmB,IAG7D,IAEIC,GAAcnB,EAAAA,EAAAA,KAACoB,EAAAA,SAAQ,IACR,KAAfL,EACFI,EApIyB,SAACf,GAE5B,IAEIe,EAAcf,EAAIiB,WAStB,OADAF,GALAA,EAAcA,EAAYD,QAAQ,QAAS,MAKjBA,QAVN,kBAU2B,KAE7ClB,EAAAA,EAAAA,KAAA,OACEsB,MAAO,CACLC,QAAS,QACTC,YAAa,QACbxC,MAAO,OACPyC,YAAa,GACbC,aAAc,IACdC,UAEF3B,EAAAA,EAAAA,KAAA,OACEsB,MAAO,CACLC,QAAS,aACTK,WAAY,SACZC,aAAc,WACd5C,UAAW,QACX0C,UAEF3B,EAAAA,EAAAA,KAAA,OAAA2B,SAAMR,OAId,CAiGkBW,CAAqB1B,GACf,KAAXY,IACTG,EAlGoB,SAACf,GACvB,IAAM2B,EAAY,CAChBC,MAAO,UACPC,WAAY,IACZC,WAAY,YACZC,SAAU,QAENC,EAAa,CACjBF,WAAY,YACZC,SAAU,QAGNE,EAAiB,SAACzB,GACtB,OAAOC,IAAST,EAAKQ,EAAS,GAChC,EAEM0B,EAAUC,EAAAA,GAASC,WACvBpC,EAAIqC,KAAKC,WACT,wBACA,CACEC,KAAM,QAGV,OACEC,EAAAA,EAAAA,MAACxB,EAAAA,SAAQ,CAAAO,SAAA,EACPiB,EAAAA,EAAAA,MAAA,OAAAjB,SAAA,EACE3B,EAAAA,EAAAA,KAAA,KAAGsB,MAAOc,EAAWT,SAAC,cACtB3B,EAAAA,EAAAA,KAAA,QAAMsB,MAAOS,EAAUJ,SAAEU,EAAe,kBAE1CO,EAAAA,EAAAA,MAAA,OAAAjB,SAAA,EACE3B,EAAAA,EAAAA,KAAA,KAAGsB,MAAOc,EAAWT,SAAC,eACtB3B,EAAAA,EAAAA,KAAA,QAAMsB,MAAOS,EAAUJ,SAAEW,EAAQO,SAAS1C,SAE5CyC,EAAAA,EAAAA,MAAA,OAAAjB,SAAA,EACE3B,EAAAA,EAAAA,KAAA,KAAGsB,MAAOc,EAAWT,SAAC,uBACtB3B,EAAAA,EAAAA,KAAA,QAAMsB,MAAOS,EAAUJ,SAAEU,EAAe,sBAE1CO,EAAAA,EAAAA,MAAA,OAAAjB,SAAA,EACE3B,EAAAA,EAAAA,KAAA,KAAGsB,MAAOc,EAAWT,SAAC,oBACtB3B,EAAAA,EAAAA,KAAA,QAAMsB,MAAOS,EAAUJ,SAAEU,EAAe,mBAE1CO,EAAAA,EAAAA,MAAA,OAAAjB,SAAA,EACE3B,EAAAA,EAAAA,KAAA,KAAGsB,MAAOc,EAAWT,SAAC,qBACtB3B,EAAAA,EAAAA,KAAA,QAAMsB,MAAOS,EAAUJ,SAAEU,EAAe,oBAE1CO,EAAAA,EAAAA,MAAA,OAAAjB,SAAA,EACE3B,EAAAA,EAAAA,KAAA,KAAGsB,MAAOc,EAAWT,SAAC,oBACtB3B,EAAAA,EAAAA,KAAA,QAAMsB,MAAOS,EAAUJ,SAAEU,EAAe,mBAE1CO,EAAAA,EAAAA,MAAA,OAAAjB,SAAA,EACE3B,EAAAA,EAAAA,KAAA,KAAGsB,MAAOc,EAAWT,SAAC,gBACtB3B,EAAAA,EAAAA,KAAA,QAAMsB,MAAOS,EAAUJ,SAAEU,EAAe,uBAE1CrC,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,OAAA2B,UACE3B,EAAAA,EAAAA,KAAA,KAAGsB,MAAOc,EAAWT,SAAC,sBAGtBvB,EAAI0C,MAAMC,QAAU,IAAIC,KAAI,SAACC,EAAQC,GACrC,OACEN,EAAAA,EAAAA,MAAA,OAAAjB,SAAA,EACEiB,EAAAA,EAAAA,MAAA,KAAGtB,MAAOc,EAAWT,SAAA,CAAEuB,EAAE,YACzBlD,EAAAA,EAAAA,KAAA,QAAMsB,MAAOS,EAAUJ,SAAEsB,MAG/B,MAGN,CA8BkBE,CAAgB/C,IAGhCa,GAAmBA,GAAmB,IAAIC,QATtB,kBAS2C,IAE/D,IAAMoB,EAAUC,EAAAA,GAASC,WACvBpC,EAAIqC,KAAKC,WACT,wBACA,CACEC,KAAM,QAGJS,EAAad,EAAQe,WAEvBC,GAAUtD,EAAAA,EAAAA,KAACoB,EAAAA,SAAQ,CAAAO,SAAEW,EAAQO,SAAS1C,KAM1C,OAJiC,IAA7BiD,EAAWG,gBACbD,GAAUtD,EAAAA,EAAAA,KAACoB,EAAAA,SAAQ,CAAAO,SAAC,UAIpBiB,EAAAA,EAAAA,MAAC1D,EAAAA,SAAc,CAAAyC,SAAA,EACbiB,EAAAA,EAAAA,MAACY,EAAAA,EAAQ,CACPC,GAAI,CACF,QAAS,CAAEC,aAAc,SACzBC,OAAQ,UACRC,WAAY,IACZC,YAAa,KAEfvC,MAAO,CAAEwC,gBAAiB,WAAYnC,SAAA,EAEtC3B,EAAAA,EAAAA,KAAC+D,EAAAA,EAAS,CACRC,QAAS,kBAAMtD,GAASD,EAAK,EAC7Ba,MAAO,CAAEtC,MAAO,IAAKgD,MAAO,UAAWG,SAAU,IAAKR,UAEtDiB,EAAAA,EAAAA,MAACqB,EAAAA,EAAG,CACFR,GAAI,CACFlC,QAAS,OACT2C,IAAK,EACLC,WAAY,SAEZ,cAAe,CAAEnF,MAAO,GAAIoF,YAAa,GACzCnC,WAAY,OACZoC,WAAY,GACZ1C,SAAA,EAEF3B,EAAAA,EAAAA,KAACsE,EAAAA,IAAc,KACftE,EAAAA,EAAAA,KAAA,OAAA2B,SAAM2B,UAGVtD,EAAAA,EAAAA,KAAC+D,EAAAA,EAAS,CACRC,QAAS,kBAAMtD,GAASD,EAAK,EAC7Ba,MAAO,CAAEtC,MAAO,IAAKgD,MAAO,UAAWG,SAAU,IAAKR,UAEtD3B,EAAAA,EAAAA,KAACiE,EAAAA,EAAG,CACFR,GAAI,CACF,cAAe,CAAEzE,MAAO,GAAIoF,YAAa,GACzCnC,WAAY,OACZoC,WAAY,GACZ1C,SAEDvB,EAAImE,aAGTvE,EAAAA,EAAAA,KAAC+D,EAAAA,EAAS,CAACC,QAAS,kBAAMtD,GAASD,EAAK,EAACkB,UACvC3B,EAAAA,EAAAA,KAAA,OACEsB,MAAO,CACLC,QAAS,QACTC,YAAa,QACbxC,MAAO,OACPyC,YAAa,GACbC,aAAc,IACdC,UAEF3B,EAAAA,EAAAA,KAAA,OACEsB,MAAO,CACLC,QAAS,aACTK,WAAY,SACZC,aAAc,WACd2C,SAAU,UACV7C,SAEDV,SAIPjB,EAAAA,EAAAA,KAAC+D,EAAAA,EAAS,CAACC,QAAS,kBAAMtD,GAASD,EAAK,EAAEa,MAAO,CAAEtC,MAAO,IAAK2C,UAC7D3B,EAAAA,EAAAA,KAACiE,EAAAA,EAAG,CACFR,GAAI,CACF,cAAe,CACblC,QAAS,OACT4C,WAAY,SACZM,eAAgB,SAChBC,aAAc,OAEhB,oBAAqB,CACnBC,KAAM,YAERhD,SAEDlB,GAAOT,EAAAA,EAAAA,KAAC4E,EAAAA,IAAU,KAAM5E,EAAAA,EAAAA,KAAC6E,EAAAA,IAAY,WAI3CpE,GACCmC,EAAAA,EAAAA,MAACY,EAAAA,EAAQ,CAAA7B,SAAA,EACP3B,EAAAA,EAAAA,KAAC+D,EAAAA,EAAS,CACRzC,MAAO,CACLwD,cAAe,EACfC,WAAY,EACZ/F,MAAO,IACPgG,cAAe,YACfC,cAAe,MACfC,UAAW,QACXlD,MAAO,UACPC,WAAY,QACZN,UAEF3B,EAAAA,EAAAA,KAACmF,EAAAA,EAAQ,CAACC,GAAI3E,EAAM4E,QAAQ,OAAOC,eAAa,EAAA3D,UAC9C3B,EAAAA,EAAAA,KAAA,OAAKsB,MAAO,CAAEiE,UAAW,IAAK5D,SAAC,qBAGnC3B,EAAAA,EAAAA,KAAC+D,EAAAA,EAAS,CAACyB,QAAS,EAAGlE,MAAO,CAAEwD,cAAe,EAAGC,WAAY,GAAIpD,UAChE3B,EAAAA,EAAAA,KAACmF,EAAAA,EAAQ,CAACC,GAAI3E,EAAM4E,QAAQ,OAAOC,eAAa,EAAA3D,UAC9C3B,EAAAA,EAAAA,KAACiE,EAAAA,EAAG,CAACR,GAAI,CAAEgC,OAAQ,GAAI9D,UACrB3B,EAAAA,EAAAA,KAAC0F,EAAAA,EAAU,CACTpE,MAAO,CACLqE,WAAY,UACZC,OAAQ,oBACRC,QAAS,EACT1D,SAAU,GACVH,MAAO,WACPL,SAEDR,WAKTnB,EAAAA,EAAAA,KAAC+D,EAAAA,EAAS,CAACzC,MAAO,CAAEwD,cAAe,EAAGC,WAAY,EAAG/F,MAAO,SAE5D,OAxHesD,EAAQI,WA2HjC,E,sBC3QIoD,EAAS,KAiSb,EA/RkB,WAChB,IAAMC,GAAWC,EAAAA,EAAAA,MAEXC,GAAWC,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAMC,KAAKC,WAAW,IAClEC,GAAcJ,EAAAA,EAAAA,KAAY,SAACC,GAAe,OAAKA,EAAMC,KAAKE,WAAW,IAE3EjG,GAA4BC,EAAAA,EAAAA,UAAiB,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAzCkG,EAAMhG,EAAA,GAAEiG,EAASjG,EAAA,GACxBkG,GAA0BnG,EAAAA,EAAAA,UAAmB,CAAC,KAAIoG,GAAAlG,EAAAA,EAAAA,GAAAiG,EAAA,GAA3CE,EAAKD,EAAA,GAAEE,EAAQF,EAAA,GACtBG,GAAwCvG,EAAAA,EAAAA,UAAiB,OAAMwG,GAAAtG,EAAAA,EAAAA,GAAAqG,EAAA,GAAxDE,EAAYD,EAAA,GAAEE,EAAeF,EAAA,GACpCG,GACE3G,EAAAA,EAAAA,UAAiB,qBAAoB4G,GAAA1G,EAAAA,EAAAA,GAAAyG,EAAA,GADhCE,EAAiBD,EAAA,GAAEE,EAAoBF,EAAA,GAE9CG,GAAoC/G,EAAAA,EAAAA,UAAmB,CAAC,oBAAmBgH,GAAA9G,EAAAA,EAAAA,GAAA6G,EAAA,GAApEE,EAAUD,EAAA,GAAEE,EAAaF,EAAA,GAChCG,GAA8BnH,EAAAA,EAAAA,UAAiB,OAAMoH,GAAAlH,EAAAA,EAAAA,GAAAiH,EAAA,GAA9CE,EAAOD,EAAA,GAAEE,EAAUF,EAAA,GAC1BG,GAAwCvH,EAAAA,EAAAA,WAAkB,GAAMwH,GAAAtH,EAAAA,EAAAA,GAAAqH,EAAA,GAAzDE,EAAYD,EAAA,GAAEE,EAAeF,EAAA,GA6E9BG,EAAU1B,EAAO2B,cACnBC,EAAmBlC,EAASM,QAAO,SAAC6B,GACtC,OACEA,EAAEC,YAAclB,GACM,oBAAtBA,GACsB,sBAAtBA,KAEe,KAAXZ,IACE6B,EAAE/G,WAAW6G,cAAcI,QAAQL,IAAY,OAGjDG,EAAEtF,OACFsF,EAAEtF,MAAMC,QACRqF,EAAEtF,MAAMC,OAAOwD,QAAO,SAACgC,GACrB,OAAOA,EAAEL,cAAcI,QAAQL,IAAY,CAC7C,IAAGO,OAAS,QAIZJ,EAAEtF,OACFsF,EAAEtF,MAAM2F,QAAQP,cAAcI,QAAQL,IAAY,OAGzCG,EAAEM,KAAON,EAAEM,IAAI/J,KAAKuJ,cAAcI,QAAQL,IAAY,MAOvE,IAoBA,OAlBAU,EAAAA,EAAAA,YAAU,WACRX,GAAgB,GAChBU,EAAAA,EACGE,OAAO,MAAM,iBACbC,MAAK,SAACC,GACLlC,EAASkC,GACTd,GAAgB,EAClB,IACCe,OAAM,SAACC,GACNhB,GAAgB,EAClB,GACJ,GAAG,KAEHW,EAAAA,EAAAA,YAAU,WACR5C,GAASkD,EAAAA,EAAAA,IAAY,cAEvB,GAAG,KAGDrG,EAAAA,EAAAA,MAACxB,EAAAA,SAAQ,CAAAO,SAAA,EACP3B,EAAAA,EAAAA,KAACkJ,EAAAA,EAAiB,CAACC,MAAM,OAAOC,SAASpJ,EAAAA,EAAAA,KAACqJ,EAAAA,EAAQ,OAElDrJ,EAAAA,EAAAA,KAACsJ,EAAAA,IAAU,CAAA3H,UACTiB,EAAAA,EAAAA,MAAC2G,EAAAA,IAAI,CAACC,WAAS,EAAC/F,GAAI,CAAES,IAAK,IAAKvC,SAAA,EAC9B3B,EAAAA,EAAAA,KAACuJ,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,EAAE/H,SACboG,GAgBA/H,EAAAA,EAAAA,KAAA,MAAA2B,SAAI,oBAfJ3B,EAAAA,EAAAA,KAAC2J,EAAAA,IAAM,CACLC,GAAG,gBACHjL,KAAK,OACL,eAAa,gBACbkL,MAAO9C,EACP+C,SAAU,SAACD,GACT7C,EAAgB6C,EAClB,EACAE,SAAUhC,GAAgBzB,EAC1B0D,QAAO,CACL,CAAEb,MAAO,YAAaU,MAAO,QAAOI,QAAAC,EAAAA,EAAAA,GACjCvD,EAAM3D,KAAI,SAACmH,GAAK,MAAM,CAAEhB,MAAOgB,EAAON,MAAOM,EAAO,WAQ/DnK,EAAAA,EAAAA,KAACuJ,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,EAAE/H,UACf3B,EAAAA,EAAAA,KAAC2J,EAAAA,IAAM,CACLC,GAAG,UACHjL,KAAK,UACL,eAAa,WACbkL,MAAOlC,EACPmC,SAAU,SAACD,GACTjC,EAAWiC,EACb,EACAE,SAAUhC,GAAgBzB,EAC1B0D,QAAS,CACP,CAAEH,MAAO,MAAOV,MAAO,iBACvB,CACEU,MAAO,QACPV,MAAO,SAET,CAAEU,MAAO,cAAeV,MAAO,qBAIrCnJ,EAAAA,EAAAA,KAACuJ,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,EAAE/H,SACd4F,EAAWiB,OAAS,IACnBxI,EAAAA,EAAAA,KAAC2J,EAAAA,IAAM,CACLC,GAAG,YACHjL,KAAK,YACL,eAAa,aACbkL,MAAO1C,EACP2C,SAAU,SAACD,GACTzC,EAAqByC,EACvB,EACAE,SAAUxC,EAAWiB,OAAS,GAAKlC,EACnC0D,QAASzC,EAAWvE,KAAI,SAACoH,GAAO,MAAM,CACpCjB,MAAOiB,EACPP,MAAOO,EACR,SAIPxH,EAAAA,EAAAA,MAAC2G,EAAAA,IAAI,CACHE,MAAI,EACJC,GAAI,EACJjG,GAAI,CAAElC,QAAS,OAAQkD,eAAgB,YAAa9C,SAAA,EAElD2E,IACAtG,EAAAA,EAAAA,KAACqK,EAAAA,IAAM,CACLT,GAAI,aACJU,KAAK,SACLC,QAAQ,aACRR,UAAU,EACV/F,QAzMI,WAChB+B,GAASyE,EAAAA,EAAAA,OACT,IAAMC,EAAM,IAAIC,IAAIC,OAAOC,SAASlI,YAE9BmI,EAAwBJ,EAAII,KAE5BC,GAASC,EAAAA,EAAAA,IAAWN,EAAIO,UAGxBC,EADe,IAAIP,IAAIQ,SAASC,SACTC,SAE7BtF,EAAI,IAAIuF,EAAAA,aAAa,GAADpB,OACfa,EAAM,OAAAb,OACPQ,EAAIa,SAAQ,KAAArB,OACVY,GAAIZ,OAAGgB,EAAO,wBAAAhB,OAAuBtC,EAAO,UAAAsC,OAC7B,gBAAjBlD,EAAiC,GAAKA,IAG1C,IAAIwE,EAAuB,KAC3B,GAAU,OAANzF,EAwCF,OAvCAA,EAAE0F,OAAS,WACTC,QAAQrL,IAAI,8BACZ2F,GAAS2F,EAAAA,EAAAA,KAAe,IACxB5F,EAAE6F,KAAK,MACPJ,EAAWK,aAAY,WACrB9F,EAAE6F,KAAK,KACT,GAAG,IACL,EACA7F,EAAE+F,UAAY,SAACpD,GAIb,IAAIL,EAAS0D,KAAKC,MAAMtD,EAAQuD,KAAKtJ,YACjCuJ,GAAe,EAEL,KAAZ7D,EAAE8D,OACY,KAAd9D,EAAE7D,SAES,4BAAX6D,EAAE3F,MACe,KAAjB2F,EAAE/G,YACS,KAAX+G,EAAE+D,OAEFF,GAAe,GAGjB7D,EAAEgE,IAAMC,KAAKC,SACT/E,EAAWe,QAAQF,EAAEC,WAAa,QAAqBkE,IAAhBnE,EAAEC,YAC3Cd,EAAWiF,KAAKpE,EAAEC,WAClBb,EAAcD,IAEZ0E,GACFlG,GAAS0G,EAAAA,EAAAA,IAAmBrE,GAEhC,EACAtC,EAAE4G,QAAU,WACVC,cAAcpB,GACdE,QAAQrL,IAAI,+BACZ2F,GAAS2F,EAAAA,EAAAA,KAAe,GAC1B,EACO,WACL5F,EAAE8G,MAAM,KACRD,cAAcpB,GACdE,QAAQrL,IAAI,sBACZ2F,GAAS2F,EAAAA,EAAAA,KAAe,GAC1B,CAEJ,EAwIcvC,MAAO,eAGV7C,IACCtG,EAAAA,EAAAA,KAACqK,EAAAA,IAAM,CACLT,GAAI,YACJU,KAAK,SACLC,QAAQ,aACRvG,QA9IG,WACL,OAAN8B,QAAoByG,IAANzG,IAChBA,EAAE8G,MAAM,KACR7G,GAAS2F,EAAAA,EAAAA,KAAe,IAE5B,EA0IcvC,MAAO,kBAIbnJ,EAAAA,EAAAA,KAACuJ,EAAAA,IAAI,CACHE,MAAI,EACJC,GAAI,GACJjG,GAAI,CACFlC,QAAS,OACTkD,eAAgB,gBAChBN,WAAY,SACZ0I,aAAc,OACd,WAAY,CACVC,SAAU,EACVC,WAAY,EACZF,aAAc,IAEhBlL,UAEF3B,EAAAA,EAAAA,KAACgN,EAAAA,EAAS,CACRC,YAAY,SACZnD,SAAU,SAAC7G,GACTuD,EAAUvD,EACZ,EACA4G,MAAOtD,OAGXvG,EAAAA,EAAAA,KAACuJ,EAAAA,IAAI,CAACE,MAAI,EAACC,GAAI,GAAG/H,UAChB3B,EAAAA,EAAAA,KAACiE,EAAAA,IAAG,CACF2F,GAAG,iBACH,eAAa,sBACbnG,GAAI,CACFyJ,UAAW,IACXC,OAAQ,sBACR3I,SAAU,OACVrC,SAAU,GACVuC,aAAc,GACd/C,UAEFiB,EAAAA,EAAAA,MAACwK,EAAc,CAAC5N,UAAW6N,EAAAA,EAAM1L,SAAA,EAC/B3B,EAAAA,EAAAA,KAACsN,EAAAA,EAAK,CAAC,aAAW,oBAAmB3L,UACnC3B,EAAAA,EAAAA,KAACuN,EAAAA,EAAS,CAAA5L,SACPwG,EAAiBnF,KAAI,SAACoF,GACrB,OAAOpI,EAAAA,EAAAA,KAACwN,EAAO,CAACpN,IAAKgI,GACvB,QAGyB,IAA5BD,EAAiBK,SAChBxI,EAAAA,EAAAA,KAAA,OAAKsB,MAAO,CAAEuE,QAAS,GAAIX,UAAW,UAAWvD,SAAC,qCAWpE,C,4OCpUO,SAAS8L,EAAwBpP,GACtC,OAAOC,EAAAA,EAAAA,GAAqB,cAAeD,EAC7C,EACwBE,EAAAA,EAAAA,GAAuB,cAAe,CAAC,OAAQ,aAAc,WAAY,UAAW,SAAU,UAAW,iBAAjI,I,WCDMC,EAAY,CAAC,iBAAkB,WAAY,YAAa,gBAAiB,YAAa,SAAU,KAAM,UAAW,YAAa,aAAc,SAAU,WAAY,YAAa,cAAe,QAAS,UAAW,uBA6BlNkP,GAAehP,EAAAA,EAAAA,IAAO,MAAO,CACjCC,KAAM,cACNN,KAAM,OACNO,kBAAmB,SAACC,EAAOC,GACzB,IACEa,EACEd,EADFc,WAEF,MAAO,CAACb,EAAOC,KAAMD,EAAOa,EAAWgO,aAAmC,YAArBhO,EAAWwG,OAAuBrH,EAAO8O,QAA8B,WAArBjO,EAAWwG,QAAuBxG,EAAWyF,IAAmC,QAA7BzF,EAAWkO,eAA2B/O,EAAOgP,OACzM,GARmBpP,EASlB,SAAAqP,GAAA,IACDC,EAAKD,EAALC,MACArO,EAAUoO,EAAVpO,WAAU,OACNC,EAAAA,EAAAA,GAAS,CACbuN,OAAQ,EACR3I,SAAU,SACVyJ,WAAYD,EAAME,YAAYC,OAAO,WACT,eAA3BxO,EAAWgO,aAAgC,CAC5CR,OAAQ,OACRnO,MAAO,EACPiP,WAAYD,EAAME,YAAYC,OAAO,UACf,YAArBxO,EAAWwG,QAAuBvG,EAAAA,EAAAA,GAAS,CAC5CuN,OAAQ,OACR3I,SAAU,WACkB,eAA3B7E,EAAWgO,aAAgC,CAC5C3O,MAAO,SACgB,WAArBW,EAAWwG,QAAuBxG,EAAWyF,IAAmC,QAA7BzF,EAAWkO,eAA2B,CAC3FO,WAAY,UACZ,IACIC,GAAkB3P,EAAAA,EAAAA,IAAO,MAAO,CACpCC,KAAM,cACNN,KAAM,UACNO,kBAAmB,SAACC,EAAOC,GAAM,OAAKA,EAAOwP,OAAO,GAH9B5P,EAIrB,SAAA6P,GAAA,IACD5O,EAAU4O,EAAV5O,WAAU,OACNC,EAAAA,EAAAA,GAAS,CAEb2B,QAAS,OACTvC,MAAO,QACqB,eAA3BW,EAAWgO,aAAgC,CAC5C3O,MAAO,OACPmO,OAAQ,QACR,IACIqB,GAAuB9P,EAAAA,EAAAA,IAAO,MAAO,CACzCC,KAAM,cACNN,KAAM,eACNO,kBAAmB,SAACC,EAAOC,GAAM,OAAKA,EAAO2P,YAAY,GAH9B/P,EAI1B,SAAAgQ,GAAA,IACD/O,EAAU+O,EAAV/O,WAAU,OACNC,EAAAA,EAAAA,GAAS,CACbZ,MAAO,QACqB,eAA3BW,EAAWgO,aAAgC,CAC5C3O,MAAO,OACPmO,OAAQ,QACR,IAOIhI,EAAwBjG,EAAAA,YAAiB,SAAkBC,EAASC,GACxE,IAAMP,GAAQQ,EAAAA,EAAAA,GAAc,CAC1BR,MAAOM,EACPR,KAAM,gBAGJgQ,EAkBE9P,EAlBF8P,eACAhN,EAiBE9C,EAjBF8C,SACArC,EAgBET,EAhBFS,UAASsP,EAgBP/P,EAfFgP,cAAegB,OAAiB,IAAAD,EAAG,MAAKA,EACxCpP,EAcEX,EAdFW,UACAsP,EAaEjQ,EAbFiQ,OACIC,EAYFlQ,EAZFuG,GACA4J,EAWEnQ,EAXFmQ,QACAC,EAUEpQ,EAVFoQ,UACAC,EASErQ,EATFqQ,WACAC,EAQEtQ,EARFsQ,OACAC,EAOEvQ,EAPFuQ,SACAC,EAMExQ,EANFwQ,UAASC,EAMPzQ,EALF8O,YAAAA,OAAW,IAAA2B,EAAG,WAAUA,EACxBhO,EAIEzC,EAJFyC,MAAKiO,EAIH1Q,EAHFwG,QAAAA,OAAO,IAAAkK,EAAGC,EAAAA,GAASC,SAAQF,EAAAG,EAGzB7Q,EADF8Q,oBAAAA,OAAmB,IAAAD,EAAGE,EAAAA,GAAUF,EAElCjQ,GAAQC,EAAAA,EAAAA,GAA8Bb,EAAOL,GACzCmB,GAAaC,EAAAA,EAAAA,GAAS,CAAC,EAAGf,EAAO,CACrC8O,YAAAA,EACAE,cAAegB,IAEXhP,EAxGkB,SAAAF,GACxB,IACEgO,EAEEhO,EAFFgO,YACA9N,EACEF,EADFE,QAEIgQ,EAAQ,CACZ9Q,KAAM,CAAC,OAAQ,GAAFkL,OAAK0D,IAClBC,QAAS,CAAC,WACVE,OAAQ,CAAC,UACTQ,QAAS,CAAC,UAAW,GAAFrE,OAAK0D,IACxBc,aAAc,CAAC,eAAgB,GAAFxE,OAAK0D,KAEpC,OAAO7N,EAAAA,EAAAA,GAAe+P,EAAOpC,EAAyB5N,EACxD,CA2FkBE,CAAkBJ,GAC5BqO,GAAQ8B,EAAAA,EAAAA,KACRC,EAAQ7Q,EAAAA,SACR8Q,EAAa9Q,EAAAA,OAAa,MAC1B+Q,EAAyB/Q,EAAAA,SACzB2O,EAA6C,kBAAtBgB,EAAiC,GAAH5E,OAAM4E,EAAiB,MAAOA,EACnFqB,EAA+B,eAAhBvC,EACfwC,EAAOD,EAAe,QAAU,SACtChR,EAAAA,WAAgB,WACd,OAAO,WACLkR,aAAaL,EAAMM,QACrB,CACF,GAAG,IACH,IAAMC,EAAUpR,EAAAA,OAAa,MACvBqR,GAAYC,EAAAA,EAAAA,GAAWpR,EAAKkR,GAC5BG,GAA+B,SAAAC,GAAQ,OAAI,SAAAC,GAC/C,GAAID,EAAU,CACZ,IAAMvE,EAAOmE,EAAQD,aAGI9D,IAArBoE,EACFD,EAASvE,GAETuE,EAASvE,EAAMwE,EAEnB,CACF,CAAC,EACKC,GAAiB,WAAH,OAASZ,EAAWK,QAAUL,EAAWK,QAAQH,EAAe,cAAgB,gBAAkB,CAAC,EACjHW,GAAcJ,IAA6B,SAACtE,EAAM2E,GAClDd,EAAWK,SAAWH,IAExBF,EAAWK,QAAQ/O,MAAMyP,SAAW,YAEtC5E,EAAK7K,MAAM6O,GAAQtC,EACfmB,GACFA,EAAQ7C,EAAM2E,EAElB,IACME,GAAiBP,IAA6B,SAACtE,EAAM2E,GACzD,IAAMG,EAAcL,KAChBZ,EAAWK,SAAWH,IAExBF,EAAWK,QAAQ/O,MAAMyP,SAAW,IAEtC,IAAAG,GAGIC,EAAAA,EAAAA,GAAmB,CACrB7P,MAAAA,EACA+D,QAAAA,EACAyJ,OAAAA,GACC,CACDsC,KAAM,UAPIC,EAAkBH,EAA5B1B,SACQ8B,EAAwBJ,EAAhCpC,OAQF,GAAgB,SAAZzJ,EAAoB,CACtB,IAAMkM,EAAYvD,EAAME,YAAYsD,sBAAsBP,GAC1D9E,EAAK7K,MAAM+P,mBAAqB,GAAHpH,OAAMsH,EAAS,MAC5CtB,EAAuBI,QAAUkB,CACnC,MACEpF,EAAK7K,MAAM+P,mBAAmD,kBAAvBA,EAAkCA,EAAqB,GAAHpH,OAAMoH,EAAkB,MAErHlF,EAAK7K,MAAM6O,GAAQ,GAAHlG,OAAMgH,EAAW,MACjC9E,EAAK7K,MAAMgQ,yBAA2BA,EAClCpC,GACFA,EAAW/C,EAAM2E,EAErB,IACMW,GAAgBhB,IAA6B,SAACtE,EAAM2E,GACxD3E,EAAK7K,MAAM6O,GAAQ,OACflB,GACFA,EAAU9C,EAAM2E,EAEpB,IACMY,GAAajB,IAA6B,SAAAtE,GAC9CA,EAAK7K,MAAM6O,GAAQ,GAAHlG,OAAM2G,KAAgB,MAClCzB,GACFA,EAAOhD,EAEX,IACMwF,GAAelB,GAA6BrB,GAC5CwC,GAAgBnB,IAA6B,SAAAtE,GACjD,IAAM8E,EAAcL,KACpBiB,GAGIV,EAAAA,EAAAA,GAAmB,CACrB7P,MAAAA,EACA+D,QAAAA,EACAyJ,OAAAA,GACC,CACDsC,KAAM,SAPIC,EAAkBQ,EAA5BrC,SACQ8B,EAAwBO,EAAhC/C,OAQF,GAAgB,SAAZzJ,EAAoB,CAGtB,IAAMkM,EAAYvD,EAAME,YAAYsD,sBAAsBP,GAC1D9E,EAAK7K,MAAM+P,mBAAqB,GAAHpH,OAAMsH,EAAS,MAC5CtB,EAAuBI,QAAUkB,CACnC,MACEpF,EAAK7K,MAAM+P,mBAAmD,kBAAvBA,EAAkCA,EAAqB,GAAHpH,OAAMoH,EAAkB,MAErHlF,EAAK7K,MAAM6O,GAAQtC,EACnB1B,EAAK7K,MAAMgQ,yBAA2BA,EAClCjC,GACFA,EAAUlD,EAEd,IAUA,OAAoBnM,EAAAA,EAAAA,KAAK2P,GAAqB/P,EAAAA,EAAAA,GAAS,CACrDwF,GAAI2J,EACJC,QAAS6B,GACT5B,UAAWwC,GACXvC,WAAY8B,GACZ7B,OAAQuC,GACRtC,SAAUuC,GACVtC,UAAWuC,GACXjD,eAjB2B,SAAAmD,GACX,SAAZzM,IACF0K,EAAMM,QAAU0B,WAAWD,EAAM7B,EAAuBI,SAAW,IAEjE1B,GAEFA,EAAe2B,EAAQD,QAASyB,EAEpC,EAUExB,QAASA,EACTjL,QAAqB,SAAZA,EAAqB,KAAOA,GACpC5F,EAAO,CACRkC,SAAU,SAACwE,EAAO6L,GAAU,OAAkBhS,EAAAA,EAAAA,KAAK0N,GAAc9N,EAAAA,EAAAA,GAAS,CACxEK,GAAIT,EACJF,WAAWY,EAAAA,EAAAA,GAAKL,EAAQd,KAAMO,EAAW,CACvC,QAAWO,EAAQ+N,QACnB,QAAWmB,GAA4B,QAAlBlB,GAA2BhO,EAAQiO,QACxD3H,IACF7E,OAAO1B,EAAAA,EAAAA,IAAQqS,EAAAA,EAAAA,GAAC,CAAC,EACd/B,EAAe,WAAa,YAAcrC,GAC1CvM,GACH3B,YAAYC,EAAAA,EAAAA,GAAS,CAAC,EAAGD,EAAY,CACnCwG,MAAAA,IAEF/G,IAAKmR,GACJyB,EAAY,CACbrQ,UAAuB3B,EAAAA,EAAAA,KAAKqO,EAAiB,CAC3C1O,YAAYC,EAAAA,EAAAA,GAAS,CAAC,EAAGD,EAAY,CACnCwG,MAAAA,IAEF7G,UAAWO,EAAQyO,QACnBlP,IAAK4Q,EACLrO,UAAuB3B,EAAAA,EAAAA,KAAKwO,EAAsB,CAChD7O,YAAYC,EAAAA,EAAAA,GAAS,CAAC,EAAGD,EAAY,CACnCwG,MAAAA,IAEF7G,UAAWO,EAAQ4O,aACnB9M,SAAUA,QAGb,IAEP,IAgGAwD,EAAS+M,gBAAiB,EAC1B,O,oBC1XA,IAAIC,EAAgB,WACnB,GAAoB,kBAATC,MAAqBA,KAAM,OAAOA,KAC7C,GAAsB,kBAAXzH,QAAuBA,OAAQ,OAAOA,OACjD,MAAM,IAAI0H,MAAM,kCACjB,EAEAC,EAAOC,QAAW,WACjB,GAAIC,KAAM,OAAOA,KAKjB,GAA0B,kBAAfC,YAA2BA,WAAY,OAAOA,WAKzD,IACCC,OAAOC,eAAeD,OAAOE,UAAW,aAAc,CACrDC,IAAK,WAAc,OAAOL,IAAM,EAChCM,cAAc,GAEhB,CAAE,MAAOhQ,GAGR,OAAOqP,GACR,CACA,IAEC,OAAKY,YAAmBZ,GAEzB,CAAE,eACMO,OAAOE,UAAUG,UACzB,CACD,CA5BkB,E,wBCNlB,IAAIC,EACJ,GAA0B,kBAAfP,WACVO,EAAcP,gBAEd,IACCO,EAAcC,EAAQ,MACvB,CAAE,MAAOnQ,GACT,CAAE,QAED,GADKkQ,GAAiC,qBAAXrI,SAA0BqI,EAAcrI,SAC9DqI,EAAe,MAAM,IAAIX,MAAM,kCACrC,CAGD,IAAIa,EAAkBF,EAAYG,WAAaH,EAAYI,aACvDC,EAAoBJ,EAAQ,OAMhC,SAAS5H,EAAaiI,EAAKC,GAiB1B,OAdIA,EACe,IAAIL,EAAgBI,EAAKC,GAGzB,IAAIL,EAAgBI,EAWxC,CACIJ,GACH,CAAC,aAAc,OAAQ,UAAW,UAAUM,SAAQ,SAASC,GAC5Df,OAAOC,eAAetH,EAAcoI,EAAM,CACzCZ,IAAK,WAAa,OAAOK,EAAgBO,EAAO,GAElD,IAMDnB,EAAOC,QAAU,CACb,aAAiBW,EAAkB7H,EAAe,KAClD,QAAiBgI,E,wBCpDrBf,EAAOC,QAAU,EAAjBD,OAAAA,O","sources":["../node_modules/@mui/material/TableContainer/tableContainerClasses.js","../node_modules/@mui/material/TableContainer/TableContainer.js","screens/Console/Logs/ErrorLogs/LogLine.tsx","screens/Console/Logs/ErrorLogs/ErrorLogs.tsx","../node_modules/@mui/material/Collapse/collapseClasses.js","../node_modules/@mui/material/Collapse/Collapse.js","../node_modules/es5-ext/global.js","../node_modules/websocket/lib/browser.js","../node_modules/websocket/lib/version.js"],"sourcesContent":["import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTableContainerUtilityClass(slot) {\n return generateUtilityClass('MuiTableContainer', slot);\n}\nconst tableContainerClasses = generateUtilityClasses('MuiTableContainer', ['root']);\nexport default tableContainerClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"component\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getTableContainerUtilityClass } from './tableContainerClasses';\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, getTableContainerUtilityClass, classes);\n};\nconst TableContainerRoot = styled('div', {\n name: 'MuiTableContainer',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n width: '100%',\n overflowX: 'auto'\n});\nconst TableContainer = /*#__PURE__*/React.forwardRef(function TableContainer(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTableContainer'\n });\n const {\n className,\n component = 'div'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n component\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(TableContainerRoot, _extends({\n ref: ref,\n as: component,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? TableContainer.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component, normally `Table`.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TableContainer;","// 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, { Fragment, useState } from \"react\";\nimport { DateTime } from \"luxon\";\nimport TableRow from \"@mui/material/TableRow\";\nimport TableCell from \"@mui/material/TableCell\";\nimport Collapse from \"@mui/material/Collapse\";\nimport Box from \"@mui/material/Box\";\nimport Typography from \"@mui/material/Typography\";\nimport { LogMessage } from \"../types\";\nimport { BoxArrowDown, BoxArrowUp, WarnFilledIcon } from \"mds\";\n\nimport getByKey from \"lodash/get\";\n\nconst timestampDisplayFmt = \"HH:mm:ss ZZZZ MM/dd/yyyy\"; //make this same as server logs format.\nconst messageForConsoleMsg = (log: LogMessage) => {\n // regex for terminal colors like e.g. `[31;4m `\n const tColorRegex = /((\\[[0-9;]+m))/g;\n\n let fullMessage = log.ConsoleMsg;\n // remove the 0x1B character\n /* eslint-disable no-control-regex */\n fullMessage = fullMessage.replace(/\\x1B/g, \" \");\n /* eslint-enable no-control-regex */\n // get substring if there was a match for to split what\n // is going to be colored and what not, here we add color\n // only to the first match.\n fullMessage = fullMessage.replace(tColorRegex, \"\");\n return (\n \n \n
    {fullMessage}
    \n \n \n );\n};\nconst messageForError = (log: LogMessage) => {\n const dataStyle = {\n color: \"#C83B51\",\n fontWeight: 400,\n fontFamily: \"monospace\",\n fontSize: \"12px\",\n };\n const labelStyle = {\n fontFamily: \"monospace\",\n fontSize: \"12px\",\n };\n\n const getLogEntryKey = (keyPath: string) => {\n return getByKey(log, keyPath, \"\");\n };\n\n const logTime = DateTime.fromFormat(\n log.time.toString(),\n \"HH:mm:ss z MM/dd/yyyy\",\n {\n zone: \"UTC\",\n },\n );\n return (\n \n
    \n API: \n {getLogEntryKey(\"api.name\")}\n
    \n
    \n Time: \n {logTime.toFormat(timestampDisplayFmt)}\n
    \n
    \n DeploymentID: \n {getLogEntryKey(\"deploymentid\")}\n
    \n
    \n RequestID: \n {getLogEntryKey(\"requestID\")}\n
    \n
    \n RemoteHost: \n {getLogEntryKey(\"remotehost\")}\n
    \n
    \n UserAgent: \n {getLogEntryKey(\"userAgent\")}\n
    \n
    \n Error: \n {getLogEntryKey(\"error.message\")}\n
    \n
    \n
    \n Backtrace: \n
    \n\n {(log.error.source || []).map((e: any, i: number) => {\n return (\n
    \n {i}: \n {e}\n
    \n );\n })}\n
    \n );\n};\n\nconst LogLine = (props: { log: LogMessage }) => {\n const { log } = props;\n const [open, setOpen] = useState(false);\n\n const getLogLineKey = (keyPath: string) => {\n return getByKey(log, keyPath, \"\");\n };\n\n let logMessage = \"\";\n let consoleMsg = getLogLineKey(\"ConsoleMsg\");\n let errMsg = getLogLineKey(\"error.message\");\n if (consoleMsg !== \"\") {\n logMessage = consoleMsg;\n } else if (errMsg !== \"\") {\n logMessage = errMsg;\n }\n // remove any non ascii characters, exclude any control codes\n let titleLogMessage = (logMessage || \"\").replace(/━|┏|┓|┃|┗|┛/g, \"\");\n // remove any non ascii characters, exclude any control codes\n titleLogMessage = titleLogMessage.replace(/([^\\x20-\\x7F])/g, \"\");\n\n // regex for terminal colors like e.g. `[31;4m `\n const tColorRegex = /((\\[[0-9;]+m))/g;\n\n let fullMessage = ;\n if (consoleMsg !== \"\") {\n fullMessage = messageForConsoleMsg(log);\n } else if (errMsg !== \"\") {\n fullMessage = messageForError(log);\n }\n\n titleLogMessage = (titleLogMessage || \"\").replace(tColorRegex, \"\");\n\n const logTime = DateTime.fromFormat(\n log.time.toString(),\n \"HH:mm:ss z MM/dd/yyyy\",\n {\n zone: \"UTC\",\n },\n );\n const dateOfLine = logTime.toJSDate(); //DateTime.fromJSDate(log.time);\n\n let dateStr = {logTime.toFormat(timestampDisplayFmt)};\n\n if (dateOfLine.getFullYear() === 1) {\n dateStr = n/a;\n }\n\n return (\n \n *\": { borderBottom: \"unset\" },\n cursor: \"pointer\",\n borderLeft: \"0\",\n borderRight: \"0\",\n }}\n style={{ backgroundColor: \"#FDFDFD\" }}\n >\n setOpen(!open)}\n style={{ width: 280, color: \"#989898\", fontSize: 12 }}\n >\n \n \n
    {dateStr}
    \n \n \n setOpen(!open)}\n style={{ width: 200, color: \"#989898\", fontSize: 12 }}\n >\n \n {log.errKind}\n \n \n setOpen(!open)}>\n \n \n {titleLogMessage}\n \n \n \n setOpen(!open)} style={{ width: 40 }}>\n \n {open ? : }\n \n \n \n {open ? (\n \n \n \n
    Log Details
    \n
    \n \n \n \n \n \n {fullMessage}\n \n \n \n \n \n
    \n ) : null}\n
    \n );\n};\n\nexport default LogLine;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { IMessageEvent, w3cwebsocket as W3CWebSocket } from \"websocket\";\nimport { Box, Button, Grid, PageLayout, Select } from \"mds\";\nimport { useSelector } from \"react-redux\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { wsProtocol } from \"../../../../utils/wsUtils\";\nimport {\n logMessageReceived,\n logResetMessages,\n setLogsStarted,\n} from \"../logsSlice\";\nimport { setHelpName } from \"../../../../systemSlice\";\nimport SearchBox from \"../../Common/SearchBox\";\nimport api from \"../../../../../src/common/api\";\nimport Paper from \"@mui/material/Paper\";\nimport Table from \"@mui/material/Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableContainer from \"@mui/material/TableContainer\";\nimport LogLine from \"./LogLine\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../../HelpMenu\";\n\nvar c: any = null;\n\nconst ErrorLogs = () => {\n const dispatch = useAppDispatch();\n\n const messages = useSelector((state: AppState) => state.logs.logMessages);\n const logsStarted = useSelector((state: AppState) => state.logs.logsStarted);\n\n const [filter, setFilter] = useState(\"\");\n const [nodes, setNodes] = useState([\"\"]);\n const [selectedNode, setSelectedNode] = useState(\"all\");\n const [selectedUserAgent, setSelectedUserAgent] =\n useState(\"Select user agent\");\n const [userAgents, setUserAgents] = useState([\"All User Agents\"]);\n const [logType, setLogType] = useState(\"all\");\n const [loadingNodes, setLoadingNodes] = useState(false);\n\n const startLogs = () => {\n dispatch(logResetMessages());\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 const wsProt = wsProtocol(url.protocol);\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 c = new W3CWebSocket(\n `${wsProt}://${\n url.hostname\n }:${port}${baseUrl}ws/console/?logType=${logType}&node=${\n selectedNode === \"Select node\" ? \"\" : selectedNode\n }`,\n );\n let interval: any | null = null;\n if (c !== null) {\n c.onopen = () => {\n console.log(\"WebSocket Client Connected\");\n dispatch(setLogsStarted(true));\n c.send(\"ok\");\n interval = setInterval(() => {\n c.send(\"ok\");\n }, 10 * 1000);\n };\n c.onmessage = (message: IMessageEvent) => {\n // console.log(message.data.toString())\n // FORMAT: 00:35:17 UTC 01/01/2021\n\n let m: any = JSON.parse(message.data.toString());\n let isValidEntry = true;\n if (\n m.level === \"\" &&\n m.errKind === \"\" &&\n //@ts-ignore\n m.time === \"00:00:00 UTC 01/01/0001\" &&\n m.ConsoleMsg === \"\" &&\n m.node === \"\"\n ) {\n isValidEntry = false;\n }\n\n m.key = Math.random();\n if (userAgents.indexOf(m.userAgent) < 0 && m.userAgent !== undefined) {\n userAgents.push(m.userAgent);\n setUserAgents(userAgents);\n }\n if (isValidEntry) {\n dispatch(logMessageReceived(m));\n }\n };\n c.onclose = () => {\n clearInterval(interval);\n console.log(\"connection closed by server\");\n dispatch(setLogsStarted(false));\n };\n return () => {\n c.close(1000);\n clearInterval(interval);\n console.log(\"closing websockets\");\n dispatch(setLogsStarted(false));\n };\n }\n };\n\n const stopLogs = () => {\n if (c !== null && c !== undefined) {\n c.close(1000);\n dispatch(setLogsStarted(false));\n }\n };\n\n const filtLow = filter.toLowerCase();\n let filteredMessages = messages.filter((m) => {\n if (\n m.userAgent === selectedUserAgent ||\n selectedUserAgent === \"All User Agents\" ||\n selectedUserAgent === \"Select user agent\"\n ) {\n if (filter !== \"\") {\n if (m.ConsoleMsg.toLowerCase().indexOf(filtLow) >= 0) {\n return true;\n } else if (\n m.error &&\n m.error.source &&\n m.error.source.filter((x) => {\n return x.toLowerCase().indexOf(filtLow) >= 0;\n }).length > 0\n ) {\n return true;\n } else if (\n m.error &&\n m.error.message.toLowerCase().indexOf(filtLow) >= 0\n ) {\n return true;\n } else if (m.api && m.api.name.toLowerCase().indexOf(filtLow) >= 0) {\n return true;\n }\n return false;\n }\n return true;\n } else return false;\n });\n\n useEffect(() => {\n setLoadingNodes(true);\n api\n .invoke(\"GET\", `/api/v1/nodes`)\n .then((res: string[]) => {\n setNodes(res);\n setLoadingNodes(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoadingNodes(false);\n });\n }, []);\n\n useEffect(() => {\n dispatch(setHelpName(\"error_logs\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n } />\n\n \n \n \n {!loadingNodes ? (\n {\n setSelectedNode(value as string);\n }}\n disabled={loadingNodes || logsStarted}\n options={[\n { label: \"All Nodes\", value: \"all\" },\n ...nodes.map((aNode) => ({ label: aNode, value: aNode })),\n ]}\n />\n ) : (\n

    Loading nodes

    \n )}\n
    \n\n \n {\n setLogType(value as string);\n }}\n disabled={loadingNodes || logsStarted}\n options={[\n { value: \"all\", label: \"All Log Types\" },\n {\n value: \"minio\",\n label: \"MinIO\",\n },\n { value: \"application\", label: \"Application\" },\n ]}\n />\n \n \n {userAgents.length > 1 && (\n {\n setSelectedUserAgent(value as string);\n }}\n disabled={userAgents.length < 1 || logsStarted}\n options={userAgents.map((anAgent) => ({\n label: anAgent,\n value: anAgent,\n }))}\n />\n )}\n \n \n {!logsStarted && (\n \n )}\n {logsStarted && (\n \n )}\n
    \n \n {\n setFilter(e);\n }}\n value={filter}\n />\n \n \n \n \n \n \n {filteredMessages.map((m) => {\n return ;\n })}\n \n
    \n {filteredMessages.length === 0 && (\n
    \n No logs to display\n
    \n )}\n
    \n \n
    \n \n
    \n
    \n );\n};\n\nexport default ErrorLogs;\n","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCollapseUtilityClass(slot) {\n return generateUtilityClass('MuiCollapse', slot);\n}\nconst collapseClasses = generateUtilityClasses('MuiCollapse', ['root', 'horizontal', 'vertical', 'entered', 'hidden', 'wrapper', 'wrapperInner']);\nexport default collapseClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"addEndListener\", \"children\", \"className\", \"collapsedSize\", \"component\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"orientation\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport { elementTypeAcceptingRef } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { duration } from '../styles/createTransitions';\nimport { getTransitionProps } from '../transitions/utils';\nimport useTheme from '../styles/useTheme';\nimport { useForkRef } from '../utils';\nimport { getCollapseUtilityClass } from './collapseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n orientation,\n classes\n } = ownerState;\n const slots = {\n root: ['root', `${orientation}`],\n entered: ['entered'],\n hidden: ['hidden'],\n wrapper: ['wrapper', `${orientation}`],\n wrapperInner: ['wrapperInner', `${orientation}`]\n };\n return composeClasses(slots, getCollapseUtilityClass, classes);\n};\nconst CollapseRoot = styled('div', {\n name: 'MuiCollapse',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.orientation], ownerState.state === 'entered' && styles.entered, ownerState.state === 'exited' && !ownerState.in && ownerState.collapsedSize === '0px' && styles.hidden];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n height: 0,\n overflow: 'hidden',\n transition: theme.transitions.create('height')\n}, ownerState.orientation === 'horizontal' && {\n height: 'auto',\n width: 0,\n transition: theme.transitions.create('width')\n}, ownerState.state === 'entered' && _extends({\n height: 'auto',\n overflow: 'visible'\n}, ownerState.orientation === 'horizontal' && {\n width: 'auto'\n}), ownerState.state === 'exited' && !ownerState.in && ownerState.collapsedSize === '0px' && {\n visibility: 'hidden'\n}));\nconst CollapseWrapper = styled('div', {\n name: 'MuiCollapse',\n slot: 'Wrapper',\n overridesResolver: (props, styles) => styles.wrapper\n})(({\n ownerState\n}) => _extends({\n // Hack to get children with a negative margin to not falsify the height computation.\n display: 'flex',\n width: '100%'\n}, ownerState.orientation === 'horizontal' && {\n width: 'auto',\n height: '100%'\n}));\nconst CollapseWrapperInner = styled('div', {\n name: 'MuiCollapse',\n slot: 'WrapperInner',\n overridesResolver: (props, styles) => styles.wrapperInner\n})(({\n ownerState\n}) => _extends({\n width: '100%'\n}, ownerState.orientation === 'horizontal' && {\n width: 'auto',\n height: '100%'\n}));\n\n/**\n * The Collapse transition is used by the\n * [Vertical Stepper](/material-ui/react-stepper/#vertical-stepper) StepContent component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Collapse = /*#__PURE__*/React.forwardRef(function Collapse(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCollapse'\n });\n const {\n addEndListener,\n children,\n className,\n collapsedSize: collapsedSizeProp = '0px',\n component,\n easing,\n in: inProp,\n onEnter,\n onEntered,\n onEntering,\n onExit,\n onExited,\n onExiting,\n orientation = 'vertical',\n style,\n timeout = duration.standard,\n // eslint-disable-next-line react/prop-types\n TransitionComponent = Transition\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n orientation,\n collapsedSize: collapsedSizeProp\n });\n const classes = useUtilityClasses(ownerState);\n const theme = useTheme();\n const timer = React.useRef();\n const wrapperRef = React.useRef(null);\n const autoTransitionDuration = React.useRef();\n const collapsedSize = typeof collapsedSizeProp === 'number' ? `${collapsedSizeProp}px` : collapsedSizeProp;\n const isHorizontal = orientation === 'horizontal';\n const size = isHorizontal ? 'width' : 'height';\n React.useEffect(() => {\n return () => {\n clearTimeout(timer.current);\n };\n }, []);\n const nodeRef = React.useRef(null);\n const handleRef = useForkRef(ref, nodeRef);\n const normalizedTransitionCallback = callback => maybeIsAppearing => {\n if (callback) {\n const node = nodeRef.current;\n\n // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n if (maybeIsAppearing === undefined) {\n callback(node);\n } else {\n callback(node, maybeIsAppearing);\n }\n }\n };\n const getWrapperSize = () => wrapperRef.current ? wrapperRef.current[isHorizontal ? 'clientWidth' : 'clientHeight'] : 0;\n const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n if (wrapperRef.current && isHorizontal) {\n // Set absolute position to get the size of collapsed content\n wrapperRef.current.style.position = 'absolute';\n }\n node.style[size] = collapsedSize;\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n const handleEntering = normalizedTransitionCallback((node, isAppearing) => {\n const wrapperSize = getWrapperSize();\n if (wrapperRef.current && isHorizontal) {\n // After the size is read reset the position back to default\n wrapperRef.current.style.position = '';\n }\n const {\n duration: transitionDuration,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'enter'\n });\n if (timeout === 'auto') {\n const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n node.style.transitionDuration = `${duration2}ms`;\n autoTransitionDuration.current = duration2;\n } else {\n node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : `${transitionDuration}ms`;\n }\n node.style[size] = `${wrapperSize}px`;\n node.style.transitionTimingFunction = transitionTimingFunction;\n if (onEntering) {\n onEntering(node, isAppearing);\n }\n });\n const handleEntered = normalizedTransitionCallback((node, isAppearing) => {\n node.style[size] = 'auto';\n if (onEntered) {\n onEntered(node, isAppearing);\n }\n });\n const handleExit = normalizedTransitionCallback(node => {\n node.style[size] = `${getWrapperSize()}px`;\n if (onExit) {\n onExit(node);\n }\n });\n const handleExited = normalizedTransitionCallback(onExited);\n const handleExiting = normalizedTransitionCallback(node => {\n const wrapperSize = getWrapperSize();\n const {\n duration: transitionDuration,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'exit'\n });\n if (timeout === 'auto') {\n // TODO: rename getAutoHeightDuration to something more generic (width support)\n // Actually it just calculates animation duration based on size\n const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n node.style.transitionDuration = `${duration2}ms`;\n autoTransitionDuration.current = duration2;\n } else {\n node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : `${transitionDuration}ms`;\n }\n node.style[size] = collapsedSize;\n node.style.transitionTimingFunction = transitionTimingFunction;\n if (onExiting) {\n onExiting(node);\n }\n });\n const handleAddEndListener = next => {\n if (timeout === 'auto') {\n timer.current = setTimeout(next, autoTransitionDuration.current || 0);\n }\n if (addEndListener) {\n // Old call signature before `react-transition-group` implemented `nodeRef`\n addEndListener(nodeRef.current, next);\n }\n };\n return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n in: inProp,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n nodeRef: nodeRef,\n timeout: timeout === 'auto' ? null : timeout\n }, other, {\n children: (state, childProps) => /*#__PURE__*/_jsx(CollapseRoot, _extends({\n as: component,\n className: clsx(classes.root, className, {\n 'entered': classes.entered,\n 'exited': !inProp && collapsedSize === '0px' && classes.hidden\n }[state]),\n style: _extends({\n [isHorizontal ? 'minWidth' : 'minHeight']: collapsedSize\n }, style),\n ownerState: _extends({}, ownerState, {\n state\n }),\n ref: handleRef\n }, childProps, {\n children: /*#__PURE__*/_jsx(CollapseWrapper, {\n ownerState: _extends({}, ownerState, {\n state\n }),\n className: classes.wrapper,\n ref: wrapperRef,\n children: /*#__PURE__*/_jsx(CollapseWrapperInner, {\n ownerState: _extends({}, ownerState, {\n state\n }),\n className: classes.wrapperInner,\n children: children\n })\n })\n }))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Collapse.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 * Add a custom transition end trigger. Called with the transitioning DOM\n * node and a done callback. Allows for more fine grained transition end\n * logic. Note: Timeouts are still used as a fallback if provided.\n */\n addEndListener: PropTypes.func,\n /**\n * The content node to be collapsed.\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 width (horizontal) or height (vertical) of the container when collapsed.\n * @default '0px'\n */\n collapsedSize: PropTypes.oneOfType([PropTypes.number, 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: elementTypeAcceptingRef,\n /**\n * The transition timing function.\n * You may specify a single easing or a object containing enter and exit values.\n */\n easing: PropTypes.oneOfType([PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string\n }), PropTypes.string]),\n /**\n * If `true`, the component will transition in.\n */\n in: PropTypes.bool,\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n /**\n * The transition orientation.\n * @default 'vertical'\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n *\n * Set to 'auto' to automatically calculate transition time based on height.\n * @default duration.standard\n */\n timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nCollapse.muiSupportAuto = true;\nexport default Collapse;","var naiveFallback = function () {\n\tif (typeof self === \"object\" && self) return self;\n\tif (typeof window === \"object\" && window) return window;\n\tthrow new Error(\"Unable to resolve global `this`\");\n};\n\nmodule.exports = (function () {\n\tif (this) return this;\n\n\t// Unexpected strict mode (may happen if e.g. bundled into ESM module)\n\n\t// Fallback to standard globalThis if available\n\tif (typeof globalThis === \"object\" && globalThis) return globalThis;\n\n\t// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis\n\t// In all ES5+ engines global object inherits from Object.prototype\n\t// (if you approached one that doesn't please report)\n\ttry {\n\t\tObject.defineProperty(Object.prototype, \"__global__\", {\n\t\t\tget: function () { return this; },\n\t\t\tconfigurable: true\n\t\t});\n\t} catch (error) {\n\t\t// Unfortunate case of updates to Object.prototype being restricted\n\t\t// via preventExtensions, seal or freeze\n\t\treturn naiveFallback();\n\t}\n\ttry {\n\t\t// Safari case (window.__global__ works, but __global__ does not)\n\t\tif (!__global__) return naiveFallback();\n\t\treturn __global__;\n\t} finally {\n\t\tdelete Object.prototype.__global__;\n\t}\n})();\n","var _globalThis;\nif (typeof globalThis === 'object') {\n\t_globalThis = globalThis;\n} else {\n\ttry {\n\t\t_globalThis = require('es5-ext/global');\n\t} catch (error) {\n\t} finally {\n\t\tif (!_globalThis && typeof window !== 'undefined') { _globalThis = window; }\n\t\tif (!_globalThis) { throw new Error('Could not determine global this'); }\n\t}\n}\n\nvar NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;\nvar websocket_version = require('./version');\n\n\n/**\n * Expose a W3C WebSocket class with just one or two arguments.\n */\nfunction W3CWebSocket(uri, protocols) {\n\tvar native_instance;\n\n\tif (protocols) {\n\t\tnative_instance = new NativeWebSocket(uri, protocols);\n\t}\n\telse {\n\t\tnative_instance = new NativeWebSocket(uri);\n\t}\n\n\t/**\n\t * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket\n\t * class). Since it is an Object it will be returned as it is when creating an\n\t * instance of W3CWebSocket via 'new W3CWebSocket()'.\n\t *\n\t * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2\n\t */\n\treturn native_instance;\n}\nif (NativeWebSocket) {\n\t['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) {\n\t\tObject.defineProperty(W3CWebSocket, prop, {\n\t\t\tget: function() { return NativeWebSocket[prop]; }\n\t\t});\n\t});\n}\n\n/**\n * Module exports.\n */\nmodule.exports = {\n 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null,\n 'version' : websocket_version\n};\n","module.exports = require('../package.json').version;\n"],"names":["getTableContainerUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","TableContainerRoot","styled","name","overridesResolver","props","styles","root","width","overflowX","React","inProps","ref","useThemeProps","className","_props$component","component","other","_objectWithoutPropertiesLoose","ownerState","_extends","classes","composeClasses","useUtilityClasses","_jsx","as","clsx","timestampDisplayFmt","log","_useState","useState","_useState2","_slicedToArray","open","setOpen","getLogLineKey","keyPath","getByKey","logMessage","consoleMsg","errMsg","titleLogMessage","replace","fullMessage","Fragment","ConsoleMsg","style","display","tableLayout","paddingLeft","paddingRight","children","whiteSpace","textOverflow","messageForConsoleMsg","dataStyle","color","fontWeight","fontFamily","fontSize","labelStyle","getLogEntryKey","logTime","DateTime","fromFormat","time","toString","zone","_jsxs","toFormat","error","source","map","e","i","messageForError","dateOfLine","toJSDate","dateStr","getFullYear","TableRow","sx","borderBottom","cursor","borderLeft","borderRight","backgroundColor","TableCell","onClick","Box","gap","alignItems","marginRight","lineHeight","WarnFilledIcon","errKind","overflow","justifyContent","borderRadius","fill","BoxArrowUp","BoxArrowDown","paddingBottom","paddingTop","textTransform","verticalAlign","textAlign","Collapse","in","timeout","unmountOnExit","marginTop","colSpan","margin","Typography","background","border","padding","c","dispatch","useAppDispatch","messages","useSelector","state","logs","logMessages","logsStarted","filter","setFilter","_useState3","_useState4","nodes","setNodes","_useState5","_useState6","selectedNode","setSelectedNode","_useState7","_useState8","selectedUserAgent","setSelectedUserAgent","_useState9","_useState10","userAgents","setUserAgents","_useState11","_useState12","logType","setLogType","_useState13","_useState14","loadingNodes","setLoadingNodes","filtLow","toLowerCase","filteredMessages","m","userAgent","indexOf","x","length","message","api","useEffect","invoke","then","res","catch","err","setHelpName","PageHeaderWrapper","label","actions","HelpMenu","PageLayout","Grid","container","item","xs","Select","id","value","onChange","disabled","options","concat","_toConsumableArray","aNode","anAgent","Button","type","variant","logResetMessages","url","URL","window","location","port","wsProt","wsProtocol","protocol","baseUrl","document","baseURI","pathname","W3CWebSocket","hostname","interval","onopen","console","setLogsStarted","send","setInterval","onmessage","JSON","parse","data","isValidEntry","level","node","key","Math","random","undefined","push","logMessageReceived","onclose","clearInterval","close","marginBottom","flexGrow","marginLeft","SearchBox","placeholder","minHeight","height","TableContainer","Paper","Table","TableBody","LogLine","getCollapseUtilityClass","CollapseRoot","orientation","entered","collapsedSize","hidden","_ref","theme","transition","transitions","create","visibility","CollapseWrapper","wrapper","_ref2","CollapseWrapperInner","wrapperInner","_ref3","addEndListener","_props$collapsedSize","collapsedSizeProp","easing","inProp","onEnter","onEntered","onEntering","onExit","onExited","onExiting","_props$orientation","_props$timeout","duration","standard","_props$TransitionComp","TransitionComponent","Transition","slots","useTheme","timer","wrapperRef","autoTransitionDuration","isHorizontal","size","clearTimeout","current","nodeRef","handleRef","useForkRef","normalizedTransitionCallback","callback","maybeIsAppearing","getWrapperSize","handleEnter","isAppearing","position","handleEntering","wrapperSize","_getTransitionProps","getTransitionProps","mode","transitionDuration","transitionTimingFunction","duration2","getAutoHeightDuration","handleEntered","handleExit","handleExited","handleExiting","_getTransitionProps2","next","setTimeout","childProps","_defineProperty","muiSupportAuto","naiveFallback","self","Error","module","exports","this","globalThis","Object","defineProperty","prototype","get","configurable","__global__","_globalThis","require","NativeWebSocket","WebSocket","MozWebSocket","websocket_version","uri","protocols","forEach","prop"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/8521.cf2d093b.chunk.js b/portal-ui/build/static/js/8521.cf2d093b.chunk.js deleted file mode 100644 index 7656b207b6..0000000000 --- a/portal-ui/build/static/js/8521.cf2d093b.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[8521],{98521:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return U}});var o=t(93433),r=t(29439),i=t(72791),s=t(95087),l=t(29945),a=t(78687),c=t(81551),d=t(26824),u=t(69129),h=t(87995),f=t(59114),p=t(81207),x=t(35527),g=t(79836),m=t(53382),v=t(87462),y=t(63366),j=t(63733),w=t(94419),b=t(31402),Z=t(66934),C=t(75878),S=t(21217);function E(e){return(0,S.Z)("MuiTableContainer",e)}(0,C.Z)("MuiTableContainer",["root"]);var T=t(80184),k=["className","component"],A=(0,Z.ZP)("div",{name:"MuiTableContainer",slot:"Root",overridesResolver:function(e,n){return n.root}})({width:"100%",overflowX:"auto"}),L=i.forwardRef((function(e,n){var t=(0,b.Z)({props:e,name:"MuiTableContainer"}),o=t.className,r=t.component,i=void 0===r?"div":r,s=(0,y.Z)(t,k),l=(0,v.Z)({},t,{component:i}),a=function(e){var n=e.classes;return(0,w.Z)({root:["root"]},E,n)}(l);return(0,T.jsx)(A,(0,v.Z)({ref:n,as:i,className:(0,j.Z)(a.root,o),ownerState:l},s))})),R=t(99779),z=t(35855),M=t(53994),F=t(56125),I=t(64554),O=t(20890),_=t(26181),D=t.n(_),N="HH:mm:ss ZZZZ MM/dd/yyyy",H=function(e){var n=e.log,t=(0,i.useState)(!1),o=(0,r.Z)(t,2),s=o[0],a=o[1],c=function(e){return D()(n,e,"")},d="",u=c("ConsoleMsg"),h=c("error.message");""!==u?d=u:""!==h&&(d=h);var f=(d||"").replace(/\u2501|\u250f|\u2513|\u2503|\u2517|\u251b/g,"");f=f.replace(/([^\x20-\x7F])/g,"");var p=(0,T.jsx)(i.Fragment,{});""!==u?p=function(e){var n=e.ConsoleMsg;return n=(n=n.replace(/\x1B/g," ")).replace(/((\[[0-9;]+m))/g,""),(0,T.jsx)("div",{style:{display:"table",tableLayout:"fixed",width:"100%",paddingLeft:10,paddingRight:10},children:(0,T.jsx)("div",{style:{display:"table-cell",whiteSpace:"nowrap",textOverflow:"ellipsis",overflowX:"auto"},children:(0,T.jsx)("pre",{children:n})})})}(n):""!==h&&(p=function(e){var n={color:"#C83B51",fontWeight:400,fontFamily:"monospace",fontSize:"12px"},t={fontFamily:"monospace",fontSize:"12px"},o=function(n){return D()(e,n,"")},r=R.ou.fromFormat(e.time.toString(),"HH:mm:ss z MM/dd/yyyy",{zone:"UTC"});return(0,T.jsxs)(i.Fragment,{children:[(0,T.jsxs)("div",{children:[(0,T.jsx)("b",{style:t,children:"API:\xa0"}),(0,T.jsx)("span",{style:n,children:o("api.name")})]}),(0,T.jsxs)("div",{children:[(0,T.jsx)("b",{style:t,children:"Time:\xa0"}),(0,T.jsx)("span",{style:n,children:r.toFormat(N)})]}),(0,T.jsxs)("div",{children:[(0,T.jsx)("b",{style:t,children:"DeploymentID:\xa0"}),(0,T.jsx)("span",{style:n,children:o("deploymentid")})]}),(0,T.jsxs)("div",{children:[(0,T.jsx)("b",{style:t,children:"RequestID:\xa0"}),(0,T.jsx)("span",{style:n,children:o("requestID")})]}),(0,T.jsxs)("div",{children:[(0,T.jsx)("b",{style:t,children:"RemoteHost:\xa0"}),(0,T.jsx)("span",{style:n,children:o("remotehost")})]}),(0,T.jsxs)("div",{children:[(0,T.jsx)("b",{style:t,children:"UserAgent:\xa0"}),(0,T.jsx)("span",{style:n,children:o("userAgent")})]}),(0,T.jsxs)("div",{children:[(0,T.jsx)("b",{style:t,children:"Error:\xa0"}),(0,T.jsx)("span",{style:n,children:o("error.message")})]}),(0,T.jsx)("br",{}),(0,T.jsx)("div",{children:(0,T.jsx)("b",{style:t,children:"Backtrace:\xa0"})}),(e.error.source||[]).map((function(e,o){return(0,T.jsxs)("div",{children:[(0,T.jsxs)("b",{style:t,children:[o,":\xa0"]}),(0,T.jsx)("span",{style:n,children:e})]})}))]})}(n)),f=(f||"").replace(/((\[[0-9;]+m))/g,"");var x=R.ou.fromFormat(n.time.toString(),"HH:mm:ss z MM/dd/yyyy",{zone:"UTC"}),g=x.toJSDate(),m=(0,T.jsx)(i.Fragment,{children:x.toFormat(N)});return 1===g.getFullYear()&&(m=(0,T.jsx)(i.Fragment,{children:"n/a"})),(0,T.jsxs)(i.Fragment,{children:[(0,T.jsxs)(z.Z,{sx:{"& > *":{borderBottom:"unset"},cursor:"pointer",borderLeft:"0",borderRight:"0"},style:{backgroundColor:"#FDFDFD"},children:[(0,T.jsx)(M.Z,{onClick:function(){return a(!s)},style:{width:280,color:"#989898",fontSize:12},children:(0,T.jsxs)(I.Z,{sx:{display:"flex",gap:1,alignItems:"center","& .min-icon":{width:12,marginRight:1},fontWeight:"bold",lineHeight:1},children:[(0,T.jsx)(l.AeX,{}),(0,T.jsx)("div",{children:m})]})}),(0,T.jsx)(M.Z,{onClick:function(){return a(!s)},style:{width:200,color:"#989898",fontSize:12},children:(0,T.jsx)(I.Z,{sx:{"& .min-icon":{width:12,marginRight:1},fontWeight:"bold",lineHeight:1},children:n.errKind})}),(0,T.jsx)(M.Z,{onClick:function(){return a(!s)},children:(0,T.jsx)("div",{style:{display:"table",tableLayout:"fixed",width:"100%",paddingLeft:10,paddingRight:10},children:(0,T.jsx)("div",{style:{display:"table-cell",whiteSpace:"nowrap",textOverflow:"ellipsis",overflow:"hidden"},children:f})})}),(0,T.jsx)(M.Z,{onClick:function(){return a(!s)},style:{width:40},children:(0,T.jsx)(I.Z,{sx:{"& .min-icon":{display:"flex",alignItems:"center",justifyContent:"center",borderRadius:"2px"},"&:hover .min-icon":{fill:"#eaeaea"}},children:s?(0,T.jsx)(l.Ekf,{}):(0,T.jsx)(l._f_,{})})})]}),s?(0,T.jsxs)(z.Z,{children:[(0,T.jsx)(M.Z,{style:{paddingBottom:0,paddingTop:0,width:200,textTransform:"uppercase",verticalAlign:"top",textAlign:"right",color:"#8399AB",fontWeight:"bold"},children:(0,T.jsx)(F.Z,{in:s,timeout:"auto",unmountOnExit:!0,children:(0,T.jsx)("div",{style:{marginTop:10},children:"Log Details"})})}),(0,T.jsx)(M.Z,{colSpan:2,style:{paddingBottom:0,paddingTop:0},children:(0,T.jsx)(F.Z,{in:s,timeout:"auto",unmountOnExit:!0,children:(0,T.jsx)(I.Z,{sx:{margin:1},children:(0,T.jsx)(O.Z,{style:{background:"#efefef",border:"1px solid #dedede",padding:4,fontSize:14,color:"#666666"},children:p})})})}),(0,T.jsx)(M.Z,{style:{paddingBottom:0,paddingTop:0,width:40}})]}):null]},x.toString())},P=t(47974),W=t(99670),B=null,U=function(){var e=(0,c.TL)(),n=(0,a.v9)((function(e){return e.logs.logMessages})),t=(0,a.v9)((function(e){return e.logs.logsStarted})),v=(0,i.useState)(""),y=(0,r.Z)(v,2),j=y[0],w=y[1],b=(0,i.useState)([""]),Z=(0,r.Z)(b,2),C=Z[0],S=Z[1],E=(0,i.useState)("all"),k=(0,r.Z)(E,2),A=k[0],R=k[1],z=(0,i.useState)("Select user agent"),M=(0,r.Z)(z,2),F=M[0],I=M[1],O=(0,i.useState)(["All User Agents"]),_=(0,r.Z)(O,2),D=_[0],N=_[1],U=(0,i.useState)("all"),G=(0,r.Z)(U,2),X=G[0],q=G[1],J=(0,i.useState)(!1),K=(0,r.Z)(J,2),Q=K[0],V=K[1],Y=j.toLowerCase(),$=n.filter((function(e){return(e.userAgent===F||"All User Agents"===F||"Select user agent"===F)&&(""===j||(e.ConsoleMsg.toLowerCase().indexOf(Y)>=0||(!!(e.error&&e.error.source&&e.error.source.filter((function(e){return e.toLowerCase().indexOf(Y)>=0})).length>0)||(!!(e.error&&e.error.message.toLowerCase().indexOf(Y)>=0)||!!(e.api&&e.api.name.toLowerCase().indexOf(Y)>=0)))))}));return(0,i.useEffect)((function(){V(!0),p.Z.invoke("GET","/api/v1/nodes").then((function(e){S(e),V(!1)})).catch((function(e){V(!1)}))}),[]),(0,i.useEffect)((function(){e((0,h.Sc)("error_logs"))}),[]),(0,T.jsxs)(i.Fragment,{children:[(0,T.jsx)(P.Z,{label:"Logs",actions:(0,T.jsx)(W.Z,{})}),(0,T.jsx)(l.Xgh,{children:(0,T.jsxs)(l.rjZ,{container:!0,sx:{gap:15},children:[(0,T.jsx)(l.rjZ,{item:!0,xs:3,children:Q?(0,T.jsx)("h3",{children:" Loading nodes"}):(0,T.jsx)(l.PhF,{id:"node-selector",name:"node","data-test-id":"node-selector",value:A,onChange:function(e){R(e)},disabled:Q||t,options:[{label:"All Nodes",value:"all"}].concat((0,o.Z)(C.map((function(e){return{label:e,value:e}}))))})}),(0,T.jsx)(l.rjZ,{item:!0,xs:3,children:(0,T.jsx)(l.PhF,{id:"logType",name:"logType","data-test-id":"log-type",value:X,onChange:function(e){q(e)},disabled:Q||t,options:[{value:"all",label:"All Log Types"},{value:"minio",label:"MinIO"},{value:"application",label:"Application"}]})}),(0,T.jsx)(l.rjZ,{item:!0,xs:3,children:D.length>1&&(0,T.jsx)(l.PhF,{id:"userAgent",name:"userAgent","data-test-id":"user-agent",value:F,onChange:function(e){I(e)},disabled:D.length<1||t,options:D.map((function(e){return{label:e,value:e}}))})}),(0,T.jsxs)(l.rjZ,{item:!0,xs:2,sx:{display:"flex",justifyContent:"flex-end"},children:[!t&&(0,T.jsx)(l.zxk,{id:"start-logs",type:"submit",variant:"callAction",disabled:!1,onClick:function(){e((0,u.i1)());var n=new URL(window.location.toString()),t=n.port,o=(0,d.x2)(n.protocol),r=new URL(document.baseURI).pathname;B=new s.w3cwebsocket("".concat(o,"://").concat(n.hostname,":").concat(t).concat(r,"ws/console/?logType=").concat(X,"&node=").concat("Select node"===A?"":A));var i=null;if(null!==B)return B.onopen=function(){console.log("WebSocket Client Connected"),e((0,u.v0)(!0)),B.send("ok"),i=setInterval((function(){B.send("ok")}),1e4)},B.onmessage=function(n){var t=JSON.parse(n.data.toString()),o=!0;""===t.level&&""===t.errKind&&"00:00:00 UTC 01/01/0001"===t.time&&""===t.ConsoleMsg&&""===t.node&&(o=!1),t.key=Math.random(),D.indexOf(t.userAgent)<0&&void 0!==t.userAgent&&(D.push(t.userAgent),N(D)),o&&e((0,u.Qo)(t))},B.onclose=function(){clearInterval(i),console.log("connection closed by server"),e((0,u.v0)(!1))},function(){B.close(1e3),clearInterval(i),console.log("closing websockets"),e((0,u.v0)(!1))}},label:"Start Logs"}),t&&(0,T.jsx)(l.zxk,{id:"stop-logs",type:"button",variant:"callAction",onClick:function(){null!==B&&void 0!==B&&(B.close(1e3),e((0,u.v0)(!1)))},label:"Stop Logs"})]}),(0,T.jsx)(l.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"1rem","& button":{flexGrow:0,marginLeft:8,marginBottom:0}},children:(0,T.jsx)(f.Z,{placeholder:"Filter",onChange:function(e){w(e)},value:j})}),(0,T.jsx)(l.rjZ,{item:!0,xs:12,children:(0,T.jsx)(l.xuv,{id:"logs-container","data-test-id":"logs-list-container",sx:{minHeight:400,height:"calc(100vh - 200px)",overflow:"auto",fontSize:13,borderRadius:4},children:(0,T.jsxs)(L,{component:x.Z,children:[(0,T.jsx)(g.Z,{"aria-label":"collapsible table",children:(0,T.jsx)(m.Z,{children:$.map((function(e){return(0,T.jsx)(H,{log:e})}))})}),0===$.length&&(0,T.jsx)("div",{style:{padding:20,textAlign:"center"},children:"No logs to display"})]})})})]})})]})}},26824:function(e,n,t){"use strict";t.d(n,{HE:function(){return i},V9:function(){return o},ci:function(){return r},x2:function(){return s}});var o=1006,r=1008,i=1011,s=function(e){var n="ws";return"https:"===e&&(n="wss"),n}},56125:function(e,n,t){"use strict";t.d(n,{Z:function(){return S}});var o=t(4942),r=t(63366),i=t(87462),s=t(72791),l=t(63733),a=t(18875),c=t(94419),d=t(66934),u=t(31402),h=t(81314),f=t(4999),p=t(13967),x=t(42071),g=t(75878),m=t(21217);function v(e){return(0,m.Z)("MuiCollapse",e)}(0,g.Z)("MuiCollapse",["root","horizontal","vertical","entered","hidden","wrapper","wrapperInner"]);var y=t(80184),j=["addEndListener","children","className","collapsedSize","component","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","orientation","style","timeout","TransitionComponent"],w=(0,d.ZP)("div",{name:"MuiCollapse",slot:"Root",overridesResolver:function(e,n){var t=e.ownerState;return[n.root,n[t.orientation],"entered"===t.state&&n.entered,"exited"===t.state&&!t.in&&"0px"===t.collapsedSize&&n.hidden]}})((function(e){var n=e.theme,t=e.ownerState;return(0,i.Z)({height:0,overflow:"hidden",transition:n.transitions.create("height")},"horizontal"===t.orientation&&{height:"auto",width:0,transition:n.transitions.create("width")},"entered"===t.state&&(0,i.Z)({height:"auto",overflow:"visible"},"horizontal"===t.orientation&&{width:"auto"}),"exited"===t.state&&!t.in&&"0px"===t.collapsedSize&&{visibility:"hidden"})})),b=(0,d.ZP)("div",{name:"MuiCollapse",slot:"Wrapper",overridesResolver:function(e,n){return n.wrapper}})((function(e){var n=e.ownerState;return(0,i.Z)({display:"flex",width:"100%"},"horizontal"===n.orientation&&{width:"auto",height:"100%"})})),Z=(0,d.ZP)("div",{name:"MuiCollapse",slot:"WrapperInner",overridesResolver:function(e,n){return n.wrapperInner}})((function(e){var n=e.ownerState;return(0,i.Z)({width:"100%"},"horizontal"===n.orientation&&{width:"auto",height:"100%"})})),C=s.forwardRef((function(e,n){var t=(0,u.Z)({props:e,name:"MuiCollapse"}),d=t.addEndListener,g=t.children,m=t.className,C=t.collapsedSize,S=void 0===C?"0px":C,E=t.component,T=t.easing,k=t.in,A=t.onEnter,L=t.onEntered,R=t.onEntering,z=t.onExit,M=t.onExited,F=t.onExiting,I=t.orientation,O=void 0===I?"vertical":I,_=t.style,D=t.timeout,N=void 0===D?h.x9.standard:D,H=t.TransitionComponent,P=void 0===H?a.ZP:H,W=(0,r.Z)(t,j),B=(0,i.Z)({},t,{orientation:O,collapsedSize:S}),U=function(e){var n=e.orientation,t=e.classes,o={root:["root","".concat(n)],entered:["entered"],hidden:["hidden"],wrapper:["wrapper","".concat(n)],wrapperInner:["wrapperInner","".concat(n)]};return(0,c.Z)(o,v,t)}(B),G=(0,p.Z)(),X=s.useRef(),q=s.useRef(null),J=s.useRef(),K="number"===typeof S?"".concat(S,"px"):S,Q="horizontal"===O,V=Q?"width":"height";s.useEffect((function(){return function(){clearTimeout(X.current)}}),[]);var Y=s.useRef(null),$=(0,x.Z)(n,Y),ee=function(e){return function(n){if(e){var t=Y.current;void 0===n?e(t):e(t,n)}}},ne=function(){return q.current?q.current[Q?"clientWidth":"clientHeight"]:0},te=ee((function(e,n){q.current&&Q&&(q.current.style.position="absolute"),e.style[V]=K,A&&A(e,n)})),oe=ee((function(e,n){var t=ne();q.current&&Q&&(q.current.style.position="");var o=(0,f.C)({style:_,timeout:N,easing:T},{mode:"enter"}),r=o.duration,i=o.easing;if("auto"===N){var s=G.transitions.getAutoHeightDuration(t);e.style.transitionDuration="".concat(s,"ms"),J.current=s}else e.style.transitionDuration="string"===typeof r?r:"".concat(r,"ms");e.style[V]="".concat(t,"px"),e.style.transitionTimingFunction=i,R&&R(e,n)})),re=ee((function(e,n){e.style[V]="auto",L&&L(e,n)})),ie=ee((function(e){e.style[V]="".concat(ne(),"px"),z&&z(e)})),se=ee(M),le=ee((function(e){var n=ne(),t=(0,f.C)({style:_,timeout:N,easing:T},{mode:"exit"}),o=t.duration,r=t.easing;if("auto"===N){var i=G.transitions.getAutoHeightDuration(n);e.style.transitionDuration="".concat(i,"ms"),J.current=i}else e.style.transitionDuration="string"===typeof o?o:"".concat(o,"ms");e.style[V]=K,e.style.transitionTimingFunction=r,F&&F(e)}));return(0,y.jsx)(P,(0,i.Z)({in:k,onEnter:te,onEntered:re,onEntering:oe,onExit:ie,onExited:se,onExiting:le,addEndListener:function(e){"auto"===N&&(X.current=setTimeout(e,J.current||0)),d&&d(Y.current,e)},nodeRef:Y,timeout:"auto"===N?null:N},W,{children:function(e,n){return(0,y.jsx)(w,(0,i.Z)({as:E,className:(0,l.Z)(U.root,m,{entered:U.entered,exited:!k&&"0px"===K&&U.hidden}[e]),style:(0,i.Z)((0,o.Z)({},Q?"minWidth":"minHeight",K),_),ownerState:(0,i.Z)({},B,{state:e}),ref:$},n,{children:(0,y.jsx)(b,{ownerState:(0,i.Z)({},B,{state:e}),className:U.wrapper,ref:q,children:(0,y.jsx)(Z,{ownerState:(0,i.Z)({},B,{state:e}),className:U.wrapperInner,children:g})})}))}}))}));C.muiSupportAuto=!0;var S=C},94210:function(e){var n=function(){if("object"===typeof self&&self)return self;if("object"===typeof window&&window)return window;throw new Error("Unable to resolve global `this`")};e.exports=function(){if(this)return this;if("object"===typeof globalThis&&globalThis)return globalThis;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch(e){return n()}try{return __global__||n()}finally{delete Object.prototype.__global__}}()},95087:function(e,n,t){var o;if("object"===typeof globalThis)o=globalThis;else try{o=t(94210)}catch(l){}finally{if(o||"undefined"===typeof window||(o=window),!o)throw new Error("Could not determine global this")}var r=o.WebSocket||o.MozWebSocket,i=t(51496);function s(e,n){return n?new r(e,n):new r(e)}r&&["CONNECTING","OPEN","CLOSING","CLOSED"].forEach((function(e){Object.defineProperty(s,e,{get:function(){return r[e]}})})),e.exports={w3cwebsocket:r?s:null,version:i}},51496:function(e,n,t){e.exports=t(19794).version},19794:function(e){"use strict";e.exports={version:"1.0.34"}}}]); -//# sourceMappingURL=8521.cf2d093b.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/8521.cf2d093b.chunk.js.map b/portal-ui/build/static/js/8521.cf2d093b.chunk.js.map deleted file mode 100644 index 508f6106cb..0000000000 --- a/portal-ui/build/static/js/8521.cf2d093b.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/8521.cf2d093b.chunk.js","mappings":"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","sources":["../node_modules/@mui/material/TableContainer/tableContainerClasses.js","../node_modules/@mui/material/TableContainer/TableContainer.js","screens/Console/Logs/ErrorLogs/LogLine.tsx","screens/Console/Logs/ErrorLogs/ErrorLogs.tsx","utils/wsUtils.ts","../node_modules/@mui/material/Collapse/collapseClasses.js","../node_modules/@mui/material/Collapse/Collapse.js","../node_modules/es5-ext/global.js","../node_modules/websocket/lib/browser.js","../node_modules/websocket/lib/version.js"],"sourcesContent":["import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTableContainerUtilityClass(slot) {\n return generateUtilityClass('MuiTableContainer', slot);\n}\nconst tableContainerClasses = generateUtilityClasses('MuiTableContainer', ['root']);\nexport default tableContainerClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"component\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getTableContainerUtilityClass } from './tableContainerClasses';\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, getTableContainerUtilityClass, classes);\n};\nconst TableContainerRoot = styled('div', {\n name: 'MuiTableContainer',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n width: '100%',\n overflowX: 'auto'\n});\nconst TableContainer = /*#__PURE__*/React.forwardRef(function TableContainer(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTableContainer'\n });\n const {\n className,\n component = 'div'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n component\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(TableContainerRoot, _extends({\n ref: ref,\n as: component,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? TableContainer.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component, normally `Table`.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TableContainer;","// 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, { Fragment, useState } from \"react\";\nimport { DateTime } from \"luxon\";\nimport TableRow from \"@mui/material/TableRow\";\nimport TableCell from \"@mui/material/TableCell\";\nimport Collapse from \"@mui/material/Collapse\";\nimport Box from \"@mui/material/Box\";\nimport Typography from \"@mui/material/Typography\";\nimport { LogMessage } from \"../types\";\nimport { BoxArrowDown, BoxArrowUp, WarnFilledIcon } from \"mds\";\n\nimport getByKey from \"lodash/get\";\n\nconst timestampDisplayFmt = \"HH:mm:ss ZZZZ MM/dd/yyyy\"; //make this same as server logs format.\nconst messageForConsoleMsg = (log: LogMessage) => {\n // regex for terminal colors like e.g. `[31;4m `\n const tColorRegex = /((\\[[0-9;]+m))/g;\n\n let fullMessage = log.ConsoleMsg;\n // remove the 0x1B character\n /* eslint-disable no-control-regex */\n fullMessage = fullMessage.replace(/\\x1B/g, \" \");\n /* eslint-enable no-control-regex */\n // get substring if there was a match for to split what\n // is going to be colored and what not, here we add color\n // only to the first match.\n fullMessage = fullMessage.replace(tColorRegex, \"\");\n return (\n \n \n
    {fullMessage}
    \n \n \n );\n};\nconst messageForError = (log: LogMessage) => {\n const dataStyle = {\n color: \"#C83B51\",\n fontWeight: 400,\n fontFamily: \"monospace\",\n fontSize: \"12px\",\n };\n const labelStyle = {\n fontFamily: \"monospace\",\n fontSize: \"12px\",\n };\n\n const getLogEntryKey = (keyPath: string) => {\n return getByKey(log, keyPath, \"\");\n };\n\n const logTime = DateTime.fromFormat(\n log.time.toString(),\n \"HH:mm:ss z MM/dd/yyyy\",\n {\n zone: \"UTC\",\n },\n );\n return (\n \n
    \n API: \n {getLogEntryKey(\"api.name\")}\n
    \n
    \n Time: \n {logTime.toFormat(timestampDisplayFmt)}\n
    \n
    \n DeploymentID: \n {getLogEntryKey(\"deploymentid\")}\n
    \n
    \n RequestID: \n {getLogEntryKey(\"requestID\")}\n
    \n
    \n RemoteHost: \n {getLogEntryKey(\"remotehost\")}\n
    \n
    \n UserAgent: \n {getLogEntryKey(\"userAgent\")}\n
    \n
    \n Error: \n {getLogEntryKey(\"error.message\")}\n
    \n
    \n
    \n Backtrace: \n
    \n\n {(log.error.source || []).map((e: any, i: number) => {\n return (\n
    \n {i}: \n {e}\n
    \n );\n })}\n
    \n );\n};\n\nconst LogLine = (props: { log: LogMessage }) => {\n const { log } = props;\n const [open, setOpen] = useState(false);\n\n const getLogLineKey = (keyPath: string) => {\n return getByKey(log, keyPath, \"\");\n };\n\n let logMessage = \"\";\n let consoleMsg = getLogLineKey(\"ConsoleMsg\");\n let errMsg = getLogLineKey(\"error.message\");\n if (consoleMsg !== \"\") {\n logMessage = consoleMsg;\n } else if (errMsg !== \"\") {\n logMessage = errMsg;\n }\n // remove any non ascii characters, exclude any control codes\n let titleLogMessage = (logMessage || \"\").replace(/━|┏|┓|┃|┗|┛/g, \"\");\n // remove any non ascii characters, exclude any control codes\n titleLogMessage = titleLogMessage.replace(/([^\\x20-\\x7F])/g, \"\");\n\n // regex for terminal colors like e.g. `[31;4m `\n const tColorRegex = /((\\[[0-9;]+m))/g;\n\n let fullMessage = ;\n if (consoleMsg !== \"\") {\n fullMessage = messageForConsoleMsg(log);\n } else if (errMsg !== \"\") {\n fullMessage = messageForError(log);\n }\n\n titleLogMessage = (titleLogMessage || \"\").replace(tColorRegex, \"\");\n\n const logTime = DateTime.fromFormat(\n log.time.toString(),\n \"HH:mm:ss z MM/dd/yyyy\",\n {\n zone: \"UTC\",\n },\n );\n const dateOfLine = logTime.toJSDate(); //DateTime.fromJSDate(log.time);\n\n let dateStr = {logTime.toFormat(timestampDisplayFmt)};\n\n if (dateOfLine.getFullYear() === 1) {\n dateStr = n/a;\n }\n\n return (\n \n *\": { borderBottom: \"unset\" },\n cursor: \"pointer\",\n borderLeft: \"0\",\n borderRight: \"0\",\n }}\n style={{ backgroundColor: \"#FDFDFD\" }}\n >\n setOpen(!open)}\n style={{ width: 280, color: \"#989898\", fontSize: 12 }}\n >\n \n \n
    {dateStr}
    \n \n \n setOpen(!open)}\n style={{ width: 200, color: \"#989898\", fontSize: 12 }}\n >\n \n {log.errKind}\n \n \n setOpen(!open)}>\n \n \n {titleLogMessage}\n \n \n \n setOpen(!open)} style={{ width: 40 }}>\n \n {open ? : }\n \n \n \n {open ? (\n \n \n \n
    Log Details
    \n
    \n \n \n \n \n \n {fullMessage}\n \n \n \n \n \n
    \n ) : null}\n
    \n );\n};\n\nexport default LogLine;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { IMessageEvent, w3cwebsocket as W3CWebSocket } from \"websocket\";\nimport { Box, Button, Grid, PageLayout, Select } from \"mds\";\nimport { useSelector } from \"react-redux\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { wsProtocol } from \"../../../../utils/wsUtils\";\nimport {\n logMessageReceived,\n logResetMessages,\n setLogsStarted,\n} from \"../logsSlice\";\nimport { setHelpName } from \"../../../../systemSlice\";\nimport SearchBox from \"../../Common/SearchBox\";\nimport api from \"../../../../../src/common/api\";\nimport Paper from \"@mui/material/Paper\";\nimport Table from \"@mui/material/Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableContainer from \"@mui/material/TableContainer\";\nimport LogLine from \"./LogLine\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../../HelpMenu\";\n\nvar c: any = null;\n\nconst ErrorLogs = () => {\n const dispatch = useAppDispatch();\n\n const messages = useSelector((state: AppState) => state.logs.logMessages);\n const logsStarted = useSelector((state: AppState) => state.logs.logsStarted);\n\n const [filter, setFilter] = useState(\"\");\n const [nodes, setNodes] = useState([\"\"]);\n const [selectedNode, setSelectedNode] = useState(\"all\");\n const [selectedUserAgent, setSelectedUserAgent] =\n useState(\"Select user agent\");\n const [userAgents, setUserAgents] = useState([\"All User Agents\"]);\n const [logType, setLogType] = useState(\"all\");\n const [loadingNodes, setLoadingNodes] = useState(false);\n\n const startLogs = () => {\n dispatch(logResetMessages());\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 const wsProt = wsProtocol(url.protocol);\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 c = new W3CWebSocket(\n `${wsProt}://${\n url.hostname\n }:${port}${baseUrl}ws/console/?logType=${logType}&node=${\n selectedNode === \"Select node\" ? \"\" : selectedNode\n }`,\n );\n let interval: any | null = null;\n if (c !== null) {\n c.onopen = () => {\n console.log(\"WebSocket Client Connected\");\n dispatch(setLogsStarted(true));\n c.send(\"ok\");\n interval = setInterval(() => {\n c.send(\"ok\");\n }, 10 * 1000);\n };\n c.onmessage = (message: IMessageEvent) => {\n // console.log(message.data.toString())\n // FORMAT: 00:35:17 UTC 01/01/2021\n\n let m: any = JSON.parse(message.data.toString());\n let isValidEntry = true;\n if (\n m.level === \"\" &&\n m.errKind === \"\" &&\n //@ts-ignore\n m.time === \"00:00:00 UTC 01/01/0001\" &&\n m.ConsoleMsg === \"\" &&\n m.node === \"\"\n ) {\n isValidEntry = false;\n }\n\n m.key = Math.random();\n if (userAgents.indexOf(m.userAgent) < 0 && m.userAgent !== undefined) {\n userAgents.push(m.userAgent);\n setUserAgents(userAgents);\n }\n if (isValidEntry) {\n dispatch(logMessageReceived(m));\n }\n };\n c.onclose = () => {\n clearInterval(interval);\n console.log(\"connection closed by server\");\n dispatch(setLogsStarted(false));\n };\n return () => {\n c.close(1000);\n clearInterval(interval);\n console.log(\"closing websockets\");\n dispatch(setLogsStarted(false));\n };\n }\n };\n\n const stopLogs = () => {\n if (c !== null && c !== undefined) {\n c.close(1000);\n dispatch(setLogsStarted(false));\n }\n };\n\n const filtLow = filter.toLowerCase();\n let filteredMessages = messages.filter((m) => {\n if (\n m.userAgent === selectedUserAgent ||\n selectedUserAgent === \"All User Agents\" ||\n selectedUserAgent === \"Select user agent\"\n ) {\n if (filter !== \"\") {\n if (m.ConsoleMsg.toLowerCase().indexOf(filtLow) >= 0) {\n return true;\n } else if (\n m.error &&\n m.error.source &&\n m.error.source.filter((x) => {\n return x.toLowerCase().indexOf(filtLow) >= 0;\n }).length > 0\n ) {\n return true;\n } else if (\n m.error &&\n m.error.message.toLowerCase().indexOf(filtLow) >= 0\n ) {\n return true;\n } else if (m.api && m.api.name.toLowerCase().indexOf(filtLow) >= 0) {\n return true;\n }\n return false;\n }\n return true;\n } else return false;\n });\n\n useEffect(() => {\n setLoadingNodes(true);\n api\n .invoke(\"GET\", `/api/v1/nodes`)\n .then((res: string[]) => {\n setNodes(res);\n setLoadingNodes(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoadingNodes(false);\n });\n }, []);\n\n useEffect(() => {\n dispatch(setHelpName(\"error_logs\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n } />\n\n \n \n \n {!loadingNodes ? (\n {\n setSelectedNode(value as string);\n }}\n disabled={loadingNodes || logsStarted}\n options={[\n { label: \"All Nodes\", value: \"all\" },\n ...nodes.map((aNode) => ({ label: aNode, value: aNode })),\n ]}\n />\n ) : (\n

    Loading nodes

    \n )}\n
    \n\n \n {\n setLogType(value as string);\n }}\n disabled={loadingNodes || logsStarted}\n options={[\n { value: \"all\", label: \"All Log Types\" },\n {\n value: \"minio\",\n label: \"MinIO\",\n },\n { value: \"application\", label: \"Application\" },\n ]}\n />\n \n \n {userAgents.length > 1 && (\n {\n setSelectedUserAgent(value as string);\n }}\n disabled={userAgents.length < 1 || logsStarted}\n options={userAgents.map((anAgent) => ({\n label: anAgent,\n value: anAgent,\n }))}\n />\n )}\n \n \n {!logsStarted && (\n \n )}\n {logsStarted && (\n \n )}\n
    \n \n {\n setFilter(e);\n }}\n value={filter}\n />\n \n \n \n \n \n \n {filteredMessages.map((m) => {\n return ;\n })}\n \n
    \n {filteredMessages.length === 0 && (\n
    \n No logs to display\n
    \n )}\n
    \n \n
    \n \n
    \n
    \n );\n};\n\nexport default ErrorLogs;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\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 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","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCollapseUtilityClass(slot) {\n return generateUtilityClass('MuiCollapse', slot);\n}\nconst collapseClasses = generateUtilityClasses('MuiCollapse', ['root', 'horizontal', 'vertical', 'entered', 'hidden', 'wrapper', 'wrapperInner']);\nexport default collapseClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"addEndListener\", \"children\", \"className\", \"collapsedSize\", \"component\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"orientation\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport { elementTypeAcceptingRef } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { duration } from '../styles/createTransitions';\nimport { getTransitionProps } from '../transitions/utils';\nimport useTheme from '../styles/useTheme';\nimport { useForkRef } from '../utils';\nimport { getCollapseUtilityClass } from './collapseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n orientation,\n classes\n } = ownerState;\n const slots = {\n root: ['root', `${orientation}`],\n entered: ['entered'],\n hidden: ['hidden'],\n wrapper: ['wrapper', `${orientation}`],\n wrapperInner: ['wrapperInner', `${orientation}`]\n };\n return composeClasses(slots, getCollapseUtilityClass, classes);\n};\nconst CollapseRoot = styled('div', {\n name: 'MuiCollapse',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.orientation], ownerState.state === 'entered' && styles.entered, ownerState.state === 'exited' && !ownerState.in && ownerState.collapsedSize === '0px' && styles.hidden];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n height: 0,\n overflow: 'hidden',\n transition: theme.transitions.create('height')\n}, ownerState.orientation === 'horizontal' && {\n height: 'auto',\n width: 0,\n transition: theme.transitions.create('width')\n}, ownerState.state === 'entered' && _extends({\n height: 'auto',\n overflow: 'visible'\n}, ownerState.orientation === 'horizontal' && {\n width: 'auto'\n}), ownerState.state === 'exited' && !ownerState.in && ownerState.collapsedSize === '0px' && {\n visibility: 'hidden'\n}));\nconst CollapseWrapper = styled('div', {\n name: 'MuiCollapse',\n slot: 'Wrapper',\n overridesResolver: (props, styles) => styles.wrapper\n})(({\n ownerState\n}) => _extends({\n // Hack to get children with a negative margin to not falsify the height computation.\n display: 'flex',\n width: '100%'\n}, ownerState.orientation === 'horizontal' && {\n width: 'auto',\n height: '100%'\n}));\nconst CollapseWrapperInner = styled('div', {\n name: 'MuiCollapse',\n slot: 'WrapperInner',\n overridesResolver: (props, styles) => styles.wrapperInner\n})(({\n ownerState\n}) => _extends({\n width: '100%'\n}, ownerState.orientation === 'horizontal' && {\n width: 'auto',\n height: '100%'\n}));\n\n/**\n * The Collapse transition is used by the\n * [Vertical Stepper](/material-ui/react-stepper/#vertical-stepper) StepContent component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Collapse = /*#__PURE__*/React.forwardRef(function Collapse(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCollapse'\n });\n const {\n addEndListener,\n children,\n className,\n collapsedSize: collapsedSizeProp = '0px',\n component,\n easing,\n in: inProp,\n onEnter,\n onEntered,\n onEntering,\n onExit,\n onExited,\n onExiting,\n orientation = 'vertical',\n style,\n timeout = duration.standard,\n // eslint-disable-next-line react/prop-types\n TransitionComponent = Transition\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n orientation,\n collapsedSize: collapsedSizeProp\n });\n const classes = useUtilityClasses(ownerState);\n const theme = useTheme();\n const timer = React.useRef();\n const wrapperRef = React.useRef(null);\n const autoTransitionDuration = React.useRef();\n const collapsedSize = typeof collapsedSizeProp === 'number' ? `${collapsedSizeProp}px` : collapsedSizeProp;\n const isHorizontal = orientation === 'horizontal';\n const size = isHorizontal ? 'width' : 'height';\n React.useEffect(() => {\n return () => {\n clearTimeout(timer.current);\n };\n }, []);\n const nodeRef = React.useRef(null);\n const handleRef = useForkRef(ref, nodeRef);\n const normalizedTransitionCallback = callback => maybeIsAppearing => {\n if (callback) {\n const node = nodeRef.current;\n\n // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n if (maybeIsAppearing === undefined) {\n callback(node);\n } else {\n callback(node, maybeIsAppearing);\n }\n }\n };\n const getWrapperSize = () => wrapperRef.current ? wrapperRef.current[isHorizontal ? 'clientWidth' : 'clientHeight'] : 0;\n const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n if (wrapperRef.current && isHorizontal) {\n // Set absolute position to get the size of collapsed content\n wrapperRef.current.style.position = 'absolute';\n }\n node.style[size] = collapsedSize;\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n const handleEntering = normalizedTransitionCallback((node, isAppearing) => {\n const wrapperSize = getWrapperSize();\n if (wrapperRef.current && isHorizontal) {\n // After the size is read reset the position back to default\n wrapperRef.current.style.position = '';\n }\n const {\n duration: transitionDuration,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'enter'\n });\n if (timeout === 'auto') {\n const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n node.style.transitionDuration = `${duration2}ms`;\n autoTransitionDuration.current = duration2;\n } else {\n node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : `${transitionDuration}ms`;\n }\n node.style[size] = `${wrapperSize}px`;\n node.style.transitionTimingFunction = transitionTimingFunction;\n if (onEntering) {\n onEntering(node, isAppearing);\n }\n });\n const handleEntered = normalizedTransitionCallback((node, isAppearing) => {\n node.style[size] = 'auto';\n if (onEntered) {\n onEntered(node, isAppearing);\n }\n });\n const handleExit = normalizedTransitionCallback(node => {\n node.style[size] = `${getWrapperSize()}px`;\n if (onExit) {\n onExit(node);\n }\n });\n const handleExited = normalizedTransitionCallback(onExited);\n const handleExiting = normalizedTransitionCallback(node => {\n const wrapperSize = getWrapperSize();\n const {\n duration: transitionDuration,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'exit'\n });\n if (timeout === 'auto') {\n // TODO: rename getAutoHeightDuration to something more generic (width support)\n // Actually it just calculates animation duration based on size\n const duration2 = theme.transitions.getAutoHeightDuration(wrapperSize);\n node.style.transitionDuration = `${duration2}ms`;\n autoTransitionDuration.current = duration2;\n } else {\n node.style.transitionDuration = typeof transitionDuration === 'string' ? transitionDuration : `${transitionDuration}ms`;\n }\n node.style[size] = collapsedSize;\n node.style.transitionTimingFunction = transitionTimingFunction;\n if (onExiting) {\n onExiting(node);\n }\n });\n const handleAddEndListener = next => {\n if (timeout === 'auto') {\n timer.current = setTimeout(next, autoTransitionDuration.current || 0);\n }\n if (addEndListener) {\n // Old call signature before `react-transition-group` implemented `nodeRef`\n addEndListener(nodeRef.current, next);\n }\n };\n return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n in: inProp,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n nodeRef: nodeRef,\n timeout: timeout === 'auto' ? null : timeout\n }, other, {\n children: (state, childProps) => /*#__PURE__*/_jsx(CollapseRoot, _extends({\n as: component,\n className: clsx(classes.root, className, {\n 'entered': classes.entered,\n 'exited': !inProp && collapsedSize === '0px' && classes.hidden\n }[state]),\n style: _extends({\n [isHorizontal ? 'minWidth' : 'minHeight']: collapsedSize\n }, style),\n ownerState: _extends({}, ownerState, {\n state\n }),\n ref: handleRef\n }, childProps, {\n children: /*#__PURE__*/_jsx(CollapseWrapper, {\n ownerState: _extends({}, ownerState, {\n state\n }),\n className: classes.wrapper,\n ref: wrapperRef,\n children: /*#__PURE__*/_jsx(CollapseWrapperInner, {\n ownerState: _extends({}, ownerState, {\n state\n }),\n className: classes.wrapperInner,\n children: children\n })\n })\n }))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Collapse.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 * Add a custom transition end trigger. Called with the transitioning DOM\n * node and a done callback. Allows for more fine grained transition end\n * logic. Note: Timeouts are still used as a fallback if provided.\n */\n addEndListener: PropTypes.func,\n /**\n * The content node to be collapsed.\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 width (horizontal) or height (vertical) of the container when collapsed.\n * @default '0px'\n */\n collapsedSize: PropTypes.oneOfType([PropTypes.number, 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: elementTypeAcceptingRef,\n /**\n * The transition timing function.\n * You may specify a single easing or a object containing enter and exit values.\n */\n easing: PropTypes.oneOfType([PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string\n }), PropTypes.string]),\n /**\n * If `true`, the component will transition in.\n */\n in: PropTypes.bool,\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n /**\n * The transition orientation.\n * @default 'vertical'\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n *\n * Set to 'auto' to automatically calculate transition time based on height.\n * @default duration.standard\n */\n timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nCollapse.muiSupportAuto = true;\nexport default Collapse;","var naiveFallback = function () {\n\tif (typeof self === \"object\" && self) return self;\n\tif (typeof window === \"object\" && window) return window;\n\tthrow new Error(\"Unable to resolve global `this`\");\n};\n\nmodule.exports = (function () {\n\tif (this) return this;\n\n\t// Unexpected strict mode (may happen if e.g. bundled into ESM module)\n\n\t// Fallback to standard globalThis if available\n\tif (typeof globalThis === \"object\" && globalThis) return globalThis;\n\n\t// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis\n\t// In all ES5+ engines global object inherits from Object.prototype\n\t// (if you approached one that doesn't please report)\n\ttry {\n\t\tObject.defineProperty(Object.prototype, \"__global__\", {\n\t\t\tget: function () { return this; },\n\t\t\tconfigurable: true\n\t\t});\n\t} catch (error) {\n\t\t// Unfortunate case of updates to Object.prototype being restricted\n\t\t// via preventExtensions, seal or freeze\n\t\treturn naiveFallback();\n\t}\n\ttry {\n\t\t// Safari case (window.__global__ works, but __global__ does not)\n\t\tif (!__global__) return naiveFallback();\n\t\treturn __global__;\n\t} finally {\n\t\tdelete Object.prototype.__global__;\n\t}\n})();\n","var _globalThis;\nif (typeof globalThis === 'object') {\n\t_globalThis = globalThis;\n} else {\n\ttry {\n\t\t_globalThis = require('es5-ext/global');\n\t} catch (error) {\n\t} finally {\n\t\tif (!_globalThis && typeof window !== 'undefined') { _globalThis = window; }\n\t\tif (!_globalThis) { throw new Error('Could not determine global this'); }\n\t}\n}\n\nvar NativeWebSocket = _globalThis.WebSocket || _globalThis.MozWebSocket;\nvar websocket_version = require('./version');\n\n\n/**\n * Expose a W3C WebSocket class with just one or two arguments.\n */\nfunction W3CWebSocket(uri, protocols) {\n\tvar native_instance;\n\n\tif (protocols) {\n\t\tnative_instance = new NativeWebSocket(uri, protocols);\n\t}\n\telse {\n\t\tnative_instance = new NativeWebSocket(uri);\n\t}\n\n\t/**\n\t * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket\n\t * class). Since it is an Object it will be returned as it is when creating an\n\t * instance of W3CWebSocket via 'new W3CWebSocket()'.\n\t *\n\t * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2\n\t */\n\treturn native_instance;\n}\nif (NativeWebSocket) {\n\t['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) {\n\t\tObject.defineProperty(W3CWebSocket, prop, {\n\t\t\tget: function() { return NativeWebSocket[prop]; }\n\t\t});\n\t});\n}\n\n/**\n * Module exports.\n */\nmodule.exports = {\n 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null,\n 'version' : websocket_version\n};\n","module.exports = require('../package.json').version;\n"],"names":["getTableContainerUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","TableContainerRoot","styled","name","overridesResolver","props","styles","root","width","overflowX","React","inProps","ref","useThemeProps","className","_props$component","component","other","_objectWithoutPropertiesLoose","ownerState","_extends","classes","composeClasses","useUtilityClasses","_jsx","as","clsx","timestampDisplayFmt","log","_useState","useState","_useState2","_slicedToArray","open","setOpen","getLogLineKey","keyPath","getByKey","logMessage","consoleMsg","errMsg","titleLogMessage","replace","fullMessage","Fragment","ConsoleMsg","style","display","tableLayout","paddingLeft","paddingRight","children","whiteSpace","textOverflow","messageForConsoleMsg","dataStyle","color","fontWeight","fontFamily","fontSize","labelStyle","getLogEntryKey","logTime","DateTime","fromFormat","time","toString","zone","_jsxs","toFormat","error","source","map","e","i","messageForError","dateOfLine","toJSDate","dateStr","getFullYear","TableRow","sx","borderBottom","cursor","borderLeft","borderRight","backgroundColor","TableCell","onClick","Box","gap","alignItems","marginRight","lineHeight","WarnFilledIcon","errKind","overflow","justifyContent","borderRadius","fill","BoxArrowUp","BoxArrowDown","paddingBottom","paddingTop","textTransform","verticalAlign","textAlign","Collapse","in","timeout","unmountOnExit","marginTop","colSpan","margin","Typography","background","border","padding","c","dispatch","useAppDispatch","messages","useSelector","state","logs","logMessages","logsStarted","filter","setFilter","_useState3","_useState4","nodes","setNodes","_useState5","_useState6","selectedNode","setSelectedNode","_useState7","_useState8","selectedUserAgent","setSelectedUserAgent","_useState9","_useState10","userAgents","setUserAgents","_useState11","_useState12","logType","setLogType","_useState13","_useState14","loadingNodes","setLoadingNodes","filtLow","toLowerCase","filteredMessages","m","userAgent","indexOf","x","length","message","api","useEffect","invoke","then","res","catch","err","setHelpName","PageHeaderWrapper","label","actions","HelpMenu","PageLayout","Grid","container","item","xs","Select","id","value","onChange","disabled","options","concat","_toConsumableArray","aNode","anAgent","Button","type","variant","logResetMessages","url","URL","window","location","port","wsProt","wsProtocol","protocol","baseUrl","document","baseURI","pathname","W3CWebSocket","hostname","interval","onopen","console","setLogsStarted","send","setInterval","onmessage","JSON","parse","data","isValidEntry","level","node","key","Math","random","undefined","push","logMessageReceived","onclose","clearInterval","close","marginBottom","flexGrow","marginLeft","SearchBox","placeholder","minHeight","height","TableContainer","Paper","Table","TableBody","LogLine","WSCloseAbnormalClosure","WSClosePolicyViolation","WSCloseInternalServerErr","getCollapseUtilityClass","CollapseRoot","orientation","entered","collapsedSize","hidden","_ref","theme","transition","transitions","create","visibility","CollapseWrapper","wrapper","_ref2","CollapseWrapperInner","wrapperInner","_ref3","addEndListener","_props$collapsedSize","collapsedSizeProp","easing","inProp","onEnter","onEntered","onEntering","onExit","onExited","onExiting","_props$orientation","_props$timeout","duration","standard","_props$TransitionComp","TransitionComponent","Transition","slots","useTheme","timer","wrapperRef","autoTransitionDuration","isHorizontal","size","clearTimeout","current","nodeRef","handleRef","useForkRef","normalizedTransitionCallback","callback","maybeIsAppearing","getWrapperSize","handleEnter","isAppearing","position","handleEntering","wrapperSize","_getTransitionProps","getTransitionProps","mode","transitionDuration","transitionTimingFunction","duration2","getAutoHeightDuration","handleEntered","handleExit","handleExited","handleExiting","_getTransitionProps2","next","setTimeout","childProps","_defineProperty","muiSupportAuto","naiveFallback","self","Error","module","exports","this","globalThis","Object","defineProperty","prototype","get","configurable","__global__","_globalThis","require","NativeWebSocket","WebSocket","MozWebSocket","websocket_version","uri","protocols","forEach","prop"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/8833.54277740.chunk.js b/portal-ui/build/static/js/8833.50d1395d.chunk.js similarity index 99% rename from portal-ui/build/static/js/8833.54277740.chunk.js rename to portal-ui/build/static/js/8833.50d1395d.chunk.js index 835ad777ce..ff59fa7f15 100644 --- a/portal-ui/build/static/js/8833.54277740.chunk.js +++ b/portal-ui/build/static/js/8833.50d1395d.chunk.js @@ -1,2 +1,2 @@ -(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[8833],{47986:function(e,t,n){"use strict";var i=n(4942),r=(n(72791),n(29945)),o=n(80184);t.Z=function(e){var t=e.iconComponent,n=e.entity;return(0,o.jsx)(r.rjZ,{container:!0,children:(0,o.jsx)(r.rjZ,{item:!0,xs:12,children:(0,o.jsx)(r.KfX,{title:"".concat(n," not available"),iconComponent:t,help:(0,o.jsxs)(r.xuv,{sx:(0,i.Z)({fontSize:"14px"},"@media (max-width: ".concat(r.Egj.sm,"px)"),{display:"flex",flexFlow:"column"}),children:[(0,o.jsx)("span",{children:"This feature is not available for a single-disk setup.\xa0"}),(0,o.jsxs)("span",{children:["Please deploy a server in"," ",(0,o.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:"noopener",children:"Distributed Mode"})," ","to use this feature."]})]})})})})}},21435:function(e,t,n){"use strict";var i=n(29439),r=n(1413),o=n(72791),a=n(20817),s=n(61889),l=n(30829),c=n(20068),u=n(13400),d=n(20165),p=n(3579),x=n(11135),f=n(72455),m=n(25787),h=n(23814),v=n(29945),j=n(63733),b=n(80184),Z=(0,f.Z)((function(e){return(0,x.Z)((0,r.Z)({},h.gM))}));function g(e){var t=Z();return(0,b.jsx)(a.Z,(0,r.Z)({InputProps:{classes:t}},e))}t.Z=(0,m.Z)((function(e){return(0,x.Z)((0,r.Z)((0,r.Z)((0,r.Z)({},h.YI),h.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}}}))}))((function(e){var t=e.label,n=e.onChange,a=e.value,x=e.id,f=e.name,m=e.type,h=void 0===m?"text":m,Z=e.autoComplete,y=void 0===Z?"off":Z,w=e.disabled,k=void 0!==w&&w,C=e.multiline,F=void 0!==C&&C,S=e.tooltip,T=void 0===S?"":S,z=e.index,I=void 0===z?0:z,N=e.error,_=void 0===N?"":N,L=e.required,P=void 0!==L&&L,E=e.placeholder,M=void 0===E?"":E,V=e.min,R=e.max,B=e.overlayId,W=e.overlayIcon,D=void 0===W?null:W,A=e.overlayObject,O=void 0===A?null:A,q=e.extraInputProps,K=void 0===q?{}:q,G=e.overlayAction,Y=e.noLabelMinWidth,H=void 0!==Y&&Y,X=e.pattern,U=void 0===X?"":X,J=e.autoFocus,Q=void 0!==J&&J,$=e.classes,ee=e.className,te=void 0===ee?"":ee,ne=e.onKeyPress,ie=e.onFocus,re=e.onPaste,oe=(0,r.Z)({"data-index":I},K),ae=(0,o.useState)(!1),se=(0,i.Z)(ae,2),le=se[0],ce=se[1];"number"===h&&V&&(oe.min=V),"number"===h&&R&&(oe.max=R),""!==U&&(oe.pattern=U);var ue=D,de=h;return"password"===h&&null===D&&(ue=le?(0,b.jsx)(d.Z,{}):(0,b.jsx)(p.Z,{}),de=le?"text":"password"),(0,b.jsx)(o.Fragment,{children:(0,b.jsxs)(s.ZP,{container:!0,className:(0,j.Z)(""!==te?te:"",""!==_?$.errorInField:$.inputBoxContainer),children:[""!==t&&(0,b.jsxs)(l.Z,{htmlFor:x,className:H?$.noMinWidthLabel:$.inputLabel,children:[(0,b.jsxs)("span",{children:[t,P?"*":""]}),""!==T&&(0,b.jsx)("div",{className:$.tooltipContainer,children:(0,b.jsx)(c.Z,{title:T,placement:"top-start",children:(0,b.jsx)("div",{className:$.tooltip,children:(0,b.jsx)(v.byK,{})})})})]}),(0,b.jsxs)("div",{className:$.textBoxContainer,children:[(0,b.jsx)(g,{id:x,name:f,fullWidth:!0,value:a,autoFocus:Q,disabled:k,onChange:n,type:de,multiline:F,autoComplete:y,inputProps:oe,error:""!==_,helperText:_,placeholder:M,className:$.inputRebase,onKeyPress:ne,onFocus:ie,onPaste:re}),ue&&(0,b.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==t?"withLabel":""),children:(0,b.jsx)(u.Z,{onClick:G?function(){G()}:function(){return ce(!le)},id:B,size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:ue})}),O&&(0,b.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==t?"withLabel":""),children:O})]})]})})}))},58833:function(e,t,n){"use strict";n.r(t);var i=n(74165),r=n(15861),o=n(29439),a=n(4942),s=n(72791),l=n(29945),c=n(57689),u=n(78687),d=n(45248),p=n(87995),x=n(81551),f=n(9478),m=n(56028),h=n(47986),v=n(73669),j=n(31460),b=n(47974),Z=n(99670),g=n(80184),y=function(e){var t=e.volumeVal,n=e.pathVal;return(0,g.jsx)(l.xuv,{className:"code-block-container",children:(0,g.jsxs)(l.xuv,{className:"example-code-block",children:[(0,g.jsxs)(l.xuv,{sx:(0,a.Z)({display:"flex",marginBottom:"5px",flexFlow:"row"},"@media (max-width: ".concat(l.Egj.sm,"px)"),{flexFlow:"column"}),children:[(0,g.jsx)("label",{children:"Volume/bucket Name :"})," ",(0,g.jsx)("code",{children:t})]}),(0,g.jsxs)(l.xuv,{sx:(0,a.Z)({display:"flex",flexFlow:"row"},"@media (max-width: ".concat(l.Egj.sm,"px)"),{flexFlow:"column"}),children:[(0,g.jsx)("label",{children:"Path : "}),(0,g.jsx)("code",{children:n})]})]})})};t.default=function(){var e=(0,x.TL)(),t=(0,c.s0)(),n=(0,u.v9)(p.N5),w=(0,s.useState)(""),k=(0,o.Z)(w,2),C=k[0],F=k[1],S=(0,s.useState)(""),T=(0,o.Z)(S,2),z=T[0],I=T[1],N=(0,s.useState)(!0),_=(0,o.Z)(N,2),L=_[0],P=_[1],E=(0,s.useState)(""),M=(0,o.Z)(E,2),V=M[0],R=M[1],B=(0,s.useState)(""),W=(0,o.Z)(B,2),D=W[0],A=W[1],O=(0,s.useState)(!1),q=(0,o.Z)(O,2),K=q[0],G=q[1],Y=(0,s.useState)(""),H=(0,o.Z)(Y,2),X=H[0],U=H[1],J=(0,s.useState)(""),Q=(0,o.Z)(J,2),$=Q[0],ee=Q[1],te=(0,f.Yc)();(0,s.useEffect)((function(){var e,t;(e=C.trim().length>0)?"/"===C.slice(0,1)&&(e=!1,U("Volume/Bucket name cannot start with /")):U("This field is required"),t=z.trim().length>0,z?"/"===z.slice(0,1)&&(t=!1,ee("Path cannot start with /")):ee("This field is required");var n=e&&t;e&&U(""),t&&ee(""),G(n)}),[C,z]);var ne=function(){var e=(0,r.Z)((0,i.Z)().mark((function e(t){return(0,i.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(t,{method:"GET"});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),ie=function(){var t=(0,r.Z)((0,i.Z)().mark((function t(){var n,o,a;return(0,i.Z)().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:n=(0,d.LL)(z),o=(0,d.LL)(C),a="/api/v1/admin/inspect?volume=".concat(o,"&file=").concat(n,"&encrypt=").concat(L),ne(a).then(function(){var t=(0,r.Z)((0,i.Z)().mark((function t(n){var r,o,a,s;return(0,i.Z)().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n.ok){t.next=5;break}return t.next=3,n.json();case 3:r=t.sent,e((0,p.Ih)({errorMessage:r.message,detailedError:r.code}));case 5:return t.next=7,n.blob();case 7:o=t.sent,a=n.headers.get("content-disposition").split('"')[1],s=(0,d.Do)(a)||"",(0,d.zZ)(o,a),A(a),R(s);case 13:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()).catch((function(t){e((0,p.Ih)(t))}));case 4:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}(),re=function(){F(""),I(""),P(!0)};return(0,s.useEffect)((function(){e((0,p.Sc)("inspect"))}),[]),(0,g.jsxs)(s.Fragment,{children:[(0,g.jsx)(b.Z,{label:"Inspect",actions:(0,g.jsx)(Z.Z,{})}),(0,g.jsxs)(l.Xgh,{children:[!te&&(0,g.jsx)(j.Z,{compactMode:!0}),n?(0,g.jsx)(l.ltY,{helpBox:(0,g.jsx)(l.KfX,{title:"Learn more about the Inspect feature",iconComponent:(0,g.jsx)(l.Gp8,{}),help:(0,g.jsxs)(s.Fragment,{children:[(0,g.jsx)(l.xuv,{sx:{marginTop:"16px",fontWeight:600,fontStyle:"italic",fontSize:"14px"},children:"Examples:"}),(0,g.jsxs)(l.xuv,{sx:{display:"flex",flexFlow:"column",fontSize:"14px",flex:"2","& .step-row":{fontSize:"14px",display:"flex",marginTop:"15px",marginBottom:"15px","&.step-text":{fontWeight:400},"&:before":{content:"' '",height:"7px",width:"7px",backgroundColor:"#2781B0",marginRight:"10px",marginTop:"7px",flexShrink:0}},"& .code-block-container":{flex:"1",marginTop:"15px",marginLeft:"35px","& input":{color:"#737373"}},"& .example-code-block label":(0,a.Z)({display:"inline-block",width:160,fontWeight:600,fontSize:14},"@media (max-width: ".concat(l.Egj.sm,"px)"),{width:"100%"}),"& code":(0,a.Z)({width:100,paddingLeft:"10px",fontFamily:"monospace",paddingRight:"10px",paddingTop:"3px",paddingBottom:"3px",borderRadius:"2px",border:"1px solid #eaeaea",fontSize:"10px",fontWeight:500},"@media (max-width: ".concat(l.Egj.sm,"px)"),{width:"100%"}),"& .spacer":{marginBottom:"5px"}},children:[(0,g.jsxs)(l.xuv,{children:[(0,g.jsx)(l.xuv,{className:"step-row",children:(0,g.jsx)("div",{className:"step-text",children:"To Download 'xl.meta' for a specific object from all the drives in a zip file:"})}),(0,g.jsx)(y,{pathVal:"test*/xl.meta",volumeVal:"test-bucket"})]}),(0,g.jsxs)(l.xuv,{children:[(0,g.jsx)(l.xuv,{className:"step-row",children:(0,g.jsx)("div",{className:"step-text",children:"To Download all constituent parts for a specific object, and optionally encrypt the downloaded zip:"})}),(0,g.jsx)(y,{pathVal:"test*/xl.meta",volumeVal:"test*/*/part.*"})]}),(0,g.jsxs)(l.xuv,{children:[(0,g.jsx)(l.xuv,{className:"step-row",children:(0,g.jsxs)("div",{className:"step-text",children:["To Download recursively all objects at a prefix.",(0,g.jsx)("br",{}),"NOTE: This can be an expensive operation use it with caution."]})}),(0,g.jsx)(y,{pathVal:"test*/xl.meta",volumeVal:"test/**"})]})]}),(0,g.jsxs)(l.xuv,{sx:{marginTop:"30px",marginLeft:"15px",fontSize:"14px"},children:["You can learn more at our"," ",(0,g.jsx)("a",{href:"https://github.com/minio/minio/tree/master/docs/debugging?ref=con",target:"_blank",rel:"noopener",children:"documentation"}),"."]})]})}),children:(0,g.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),te?ie():t("/support/register")},children:[(0,g.jsx)(l.Wzg,{id:"inspect_volume",name:"inspect_volume",onChange:function(e){F(e.target.value)},label:"Volume or Bucket Name",value:C,error:X,required:!0,placeholder:"test-bucket",disabled:!te}),(0,g.jsx)(l.Wzg,{id:"inspect_path",name:"inspect_path",error:$,onChange:function(e){I(e.target.value)},label:"File or Path to inspect",value:z,required:!0,placeholder:"test*/xl.meta",disabled:!te}),(0,g.jsx)(l.rsf,{label:"Encrypt",indicatorLabels:["True","False"],checked:L,value:"true",id:"inspect_encrypt",name:"inspect_encrypt",onChange:function(){P(!L)},disabled:!te}),(0,g.jsxs)(l.xuv,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end",marginTop:"55px"},children:[(0,g.jsx)(l.zxk,{id:"inspect-clear-button",style:{marginRight:"15px"},type:"button",variant:"regular","data-test-id":"inspect-clear-button",onClick:re,label:"Clear",disabled:!te}),(0,g.jsx)(l.zxk,{id:"inspect-start",type:"submit",variant:te?"callAction":"regular","data-test-id":"inspect-submit-button",disabled:!K||!te,label:"Inspect"})]})]})}):(0,g.jsx)(h.Z,{iconComponent:(0,g.jsx)(l.Gp8,{}),entity:"Inspect"}),V?(0,g.jsx)(m.Z,{modalOpen:!0,title:"Inspect Decryption Key",onClose:function(){(0,d.kT)(D),R(""),re()},titleIcon:(0,g.jsx)(l.tvm,{}),children:(0,g.jsxs)(s.Fragment,{children:[(0,g.jsxs)(l.xuv,{children:["This will be displayed only once. It cannot be recovered.",(0,g.jsx)("br",{}),"Use secure medium to share this key."]}),(0,g.jsx)("form",{noValidate:!0,onSubmit:function(){return!1},children:(0,g.jsx)(v.Z,{value:V})})]})}):null]})]})}},73669:function(e,t,n){"use strict";var i=n(29439),r=n(72791),o=n(64554),a=n(29945),s=n(21435),l=n(80184);t.Z=function(e){var t=e.value,n=(0,r.useState)(!1),c=(0,i.Z)(n,2),u=c[0],d=c[1];return(0,l.jsxs)(o.Z,{sx:{display:"flex",alignItems:"center",flexFlow:{sm:"row",xs:"column"}},children:[(0,l.jsx)(s.Z,{id:"inspect-dec-key",name:"inspect-dec-key",placeholder:"",label:"",type:u?"text":"password",onChange:function(){},value:t,overlayIcon:(0,l.jsx)(a.TIy,{}),extraInputProps:{readOnly:!0},overlayAction:function(){return navigator.clipboard.writeText(t)}}),(0,l.jsx)(a.zxk,{id:"show-hide-key",style:{marginLeft:"10px"},variant:"callAction",onClick:function(){return d(!u)},label:"Show/Hide"})]})}},3579:function(e,t,n){"use strict";var i=n(64836);t.Z=void 0;var r=i(n(45649)),o=n(80184),a=(0,r.default)((0,o.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"}),"RemoveRedEye");t.Z=a},20165:function(e,t,n){"use strict";var i=n(64836);t.Z=void 0;var r=i(n(45649)),o=n(80184),a=(0,r.default)((0,o.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}),"VisibilityOff");t.Z=a},45649:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return i.createSvgIcon}});var i=n(28610)},31260:function(e,t,n){"use strict";var i=n(78949);t.Z=i.Z},28610:function(e,t,n){"use strict";n.r(t),n.d(t,{capitalize:function(){return r.Z},createChainedFunction:function(){return o.Z},createSvgIcon:function(){return a.Z},debounce:function(){return s.Z},deprecatedPropType:function(){return l},isMuiElement:function(){return c.Z},ownerDocument:function(){return u.Z},ownerWindow:function(){return d.Z},requirePropFactory:function(){return p},setRef:function(){return x},unstable_ClassNameGenerator:function(){return g},unstable_useEnhancedEffect:function(){return f.Z},unstable_useId:function(){return m.Z},unsupportedProp:function(){return h},useControlled:function(){return v.Z},useEventCallback:function(){return j.Z},useForkRef:function(){return b.Z},useIsFocusVisible:function(){return Z.Z}});var i=n(55902),r=n(14036),o=n(31260),a=n(76189),s=n(83199);var l=function(e,t){return function(){return null}},c=n(19103),u=n(98301),d=n(17602);n(87462);var p=function(e,t){return function(){return null}},x=n(62971).Z,f=n(40162),m=n(67384);var h=function(e,t,n,i,r){return null},v=n(98278),j=n(89683),b=n(42071),Z=n(23031),g={configure:function(e){i.Z.configure(e)}}},64836:function(e){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); -//# sourceMappingURL=8833.54277740.chunk.js.map \ No newline at end of file +(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[8833],{47986:function(e,t,n){"use strict";var i=n(4942),r=(n(72791),n(29945)),o=n(80184);t.Z=function(e){var t=e.iconComponent,n=e.entity;return(0,o.jsx)(r.rjZ,{container:!0,children:(0,o.jsx)(r.rjZ,{item:!0,xs:12,children:(0,o.jsx)(r.KfX,{title:"".concat(n," not available"),iconComponent:t,help:(0,o.jsxs)(r.xuv,{sx:(0,i.Z)({fontSize:"14px"},"@media (max-width: ".concat(r.Egj.sm,"px)"),{display:"flex",flexFlow:"column"}),children:[(0,o.jsx)("span",{children:"This feature is not available for a single-disk setup.\xa0"}),(0,o.jsxs)("span",{children:["Please deploy a server in"," ",(0,o.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:"noopener",children:"Distributed Mode"})," ","to use this feature."]})]})})})})}},21435:function(e,t,n){"use strict";var i=n(29439),r=n(1413),o=n(72791),a=n(20817),s=n(61889),l=n(30829),c=n(20068),u=n(13400),d=n(20165),p=n(3579),x=n(11135),f=n(72455),m=n(25787),h=n(23814),v=n(29945),j=n(63733),b=n(80184),Z=(0,f.Z)((function(e){return(0,x.Z)((0,r.Z)({},h.gM))}));function g(e){var t=Z();return(0,b.jsx)(a.Z,(0,r.Z)({InputProps:{classes:t}},e))}t.Z=(0,m.Z)((function(e){return(0,x.Z)((0,r.Z)((0,r.Z)((0,r.Z)({},h.YI),h.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}}}))}))((function(e){var t=e.label,n=e.onChange,a=e.value,x=e.id,f=e.name,m=e.type,h=void 0===m?"text":m,Z=e.autoComplete,y=void 0===Z?"off":Z,w=e.disabled,k=void 0!==w&&w,C=e.multiline,F=void 0!==C&&C,S=e.tooltip,T=void 0===S?"":S,z=e.index,I=void 0===z?0:z,N=e.error,_=void 0===N?"":N,L=e.required,P=void 0!==L&&L,E=e.placeholder,M=void 0===E?"":E,V=e.min,R=e.max,B=e.overlayId,W=e.overlayIcon,D=void 0===W?null:W,A=e.overlayObject,O=void 0===A?null:A,q=e.extraInputProps,K=void 0===q?{}:q,G=e.overlayAction,Y=e.noLabelMinWidth,H=void 0!==Y&&Y,X=e.pattern,U=void 0===X?"":X,J=e.autoFocus,Q=void 0!==J&&J,$=e.classes,ee=e.className,te=void 0===ee?"":ee,ne=e.onKeyPress,ie=e.onFocus,re=e.onPaste,oe=(0,r.Z)({"data-index":I},K),ae=(0,o.useState)(!1),se=(0,i.Z)(ae,2),le=se[0],ce=se[1];"number"===h&&V&&(oe.min=V),"number"===h&&R&&(oe.max=R),""!==U&&(oe.pattern=U);var ue=D,de=h;return"password"===h&&null===D&&(ue=le?(0,b.jsx)(d.Z,{}):(0,b.jsx)(p.Z,{}),de=le?"text":"password"),(0,b.jsx)(o.Fragment,{children:(0,b.jsxs)(s.ZP,{container:!0,className:(0,j.Z)(""!==te?te:"",""!==_?$.errorInField:$.inputBoxContainer),children:[""!==t&&(0,b.jsxs)(l.Z,{htmlFor:x,className:H?$.noMinWidthLabel:$.inputLabel,children:[(0,b.jsxs)("span",{children:[t,P?"*":""]}),""!==T&&(0,b.jsx)("div",{className:$.tooltipContainer,children:(0,b.jsx)(c.Z,{title:T,placement:"top-start",children:(0,b.jsx)("div",{className:$.tooltip,children:(0,b.jsx)(v.byK,{})})})})]}),(0,b.jsxs)("div",{className:$.textBoxContainer,children:[(0,b.jsx)(g,{id:x,name:f,fullWidth:!0,value:a,autoFocus:Q,disabled:k,onChange:n,type:de,multiline:F,autoComplete:y,inputProps:oe,error:""!==_,helperText:_,placeholder:M,className:$.inputRebase,onKeyPress:ne,onFocus:ie,onPaste:re}),ue&&(0,b.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==t?"withLabel":""),children:(0,b.jsx)(u.Z,{onClick:G?function(){G()}:function(){return ce(!le)},id:B,size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:ue})}),O&&(0,b.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==t?"withLabel":""),children:O})]})]})})}))},58833:function(e,t,n){"use strict";n.r(t);var i=n(74165),r=n(15861),o=n(29439),a=n(4942),s=n(72791),l=n(29945),c=n(57689),u=n(78687),d=n(45248),p=n(87995),x=n(44690),f=n(9478),m=n(56028),h=n(47986),v=n(73669),j=n(31460),b=n(47974),Z=n(99670),g=n(80184),y=function(e){var t=e.volumeVal,n=e.pathVal;return(0,g.jsx)(l.xuv,{className:"code-block-container",children:(0,g.jsxs)(l.xuv,{className:"example-code-block",children:[(0,g.jsxs)(l.xuv,{sx:(0,a.Z)({display:"flex",marginBottom:"5px",flexFlow:"row"},"@media (max-width: ".concat(l.Egj.sm,"px)"),{flexFlow:"column"}),children:[(0,g.jsx)("label",{children:"Volume/bucket Name :"})," ",(0,g.jsx)("code",{children:t})]}),(0,g.jsxs)(l.xuv,{sx:(0,a.Z)({display:"flex",flexFlow:"row"},"@media (max-width: ".concat(l.Egj.sm,"px)"),{flexFlow:"column"}),children:[(0,g.jsx)("label",{children:"Path : "}),(0,g.jsx)("code",{children:n})]})]})})};t.default=function(){var e=(0,x.TL)(),t=(0,c.s0)(),n=(0,u.v9)(p.N5),w=(0,s.useState)(""),k=(0,o.Z)(w,2),C=k[0],F=k[1],S=(0,s.useState)(""),T=(0,o.Z)(S,2),z=T[0],I=T[1],N=(0,s.useState)(!0),_=(0,o.Z)(N,2),L=_[0],P=_[1],E=(0,s.useState)(""),M=(0,o.Z)(E,2),V=M[0],R=M[1],B=(0,s.useState)(""),W=(0,o.Z)(B,2),D=W[0],A=W[1],O=(0,s.useState)(!1),q=(0,o.Z)(O,2),K=q[0],G=q[1],Y=(0,s.useState)(""),H=(0,o.Z)(Y,2),X=H[0],U=H[1],J=(0,s.useState)(""),Q=(0,o.Z)(J,2),$=Q[0],ee=Q[1],te=(0,f.Yc)();(0,s.useEffect)((function(){var e,t;(e=C.trim().length>0)?"/"===C.slice(0,1)&&(e=!1,U("Volume/Bucket name cannot start with /")):U("This field is required"),t=z.trim().length>0,z?"/"===z.slice(0,1)&&(t=!1,ee("Path cannot start with /")):ee("This field is required");var n=e&&t;e&&U(""),t&&ee(""),G(n)}),[C,z]);var ne=function(){var e=(0,r.Z)((0,i.Z)().mark((function e(t){return(0,i.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(t,{method:"GET"});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),ie=function(){var t=(0,r.Z)((0,i.Z)().mark((function t(){var n,o,a;return(0,i.Z)().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:n=(0,d.LL)(z),o=(0,d.LL)(C),a="/api/v1/admin/inspect?volume=".concat(o,"&file=").concat(n,"&encrypt=").concat(L),ne(a).then(function(){var t=(0,r.Z)((0,i.Z)().mark((function t(n){var r,o,a,s;return(0,i.Z)().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n.ok){t.next=5;break}return t.next=3,n.json();case 3:r=t.sent,e((0,p.Ih)({errorMessage:r.message,detailedError:r.code}));case 5:return t.next=7,n.blob();case 7:o=t.sent,a=n.headers.get("content-disposition").split('"')[1],s=(0,d.Do)(a)||"",(0,d.zZ)(o,a),A(a),R(s);case 13:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()).catch((function(t){e((0,p.Ih)(t))}));case 4:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}(),re=function(){F(""),I(""),P(!0)};return(0,s.useEffect)((function(){e((0,p.Sc)("inspect"))}),[]),(0,g.jsxs)(s.Fragment,{children:[(0,g.jsx)(b.Z,{label:"Inspect",actions:(0,g.jsx)(Z.Z,{})}),(0,g.jsxs)(l.Xgh,{children:[!te&&(0,g.jsx)(j.Z,{compactMode:!0}),n?(0,g.jsx)(l.ltY,{helpBox:(0,g.jsx)(l.KfX,{title:"Learn more about the Inspect feature",iconComponent:(0,g.jsx)(l.Gp8,{}),help:(0,g.jsxs)(s.Fragment,{children:[(0,g.jsx)(l.xuv,{sx:{marginTop:"16px",fontWeight:600,fontStyle:"italic",fontSize:"14px"},children:"Examples:"}),(0,g.jsxs)(l.xuv,{sx:{display:"flex",flexFlow:"column",fontSize:"14px",flex:"2","& .step-row":{fontSize:"14px",display:"flex",marginTop:"15px",marginBottom:"15px","&.step-text":{fontWeight:400},"&:before":{content:"' '",height:"7px",width:"7px",backgroundColor:"#2781B0",marginRight:"10px",marginTop:"7px",flexShrink:0}},"& .code-block-container":{flex:"1",marginTop:"15px",marginLeft:"35px","& input":{color:"#737373"}},"& .example-code-block label":(0,a.Z)({display:"inline-block",width:160,fontWeight:600,fontSize:14},"@media (max-width: ".concat(l.Egj.sm,"px)"),{width:"100%"}),"& code":(0,a.Z)({width:100,paddingLeft:"10px",fontFamily:"monospace",paddingRight:"10px",paddingTop:"3px",paddingBottom:"3px",borderRadius:"2px",border:"1px solid #eaeaea",fontSize:"10px",fontWeight:500},"@media (max-width: ".concat(l.Egj.sm,"px)"),{width:"100%"}),"& .spacer":{marginBottom:"5px"}},children:[(0,g.jsxs)(l.xuv,{children:[(0,g.jsx)(l.xuv,{className:"step-row",children:(0,g.jsx)("div",{className:"step-text",children:"To Download 'xl.meta' for a specific object from all the drives in a zip file:"})}),(0,g.jsx)(y,{pathVal:"test*/xl.meta",volumeVal:"test-bucket"})]}),(0,g.jsxs)(l.xuv,{children:[(0,g.jsx)(l.xuv,{className:"step-row",children:(0,g.jsx)("div",{className:"step-text",children:"To Download all constituent parts for a specific object, and optionally encrypt the downloaded zip:"})}),(0,g.jsx)(y,{pathVal:"test*/xl.meta",volumeVal:"test*/*/part.*"})]}),(0,g.jsxs)(l.xuv,{children:[(0,g.jsx)(l.xuv,{className:"step-row",children:(0,g.jsxs)("div",{className:"step-text",children:["To Download recursively all objects at a prefix.",(0,g.jsx)("br",{}),"NOTE: This can be an expensive operation use it with caution."]})}),(0,g.jsx)(y,{pathVal:"test*/xl.meta",volumeVal:"test/**"})]})]}),(0,g.jsxs)(l.xuv,{sx:{marginTop:"30px",marginLeft:"15px",fontSize:"14px"},children:["You can learn more at our"," ",(0,g.jsx)("a",{href:"https://github.com/minio/minio/tree/master/docs/debugging?ref=con",target:"_blank",rel:"noopener",children:"documentation"}),"."]})]})}),children:(0,g.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),te?ie():t("/support/register")},children:[(0,g.jsx)(l.Wzg,{id:"inspect_volume",name:"inspect_volume",onChange:function(e){F(e.target.value)},label:"Volume or Bucket Name",value:C,error:X,required:!0,placeholder:"test-bucket",disabled:!te}),(0,g.jsx)(l.Wzg,{id:"inspect_path",name:"inspect_path",error:$,onChange:function(e){I(e.target.value)},label:"File or Path to inspect",value:z,required:!0,placeholder:"test*/xl.meta",disabled:!te}),(0,g.jsx)(l.rsf,{label:"Encrypt",indicatorLabels:["True","False"],checked:L,value:"true",id:"inspect_encrypt",name:"inspect_encrypt",onChange:function(){P(!L)},disabled:!te}),(0,g.jsxs)(l.xuv,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end",marginTop:"55px"},children:[(0,g.jsx)(l.zxk,{id:"inspect-clear-button",style:{marginRight:"15px"},type:"button",variant:"regular","data-test-id":"inspect-clear-button",onClick:re,label:"Clear",disabled:!te}),(0,g.jsx)(l.zxk,{id:"inspect-start",type:"submit",variant:te?"callAction":"regular","data-test-id":"inspect-submit-button",disabled:!K||!te,label:"Inspect"})]})]})}):(0,g.jsx)(h.Z,{iconComponent:(0,g.jsx)(l.Gp8,{}),entity:"Inspect"}),V?(0,g.jsx)(m.Z,{modalOpen:!0,title:"Inspect Decryption Key",onClose:function(){(0,d.kT)(D),R(""),re()},titleIcon:(0,g.jsx)(l.tvm,{}),children:(0,g.jsxs)(s.Fragment,{children:[(0,g.jsxs)(l.xuv,{children:["This will be displayed only once. It cannot be recovered.",(0,g.jsx)("br",{}),"Use secure medium to share this key."]}),(0,g.jsx)("form",{noValidate:!0,onSubmit:function(){return!1},children:(0,g.jsx)(v.Z,{value:V})})]})}):null]})]})}},73669:function(e,t,n){"use strict";var i=n(29439),r=n(72791),o=n(64554),a=n(29945),s=n(21435),l=n(80184);t.Z=function(e){var t=e.value,n=(0,r.useState)(!1),c=(0,i.Z)(n,2),u=c[0],d=c[1];return(0,l.jsxs)(o.Z,{sx:{display:"flex",alignItems:"center",flexFlow:{sm:"row",xs:"column"}},children:[(0,l.jsx)(s.Z,{id:"inspect-dec-key",name:"inspect-dec-key",placeholder:"",label:"",type:u?"text":"password",onChange:function(){},value:t,overlayIcon:(0,l.jsx)(a.TIy,{}),extraInputProps:{readOnly:!0},overlayAction:function(){return navigator.clipboard.writeText(t)}}),(0,l.jsx)(a.zxk,{id:"show-hide-key",style:{marginLeft:"10px"},variant:"callAction",onClick:function(){return d(!u)},label:"Show/Hide"})]})}},3579:function(e,t,n){"use strict";var i=n(64836);t.Z=void 0;var r=i(n(45649)),o=n(80184),a=(0,r.default)((0,o.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"}),"RemoveRedEye");t.Z=a},20165:function(e,t,n){"use strict";var i=n(64836);t.Z=void 0;var r=i(n(45649)),o=n(80184),a=(0,r.default)((0,o.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}),"VisibilityOff");t.Z=a},45649:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return i.createSvgIcon}});var i=n(28610)},31260:function(e,t,n){"use strict";var i=n(78949);t.Z=i.Z},28610:function(e,t,n){"use strict";n.r(t),n.d(t,{capitalize:function(){return r.Z},createChainedFunction:function(){return o.Z},createSvgIcon:function(){return a.Z},debounce:function(){return s.Z},deprecatedPropType:function(){return l},isMuiElement:function(){return c.Z},ownerDocument:function(){return u.Z},ownerWindow:function(){return d.Z},requirePropFactory:function(){return p},setRef:function(){return x},unstable_ClassNameGenerator:function(){return g},unstable_useEnhancedEffect:function(){return f.Z},unstable_useId:function(){return m.Z},unsupportedProp:function(){return h},useControlled:function(){return v.Z},useEventCallback:function(){return j.Z},useForkRef:function(){return b.Z},useIsFocusVisible:function(){return Z.Z}});var i=n(55902),r=n(14036),o=n(31260),a=n(76189),s=n(83199);var l=function(e,t){return function(){return null}},c=n(19103),u=n(98301),d=n(17602);n(87462);var p=function(e,t){return function(){return null}},x=n(62971).Z,f=n(40162),m=n(67384);var h=function(e,t,n,i,r){return null},v=n(98278),j=n(89683),b=n(42071),Z=n(23031),g={configure:function(e){i.Z.configure(e)}}},64836:function(e){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); +//# sourceMappingURL=8833.50d1395d.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/8833.54277740.chunk.js.map b/portal-ui/build/static/js/8833.50d1395d.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/8833.54277740.chunk.js.map rename to portal-ui/build/static/js/8833.50d1395d.chunk.js.map index 0b6eb3d51f..50f54602d8 100644 --- a/portal-ui/build/static/js/8833.54277740.chunk.js.map +++ b/portal-ui/build/static/js/8833.50d1395d.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/8833.54277740.chunk.js","mappings":"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","sources":["screens/Console/Common/DistributedOnly/DistributedOnly.tsx","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Tools/Inspect.tsx","screens/Console/Tools/KeyRevealer.tsx","../node_modules/@mui/icons-material/RemoveRedEye.js","../node_modules/@mui/icons-material/VisibilityOff.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/esm/deprecatedPropType.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/esm/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/esm/unsupportedProp.js","../node_modules/@mui/material/utils/index.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { HelpBox, Box, Grid, breakPoints } from \"mds\";\n\ninterface IDistributedOnly {\n iconComponent: any;\n entity: string;\n}\n\nconst DistributedOnly = ({ iconComponent, entity }: IDistributedOnly) => {\n return (\n \n \n \n \n This feature is not available for a single-disk setup. \n \n \n Please deploy a server in{\" \"}\n \n Distributed Mode\n {\" \"}\n to use this feature.\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, { ClipboardEvent, useState } from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n onKeyPress?: (e: any) => void;\n onFocus?: () => void;\n onPaste?: (e: ClipboardEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayId?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n }),\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayId,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n onFocus,\n onPaste,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n const [toggleTextInput, setToggleTextInput] = useState(false);\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n let inputBoxWrapperIcon = overlayIcon;\n let inputBoxWrapperType = type;\n\n if (type === \"password\" && overlayIcon === null) {\n inputBoxWrapperIcon = toggleTextInput ? (\n \n ) : (\n \n );\n inputBoxWrapperType = toggleTextInput ? \"text\" : \"password\";\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
    \n \n
    \n \n
    \n
    \n
    \n )}\n \n )}\n\n
    \n \n {inputBoxWrapperIcon && (\n \n {\n overlayAction();\n }\n : () => setToggleTextInput(!toggleTextInput)\n }\n id={overlayId}\n size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {inputBoxWrapperIcon}\n \n
    \n )}\n {overlayObject && (\n \n {overlayObject}\n \n )}\n \n \n
    \n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 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 {\n Box,\n breakPoints,\n Button,\n FormLayout,\n HelpBox,\n InputBox,\n InspectMenuIcon,\n PageLayout,\n PasswordKeyIcon,\n Switch,\n} from \"mds\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useSelector } from \"react-redux\";\nimport {\n deleteCookie,\n encodeURLString,\n getCookieValue,\n performDownload,\n} from \"../../../common/utils\";\nimport {\n selDistSet,\n setErrorSnackMessage,\n setHelpName,\n} from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { registeredCluster } from \"../../../config\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport DistributedOnly from \"../Common/DistributedOnly/DistributedOnly\";\nimport KeyRevealer from \"./KeyRevealer\";\nimport RegisterCluster from \"../Support/RegisterCluster\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst ExampleBlock = ({\n volumeVal,\n pathVal,\n}: {\n volumeVal: string;\n pathVal: string;\n}) => {\n return (\n \n \n \n {volumeVal}\n \n \n \n {pathVal}\n \n \n \n );\n};\n\nconst Inspect = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const distributedSetup = useSelector(selDistSet);\n\n const [volumeName, setVolumeName] = useState(\"\");\n const [inspectPath, setInspectPath] = useState(\"\");\n const [isEncrypt, setIsEncrypt] = useState(true);\n\n const [decryptionKey, setDecryptionKey] = useState(\"\");\n\n const [insFileName, setInsFileName] = useState(\"\");\n\n const [isFormValid, setIsFormValid] = useState(false);\n const [volumeError, setVolumeError] = useState(\"\");\n const [pathError, setPathError] = useState(\"\");\n const clusterRegistered = registeredCluster();\n /**\n * Validation Effect\n */\n useEffect(() => {\n let isVolValid;\n let isPathValid;\n\n isVolValid = volumeName.trim().length > 0;\n if (!isVolValid) {\n setVolumeError(\"This field is required\");\n } else if (volumeName.slice(0, 1) === \"/\") {\n isVolValid = false;\n setVolumeError(\"Volume/Bucket name cannot start with /\");\n }\n isPathValid = inspectPath.trim().length > 0;\n if (!inspectPath) {\n setPathError(\"This field is required\");\n } else if (inspectPath.slice(0, 1) === \"/\") {\n isPathValid = false;\n setPathError(\"Path cannot start with /\");\n }\n const isValid = isVolValid && isPathValid;\n\n if (isVolValid) {\n setVolumeError(\"\");\n }\n if (isPathValid) {\n setPathError(\"\");\n }\n\n setIsFormValid(isValid);\n }, [volumeName, inspectPath]);\n\n const makeRequest = async (url: string) => {\n return await fetch(url, { method: \"GET\" });\n };\n\n const performInspect = async () => {\n const file = encodeURLString(inspectPath);\n const volume = encodeURLString(volumeName);\n\n const urlOfInspectApi = `/api/v1/admin/inspect?volume=${volume}&file=${file}&encrypt=${isEncrypt}`;\n\n makeRequest(urlOfInspectApi)\n .then(async (res) => {\n if (!res.ok) {\n const resErr: any = await res.json();\n\n dispatch(\n setErrorSnackMessage({\n errorMessage: resErr.message,\n detailedError: resErr.code,\n }),\n );\n }\n const blob: Blob = await res.blob();\n\n //@ts-ignore\n const filename = res.headers.get(\"content-disposition\").split('\"')[1];\n const decryptKey = getCookieValue(filename) || \"\";\n\n performDownload(blob, filename);\n setInsFileName(filename);\n setDecryptionKey(decryptKey);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(err));\n });\n };\n\n const resetForm = () => {\n setVolumeName(\"\");\n setInspectPath(\"\");\n setIsEncrypt(true);\n };\n\n const onCloseDecKeyModal = () => {\n deleteCookie(insFileName);\n setDecryptionKey(\"\");\n resetForm();\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"inspect\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n } />\n\n \n {!clusterRegistered && }\n {!distributedSetup ? (\n }\n entity={\"Inspect\"}\n />\n ) : (\n }\n help={\n \n \n Examples:\n \n\n \n \n \n
    \n To Download 'xl.meta' for a specific object from all\n the drives in a zip file:\n
    \n
    \n\n \n
    \n\n \n \n
    \n To Download all constituent parts for a specific\n object, and optionally encrypt the downloaded zip:\n
    \n
    \n\n \n
    \n \n \n
    \n To Download recursively all objects at a prefix.\n
    \n NOTE: This can be an expensive operation use it with\n caution.\n
    \n
    \n \n
    \n \n\n \n You can learn more at our{\" \"}\n \n documentation\n \n .\n \n
    \n }\n />\n }\n >\n ) => {\n e.preventDefault();\n if (!clusterRegistered) {\n navigate(\"/support/register\");\n return;\n }\n performInspect();\n }}\n >\n ) => {\n setVolumeName(e.target.value);\n }}\n label=\"Volume or Bucket Name\"\n value={volumeName}\n error={volumeError}\n required\n placeholder={\"test-bucket\"}\n disabled={!clusterRegistered}\n />\n ) => {\n setInspectPath(e.target.value);\n }}\n label=\"File or Path to inspect\"\n value={inspectPath}\n required\n placeholder={\"test*/xl.meta\"}\n disabled={!clusterRegistered}\n />\n {\n setIsEncrypt(!isEncrypt);\n }}\n disabled={!clusterRegistered}\n />\n \n \n \n \n \n \n )}\n {decryptionKey ? (\n }\n >\n \n \n This will be displayed only once. It cannot be recovered.\n
    \n Use secure medium to share this key.\n
    \n {\n return false;\n }}\n >\n \n \n
    \n \n ) : null}\n
    \n
    \n );\n};\n\nexport default Inspect;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { Box } from \"@mui/material\";\nimport { Button, CopyIcon } from \"mds\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\n\nconst KeyRevealer = ({ value }: { value: string }) => {\n const [shown, setShown] = useState(false);\n\n return (\n \n {}}\n value={value}\n overlayIcon={}\n extraInputProps={{\n readOnly: true,\n }}\n overlayAction={() => navigator.clipboard.writeText(value)}\n />\n\n setShown(!shown)}\n label={\"Show/Hide\"}\n />\n \n );\n};\n\nexport default KeyRevealer;\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'RemoveRedEye');\nexports.default = _default;","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["_ref","iconComponent","entity","_jsx","Grid","container","children","item","xs","HelpBox","title","concat","help","_jsxs","Box","sx","_defineProperty","fontSize","breakPoints","sm","display","flexFlow","href","target","rel","inputStyles","makeStyles","theme","createStyles","_objectSpread","inputFieldStyles","InputField","props","classes","TextField","InputProps","withStyles","fieldBasic","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","label","onChange","value","id","name","_ref$type","type","_ref$autoComplete","autoComplete","_ref$disabled","disabled","_ref$multiline","multiline","_ref$tooltip","tooltip","_ref$index","index","_ref$error","error","_ref$required","required","_ref$placeholder","placeholder","min","max","overlayId","_ref$overlayIcon","overlayIcon","_ref$overlayObject","overlayObject","_ref$extraInputProps","extraInputProps","_ref$noLabelMinWidth","noLabelMinWidth","_ref$pattern","pattern","_ref$autoFocus","autoFocus","_ref$className","className","onKeyPress","onFocus","onPaste","inputProps","_useState","useState","_useState2","_slicedToArray","toggleTextInput","setToggleTextInput","inputBoxWrapperIcon","inputBoxWrapperType","VisibilityOffIcon","RemoveRedEyeIcon","React","clsx","errorInField","inputBoxContainer","InputLabel","htmlFor","noMinWidthLabel","inputLabel","tooltipContainer","Tooltip","placement","HelpIcon","fullWidth","helperText","inputRebase","IconButton","onClick","size","disableFocusRipple","disableRipple","disableTouchRipple","ExampleBlock","volumeVal","pathVal","marginBottom","dispatch","useAppDispatch","navigate","useNavigate","distributedSetup","useSelector","selDistSet","volumeName","setVolumeName","_useState3","_useState4","inspectPath","setInspectPath","_useState5","_useState6","isEncrypt","setIsEncrypt","_useState7","_useState8","decryptionKey","setDecryptionKey","_useState9","_useState10","insFileName","setInsFileName","_useState11","_useState12","isFormValid","setIsFormValid","_useState13","_useState14","volumeError","setVolumeError","_useState15","_useState16","pathError","setPathError","clusterRegistered","registeredCluster","useEffect","isVolValid","isPathValid","trim","length","slice","isValid","makeRequest","_ref4","_asyncToGenerator","_regeneratorRuntime","mark","_callee","url","wrap","_context","prev","next","fetch","method","abrupt","sent","stop","_x","apply","arguments","performInspect","_ref5","_callee3","file","volume","urlOfInspectApi","_context3","encodeURLString","then","_ref6","_callee2","res","resErr","blob","filename","decryptKey","_context2","ok","json","setErrorSnackMessage","errorMessage","message","detailedError","code","headers","get","split","getCookieValue","performDownload","_x2","catch","err","resetForm","setHelpName","Fragment","PageHeaderWrapper","actions","HelpMenu","PageLayout","RegisterCluster","compactMode","FormLayout","helpBox","InspectMenuIcon","marginTop","fontWeight","fontStyle","flex","content","height","width","backgroundColor","marginRight","flexShrink","marginLeft","color","paddingLeft","fontFamily","paddingRight","paddingTop","paddingBottom","borderRadius","border","noValidate","onSubmit","e","preventDefault","InputBox","Switch","indicatorLabels","checked","alignItems","justifyContent","Button","style","variant","DistributedOnly","ModalWrapper","modalOpen","onClose","deleteCookie","titleIcon","PasswordKeyIcon","KeyRevealer","shown","setShown","InputBoxWrapper","CopyIcon","readOnly","navigator","clipboard","writeText","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Object","defineProperty","enumerable","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/8833.50d1395d.chunk.js","mappings":"4JA+DA,IAvCwB,SAAHA,GAAqD,IAA/CC,EAAaD,EAAbC,cAAeC,EAAMF,EAANE,OACxC,OACEC,EAAAA,EAAAA,KAACC,EAAAA,IAAI,CAACC,WAAS,EAAAC,UACbH,EAAAA,EAAAA,KAACC,EAAAA,IAAI,CAACG,MAAI,EAACC,GAAI,GAAGF,UAChBH,EAAAA,EAAAA,KAACM,EAAAA,IAAO,CACNC,MAAK,GAAAC,OAAKT,EAAM,kBAChBD,cAAeA,EACfW,MACEC,EAAAA,EAAAA,MAACC,EAAAA,IAAG,CACFC,IAAEC,EAAAA,EAAAA,GAAA,CACAC,SAAU,QAAM,sBAAAN,OACOO,EAAAA,IAAYC,GAAE,OAAQ,CAC3CC,QAAS,OACTC,SAAU,WAEZf,SAAA,EAEFH,EAAAA,EAAAA,KAAA,QAAAG,SAAM,gEAGNO,EAAAA,EAAAA,MAAA,QAAAP,SAAA,CAAM,4BACsB,KAC1BH,EAAAA,EAAAA,KAAA,KACEmB,KAAK,oHACLC,OAAO,SACPC,IAAI,WAAUlB,SACf,qBAEI,IAAI,kCASzB,C,kOCiCMmB,GAAcC,EAAAA,EAAAA,IAAW,SAACC,GAAY,OAC1CC,EAAAA,EAAAA,IAAYC,EAAAA,EAAAA,GAAC,CAAC,EACTC,EAAAA,IACH,IAGJ,SAASC,EAAWC,GAClB,IAAMC,EAAUR,IAEhB,OACEtB,EAAAA,EAAAA,KAAC+B,EAAAA,GAASL,EAAAA,EAAAA,GAAA,CACRM,WAAY,CAAEF,QAAAA,IACVD,GAGV,CAwJA,KAAeI,EAAAA,EAAAA,IA7LA,SAACT,GAAY,OAC1BC,EAAAA,EAAAA,IAAYC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACTQ,EAAAA,IACAC,EAAAA,IAAa,IAChBC,iBAAkB,CAChBC,SAAU,EACVC,SAAU,YAEZC,cAAe,CACbD,SAAU,WACVE,MAAO,EACPC,IAAK,EACL,QAAS,CACPC,SAAU,GACVC,UAAW,IAEb,cAAe,CACbF,IAAK,MAGR,GAyKL,EAtJwB,SAAH5C,GA8BC,IA7BpB+C,EAAK/C,EAAL+C,MACAC,EAAQhD,EAARgD,SACAC,EAAKjD,EAALiD,MACAC,EAAElD,EAAFkD,GACAC,EAAInD,EAAJmD,KAAIC,EAAApD,EACJqD,KAAAA,OAAI,IAAAD,EAAG,OAAMA,EAAAE,EAAAtD,EACbuD,aAAAA,OAAY,IAAAD,EAAG,MAAKA,EAAAE,EAAAxD,EACpByD,SAAAA,OAAQ,IAAAD,GAAQA,EAAAE,EAAA1D,EAChB2D,UAAAA,OAAS,IAAAD,GAAQA,EAAAE,EAAA5D,EACjB6D,QAAAA,OAAO,IAAAD,EAAG,GAAEA,EAAAE,EAAA9D,EACZ+D,MAAAA,OAAK,IAAAD,EAAG,EAACA,EAAAE,EAAAhE,EACTiE,MAAAA,OAAK,IAAAD,EAAG,GAAEA,EAAAE,EAAAlE,EACVmE,SAAAA,OAAQ,IAAAD,GAAQA,EAAAE,EAAApE,EAChBqE,YAAAA,OAAW,IAAAD,EAAG,GAAEA,EAChBE,EAAGtE,EAAHsE,IACAC,EAAGvE,EAAHuE,IACAC,EAASxE,EAATwE,UAASC,EAAAzE,EACT0E,YAAAA,OAAW,IAAAD,EAAG,KAAIA,EAAAE,EAAA3E,EAClB4E,cAAAA,OAAa,IAAAD,EAAG,KAAIA,EAAAE,EAAA7E,EACpB8E,gBAAAA,OAAe,IAAAD,EAAG,CAAC,EAACA,EACpBnC,EAAa1C,EAAb0C,cAAaqC,EAAA/E,EACbgF,gBAAAA,OAAe,IAAAD,GAAQA,EAAAE,EAAAjF,EACvBkF,QAAAA,OAAO,IAAAD,EAAG,GAAEA,EAAAE,EAAAnF,EACZoF,UAAAA,OAAS,IAAAD,GAAQA,EACjBlD,EAAOjC,EAAPiC,QAAOoD,GAAArF,EACPsF,UAAAA,QAAS,IAAAD,GAAG,GAAEA,GACdE,GAAUvF,EAAVuF,WACAC,GAAOxF,EAAPwF,QACAC,GAAOzF,EAAPyF,QAEIC,IAAe7D,EAAAA,EAAAA,GAAA,CAAK,aAAckC,GAAUe,GAChDa,IAA8CC,EAAAA,EAAAA,WAAkB,GAAMC,IAAAC,EAAAA,EAAAA,GAAAH,GAAA,GAA/DI,GAAeF,GAAA,GAAEG,GAAkBH,GAAA,GAE7B,WAATxC,GAAqBiB,IACvBoB,GAAgB,IAAIpB,GAGT,WAATjB,GAAqBkB,IACvBmB,GAAgB,IAAInB,GAGN,KAAZW,IACFQ,GAAoB,QAAIR,GAG1B,IAAIe,GAAsBvB,EACtBwB,GAAsB7C,EAW1B,MATa,aAATA,GAAuC,OAAhBqB,IACzBuB,GAAsBF,IACpB5F,EAAAA,EAAAA,KAACgG,EAAAA,EAAiB,KAElBhG,EAAAA,EAAAA,KAACiG,EAAAA,EAAgB,IAEnBF,GAAsBH,GAAkB,OAAS,aAIjD5F,EAAAA,EAAAA,KAACkG,EAAAA,SAAc,CAAA/F,UACbO,EAAAA,EAAAA,MAACT,EAAAA,GAAI,CACHC,WAAS,EACTiF,WAAWgB,EAAAA,EAAAA,GACK,KAAdhB,GAAmBA,GAAY,GACrB,KAAVrB,EAAehC,EAAQsE,aAAetE,EAAQuE,mBAC9ClG,SAAA,CAES,KAAVyC,IACClC,EAAAA,EAAAA,MAAC4F,EAAAA,EAAU,CACTC,QAASxD,EACToC,UACEN,EAAkB/C,EAAQ0E,gBAAkB1E,EAAQ2E,WACrDtG,SAAA,EAEDO,EAAAA,EAAAA,MAAA,QAAAP,SAAA,CACGyC,EACAoB,EAAW,IAAM,MAEP,KAAZN,IACC1D,EAAAA,EAAAA,KAAA,OAAKmF,UAAWrD,EAAQ4E,iBAAiBvG,UACvCH,EAAAA,EAAAA,KAAC2G,EAAAA,EAAO,CAACpG,MAAOmD,EAASkD,UAAU,YAAWzG,UAC5CH,EAAAA,EAAAA,KAAA,OAAKmF,UAAWrD,EAAQ4B,QAAQvD,UAC9BH,EAAAA,EAAAA,KAAC6G,EAAAA,IAAQ,cAQrBnG,EAAAA,EAAAA,MAAA,OAAKyE,UAAWrD,EAAQM,iBAAiBjC,SAAA,EACvCH,EAAAA,EAAAA,KAAC4B,EAAU,CACTmB,GAAIA,EACJC,KAAMA,EACN8D,WAAS,EACThE,MAAOA,EACPmC,UAAWA,EACX3B,SAAUA,EACVT,SAAUA,EACVK,KAAM6C,GACNvC,UAAWA,EACXJ,aAAcA,EACdmC,WAAYA,GACZzB,MAAiB,KAAVA,EACPiD,WAAYjD,EACZI,YAAaA,EACbiB,UAAWrD,EAAQkF,YACnB5B,WAAYA,GACZC,QAASA,GACTC,QAASA,KAEVQ,KACC9F,EAAAA,EAAAA,KAAA,OACEmF,UAAS,GAAA3E,OAAKsB,EAAQS,cAAa,KAAA/B,OACvB,KAAVoC,EAAe,YAAc,IAC5BzC,UAEHH,EAAAA,EAAAA,KAACiH,EAAAA,EAAU,CACTC,QACE3E,EACI,WACEA,GACF,EACA,kBAAMsD,IAAoBD,GAAgB,EAEhD7C,GAAIsB,EACJ8C,KAAM,QACNC,oBAAoB,EACpBC,eAAe,EACfC,oBAAoB,EAAMnH,SAEzB2F,OAINrB,IACCzE,EAAAA,EAAAA,KAAA,OACEmF,UAAS,GAAA3E,OAAKsB,EAAQS,cAAa,KAAA/B,OACvB,KAAVoC,EAAe,YAAc,IAC5BzC,SAEFsE,WAOf,G,+PChNM8C,EAAe,SAAH1H,GAMX,IALL2H,EAAS3H,EAAT2H,UACAC,EAAO5H,EAAP4H,QAKA,OACEzH,EAAAA,EAAAA,KAACW,EAAAA,IAAG,CAACwE,UAAU,uBAAsBhF,UACnCO,EAAAA,EAAAA,MAACC,EAAAA,IAAG,CAACwE,UAAU,qBAAoBhF,SAAA,EACjCO,EAAAA,EAAAA,MAACC,EAAAA,IAAG,CACFC,IAAEC,EAAAA,EAAAA,GAAA,CACAI,QAAS,OACTyG,aAAc,MACdxG,SAAU,OAAK,sBAAAV,OACQO,EAAAA,IAAYC,GAAE,OAAQ,CAC3CE,SAAU,WAEZf,SAAA,EAEFH,EAAAA,EAAAA,KAAA,SAAAG,SAAO,yBAA4B,KAACH,EAAAA,EAAAA,KAAA,QAAAG,SAAOqH,QAE7C9G,EAAAA,EAAAA,MAACC,EAAAA,IAAG,CACFC,IAAEC,EAAAA,EAAAA,GAAA,CACAI,QAAS,OACTC,SAAU,OAAK,sBAAAV,OACQO,EAAAA,IAAYC,GAAE,OAAQ,CAC3CE,SAAU,WAEZf,SAAA,EAEFH,EAAAA,EAAAA,KAAA,SAAAG,SAAO,aACPH,EAAAA,EAAAA,KAAA,QAAAG,SAAOsH,WAKjB,EA2XA,UAzXgB,WACd,IAAME,GAAWC,EAAAA,EAAAA,MACXC,GAAWC,EAAAA,EAAAA,MACXC,GAAmBC,EAAAA,EAAAA,IAAYC,EAAAA,IAErCzC,GAAoCC,EAAAA,EAAAA,UAAiB,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAjD0C,EAAUxC,EAAA,GAAEyC,EAAazC,EAAA,GAChC0C,GAAsC3C,EAAAA,EAAAA,UAAiB,IAAG4C,GAAA1C,EAAAA,EAAAA,GAAAyC,EAAA,GAAnDE,EAAWD,EAAA,GAAEE,EAAcF,EAAA,GAClCG,GAAkC/C,EAAAA,EAAAA,WAAkB,GAAKgD,GAAA9C,EAAAA,EAAAA,GAAA6C,EAAA,GAAlDE,EAASD,EAAA,GAAEE,EAAYF,EAAA,GAE9BG,GAA0CnD,EAAAA,EAAAA,UAAiB,IAAGoD,GAAAlD,EAAAA,EAAAA,GAAAiD,EAAA,GAAvDE,EAAaD,EAAA,GAAEE,EAAgBF,EAAA,GAEtCG,GAAsCvD,EAAAA,EAAAA,UAAiB,IAAGwD,GAAAtD,EAAAA,EAAAA,GAAAqD,EAAA,GAAnDE,EAAWD,EAAA,GAAEE,EAAcF,EAAA,GAElCG,GAAsC3D,EAAAA,EAAAA,WAAkB,GAAM4D,GAAA1D,EAAAA,EAAAA,GAAAyD,EAAA,GAAvDE,EAAWD,EAAA,GAAEE,EAAcF,EAAA,GAClCG,GAAsC/D,EAAAA,EAAAA,UAAiB,IAAGgE,GAAA9D,EAAAA,EAAAA,GAAA6D,EAAA,GAAnDE,EAAWD,EAAA,GAAEE,EAAcF,EAAA,GAClCG,GAAkCnE,EAAAA,EAAAA,UAAiB,IAAGoE,GAAAlE,EAAAA,EAAAA,GAAAiE,EAAA,GAA/CE,EAASD,EAAA,GAAEE,GAAYF,EAAA,GACxBG,IAAoBC,EAAAA,EAAAA,OAI1BC,EAAAA,EAAAA,YAAU,WACR,IAAIC,EACAC,GAEJD,EAAajC,EAAWmC,OAAOC,OAAS,GAGF,MAA3BpC,EAAWqC,MAAM,EAAG,KAC7BJ,GAAa,EACbR,EAAe,2CAHfA,EAAe,0BAKjBS,EAAc9B,EAAY+B,OAAOC,OAAS,EACrChC,EAEkC,MAA5BA,EAAYiC,MAAM,EAAG,KAC9BH,GAAc,EACdL,GAAa,6BAHbA,GAAa,0BAKf,IAAMS,EAAUL,GAAcC,EAE1BD,GACFR,EAAe,IAEbS,GACFL,GAAa,IAGfR,EAAeiB,EACjB,GAAG,CAACtC,EAAYI,IAEhB,IAAMmC,GAAW,eAAAC,GAAAC,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAAG,SAAAC,EAAOC,GAAW,OAAAH,EAAAA,EAAAA,KAAAI,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACvBC,MAAML,EAAK,CAAEM,OAAQ,QAAS,KAAD,SAAAJ,EAAAK,OAAA,SAAAL,EAAAM,MAAA,wBAAAN,EAAAO,OAAA,GAAAV,EAAA,KAC3C,gBAFgBW,GAAA,OAAAf,EAAAgB,MAAA,KAAAC,UAAA,KAIXC,GAAc,eAAAC,GAAAlB,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAAG,SAAAiB,IAAA,IAAAC,EAAAC,EAAAC,EAAA,OAAArB,EAAAA,EAAAA,KAAAI,MAAA,SAAAkB,GAAA,cAAAA,EAAAhB,KAAAgB,EAAAf,MAAA,OACfY,GAAOI,EAAAA,EAAAA,IAAgB7D,GACvB0D,GAASG,EAAAA,EAAAA,IAAgBjE,GAEzB+D,EAAe,gCAAAzL,OAAmCwL,EAAM,UAAAxL,OAASuL,EAAI,aAAAvL,OAAYkI,GAEvF+B,GAAYwB,GACTG,KAAI,eAAAC,GAAA1B,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAAC,SAAAyB,EAAOC,GAAG,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAA/B,EAAAA,EAAAA,KAAAI,MAAA,SAAA4B,GAAA,cAAAA,EAAA1B,KAAA0B,EAAAzB,MAAA,UACToB,EAAIM,GAAG,CAADD,EAAAzB,KAAA,eAAAyB,EAAAzB,KAAA,EACiBoB,EAAIO,OAAO,KAAD,EAA9BN,EAAWI,EAAArB,KAEjB5D,GACEoF,EAAAA,EAAAA,IAAqB,CACnBC,aAAcR,EAAOS,QACrBC,cAAeV,EAAOW,QAExB,cAAAP,EAAAzB,KAAA,EAEqBoB,EAAIE,OAAO,KAAD,EAA7BA,EAAUG,EAAArB,KAGVmB,EAAWH,EAAIa,QAAQC,IAAI,uBAAuBC,MAAM,KAAK,GAC7DX,GAAaY,EAAAA,EAAAA,IAAeb,IAAa,IAE/Cc,EAAAA,EAAAA,IAAgBf,EAAMC,GACtBvD,EAAeuD,GACf3D,EAAiB4D,GAAY,yBAAAC,EAAApB,OAAA,GAAAc,EAAA,KAC9B,gBAAAmB,GAAA,OAAApB,EAAAX,MAAA,KAAAC,UAAA,EApBI,IAqBJ+B,OAAM,SAACC,GACNhG,GAASoF,EAAAA,EAAAA,IAAqBY,GAChC,IAAG,wBAAAzB,EAAAV,OAAA,GAAAM,EAAA,KACN,kBA/BmB,OAAAD,EAAAH,MAAA,KAAAC,UAAA,KAiCdiC,GAAY,WAChBzF,EAAc,IACdI,EAAe,IACfI,GAAa,EACf,EAaA,OALAuB,EAAAA,EAAAA,YAAU,WACRvC,GAASkG,EAAAA,EAAAA,IAAY,WAEvB,GAAG,KAGDnN,EAAAA,EAAAA,MAACoN,EAAAA,SAAQ,CAAA3N,SAAA,EACPH,EAAAA,EAAAA,KAAC+N,EAAAA,EAAiB,CAACnL,MAAO,UAAWoL,SAAShO,EAAAA,EAAAA,KAACiO,EAAAA,EAAQ,OAEvDvN,EAAAA,EAAAA,MAACwN,EAAAA,IAAU,CAAA/N,SAAA,EACP6J,KAAqBhK,EAAAA,EAAAA,KAACmO,EAAAA,EAAe,CAACC,aAAW,IACjDrG,GAMA/H,EAAAA,EAAAA,KAACqO,EAAAA,IAAU,CACTC,SACEtO,EAAAA,EAAAA,KAACM,EAAAA,IAAO,CACNC,MAAO,uCACPT,eAAeE,EAAAA,EAAAA,KAACuO,EAAAA,IAAe,IAC/B9N,MACEC,EAAAA,EAAAA,MAACoN,EAAAA,SAAQ,CAAA3N,SAAA,EACPH,EAAAA,EAAAA,KAACW,EAAAA,IAAG,CACFC,GAAI,CACF4N,UAAW,OACXC,WAAY,IACZC,UAAW,SACX5N,SAAU,QACVX,SACH,eAIDO,EAAAA,EAAAA,MAACC,EAAAA,IAAG,CACFC,GAAI,CACFK,QAAS,OACTC,SAAU,SACVJ,SAAU,OACV6N,KAAM,IAEN,cAAe,CACb7N,SAAU,OACVG,QAAS,OACTuN,UAAW,OACX9G,aAAc,OAEd,cAAe,CACb+G,WAAY,KAEd,WAAY,CACVG,QAAS,MACTC,OAAQ,MACRC,MAAO,MACPC,gBAAiB,UACjBC,YAAa,OACbR,UAAW,MACXS,WAAY,IAIhB,0BAA2B,CACzBN,KAAM,IACNH,UAAW,OACXU,WAAY,OAEZ,UAAW,CACTC,MAAO,YAIX,+BAA6BtO,EAAAA,EAAAA,GAAA,CAC3BI,QAAS,eACT6N,MAAO,IACPL,WAAY,IACZ3N,SAAU,IAAE,sBAAAN,OACWO,EAAAA,IAAYC,GAAE,OAAQ,CAC3C8N,MAAO,SAIX,UAAQjO,EAAAA,EAAAA,GAAA,CACNiO,MAAO,IACPM,YAAa,OACbC,WAAY,YACZC,aAAc,OACdC,WAAY,MACZC,cAAe,MACfC,aAAc,MACdC,OAAQ,oBACR5O,SAAU,OACV2N,WAAY,KAAG,sBAAAjO,OACQO,EAAAA,IAAYC,GAAE,OAAQ,CAC3C8N,MAAO,SAGX,YAAa,CACXpH,aAAc,QAEhBvH,SAAA,EAEFO,EAAAA,EAAAA,MAACC,EAAAA,IAAG,CAAAR,SAAA,EACFH,EAAAA,EAAAA,KAACW,EAAAA,IAAG,CAACwE,UAAU,WAAUhF,UACvBH,EAAAA,EAAAA,KAAA,OAAKmF,UAAU,YAAWhF,SAAC,sFAM7BH,EAAAA,EAAAA,KAACuH,EAAY,CACXE,QAAO,gBACPD,UAAS,oBAIb9G,EAAAA,EAAAA,MAACC,EAAAA,IAAG,CAAAR,SAAA,EACFH,EAAAA,EAAAA,KAACW,EAAAA,IAAG,CAACwE,UAAU,WAAUhF,UACvBH,EAAAA,EAAAA,KAAA,OAAKmF,UAAU,YAAWhF,SAAC,2GAM7BH,EAAAA,EAAAA,KAACuH,EAAY,CACXE,QAAO,gBACPD,UAAS,uBAGb9G,EAAAA,EAAAA,MAACC,EAAAA,IAAG,CAAAR,SAAA,EACFH,EAAAA,EAAAA,KAACW,EAAAA,IAAG,CAACwE,UAAU,WAAUhF,UACvBO,EAAAA,EAAAA,MAAA,OAAKyE,UAAU,YAAWhF,SAAA,CAAC,oDAEzBH,EAAAA,EAAAA,KAAA,SAAM,sEAKVA,EAAAA,EAAAA,KAACuH,EAAY,CACXE,QAAO,gBACPD,UAAS,mBAKf9G,EAAAA,EAAAA,MAACC,EAAAA,IAAG,CACFC,GAAI,CACF4N,UAAW,OACXU,WAAY,OACZpO,SAAU,QACVX,SAAA,CACH,4BAC2B,KAC1BH,EAAAA,EAAAA,KAAA,KACEmB,KAAK,oEACLC,OAAO,SACPC,IAAI,WAAUlB,SACf,kBAEG,YAMbA,UAEDO,EAAAA,EAAAA,MAAA,QACEiP,YAAU,EACVvM,aAAa,MACbwM,SAAU,SAACC,GACTA,EAAEC,iBACG9F,GAIL4B,KAHE/D,EAAS,oBAIb,EAAE1H,SAAA,EAEFH,EAAAA,EAAAA,KAAC+P,EAAAA,IAAQ,CACPhN,GAAG,iBACHC,KAAK,iBACLH,SAAU,SAACgN,GACT1H,EAAc0H,EAAEzO,OAAO0B,MACzB,EACAF,MAAM,wBACNE,MAAOoF,EACPpE,MAAO4F,EACP1F,UAAQ,EACRE,YAAa,cACbZ,UAAW0G,MAEbhK,EAAAA,EAAAA,KAAC+P,EAAAA,IAAQ,CACPhN,GAAG,eACHC,KAAK,eACLc,MAAOgG,EACPjH,SAAU,SAACgN,GACTtH,EAAesH,EAAEzO,OAAO0B,MAC1B,EACAF,MAAM,0BACNE,MAAOwF,EACPtE,UAAQ,EACRE,YAAa,gBACbZ,UAAW0G,MAEbhK,EAAAA,EAAAA,KAACgQ,EAAAA,IAAM,CACLpN,MAAM,UACNqN,gBAAiB,CAAC,OAAQ,SAC1BC,QAASxH,EACT5F,MAAO,OACPC,GAAG,kBACHC,KAAK,kBACLH,SAAU,WACR8F,GAAcD,EAChB,EACApF,UAAW0G,MAEbtJ,EAAAA,EAAAA,MAACC,EAAAA,IAAG,CACFC,GAAI,CACFK,QAAS,OACTkP,WAAY,SACZC,eAAgB,WAChB5B,UAAW,QACXrO,SAAA,EAEFH,EAAAA,EAAAA,KAACqQ,EAAAA,IAAM,CACLtN,GAAI,uBACJuN,MAAO,CACLtB,YAAa,QAEf9L,KAAK,SACLqN,QAAQ,UACR,eAAa,uBACbrJ,QAAS0G,GACThL,MAAO,QACPU,UAAW0G,MAEbhK,EAAAA,EAAAA,KAACqQ,EAAAA,IAAM,CACLtN,GAAI,gBACJG,KAAK,SACLqN,QAAUvG,GAAgC,aAAZ,UAC9B,eAAa,wBACb1G,UAAWgG,IAAgBU,GAC3BpH,MAAO,qBAvOf5C,EAAAA,EAAAA,KAACwQ,EAAAA,EAAe,CACd1Q,eAAeE,EAAAA,EAAAA,KAACuO,EAAAA,IAAe,IAC/BxO,OAAQ,YA2OX+I,GACC9I,EAAAA,EAAAA,KAACyQ,EAAAA,EAAY,CACXC,WAAW,EACXnQ,MAAM,yBACNoQ,QAnQiB,YACzBC,EAAAA,EAAAA,IAAa1H,GACbH,EAAiB,IACjB6E,IACF,EAgQUiD,WAAW7Q,EAAAA,EAAAA,KAAC8Q,EAAAA,IAAe,IAAI3Q,UAE/BO,EAAAA,EAAAA,MAACoN,EAAAA,SAAQ,CAAA3N,SAAA,EACPO,EAAAA,EAAAA,MAACC,EAAAA,IAAG,CAAAR,SAAA,CAAC,6DAEHH,EAAAA,EAAAA,KAAA,SAAM,2CAGRA,EAAAA,EAAAA,KAAA,QACE2P,YAAU,EACVC,SAAU,WACR,OAAO,CACT,EAAEzP,UAEFH,EAAAA,EAAAA,KAAC+Q,EAAAA,EAAW,CAACjO,MAAOgG,WAIxB,UAIZ,C,2GClZA,IA1CoB,SAAHjJ,GAAsC,IAAhCiD,EAAKjD,EAALiD,MACrB0C,GAA0BC,EAAAA,EAAAA,WAAkB,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA3CwL,EAAKtL,EAAA,GAAEuL,EAAQvL,EAAA,GAEtB,OACEhF,EAAAA,EAAAA,MAACC,EAAAA,EAAG,CACFC,GAAI,CACFK,QAAS,OACTkP,WAAY,SACZjP,SAAU,CACRF,GAAI,MACJX,GAAI,WAENF,SAAA,EAEFH,EAAAA,EAAAA,KAACkR,EAAAA,EAAe,CACdnO,GAAG,kBACHC,KAAK,kBACLkB,YAAY,GACZtB,MAAM,GACNM,KAAM8N,EAAQ,OAAS,WACvBnO,SAAU,WAAO,EACjBC,MAAOA,EACPyB,aAAavE,EAAAA,EAAAA,KAACmR,EAAAA,IAAQ,IACtBxM,gBAAiB,CACfyM,UAAU,GAEZ7O,cAAe,kBAAM8O,UAAUC,UAAUC,UAAUzO,EAAM,KAG3D9C,EAAAA,EAAAA,KAACqQ,EAAAA,IAAM,CACLtN,GAAI,gBACJuN,MAAO,CACLpB,WAAY,QAEdqB,QAAQ,aACRrJ,QAAS,kBAAM+J,GAAUD,EAAM,EAC/BpO,MAAO,gBAIf,C,wCC1DI4O,EAAyBC,EAAQ,OAIrCC,EAAQ,OAAU,EAClB,IAAIC,EAAiBH,EAAuBC,EAAQ,QAChDG,EAAcH,EAAQ,OACtBI,GAAW,EAAIF,EAAeG,UAAuB,EAAIF,EAAYG,KAAK,OAAQ,CACpFC,EAAG,sNACD,gBACJN,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,8fACD,iBACJN,EAAQ,EAAUG,C,qCCVlBI,OAAOC,eAAeR,EAAS,aAAc,CAC3C5O,OAAO,IAETmP,OAAOC,eAAeR,EAAS,UAAW,CACxCS,YAAY,EACZ9E,IAAK,WACH,OAAO+E,EAAOC,aAChB,IAEF,IAAID,EAASX,EAAQ,M,oDCXrB,IAAea,EAAqB,C,kyBCApC,MCDe,SAA4BC,EAAWC,GAElD,OAAO,kBAAM,IAAI,CAUrB,E,0CCXA,MCAe,SAA4BC,EAAsBC,GAE7D,OAAO,kBAAM,IAAI,CAoBrB,ECtBA,E,SAAqB,E,sBCArB,MCDe,SAAyB7Q,EAAO8Q,EAAUC,EAAeC,EAAUC,GAE9E,OAAO,IAOX,E,4CCaaC,EAA8B,CACzCC,UAAW,SAAAC,GAITC,EAAAA,EAAmBF,UAAUC,EAC/B,E,oBCvBFE,EAAOzB,QALP,SAAgC0B,GAC9B,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CACnC,QAAWA,EAEf,EACyCD,EAAOzB,QAAQ2B,YAAa,EAAMF,EAAOzB,QAAiB,QAAIyB,EAAOzB,O","sources":["screens/Console/Common/DistributedOnly/DistributedOnly.tsx","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Tools/Inspect.tsx","screens/Console/Tools/KeyRevealer.tsx","../node_modules/@mui/icons-material/RemoveRedEye.js","../node_modules/@mui/icons-material/VisibilityOff.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/esm/deprecatedPropType.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/esm/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/esm/unsupportedProp.js","../node_modules/@mui/material/utils/index.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 { HelpBox, Box, Grid, breakPoints } from \"mds\";\n\ninterface IDistributedOnly {\n iconComponent: any;\n entity: string;\n}\n\nconst DistributedOnly = ({ iconComponent, entity }: IDistributedOnly) => {\n return (\n \n \n \n \n This feature is not available for a single-disk setup. \n \n \n Please deploy a server in{\" \"}\n \n Distributed Mode\n {\" \"}\n to use this feature.\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, { ClipboardEvent, useState } from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n onKeyPress?: (e: any) => void;\n onFocus?: () => void;\n onPaste?: (e: ClipboardEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayId?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n }),\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayId,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n onFocus,\n onPaste,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n const [toggleTextInput, setToggleTextInput] = useState(false);\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n let inputBoxWrapperIcon = overlayIcon;\n let inputBoxWrapperType = type;\n\n if (type === \"password\" && overlayIcon === null) {\n inputBoxWrapperIcon = toggleTextInput ? (\n \n ) : (\n \n );\n inputBoxWrapperType = toggleTextInput ? \"text\" : \"password\";\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
    \n \n
    \n \n
    \n
    \n
    \n )}\n \n )}\n\n
    \n \n {inputBoxWrapperIcon && (\n \n {\n overlayAction();\n }\n : () => setToggleTextInput(!toggleTextInput)\n }\n id={overlayId}\n size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {inputBoxWrapperIcon}\n \n
    \n )}\n {overlayObject && (\n \n {overlayObject}\n \n )}\n \n \n
    \n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 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 {\n Box,\n breakPoints,\n Button,\n FormLayout,\n HelpBox,\n InputBox,\n InspectMenuIcon,\n PageLayout,\n PasswordKeyIcon,\n Switch,\n} from \"mds\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useSelector } from \"react-redux\";\nimport {\n deleteCookie,\n encodeURLString,\n getCookieValue,\n performDownload,\n} from \"../../../common/utils\";\nimport {\n selDistSet,\n setErrorSnackMessage,\n setHelpName,\n} from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { registeredCluster } from \"../../../config\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport DistributedOnly from \"../Common/DistributedOnly/DistributedOnly\";\nimport KeyRevealer from \"./KeyRevealer\";\nimport RegisterCluster from \"../Support/RegisterCluster\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport HelpMenu from \"../HelpMenu\";\n\nconst ExampleBlock = ({\n volumeVal,\n pathVal,\n}: {\n volumeVal: string;\n pathVal: string;\n}) => {\n return (\n \n \n \n {volumeVal}\n \n \n \n {pathVal}\n \n \n \n );\n};\n\nconst Inspect = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const distributedSetup = useSelector(selDistSet);\n\n const [volumeName, setVolumeName] = useState(\"\");\n const [inspectPath, setInspectPath] = useState(\"\");\n const [isEncrypt, setIsEncrypt] = useState(true);\n\n const [decryptionKey, setDecryptionKey] = useState(\"\");\n\n const [insFileName, setInsFileName] = useState(\"\");\n\n const [isFormValid, setIsFormValid] = useState(false);\n const [volumeError, setVolumeError] = useState(\"\");\n const [pathError, setPathError] = useState(\"\");\n const clusterRegistered = registeredCluster();\n /**\n * Validation Effect\n */\n useEffect(() => {\n let isVolValid;\n let isPathValid;\n\n isVolValid = volumeName.trim().length > 0;\n if (!isVolValid) {\n setVolumeError(\"This field is required\");\n } else if (volumeName.slice(0, 1) === \"/\") {\n isVolValid = false;\n setVolumeError(\"Volume/Bucket name cannot start with /\");\n }\n isPathValid = inspectPath.trim().length > 0;\n if (!inspectPath) {\n setPathError(\"This field is required\");\n } else if (inspectPath.slice(0, 1) === \"/\") {\n isPathValid = false;\n setPathError(\"Path cannot start with /\");\n }\n const isValid = isVolValid && isPathValid;\n\n if (isVolValid) {\n setVolumeError(\"\");\n }\n if (isPathValid) {\n setPathError(\"\");\n }\n\n setIsFormValid(isValid);\n }, [volumeName, inspectPath]);\n\n const makeRequest = async (url: string) => {\n return await fetch(url, { method: \"GET\" });\n };\n\n const performInspect = async () => {\n const file = encodeURLString(inspectPath);\n const volume = encodeURLString(volumeName);\n\n const urlOfInspectApi = `/api/v1/admin/inspect?volume=${volume}&file=${file}&encrypt=${isEncrypt}`;\n\n makeRequest(urlOfInspectApi)\n .then(async (res) => {\n if (!res.ok) {\n const resErr: any = await res.json();\n\n dispatch(\n setErrorSnackMessage({\n errorMessage: resErr.message,\n detailedError: resErr.code,\n }),\n );\n }\n const blob: Blob = await res.blob();\n\n //@ts-ignore\n const filename = res.headers.get(\"content-disposition\").split('\"')[1];\n const decryptKey = getCookieValue(filename) || \"\";\n\n performDownload(blob, filename);\n setInsFileName(filename);\n setDecryptionKey(decryptKey);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(err));\n });\n };\n\n const resetForm = () => {\n setVolumeName(\"\");\n setInspectPath(\"\");\n setIsEncrypt(true);\n };\n\n const onCloseDecKeyModal = () => {\n deleteCookie(insFileName);\n setDecryptionKey(\"\");\n resetForm();\n };\n\n useEffect(() => {\n dispatch(setHelpName(\"inspect\"));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n \n } />\n\n \n {!clusterRegistered && }\n {!distributedSetup ? (\n }\n entity={\"Inspect\"}\n />\n ) : (\n }\n help={\n \n \n Examples:\n \n\n \n \n \n
    \n To Download 'xl.meta' for a specific object from all\n the drives in a zip file:\n
    \n
    \n\n \n
    \n\n \n \n
    \n To Download all constituent parts for a specific\n object, and optionally encrypt the downloaded zip:\n
    \n
    \n\n \n
    \n \n \n
    \n To Download recursively all objects at a prefix.\n
    \n NOTE: This can be an expensive operation use it with\n caution.\n
    \n
    \n \n
    \n \n\n \n You can learn more at our{\" \"}\n \n documentation\n \n .\n \n
    \n }\n />\n }\n >\n ) => {\n e.preventDefault();\n if (!clusterRegistered) {\n navigate(\"/support/register\");\n return;\n }\n performInspect();\n }}\n >\n ) => {\n setVolumeName(e.target.value);\n }}\n label=\"Volume or Bucket Name\"\n value={volumeName}\n error={volumeError}\n required\n placeholder={\"test-bucket\"}\n disabled={!clusterRegistered}\n />\n ) => {\n setInspectPath(e.target.value);\n }}\n label=\"File or Path to inspect\"\n value={inspectPath}\n required\n placeholder={\"test*/xl.meta\"}\n disabled={!clusterRegistered}\n />\n {\n setIsEncrypt(!isEncrypt);\n }}\n disabled={!clusterRegistered}\n />\n \n \n \n \n \n \n )}\n {decryptionKey ? (\n }\n >\n \n \n This will be displayed only once. It cannot be recovered.\n
    \n Use secure medium to share this key.\n
    \n {\n return false;\n }}\n >\n \n \n
    \n \n ) : null}\n
    \n
    \n );\n};\n\nexport default Inspect;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { Box } from \"@mui/material\";\nimport { Button, CopyIcon } from \"mds\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\n\nconst KeyRevealer = ({ value }: { value: string }) => {\n const [shown, setShown] = useState(false);\n\n return (\n \n {}}\n value={value}\n overlayIcon={}\n extraInputProps={{\n readOnly: true,\n }}\n overlayAction={() => navigator.clipboard.writeText(value)}\n />\n\n setShown(!shown)}\n label={\"Show/Hide\"}\n />\n \n );\n};\n\nexport default KeyRevealer;\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'RemoveRedEye');\nexports.default = _default;","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\nexports.default = _default;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"names":["_ref","iconComponent","entity","_jsx","Grid","container","children","item","xs","HelpBox","title","concat","help","_jsxs","Box","sx","_defineProperty","fontSize","breakPoints","sm","display","flexFlow","href","target","rel","inputStyles","makeStyles","theme","createStyles","_objectSpread","inputFieldStyles","InputField","props","classes","TextField","InputProps","withStyles","fieldBasic","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","label","onChange","value","id","name","_ref$type","type","_ref$autoComplete","autoComplete","_ref$disabled","disabled","_ref$multiline","multiline","_ref$tooltip","tooltip","_ref$index","index","_ref$error","error","_ref$required","required","_ref$placeholder","placeholder","min","max","overlayId","_ref$overlayIcon","overlayIcon","_ref$overlayObject","overlayObject","_ref$extraInputProps","extraInputProps","_ref$noLabelMinWidth","noLabelMinWidth","_ref$pattern","pattern","_ref$autoFocus","autoFocus","_ref$className","className","onKeyPress","onFocus","onPaste","inputProps","_useState","useState","_useState2","_slicedToArray","toggleTextInput","setToggleTextInput","inputBoxWrapperIcon","inputBoxWrapperType","VisibilityOffIcon","RemoveRedEyeIcon","React","clsx","errorInField","inputBoxContainer","InputLabel","htmlFor","noMinWidthLabel","inputLabel","tooltipContainer","Tooltip","placement","HelpIcon","fullWidth","helperText","inputRebase","IconButton","onClick","size","disableFocusRipple","disableRipple","disableTouchRipple","ExampleBlock","volumeVal","pathVal","marginBottom","dispatch","useAppDispatch","navigate","useNavigate","distributedSetup","useSelector","selDistSet","volumeName","setVolumeName","_useState3","_useState4","inspectPath","setInspectPath","_useState5","_useState6","isEncrypt","setIsEncrypt","_useState7","_useState8","decryptionKey","setDecryptionKey","_useState9","_useState10","insFileName","setInsFileName","_useState11","_useState12","isFormValid","setIsFormValid","_useState13","_useState14","volumeError","setVolumeError","_useState15","_useState16","pathError","setPathError","clusterRegistered","registeredCluster","useEffect","isVolValid","isPathValid","trim","length","slice","isValid","makeRequest","_ref4","_asyncToGenerator","_regeneratorRuntime","mark","_callee","url","wrap","_context","prev","next","fetch","method","abrupt","sent","stop","_x","apply","arguments","performInspect","_ref5","_callee3","file","volume","urlOfInspectApi","_context3","encodeURLString","then","_ref6","_callee2","res","resErr","blob","filename","decryptKey","_context2","ok","json","setErrorSnackMessage","errorMessage","message","detailedError","code","headers","get","split","getCookieValue","performDownload","_x2","catch","err","resetForm","setHelpName","Fragment","PageHeaderWrapper","actions","HelpMenu","PageLayout","RegisterCluster","compactMode","FormLayout","helpBox","InspectMenuIcon","marginTop","fontWeight","fontStyle","flex","content","height","width","backgroundColor","marginRight","flexShrink","marginLeft","color","paddingLeft","fontFamily","paddingRight","paddingTop","paddingBottom","borderRadius","border","noValidate","onSubmit","e","preventDefault","InputBox","Switch","indicatorLabels","checked","alignItems","justifyContent","Button","style","variant","DistributedOnly","ModalWrapper","modalOpen","onClose","deleteCookie","titleIcon","PasswordKeyIcon","KeyRevealer","shown","setShown","InputBoxWrapper","CopyIcon","readOnly","navigator","clipboard","writeText","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","Object","defineProperty","enumerable","_utils","createSvgIcon","createChainedFunction","validator","reason","componentNameInError","Component","propName","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","module","obj","__esModule"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/889.961090a3.chunk.js b/portal-ui/build/static/js/889.a30c4ca5.chunk.js similarity index 98% rename from portal-ui/build/static/js/889.961090a3.chunk.js rename to portal-ui/build/static/js/889.a30c4ca5.chunk.js index 561c10bfb1..3f2a7801c9 100644 --- a/portal-ui/build/static/js/889.961090a3.chunk.js +++ b/portal-ui/build/static/js/889.a30c4ca5.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[889],{20889:function(e,t,a){a.r(t);var n=a(29439),i=a(72791),r=a(26181),l=a.n(r),o=a(29945),c=a(31776),s=a(82342),u=a(23814),d=a(45248),g=a(87995),h=a(81551),p=a(56028),f=a(17420),v=a(84741),x=a(80184);t.default=function(e){var t=e.open,a=e.closeModalAndRefresh,r=e.bucketName,m=e.setReplicationRules,b=(0,h.TL)(),j=(0,i.useState)(!1),y=(0,n.Z)(j,2),S=y[0],C=y[1],k=(0,i.useState)("1"),Z=(0,n.Z)(k,2),R=Z[0],z=Z[1],B=(0,i.useState)(""),D=(0,n.Z)(B,2),I=D[0],w=D[1],T=(0,i.useState)(""),M=(0,n.Z)(T,2),W=M[0],E=M[1],L=(0,i.useState)(""),K=(0,n.Z)(L,2),N=K[0],P=K[1],A=(0,i.useState)(""),U=(0,n.Z)(A,2),_=U[0],F=U[1],O=(0,i.useState)(""),q=(0,n.Z)(O,2),V=q[0],Y=q[1],G=(0,i.useState)(""),H=(0,n.Z)(G,2),Q=H[0],J=H[1],X=(0,i.useState)(""),$=(0,n.Z)(X,2),ee=$[0],te=$[1],ae=(0,i.useState)(!0),ne=(0,n.Z)(ae,2),ie=ne[0],re=ne[1],le=(0,i.useState)(!0),oe=(0,n.Z)(le,2),ce=oe[0],se=oe[1],ue=(0,i.useState)(!0),de=(0,n.Z)(ue,2),ge=de[0],he=de[1],pe=(0,i.useState)(!0),fe=(0,n.Z)(pe,2),ve=fe[0],xe=fe[1],me=(0,i.useState)(""),be=(0,n.Z)(me,2),je=be[0],ye=be[1],Se=(0,i.useState)("async"),Ce=(0,n.Z)(Se,2),ke=Ce[0],Ze=Ce[1],Re=(0,i.useState)("100"),ze=(0,n.Z)(Re,2),Be=ze[0],De=ze[1],Ie=(0,i.useState)("Gi"),we=(0,n.Z)(Ie,2),Te=we[0],Me=we[1],We=(0,i.useState)("60"),Ee=(0,n.Z)(We,2),Le=Ee[0],Ke=Ee[1];(0,i.useEffect)((function(){if(0!==m.length){var e=m.reduce((function(e,t){return t.priority>e?t.priority:e}),0);z((e+1).toString())}else z("1")}),[m]);return(0,x.jsx)(p.Z,{modalOpen:t,onClose:function(){a()},title:"Set Bucket Replication",titleIcon:(0,x.jsx)(o.xRg,{}),children:(0,x.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),C(!0),function(){var e=[{originBucket:r,destinationBucket:Q}],t=parseInt(Le),n="".concat(ie?"https://":"http://").concat(N),i={accessKey:I,secretKey:W,targetURL:n,region:ee,bucketsRelation:e,syncMode:ke,bandwidth:"async"===ke?parseInt((0,d.Pw)(Be,Te,!0)):0,healthCheckPeriod:t,prefix:V,tags:je,replicateDeleteMarkers:ce,replicateDeletes:ge,priority:parseInt(R),storageClass:_,replicateMetadata:ve};c.h.bucketsReplication.setMultiBucketReplication(i).then((function(e){C(!1);var t=l()(e.data,"replicationState",[]);if(t.length>0){var n=t[0];return C(!1),n.errorString&&""!==n.errorString?void b((0,g.zb)({errorMessage:n.errorString,detailedError:""})):void a()}b((0,g.zb)({errorMessage:"No changes applied",detailedError:""}))})).catch((function(e){C(!1),b((0,g.zb)((0,s.g)(e.error)))}))}()},children:(0,x.jsxs)(o.ltY,{withBorders:!1,containerPadding:!1,children:[(0,x.jsx)(o.Wzg,{id:"priority",name:"priority",onChange:function(e){e.target.validity.valid&&z(e.target.value)},label:"Priority",value:R,pattern:"[0-9]*"}),(0,x.jsx)(o.Wzg,{id:"targetURL",name:"targetURL",onChange:function(e){P(e.target.value)},placeholder:"play.min.io",label:"Target URL",value:N}),(0,x.jsx)(o.rsf,{checked:ie,id:"useTLS",name:"useTLS",label:"Use TLS",onChange:function(e){re(e.target.checked)},value:"yes"}),(0,x.jsx)(o.Wzg,{id:"accessKey",name:"accessKey",onChange:function(e){w(e.target.value)},label:"Access Key",value:I}),(0,x.jsx)(o.Wzg,{id:"secretKey",name:"secretKey",onChange:function(e){E(e.target.value)},label:"Secret Key",value:W}),(0,x.jsx)(o.Wzg,{id:"targetBucket",name:"targetBucket",onChange:function(e){J(e.target.value)},label:"Target Bucket",value:Q}),(0,x.jsx)(o.Wzg,{id:"region",name:"region",onChange:function(e){te(e.target.value)},label:"Region",value:ee}),(0,x.jsx)(o.PhF,{id:"replication_mode",name:"replication_mode",onChange:function(e){Ze(e)},label:"Replication Mode",value:ke,options:[{label:"Asynchronous",value:"async"},{label:"Synchronous",value:"sync"}]}),"async"===ke&&(0,x.jsx)(o.xuv,{className:"inputItem",children:(0,x.jsx)(o.Wzg,{type:"number",id:"bandwidth_scalar",name:"bandwidth_scalar",onChange:function(e){e.target.validity.valid&&De(e.target.value)},label:"Bandwidth",value:Be,min:"0",pattern:"[0-9]*",overlayObject:(0,x.jsx)(v.Z,{id:"quota_unit",onUnitChange:function(e){Me(e)},unitSelected:Te,unitsList:(0,d.zQ)(["Ki"]),disabled:!1})})}),(0,x.jsx)(o.Wzg,{id:"healthCheck",name:"healthCheck",onChange:function(e){Ke(e.target.value)},label:"Health Check Duration",value:Le}),(0,x.jsx)(o.Wzg,{id:"storageClass",name:"storageClass",onChange:function(e){F(e.target.value)},placeholder:"STANDARD_IA,REDUCED_REDUNDANCY etc",label:"Storage Class",value:_}),(0,x.jsxs)("fieldset",{className:"inputItem",children:[(0,x.jsx)("legend",{children:"Object Filters"}),(0,x.jsx)(o.Wzg,{id:"prefix",name:"prefix",onChange:function(e){Y(e.target.value)},placeholder:"prefix",label:"Prefix",value:V}),(0,x.jsx)(f.Z,{name:"tags",label:"Tags",elements:"",onChange:function(e){ye(e)},keyPlaceholder:"Tag Key",valuePlaceholder:"Tag Value",withBorder:!0})]}),(0,x.jsxs)("fieldset",{className:"inputItem",children:[(0,x.jsx)("legend",{children:"Replication Options"}),(0,x.jsx)(o.rsf,{checked:ve,id:"metadatataSync",name:"metadatataSync",label:"Metadata Sync",onChange:function(e){xe(e.target.checked)},description:"Metadata Sync"}),(0,x.jsx)(o.rsf,{checked:ce,id:"deleteMarker",name:"deleteMarker",label:"Delete Marker",onChange:function(e){se(e.target.checked)},description:"Replicate soft deletes"}),(0,x.jsx)(o.rsf,{checked:ge,id:"repDelete",name:"repDelete",label:"Deletes",onChange:function(e){he(e.target.checked)},description:"Replicate versioned deletes"})]}),(0,x.jsxs)(o.rjZ,{item:!0,xs:12,sx:u.ID.modalButtonBar,children:[(0,x.jsx)(o.zxk,{id:"cancel",type:"button",variant:"regular",disabled:S,onClick:function(){a()},label:"Cancel"}),(0,x.jsx)(o.zxk,{id:"submit",type:"submit",variant:"callAction",color:"primary",disabled:S,label:"Save"})]})]})})})}},84741:function(e,t,a){var n=a(29439),i=a(72791),r=a(11135),l=a(25787),o=a(80911),c=a(77865),s=a(80184);t.Z=(0,l.Z)((function(e){return(0,r.Z)({buttonTrigger:{border:"#F0F2F2 1px solid",borderRadius:3,color:"#838383",backgroundColor:"#fff",fontSize:12}})}))((function(e){var t=e.classes,a=e.id,r=e.unitSelected,l=e.unitsList,u=e.disabled,d=void 0!==u&&u,g=e.onUnitChange,h=i.useState(null),p=(0,n.Z)(h,2),f=p[0],v=p[1],x=Boolean(f),m=function(e){v(null),""!==e&&g&&g(e)};return(0,s.jsxs)(i.Fragment,{children:[(0,s.jsx)("button",{id:"".concat(a,"-button"),"aria-controls":"".concat(a,"-menu"),"aria-haspopup":"true","aria-expanded":x?"true":void 0,onClick:function(e){v(e.currentTarget)},className:t.buttonTrigger,disabled:d,type:"button",children:r}),(0,s.jsx)(o.Z,{id:"".concat(a,"-menu"),"aria-labelledby":"".concat(a,"-button"),anchorEl:f,open:x,onClose:function(){m("")},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},children:l.map((function(e){return(0,s.jsx)(c.Z,{onClick:function(){return m(e.value)},children:e.label},"itemUnit-".concat(e.value,"-").concat(e.label))}))})]})}))},17420:function(e,t,a){var n=a(93433),i=a(29439),r=a(72791),l=a(26181),o=a.n(l),c=a(48573),s=a.n(c),u=a(29945),d=a(80184);t.Z=function(e){var t=e.elements,a=e.name,l=e.label,c=e.tooltip,g=void 0===c?"":c,h=e.keyPlaceholder,p=void 0===h?"":h,f=e.valuePlaceholder,v=void 0===f?"":f,x=e.onChange,m=e.withBorder,b=void 0!==m&&m,j=(0,r.useState)([""]),y=(0,i.Z)(j,2),S=y[0],C=y[1],k=(0,r.useState)([""]),Z=(0,i.Z)(k,2),R=Z[0],z=Z[1],B=(0,r.createRef)();(0,r.useEffect)((function(){if(1===S.length&&""===S[0]&&1===R.length&&""===R[0]&&t&&""!==t){var e=t.split("&"),a=[],n=[];e.forEach((function(e){var t=e.split("=");2===t.length&&(a.push(t[0]),n.push(t[1]))})),a.push(""),n.push(""),C(a),z(n)}}),[S,R,t]),(0,r.useEffect)((function(){var e=B.current;e&&S.length>1&&e.scrollIntoView(!1)}),[S]);var D=(0,r.useRef)(!0);(0,r.useLayoutEffect)((function(){D.current?D.current=!1:T()}),[S,R]);var I=function(e){e.persist();var t=(0,n.Z)(S),a=o()(e.target,"dataset.index","0");t[parseInt(a)]=e.target.value,C(t)},w=function(e){e.persist();var t=(0,n.Z)(R),a=o()(e.target,"dataset.index","0");t[parseInt(a)]=e.target.value,z(t)},T=s()((function(){var e="";S.forEach((function(t,a){if(S[a]&&R[a]){var n="".concat(t,"=").concat(R[a]);0!==a&&(n="&".concat(n)),e="".concat(e).concat(n)}})),x(e)}),500),M=R.map((function(e,t){return(0,d.jsxs)(u.rjZ,{item:!0,xs:12,className:"lineInputBoxes inputItem",children:[(0,d.jsx)(u.Wzg,{id:"".concat(a,"-key-").concat(t.toString()),label:"",name:"".concat(a,"-").concat(t.toString()),value:S[t],onChange:I,index:t,placeholder:p}),(0,d.jsx)("span",{className:"queryDiv",children:":"}),(0,d.jsx)(u.Wzg,{id:"".concat(a,"-value-").concat(t.toString()),label:"",name:"".concat(a,"-").concat(t.toString()),value:R[t],onChange:w,index:t,placeholder:v,overlayIcon:t===R.length-1?(0,d.jsx)(u.dtP,{}):null,overlayAction:function(){!function(){if(""!==S[S.length-1].trim()&&""!==R[R.length-1].trim()){var e=(0,n.Z)(S),t=(0,n.Z)(R);e.push(""),t.push(""),C(e),z(t)}}()}})]},"query-pair-".concat(a,"-").concat(t.toString()))}));return(0,d.jsx)(r.Fragment,{children:(0,d.jsxs)(u.rjZ,{item:!0,xs:12,sx:{"& .lineInputBoxes":{display:"flex"},"& .queryDiv":{alignSelf:"center",margin:"-15px 4px 0",fontWeight:600}},children:[(0,d.jsxs)(u.AZs,{children:[l,""!==g&&(0,d.jsx)(u.xuv,{sx:{marginLeft:5,display:"flex",alignItems:"center","& .min-icon":{width:13}},children:(0,d.jsx)(u.ua7,{tooltip:g,placement:"top",children:(0,d.jsx)(u.byK,{style:{width:13,height:13}})})})]}),(0,d.jsxs)(u.xuv,{withBorders:b,sx:{padding:15,height:150,overflowY:"auto",position:"relative",marginTop:15},children:[M,(0,d.jsx)("div",{ref:B})]})]})})}}}]); -//# sourceMappingURL=889.961090a3.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[889],{20889:function(e,t,a){a.r(t);var n=a(29439),i=a(72791),r=a(26181),l=a.n(r),o=a(29945),c=a(31776),s=a(82342),u=a(23814),d=a(45248),g=a(87995),h=a(44690),p=a(56028),f=a(17420),v=a(84741),x=a(80184);t.default=function(e){var t=e.open,a=e.closeModalAndRefresh,r=e.bucketName,m=e.setReplicationRules,b=(0,h.TL)(),j=(0,i.useState)(!1),y=(0,n.Z)(j,2),S=y[0],C=y[1],k=(0,i.useState)("1"),Z=(0,n.Z)(k,2),R=Z[0],z=Z[1],B=(0,i.useState)(""),D=(0,n.Z)(B,2),I=D[0],w=D[1],T=(0,i.useState)(""),M=(0,n.Z)(T,2),W=M[0],E=M[1],L=(0,i.useState)(""),K=(0,n.Z)(L,2),N=K[0],P=K[1],A=(0,i.useState)(""),U=(0,n.Z)(A,2),_=U[0],F=U[1],O=(0,i.useState)(""),q=(0,n.Z)(O,2),V=q[0],Y=q[1],G=(0,i.useState)(""),H=(0,n.Z)(G,2),Q=H[0],J=H[1],X=(0,i.useState)(""),$=(0,n.Z)(X,2),ee=$[0],te=$[1],ae=(0,i.useState)(!0),ne=(0,n.Z)(ae,2),ie=ne[0],re=ne[1],le=(0,i.useState)(!0),oe=(0,n.Z)(le,2),ce=oe[0],se=oe[1],ue=(0,i.useState)(!0),de=(0,n.Z)(ue,2),ge=de[0],he=de[1],pe=(0,i.useState)(!0),fe=(0,n.Z)(pe,2),ve=fe[0],xe=fe[1],me=(0,i.useState)(""),be=(0,n.Z)(me,2),je=be[0],ye=be[1],Se=(0,i.useState)("async"),Ce=(0,n.Z)(Se,2),ke=Ce[0],Ze=Ce[1],Re=(0,i.useState)("100"),ze=(0,n.Z)(Re,2),Be=ze[0],De=ze[1],Ie=(0,i.useState)("Gi"),we=(0,n.Z)(Ie,2),Te=we[0],Me=we[1],We=(0,i.useState)("60"),Ee=(0,n.Z)(We,2),Le=Ee[0],Ke=Ee[1];(0,i.useEffect)((function(){if(0!==m.length){var e=m.reduce((function(e,t){return t.priority>e?t.priority:e}),0);z((e+1).toString())}else z("1")}),[m]);return(0,x.jsx)(p.Z,{modalOpen:t,onClose:function(){a()},title:"Set Bucket Replication",titleIcon:(0,x.jsx)(o.xRg,{}),children:(0,x.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),C(!0),function(){var e=[{originBucket:r,destinationBucket:Q}],t=parseInt(Le),n="".concat(ie?"https://":"http://").concat(N),i={accessKey:I,secretKey:W,targetURL:n,region:ee,bucketsRelation:e,syncMode:ke,bandwidth:"async"===ke?parseInt((0,d.Pw)(Be,Te,!0)):0,healthCheckPeriod:t,prefix:V,tags:je,replicateDeleteMarkers:ce,replicateDeletes:ge,priority:parseInt(R),storageClass:_,replicateMetadata:ve};c.h.bucketsReplication.setMultiBucketReplication(i).then((function(e){C(!1);var t=l()(e.data,"replicationState",[]);if(t.length>0){var n=t[0];return C(!1),n.errorString&&""!==n.errorString?void b((0,g.zb)({errorMessage:n.errorString,detailedError:""})):void a()}b((0,g.zb)({errorMessage:"No changes applied",detailedError:""}))})).catch((function(e){C(!1),b((0,g.zb)((0,s.g)(e.error)))}))}()},children:(0,x.jsxs)(o.ltY,{withBorders:!1,containerPadding:!1,children:[(0,x.jsx)(o.Wzg,{id:"priority",name:"priority",onChange:function(e){e.target.validity.valid&&z(e.target.value)},label:"Priority",value:R,pattern:"[0-9]*"}),(0,x.jsx)(o.Wzg,{id:"targetURL",name:"targetURL",onChange:function(e){P(e.target.value)},placeholder:"play.min.io",label:"Target URL",value:N}),(0,x.jsx)(o.rsf,{checked:ie,id:"useTLS",name:"useTLS",label:"Use TLS",onChange:function(e){re(e.target.checked)},value:"yes"}),(0,x.jsx)(o.Wzg,{id:"accessKey",name:"accessKey",onChange:function(e){w(e.target.value)},label:"Access Key",value:I}),(0,x.jsx)(o.Wzg,{id:"secretKey",name:"secretKey",onChange:function(e){E(e.target.value)},label:"Secret Key",value:W}),(0,x.jsx)(o.Wzg,{id:"targetBucket",name:"targetBucket",onChange:function(e){J(e.target.value)},label:"Target Bucket",value:Q}),(0,x.jsx)(o.Wzg,{id:"region",name:"region",onChange:function(e){te(e.target.value)},label:"Region",value:ee}),(0,x.jsx)(o.PhF,{id:"replication_mode",name:"replication_mode",onChange:function(e){Ze(e)},label:"Replication Mode",value:ke,options:[{label:"Asynchronous",value:"async"},{label:"Synchronous",value:"sync"}]}),"async"===ke&&(0,x.jsx)(o.xuv,{className:"inputItem",children:(0,x.jsx)(o.Wzg,{type:"number",id:"bandwidth_scalar",name:"bandwidth_scalar",onChange:function(e){e.target.validity.valid&&De(e.target.value)},label:"Bandwidth",value:Be,min:"0",pattern:"[0-9]*",overlayObject:(0,x.jsx)(v.Z,{id:"quota_unit",onUnitChange:function(e){Me(e)},unitSelected:Te,unitsList:(0,d.zQ)(["Ki"]),disabled:!1})})}),(0,x.jsx)(o.Wzg,{id:"healthCheck",name:"healthCheck",onChange:function(e){Ke(e.target.value)},label:"Health Check Duration",value:Le}),(0,x.jsx)(o.Wzg,{id:"storageClass",name:"storageClass",onChange:function(e){F(e.target.value)},placeholder:"STANDARD_IA,REDUCED_REDUNDANCY etc",label:"Storage Class",value:_}),(0,x.jsxs)("fieldset",{className:"inputItem",children:[(0,x.jsx)("legend",{children:"Object Filters"}),(0,x.jsx)(o.Wzg,{id:"prefix",name:"prefix",onChange:function(e){Y(e.target.value)},placeholder:"prefix",label:"Prefix",value:V}),(0,x.jsx)(f.Z,{name:"tags",label:"Tags",elements:"",onChange:function(e){ye(e)},keyPlaceholder:"Tag Key",valuePlaceholder:"Tag Value",withBorder:!0})]}),(0,x.jsxs)("fieldset",{className:"inputItem",children:[(0,x.jsx)("legend",{children:"Replication Options"}),(0,x.jsx)(o.rsf,{checked:ve,id:"metadatataSync",name:"metadatataSync",label:"Metadata Sync",onChange:function(e){xe(e.target.checked)},description:"Metadata Sync"}),(0,x.jsx)(o.rsf,{checked:ce,id:"deleteMarker",name:"deleteMarker",label:"Delete Marker",onChange:function(e){se(e.target.checked)},description:"Replicate soft deletes"}),(0,x.jsx)(o.rsf,{checked:ge,id:"repDelete",name:"repDelete",label:"Deletes",onChange:function(e){he(e.target.checked)},description:"Replicate versioned deletes"})]}),(0,x.jsxs)(o.rjZ,{item:!0,xs:12,sx:u.ID.modalButtonBar,children:[(0,x.jsx)(o.zxk,{id:"cancel",type:"button",variant:"regular",disabled:S,onClick:function(){a()},label:"Cancel"}),(0,x.jsx)(o.zxk,{id:"submit",type:"submit",variant:"callAction",color:"primary",disabled:S,label:"Save"})]})]})})})}},84741:function(e,t,a){var n=a(29439),i=a(72791),r=a(11135),l=a(25787),o=a(80911),c=a(77865),s=a(80184);t.Z=(0,l.Z)((function(e){return(0,r.Z)({buttonTrigger:{border:"#F0F2F2 1px solid",borderRadius:3,color:"#838383",backgroundColor:"#fff",fontSize:12}})}))((function(e){var t=e.classes,a=e.id,r=e.unitSelected,l=e.unitsList,u=e.disabled,d=void 0!==u&&u,g=e.onUnitChange,h=i.useState(null),p=(0,n.Z)(h,2),f=p[0],v=p[1],x=Boolean(f),m=function(e){v(null),""!==e&&g&&g(e)};return(0,s.jsxs)(i.Fragment,{children:[(0,s.jsx)("button",{id:"".concat(a,"-button"),"aria-controls":"".concat(a,"-menu"),"aria-haspopup":"true","aria-expanded":x?"true":void 0,onClick:function(e){v(e.currentTarget)},className:t.buttonTrigger,disabled:d,type:"button",children:r}),(0,s.jsx)(o.Z,{id:"".concat(a,"-menu"),"aria-labelledby":"".concat(a,"-button"),anchorEl:f,open:x,onClose:function(){m("")},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},children:l.map((function(e){return(0,s.jsx)(c.Z,{onClick:function(){return m(e.value)},children:e.label},"itemUnit-".concat(e.value,"-").concat(e.label))}))})]})}))},17420:function(e,t,a){var n=a(93433),i=a(29439),r=a(72791),l=a(26181),o=a.n(l),c=a(48573),s=a.n(c),u=a(29945),d=a(80184);t.Z=function(e){var t=e.elements,a=e.name,l=e.label,c=e.tooltip,g=void 0===c?"":c,h=e.keyPlaceholder,p=void 0===h?"":h,f=e.valuePlaceholder,v=void 0===f?"":f,x=e.onChange,m=e.withBorder,b=void 0!==m&&m,j=(0,r.useState)([""]),y=(0,i.Z)(j,2),S=y[0],C=y[1],k=(0,r.useState)([""]),Z=(0,i.Z)(k,2),R=Z[0],z=Z[1],B=(0,r.createRef)();(0,r.useEffect)((function(){if(1===S.length&&""===S[0]&&1===R.length&&""===R[0]&&t&&""!==t){var e=t.split("&"),a=[],n=[];e.forEach((function(e){var t=e.split("=");2===t.length&&(a.push(t[0]),n.push(t[1]))})),a.push(""),n.push(""),C(a),z(n)}}),[S,R,t]),(0,r.useEffect)((function(){var e=B.current;e&&S.length>1&&e.scrollIntoView(!1)}),[S]);var D=(0,r.useRef)(!0);(0,r.useLayoutEffect)((function(){D.current?D.current=!1:T()}),[S,R]);var I=function(e){e.persist();var t=(0,n.Z)(S),a=o()(e.target,"dataset.index","0");t[parseInt(a)]=e.target.value,C(t)},w=function(e){e.persist();var t=(0,n.Z)(R),a=o()(e.target,"dataset.index","0");t[parseInt(a)]=e.target.value,z(t)},T=s()((function(){var e="";S.forEach((function(t,a){if(S[a]&&R[a]){var n="".concat(t,"=").concat(R[a]);0!==a&&(n="&".concat(n)),e="".concat(e).concat(n)}})),x(e)}),500),M=R.map((function(e,t){return(0,d.jsxs)(u.rjZ,{item:!0,xs:12,className:"lineInputBoxes inputItem",children:[(0,d.jsx)(u.Wzg,{id:"".concat(a,"-key-").concat(t.toString()),label:"",name:"".concat(a,"-").concat(t.toString()),value:S[t],onChange:I,index:t,placeholder:p}),(0,d.jsx)("span",{className:"queryDiv",children:":"}),(0,d.jsx)(u.Wzg,{id:"".concat(a,"-value-").concat(t.toString()),label:"",name:"".concat(a,"-").concat(t.toString()),value:R[t],onChange:w,index:t,placeholder:v,overlayIcon:t===R.length-1?(0,d.jsx)(u.dtP,{}):null,overlayAction:function(){!function(){if(""!==S[S.length-1].trim()&&""!==R[R.length-1].trim()){var e=(0,n.Z)(S),t=(0,n.Z)(R);e.push(""),t.push(""),C(e),z(t)}}()}})]},"query-pair-".concat(a,"-").concat(t.toString()))}));return(0,d.jsx)(r.Fragment,{children:(0,d.jsxs)(u.rjZ,{item:!0,xs:12,sx:{"& .lineInputBoxes":{display:"flex"},"& .queryDiv":{alignSelf:"center",margin:"-15px 4px 0",fontWeight:600}},children:[(0,d.jsxs)(u.AZs,{children:[l,""!==g&&(0,d.jsx)(u.xuv,{sx:{marginLeft:5,display:"flex",alignItems:"center","& .min-icon":{width:13}},children:(0,d.jsx)(u.ua7,{tooltip:g,placement:"top",children:(0,d.jsx)(u.byK,{style:{width:13,height:13}})})})]}),(0,d.jsxs)(u.xuv,{withBorders:b,sx:{padding:15,height:150,overflowY:"auto",position:"relative",marginTop:15},children:[M,(0,d.jsx)("div",{ref:B})]})]})})}}}]); +//# sourceMappingURL=889.a30c4ca5.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/889.961090a3.chunk.js.map b/portal-ui/build/static/js/889.a30c4ca5.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/889.961090a3.chunk.js.map rename to portal-ui/build/static/js/889.a30c4ca5.chunk.js.map index 7ee6851447..2de13d2716 100644 --- a/portal-ui/build/static/js/889.961090a3.chunk.js.map +++ b/portal-ui/build/static/js/889.a30c4ca5.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/889.961090a3.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/AddReplicationModal.tsx","screens/Console/Common/FormComponents/InputUnitMenu/InputUnitMenu.tsx","screens/Console/Common/FormComponents/QueryMultiSelector/QueryMultiSelector.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 get from \"lodash/get\";\nimport {\n Box,\n BucketReplicationIcon,\n Button,\n FormLayout,\n Grid,\n InputBox,\n Select,\n Switch,\n} from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { BucketReplicationRule } from \"../types\";\nimport { getBytes, k8sScalarUnitsExcluding } from \"../../../../common/utils\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport QueryMultiSelector from \"../../Common/FormComponents/QueryMultiSelector/QueryMultiSelector\";\nimport InputUnitMenu from \"../../Common/FormComponents/InputUnitMenu/InputUnitMenu\";\n\ninterface IReplicationModal {\n open: boolean;\n closeModalAndRefresh: () => any;\n bucketName: string;\n\n setReplicationRules: BucketReplicationRule[];\n}\n\nconst AddReplicationModal = ({\n open,\n closeModalAndRefresh,\n bucketName,\n setReplicationRules,\n}: IReplicationModal) => {\n const dispatch = useAppDispatch();\n const [addLoading, setAddLoading] = useState(false);\n const [priority, setPriority] = useState(\"1\");\n const [accessKey, setAccessKey] = useState(\"\");\n const [secretKey, setSecretKey] = useState(\"\");\n const [targetURL, setTargetURL] = useState(\"\");\n const [targetStorageClass, setTargetStorageClass] = useState(\"\");\n const [prefix, setPrefix] = useState(\"\");\n const [targetBucket, setTargetBucket] = useState(\"\");\n const [region, setRegion] = useState(\"\");\n const [useTLS, setUseTLS] = useState(true);\n const [repDeleteMarker, setRepDeleteMarker] = useState(true);\n const [repDelete, setRepDelete] = useState(true);\n const [metadataSync, setMetadataSync] = useState(true);\n const [tags, setTags] = useState(\"\");\n const [replicationMode, setReplicationMode] = useState<\"async\" | \"sync\">(\n \"async\",\n );\n const [bandwidthScalar, setBandwidthScalar] = useState(\"100\");\n const [bandwidthUnit, setBandwidthUnit] = useState(\"Gi\");\n const [healthCheck, setHealthCheck] = useState(\"60\");\n\n useEffect(() => {\n if (setReplicationRules.length === 0) {\n setPriority(\"1\");\n return;\n }\n\n const greatestValue = setReplicationRules.reduce((prevAcc, currValue) => {\n if (currValue.priority > prevAcc) {\n return currValue.priority;\n }\n return prevAcc;\n }, 0);\n\n const nextPriority = greatestValue + 1;\n setPriority(nextPriority.toString());\n }, [setReplicationRules]);\n\n const addRecord = () => {\n const replicate = [\n {\n originBucket: bucketName,\n destinationBucket: targetBucket,\n },\n ];\n\n const hc = parseInt(healthCheck);\n\n const endURL = `${useTLS ? \"https://\" : \"http://\"}${targetURL}`;\n\n const remoteBucketsInfo = {\n accessKey: accessKey,\n secretKey: secretKey,\n targetURL: endURL,\n region: region,\n bucketsRelation: replicate,\n syncMode: replicationMode,\n bandwidth:\n replicationMode === \"async\"\n ? parseInt(getBytes(bandwidthScalar, bandwidthUnit, true))\n : 0,\n healthCheckPeriod: hc,\n prefix: prefix,\n tags: tags,\n replicateDeleteMarkers: repDeleteMarker,\n replicateDeletes: repDelete,\n priority: parseInt(priority),\n storageClass: targetStorageClass,\n replicateMetadata: metadataSync,\n };\n\n api.bucketsReplication\n .setMultiBucketReplication(remoteBucketsInfo)\n .then((res) => {\n setAddLoading(false);\n\n const states = get(res.data, \"replicationState\", []);\n\n if (states.length > 0) {\n const itemVal = states[0];\n\n setAddLoading(false);\n\n if (itemVal.errorString && itemVal.errorString !== \"\") {\n dispatch(\n setModalErrorSnackMessage({\n errorMessage: itemVal.errorString,\n detailedError: \"\",\n }),\n );\n return;\n }\n\n closeModalAndRefresh();\n\n return;\n }\n dispatch(\n setModalErrorSnackMessage({\n errorMessage: \"No changes applied\",\n detailedError: \"\",\n }),\n );\n })\n .catch((err) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n return (\n {\n closeModalAndRefresh();\n }}\n title=\"Set Bucket Replication\"\n titleIcon={}\n >\n ) => {\n e.preventDefault();\n setAddLoading(true);\n addRecord();\n }}\n >\n \n ) => {\n if (e.target.validity.valid) {\n setPriority(e.target.value);\n }\n }}\n label=\"Priority\"\n value={priority}\n pattern={\"[0-9]*\"}\n />\n\n ) => {\n setTargetURL(e.target.value);\n }}\n placeholder=\"play.min.io\"\n label=\"Target URL\"\n value={targetURL}\n />\n\n {\n setUseTLS(e.target.checked);\n }}\n value=\"yes\"\n />\n\n ) => {\n setAccessKey(e.target.value);\n }}\n label=\"Access Key\"\n value={accessKey}\n />\n\n ) => {\n setSecretKey(e.target.value);\n }}\n label=\"Secret Key\"\n value={secretKey}\n />\n\n ) => {\n setTargetBucket(e.target.value);\n }}\n label=\"Target Bucket\"\n value={targetBucket}\n />\n\n ) => {\n setRegion(e.target.value);\n }}\n label=\"Region\"\n value={region}\n />\n\n {\n setReplicationMode(value as \"async\" | \"sync\");\n }}\n label=\"Replication Mode\"\n value={replicationMode}\n options={[\n { label: \"Asynchronous\", value: \"async\" },\n { label: \"Synchronous\", value: \"sync\" },\n ]}\n />\n\n {replicationMode === \"async\" && (\n \n ) => {\n if (e.target.validity.valid) {\n setBandwidthScalar(e.target.value as string);\n }\n }}\n label=\"Bandwidth\"\n value={bandwidthScalar}\n min=\"0\"\n pattern={\"[0-9]*\"}\n overlayObject={\n {\n setBandwidthUnit(newValue);\n }}\n unitSelected={bandwidthUnit}\n unitsList={k8sScalarUnitsExcluding([\"Ki\"])}\n disabled={false}\n />\n }\n />\n \n )}\n\n ) => {\n setHealthCheck(e.target.value as string);\n }}\n label=\"Health Check Duration\"\n value={healthCheck}\n />\n\n ) => {\n setTargetStorageClass(e.target.value);\n }}\n placeholder=\"STANDARD_IA,REDUCED_REDUNDANCY etc\"\n label=\"Storage Class\"\n value={targetStorageClass}\n />\n\n
    \n Object Filters\n ) => {\n setPrefix(e.target.value);\n }}\n placeholder=\"prefix\"\n label=\"Prefix\"\n value={prefix}\n />\n {\n setTags(vl);\n }}\n keyPlaceholder=\"Tag Key\"\n valuePlaceholder=\"Tag Value\"\n withBorder\n />\n
    \n
    \n Replication Options\n {\n setMetadataSync(e.target.checked);\n }}\n description={\"Metadata Sync\"}\n />\n {\n setRepDeleteMarker(e.target.checked);\n }}\n description={\"Replicate soft deletes\"}\n />\n {\n setRepDelete(e.target.checked);\n }}\n description={\"Replicate versioned deletes\"}\n />\n
    \n \n {\n closeModalAndRefresh();\n }}\n label={\"Cancel\"}\n />\n \n \n
    \n \n \n );\n};\n\nexport default AddReplicationModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { SelectorType } from \"mds\";\nimport { Menu, MenuItem } from \"@mui/material\";\n\ninterface IInputUnitBox {\n classes: any;\n id: string;\n unitSelected: string;\n unitsList: SelectorType[];\n disabled?: boolean;\n onUnitChange?: (newValue: string) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonTrigger: {\n border: \"#F0F2F2 1px solid\",\n borderRadius: 3,\n color: \"#838383\",\n backgroundColor: \"#fff\",\n fontSize: 12,\n },\n });\n\nconst InputUnitMenu = ({\n classes,\n id,\n unitSelected,\n unitsList,\n disabled = false,\n onUnitChange,\n}: IInputUnitBox) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const open = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleClose = (newUnit: string) => {\n setAnchorEl(null);\n if (newUnit !== \"\" && onUnitChange) {\n onUnitChange(newUnit);\n }\n };\n\n return (\n \n \n {unitSelected}\n \n {\n handleClose(\"\");\n }}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"center\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"center\",\n }}\n >\n {unitsList.map((unit) => (\n handleClose(unit.value)}\n key={`itemUnit-${unit.value}-${unit.label}`}\n >\n {unit.label}\n \n ))}\n \n \n );\n};\n\nexport default withStyles(styles)(InputUnitMenu);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, {\n ChangeEvent,\n createRef,\n Fragment,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport get from \"lodash/get\";\nimport debounce from \"lodash/debounce\";\nimport {\n AddIcon,\n Box,\n Grid,\n HelpIcon,\n InputBox,\n InputLabel,\n Tooltip,\n} from \"mds\";\n\ninterface IQueryMultiSelector {\n elements: string;\n name: string;\n label: string;\n tooltip?: string;\n keyPlaceholder?: string;\n valuePlaceholder?: string;\n withBorder?: boolean;\n onChange: (elements: string) => void;\n}\n\nconst QueryMultiSelector = ({\n elements,\n name,\n label,\n tooltip = \"\",\n keyPlaceholder = \"\",\n valuePlaceholder = \"\",\n onChange,\n withBorder = false,\n}: IQueryMultiSelector) => {\n const [currentKeys, setCurrentKeys] = useState([\"\"]);\n const [currentValues, setCurrentValues] = useState([\"\"]);\n const bottomList = createRef();\n\n // Use effect to get the initial values from props\n useEffect(() => {\n if (\n currentKeys.length === 1 &&\n currentKeys[0] === \"\" &&\n currentValues.length === 1 &&\n currentValues[0] === \"\" &&\n elements &&\n elements !== \"\"\n ) {\n const elementsSplit = elements.split(\"&\");\n let keys = [];\n let values = [];\n\n elementsSplit.forEach((element: string) => {\n const splittedVals = element.split(\"=\");\n if (splittedVals.length === 2) {\n keys.push(splittedVals[0]);\n values.push(splittedVals[1]);\n }\n });\n\n keys.push(\"\");\n values.push(\"\");\n\n setCurrentKeys(keys);\n setCurrentValues(values);\n }\n }, [currentKeys, currentValues, elements]);\n\n // Use effect to send new values to onChange\n useEffect(() => {\n const refScroll = bottomList.current;\n if (refScroll && currentKeys.length > 1) {\n refScroll.scrollIntoView(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentKeys]);\n\n // We avoid multiple re-renders / hang issue typing too fast\n const firstUpdate = useRef(true);\n useLayoutEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = false;\n return;\n }\n debouncedOnChange();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentKeys, currentValues]);\n\n // If the last input is not empty, we add a new one\n const addEmptyLine = () => {\n if (\n currentKeys[currentKeys.length - 1].trim() !== \"\" &&\n currentValues[currentValues.length - 1].trim() !== \"\"\n ) {\n const keysList = [...currentKeys];\n const valuesList = [...currentValues];\n\n keysList.push(\"\");\n valuesList.push(\"\");\n\n setCurrentKeys(keysList);\n setCurrentValues(valuesList);\n }\n };\n\n // Onchange function for input box, we get the dataset-index & only update that value in the array\n const onChangeKey = (e: ChangeEvent) => {\n e.persist();\n\n let updatedElement = [...currentKeys];\n const index = get(e.target, \"dataset.index\", \"0\");\n const indexNum = parseInt(index);\n updatedElement[indexNum] = e.target.value;\n\n setCurrentKeys(updatedElement);\n };\n\n const onChangeValue = (e: ChangeEvent) => {\n e.persist();\n\n let updatedElement = [...currentValues];\n const index = get(e.target, \"dataset.index\", \"0\");\n const indexNum = parseInt(index);\n updatedElement[indexNum] = e.target.value;\n\n setCurrentValues(updatedElement);\n };\n\n // Debounce for On Change\n const debouncedOnChange = debounce(() => {\n let queryString = \"\";\n\n currentKeys.forEach((keyVal, index) => {\n if (currentKeys[index] && currentValues[index]) {\n let insertString = `${keyVal}=${currentValues[index]}`;\n if (index !== 0) {\n insertString = `&${insertString}`;\n }\n queryString = `${queryString}${insertString}`;\n }\n });\n\n onChange(queryString);\n }, 500);\n\n const inputs = currentValues.map((element, index) => {\n return (\n \n \n :\n : null}\n overlayAction={() => {\n addEmptyLine();\n }}\n />\n \n );\n });\n\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n \n \n \n \n \n )}\n \n \n {inputs}\n
    \n \n \n \n );\n};\nexport default QueryMultiSelector;\n"],"names":["_ref","open","closeModalAndRefresh","bucketName","setReplicationRules","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","addLoading","setAddLoading","_useState3","_useState4","priority","setPriority","_useState5","_useState6","accessKey","setAccessKey","_useState7","_useState8","secretKey","setSecretKey","_useState9","_useState10","targetURL","setTargetURL","_useState11","_useState12","targetStorageClass","setTargetStorageClass","_useState13","_useState14","prefix","setPrefix","_useState15","_useState16","targetBucket","setTargetBucket","_useState17","_useState18","region","setRegion","_useState19","_useState20","useTLS","setUseTLS","_useState21","_useState22","repDeleteMarker","setRepDeleteMarker","_useState23","_useState24","repDelete","setRepDelete","_useState25","_useState26","metadataSync","setMetadataSync","_useState27","_useState28","tags","setTags","_useState29","_useState30","replicationMode","setReplicationMode","_useState31","_useState32","bandwidthScalar","setBandwidthScalar","_useState33","_useState34","bandwidthUnit","setBandwidthUnit","_useState35","_useState36","healthCheck","setHealthCheck","useEffect","length","greatestValue","reduce","prevAcc","currValue","toString","_jsx","ModalWrapper","modalOpen","onClose","title","titleIcon","BucketReplicationIcon","children","noValidate","autoComplete","onSubmit","e","preventDefault","replicate","originBucket","destinationBucket","hc","parseInt","endURL","concat","remoteBucketsInfo","bucketsRelation","syncMode","bandwidth","getBytes","healthCheckPeriod","replicateDeleteMarkers","replicateDeletes","storageClass","replicateMetadata","api","bucketsReplication","setMultiBucketReplication","then","res","states","get","data","itemVal","errorString","setModalErrorSnackMessage","errorMessage","detailedError","catch","err","errorToHandler","error","addRecord","_jsxs","FormLayout","withBorders","containerPadding","InputBox","id","name","onChange","target","validity","valid","value","label","pattern","placeholder","Switch","checked","Select","options","Box","className","type","min","overlayObject","InputUnitMenu","onUnitChange","newValue","unitSelected","unitsList","k8sScalarUnitsExcluding","disabled","QueryMultiSelector","elements","vl","keyPlaceholder","valuePlaceholder","withBorder","description","Grid","item","xs","sx","modalStyleUtils","modalButtonBar","Button","variant","onClick","color","withStyles","theme","createStyles","buttonTrigger","border","borderRadius","backgroundColor","fontSize","classes","_ref$disabled","_React$useState","React","_React$useState2","anchorEl","setAnchorEl","Boolean","handleClose","newUnit","Fragment","undefined","event","currentTarget","Menu","anchorOrigin","vertical","horizontal","transformOrigin","map","unit","MenuItem","_ref$tooltip","tooltip","_ref$keyPlaceholder","_ref$valuePlaceholder","_ref$withBorder","currentKeys","setCurrentKeys","currentValues","setCurrentValues","bottomList","createRef","elementsSplit","split","keys","values","forEach","element","splittedVals","push","refScroll","current","scrollIntoView","firstUpdate","useRef","useLayoutEffect","debouncedOnChange","onChangeKey","persist","updatedElement","_toConsumableArray","index","onChangeValue","debounce","queryString","keyVal","insertString","inputs","overlayIcon","AddIcon","overlayAction","trim","keysList","valuesList","addEmptyLine","display","alignSelf","margin","fontWeight","InputLabel","marginLeft","alignItems","width","Tooltip","placement","HelpIcon","style","height","padding","overflowY","position","marginTop","ref"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/889.a30c4ca5.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/AddReplicationModal.tsx","screens/Console/Common/FormComponents/InputUnitMenu/InputUnitMenu.tsx","screens/Console/Common/FormComponents/QueryMultiSelector/QueryMultiSelector.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 get from \"lodash/get\";\nimport {\n Box,\n BucketReplicationIcon,\n Button,\n FormLayout,\n Grid,\n InputBox,\n Select,\n Switch,\n} from \"mds\";\nimport { api } from \"api\";\nimport { errorToHandler } from \"api/errors\";\nimport { modalStyleUtils } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { BucketReplicationRule } from \"../types\";\nimport { getBytes, k8sScalarUnitsExcluding } from \"../../../../common/utils\";\nimport { setModalErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport QueryMultiSelector from \"../../Common/FormComponents/QueryMultiSelector/QueryMultiSelector\";\nimport InputUnitMenu from \"../../Common/FormComponents/InputUnitMenu/InputUnitMenu\";\n\ninterface IReplicationModal {\n open: boolean;\n closeModalAndRefresh: () => any;\n bucketName: string;\n\n setReplicationRules: BucketReplicationRule[];\n}\n\nconst AddReplicationModal = ({\n open,\n closeModalAndRefresh,\n bucketName,\n setReplicationRules,\n}: IReplicationModal) => {\n const dispatch = useAppDispatch();\n const [addLoading, setAddLoading] = useState(false);\n const [priority, setPriority] = useState(\"1\");\n const [accessKey, setAccessKey] = useState(\"\");\n const [secretKey, setSecretKey] = useState(\"\");\n const [targetURL, setTargetURL] = useState(\"\");\n const [targetStorageClass, setTargetStorageClass] = useState(\"\");\n const [prefix, setPrefix] = useState(\"\");\n const [targetBucket, setTargetBucket] = useState(\"\");\n const [region, setRegion] = useState(\"\");\n const [useTLS, setUseTLS] = useState(true);\n const [repDeleteMarker, setRepDeleteMarker] = useState(true);\n const [repDelete, setRepDelete] = useState(true);\n const [metadataSync, setMetadataSync] = useState(true);\n const [tags, setTags] = useState(\"\");\n const [replicationMode, setReplicationMode] = useState<\"async\" | \"sync\">(\n \"async\",\n );\n const [bandwidthScalar, setBandwidthScalar] = useState(\"100\");\n const [bandwidthUnit, setBandwidthUnit] = useState(\"Gi\");\n const [healthCheck, setHealthCheck] = useState(\"60\");\n\n useEffect(() => {\n if (setReplicationRules.length === 0) {\n setPriority(\"1\");\n return;\n }\n\n const greatestValue = setReplicationRules.reduce((prevAcc, currValue) => {\n if (currValue.priority > prevAcc) {\n return currValue.priority;\n }\n return prevAcc;\n }, 0);\n\n const nextPriority = greatestValue + 1;\n setPriority(nextPriority.toString());\n }, [setReplicationRules]);\n\n const addRecord = () => {\n const replicate = [\n {\n originBucket: bucketName,\n destinationBucket: targetBucket,\n },\n ];\n\n const hc = parseInt(healthCheck);\n\n const endURL = `${useTLS ? \"https://\" : \"http://\"}${targetURL}`;\n\n const remoteBucketsInfo = {\n accessKey: accessKey,\n secretKey: secretKey,\n targetURL: endURL,\n region: region,\n bucketsRelation: replicate,\n syncMode: replicationMode,\n bandwidth:\n replicationMode === \"async\"\n ? parseInt(getBytes(bandwidthScalar, bandwidthUnit, true))\n : 0,\n healthCheckPeriod: hc,\n prefix: prefix,\n tags: tags,\n replicateDeleteMarkers: repDeleteMarker,\n replicateDeletes: repDelete,\n priority: parseInt(priority),\n storageClass: targetStorageClass,\n replicateMetadata: metadataSync,\n };\n\n api.bucketsReplication\n .setMultiBucketReplication(remoteBucketsInfo)\n .then((res) => {\n setAddLoading(false);\n\n const states = get(res.data, \"replicationState\", []);\n\n if (states.length > 0) {\n const itemVal = states[0];\n\n setAddLoading(false);\n\n if (itemVal.errorString && itemVal.errorString !== \"\") {\n dispatch(\n setModalErrorSnackMessage({\n errorMessage: itemVal.errorString,\n detailedError: \"\",\n }),\n );\n return;\n }\n\n closeModalAndRefresh();\n\n return;\n }\n dispatch(\n setModalErrorSnackMessage({\n errorMessage: \"No changes applied\",\n detailedError: \"\",\n }),\n );\n })\n .catch((err) => {\n setAddLoading(false);\n dispatch(setModalErrorSnackMessage(errorToHandler(err.error)));\n });\n };\n\n return (\n {\n closeModalAndRefresh();\n }}\n title=\"Set Bucket Replication\"\n titleIcon={}\n >\n ) => {\n e.preventDefault();\n setAddLoading(true);\n addRecord();\n }}\n >\n \n ) => {\n if (e.target.validity.valid) {\n setPriority(e.target.value);\n }\n }}\n label=\"Priority\"\n value={priority}\n pattern={\"[0-9]*\"}\n />\n\n ) => {\n setTargetURL(e.target.value);\n }}\n placeholder=\"play.min.io\"\n label=\"Target URL\"\n value={targetURL}\n />\n\n {\n setUseTLS(e.target.checked);\n }}\n value=\"yes\"\n />\n\n ) => {\n setAccessKey(e.target.value);\n }}\n label=\"Access Key\"\n value={accessKey}\n />\n\n ) => {\n setSecretKey(e.target.value);\n }}\n label=\"Secret Key\"\n value={secretKey}\n />\n\n ) => {\n setTargetBucket(e.target.value);\n }}\n label=\"Target Bucket\"\n value={targetBucket}\n />\n\n ) => {\n setRegion(e.target.value);\n }}\n label=\"Region\"\n value={region}\n />\n\n {\n setReplicationMode(value as \"async\" | \"sync\");\n }}\n label=\"Replication Mode\"\n value={replicationMode}\n options={[\n { label: \"Asynchronous\", value: \"async\" },\n { label: \"Synchronous\", value: \"sync\" },\n ]}\n />\n\n {replicationMode === \"async\" && (\n \n ) => {\n if (e.target.validity.valid) {\n setBandwidthScalar(e.target.value as string);\n }\n }}\n label=\"Bandwidth\"\n value={bandwidthScalar}\n min=\"0\"\n pattern={\"[0-9]*\"}\n overlayObject={\n {\n setBandwidthUnit(newValue);\n }}\n unitSelected={bandwidthUnit}\n unitsList={k8sScalarUnitsExcluding([\"Ki\"])}\n disabled={false}\n />\n }\n />\n \n )}\n\n ) => {\n setHealthCheck(e.target.value as string);\n }}\n label=\"Health Check Duration\"\n value={healthCheck}\n />\n\n ) => {\n setTargetStorageClass(e.target.value);\n }}\n placeholder=\"STANDARD_IA,REDUCED_REDUNDANCY etc\"\n label=\"Storage Class\"\n value={targetStorageClass}\n />\n\n
    \n Object Filters\n ) => {\n setPrefix(e.target.value);\n }}\n placeholder=\"prefix\"\n label=\"Prefix\"\n value={prefix}\n />\n {\n setTags(vl);\n }}\n keyPlaceholder=\"Tag Key\"\n valuePlaceholder=\"Tag Value\"\n withBorder\n />\n
    \n
    \n Replication Options\n {\n setMetadataSync(e.target.checked);\n }}\n description={\"Metadata Sync\"}\n />\n {\n setRepDeleteMarker(e.target.checked);\n }}\n description={\"Replicate soft deletes\"}\n />\n {\n setRepDelete(e.target.checked);\n }}\n description={\"Replicate versioned deletes\"}\n />\n
    \n \n {\n closeModalAndRefresh();\n }}\n label={\"Cancel\"}\n />\n \n \n
    \n \n \n );\n};\n\nexport default AddReplicationModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { SelectorType } from \"mds\";\nimport { Menu, MenuItem } from \"@mui/material\";\n\ninterface IInputUnitBox {\n classes: any;\n id: string;\n unitSelected: string;\n unitsList: SelectorType[];\n disabled?: boolean;\n onUnitChange?: (newValue: string) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonTrigger: {\n border: \"#F0F2F2 1px solid\",\n borderRadius: 3,\n color: \"#838383\",\n backgroundColor: \"#fff\",\n fontSize: 12,\n },\n });\n\nconst InputUnitMenu = ({\n classes,\n id,\n unitSelected,\n unitsList,\n disabled = false,\n onUnitChange,\n}: IInputUnitBox) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const open = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleClose = (newUnit: string) => {\n setAnchorEl(null);\n if (newUnit !== \"\" && onUnitChange) {\n onUnitChange(newUnit);\n }\n };\n\n return (\n \n \n {unitSelected}\n \n {\n handleClose(\"\");\n }}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"center\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"center\",\n }}\n >\n {unitsList.map((unit) => (\n handleClose(unit.value)}\n key={`itemUnit-${unit.value}-${unit.label}`}\n >\n {unit.label}\n \n ))}\n \n \n );\n};\n\nexport default withStyles(styles)(InputUnitMenu);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, {\n ChangeEvent,\n createRef,\n Fragment,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport get from \"lodash/get\";\nimport debounce from \"lodash/debounce\";\nimport {\n AddIcon,\n Box,\n Grid,\n HelpIcon,\n InputBox,\n InputLabel,\n Tooltip,\n} from \"mds\";\n\ninterface IQueryMultiSelector {\n elements: string;\n name: string;\n label: string;\n tooltip?: string;\n keyPlaceholder?: string;\n valuePlaceholder?: string;\n withBorder?: boolean;\n onChange: (elements: string) => void;\n}\n\nconst QueryMultiSelector = ({\n elements,\n name,\n label,\n tooltip = \"\",\n keyPlaceholder = \"\",\n valuePlaceholder = \"\",\n onChange,\n withBorder = false,\n}: IQueryMultiSelector) => {\n const [currentKeys, setCurrentKeys] = useState([\"\"]);\n const [currentValues, setCurrentValues] = useState([\"\"]);\n const bottomList = createRef();\n\n // Use effect to get the initial values from props\n useEffect(() => {\n if (\n currentKeys.length === 1 &&\n currentKeys[0] === \"\" &&\n currentValues.length === 1 &&\n currentValues[0] === \"\" &&\n elements &&\n elements !== \"\"\n ) {\n const elementsSplit = elements.split(\"&\");\n let keys = [];\n let values = [];\n\n elementsSplit.forEach((element: string) => {\n const splittedVals = element.split(\"=\");\n if (splittedVals.length === 2) {\n keys.push(splittedVals[0]);\n values.push(splittedVals[1]);\n }\n });\n\n keys.push(\"\");\n values.push(\"\");\n\n setCurrentKeys(keys);\n setCurrentValues(values);\n }\n }, [currentKeys, currentValues, elements]);\n\n // Use effect to send new values to onChange\n useEffect(() => {\n const refScroll = bottomList.current;\n if (refScroll && currentKeys.length > 1) {\n refScroll.scrollIntoView(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentKeys]);\n\n // We avoid multiple re-renders / hang issue typing too fast\n const firstUpdate = useRef(true);\n useLayoutEffect(() => {\n if (firstUpdate.current) {\n firstUpdate.current = false;\n return;\n }\n debouncedOnChange();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentKeys, currentValues]);\n\n // If the last input is not empty, we add a new one\n const addEmptyLine = () => {\n if (\n currentKeys[currentKeys.length - 1].trim() !== \"\" &&\n currentValues[currentValues.length - 1].trim() !== \"\"\n ) {\n const keysList = [...currentKeys];\n const valuesList = [...currentValues];\n\n keysList.push(\"\");\n valuesList.push(\"\");\n\n setCurrentKeys(keysList);\n setCurrentValues(valuesList);\n }\n };\n\n // Onchange function for input box, we get the dataset-index & only update that value in the array\n const onChangeKey = (e: ChangeEvent) => {\n e.persist();\n\n let updatedElement = [...currentKeys];\n const index = get(e.target, \"dataset.index\", \"0\");\n const indexNum = parseInt(index);\n updatedElement[indexNum] = e.target.value;\n\n setCurrentKeys(updatedElement);\n };\n\n const onChangeValue = (e: ChangeEvent) => {\n e.persist();\n\n let updatedElement = [...currentValues];\n const index = get(e.target, \"dataset.index\", \"0\");\n const indexNum = parseInt(index);\n updatedElement[indexNum] = e.target.value;\n\n setCurrentValues(updatedElement);\n };\n\n // Debounce for On Change\n const debouncedOnChange = debounce(() => {\n let queryString = \"\";\n\n currentKeys.forEach((keyVal, index) => {\n if (currentKeys[index] && currentValues[index]) {\n let insertString = `${keyVal}=${currentValues[index]}`;\n if (index !== 0) {\n insertString = `&${insertString}`;\n }\n queryString = `${queryString}${insertString}`;\n }\n });\n\n onChange(queryString);\n }, 500);\n\n const inputs = currentValues.map((element, index) => {\n return (\n \n \n :\n : null}\n overlayAction={() => {\n addEmptyLine();\n }}\n />\n \n );\n });\n\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n \n \n \n \n \n )}\n \n \n {inputs}\n
    \n \n \n \n );\n};\nexport default QueryMultiSelector;\n"],"names":["_ref","open","closeModalAndRefresh","bucketName","setReplicationRules","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","addLoading","setAddLoading","_useState3","_useState4","priority","setPriority","_useState5","_useState6","accessKey","setAccessKey","_useState7","_useState8","secretKey","setSecretKey","_useState9","_useState10","targetURL","setTargetURL","_useState11","_useState12","targetStorageClass","setTargetStorageClass","_useState13","_useState14","prefix","setPrefix","_useState15","_useState16","targetBucket","setTargetBucket","_useState17","_useState18","region","setRegion","_useState19","_useState20","useTLS","setUseTLS","_useState21","_useState22","repDeleteMarker","setRepDeleteMarker","_useState23","_useState24","repDelete","setRepDelete","_useState25","_useState26","metadataSync","setMetadataSync","_useState27","_useState28","tags","setTags","_useState29","_useState30","replicationMode","setReplicationMode","_useState31","_useState32","bandwidthScalar","setBandwidthScalar","_useState33","_useState34","bandwidthUnit","setBandwidthUnit","_useState35","_useState36","healthCheck","setHealthCheck","useEffect","length","greatestValue","reduce","prevAcc","currValue","toString","_jsx","ModalWrapper","modalOpen","onClose","title","titleIcon","BucketReplicationIcon","children","noValidate","autoComplete","onSubmit","e","preventDefault","replicate","originBucket","destinationBucket","hc","parseInt","endURL","concat","remoteBucketsInfo","bucketsRelation","syncMode","bandwidth","getBytes","healthCheckPeriod","replicateDeleteMarkers","replicateDeletes","storageClass","replicateMetadata","api","bucketsReplication","setMultiBucketReplication","then","res","states","get","data","itemVal","errorString","setModalErrorSnackMessage","errorMessage","detailedError","catch","err","errorToHandler","error","addRecord","_jsxs","FormLayout","withBorders","containerPadding","InputBox","id","name","onChange","target","validity","valid","value","label","pattern","placeholder","Switch","checked","Select","options","Box","className","type","min","overlayObject","InputUnitMenu","onUnitChange","newValue","unitSelected","unitsList","k8sScalarUnitsExcluding","disabled","QueryMultiSelector","elements","vl","keyPlaceholder","valuePlaceholder","withBorder","description","Grid","item","xs","sx","modalStyleUtils","modalButtonBar","Button","variant","onClick","color","withStyles","theme","createStyles","buttonTrigger","border","borderRadius","backgroundColor","fontSize","classes","_ref$disabled","_React$useState","React","_React$useState2","anchorEl","setAnchorEl","Boolean","handleClose","newUnit","Fragment","undefined","event","currentTarget","Menu","anchorOrigin","vertical","horizontal","transformOrigin","map","unit","MenuItem","_ref$tooltip","tooltip","_ref$keyPlaceholder","_ref$valuePlaceholder","_ref$withBorder","currentKeys","setCurrentKeys","currentValues","setCurrentValues","bottomList","createRef","elementsSplit","split","keys","values","forEach","element","splittedVals","push","refScroll","current","scrollIntoView","firstUpdate","useRef","useLayoutEffect","debouncedOnChange","onChangeKey","persist","updatedElement","_toConsumableArray","index","onChangeValue","debounce","queryString","keyVal","insertString","inputs","overlayIcon","AddIcon","overlayAction","trim","keysList","valuesList","addEmptyLine","display","alignSelf","margin","fontWeight","InputLabel","marginLeft","alignItems","width","Tooltip","placement","HelpIcon","style","height","padding","overflowY","position","marginTop","ref"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/8896.ef691d94.chunk.js b/portal-ui/build/static/js/8896.dbf5cc38.chunk.js similarity index 84% rename from portal-ui/build/static/js/8896.ef691d94.chunk.js rename to portal-ui/build/static/js/8896.dbf5cc38.chunk.js index 0767630000..bc2d4841fc 100644 --- a/portal-ui/build/static/js/8896.ef691d94.chunk.js +++ b/portal-ui/build/static/js/8896.dbf5cc38.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[8896],{88896:function(e,n,t){t.r(n);var r=t(37762),o=t(29439),l=t(72791),u=t(29945),i=t(45248),c=t(87995),a=t(81551),s=t(23508),f=t(9505),h=t(80184);n.default=function(e){var n=e.selectedGroups,t=e.deleteOpen,p=e.closeDeleteModalAndRefresh,d=(0,a.TL)(),g=(0,f.Z)((function(){return p(!0)}),(function(e){d((0,c.Ih)(e)),p(!1)})),v=(0,o.Z)(g,2),x=v[0],j=v[1];if(!n)return null;var m=n.map((function(e){return(0,h.jsx)("div",{children:(0,h.jsx)("b",{children:e})},e)}));return(0,h.jsx)(s.Z,{title:"Delete Group".concat(n.length>1?"s":""),confirmText:"Delete",isOpen:t,titleIcon:(0,h.jsx)(u.NvT,{}),isLoading:x,onConfirm:function(){var e,t=(0,r.Z)(n);try{for(t.s();!(e=t.n()).done;){var o=e.value;j("DELETE","/api/v1/group/".concat((0,i.LL)(o)))}}catch(l){t.e(l)}finally{t.f()}},onClose:function(){return p(!1)},confirmationContent:(0,h.jsxs)(l.Fragment,{children:["Are you sure you want to delete the following"," ",1===n.length?"":n.length," group",n.length>1?"s?":"?",m]})})}}}]); -//# sourceMappingURL=8896.ef691d94.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[8896],{88896:function(e,n,t){t.r(n);var r=t(37762),o=t(29439),l=t(72791),u=t(29945),i=t(45248),c=t(87995),a=t(44690),s=t(23508),f=t(9505),h=t(80184);n.default=function(e){var n=e.selectedGroups,t=e.deleteOpen,p=e.closeDeleteModalAndRefresh,d=(0,a.TL)(),g=(0,f.Z)((function(){return p(!0)}),(function(e){d((0,c.Ih)(e)),p(!1)})),v=(0,o.Z)(g,2),x=v[0],j=v[1];if(!n)return null;var m=n.map((function(e){return(0,h.jsx)("div",{children:(0,h.jsx)("b",{children:e})},e)}));return(0,h.jsx)(s.Z,{title:"Delete Group".concat(n.length>1?"s":""),confirmText:"Delete",isOpen:t,titleIcon:(0,h.jsx)(u.NvT,{}),isLoading:x,onConfirm:function(){var e,t=(0,r.Z)(n);try{for(t.s();!(e=t.n()).done;){var o=e.value;j("DELETE","/api/v1/group/".concat((0,i.LL)(o)))}}catch(l){t.e(l)}finally{t.f()}},onClose:function(){return p(!1)},confirmationContent:(0,h.jsxs)(l.Fragment,{children:["Are you sure you want to delete the following"," ",1===n.length?"":n.length," group",n.length>1?"s?":"?",m]})})}}}]); +//# sourceMappingURL=8896.dbf5cc38.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/8896.ef691d94.chunk.js.map b/portal-ui/build/static/js/8896.dbf5cc38.chunk.js.map similarity index 98% rename from portal-ui/build/static/js/8896.ef691d94.chunk.js.map rename to portal-ui/build/static/js/8896.dbf5cc38.chunk.js.map index d3c07fc62e..da4f65f716 100644 --- a/portal-ui/build/static/js/8896.ef691d94.chunk.js.map +++ b/portal-ui/build/static/js/8896.dbf5cc38.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/8896.ef691d94.chunk.js","mappings":"qOAkFA,UAnDoB,SAAHA,GAII,IAHnBC,EAAcD,EAAdC,eACAC,EAAUF,EAAVE,WACAC,EAA0BH,EAA1BG,2BAEMC,GAAWC,EAAAA,EAAAA,MAQjBC,GAAyCC,EAAAA,EAAAA,IAPpB,WAAH,OAASJ,GAA2B,EAAM,IACzC,SAACK,GAClBJ,GAASK,EAAAA,EAAAA,IAAqBD,IAC9BL,GAA2B,EAC7B,IAGyEO,GAAAC,EAAAA,EAAAA,GAAAL,EAAA,GAAlEM,EAAaF,EAAA,GAAEG,EAAeH,EAAA,GAErC,IAAKT,EACH,OAAO,KAET,IAMMa,EAAeb,EAAec,KAAI,SAACC,GAAK,OAC5CC,EAAAA,EAAAA,KAAA,OAAAC,UACED,EAAAA,EAAAA,KAAA,KAAAC,SAAIF,KADIA,EAEJ,IAGR,OACEC,EAAAA,EAAAA,KAACE,EAAAA,EAAa,CACZC,MAAK,eAAAC,OAAiBpB,EAAeqB,OAAS,EAAI,IAAM,IACxDC,YAAa,SACbC,OAAQtB,EACRuB,WAAWR,EAAAA,EAAAA,KAACS,EAAAA,IAAiB,IAC7BC,UAAWf,EACXgB,UAnBmB,WAAO,IACIC,EADLC,GAAAC,EAAAA,EAAAA,GACT9B,GAAc,IAAhC,IAAA6B,EAAAE,MAAAH,EAAAC,EAAAG,KAAAC,MAAkC,CAAC,IAA1BlB,EAAKa,EAAAM,MACZtB,EAAgB,SAAS,iBAADQ,QAAmBe,EAAAA,EAAAA,IAAgBpB,IAC7D,CAAC,OAAAR,GAAAsB,EAAAO,EAAA7B,EAAA,SAAAsB,EAAAQ,GAAA,CACH,EAgBIC,QA3BY,WAAH,OAASpC,GAA2B,EAAO,EA4BpDqC,qBACEC,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAxB,SAAA,CAAC,gDACsC,IACnB,IAA1BjB,EAAeqB,OAAe,GAAKrB,EAAeqB,OAAO,SACzDrB,EAAeqB,OAAS,EAAI,KAAO,IACnCR,MAKX,C","sources":["screens/Console/Groups/DeleteGroup.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport useApi from \"../Common/Hooks/useApi\";\n\ninterface IDeleteGroup {\n selectedGroups: string[];\n deleteOpen: boolean;\n closeDeleteModalAndRefresh: any;\n}\n\nconst DeleteGroup = ({\n selectedGroups,\n deleteOpen,\n closeDeleteModalAndRefresh,\n}: IDeleteGroup) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n closeDeleteModalAndRefresh(false);\n };\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n if (!selectedGroups) {\n return null;\n }\n const onDeleteGroups = () => {\n for (let group of selectedGroups) {\n invokeDeleteApi(\"DELETE\", `/api/v1/group/${encodeURLString(group)}`);\n }\n };\n\n const renderGroups = selectedGroups.map((group) => (\n
    \n {group}\n
    \n ));\n\n return (\n 1 ? \"s\" : \"\"}`}\n confirmText={\"Delete\"}\n isOpen={deleteOpen}\n titleIcon={}\n isLoading={deleteLoading}\n onConfirm={onDeleteGroups}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the following{\" \"}\n {selectedGroups.length === 1 ? \"\" : selectedGroups.length} group\n {selectedGroups.length > 1 ? \"s?\" : \"?\"}\n {renderGroups}\n \n }\n />\n );\n};\n\nexport default DeleteGroup;\n"],"names":["_ref","selectedGroups","deleteOpen","closeDeleteModalAndRefresh","dispatch","useAppDispatch","_useApi","useApi","err","setErrorSnackMessage","_useApi2","_slicedToArray","deleteLoading","invokeDeleteApi","renderGroups","map","group","_jsx","children","ConfirmDialog","title","concat","length","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","_step","_iterator","_createForOfIteratorHelper","s","n","done","value","encodeURLString","e","f","onClose","confirmationContent","_jsxs","Fragment"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/8896.dbf5cc38.chunk.js","mappings":"qOAkFA,UAnDoB,SAAHA,GAII,IAHnBC,EAAcD,EAAdC,eACAC,EAAUF,EAAVE,WACAC,EAA0BH,EAA1BG,2BAEMC,GAAWC,EAAAA,EAAAA,MAQjBC,GAAyCC,EAAAA,EAAAA,IAPpB,WAAH,OAASJ,GAA2B,EAAM,IACzC,SAACK,GAClBJ,GAASK,EAAAA,EAAAA,IAAqBD,IAC9BL,GAA2B,EAC7B,IAGyEO,GAAAC,EAAAA,EAAAA,GAAAL,EAAA,GAAlEM,EAAaF,EAAA,GAAEG,EAAeH,EAAA,GAErC,IAAKT,EACH,OAAO,KAET,IAMMa,EAAeb,EAAec,KAAI,SAACC,GAAK,OAC5CC,EAAAA,EAAAA,KAAA,OAAAC,UACED,EAAAA,EAAAA,KAAA,KAAAC,SAAIF,KADIA,EAEJ,IAGR,OACEC,EAAAA,EAAAA,KAACE,EAAAA,EAAa,CACZC,MAAK,eAAAC,OAAiBpB,EAAeqB,OAAS,EAAI,IAAM,IACxDC,YAAa,SACbC,OAAQtB,EACRuB,WAAWR,EAAAA,EAAAA,KAACS,EAAAA,IAAiB,IAC7BC,UAAWf,EACXgB,UAnBmB,WAAO,IACIC,EADLC,GAAAC,EAAAA,EAAAA,GACT9B,GAAc,IAAhC,IAAA6B,EAAAE,MAAAH,EAAAC,EAAAG,KAAAC,MAAkC,CAAC,IAA1BlB,EAAKa,EAAAM,MACZtB,EAAgB,SAAS,iBAADQ,QAAmBe,EAAAA,EAAAA,IAAgBpB,IAC7D,CAAC,OAAAR,GAAAsB,EAAAO,EAAA7B,EAAA,SAAAsB,EAAAQ,GAAA,CACH,EAgBIC,QA3BY,WAAH,OAASpC,GAA2B,EAAO,EA4BpDqC,qBACEC,EAAAA,EAAAA,MAACC,EAAAA,SAAQ,CAAAxB,SAAA,CAAC,gDACsC,IACnB,IAA1BjB,EAAeqB,OAAe,GAAKrB,EAAeqB,OAAO,SACzDrB,EAAeqB,OAAS,EAAI,KAAO,IACnCR,MAKX,C","sources":["screens/Console/Groups/DeleteGroup.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport ConfirmDialog from \"../Common/ModalWrapper/ConfirmDialog\";\nimport useApi from \"../Common/Hooks/useApi\";\n\ninterface IDeleteGroup {\n selectedGroups: string[];\n deleteOpen: boolean;\n closeDeleteModalAndRefresh: any;\n}\n\nconst DeleteGroup = ({\n selectedGroups,\n deleteOpen,\n closeDeleteModalAndRefresh,\n}: IDeleteGroup) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n closeDeleteModalAndRefresh(false);\n };\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n if (!selectedGroups) {\n return null;\n }\n const onDeleteGroups = () => {\n for (let group of selectedGroups) {\n invokeDeleteApi(\"DELETE\", `/api/v1/group/${encodeURLString(group)}`);\n }\n };\n\n const renderGroups = selectedGroups.map((group) => (\n
    \n {group}\n
    \n ));\n\n return (\n 1 ? \"s\" : \"\"}`}\n confirmText={\"Delete\"}\n isOpen={deleteOpen}\n titleIcon={}\n isLoading={deleteLoading}\n onConfirm={onDeleteGroups}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the following{\" \"}\n {selectedGroups.length === 1 ? \"\" : selectedGroups.length} group\n {selectedGroups.length > 1 ? \"s?\" : \"?\"}\n {renderGroups}\n \n }\n />\n );\n};\n\nexport default DeleteGroup;\n"],"names":["_ref","selectedGroups","deleteOpen","closeDeleteModalAndRefresh","dispatch","useAppDispatch","_useApi","useApi","err","setErrorSnackMessage","_useApi2","_slicedToArray","deleteLoading","invokeDeleteApi","renderGroups","map","group","_jsx","children","ConfirmDialog","title","concat","length","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","_step","_iterator","_createForOfIteratorHelper","s","n","done","value","encodeURLString","e","f","onClose","confirmationContent","_jsxs","Fragment"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/8990.17dc8411.chunk.js b/portal-ui/build/static/js/8990.58d88bc9.chunk.js similarity index 85% rename from portal-ui/build/static/js/8990.17dc8411.chunk.js rename to portal-ui/build/static/js/8990.58d88bc9.chunk.js index 4d9e027dd3..437d00f19b 100644 --- a/portal-ui/build/static/js/8990.17dc8411.chunk.js +++ b/portal-ui/build/static/js/8990.58d88bc9.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[8990],{8990:function(e,n,t){t.r(n);var o=t(29439),u=t(72791),c=t(29945),r=t(87995),s=t(81551),i=t(9505),l=t(23508),a=t(80184);n.default=function(e){var n=e.onClose,t=e.modalOpen,f=e.bucket,p=e.toDelete,h=(0,s.TL)(),k=(0,i.Z)((function(){return n()}),(function(e){return h((0,r.Ih)(e))})),m=(0,o.Z)(k,2),C=m[0],d=m[1];return(0,a.jsx)(l.Z,{title:"Delete Anonymous Access Rule",confirmText:"Delete",isOpen:t,isLoading:C,onConfirm:function(){d("DELETE","/api/v1/bucket/".concat(f,"/access-rules"),{prefix:p})},titleIcon:(0,a.jsx)(c.NvT,{}),onClose:n,confirmationContent:(0,a.jsx)(u.Fragment,{children:"Are you sure you want to delete this access rule?"})})}}}]); -//# sourceMappingURL=8990.17dc8411.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[8990],{8990:function(e,n,t){t.r(n);var o=t(29439),u=t(72791),c=t(29945),r=t(87995),s=t(44690),i=t(9505),l=t(23508),a=t(80184);n.default=function(e){var n=e.onClose,t=e.modalOpen,f=e.bucket,p=e.toDelete,h=(0,s.TL)(),k=(0,i.Z)((function(){return n()}),(function(e){return h((0,r.Ih)(e))})),m=(0,o.Z)(k,2),C=m[0],d=m[1];return(0,a.jsx)(l.Z,{title:"Delete Anonymous Access Rule",confirmText:"Delete",isOpen:t,isLoading:C,onConfirm:function(){d("DELETE","/api/v1/bucket/".concat(f,"/access-rules"),{prefix:p})},titleIcon:(0,a.jsx)(c.NvT,{}),onClose:n,confirmationContent:(0,a.jsx)(u.Fragment,{children:"Are you sure you want to delete this access rule?"})})}}}]); +//# sourceMappingURL=8990.58d88bc9.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/8990.17dc8411.chunk.js.map b/portal-ui/build/static/js/8990.58d88bc9.chunk.js.map similarity index 98% rename from portal-ui/build/static/js/8990.17dc8411.chunk.js.map rename to portal-ui/build/static/js/8990.58d88bc9.chunk.js.map index c4561c2387..9004b2a2f9 100644 --- a/portal-ui/build/static/js/8990.17dc8411.chunk.js.map +++ b/portal-ui/build/static/js/8990.58d88bc9.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/8990.17dc8411.chunk.js","mappings":"8MAkEA,UAnCyB,SAAHA,GAKI,IAJxBC,EAAOD,EAAPC,QACAC,EAASF,EAATE,UACAC,EAAMH,EAANG,OACAC,EAAQJ,EAARI,SAEMC,GAAWC,EAAAA,EAAAA,MAKjBC,GAAyCC,EAAAA,EAAAA,IAJpB,WAAH,OAASP,GAAU,IAClB,SAACQ,GAAyB,OAC3CJ,GAASK,EAAAA,EAAAA,IAAqBD,GAAM,IAEmCE,GAAAC,EAAAA,EAAAA,GAAAL,EAAA,GAAlEM,EAAaF,EAAA,GAAEG,EAAeH,EAAA,GAQrC,OACEI,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CACZC,MAAK,+BACLC,YAAa,SACbC,OAAQjB,EACRkB,UAAWP,EACXQ,UAZoB,WACtBP,EAAgB,SAAS,kBAADQ,OAAoBnB,EAAM,iBAAiB,CACjEoB,OAAQnB,GAEZ,EASIoB,WAAWT,EAAAA,EAAAA,KAACU,EAAAA,IAAiB,IAC7BxB,QAASA,EACTyB,qBACEX,EAAAA,EAAAA,KAACY,EAAAA,SAAQ,CAAAC,SAAC,uDAIlB,C","sources":["screens/Console/Buckets/BucketDetails/DeleteAccessRule.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\n\ninterface IDeleteAccessRule {\n modalOpen: boolean;\n onClose: () => any;\n bucket: string;\n toDelete: string;\n}\n\nconst DeleteAccessRule = ({\n onClose,\n modalOpen,\n bucket,\n toDelete,\n}: IDeleteAccessRule) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = () => onClose();\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n const onConfirmDelete = () => {\n invokeDeleteApi(\"DELETE\", `/api/v1/bucket/${bucket}/access-rules`, {\n prefix: toDelete,\n });\n };\n\n return (\n }\n onClose={onClose}\n confirmationContent={\n Are you sure you want to delete this access rule?\n }\n />\n );\n};\n\nexport default DeleteAccessRule;\n"],"names":["_ref","onClose","modalOpen","bucket","toDelete","dispatch","useAppDispatch","_useApi","useApi","err","setErrorSnackMessage","_useApi2","_slicedToArray","deleteLoading","invokeDeleteApi","_jsx","ConfirmDialog","title","confirmText","isOpen","isLoading","onConfirm","concat","prefix","titleIcon","ConfirmDeleteIcon","confirmationContent","Fragment","children"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/8990.58d88bc9.chunk.js","mappings":"8MAkEA,UAnCyB,SAAHA,GAKI,IAJxBC,EAAOD,EAAPC,QACAC,EAASF,EAATE,UACAC,EAAMH,EAANG,OACAC,EAAQJ,EAARI,SAEMC,GAAWC,EAAAA,EAAAA,MAKjBC,GAAyCC,EAAAA,EAAAA,IAJpB,WAAH,OAASP,GAAU,IAClB,SAACQ,GAAyB,OAC3CJ,GAASK,EAAAA,EAAAA,IAAqBD,GAAM,IAEmCE,GAAAC,EAAAA,EAAAA,GAAAL,EAAA,GAAlEM,EAAaF,EAAA,GAAEG,EAAeH,EAAA,GAQrC,OACEI,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CACZC,MAAK,+BACLC,YAAa,SACbC,OAAQjB,EACRkB,UAAWP,EACXQ,UAZoB,WACtBP,EAAgB,SAAS,kBAADQ,OAAoBnB,EAAM,iBAAiB,CACjEoB,OAAQnB,GAEZ,EASIoB,WAAWT,EAAAA,EAAAA,KAACU,EAAAA,IAAiB,IAC7BxB,QAASA,EACTyB,qBACEX,EAAAA,EAAAA,KAACY,EAAAA,SAAQ,CAAAC,SAAC,uDAIlB,C","sources":["screens/Console/Buckets/BucketDetails/DeleteAccessRule.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\n\ninterface IDeleteAccessRule {\n modalOpen: boolean;\n onClose: () => any;\n bucket: string;\n toDelete: string;\n}\n\nconst DeleteAccessRule = ({\n onClose,\n modalOpen,\n bucket,\n toDelete,\n}: IDeleteAccessRule) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = () => onClose();\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n const onConfirmDelete = () => {\n invokeDeleteApi(\"DELETE\", `/api/v1/bucket/${bucket}/access-rules`, {\n prefix: toDelete,\n });\n };\n\n return (\n }\n onClose={onClose}\n confirmationContent={\n Are you sure you want to delete this access rule?\n }\n />\n );\n};\n\nexport default DeleteAccessRule;\n"],"names":["_ref","onClose","modalOpen","bucket","toDelete","dispatch","useAppDispatch","_useApi","useApi","err","setErrorSnackMessage","_useApi2","_slicedToArray","deleteLoading","invokeDeleteApi","_jsx","ConfirmDialog","title","confirmText","isOpen","isLoading","onConfirm","concat","prefix","titleIcon","ConfirmDeleteIcon","confirmationContent","Fragment","children"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/9088.9dd285c2.chunk.js b/portal-ui/build/static/js/9088.b641525f.chunk.js similarity index 94% rename from portal-ui/build/static/js/9088.9dd285c2.chunk.js rename to portal-ui/build/static/js/9088.b641525f.chunk.js index 4606bd9464..f53bff870c 100644 --- a/portal-ui/build/static/js/9088.9dd285c2.chunk.js +++ b/portal-ui/build/static/js/9088.b641525f.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[9088],{69088:function(e,t,n){n.r(t);var l=n(29439),r=n(72791),i=n(29945),c=n(87995),o=n(81551),s=n(9505),u=n(23508),a=n(80184);t.default=function(e){var t=e.closeDeleteModalAndRefresh,n=e.deleteOpen,d=e.selectedBucket,p=e.ruleToDelete,f=e.rulesToDelete,b=e.remainingRules,h=e.allSelected,x=e.deleteSelectedRules,j=void 0!==x&&x,m=(0,o.TL)(),v=(0,r.useState)(""),k=(0,l.Z)(v,2),g=k[0],D=k[1],T=(0,s.Z)((function(){return t(!0)}),(function(e){return m((0,c.Ih)(e))})),y=(0,l.Z)(T,2),R=y[0],C=y[1];if(!d)return null;return(0,a.jsx)(u.Z,{title:j?"Delete Selected Replication Rules":"Delete Replication Rule",confirmText:"Delete",isOpen:n,titleIcon:(0,a.jsx)(i.NvT,{}),isLoading:R,onConfirm:function(){var e="/api/v1/buckets/".concat(d,"/replication/").concat(p);if(j){if(!h)return e="/api/v1/buckets/".concat(d,"/delete-selected-replication-rules"),void C("DELETE",e,{rules:f});e="/api/v1/buckets/".concat(d,"/delete-all-replication-rules")}else 1===b&&(e="/api/v1/buckets/".concat(d,"/delete-all-replication-rules"));C("DELETE",e)},onClose:function(){return t(!1)},confirmButtonProps:{disabled:j&&"Yes, I am sure"!==g},confirmationContent:(0,a.jsx)(r.Fragment,{children:j?(0,a.jsxs)(r.Fragment,{children:["Are you sure you want to remove the selected replication rules for bucket ",(0,a.jsx)("b",{children:d}),"?",(0,a.jsx)("br",{}),(0,a.jsx)("br",{}),"To continue please type ",(0,a.jsx)("b",{children:"Yes, I am sure"})," in the box.",(0,a.jsx)(i.rjZ,{item:!0,xs:12,children:(0,a.jsx)(i.Wzg,{id:"retype-tenant",name:"retype-tenant",onChange:function(e){D(e.target.value)},label:"",value:g})})]}):(0,a.jsxs)(r.Fragment,{children:["Are you sure you want to delete replication rule"," ",(0,a.jsx)("b",{children:p}),"?"]})})})}}}]); -//# sourceMappingURL=9088.9dd285c2.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[9088],{69088:function(e,t,n){n.r(t);var l=n(29439),r=n(72791),i=n(29945),c=n(87995),o=n(44690),s=n(9505),u=n(23508),a=n(80184);t.default=function(e){var t=e.closeDeleteModalAndRefresh,n=e.deleteOpen,d=e.selectedBucket,p=e.ruleToDelete,f=e.rulesToDelete,b=e.remainingRules,h=e.allSelected,x=e.deleteSelectedRules,j=void 0!==x&&x,m=(0,o.TL)(),v=(0,r.useState)(""),k=(0,l.Z)(v,2),g=k[0],D=k[1],T=(0,s.Z)((function(){return t(!0)}),(function(e){return m((0,c.Ih)(e))})),y=(0,l.Z)(T,2),R=y[0],C=y[1];if(!d)return null;return(0,a.jsx)(u.Z,{title:j?"Delete Selected Replication Rules":"Delete Replication Rule",confirmText:"Delete",isOpen:n,titleIcon:(0,a.jsx)(i.NvT,{}),isLoading:R,onConfirm:function(){var e="/api/v1/buckets/".concat(d,"/replication/").concat(p);if(j){if(!h)return e="/api/v1/buckets/".concat(d,"/delete-selected-replication-rules"),void C("DELETE",e,{rules:f});e="/api/v1/buckets/".concat(d,"/delete-all-replication-rules")}else 1===b&&(e="/api/v1/buckets/".concat(d,"/delete-all-replication-rules"));C("DELETE",e)},onClose:function(){return t(!1)},confirmButtonProps:{disabled:j&&"Yes, I am sure"!==g},confirmationContent:(0,a.jsx)(r.Fragment,{children:j?(0,a.jsxs)(r.Fragment,{children:["Are you sure you want to remove the selected replication rules for bucket ",(0,a.jsx)("b",{children:d}),"?",(0,a.jsx)("br",{}),(0,a.jsx)("br",{}),"To continue please type ",(0,a.jsx)("b",{children:"Yes, I am sure"})," in the box.",(0,a.jsx)(i.rjZ,{item:!0,xs:12,children:(0,a.jsx)(i.Wzg,{id:"retype-tenant",name:"retype-tenant",onChange:function(e){D(e.target.value)},label:"",value:g})})]}):(0,a.jsxs)(r.Fragment,{children:["Are you sure you want to delete replication rule"," ",(0,a.jsx)("b",{children:p}),"?"]})})})}}}]); +//# sourceMappingURL=9088.b641525f.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/9088.9dd285c2.chunk.js.map b/portal-ui/build/static/js/9088.b641525f.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/9088.9dd285c2.chunk.js.map rename to portal-ui/build/static/js/9088.b641525f.chunk.js.map index d5a349d309..3d317814f0 100644 --- a/portal-ui/build/static/js/9088.9dd285c2.chunk.js.map +++ b/portal-ui/build/static/js/9088.b641525f.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/9088.9dd285c2.chunk.js","mappings":"+MA6HA,UA1F8B,SAAHA,GASK,IAR9BC,EAA0BD,EAA1BC,2BACAC,EAAUF,EAAVE,WACAC,EAAcH,EAAdG,eACAC,EAAYJ,EAAZI,aACAC,EAAaL,EAAbK,cACAC,EAAcN,EAAdM,eACAC,EAAWP,EAAXO,YAAWC,EAAAR,EACXS,oBAAAA,OAAmB,IAAAD,GAAQA,EAErBE,GAAWC,EAAAA,EAAAA,MACjBC,GAAgDC,EAAAA,EAAAA,UAAiB,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA7DI,EAAgBF,EAAA,GAAEG,EAAmBH,EAAA,GAO5CI,GAAyCC,EAAAA,EAAAA,IALpB,WAAH,OAASlB,GAA2B,EAAM,IACzC,SAACmB,GAAyB,OAC3CV,GAASW,EAAAA,EAAAA,IAAqBD,GAAM,IAGmCE,GAAAP,EAAAA,EAAAA,GAAAG,EAAA,GAAlEK,EAAaD,EAAA,GAAEE,EAAeF,EAAA,GAErC,IAAKnB,EACH,OAAO,KAqBT,OACEsB,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CACZC,MACElB,EACI,oCACA,0BAENmB,YAAa,SACbC,OAAQ3B,EACR4B,WAAWL,EAAAA,EAAAA,KAACM,EAAAA,IAAiB,IAC7BC,UAAWT,EACXU,UA7BoB,WACtB,IAAIC,EAAG,mBAAAC,OAAsBhC,EAAc,iBAAAgC,OAAgB/B,GAE3D,GAAIK,EAAqB,CACvB,IAAIF,EAKF,OAFA2B,EAAG,mBAAAC,OAAsBhC,EAAc,2CACvCqB,EAAgB,SAAUU,EAAK,CAAEE,MAAO/B,IAHxC6B,EAAG,mBAAAC,OAAsBhC,EAAc,gCAM3C,MAA8B,IAAnBG,IACT4B,EAAG,mBAAAC,OAAsBhC,EAAc,kCAGzCqB,EAAgB,SAAUU,EAC5B,EAcIG,QAtCY,WAAH,OAASpC,GAA2B,EAAO,EAuCpDqC,mBAAoB,CAClBC,SAAU9B,GAA4C,mBAArBO,GAEnCwB,qBACEf,EAAAA,EAAAA,KAACgB,EAAAA,SAAQ,CAAAC,SACNjC,GACCkC,EAAAA,EAAAA,MAACF,EAAAA,SAAQ,CAAAC,SAAA,CAAC,8EAEDjB,EAAAA,EAAAA,KAAA,KAAAiB,SAAIvC,IAAmB,KAACsB,EAAAA,EAAAA,KAAA,UAC/BA,EAAAA,EAAAA,KAAA,SAAM,4BACkBA,EAAAA,EAAAA,KAAA,KAAAiB,SAAG,mBAAkB,gBAC7CjB,EAAAA,EAAAA,KAACmB,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAGJ,UAChBjB,EAAAA,EAAAA,KAACsB,EAAAA,IAAQ,CACPC,GAAG,gBACHC,KAAK,gBACLC,SAAU,SAACC,GACTlC,EAAoBkC,EAAMC,OAAOC,MACnC,EACAC,MAAM,GACND,MAAOrC,UAKb2B,EAAAA,EAAAA,MAACF,EAAAA,SAAQ,CAAAC,SAAA,CAAC,mDACyC,KACjDjB,EAAAA,EAAAA,KAAA,KAAAiB,SAAItC,IAAiB,UAOnC,C","sources":["screens/Console/Buckets/BucketDetails/DeleteReplicationRule.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { ConfirmDeleteIcon, Grid, InputBox } from \"mds\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\n\ninterface IDeleteReplicationProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedBucket: string;\n ruleToDelete?: string;\n rulesToDelete?: string[];\n remainingRules: number;\n allSelected: boolean;\n deleteSelectedRules?: boolean;\n}\n\nconst DeleteReplicationRule = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n ruleToDelete,\n rulesToDelete,\n remainingRules,\n allSelected,\n deleteSelectedRules = false,\n}: IDeleteReplicationProps) => {\n const dispatch = useAppDispatch();\n const [confirmationText, setConfirmationText] = 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 if (!selectedBucket) {\n return null;\n }\n\n const onConfirmDelete = () => {\n let url = `/api/v1/buckets/${selectedBucket}/replication/${ruleToDelete}`;\n\n if (deleteSelectedRules) {\n if (allSelected) {\n url = `/api/v1/buckets/${selectedBucket}/delete-all-replication-rules`;\n } else {\n url = `/api/v1/buckets/${selectedBucket}/delete-selected-replication-rules`;\n invokeDeleteApi(\"DELETE\", url, { rules: rulesToDelete });\n return;\n }\n } else if (remainingRules === 1) {\n url = `/api/v1/buckets/${selectedBucket}/delete-all-replication-rules`;\n }\n\n invokeDeleteApi(\"DELETE\", url);\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmButtonProps={{\n disabled: deleteSelectedRules && confirmationText !== \"Yes, I am sure\",\n }}\n confirmationContent={\n \n {deleteSelectedRules ? (\n \n Are you sure you want to remove the selected replication rules for\n bucket {selectedBucket}?
    \n
    \n To continue please type Yes, I am sure in the box.\n \n ) => {\n setConfirmationText(event.target.value);\n }}\n label=\"\"\n value={confirmationText}\n />\n \n
    \n ) : (\n \n Are you sure you want to delete replication rule{\" \"}\n {ruleToDelete}?\n \n )}\n
    \n }\n />\n );\n};\n\nexport default DeleteReplicationRule;\n"],"names":["_ref","closeDeleteModalAndRefresh","deleteOpen","selectedBucket","ruleToDelete","rulesToDelete","remainingRules","allSelected","_ref$deleteSelectedRu","deleteSelectedRules","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","confirmationText","setConfirmationText","_useApi","useApi","err","setErrorSnackMessage","_useApi2","deleteLoading","invokeDeleteApi","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","url","concat","rules","onClose","confirmButtonProps","disabled","confirmationContent","Fragment","children","_jsxs","Grid","item","xs","InputBox","id","name","onChange","event","target","value","label"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/9088.b641525f.chunk.js","mappings":"+MA6HA,UA1F8B,SAAHA,GASK,IAR9BC,EAA0BD,EAA1BC,2BACAC,EAAUF,EAAVE,WACAC,EAAcH,EAAdG,eACAC,EAAYJ,EAAZI,aACAC,EAAaL,EAAbK,cACAC,EAAcN,EAAdM,eACAC,EAAWP,EAAXO,YAAWC,EAAAR,EACXS,oBAAAA,OAAmB,IAAAD,GAAQA,EAErBE,GAAWC,EAAAA,EAAAA,MACjBC,GAAgDC,EAAAA,EAAAA,UAAiB,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA7DI,EAAgBF,EAAA,GAAEG,EAAmBH,EAAA,GAO5CI,GAAyCC,EAAAA,EAAAA,IALpB,WAAH,OAASlB,GAA2B,EAAM,IACzC,SAACmB,GAAyB,OAC3CV,GAASW,EAAAA,EAAAA,IAAqBD,GAAM,IAGmCE,GAAAP,EAAAA,EAAAA,GAAAG,EAAA,GAAlEK,EAAaD,EAAA,GAAEE,EAAeF,EAAA,GAErC,IAAKnB,EACH,OAAO,KAqBT,OACEsB,EAAAA,EAAAA,KAACC,EAAAA,EAAa,CACZC,MACElB,EACI,oCACA,0BAENmB,YAAa,SACbC,OAAQ3B,EACR4B,WAAWL,EAAAA,EAAAA,KAACM,EAAAA,IAAiB,IAC7BC,UAAWT,EACXU,UA7BoB,WACtB,IAAIC,EAAG,mBAAAC,OAAsBhC,EAAc,iBAAAgC,OAAgB/B,GAE3D,GAAIK,EAAqB,CACvB,IAAIF,EAKF,OAFA2B,EAAG,mBAAAC,OAAsBhC,EAAc,2CACvCqB,EAAgB,SAAUU,EAAK,CAAEE,MAAO/B,IAHxC6B,EAAG,mBAAAC,OAAsBhC,EAAc,gCAM3C,MAA8B,IAAnBG,IACT4B,EAAG,mBAAAC,OAAsBhC,EAAc,kCAGzCqB,EAAgB,SAAUU,EAC5B,EAcIG,QAtCY,WAAH,OAASpC,GAA2B,EAAO,EAuCpDqC,mBAAoB,CAClBC,SAAU9B,GAA4C,mBAArBO,GAEnCwB,qBACEf,EAAAA,EAAAA,KAACgB,EAAAA,SAAQ,CAAAC,SACNjC,GACCkC,EAAAA,EAAAA,MAACF,EAAAA,SAAQ,CAAAC,SAAA,CAAC,8EAEDjB,EAAAA,EAAAA,KAAA,KAAAiB,SAAIvC,IAAmB,KAACsB,EAAAA,EAAAA,KAAA,UAC/BA,EAAAA,EAAAA,KAAA,SAAM,4BACkBA,EAAAA,EAAAA,KAAA,KAAAiB,SAAG,mBAAkB,gBAC7CjB,EAAAA,EAAAA,KAACmB,EAAAA,IAAI,CAACC,MAAI,EAACC,GAAI,GAAGJ,UAChBjB,EAAAA,EAAAA,KAACsB,EAAAA,IAAQ,CACPC,GAAG,gBACHC,KAAK,gBACLC,SAAU,SAACC,GACTlC,EAAoBkC,EAAMC,OAAOC,MACnC,EACAC,MAAM,GACND,MAAOrC,UAKb2B,EAAAA,EAAAA,MAACF,EAAAA,SAAQ,CAAAC,SAAA,CAAC,mDACyC,KACjDjB,EAAAA,EAAAA,KAAA,KAAAiB,SAAItC,IAAiB,UAOnC,C","sources":["screens/Console/Buckets/BucketDetails/DeleteReplicationRule.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { ConfirmDeleteIcon, Grid, InputBox } from \"mds\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\n\ninterface IDeleteReplicationProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedBucket: string;\n ruleToDelete?: string;\n rulesToDelete?: string[];\n remainingRules: number;\n allSelected: boolean;\n deleteSelectedRules?: boolean;\n}\n\nconst DeleteReplicationRule = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n ruleToDelete,\n rulesToDelete,\n remainingRules,\n allSelected,\n deleteSelectedRules = false,\n}: IDeleteReplicationProps) => {\n const dispatch = useAppDispatch();\n const [confirmationText, setConfirmationText] = 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 if (!selectedBucket) {\n return null;\n }\n\n const onConfirmDelete = () => {\n let url = `/api/v1/buckets/${selectedBucket}/replication/${ruleToDelete}`;\n\n if (deleteSelectedRules) {\n if (allSelected) {\n url = `/api/v1/buckets/${selectedBucket}/delete-all-replication-rules`;\n } else {\n url = `/api/v1/buckets/${selectedBucket}/delete-selected-replication-rules`;\n invokeDeleteApi(\"DELETE\", url, { rules: rulesToDelete });\n return;\n }\n } else if (remainingRules === 1) {\n url = `/api/v1/buckets/${selectedBucket}/delete-all-replication-rules`;\n }\n\n invokeDeleteApi(\"DELETE\", url);\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmButtonProps={{\n disabled: deleteSelectedRules && confirmationText !== \"Yes, I am sure\",\n }}\n confirmationContent={\n \n {deleteSelectedRules ? (\n \n Are you sure you want to remove the selected replication rules for\n bucket {selectedBucket}?
    \n
    \n To continue please type Yes, I am sure in the box.\n \n ) => {\n setConfirmationText(event.target.value);\n }}\n label=\"\"\n value={confirmationText}\n />\n \n
    \n ) : (\n \n Are you sure you want to delete replication rule{\" \"}\n {ruleToDelete}?\n \n )}\n
    \n }\n />\n );\n};\n\nexport default DeleteReplicationRule;\n"],"names":["_ref","closeDeleteModalAndRefresh","deleteOpen","selectedBucket","ruleToDelete","rulesToDelete","remainingRules","allSelected","_ref$deleteSelectedRu","deleteSelectedRules","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","confirmationText","setConfirmationText","_useApi","useApi","err","setErrorSnackMessage","_useApi2","deleteLoading","invokeDeleteApi","_jsx","ConfirmDialog","title","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","url","concat","rules","onClose","confirmButtonProps","disabled","confirmationContent","Fragment","children","_jsxs","Grid","item","xs","InputBox","id","name","onChange","event","target","value","label"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/911.6e143898.chunk.js b/portal-ui/build/static/js/911.6e143898.chunk.js deleted file mode 100644 index aa02ee84a5..0000000000 --- a/portal-ui/build/static/js/911.6e143898.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[911],{32080:function(e,n,t){t.d(n,{i:function(){return c}});var o=t(72791),r=t(6117),i=t(84913),a=t(80184),s=["input","select","textarea","a[href]","button","[tabindex]","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])'].join(",");function l(e){var n=[],t=[];return Array.from(e.querySelectorAll(s)).forEach((function(e,o){var r=function(e){var n=parseInt(e.getAttribute("tabindex")||"",10);return Number.isNaN(n)?"true"===e.contentEditable||("AUDIO"===e.nodeName||"VIDEO"===e.nodeName||"DETAILS"===e.nodeName)&&null===e.getAttribute("tabindex")?0:e.tabIndex:n}(e);-1!==r&&function(e){return!(e.disabled||"INPUT"===e.tagName&&"hidden"===e.type||function(e){if("INPUT"!==e.tagName||"radio"!==e.type)return!1;if(!e.name)return!1;var n=function(n){return e.ownerDocument.querySelector('input[type="radio"]'.concat(n))},t=n('[name="'.concat(e.name,'"]:checked'));return t||(t=n('[name="'.concat(e.name,'"]'))),t!==e}(e))}(e)&&(0===r?n.push(e):t.push({documentOrder:o,tabIndex:r,node:e}))})),t.sort((function(e,n){return e.tabIndex===n.tabIndex?e.documentOrder-n.documentOrder:e.tabIndex-n.tabIndex})).map((function(e){return e.node})).concat(n)}function u(){return!0}function c(e){var n=e.children,t=e.disableAutoFocus,s=void 0!==t&&t,c=e.disableEnforceFocus,d=void 0!==c&&c,p=e.disableRestoreFocus,f=void 0!==p&&p,v=e.getTabbable,h=void 0===v?l:v,m=e.isEnabled,b=void 0===m?u:m,g=e.open,y=o.useRef(!1),Z=o.useRef(null),P=o.useRef(null),E=o.useRef(null),x=o.useRef(null),k=o.useRef(!1),w=o.useRef(null),R=(0,r.Z)(n.ref,w),T=o.useRef(null);o.useEffect((function(){g&&w.current&&(k.current=!s)}),[s,g]),o.useEffect((function(){if(g&&w.current){var e=(0,i.Z)(w.current);return w.current.contains(e.activeElement)||(w.current.hasAttribute("tabIndex")||w.current.setAttribute("tabIndex","-1"),k.current&&w.current.focus()),function(){f||(E.current&&E.current.focus&&(y.current=!0,E.current.focus()),E.current=null)}}}),[g]),o.useEffect((function(){if(g&&w.current){var e=(0,i.Z)(w.current),n=function(n){var t=w.current;if(null!==t)if(e.hasFocus()&&!d&&b()&&!y.current){if(!t.contains(e.activeElement)){if(n&&x.current!==n.target||e.activeElement!==x.current)x.current=null;else if(null!==x.current)return;if(!k.current)return;var o=[];if(e.activeElement!==Z.current&&e.activeElement!==P.current||(o=h(w.current)),o.length>0){var r,i,a=Boolean((null==(r=T.current)?void 0:r.shiftKey)&&"Tab"===(null==(i=T.current)?void 0:i.key)),s=o[0],l=o[o.length-1];"string"!==typeof s&&"string"!==typeof l&&(a?l.focus():s.focus())}else t.focus()}}else y.current=!1},t=function(n){T.current=n,!d&&b()&&"Tab"===n.key&&e.activeElement===w.current&&n.shiftKey&&(y.current=!0,P.current&&P.current.focus())};e.addEventListener("focusin",n),e.addEventListener("keydown",t,!0);var o=setInterval((function(){e.activeElement&&"BODY"===e.activeElement.tagName&&n(null)}),50);return function(){clearInterval(o),e.removeEventListener("focusin",n),e.removeEventListener("keydown",t,!0)}}}),[s,d,f,b,g,h]);var S=function(e){null===E.current&&(E.current=e.relatedTarget),k.current=!0};return(0,a.jsxs)(o.Fragment,{children:[(0,a.jsx)("div",{tabIndex:g?0:-1,onFocus:S,ref:Z,"data-testid":"sentinelStart"}),o.cloneElement(n,{ref:R,onFocus:function(e){null===E.current&&(E.current=e.relatedTarget),k.current=!0,x.current=e.target;var t=n.props.onFocus;t&&t(e)}}),(0,a.jsx)("div",{tabIndex:g?0:-1,onFocus:S,ref:P,"data-testid":"sentinelEnd"})]})}},52739:function(e,n,t){t.d(n,{Z:function(){return b}});var o=t(63366),r=t(87462),i=t(72791),a=t(63733),s=t(94419),l=t(66934),u=t(31402),c=t(60627),d=t(75878),p=t(21217);function f(e){return(0,p.Z)("MuiBackdrop",e)}(0,d.Z)("MuiBackdrop",["root","invisible"]);var v=t(80184),h=["children","className","component","components","componentsProps","invisible","open","slotProps","slots","TransitionComponent","transitionDuration"],m=(0,l.ZP)("div",{name:"MuiBackdrop",slot:"Root",overridesResolver:function(e,n){var t=e.ownerState;return[n.root,t.invisible&&n.invisible]}})((function(e){var n=e.ownerState;return(0,r.Z)({position:"fixed",display:"flex",alignItems:"center",justifyContent:"center",right:0,bottom:0,top:0,left:0,backgroundColor:"rgba(0, 0, 0, 0.5)",WebkitTapHighlightColor:"transparent"},n.invisible&&{backgroundColor:"transparent"})})),b=i.forwardRef((function(e,n){var t,i,l,d=(0,u.Z)({props:e,name:"MuiBackdrop"}),p=d.children,b=d.className,g=d.component,y=void 0===g?"div":g,Z=d.components,P=void 0===Z?{}:Z,E=d.componentsProps,x=void 0===E?{}:E,k=d.invisible,w=void 0!==k&&k,R=d.open,T=d.slotProps,S=void 0===T?{}:T,M=d.slots,C=void 0===M?{}:M,N=d.TransitionComponent,F=void 0===N?c.Z:N,I=d.transitionDuration,L=(0,o.Z)(d,h),A=(0,r.Z)({},d,{component:y,invisible:w}),O=function(e){var n=e.classes,t={root:["root",e.invisible&&"invisible"]};return(0,s.Z)(t,f,n)}(A),D=null!=(t=S.root)?t:x.root;return(0,v.jsx)(F,(0,r.Z)({in:R,timeout:I},L,{children:(0,v.jsx)(m,(0,r.Z)({"aria-hidden":!0},D,{as:null!=(i=null!=(l=C.root)?l:P.Root)?i:y,className:(0,a.Z)(O.root,b,null==D?void 0:D.className),ownerState:(0,r.Z)({},A,null==D?void 0:D.ownerState),classes:O,ref:n,children:p}))}))}))},60627:function(e,n,t){var o=t(87462),r=t(63366),i=t(72791),a=t(18875),s=t(13967),l=t(4999),u=t(42071),c=t(80184),d=["addEndListener","appear","children","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"],p={entering:{opacity:1},entered:{opacity:1}},f=i.forwardRef((function(e,n){var t=(0,s.Z)(),f={enter:t.transitions.duration.enteringScreen,exit:t.transitions.duration.leavingScreen},v=e.addEndListener,h=e.appear,m=void 0===h||h,b=e.children,g=e.easing,y=e.in,Z=e.onEnter,P=e.onEntered,E=e.onEntering,x=e.onExit,k=e.onExited,w=e.onExiting,R=e.style,T=e.timeout,S=void 0===T?f:T,M=e.TransitionComponent,C=void 0===M?a.ZP:M,N=(0,r.Z)(e,d),F=i.useRef(null),I=(0,u.Z)(F,b.ref,n),L=function(e){return function(n){if(e){var t=F.current;void 0===n?e(t):e(t,n)}}},A=L(E),O=L((function(e,n){(0,l.n)(e);var o=(0,l.C)({style:R,timeout:S,easing:g},{mode:"enter"});e.style.webkitTransition=t.transitions.create("opacity",o),e.style.transition=t.transitions.create("opacity",o),Z&&Z(e,n)})),D=L(P),j=L(w),B=L((function(e){var n=(0,l.C)({style:R,timeout:S,easing:g},{mode:"exit"});e.style.webkitTransition=t.transitions.create("opacity",n),e.style.transition=t.transitions.create("opacity",n),x&&x(e)})),K=L(k);return(0,c.jsx)(C,(0,o.Z)({appear:m,in:y,nodeRef:F,onEnter:O,onEntered:D,onEntering:A,onExit:B,onExited:K,onExiting:j,addEndListener:function(e){v&&v(F.current,e)},timeout:S},N,{children:function(e,n){return i.cloneElement(b,(0,o.Z)({style:(0,o.Z)({opacity:0,visibility:"exited"!==e||y?void 0:"hidden"},p[e],R,b.props.style),ref:I},n))}}))}));n.Z=f},90493:function(e,n,t){t.d(n,{Z:function(){return b}});var o=t(63366),r=t(87462),i=t(72791),a=t(63733),s=t(94419),l=t(66934),u=t(31402),c=t(66199),d=t(75878),p=t(21217);function f(e){return(0,p.Z)("MuiList",e)}(0,d.Z)("MuiList",["root","padding","dense","subheader"]);var v=t(80184),h=["children","className","component","dense","disablePadding","subheader"],m=(0,l.ZP)("ul",{name:"MuiList",slot:"Root",overridesResolver:function(e,n){var t=e.ownerState;return[n.root,!t.disablePadding&&n.padding,t.dense&&n.dense,t.subheader&&n.subheader]}})((function(e){var n=e.ownerState;return(0,r.Z)({listStyle:"none",margin:0,padding:0,position:"relative"},!n.disablePadding&&{paddingTop:8,paddingBottom:8},n.subheader&&{paddingTop:0})})),b=i.forwardRef((function(e,n){var t=(0,u.Z)({props:e,name:"MuiList"}),l=t.children,d=t.className,p=t.component,b=void 0===p?"ul":p,g=t.dense,y=void 0!==g&&g,Z=t.disablePadding,P=void 0!==Z&&Z,E=t.subheader,x=(0,o.Z)(t,h),k=i.useMemo((function(){return{dense:y}}),[y]),w=(0,r.Z)({},t,{component:b,dense:y,disablePadding:P}),R=function(e){var n=e.classes,t={root:["root",!e.disablePadding&&"padding",e.dense&&"dense",e.subheader&&"subheader"]};return(0,s.Z)(t,f,n)}(w);return(0,v.jsx)(c.Z.Provider,{value:k,children:(0,v.jsxs)(m,(0,r.Z)({as:b,className:(0,a.Z)(R.root,d),ref:n,ownerState:w},x,{children:[E,l]}))})}))},80911:function(e,n,t){t.d(n,{Z:function(){return Q}});var o=t(87462),r=t(63366),i=t(72791),a=(t(57441),t(63733)),s=t(94419),l=t(41107),u=t(98301),c=t(90493),d=t(57137).Z,p=t(42071),f=t(40162),v=t(80184),h=["actions","autoFocus","autoFocusItem","children","className","disabledItemsFocusable","disableListWrap","onKeyDown","variant"];function m(e,n,t){return e===n?e.firstChild:n&&n.nextElementSibling?n.nextElementSibling:t?null:e.firstChild}function b(e,n,t){return e===n?t?e.firstChild:e.lastChild:n&&n.previousElementSibling?n.previousElementSibling:t?null:e.lastChild}function g(e,n){if(void 0===n)return!0;var t=e.innerText;return void 0===t&&(t=e.textContent),0!==(t=t.trim().toLowerCase()).length&&(n.repeating?t[0]===n.keys[0]:0===t.indexOf(n.keys.join("")))}function y(e,n,t,o,r,i){for(var a=!1,s=r(e,n,!!n&&t);s;){if(s===e.firstChild){if(a)return!1;a=!0}var l=!o&&(s.disabled||"true"===s.getAttribute("aria-disabled"));if(s.hasAttribute("tabindex")&&g(s,i)&&!l)return s.focus(),!0;s=r(e,s,t)}return!1}var Z=i.forwardRef((function(e,n){var t=e.actions,a=e.autoFocus,s=void 0!==a&&a,l=e.autoFocusItem,Z=void 0!==l&&l,P=e.children,E=e.className,x=e.disabledItemsFocusable,k=void 0!==x&&x,w=e.disableListWrap,R=void 0!==w&&w,T=e.onKeyDown,S=e.variant,M=void 0===S?"selectedMenu":S,C=(0,r.Z)(e,h),N=i.useRef(null),F=i.useRef({keys:[],repeating:!0,previousKeyMatched:!0,lastTime:null});(0,f.Z)((function(){s&&N.current.focus()}),[s]),i.useImperativeHandle(t,(function(){return{adjustStyleForScrollbar:function(e,n){var t=!N.current.style.width;if(e.clientHeight=P.length&&(L=-1)):L===n&&(L+=1)>=P.length&&(L=-1)}));var A=i.Children.map(P,(function(e,n){if(n===L){var t={};return Z&&(t.autoFocus=!0),void 0===e.props.tabIndex&&"selectedMenu"===M&&(t.tabIndex=0),i.cloneElement(e,t)}return e}));return(0,v.jsx)(c.Z,(0,o.Z)({role:"menu",ref:I,className:E,onKeyDown:function(e){var n=N.current,t=e.key,o=(0,u.Z)(n).activeElement;if("ArrowDown"===t)e.preventDefault(),y(n,o,R,k,m);else if("ArrowUp"===t)e.preventDefault(),y(n,o,R,k,b);else if("Home"===t)e.preventDefault(),y(n,null,R,k,m);else if("End"===t)e.preventDefault(),y(n,null,R,k,b);else if(1===t.length){var r=F.current,i=t.toLowerCase(),a=performance.now();r.keys.length>0&&(a-r.lastTime>500?(r.keys=[],r.repeating=!0,r.previousKeyMatched=!0):r.repeating&&i!==r.keys[0]&&(r.repeating=!1)),r.lastTime=a,r.keys.push(i);var s=o&&!r.repeating&&g(o,r);r.previousKeyMatched&&(s||y(n,o,!1,k,m,r))?e.preventDefault():r.previousKeyMatched=!1}T&&T(e)},tabIndex:s?0:-1},C,{children:A}))})),P=t(29439),E=t(20627),x=t(66934),k=t(31402),w=t(83199),R=t(17602),T=t(13208),S=t(88447),M=t(35527),C=t(75878),N=t(21217);function F(e){return(0,N.Z)("MuiPopover",e)}(0,C.Z)("MuiPopover",["root","paper"]);var I=["onEntering"],L=["action","anchorEl","anchorOrigin","anchorPosition","anchorReference","children","className","container","elevation","marginThreshold","open","PaperProps","slots","slotProps","transformOrigin","TransitionComponent","transitionDuration","TransitionProps","disableScrollLock"],A=["slotProps"];function O(e,n){var t=0;return"number"===typeof n?t=n:"center"===n?t=e.height/2:"bottom"===n&&(t=e.height),t}function D(e,n){var t=0;return"number"===typeof n?t=n:"center"===n?t=e.width/2:"right"===n&&(t=e.width),t}function j(e){return[e.horizontal,e.vertical].map((function(e){return"number"===typeof e?"".concat(e,"px"):e})).join(" ")}function B(e){return"function"===typeof e?e():e}var K=(0,x.ZP)(S.Z,{name:"MuiPopover",slot:"Root",overridesResolver:function(e,n){return n.root}})({}),z=(0,x.ZP)(M.Z,{name:"MuiPopover",slot:"Paper",overridesResolver:function(e,n){return n.paper}})({position:"absolute",overflowY:"auto",overflowX:"hidden",minWidth:16,minHeight:16,maxWidth:"calc(100% - 32px)",maxHeight:"calc(100% - 32px)",outline:0}),H=i.forwardRef((function(e,n){var t,c,d,f=(0,k.Z)({props:e,name:"MuiPopover"}),h=f.action,m=f.anchorEl,b=f.anchorOrigin,g=void 0===b?{vertical:"top",horizontal:"left"}:b,y=f.anchorPosition,Z=f.anchorReference,x=void 0===Z?"anchorEl":Z,S=f.children,M=f.className,C=f.container,N=f.elevation,H=void 0===N?8:N,W=f.marginThreshold,U=void 0===W?16:W,Y=f.open,q=f.PaperProps,V=void 0===q?{}:q,X=f.slots,_=f.slotProps,G=f.transformOrigin,J=void 0===G?{vertical:"top",horizontal:"left"}:G,Q=f.TransitionComponent,$=void 0===Q?T.Z:Q,ee=f.transitionDuration,ne=void 0===ee?"auto":ee,te=f.TransitionProps,oe=(void 0===te?{}:te).onEntering,re=f.disableScrollLock,ie=void 0!==re&&re,ae=(0,r.Z)(f.TransitionProps,I),se=(0,r.Z)(f,L),le=null!=(t=null==_?void 0:_.paper)?t:V,ue=i.useRef(),ce=(0,p.Z)(ue,le.ref),de=(0,o.Z)({},f,{anchorOrigin:g,anchorReference:x,elevation:H,marginThreshold:U,externalPaperSlotProps:le,transformOrigin:J,TransitionComponent:$,transitionDuration:ne,TransitionProps:ae}),pe=function(e){var n=e.classes;return(0,s.Z)({root:["root"],paper:["paper"]},F,n)}(de),fe=i.useCallback((function(){if("anchorPosition"===x)return y;var e=B(m),n=(e&&1===e.nodeType?e:(0,u.Z)(ue.current).body).getBoundingClientRect();return{top:n.top+O(n,g.vertical),left:n.left+D(n,g.horizontal)}}),[m,g.horizontal,g.vertical,y,x]),ve=i.useCallback((function(e){return{vertical:O(e,J.vertical),horizontal:D(e,J.horizontal)}}),[J.horizontal,J.vertical]),he=i.useCallback((function(e){var n={width:e.offsetWidth,height:e.offsetHeight},t=ve(n);if("none"===x)return{top:null,left:null,transformOrigin:j(t)};var o=fe(),r=o.top-t.vertical,i=o.left-t.horizontal,a=r+n.height,s=i+n.width,l=(0,R.Z)(B(m)),u=l.innerHeight-U,c=l.innerWidth-U;if(null!==U&&ru){var p=a-u;r-=p,t.vertical+=p}if(null!==U&&ic){var v=s-c;i-=v,t.horizontal+=v}return{top:"".concat(Math.round(r),"px"),left:"".concat(Math.round(i),"px"),transformOrigin:j(t)}}),[m,x,fe,ve,U]),me=i.useState(Y),be=(0,P.Z)(me,2),ge=be[0],ye=be[1],Ze=i.useCallback((function(){var e=ue.current;if(e){var n=he(e);null!==n.top&&(e.style.top=n.top),null!==n.left&&(e.style.left=n.left),e.style.transformOrigin=n.transformOrigin,ye(!0)}}),[he]);i.useEffect((function(){return ie&&window.addEventListener("scroll",Ze),function(){return window.removeEventListener("scroll",Ze)}}),[m,ie,Ze]);i.useEffect((function(){Y&&Ze()})),i.useImperativeHandle(h,(function(){return Y?{updatePosition:function(){Ze()}}:null}),[Y,Ze]),i.useEffect((function(){if(Y){var e=(0,w.Z)((function(){Ze()})),n=(0,R.Z)(m);return n.addEventListener("resize",e),function(){e.clear(),n.removeEventListener("resize",e)}}}),[m,Y,Ze]);var Pe=ne;"auto"!==ne||$.muiSupportAuto||(Pe=void 0);var Ee=C||(m?(0,u.Z)(B(m)).body:void 0),xe=null!=(c=null==X?void 0:X.root)?c:K,ke=null!=(d=null==X?void 0:X.paper)?d:z,we=(0,l.y)({elementType:ke,externalSlotProps:(0,o.Z)({},le,{style:ge?le.style:(0,o.Z)({},le.style,{opacity:0})}),additionalProps:{elevation:H,ref:ce},ownerState:de,className:(0,a.Z)(pe.paper,null==le?void 0:le.className)}),Re=(0,l.y)({elementType:xe,externalSlotProps:(null==_?void 0:_.root)||{},externalForwardedProps:se,additionalProps:{ref:n,slotProps:{backdrop:{invisible:!0}},container:Ee,open:Y},ownerState:de,className:(0,a.Z)(pe.root,M)}),Te=Re.slotProps,Se=(0,r.Z)(Re,A);return(0,v.jsx)(xe,(0,o.Z)({},Se,!(0,E.X)(xe)&&{slotProps:Te,disableScrollLock:ie},{children:(0,v.jsx)($,(0,o.Z)({appear:!0,in:Y,onEntering:function(e,n){oe&&oe(e,n),Ze()},onExited:function(){ye(!1)},timeout:Pe},ae,{children:(0,v.jsx)(ke,(0,o.Z)({},we,{children:S}))}))}))})),W=t(13967);function U(e){return(0,N.Z)("MuiMenu",e)}(0,C.Z)("MuiMenu",["root","paper","list"]);var Y=["onEntering"],q=["autoFocus","children","className","disableAutoFocusItem","MenuListProps","onClose","open","PaperProps","PopoverClasses","transitionDuration","TransitionProps","variant","slots","slotProps"],V={vertical:"top",horizontal:"right"},X={vertical:"top",horizontal:"left"},_=(0,x.ZP)(H,{shouldForwardProp:function(e){return(0,x.FO)(e)||"classes"===e},name:"MuiMenu",slot:"Root",overridesResolver:function(e,n){return n.root}})({}),G=(0,x.ZP)(z,{name:"MuiMenu",slot:"Paper",overridesResolver:function(e,n){return n.paper}})({maxHeight:"calc(100% - 96px)",WebkitOverflowScrolling:"touch"}),J=(0,x.ZP)(Z,{name:"MuiMenu",slot:"List",overridesResolver:function(e,n){return n.list}})({outline:0}),Q=i.forwardRef((function(e,n){var t,u,c=(0,k.Z)({props:e,name:"MuiMenu"}),d=c.autoFocus,p=void 0===d||d,f=c.children,h=c.className,m=c.disableAutoFocusItem,b=void 0!==m&&m,g=c.MenuListProps,y=void 0===g?{}:g,Z=c.onClose,P=c.open,E=c.PaperProps,x=void 0===E?{}:E,w=c.PopoverClasses,R=c.transitionDuration,T=void 0===R?"auto":R,S=c.TransitionProps,M=(void 0===S?{}:S).onEntering,C=c.variant,N=void 0===C?"selectedMenu":C,F=c.slots,I=void 0===F?{}:F,L=c.slotProps,A=void 0===L?{}:L,O=(0,r.Z)(c.TransitionProps,Y),D=(0,r.Z)(c,q),j=(0,W.Z)(),B="rtl"===j.direction,K=(0,o.Z)({},c,{autoFocus:p,disableAutoFocusItem:b,MenuListProps:y,onEntering:M,PaperProps:x,transitionDuration:T,TransitionProps:O,variant:N}),z=function(e){var n=e.classes;return(0,s.Z)({root:["root"],paper:["paper"],list:["list"]},U,n)}(K),H=p&&!b&&P,Q=i.useRef(null),$=-1;i.Children.map(f,(function(e,n){i.isValidElement(e)&&(e.props.disabled||("selectedMenu"===N&&e.props.selected||-1===$)&&($=n))}));var ee=null!=(t=I.paper)?t:G,ne=null!=(u=A.paper)?u:x,te=(0,l.y)({elementType:I.root,externalSlotProps:A.root,ownerState:K,className:[z.root,h]}),oe=(0,l.y)({elementType:ee,externalSlotProps:ne,ownerState:K,className:z.paper});return(0,v.jsx)(_,(0,o.Z)({onClose:Z,anchorOrigin:{vertical:"bottom",horizontal:B?"right":"left"},transformOrigin:B?V:X,slots:{paper:ee,root:I.root},slotProps:{root:te,paper:oe},open:P,ref:n,transitionDuration:T,TransitionProps:(0,o.Z)({onEntering:function(e,n){Q.current&&Q.current.adjustStyleForScrollbar(e,j),M&&M(e,n)}},O),ownerState:K},D,{classes:w,children:(0,v.jsx)(J,(0,o.Z)({onKeyDown:function(e){"Tab"===e.key&&(e.preventDefault(),Z&&Z(e,"tabKeyDown"))},actions:Q,autoFocus:p&&(-1===$||b),autoFocusItem:H,variant:N},y,{className:(0,a.Z)(z.list,y.className),children:f}))}))}))},88447:function(e,n,t){t.d(n,{Z:function(){return K}});var o=t(63366),r=t(87462),i=t(72791),a=t(63733),s=t(41107),l=t(29439),u=t(6117),c=t(84913),d=t(97054),p=t(78949),f=t(22086),v=t(15671),h=t(43144),m=t(93433),b=t(65202),g=t(57137);function y(e,n){n?e.setAttribute("aria-hidden","true"):e.removeAttribute("aria-hidden")}function Z(e){return parseInt((0,b.Z)(e).getComputedStyle(e).paddingRight,10)||0}function P(e,n,t,o,r){var i=[n,t].concat((0,m.Z)(o));[].forEach.call(e.children,(function(e){var n=-1===i.indexOf(e),t=!function(e){var n=-1!==["TEMPLATE","SCRIPT","STYLE","LINK","MAP","META","NOSCRIPT","PICTURE","COL","COLGROUP","PARAM","SLOT","SOURCE","TRACK"].indexOf(e.tagName),t="INPUT"===e.tagName&&"hidden"===e.getAttribute("type");return n||t}(e);n&&t&&y(e,r)}))}function E(e,n){var t=-1;return e.some((function(e,o){return!!n(e)&&(t=o,!0)})),t}function x(e,n){var t=[],o=e.container;if(!n.disableScrollLock){if(function(e){var n=(0,c.Z)(e);return n.body===e?(0,b.Z)(e).innerWidth>n.documentElement.clientWidth:e.scrollHeight>e.clientHeight}(o)){var r=(0,g.Z)((0,c.Z)(o));t.push({value:o.style.paddingRight,property:"padding-right",el:o}),o.style.paddingRight="".concat(Z(o)+r,"px");var i=(0,c.Z)(o).querySelectorAll(".mui-fixed");[].forEach.call(i,(function(e){t.push({value:e.style.paddingRight,property:"padding-right",el:e}),e.style.paddingRight="".concat(Z(e)+r,"px")}))}var a;if(o.parentNode instanceof DocumentFragment)a=(0,c.Z)(o).body;else{var s=o.parentElement,l=(0,b.Z)(o);a="HTML"===(null==s?void 0:s.nodeName)&&"scroll"===l.getComputedStyle(s).overflowY?s:o}t.push({value:a.style.overflow,property:"overflow",el:a},{value:a.style.overflowX,property:"overflow-x",el:a},{value:a.style.overflowY,property:"overflow-y",el:a}),a.style.overflow="hidden"}return function(){t.forEach((function(e){var n=e.value,t=e.el,o=e.property;n?t.style.setProperty(o,n):t.style.removeProperty(o)}))}}var k=function(){function e(){(0,v.Z)(this,e),this.containers=void 0,this.modals=void 0,this.modals=[],this.containers=[]}return(0,h.Z)(e,[{key:"add",value:function(e,n){var t=this.modals.indexOf(e);if(-1!==t)return t;t=this.modals.length,this.modals.push(e),e.modalRef&&y(e.modalRef,!1);var o=function(e){var n=[];return[].forEach.call(e.children,(function(e){"true"===e.getAttribute("aria-hidden")&&n.push(e)})),n}(n);P(n,e.mount,e.modalRef,o,!0);var r=E(this.containers,(function(e){return e.container===n}));return-1!==r?(this.containers[r].modals.push(e),t):(this.containers.push({modals:[e],container:n,restore:null,hiddenSiblings:o}),t)}},{key:"mount",value:function(e,n){var t=E(this.containers,(function(n){return-1!==n.modals.indexOf(e)})),o=this.containers[t];o.restore||(o.restore=x(o,n))}},{key:"remove",value:function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],t=this.modals.indexOf(e);if(-1===t)return t;var o=E(this.containers,(function(n){return-1!==n.modals.indexOf(e)})),r=this.containers[o];if(r.modals.splice(r.modals.indexOf(e),1),this.modals.splice(t,1),0===r.modals.length)r.restore&&r.restore(),e.modalRef&&y(e.modalRef,n),P(r.container,e.mount,e.modalRef,r.hiddenSiblings,!1),this.containers.splice(o,1);else{var i=r.modals[r.modals.length-1];i.modalRef&&y(i.modalRef,!1)}return t}},{key:"isTopModal",value:function(e){return this.modals.length>0&&this.modals[this.modals.length-1]===e}}]),e}();var w=new k;function R(e){var n=e.container,t=e.disableEscapeKeyDown,o=void 0!==t&&t,a=e.disableScrollLock,s=void 0!==a&&a,v=e.manager,h=void 0===v?w:v,m=e.closeAfterTransition,b=void 0!==m&&m,g=e.onTransitionEnter,Z=e.onTransitionExited,P=e.children,E=e.onClose,x=e.open,k=e.rootRef,R=i.useRef({}),T=i.useRef(null),S=i.useRef(null),M=(0,u.Z)(S,k),C=i.useState(!x),N=(0,l.Z)(C,2),F=N[0],I=N[1],L=function(e){return!!e&&e.props.hasOwnProperty("in")}(P),A=!0;"false"!==e["aria-hidden"]&&!1!==e["aria-hidden"]||(A=!1);var O=function(){return R.current.modalRef=S.current,R.current.mount=T.current,R.current},D=function(){h.mount(O(),{disableScrollLock:s}),S.current&&(S.current.scrollTop=0)},j=(0,d.Z)((function(){var e=function(e){return"function"===typeof e?e():e}(n)||(0,c.Z)(T.current).body;h.add(O(),e),S.current&&D()})),B=i.useCallback((function(){return h.isTopModal(O())}),[h]),K=(0,d.Z)((function(e){T.current=e,e&&(x&&B()?D():S.current&&y(S.current,A))})),z=i.useCallback((function(){h.remove(O(),A)}),[A,h]);i.useEffect((function(){return function(){z()}}),[z]),i.useEffect((function(){x?j():L&&b||z()}),[x,z,L,b,j]);var H=function(e){return function(n){var t;null==(t=e.onKeyDown)||t.call(e,n),"Escape"===n.key&&B()&&(o||(n.stopPropagation(),E&&E(n,"escapeKeyDown")))}},W=function(e){return function(n){var t;null==(t=e.onClick)||t.call(e,n),n.target===n.currentTarget&&E&&E(n,"backdropClick")}};return{getRootProps:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=(0,f._)(e);delete t.onTransitionEnter,delete t.onTransitionExited;var o=(0,r.Z)({},t,n);return(0,r.Z)({role:"presentation"},o,{onKeyDown:H(o),ref:M})},getBackdropProps:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,r.Z)({"aria-hidden":!0},e,{onClick:W(e),open:x})},getTransitionProps:function(){return{onEnter:(0,p.Z)((function(){I(!1),g&&g()}),P.props.onEnter),onExited:(0,p.Z)((function(){I(!0),Z&&Z(),b&&z()}),P.props.onExited)}},rootRef:M,portalRef:K,isTopModal:B,exited:F,hasTransition:L}}var T=t(94419),S=t(32080),M=t(96174),C=t(66934),N=t(31402),F=t(52739),I=t(75878),L=t(21217);function A(e){return(0,L.Z)("MuiModal",e)}(0,I.Z)("MuiModal",["root","hidden","backdrop"]);var O=t(80184),D=["BackdropComponent","BackdropProps","classes","className","closeAfterTransition","children","container","component","components","componentsProps","disableAutoFocus","disableEnforceFocus","disableEscapeKeyDown","disablePortal","disableRestoreFocus","disableScrollLock","hideBackdrop","keepMounted","onBackdropClick","onClose","open","slotProps","slots","theme"],j=(0,C.ZP)("div",{name:"MuiModal",slot:"Root",overridesResolver:function(e,n){var t=e.ownerState;return[n.root,!t.open&&t.exited&&n.hidden]}})((function(e){var n=e.theme,t=e.ownerState;return(0,r.Z)({position:"fixed",zIndex:(n.vars||n).zIndex.modal,right:0,bottom:0,top:0,left:0},!t.open&&t.exited&&{visibility:"hidden"})})),B=(0,C.ZP)(F.Z,{name:"MuiModal",slot:"Backdrop",overridesResolver:function(e,n){return n.backdrop}})({zIndex:-1}),K=i.forwardRef((function(e,n){var t,l,u,c,d,p,f=(0,N.Z)({name:"MuiModal",props:e}),v=f.BackdropComponent,h=void 0===v?B:v,m=f.BackdropProps,b=f.className,g=f.closeAfterTransition,y=void 0!==g&&g,Z=f.children,P=f.container,E=f.component,x=f.components,k=void 0===x?{}:x,w=f.componentsProps,C=void 0===w?{}:w,F=f.disableAutoFocus,I=void 0!==F&&F,L=f.disableEnforceFocus,K=void 0!==L&&L,z=f.disableEscapeKeyDown,H=void 0!==z&&z,W=f.disablePortal,U=void 0!==W&&W,Y=f.disableRestoreFocus,q=void 0!==Y&&Y,V=f.disableScrollLock,X=void 0!==V&&V,_=f.hideBackdrop,G=void 0!==_&&_,J=f.keepMounted,Q=void 0!==J&&J,$=f.onBackdropClick,ee=f.open,ne=f.slotProps,te=f.slots,oe=(0,o.Z)(f,D),re=(0,r.Z)({},f,{closeAfterTransition:y,disableAutoFocus:I,disableEnforceFocus:K,disableEscapeKeyDown:H,disablePortal:U,disableRestoreFocus:q,disableScrollLock:X,hideBackdrop:G,keepMounted:Q}),ie=R((0,r.Z)({},re,{rootRef:n})),ae=ie.getRootProps,se=ie.getBackdropProps,le=ie.getTransitionProps,ue=ie.portalRef,ce=ie.isTopModal,de=ie.exited,pe=ie.hasTransition,fe=(0,r.Z)({},re,{exited:de}),ve=function(e){var n=e.open,t=e.exited,o=e.classes,r={root:["root",!n&&t&&"hidden"],backdrop:["backdrop"]};return(0,T.Z)(r,A,o)}(fe),he={};if(void 0===Z.props.tabIndex&&(he.tabIndex="-1"),pe){var me=le(),be=me.onEnter,ge=me.onExited;he.onEnter=be,he.onExited=ge}var ye=null!=(t=null!=(l=null==te?void 0:te.root)?l:k.Root)?t:j,Ze=null!=(u=null!=(c=null==te?void 0:te.backdrop)?c:k.Backdrop)?u:h,Pe=null!=(d=null==ne?void 0:ne.root)?d:C.root,Ee=null!=(p=null==ne?void 0:ne.backdrop)?p:C.backdrop,xe=(0,s.y)({elementType:ye,externalSlotProps:Pe,externalForwardedProps:oe,getSlotProps:ae,additionalProps:{ref:n,as:E},ownerState:fe,className:(0,a.Z)(b,null==Pe?void 0:Pe.className,null==ve?void 0:ve.root,!fe.open&&fe.exited&&(null==ve?void 0:ve.hidden))}),ke=(0,s.y)({elementType:Ze,externalSlotProps:Ee,additionalProps:m,getSlotProps:function(e){return se((0,r.Z)({},e,{onClick:function(n){$&&$(n),null!=e&&e.onClick&&e.onClick(n)}}))},className:(0,a.Z)(null==Ee?void 0:Ee.className,null==m?void 0:m.className,null==ve?void 0:ve.backdrop),ownerState:fe});return Q||ee||pe&&!de?(0,O.jsx)(M.h,{ref:ue,container:P,disablePortal:U,children:(0,O.jsxs)(ye,(0,r.Z)({},xe,{children:[!G&&h?(0,O.jsx)(Ze,(0,r.Z)({},ke)):null,(0,O.jsx)(S.i,{disableEnforceFocus:K,disableAutoFocus:I,disableRestoreFocus:q,isEnabled:ce,open:ee,children:i.cloneElement(Z,he)})]}))}):null}))},78949:function(e,n,t){function o(){for(var e=arguments.length,n=new Array(e),t=0;t,
    \n
    \n
    \n );\n};\n\nexport default HelpItem;\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Position | PositionLike | Point | PointLike | null | undefined} [value]\n * Node, position, or point.\n * @returns {string}\n * Pretty printed positional info of a node (`string`).\n *\n * In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n * or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n * column, `s` for `start`, and `e` for end.\n * An empty string (`''`) is returned if the given value is neither `node`,\n * `position`, nor `point`.\n */\nexport function stringifyPosition(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if ('position' in value || 'type' in value) {\n return position(value.position)\n }\n\n // Position.\n if ('start' in value || 'end' in value) {\n return position(value)\n }\n\n // Point.\n if ('line' in value || 'column' in value) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\n/**\n * Message.\n */\nexport class VFileMessage extends Error {\n /**\n * Create a message for `reason` at `place` from `origin`.\n *\n * When an error is passed in as `reason`, the `stack` is copied.\n *\n * @param {string | Error | VFileMessage} reason\n * Reason for message, uses the stack and message of the error if given.\n *\n * > 👉 **Note**: you should use markdown.\n * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n * Place in file where the message occurred.\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns\n * Instance of `VFileMessage`.\n */\n // To do: next major: expose `undefined` everywhere instead of `null`.\n constructor(reason, place, origin) {\n /** @type {[string | null, string | null]} */\n const parts = [null, null]\n /** @type {Position} */\n let position = {\n // @ts-expect-error: we always follows the structure of `position`.\n start: {line: null, column: null},\n // @ts-expect-error: \"\n end: {line: null, column: null}\n }\n\n super()\n\n if (typeof place === 'string') {\n origin = place\n place = undefined\n }\n\n if (typeof origin === 'string') {\n const index = origin.indexOf(':')\n\n if (index === -1) {\n parts[1] = origin\n } else {\n parts[0] = origin.slice(0, index)\n parts[1] = origin.slice(index + 1)\n }\n }\n\n if (place) {\n // Node.\n if ('type' in place || 'position' in place) {\n if (place.position) {\n // To do: next major: deep clone.\n // @ts-expect-error: looks like a position.\n position = place.position\n }\n }\n // Position.\n else if ('start' in place || 'end' in place) {\n // @ts-expect-error: looks like a position.\n // To do: next major: deep clone.\n position = place\n }\n // Point.\n else if ('line' in place || 'column' in place) {\n // To do: next major: deep clone.\n position.start = place\n }\n }\n\n // Fields from `Error`.\n /**\n * Serialized positional info of error.\n *\n * On normal errors, this would be something like `ParseError`, buit in\n * `VFile` messages we use this space to show where an error happened.\n */\n this.name = stringifyPosition(place) || '1:1'\n\n /**\n * Reason for message.\n *\n * @type {string}\n */\n this.message = typeof reason === 'object' ? reason.message : reason\n\n /**\n * Stack of message.\n *\n * This is used by normal errors to show where something happened in\n * programming code, irrelevant for `VFile` messages,\n *\n * @type {string}\n */\n this.stack = ''\n\n if (typeof reason === 'object' && reason.stack) {\n this.stack = reason.stack\n }\n\n /**\n * Reason for message.\n *\n * > 👉 **Note**: you should use markdown.\n *\n * @type {string}\n */\n this.reason = this.message\n\n /* eslint-disable no-unused-expressions */\n /**\n * State of problem.\n *\n * * `true` — marks associated file as no longer processable (error)\n * * `false` — necessitates a (potential) change (warning)\n * * `null | undefined` — for things that might not need changing (info)\n *\n * @type {boolean | null | undefined}\n */\n this.fatal\n\n /**\n * Starting line of error.\n *\n * @type {number | null}\n */\n this.line = position.start.line\n\n /**\n * Starting column of error.\n *\n * @type {number | null}\n */\n this.column = position.start.column\n\n /**\n * Full unist position.\n *\n * @type {Position | null}\n */\n this.position = position\n\n /**\n * Namespace of message (example: `'my-package'`).\n *\n * @type {string | null}\n */\n this.source = parts[0]\n\n /**\n * Category of message (example: `'my-rule'`).\n *\n * @type {string | null}\n */\n this.ruleId = parts[1]\n\n /**\n * Path of a file (used throughout the `VFile` ecosystem).\n *\n * @type {string | null}\n */\n this.file\n\n // The following fields are “well known”.\n // Not standard.\n // Feel free to add other non-standard fields to your messages.\n\n /**\n * Specify the source value that’s being reported, which is deemed\n * incorrect.\n *\n * @type {string | null}\n */\n this.actual\n\n /**\n * Suggest acceptable values that can be used instead of `actual`.\n *\n * @type {Array | null}\n */\n this.expected\n\n /**\n * Link to docs for the message.\n *\n * > 👉 **Note**: this must be an absolute URL that can be passed as `x`\n * > to `new URL(x)`.\n *\n * @type {string | null}\n */\n this.url\n\n /**\n * Long form description of the message (you should use markdown).\n *\n * @type {string | null}\n */\n this.note\n /* eslint-enable no-unused-expressions */\n }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.fatal = null\nVFileMessage.prototype.column = null\nVFileMessage.prototype.line = null\nVFileMessage.prototype.source = null\nVFileMessage.prototype.ruleId = null\nVFileMessage.prototype.position = null\n","// A derivative work based on:\n// .\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// .\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const path = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n * File path.\n * @param {string | undefined} [ext]\n * Extension to strip.\n * @returns {string}\n * Stem or basename.\n */\nfunction basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let seenNonSlash\n\n if (ext === undefined || ext.length === 0 || ext.length > path.length) {\n while (index--) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (ext === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extIndex = ext.length - 1\n\n while (index--) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extIndex > -1) {\n // Try to match the explicit extension.\n if (path.charCodeAt(index) === ext.charCodeAt(extIndex--)) {\n if (extIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.charCodeAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.charCodeAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * Extname.\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.charCodeAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array} segments\n * Path segments.\n * @returns {string}\n * File path.\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string | undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.charCodeAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.charCodeAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * File path.\n * @param {boolean} allowAboveRoot\n * Whether `..` can move above root.\n * @returns {string}\n * File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number | undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.charCodeAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.charCodeAt(result.length - 1) !== 46 /* `.` */ ||\n result.charCodeAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n * File path.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// .\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const proc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n","/**\n * @typedef URL\n * @property {string} hash\n * @property {string} host\n * @property {string} hostname\n * @property {string} href\n * @property {string} origin\n * @property {string} password\n * @property {string} pathname\n * @property {string} port\n * @property {string} protocol\n * @property {string} search\n * @property {any} searchParams\n * @property {string} username\n * @property {() => string} toString\n * @property {() => string} toJSON\n */\n\n/**\n * Check if `fileUrlOrPath` looks like a URL.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it’s a URL.\n */\n// From: \nexport function isUrl(fileUrlOrPath) {\n return (\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n // @ts-expect-error: indexable.\n fileUrlOrPath.href &&\n // @ts-expect-error: indexable.\n fileUrlOrPath.origin\n )\n}\n","/// \n\nimport {isUrl} from './minurl.shared.js'\n\n// See: \n\n/**\n * @param {string | URL} path\n * File URL.\n * @returns {string}\n * File URL.\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n * URL.\n * @returns {string}\n * File path.\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.charCodeAt(index) === 37 /* `%` */ &&\n pathname.charCodeAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.charCodeAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n\nexport {isUrl} from './minurl.shared.js'\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {import('./minurl.shared.js').URL} URL\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n */\n\n/**\n * @typedef {Record & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef {'ascii' | 'utf8' | 'utf-8' | 'utf16le' | 'ucs2' | 'ucs-2' | 'base64' | 'base64url' | 'latin1' | 'binary' | 'hex'} BufferEncoding\n * Encodings supported by the buffer class.\n *\n * This is a copy of the types from Node, copied to prevent Node globals from\n * being needed.\n * Copied from: \n *\n * @typedef {Options | URL | Value | VFile} Compatible\n * Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n * Set multiple values.\n * @property {Value | null | undefined} [value]\n * Set `value`.\n * @property {string | null | undefined} [cwd]\n * Set `cwd`.\n * @property {Array | null | undefined} [history]\n * Set `history`.\n * @property {URL | string | null | undefined} [path]\n * Set `path`.\n * @property {string | null | undefined} [basename]\n * Set `basename`.\n * @property {string | null | undefined} [stem]\n * Set `stem`.\n * @property {string | null | undefined} [extname]\n * Set `extname`.\n * @property {string | null | undefined} [dirname]\n * Set `dirname`.\n * @property {Data | null | undefined} [data]\n * Set `data`.\n *\n * @typedef Map\n * Raw source map.\n *\n * See:\n * .\n * @property {number} version\n * Which version of the source map spec this map is following.\n * @property {Array} sources\n * An array of URLs to the original source files.\n * @property {Array} names\n * An array of identifiers which can be referenced by individual mappings.\n * @property {string | undefined} [sourceRoot]\n * The URL root from which all sources are relative.\n * @property {Array | undefined} [sourcesContent]\n * An array of contents of the original source files.\n * @property {string} mappings\n * A string of base64 VLQs which contain the actual mappings.\n * @property {string} file\n * The generated file this source map is associated with.\n *\n * @typedef {{[key: string]: unknown} & VFileCoreOptions} Options\n * Configuration.\n *\n * A bunch of keys that will be shallow copied over to the new file.\n *\n * @typedef {Record} ReporterSettings\n * Configuration for reporters.\n */\n\n/**\n * @template {ReporterSettings} Settings\n * Options type.\n * @callback Reporter\n * Type for a reporter.\n * @param {Array} files\n * Files to report.\n * @param {Settings} options\n * Configuration.\n * @returns {string}\n * Report.\n */\n\nimport bufferLike from 'is-buffer'\nimport {VFileMessage} from 'vfile-message'\nimport {path} from './minpath.js'\nimport {proc} from './minproc.js'\nimport {urlToPath, isUrl} from './minurl.js'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n *\n * @type {Array<'basename' | 'dirname' | 'extname' | 'history' | 'path' | 'stem'>}\n */\nconst order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname']\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Buffer` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (typeof value === 'string' || buffer(value)) {\n options = {value}\n } else if (isUrl(value)) {\n options = {path: value}\n } else {\n options = value\n }\n\n /**\n * Place to store custom information (default: `{}`).\n *\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array}\n */\n this.messages = []\n\n /**\n * List of filepaths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array}\n */\n this.history = []\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n this.cwd = proc.cwd()\n\n /* eslint-disable no-unused-expressions */\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const prop = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n prop in options &&\n options[prop] !== undefined &&\n options[prop] !== null\n ) {\n // @ts-expect-error: TS doesn’t understand basic reality.\n this[prop] = prop === 'history' ? [...options[prop]] : options[prop]\n }\n }\n\n /** @type {string} */\n let prop\n\n // Set non-path related properties.\n for (prop in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(prop)) {\n // @ts-expect-error: fine to set other things.\n this[prop] = options[prop]\n }\n }\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {string | URL} path\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the parent path (example: `'~'`).\n */\n get dirname() {\n return typeof this.path === 'string' ? path.dirname(this.path) : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there’s no `path` yet.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = path.join(dirname || '', this.basename)\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n */\n get basename() {\n return typeof this.path === 'string' ? path.basename(this.path) : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = path.join(this.dirname || '', basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n */\n get extname() {\n return typeof this.path === 'string' ? path.extname(this.path) : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.charCodeAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = path.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n */\n get stem() {\n return typeof this.path === 'string'\n ? path.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = path.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n /**\n * Serialize the file.\n *\n * @param {BufferEncoding | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it’s a `Buffer`\n * (default: `'utf8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n return (this.value || '').toString(encoding || undefined)\n }\n\n /**\n * Create a warning message associated with the file.\n *\n * Its `fatal` is set to `false` and `file` is set to the current file path.\n * Its added to `file.messages`.\n *\n * @param {string | Error | VFileMessage} reason\n * Reason for message, uses the stack and message of the error if given.\n * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n * Place in file where the message occurred.\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(reason, place, origin) {\n const message = new VFileMessage(reason, place, origin)\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Create an info message associated with the file.\n *\n * Its `fatal` is set to `null` and `file` is set to the current file path.\n * Its added to `file.messages`.\n *\n * @param {string | Error | VFileMessage} reason\n * Reason for message, uses the stack and message of the error if given.\n * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n * Place in file where the message occurred.\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(reason, place, origin) {\n const message = this.message(reason, place, origin)\n\n message.fatal = null\n\n return message\n }\n\n /**\n * Create a fatal error associated with the file.\n *\n * Its `fatal` is set to `true` and `file` is set to the current file path.\n * Its added to `file.messages`.\n *\n * > 👉 **Note**: a fatal error means that a file is no longer processable.\n *\n * @param {string | Error | VFileMessage} reason\n * Reason for message, uses the stack and message of the error if given.\n * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n * Place in file where the message occurred.\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Message.\n * @throws {VFileMessage}\n * Message.\n */\n fail(reason, place, origin) {\n const message = this.message(reason, place, origin)\n\n message.fatal = true\n\n throw message\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {void}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(path.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + path.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is a buffer.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Buffer}\n * Whether `value` is a Node.js buffer.\n */\nfunction buffer(value) {\n return bufferLike(value)\n}\n","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","/**\n * @typedef {(error?: Error|null|undefined, ...output: Array) => void} Callback\n * @typedef {(...input: Array) => any} Middleware\n *\n * @typedef {(...input: Array) => void} Run\n * Call all middleware.\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add `fn` (middleware) to the list.\n * @typedef {{run: Run, use: Use}} Pipeline\n * Middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n */\nexport function trough() {\n /** @type {Array} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we’re done.\n *\n * @param {Error|null|undefined} error\n * @param {Array} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware`.\n * Can be sync or async; return a promise, receive a callback, or return new\n * values and errors.\n *\n * @param {Middleware} middleware\n * @param {Callback} callback\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result instanceof Promise) {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('vfile').VFileCompatible} VFileCompatible\n * @typedef {import('vfile').VFileValue} VFileValue\n * @typedef {import('..').Processor} Processor\n * @typedef {import('..').Plugin} Plugin\n * @typedef {import('..').Preset} Preset\n * @typedef {import('..').Pluggable} Pluggable\n * @typedef {import('..').PluggableList} PluggableList\n * @typedef {import('..').Transformer} Transformer\n * @typedef {import('..').Parser} Parser\n * @typedef {import('..').Compiler} Compiler\n * @typedef {import('..').RunCallback} RunCallback\n * @typedef {import('..').ProcessCallback} ProcessCallback\n *\n * @typedef Context\n * @property {Node} tree\n * @property {VFile} file\n */\n\nimport {bail} from 'bail'\nimport isBuffer from 'is-buffer'\nimport extend from 'extend'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\n\n// Expose a frozen processor.\nexport const unified = base().freeze()\n\nconst own = {}.hasOwnProperty\n\n// Function to create the first processor.\n/**\n * @returns {Processor}\n */\nfunction base() {\n const transformers = trough()\n /** @type {Processor['attachers']} */\n const attachers = []\n /** @type {Record} */\n let namespace = {}\n /** @type {boolean|undefined} */\n let frozen\n let freezeIndex = -1\n\n // Data management.\n // @ts-expect-error: overloads are handled.\n processor.data = data\n processor.Parser = undefined\n processor.Compiler = undefined\n\n // Lock.\n processor.freeze = freeze\n\n // Plugins.\n processor.attachers = attachers\n // @ts-expect-error: overloads are handled.\n processor.use = use\n\n // API.\n processor.parse = parse\n processor.stringify = stringify\n // @ts-expect-error: overloads are handled.\n processor.run = run\n processor.runSync = runSync\n // @ts-expect-error: overloads are handled.\n processor.process = process\n processor.processSync = processSync\n\n // Expose.\n return processor\n\n // Create a new processor based on the processor in the current scope.\n /** @type {Processor} */\n function processor() {\n const destination = base()\n let index = -1\n\n while (++index < attachers.length) {\n destination.use(...attachers[index])\n }\n\n destination.data(extend(true, {}, namespace))\n\n return destination\n }\n\n /**\n * @param {string|Record} [key]\n * @param {unknown} [value]\n * @returns {unknown}\n */\n function data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', frozen)\n namespace[key] = value\n return processor\n }\n\n // Get `key`.\n return (own.call(namespace, key) && namespace[key]) || null\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', frozen)\n namespace = key\n return processor\n }\n\n // Get space.\n return namespace\n }\n\n /** @type {Processor['freeze']} */\n function freeze() {\n if (frozen) {\n return processor\n }\n\n while (++freezeIndex < attachers.length) {\n const [attacher, ...options] = attachers[freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n /** @type {Transformer|void} */\n const transformer = attacher.call(processor, ...options)\n\n if (typeof transformer === 'function') {\n transformers.use(transformer)\n }\n }\n\n frozen = true\n freezeIndex = Number.POSITIVE_INFINITY\n\n return processor\n }\n\n /**\n * @param {Pluggable|null|undefined} [value]\n * @param {...unknown} options\n * @returns {Processor}\n */\n function use(value, ...options) {\n /** @type {Record|undefined} */\n let settings\n\n assertUnfrozen('use', frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, ...options)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n if (settings) {\n namespace.settings = Object.assign(namespace.settings || {}, settings)\n }\n\n return processor\n\n /**\n * @param {import('..').Pluggable} value\n * @returns {void}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...options] = value\n addPlugin(plugin, ...options)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {void}\n */\n function addPreset(result) {\n addList(result.plugins)\n\n if (result.settings) {\n settings = Object.assign(settings || {}, result.settings)\n }\n }\n\n /**\n * @param {PluggableList|null|undefined} [plugins]\n * @returns {void}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {...unknown} [value]\n * @returns {void}\n */\n function addPlugin(plugin, value) {\n let index = -1\n /** @type {Processor['attachers'][number]|undefined} */\n let entry\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entry = attachers[index]\n break\n }\n }\n\n if (entry) {\n if (isPlainObj(entry[1]) && isPlainObj(value)) {\n value = extend(true, entry[1], value)\n }\n\n entry[1] = value\n } else {\n // @ts-expect-error: fine.\n attachers.push([...arguments])\n }\n }\n }\n\n /** @type {Processor['parse']} */\n function parse(doc) {\n processor.freeze()\n const file = vfile(doc)\n const Parser = processor.Parser\n assertParser('parse', Parser)\n\n if (newable(Parser, 'parse')) {\n // @ts-expect-error: `newable` checks this.\n return new Parser(String(file), file).parse()\n }\n\n // @ts-expect-error: `newable` checks this.\n return Parser(String(file), file) // eslint-disable-line new-cap\n }\n\n /** @type {Processor['stringify']} */\n function stringify(node, doc) {\n processor.freeze()\n const file = vfile(doc)\n const Compiler = processor.Compiler\n assertCompiler('stringify', Compiler)\n assertNode(node)\n\n if (newable(Compiler, 'compile')) {\n // @ts-expect-error: `newable` checks this.\n return new Compiler(node, file).compile()\n }\n\n // @ts-expect-error: `newable` checks this.\n return Compiler(node, file) // eslint-disable-line new-cap\n }\n\n /**\n * @param {Node} node\n * @param {VFileCompatible|RunCallback} [doc]\n * @param {RunCallback} [callback]\n * @returns {Promise|void}\n */\n function run(node, doc, callback) {\n assertNode(node)\n processor.freeze()\n\n if (!callback && typeof doc === 'function') {\n callback = doc\n doc = undefined\n }\n\n if (!callback) {\n return new Promise(executor)\n }\n\n executor(null, callback)\n\n /**\n * @param {null|((node: Node) => void)} resolve\n * @param {(error: Error) => void} reject\n * @returns {void}\n */\n function executor(resolve, reject) {\n // @ts-expect-error: `doc` can’t be a callback anymore, we checked.\n transformers.run(node, vfile(doc), done)\n\n /**\n * @param {Error|null} error\n * @param {Node} tree\n * @param {VFile} file\n * @returns {void}\n */\n function done(error, tree, file) {\n tree = tree || node\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(tree)\n } else {\n // @ts-expect-error: `callback` is defined if `resolve` is not.\n callback(null, tree, file)\n }\n }\n }\n }\n\n /** @type {Processor['runSync']} */\n function runSync(node, file) {\n /** @type {Node|undefined} */\n let result\n /** @type {boolean|undefined} */\n let complete\n\n processor.run(node, file, done)\n\n assertDone('runSync', 'run', complete)\n\n // @ts-expect-error: we either bailed on an error or have a tree.\n return result\n\n /**\n * @param {Error|null} [error]\n * @param {Node} [tree]\n * @returns {void}\n */\n function done(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * @param {VFileCompatible} doc\n * @param {ProcessCallback} [callback]\n * @returns {Promise|undefined}\n */\n function process(doc, callback) {\n processor.freeze()\n assertParser('process', processor.Parser)\n assertCompiler('process', processor.Compiler)\n\n if (!callback) {\n return new Promise(executor)\n }\n\n executor(null, callback)\n\n /**\n * @param {null|((file: VFile) => void)} resolve\n * @param {(error?: Error|null|undefined) => void} reject\n * @returns {void}\n */\n function executor(resolve, reject) {\n const file = vfile(doc)\n\n processor.run(processor.parse(file), file, (error, tree, file) => {\n if (error || !tree || !file) {\n done(error)\n } else {\n /** @type {unknown} */\n const result = processor.stringify(tree, file)\n\n if (result === undefined || result === null) {\n // Empty.\n } else if (looksLikeAVFileValue(result)) {\n file.value = result\n } else {\n file.result = result\n }\n\n done(error, file)\n }\n })\n\n /**\n * @param {Error|null|undefined} [error]\n * @param {VFile|undefined} [file]\n * @returns {void}\n */\n function done(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n // @ts-expect-error: `callback` is defined if `resolve` is not.\n callback(null, file)\n }\n }\n }\n }\n\n /** @type {Processor['processSync']} */\n function processSync(doc) {\n /** @type {boolean|undefined} */\n let complete\n\n processor.freeze()\n assertParser('processSync', processor.Parser)\n assertCompiler('processSync', processor.Compiler)\n\n const file = vfile(doc)\n\n processor.process(file, done)\n\n assertDone('processSync', 'process', complete)\n\n return file\n\n /**\n * @param {Error|null|undefined} [error]\n * @returns {void}\n */\n function done(error) {\n complete = true\n bail(error)\n }\n }\n}\n\n/**\n * Check if `value` is a constructor.\n *\n * @param {unknown} value\n * @param {string} name\n * @returns {boolean}\n */\nfunction newable(value, name) {\n return (\n typeof value === 'function' &&\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n value.prototype &&\n // A function with keys in its prototype is probably a constructor.\n // Classes’ prototype methods are not enumerable, so we check if some value\n // exists in the prototype.\n // type-coverage:ignore-next-line\n (keys(value.prototype) || name in value.prototype)\n )\n}\n\n/**\n * Check if `value` is an object with keys.\n *\n * @param {Record} value\n * @returns {boolean}\n */\nfunction keys(value) {\n /** @type {string} */\n let key\n\n for (key in value) {\n if (own.call(value, key)) {\n return true\n }\n }\n\n return false\n}\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `Parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `Compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {VFileCompatible} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {VFileCompatible} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is VFileValue}\n */\nfunction looksLikeAVFileValue(value) {\n return typeof value === 'string' || isBuffer(value)\n}\n","/**\n * @typedef {import('mdast').Root|import('mdast').Content} Node\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [includeImageAlt=true]\n * Whether to use `alt` for `image`s.\n * @property {boolean | null | undefined} [includeHtml=true]\n * Whether to use `value` of HTML.\n */\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node’s plain-text fields, otherwise serializes its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} value\n * Thing to serialize, typically `Node`.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized `value`.\n */\nexport function toString(value, options) {\n const settings = options || emptyOptions\n const includeImageAlt =\n typeof settings.includeImageAlt === 'boolean'\n ? settings.includeImageAlt\n : true\n const includeHtml =\n typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true\n\n return one(value, includeImageAlt, includeHtml)\n}\n\n/**\n * One node or several nodes.\n *\n * @param {unknown} value\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized node.\n */\nfunction one(value, includeImageAlt, includeHtml) {\n if (node(value)) {\n if ('value' in value) {\n return value.type === 'html' && !includeHtml ? '' : value.value\n }\n\n if (includeImageAlt && 'alt' in value && value.alt) {\n return value.alt\n }\n\n if ('children' in value) {\n return all(value.children, includeImageAlt, includeHtml)\n }\n }\n\n if (Array.isArray(value)) {\n return all(value, includeImageAlt, includeHtml)\n }\n\n return ''\n}\n\n/**\n * Serialize a list of nodes.\n *\n * @param {Array} values\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized nodes.\n */\nfunction all(values, includeImageAlt, includeHtml) {\n /** @type {Array} */\n const result = []\n let index = -1\n\n while (++index < values.length) {\n result[index] = one(values[index], includeImageAlt, includeHtml)\n }\n\n return result.join('')\n}\n\n/**\n * Check if `value` looks like a node.\n *\n * @param {unknown} value\n * Thing.\n * @returns {value is Node}\n * Whether `value` is a node.\n */\nfunction node(value) {\n return Boolean(value && typeof value === 'object')\n}\n","/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array} list\n * List to operate on.\n * @param {number} start\n * Index to remove/insert at (can be negative).\n * @param {number} remove\n * Number of items to remove.\n * @param {Array} items\n * Items to inject into `list`.\n * @returns {void}\n * Nothing.\n */\nexport function splice(list, start, remove, items) {\n const end = list.length\n let chunkStart = 0\n /** @type {Array} */\n let parameters\n\n // Make start between zero and `end` (included).\n if (start < 0) {\n start = -start > end ? 0 : end + start\n } else {\n start = start > end ? end : start\n }\n remove = remove > 0 ? remove : 0\n\n // No need to chunk the items if there’s only a couple (10k) items.\n if (items.length < 10000) {\n parameters = Array.from(items)\n parameters.unshift(start, remove)\n // @ts-expect-error Hush, it’s fine.\n list.splice(...parameters)\n } else {\n // Delete `remove` items starting from `start`\n if (remove) list.splice(start, remove)\n\n // Insert the items in chunks to not cause stack overflows.\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 10000)\n parameters.unshift(start, 0)\n // @ts-expect-error Hush, it’s fine.\n list.splice(...parameters)\n chunkStart += 10000\n start += 10000\n }\n }\n}\n\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array} list\n * List to operate on.\n * @param {Array} items\n * Items to add to `list`.\n * @returns {Array}\n * Either `list` or `items`.\n */\nexport function push(list, items) {\n if (list.length > 0) {\n splice(list, list.length, 0, items)\n return list\n }\n return items\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Handles} Handles\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n * @typedef {import('micromark-util-types').NormalizedExtension} NormalizedExtension\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine multiple syntax extensions into one.\n *\n * @param {Array} extensions\n * List of syntax extensions.\n * @returns {NormalizedExtension}\n * A single combined extension.\n */\nexport function combineExtensions(extensions) {\n /** @type {NormalizedExtension} */\n const all = {}\n let index = -1\n\n while (++index < extensions.length) {\n syntaxExtension(all, extensions[index])\n }\n\n return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all\n * Extension to merge into.\n * @param {Extension} extension\n * Extension to merge.\n * @returns {void}\n */\nfunction syntaxExtension(all, extension) {\n /** @type {keyof Extension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n /** @type {Record} */\n const left = maybe || (all[hook] = {})\n /** @type {Record | undefined} */\n const right = extension[hook]\n /** @type {string} */\n let code\n\n if (right) {\n for (code in right) {\n if (!hasOwnProperty.call(left, code)) left[code] = []\n const value = right[code]\n constructs(\n // @ts-expect-error Looks like a list.\n left[code],\n Array.isArray(value) ? value : value ? [value] : []\n )\n }\n }\n }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {Array} existing\n * @param {Array} list\n * @returns {void}\n */\nfunction constructs(existing, list) {\n let index = -1\n /** @type {Array} */\n const before = []\n\n while (++index < list.length) {\n // @ts-expect-error Looks like an object.\n ;(list[index].add === 'after' ? existing : before).push(list[index])\n }\n\n splice(existing, 0, 0, before)\n}\n\n/**\n * Combine multiple HTML extensions into one.\n *\n * @param {Array} htmlExtensions\n * List of HTML extensions.\n * @returns {HtmlExtension}\n * A single combined HTML extension.\n */\nexport function combineHtmlExtensions(htmlExtensions) {\n /** @type {HtmlExtension} */\n const handlers = {}\n let index = -1\n\n while (++index < htmlExtensions.length) {\n htmlExtension(handlers, htmlExtensions[index])\n }\n\n return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all\n * Extension to merge into.\n * @param {HtmlExtension} extension\n * Extension to merge.\n * @returns {void}\n */\nfunction htmlExtension(all, extension) {\n /** @type {keyof HtmlExtension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n const left = maybe || (all[hook] = {})\n const right = extension[hook]\n /** @type {keyof Handles} */\n let type\n\n if (right) {\n for (type in right) {\n // @ts-expect-error assume document vs regular handler are managed correctly.\n left[type] = right[type]\n }\n }\n }\n}\n","// This module is generated by `script/`.\n//\n// CommonMark handles attention (emphasis, strong) markers based on what comes\n// before or after them.\n// One such difference is if those characters are Unicode punctuation.\n// This script is generated from the Unicode data.\n\n/**\n * Regular expression that matches a unicode punctuation character.\n */\nexport const unicodePunctuationRegex =\n /[!-\\/:-@\\[-`\\{-~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1B7D\\u1B7E\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52-\\u2E5D\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\nimport {unicodePunctuationRegex} from './lib/unicode-punctuation-regex.js'\n\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiAlpha = regexCheck(/[A-Za-z]/)\n\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\n\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/)\n\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code !== null && (code < 32 || code === 127)\n )\n}\n\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiDigit = regexCheck(/\\d/)\n\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/)\n\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\n\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEnding(code) {\n return code !== null && code < -2\n}\n\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEndingOrSpace(code) {\n return code !== null && (code < 0 || code === 32)\n}\n\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownSpace(code) {\n return code === -2 || code === -1 || code === 32\n}\n\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodePunctuation = regexCheck(unicodePunctuationRegex)\n\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodeWhitespace = regexCheck(/\\s/)\n\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * @returns {(code: Code) => boolean}\n */\nfunction regexCheck(regex) {\n return check\n\n /**\n * Check whether a code matches the bound regex.\n *\n * @param {Code} code\n * Character code.\n * @returns {boolean}\n * Whether the character code matches the bound regex.\n */\n function check(code) {\n return code !== null && regex.test(String.fromCharCode(code))\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {markdownSpace} from 'micromark-util-character'\n\n// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`.\n\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * spaces in markdown are often optional, in which case this factory can be\n * used and `ok` will be switched to whether spaces were found or not\n * * one line ending or space can be detected with `markdownSpace(code)` right\n * before using `factorySpace`\n *\n * ###### Examples\n *\n * Where `␉` represents a tab (plus how much it expands) and `␠` represents a\n * single space.\n *\n * ```markdown\n * ␉\n * ␠␠␠␠\n * ␉␠\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {TokenType} type\n * Type (`' \\t'`).\n * @param {number | undefined} [max=Infinity]\n * Max (exclusive).\n * @returns\n * Start state.\n */\nexport function factorySpace(effects, ok, type, max) {\n const limit = max ? max - 1 : Number.POSITIVE_INFINITY\n let size = 0\n return start\n\n /** @type {State} */\n function start(code) {\n if (markdownSpace(code)) {\n effects.enter(type)\n return prefix(code)\n }\n return ok(code)\n }\n\n /** @type {State} */\n function prefix(code) {\n if (markdownSpace(code) && size++ < limit) {\n effects.consume(code)\n return prefix\n }\n effects.exit(type)\n return ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {InitialConstruct} */\nexport const content = {\n tokenize: initializeContent\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeContent(effects) {\n const contentStart = effects.attempt(\n this.parser.constructs.contentInitial,\n afterContentStartConstruct,\n paragraphInitial\n )\n /** @type {Token} */\n let previous\n return contentStart\n\n /** @type {State} */\n function afterContentStartConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, contentStart, 'linePrefix')\n }\n\n /** @type {State} */\n function paragraphInitial(code) {\n effects.enter('paragraph')\n return lineStart(code)\n }\n\n /** @type {State} */\n function lineStart(code) {\n const token = effects.enter('chunkText', {\n contentType: 'text',\n previous\n })\n if (previous) {\n previous.next = token\n }\n previous = token\n return data(code)\n }\n\n /** @type {State} */\n function data(code) {\n if (code === null) {\n effects.exit('chunkText')\n effects.exit('paragraph')\n effects.consume(code)\n return\n }\n if (markdownLineEnding(code)) {\n effects.consume(code)\n effects.exit('chunkText')\n return lineStart\n }\n\n // Data.\n effects.consume(code)\n return data\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ContainerState} ContainerState\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n/**\n * @typedef {[Construct, ContainerState]} StackItem\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n/** @type {InitialConstruct} */\nexport const document = {\n tokenize: initializeDocument\n}\n\n/** @type {Construct} */\nconst containerConstruct = {\n tokenize: tokenizeContainer\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeDocument(effects) {\n const self = this\n /** @type {Array} */\n const stack = []\n let continued = 0\n /** @type {TokenizeContext | undefined} */\n let childFlow\n /** @type {Token | undefined} */\n let childToken\n /** @type {number} */\n let lineStartOffset\n return start\n\n /** @type {State} */\n function start(code) {\n // First we iterate through the open blocks, starting with the root\n // document, and descending through last children down to the last open\n // block.\n // Each block imposes a condition that the line must satisfy if the block is\n // to remain open.\n // For example, a block quote requires a `>` character.\n // A paragraph requires a non-blank line.\n // In this phase we may match all or just some of the open blocks.\n // But we cannot close unmatched blocks yet, because we may have a lazy\n // continuation line.\n if (continued < stack.length) {\n const item = stack[continued]\n self.containerState = item[1]\n return effects.attempt(\n item[0].continuation,\n documentContinue,\n checkNewContainers\n )(code)\n }\n\n // Done.\n return checkNewContainers(code)\n }\n\n /** @type {State} */\n function documentContinue(code) {\n continued++\n\n // Note: this field is called `_closeFlow` but it also closes containers.\n // Perhaps a good idea to rename it but it’s already used in the wild by\n // extensions.\n if (self.containerState._closeFlow) {\n self.containerState._closeFlow = undefined\n if (childFlow) {\n closeFlow()\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when dealing with lazy lines in `writeToChild`.\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {Point | undefined} */\n let point\n\n // Find the flow chunk.\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === 'chunkFlow'\n ) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n }\n exitContainers(continued)\n\n // Fix positions.\n let index = indexBeforeExits\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n }\n\n // Inject the exits earlier (they’re still also at the end).\n splice(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n )\n\n // Discard the duplicate exits.\n self.events.length = index\n return checkNewContainers(code)\n }\n return start(code)\n }\n\n /** @type {State} */\n function checkNewContainers(code) {\n // Next, after consuming the continuation markers for existing blocks, we\n // look for new block starts (e.g. `>` for a block quote).\n // If we encounter a new block start, we close any blocks unmatched in\n // step 1 before creating the new block as a child of the last matched\n // block.\n if (continued === stack.length) {\n // No need to `check` whether there’s a container, of `exitContainers`\n // would be moot.\n // We can instead immediately `attempt` to parse one.\n if (!childFlow) {\n return documentContinued(code)\n }\n\n // If we have concrete content, such as block HTML or fenced code,\n // we can’t have containers “pierce” into them, so we can immediately\n // start.\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n return flowStart(code)\n }\n\n // If we do have flow, it could still be a blank line,\n // but we’d be interrupting it w/ a new container if there’s a current\n // construct.\n // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer\n // needed in micromark-extension-gfm-table@1.0.6).\n self.interrupt = Boolean(\n childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack\n )\n }\n\n // Check if there is a new container.\n self.containerState = {}\n return effects.check(\n containerConstruct,\n thereIsANewContainer,\n thereIsNoNewContainer\n )(code)\n }\n\n /** @type {State} */\n function thereIsANewContainer(code) {\n if (childFlow) closeFlow()\n exitContainers(continued)\n return documentContinued(code)\n }\n\n /** @type {State} */\n function thereIsNoNewContainer(code) {\n self.parser.lazy[self.now().line] = continued !== stack.length\n lineStartOffset = self.now().offset\n return flowStart(code)\n }\n\n /** @type {State} */\n function documentContinued(code) {\n // Try new containers.\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n containerContinue,\n flowStart\n )(code)\n }\n\n /** @type {State} */\n function containerContinue(code) {\n continued++\n stack.push([self.currentConstruct, self.containerState])\n // Try another.\n return documentContinued(code)\n }\n\n /** @type {State} */\n function flowStart(code) {\n if (code === null) {\n if (childFlow) closeFlow()\n exitContainers(0)\n effects.consume(code)\n return\n }\n childFlow = childFlow || self.parser.flow(self.now())\n effects.enter('chunkFlow', {\n contentType: 'flow',\n previous: childToken,\n _tokenizer: childFlow\n })\n return flowContinue(code)\n }\n\n /** @type {State} */\n function flowContinue(code) {\n if (code === null) {\n writeToChild(effects.exit('chunkFlow'), true)\n exitContainers(0)\n effects.consume(code)\n return\n }\n if (markdownLineEnding(code)) {\n effects.consume(code)\n writeToChild(effects.exit('chunkFlow'))\n // Get ready for the next line.\n continued = 0\n self.interrupt = undefined\n return start\n }\n effects.consume(code)\n return flowContinue\n }\n\n /**\n * @param {Token} token\n * @param {boolean | undefined} [eof]\n * @returns {void}\n */\n function writeToChild(token, eof) {\n const stream = self.sliceStream(token)\n if (eof) stream.push(null)\n token.previous = childToken\n if (childToken) childToken.next = token\n childToken = token\n childFlow.defineSkip(token.start)\n childFlow.write(stream)\n\n // Alright, so we just added a lazy line:\n //\n // ```markdown\n // > a\n // b.\n //\n // Or:\n //\n // > ~~~c\n // d\n //\n // Or:\n //\n // > | e |\n // f\n // ```\n //\n // The construct in the second example (fenced code) does not accept lazy\n // lines, so it marked itself as done at the end of its first line, and\n // then the content construct parses `d`.\n // Most constructs in markdown match on the first line: if the first line\n // forms a construct, a non-lazy line can’t “unmake” it.\n //\n // The construct in the third example is potentially a GFM table, and\n // those are *weird*.\n // It *could* be a table, from the first line, if the following line\n // matches a condition.\n // In this case, that second line is lazy, which “unmakes” the first line\n // and turns the whole into one content block.\n //\n // We’ve now parsed the non-lazy and the lazy line, and can figure out\n // whether the lazy line started a new flow block.\n // If it did, we exit the current containers between the two flow blocks.\n if (self.parser.lazy[token.start.line]) {\n let index = childFlow.events.length\n while (index--) {\n if (\n // The token starts before the line ending…\n childFlow.events[index][1].start.offset < lineStartOffset &&\n // …and either is not ended yet…\n (!childFlow.events[index][1].end ||\n // …or ends after it.\n childFlow.events[index][1].end.offset > lineStartOffset)\n ) {\n // Exit: there’s still something open, which means it’s a lazy line\n // part of something.\n return\n }\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when closing flow in `documentContinue`.\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {boolean | undefined} */\n let seen\n /** @type {Point | undefined} */\n let point\n\n // Find the previous chunk (the one before the lazy line).\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === 'chunkFlow'\n ) {\n if (seen) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n seen = true\n }\n }\n exitContainers(continued)\n\n // Fix positions.\n index = indexBeforeExits\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n }\n\n // Inject the exits earlier (they’re still also at the end).\n splice(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n )\n\n // Discard the duplicate exits.\n self.events.length = index\n }\n }\n\n /**\n * @param {number} size\n * @returns {void}\n */\n function exitContainers(size) {\n let index = stack.length\n\n // Exit open containers.\n while (index-- > size) {\n const entry = stack[index]\n self.containerState = entry[1]\n entry[0].exit.call(self, effects)\n }\n stack.length = size\n }\n function closeFlow() {\n childFlow.write([null])\n childToken = undefined\n childFlow = undefined\n self.containerState._closeFlow = undefined\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContainer(effects, ok, nok) {\n // Always populated by defaults.\n\n return factorySpace(\n effects,\n effects.attempt(this.parser.constructs.document, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4\n )\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const blankLine = {\n tokenize: tokenizeBlankLine,\n partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLine(effects, ok, nok) {\n return start\n\n /**\n * Start of blank line.\n *\n * > 👉 **Note**: `␠` represents a space character.\n *\n * ```markdown\n * > | ␠␠␊\n * ^\n * > | ␊\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n return markdownSpace(code)\n ? factorySpace(effects, after, 'linePrefix')(code)\n : after(code)\n }\n\n /**\n * At eof/eol, after optional whitespace.\n *\n * > 👉 **Note**: `␠` represents a space character.\n *\n * ```markdown\n * > | ␠␠␊\n * ^\n * > | ␊\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Token} Token\n */\n\nimport {splice} from 'micromark-util-chunked'\n/**\n * Tokenize subcontent.\n *\n * @param {Array} events\n * List of events.\n * @returns {boolean}\n * Whether subtokens were found.\n */\nexport function subtokenize(events) {\n /** @type {Record} */\n const jumps = {}\n let index = -1\n /** @type {Event} */\n let event\n /** @type {number | undefined} */\n let lineIndex\n /** @type {number} */\n let otherIndex\n /** @type {Event} */\n let otherEvent\n /** @type {Array} */\n let parameters\n /** @type {Array} */\n let subevents\n /** @type {boolean | undefined} */\n let more\n while (++index < events.length) {\n while (index in jumps) {\n index = jumps[index]\n }\n event = events[index]\n\n // Add a hook for the GFM tasklist extension, which needs to know if text\n // is in the first content of a list item.\n if (\n index &&\n event[1].type === 'chunkFlow' &&\n events[index - 1][1].type === 'listItemPrefix'\n ) {\n subevents = event[1]._tokenizer.events\n otherIndex = 0\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'lineEndingBlank'\n ) {\n otherIndex += 2\n }\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'content'\n ) {\n while (++otherIndex < subevents.length) {\n if (subevents[otherIndex][1].type === 'content') {\n break\n }\n if (subevents[otherIndex][1].type === 'chunkText') {\n subevents[otherIndex][1]._isInFirstContentOfListItem = true\n otherIndex++\n }\n }\n }\n }\n\n // Enter.\n if (event[0] === 'enter') {\n if (event[1].contentType) {\n Object.assign(jumps, subcontent(events, index))\n index = jumps[index]\n more = true\n }\n }\n // Exit.\n else if (event[1]._container) {\n otherIndex = index\n lineIndex = undefined\n while (otherIndex--) {\n otherEvent = events[otherIndex]\n if (\n otherEvent[1].type === 'lineEnding' ||\n otherEvent[1].type === 'lineEndingBlank'\n ) {\n if (otherEvent[0] === 'enter') {\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n }\n otherEvent[1].type = 'lineEnding'\n lineIndex = otherIndex\n }\n } else {\n break\n }\n }\n if (lineIndex) {\n // Fix position.\n event[1].end = Object.assign({}, events[lineIndex][1].start)\n\n // Switch container exit w/ line endings.\n parameters = events.slice(lineIndex, index)\n parameters.unshift(event)\n splice(events, lineIndex, index - lineIndex + 1, parameters)\n }\n }\n }\n return !more\n}\n\n/**\n * Tokenize embedded tokens.\n *\n * @param {Array} events\n * @param {number} eventIndex\n * @returns {Record}\n */\nfunction subcontent(events, eventIndex) {\n const token = events[eventIndex][1]\n const context = events[eventIndex][2]\n let startPosition = eventIndex - 1\n /** @type {Array} */\n const startPositions = []\n const tokenizer =\n token._tokenizer || context.parser[token.contentType](token.start)\n const childEvents = tokenizer.events\n /** @type {Array<[number, number]>} */\n const jumps = []\n /** @type {Record} */\n const gaps = {}\n /** @type {Array} */\n let stream\n /** @type {Token | undefined} */\n let previous\n let index = -1\n /** @type {Token | undefined} */\n let current = token\n let adjust = 0\n let start = 0\n const breaks = [start]\n\n // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n while (current) {\n // Find the position of the event for this token.\n while (events[++startPosition][1] !== current) {\n // Empty.\n }\n startPositions.push(startPosition)\n if (!current._tokenizer) {\n stream = context.sliceStream(current)\n if (!current.next) {\n stream.push(null)\n }\n if (previous) {\n tokenizer.defineSkip(current.start)\n }\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true\n }\n tokenizer.write(stream)\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined\n }\n }\n\n // Unravel the next token.\n previous = current\n current = current.next\n }\n\n // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n current = token\n while (++index < childEvents.length) {\n if (\n // Find a void token that includes a break.\n childEvents[index][0] === 'exit' &&\n childEvents[index - 1][0] === 'enter' &&\n childEvents[index][1].type === childEvents[index - 1][1].type &&\n childEvents[index][1].start.line !== childEvents[index][1].end.line\n ) {\n start = index + 1\n breaks.push(start)\n // Help GC.\n current._tokenizer = undefined\n current.previous = undefined\n current = current.next\n }\n }\n\n // Help GC.\n tokenizer.events = []\n\n // If there’s one more token (which is the cases for lines that end in an\n // EOF), that’s perfect: the last point we found starts it.\n // If there isn’t then make sure any remaining content is added to it.\n if (current) {\n // Help GC.\n current._tokenizer = undefined\n current.previous = undefined\n } else {\n breaks.pop()\n }\n\n // Now splice the events from the subtokenizer into the current events,\n // moving back to front so that splice indices aren’t affected.\n index = breaks.length\n while (index--) {\n const slice = childEvents.slice(breaks[index], breaks[index + 1])\n const start = startPositions.pop()\n jumps.unshift([start, start + slice.length - 1])\n splice(events, start, 2, slice)\n }\n index = -1\n while (++index < jumps.length) {\n gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]\n adjust += jumps[index][1] - jumps[index][0] - 1\n }\n return gaps\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {subtokenize} from 'micromark-util-subtokenize'\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nexport const content = {\n tokenize: tokenizeContent,\n resolve: resolveContent\n}\n\n/** @type {Construct} */\nconst continuationConstruct = {\n tokenize: tokenizeContinuation,\n partial: true\n}\n\n/**\n * Content is transparent: it’s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\nfunction resolveContent(events) {\n subtokenize(events)\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContent(effects, ok) {\n /** @type {Token | undefined} */\n let previous\n return chunkStart\n\n /**\n * Before a content chunk.\n *\n * ```markdown\n * > | abc\n * ^\n * ```\n *\n * @type {State}\n */\n function chunkStart(code) {\n effects.enter('content')\n previous = effects.enter('chunkContent', {\n contentType: 'content'\n })\n return chunkInside(code)\n }\n\n /**\n * In a content chunk.\n *\n * ```markdown\n * > | abc\n * ^^^\n * ```\n *\n * @type {State}\n */\n function chunkInside(code) {\n if (code === null) {\n return contentEnd(code)\n }\n\n // To do: in `markdown-rs`, each line is parsed on its own, and everything\n // is stitched together resolving.\n if (markdownLineEnding(code)) {\n return effects.check(\n continuationConstruct,\n contentContinue,\n contentEnd\n )(code)\n }\n\n // Data.\n effects.consume(code)\n return chunkInside\n }\n\n /**\n *\n *\n * @type {State}\n */\n function contentEnd(code) {\n effects.exit('chunkContent')\n effects.exit('content')\n return ok(code)\n }\n\n /**\n *\n *\n * @type {State}\n */\n function contentContinue(code) {\n effects.consume(code)\n effects.exit('chunkContent')\n previous.next = effects.enter('chunkContent', {\n contentType: 'content',\n previous\n })\n previous = previous.next\n return chunkInside\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContinuation(effects, ok, nok) {\n const self = this\n return startLookahead\n\n /**\n *\n *\n * @type {State}\n */\n function startLookahead(code) {\n effects.exit('chunkContent')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, prefixed, 'linePrefix')\n }\n\n /**\n *\n *\n * @type {State}\n */\n function prefixed(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n // Always populated by defaults.\n\n const tail = self.events[self.events.length - 1]\n if (\n !self.parser.constructs.disable.null.includes('codeIndented') &&\n tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ) {\n return ok(code)\n }\n return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\nimport {blankLine, content} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {InitialConstruct} */\nexport const flow = {\n tokenize: initializeFlow\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeFlow(effects) {\n const self = this\n const initial = effects.attempt(\n // Try to parse a blank line.\n blankLine,\n atBlankEnding,\n // Try to parse initial flow (essentially, only code).\n effects.attempt(\n this.parser.constructs.flowInitial,\n afterConstruct,\n factorySpace(\n effects,\n effects.attempt(\n this.parser.constructs.flow,\n afterConstruct,\n effects.attempt(content, afterConstruct)\n ),\n 'linePrefix'\n )\n )\n )\n return initial\n\n /** @type {State} */\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n self.currentConstruct = undefined\n return initial\n }\n\n /** @type {State} */\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n self.currentConstruct = undefined\n return initial\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\nexport const resolver = {\n resolveAll: createResolver()\n}\nexport const string = initializeFactory('string')\nexport const text = initializeFactory('text')\n\n/**\n * @param {'string' | 'text'} field\n * @returns {InitialConstruct}\n */\nfunction initializeFactory(field) {\n return {\n tokenize: initializeText,\n resolveAll: createResolver(\n field === 'text' ? resolveAllLineSuffixes : undefined\n )\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\n function initializeText(effects) {\n const self = this\n const constructs = this.parser.constructs[field]\n const text = effects.attempt(constructs, start, notText)\n return start\n\n /** @type {State} */\n function start(code) {\n return atBreak(code) ? text(code) : notText(code)\n }\n\n /** @type {State} */\n function notText(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n effects.enter('data')\n effects.consume(code)\n return data\n }\n\n /** @type {State} */\n function data(code) {\n if (atBreak(code)) {\n effects.exit('data')\n return text(code)\n }\n\n // Data.\n effects.consume(code)\n return data\n }\n\n /**\n * @param {Code} code\n * @returns {boolean}\n */\n function atBreak(code) {\n if (code === null) {\n return true\n }\n const list = constructs[code]\n let index = -1\n if (list) {\n // Always populated by defaults.\n\n while (++index < list.length) {\n const item = list[index]\n if (!item.previous || item.previous.call(self, self.previous)) {\n return true\n }\n }\n }\n return false\n }\n }\n}\n\n/**\n * @param {Resolver | undefined} [extraResolver]\n * @returns {Resolver}\n */\nfunction createResolver(extraResolver) {\n return resolveAllText\n\n /** @type {Resolver} */\n function resolveAllText(events, context) {\n let index = -1\n /** @type {number | undefined} */\n let enter\n\n // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === 'data') {\n enter = index\n index++\n }\n } else if (!events[index] || events[index][1].type !== 'data') {\n // Don’t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n index = enter + 2\n }\n enter = undefined\n }\n }\n return extraResolver ? extraResolver(events, context) : events\n }\n}\n\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\nfunction resolveAllLineSuffixes(events, context) {\n let eventIndex = 0 // Skip first.\n\n while (++eventIndex <= events.length) {\n if (\n (eventIndex === events.length ||\n events[eventIndex][1].type === 'lineEnding') &&\n events[eventIndex - 1][1].type === 'data'\n ) {\n const data = events[eventIndex - 1][1]\n const chunks = context.sliceStream(data)\n let index = chunks.length\n let bufferIndex = -1\n let size = 0\n /** @type {boolean | undefined} */\n let tabs\n while (index--) {\n const chunk = chunks[index]\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++\n bufferIndex--\n }\n if (bufferIndex) break\n bufferIndex = -1\n }\n // Number\n else if (chunk === -2) {\n tabs = true\n size++\n } else if (chunk === -1) {\n // Empty\n } else {\n // Replacement character, exit.\n index++\n break\n }\n }\n if (size) {\n const token = {\n type:\n eventIndex === events.length || tabs || size < 2\n ? 'lineSuffix'\n : 'hardBreakTrailing',\n start: {\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size,\n _index: data.start._index + index,\n _bufferIndex: index\n ? bufferIndex\n : data.start._bufferIndex + bufferIndex\n },\n end: Object.assign({}, data.end)\n }\n data.end = Object.assign({}, token.start)\n if (data.start.offset === data.end.offset) {\n Object.assign(data, token)\n } else {\n events.splice(\n eventIndex,\n 0,\n ['enter', token, context],\n ['exit', token, context]\n )\n eventIndex += 2\n }\n }\n eventIndex++\n }\n }\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {Array<{resolveAll?: Resolver | undefined}>} constructs\n * List of constructs, optionally with `resolveAll`s.\n * @param {Array} events\n * List of events.\n * @param {TokenizeContext} context\n * Context used by `tokenize`.\n * @returns {Array}\n * Changed events.\n */\nexport function resolveAll(constructs, events, context) {\n /** @type {Array} */\n const called = []\n let index = -1\n\n while (++index < constructs.length) {\n const resolve = constructs[index].resolveAll\n\n if (resolve && !called.includes(resolve)) {\n events = resolve(events, context)\n called.push(resolve)\n }\n }\n\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenType} TokenType\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n/**\n * @callback Restore\n * @returns {void}\n *\n * @typedef Info\n * @property {Restore} restore\n * @property {number} from\n *\n * @callback ReturnHandle\n * Handle a successful run.\n * @param {Construct} construct\n * @param {Info} info\n * @returns {void}\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * @param {InitialConstruct} initialize\n * @param {Omit | undefined} [from]\n * @returns {TokenizeContext}\n */\nexport function createTokenizer(parser, initialize, from) {\n /** @type {Point} */\n let point = Object.assign(\n from\n ? Object.assign({}, from)\n : {\n line: 1,\n column: 1,\n offset: 0\n },\n {\n _index: 0,\n _bufferIndex: -1\n }\n )\n /** @type {Record} */\n const columnStart = {}\n /** @type {Array} */\n const resolveAllConstructs = []\n /** @type {Array} */\n let chunks = []\n /** @type {Array} */\n let stack = []\n /** @type {boolean | undefined} */\n let consumed = true\n\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\n */\n const effects = {\n consume,\n enter,\n exit,\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n })\n }\n\n /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\n */\n const context = {\n previous: null,\n code: null,\n containerState: {},\n events: [],\n parser,\n sliceStream,\n sliceSerialize,\n now,\n defineSkip,\n write\n }\n\n /**\n * The state function.\n *\n * @type {State | void}\n */\n let state = initialize.tokenize.call(context, effects)\n\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n let expectedCode\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize)\n }\n return context\n\n /** @type {TokenizeContext['write']} */\n function write(slice) {\n chunks = push(chunks, slice)\n main()\n\n // Exit if we’re not done, resolve might change stuff.\n if (chunks[chunks.length - 1] !== null) {\n return []\n }\n addResult(initialize, 0)\n\n // Otherwise, resolve, and exit.\n context.events = resolveAll(resolveAllConstructs, context.events, context)\n return context.events\n }\n\n //\n // Tools.\n //\n\n /** @type {TokenizeContext['sliceSerialize']} */\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs)\n }\n\n /** @type {TokenizeContext['sliceStream']} */\n function sliceStream(token) {\n return sliceChunks(chunks, token)\n }\n\n /** @type {TokenizeContext['now']} */\n function now() {\n // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n const {line, column, offset, _index, _bufferIndex} = point\n return {\n line,\n column,\n offset,\n _index,\n _bufferIndex\n }\n }\n\n /** @type {TokenizeContext['defineSkip']} */\n function defineSkip(value) {\n columnStart[value.line] = value.column\n accountForPotentialSkip()\n }\n\n //\n // State management.\n //\n\n /**\n * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n * `consume`).\n * Here is where we walk through the chunks, which either include strings of\n * several characters, or numerical character codes.\n * The reason to do this in a loop instead of a call is so the stack can\n * drain.\n *\n * @returns {void}\n */\n function main() {\n /** @type {number} */\n let chunkIndex\n while (point._index < chunks.length) {\n const chunk = chunks[point._index]\n\n // If we’re in a buffer chunk, loop through it.\n if (typeof chunk === 'string') {\n chunkIndex = point._index\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0\n }\n while (\n point._index === chunkIndex &&\n point._bufferIndex < chunk.length\n ) {\n go(chunk.charCodeAt(point._bufferIndex))\n }\n } else {\n go(chunk)\n }\n }\n }\n\n /**\n * Deal with one code.\n *\n * @param {Code} code\n * @returns {void}\n */\n function go(code) {\n consumed = undefined\n expectedCode = code\n state = state(code)\n }\n\n /** @type {Effects['consume']} */\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++\n point.column = 1\n point.offset += code === -3 ? 2 : 1\n accountForPotentialSkip()\n } else if (code !== -1) {\n point.column++\n point.offset++\n }\n\n // Not in a string chunk.\n if (point._bufferIndex < 0) {\n point._index++\n } else {\n point._bufferIndex++\n\n // At end of string chunk.\n // @ts-expect-error Points w/ non-negative `_bufferIndex` reference\n // strings.\n if (point._bufferIndex === chunks[point._index].length) {\n point._bufferIndex = -1\n point._index++\n }\n }\n\n // Expose the previous character.\n context.previous = code\n\n // Mark as consumed.\n consumed = true\n }\n\n /** @type {Effects['enter']} */\n function enter(type, fields) {\n /** @type {Token} */\n // @ts-expect-error Patch instead of assign required fields to help GC.\n const token = fields || {}\n token.type = type\n token.start = now()\n context.events.push(['enter', token, context])\n stack.push(token)\n return token\n }\n\n /** @type {Effects['exit']} */\n function exit(type) {\n const token = stack.pop()\n token.end = now()\n context.events.push(['exit', token, context])\n return token\n }\n\n /**\n * Use results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from)\n }\n\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulcheck(_, info) {\n info.restore()\n }\n\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n */\n function constructFactory(onreturn, fields) {\n return hook\n\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Array | Construct | ConstructRecord} constructs\n * @param {State} returnState\n * @param {State | undefined} [bogusState]\n * @returns {State}\n */\n function hook(constructs, returnState, bogusState) {\n /** @type {Array} */\n let listOfConstructs\n /** @type {number} */\n let constructIndex\n /** @type {Construct} */\n let currentConstruct\n /** @type {Info} */\n let info\n return Array.isArray(constructs) /* c8 ignore next 1 */\n ? handleListOfConstructs(constructs)\n : 'tokenize' in constructs\n ? // @ts-expect-error Looks like a construct.\n handleListOfConstructs([constructs])\n : handleMapOfConstructs(constructs)\n\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * @returns {State}\n */\n function handleMapOfConstructs(map) {\n return start\n\n /** @type {State} */\n function start(code) {\n const def = code !== null && map[code]\n const all = code !== null && map.null\n const list = [\n // To do: add more extension tests.\n /* c8 ignore next 2 */\n ...(Array.isArray(def) ? def : def ? [def] : []),\n ...(Array.isArray(all) ? all : all ? [all] : [])\n ]\n return handleListOfConstructs(list)(code)\n }\n }\n\n /**\n * Handle a list of construct.\n *\n * @param {Array} list\n * @returns {State}\n */\n function handleListOfConstructs(list) {\n listOfConstructs = list\n constructIndex = 0\n if (list.length === 0) {\n return bogusState\n }\n return handleConstruct(list[constructIndex])\n }\n\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * @returns {State}\n */\n function handleConstruct(construct) {\n return start\n\n /** @type {State} */\n function start(code) {\n // To do: not needed to store if there is no bogus state, probably?\n // Currently doesn’t work because `inspect` in document does a check\n // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n // by not storing.\n info = store()\n currentConstruct = construct\n if (!construct.partial) {\n context.currentConstruct = construct\n }\n\n // Always populated by defaults.\n\n if (\n construct.name &&\n context.parser.constructs.disable.null.includes(construct.name)\n ) {\n return nok(code)\n }\n return construct.tokenize.call(\n // If we do have fields, create an object w/ `context` as its\n // prototype.\n // This allows a “live binding”, which is needed for `interrupt`.\n fields ? Object.assign(Object.create(context), fields) : context,\n effects,\n ok,\n nok\n )(code)\n }\n }\n\n /** @type {State} */\n function ok(code) {\n consumed = true\n onreturn(currentConstruct, info)\n return returnState\n }\n\n /** @type {State} */\n function nok(code) {\n consumed = true\n info.restore()\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex])\n }\n return bogusState\n }\n }\n }\n\n /**\n * @param {Construct} construct\n * @param {number} from\n * @returns {void}\n */\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct)\n }\n if (construct.resolve) {\n splice(\n context.events,\n from,\n context.events.length - from,\n construct.resolve(context.events.slice(from), context)\n )\n }\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context)\n }\n }\n\n /**\n * Store state.\n *\n * @returns {Info}\n */\n function store() {\n const startPoint = now()\n const startPrevious = context.previous\n const startCurrentConstruct = context.currentConstruct\n const startEventsIndex = context.events.length\n const startStack = Array.from(stack)\n return {\n restore,\n from: startEventsIndex\n }\n\n /**\n * Restore state.\n *\n * @returns {void}\n */\n function restore() {\n point = startPoint\n context.previous = startPrevious\n context.currentConstruct = startCurrentConstruct\n context.events.length = startEventsIndex\n stack = startStack\n accountForPotentialSkip()\n }\n }\n\n /**\n * Move the current point a bit forward in the line when it’s on a column\n * skip.\n *\n * @returns {void}\n */\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line]\n point.offset += columnStart[point.line] - 1\n }\n }\n}\n\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {Array} chunks\n * @param {Pick} token\n * @returns {Array}\n */\nfunction sliceChunks(chunks, token) {\n const startIndex = token.start._index\n const startBufferIndex = token.start._bufferIndex\n const endIndex = token.end._index\n const endBufferIndex = token.end._bufferIndex\n /** @type {Array} */\n let view\n if (startIndex === endIndex) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]\n } else {\n view = chunks.slice(startIndex, endIndex)\n if (startBufferIndex > -1) {\n const head = view[0]\n if (typeof head === 'string') {\n view[0] = head.slice(startBufferIndex)\n } else {\n view.shift()\n }\n }\n if (endBufferIndex > 0) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view.push(chunks[endIndex].slice(0, endBufferIndex))\n }\n }\n return view\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {Array} chunks\n * @param {boolean | undefined} [expandTabs=false]\n * @returns {string}\n */\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1\n /** @type {Array} */\n const result = []\n /** @type {boolean | undefined} */\n let atTab\n while (++index < chunks.length) {\n const chunk = chunks[index]\n /** @type {string} */\n let value\n if (typeof chunk === 'string') {\n value = chunk\n } else\n switch (chunk) {\n case -5: {\n value = '\\r'\n break\n }\n case -4: {\n value = '\\n'\n break\n }\n case -3: {\n value = '\\r' + '\\n'\n break\n }\n case -2: {\n value = expandTabs ? ' ' : '\\t'\n break\n }\n case -1: {\n if (!expandTabs && atTab) continue\n value = ' '\n break\n }\n default: {\n // Currently only replacement character.\n value = String.fromCharCode(chunk)\n }\n }\n atTab = chunk === -2\n result.push(value)\n }\n return result.join('')\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeThematicBreak(effects, ok, nok) {\n let size = 0\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Start of thematic break.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('thematicBreak')\n // To do: parse indent like `markdown-rs`.\n return before(code)\n }\n\n /**\n * After optional whitespace, at marker.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n marker = code\n return atBreak(code)\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.enter('thematicBreakSequence')\n return sequence(code)\n }\n if (size >= 3 && (code === null || markdownLineEnding(code))) {\n effects.exit('thematicBreak')\n return ok(code)\n }\n return nok(code)\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return sequence\n }\n effects.exit('thematicBreakSequence')\n return markdownSpace(code)\n ? factorySpace(effects, atBreak, 'whitespace')(code)\n : atBreak(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ContainerState} ContainerState\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {asciiDigit, markdownSpace} from 'micromark-util-character'\nimport {blankLine} from './blank-line.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/** @type {Construct} */\nexport const list = {\n name: 'list',\n tokenize: tokenizeListStart,\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd\n}\n\n/** @type {Construct} */\nconst listItemPrefixWhitespaceConstruct = {\n tokenize: tokenizeListItemPrefixWhitespace,\n partial: true\n}\n\n/** @type {Construct} */\nconst indentConstruct = {\n tokenize: tokenizeIndent,\n partial: true\n}\n\n// To do: `markdown-rs` parses list items on their own and later stitches them\n// together.\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListStart(effects, ok, nok) {\n const self = this\n const tail = self.events[self.events.length - 1]\n let initialSize =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n let size = 0\n return start\n\n /** @type {State} */\n function start(code) {\n const kind =\n self.containerState.type ||\n (code === 42 || code === 43 || code === 45\n ? 'listUnordered'\n : 'listOrdered')\n if (\n kind === 'listUnordered'\n ? !self.containerState.marker || code === self.containerState.marker\n : asciiDigit(code)\n ) {\n if (!self.containerState.type) {\n self.containerState.type = kind\n effects.enter(kind, {\n _container: true\n })\n }\n if (kind === 'listUnordered') {\n effects.enter('listItemPrefix')\n return code === 42 || code === 45\n ? effects.check(thematicBreak, nok, atMarker)(code)\n : atMarker(code)\n }\n if (!self.interrupt || code === 49) {\n effects.enter('listItemPrefix')\n effects.enter('listItemValue')\n return inside(code)\n }\n }\n return nok(code)\n }\n\n /** @type {State} */\n function inside(code) {\n if (asciiDigit(code) && ++size < 10) {\n effects.consume(code)\n return inside\n }\n if (\n (!self.interrupt || size < 2) &&\n (self.containerState.marker\n ? code === self.containerState.marker\n : code === 41 || code === 46)\n ) {\n effects.exit('listItemValue')\n return atMarker(code)\n }\n return nok(code)\n }\n\n /**\n * @type {State}\n **/\n function atMarker(code) {\n effects.enter('listItemMarker')\n effects.consume(code)\n effects.exit('listItemMarker')\n self.containerState.marker = self.containerState.marker || code\n return effects.check(\n blankLine,\n // Can’t be empty when interrupting.\n self.interrupt ? nok : onBlank,\n effects.attempt(\n listItemPrefixWhitespaceConstruct,\n endOfPrefix,\n otherPrefix\n )\n )\n }\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.initialBlankLine = true\n initialSize++\n return endOfPrefix(code)\n }\n\n /** @type {State} */\n function otherPrefix(code) {\n if (markdownSpace(code)) {\n effects.enter('listItemPrefixWhitespace')\n effects.consume(code)\n effects.exit('listItemPrefixWhitespace')\n return endOfPrefix\n }\n return nok(code)\n }\n\n /** @type {State} */\n function endOfPrefix(code) {\n self.containerState.size =\n initialSize +\n self.sliceSerialize(effects.exit('listItemPrefix'), true).length\n return ok(code)\n }\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListContinuation(effects, ok, nok) {\n const self = this\n self.containerState._closeFlow = undefined\n return effects.check(blankLine, onBlank, notBlank)\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.furtherBlankLines =\n self.containerState.furtherBlankLines ||\n self.containerState.initialBlankLine\n\n // We have a blank line.\n // Still, try to consume at most the items size.\n return factorySpace(\n effects,\n ok,\n 'listItemIndent',\n self.containerState.size + 1\n )(code)\n }\n\n /** @type {State} */\n function notBlank(code) {\n if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n self.containerState.furtherBlankLines = undefined\n self.containerState.initialBlankLine = undefined\n return notInCurrentItem(code)\n }\n self.containerState.furtherBlankLines = undefined\n self.containerState.initialBlankLine = undefined\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n }\n\n /** @type {State} */\n function notInCurrentItem(code) {\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true\n // As we’re closing flow, we’re no longer interrupting.\n self.interrupt = undefined\n // Always populated by defaults.\n\n return factorySpace(\n effects,\n effects.attempt(list, ok, nok),\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n }\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemIndent',\n self.containerState.size + 1\n )\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'listItemIndent' &&\n tail[2].sliceSerialize(tail[1], true).length === self.containerState.size\n ? ok(code)\n : nok(code)\n }\n}\n\n/**\n * @type {Exiter}\n * @this {TokenizeContext}\n */\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type)\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n const self = this\n\n // Always populated by defaults.\n\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemPrefixWhitespace',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4 + 1\n )\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return !markdownSpace(code) &&\n tail &&\n tail[1].type === 'listItemPrefixWhitespace'\n ? ok(code)\n : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const blockQuote = {\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart,\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of block quote.\n *\n * ```markdown\n * > | > a\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 62) {\n const state = self.containerState\n if (!state.open) {\n effects.enter('blockQuote', {\n _container: true\n })\n state.open = true\n }\n effects.enter('blockQuotePrefix')\n effects.enter('blockQuoteMarker')\n effects.consume(code)\n effects.exit('blockQuoteMarker')\n return after\n }\n return nok(code)\n }\n\n /**\n * After `>`, before optional whitespace.\n *\n * ```markdown\n * > | > a\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownSpace(code)) {\n effects.enter('blockQuotePrefixWhitespace')\n effects.consume(code)\n effects.exit('blockQuotePrefixWhitespace')\n effects.exit('blockQuotePrefix')\n return ok\n }\n effects.exit('blockQuotePrefix')\n return ok(code)\n }\n}\n\n/**\n * Start of block quote continuation.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n const self = this\n return contStart\n\n /**\n * Start of block quote continuation.\n *\n * Also used to parse the first block quote opening.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @type {State}\n */\n function contStart(code) {\n if (markdownSpace(code)) {\n // Always populated by defaults.\n\n return factorySpace(\n effects,\n contBefore,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n }\n return contBefore(code)\n }\n\n /**\n * At `>`, after optional whitespace.\n *\n * Also used to parse the first block quote opening.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @type {State}\n */\n function contBefore(code) {\n return effects.attempt(blockQuote, ok, nok)(code)\n }\n}\n\n/** @type {Exiter} */\nfunction exit(effects) {\n effects.exit('blockQuote')\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {\n asciiControl,\n markdownLineEndingOrSpace,\n markdownLineEnding\n} from 'micromark-util-character'\n/**\n * Parse destinations.\n *\n * ###### Examples\n *\n * ```markdown\n * \n * b>\n * \n * \n * a\n * a\\)b\n * a(b)c\n * a(b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type for whole (`` or `b`).\n * @param {TokenType} literalType\n * Type when enclosed (``).\n * @param {TokenType} literalMarkerType\n * Type for enclosing (`<` and `>`).\n * @param {TokenType} rawType\n * Type when not enclosed (`b`).\n * @param {TokenType} stringType\n * Type for the value (`a` or `b`).\n * @param {number | undefined} [max=Infinity]\n * Depth of nested parens (inclusive).\n * @returns {State}\n * Start state.\n */ // eslint-disable-next-line max-params\nexport function factoryDestination(\n effects,\n ok,\n nok,\n type,\n literalType,\n literalMarkerType,\n rawType,\n stringType,\n max\n) {\n const limit = max || Number.POSITIVE_INFINITY\n let balance = 0\n return start\n\n /**\n * Start of destination.\n *\n * ```markdown\n * > | \n * ^\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 60) {\n effects.enter(type)\n effects.enter(literalType)\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n return enclosedBefore\n }\n\n // ASCII control, space, closing paren.\n if (code === null || code === 32 || code === 41 || asciiControl(code)) {\n return nok(code)\n }\n effects.enter(type)\n effects.enter(rawType)\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return raw(code)\n }\n\n /**\n * After `<`, at an enclosed destination.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedBefore(code) {\n if (code === 62) {\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n effects.exit(literalType)\n effects.exit(type)\n return ok\n }\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return enclosed(code)\n }\n\n /**\n * In enclosed destination.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function enclosed(code) {\n if (code === 62) {\n effects.exit('chunkString')\n effects.exit(stringType)\n return enclosedBefore(code)\n }\n if (code === null || code === 60 || markdownLineEnding(code)) {\n return nok(code)\n }\n effects.consume(code)\n return code === 92 ? enclosedEscape : enclosed\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedEscape(code) {\n if (code === 60 || code === 62 || code === 92) {\n effects.consume(code)\n return enclosed\n }\n return enclosed(code)\n }\n\n /**\n * In raw destination.\n *\n * ```markdown\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function raw(code) {\n if (\n !balance &&\n (code === null || code === 41 || markdownLineEndingOrSpace(code))\n ) {\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n if (balance < limit && code === 40) {\n effects.consume(code)\n balance++\n return raw\n }\n if (code === 41) {\n effects.consume(code)\n balance--\n return raw\n }\n\n // ASCII control (but *not* `\\0`) and space and `(`.\n // Note: in `markdown-rs`, `\\0` exists in codes, in `micromark-js` it\n // doesn’t.\n if (code === null || code === 32 || code === 40 || asciiControl(code)) {\n return nok(code)\n }\n effects.consume(code)\n return code === 92 ? rawEscape : raw\n }\n\n /**\n * After `\\`, at special character.\n *\n * ```markdown\n * > | a\\*a\n * ^\n * ```\n *\n * @type {State}\n */\n function rawEscape(code) {\n if (code === 40 || code === 41 || code === 92) {\n effects.consume(code)\n return raw\n }\n return raw(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/**\n * Parse labels.\n *\n * > 👉 **Note**: labels in markdown are capped at 999 characters in the string.\n *\n * ###### Examples\n *\n * ```markdown\n * [a]\n * [a\n * b]\n * [a\\]b]\n * ```\n *\n * @this {TokenizeContext}\n * Tokenize context.\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole label (`[a]`).\n * @param {TokenType} markerType\n * Type for the markers (`[` and `]`).\n * @param {TokenType} stringType\n * Type for the identifier (`a`).\n * @returns {State}\n * Start state.\n */ // eslint-disable-next-line max-params\nexport function factoryLabel(effects, ok, nok, type, markerType, stringType) {\n const self = this\n let size = 0\n /** @type {boolean} */\n let seen\n return start\n\n /**\n * Start of label.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.enter(stringType)\n return atBreak\n }\n\n /**\n * In label, at something, before something else.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (\n size > 999 ||\n code === null ||\n code === 91 ||\n (code === 93 && !seen) ||\n // To do: remove in the future once we’ve switched from\n // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n // which doesn’t need this.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n (code === 94 &&\n !size &&\n '_hiddenFootnoteSupport' in self.parser.constructs)\n ) {\n return nok(code)\n }\n if (code === 93) {\n effects.exit(stringType)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n // To do: indent? Link chunks and EOLs together?\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return atBreak\n }\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return labelInside(code)\n }\n\n /**\n * In label, in text.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelInside(code) {\n if (\n code === null ||\n code === 91 ||\n code === 93 ||\n markdownLineEnding(code) ||\n size++ > 999\n ) {\n effects.exit('chunkString')\n return atBreak(code)\n }\n effects.consume(code)\n if (!seen) seen = !markdownSpace(code)\n return code === 92 ? labelEscape : labelInside\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | [a\\*a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return labelInside\n }\n return labelInside(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/**\n * Parse titles.\n *\n * ###### Examples\n *\n * ```markdown\n * \"a\"\n * 'b'\n * (c)\n * \"a\n * b\"\n * 'a\n * b'\n * (a\\)b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole title (`\"a\"`, `'b'`, `(c)`).\n * @param {TokenType} markerType\n * Type for the markers (`\"`, `'`, `(`, and `)`).\n * @param {TokenType} stringType\n * Type for the value (`a`).\n * @returns {State}\n * Start state.\n */ // eslint-disable-next-line max-params\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Start of title.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 34 || code === 39 || code === 40) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n marker = code === 40 ? 41 : code\n return begin\n }\n return nok(code)\n }\n\n /**\n * After opening marker.\n *\n * This is also used at the closing marker.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function begin(code) {\n if (code === marker) {\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n effects.enter(stringType)\n return atBreak(code)\n }\n\n /**\n * At something, before something else.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.exit(stringType)\n return begin(marker)\n }\n if (code === null) {\n return nok(code)\n }\n\n // Note: blank lines can’t exist in content.\n if (markdownLineEnding(code)) {\n // To do: use `space_or_tab_eol_with_options`, connect.\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, atBreak, 'linePrefix')\n }\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return inside(code)\n }\n\n /**\n *\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker || code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n return atBreak(code)\n }\n effects.consume(code)\n return code === 92 ? escape : inside\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | \"a\\*b\"\n * ^\n * ```\n *\n * @type {State}\n */\n function escape(code) {\n if (code === marker || code === 92) {\n effects.consume(code)\n return inside\n }\n return inside(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * line endings or spaces in markdown are often optional, in which case this\n * factory can be used and `ok` will be switched to whether spaces were found\n * or not\n * * one line ending or space can be detected with\n * `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace`\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @returns\n * Start state.\n */\nexport function factoryWhitespace(effects, ok) {\n /** @type {boolean} */\n let seen\n return start\n\n /** @type {State} */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n seen = true\n return start\n }\n if (markdownSpace(code)) {\n return factorySpace(\n effects,\n start,\n seen ? 'linePrefix' : 'lineSuffix'\n )(code)\n }\n return ok(code)\n }\n}\n","/**\n * Normalize an identifier (as found in references, definitions).\n *\n * Collapses markdown whitespace, trim, and then lower- and uppercase.\n *\n * Some characters are considered “uppercase”, such as U+03F4 (`ϴ`), but if their\n * lowercase counterpart (U+03B8 (`θ`)) is uppercased will result in a different\n * uppercase character (U+0398 (`Θ`)).\n * So, to get a canonical form, we perform both lower- and uppercase.\n *\n * Using uppercase last makes sure keys will never interact with default\n * prototypal values (such as `constructor`): nothing in the prototype of\n * `Object` is uppercase.\n *\n * @param {string} value\n * Identifier to normalize.\n * @returns {string}\n * Normalized identifier.\n */\nexport function normalizeIdentifier(value) {\n return (\n value\n // Collapse markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, ' ')\n // Trim.\n .replace(/^ | $/g, '')\n // Some characters are considered “uppercase”, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no method is uppercase.\n .toLowerCase()\n .toUpperCase()\n )\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factorySpace} from 'micromark-factory-space'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\n/** @type {Construct} */\nexport const definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n}\n\n/** @type {Construct} */\nconst titleBefore = {\n tokenize: tokenizeTitleBefore,\n partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinition(effects, ok, nok) {\n const self = this\n /** @type {string} */\n let identifier\n return start\n\n /**\n * At start of a definition.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Do not interrupt paragraphs (but do follow definitions).\n // To do: do `interrupt` the way `markdown-rs` does.\n // To do: parse whitespace the way `markdown-rs` does.\n effects.enter('definition')\n return before(code)\n }\n\n /**\n * After optional whitespace, at `[`.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n // To do: parse whitespace the way `markdown-rs` does.\n\n return factoryLabel.call(\n self,\n effects,\n labelAfter,\n // Note: we don’t need to reset the way `markdown-rs` does.\n nok,\n 'definitionLabel',\n 'definitionLabelMarker',\n 'definitionLabelString'\n )(code)\n }\n\n /**\n * After label.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAfter(code) {\n identifier = normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n if (code === 58) {\n effects.enter('definitionMarker')\n effects.consume(code)\n effects.exit('definitionMarker')\n return markerAfter\n }\n return nok(code)\n }\n\n /**\n * After marker.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function markerAfter(code) {\n // Note: whitespace is optional.\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, destinationBefore)(code)\n : destinationBefore(code)\n }\n\n /**\n * Before destination.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function destinationBefore(code) {\n return factoryDestination(\n effects,\n destinationAfter,\n // Note: we don’t need to reset the way `markdown-rs` does.\n nok,\n 'definitionDestination',\n 'definitionDestinationLiteral',\n 'definitionDestinationLiteralMarker',\n 'definitionDestinationRaw',\n 'definitionDestinationString'\n )(code)\n }\n\n /**\n * After destination.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function destinationAfter(code) {\n return effects.attempt(titleBefore, after, after)(code)\n }\n\n /**\n * After definition.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return markdownSpace(code)\n ? factorySpace(effects, afterWhitespace, 'whitespace')(code)\n : afterWhitespace(code)\n }\n\n /**\n * After definition, after optional whitespace.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function afterWhitespace(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('definition')\n\n // Note: we don’t care about uniqueness.\n // It’s likely that that doesn’t happen very frequently.\n // It is more likely that it wastes precious time.\n self.parser.defined.push(identifier)\n\n // To do: `markdown-rs` interrupt.\n // // You’d be interrupting.\n // tokenizer.interrupt = true\n return ok(code)\n }\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTitleBefore(effects, ok, nok) {\n return titleBefore\n\n /**\n * After destination, at whitespace.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleBefore(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, beforeMarker)(code)\n : nok(code)\n }\n\n /**\n * At title.\n *\n * ```markdown\n * | [a]: b\n * > | \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeMarker(code) {\n return factoryTitle(\n effects,\n titleAfter,\n nok,\n 'definitionTitle',\n 'definitionTitleMarker',\n 'definitionTitleString'\n )(code)\n }\n\n /**\n * After title.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleAfter(code) {\n return markdownSpace(code)\n ? factorySpace(effects, titleAfterOptionalWhitespace, 'whitespace')(code)\n : titleAfterOptionalWhitespace(code)\n }\n\n /**\n * After title, after optional whitespace.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleAfterOptionalWhitespace(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented\n}\n\n/** @type {Construct} */\nconst furtherStart = {\n tokenize: tokenizeFurtherStart,\n partial: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeIndented(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of code (indented).\n *\n * > **Parsing note**: it is not needed to check if this first line is a\n * > filled line (that it has a non-whitespace character), because blank lines\n * > are parsed already, so we never run into that.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: manually check if interrupting like `markdown-rs`.\n\n effects.enter('codeIndented')\n // To do: use an improved `space_or_tab` function like `markdown-rs`,\n // so that we can drop the next state.\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)(code)\n }\n\n /**\n * At start, after 1 or 4 spaces.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ? atBreak(code)\n : nok(code)\n }\n\n /**\n * At a break.\n *\n * ```markdown\n * > | aaa\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === null) {\n return after(code)\n }\n if (markdownLineEnding(code)) {\n return effects.attempt(furtherStart, atBreak, after)(code)\n }\n effects.enter('codeFlowValue')\n return inside(code)\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * > | aaa\n * ^^^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return atBreak(code)\n }\n effects.consume(code)\n return inside\n }\n\n /** @type {State} */\n function after(code) {\n effects.exit('codeIndented')\n // To do: allow interrupting like `markdown-rs`.\n // Feel free to interrupt.\n // tokenizer.interrupt = false\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeFurtherStart(effects, ok, nok) {\n const self = this\n return furtherStart\n\n /**\n * At eol, trying to parse another indent.\n *\n * ```markdown\n * > | aaa\n * ^\n * | bbb\n * ```\n *\n * @type {State}\n */\n function furtherStart(code) {\n // To do: improve `lazy` / `pierce` handling.\n // If this is a lazy line, it can’t be code.\n if (self.parser.lazy[self.now().line]) {\n return nok(code)\n }\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return furtherStart\n }\n\n // To do: the code here in `micromark-js` is a bit different from\n // `markdown-rs` because there it can attempt spaces.\n // We can’t yet.\n //\n // To do: use an improved `space_or_tab` function like `markdown-rs`,\n // so that we can drop the next state.\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)(code)\n }\n\n /**\n * At start, after 1 or 4 spaces.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ? ok(code)\n : markdownLineEnding(code)\n ? furtherStart(code)\n : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n/** @type {Construct} */\nexport const headingAtx = {\n name: 'headingAtx',\n tokenize: tokenizeHeadingAtx,\n resolve: resolveHeadingAtx\n}\n\n/** @type {Resolver} */\nfunction resolveHeadingAtx(events, context) {\n let contentEnd = events.length - 2\n let contentStart = 3\n /** @type {Token} */\n let content\n /** @type {Token} */\n let text\n\n // Prefix whitespace, part of the opening.\n if (events[contentStart][1].type === 'whitespace') {\n contentStart += 2\n }\n\n // Suffix whitespace, part of the closing.\n if (\n contentEnd - 2 > contentStart &&\n events[contentEnd][1].type === 'whitespace'\n ) {\n contentEnd -= 2\n }\n if (\n events[contentEnd][1].type === 'atxHeadingSequence' &&\n (contentStart === contentEnd - 1 ||\n (contentEnd - 4 > contentStart &&\n events[contentEnd - 2][1].type === 'whitespace'))\n ) {\n contentEnd -= contentStart + 1 === contentEnd ? 2 : 4\n }\n if (contentEnd > contentStart) {\n content = {\n type: 'atxHeadingText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n }\n text = {\n type: 'chunkText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end,\n contentType: 'text'\n }\n splice(events, contentStart, contentEnd - contentStart + 1, [\n ['enter', content, context],\n ['enter', text, context],\n ['exit', text, context],\n ['exit', content, context]\n ])\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n let size = 0\n return start\n\n /**\n * Start of a heading (atx).\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse indent like `markdown-rs`.\n effects.enter('atxHeading')\n return before(code)\n }\n\n /**\n * After optional whitespace, at `#`.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter('atxHeadingSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 35 && size++ < 6) {\n effects.consume(code)\n return sequenceOpen\n }\n\n // Always at least one `#`.\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingSequence')\n return atBreak(code)\n }\n return nok(code)\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === 35) {\n effects.enter('atxHeadingSequence')\n return sequenceFurther(code)\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit('atxHeading')\n // To do: interrupt like `markdown-rs`.\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n return ok(code)\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, atBreak, 'whitespace')(code)\n }\n\n // To do: generate `data` tokens, add the `text` token later.\n // Needs edit map, see: `markdown.rs`.\n effects.enter('atxHeadingText')\n return data(code)\n }\n\n /**\n * In further sequence (after whitespace).\n *\n * Could be normal “visible” hashes in the heading or a final sequence.\n *\n * ```markdown\n * > | ## aa ##\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceFurther(code) {\n if (code === 35) {\n effects.consume(code)\n return sequenceFurther\n }\n effects.exit('atxHeadingSequence')\n return atBreak(code)\n }\n\n /**\n * In text.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingText')\n return atBreak(code)\n }\n effects.consume(code)\n return data\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nexport const setextUnderline = {\n name: 'setextUnderline',\n tokenize: tokenizeSetextUnderline,\n resolveTo: resolveToSetextUnderline\n}\n\n/** @type {Resolver} */\nfunction resolveToSetextUnderline(events, context) {\n // To do: resolve like `markdown-rs`.\n let index = events.length\n /** @type {number | undefined} */\n let content\n /** @type {number | undefined} */\n let text\n /** @type {number | undefined} */\n let definition\n\n // Find the opening of the content.\n // It’ll always exist: we don’t tokenize if it isn’t there.\n while (index--) {\n if (events[index][0] === 'enter') {\n if (events[index][1].type === 'content') {\n content = index\n break\n }\n if (events[index][1].type === 'paragraph') {\n text = index\n }\n }\n // Exit\n else {\n if (events[index][1].type === 'content') {\n // Remove the content end (if needed we’ll add it later)\n events.splice(index, 1)\n }\n if (!definition && events[index][1].type === 'definition') {\n definition = index\n }\n }\n }\n const heading = {\n type: 'setextHeading',\n start: Object.assign({}, events[text][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n\n // Change the paragraph to setext heading text.\n events[text][1].type = 'setextHeadingText'\n\n // If we have definitions in the content, we’ll keep on having content,\n // but we need move it.\n if (definition) {\n events.splice(text, 0, ['enter', heading, context])\n events.splice(definition + 1, 0, ['exit', events[content][1], context])\n events[content][1].end = Object.assign({}, events[definition][1].end)\n } else {\n events[content][1] = heading\n }\n\n // Add the heading exit at the end.\n events.push(['exit', heading, context])\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n const self = this\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * At start of heading (setext) underline.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n let index = self.events.length\n /** @type {boolean | undefined} */\n let paragraph\n // Find an opening.\n while (index--) {\n // Skip enter/exit of line ending, line prefix, and content.\n // We can now either have a definition or a paragraph.\n if (\n self.events[index][1].type !== 'lineEnding' &&\n self.events[index][1].type !== 'linePrefix' &&\n self.events[index][1].type !== 'content'\n ) {\n paragraph = self.events[index][1].type === 'paragraph'\n break\n }\n }\n\n // To do: handle lazy/pierce like `markdown-rs`.\n // To do: parse indent like `markdown-rs`.\n if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n effects.enter('setextHeadingLine')\n marker = code\n return before(code)\n }\n return nok(code)\n }\n\n /**\n * After optional whitespace, at `-` or `=`.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter('setextHeadingLineSequence')\n return inside(code)\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code)\n return inside\n }\n effects.exit('setextHeadingLineSequence')\n return markdownSpace(code)\n ? factorySpace(effects, after, 'lineSuffix')(code)\n : after(code)\n }\n\n /**\n * After sequence, after optional whitespace.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('setextHeadingLine')\n return ok(code)\n }\n return nok(code)\n }\n}\n","/**\n * List of lowercase HTML “block” tag names.\n *\n * The list, when parsing HTML (flow), results in more relaxed rules (condition\n * 6).\n * Because they are known blocks, the HTML-like syntax doesn’t have to be\n * strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * .\n *\n * > 👉 **Note**: `search` was added in `CommonMark@0.31`.\n */\nexport const htmlBlockNames = [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'search',\n 'section',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n\n/**\n * List of lowercase HTML “raw” tag names.\n *\n * The list, when parsing HTML (flow), results in HTML that can include lines\n * without exiting, until a closing tag also in this list is found (condition\n * 1).\n *\n * This module is copied from:\n * .\n *\n * > 👉 **Note**: `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {htmlBlockNames, htmlRawNames} from 'micromark-util-html-tag-name'\nimport {blankLine} from './blank-line.js'\n\n/** @type {Construct} */\nexport const htmlFlow = {\n name: 'htmlFlow',\n tokenize: tokenizeHtmlFlow,\n resolveTo: resolveToHtmlFlow,\n concrete: true\n}\n\n/** @type {Construct} */\nconst blankLineBefore = {\n tokenize: tokenizeBlankLineBefore,\n partial: true\n}\nconst nonLazyContinuationStart = {\n tokenize: tokenizeNonLazyContinuationStart,\n partial: true\n}\n\n/** @type {Resolver} */\nfunction resolveToHtmlFlow(events) {\n let index = events.length\n while (index--) {\n if (events[index][0] === 'enter' && events[index][1].type === 'htmlFlow') {\n break\n }\n }\n if (index > 1 && events[index - 2][1].type === 'linePrefix') {\n // Add the prefix start to the HTML token.\n events[index][1].start = events[index - 2][1].start\n // Add the prefix start to the HTML line token.\n events[index + 1][1].start = events[index - 2][1].start\n // Remove the line prefix.\n events.splice(index - 2, 2)\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n const self = this\n /** @type {number} */\n let marker\n /** @type {boolean} */\n let closingTag\n /** @type {string} */\n let buffer\n /** @type {number} */\n let index\n /** @type {Code} */\n let markerB\n return start\n\n /**\n * Start of HTML (flow).\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse indent like `markdown-rs`.\n return before(code)\n }\n\n /**\n * At `<`, after optional whitespace.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter('htmlFlow')\n effects.enter('htmlFlowData')\n effects.consume(code)\n return open\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n if (code === 47) {\n effects.consume(code)\n closingTag = true\n return tagCloseStart\n }\n if (code === 63) {\n effects.consume(code)\n marker = 3\n // To do:\n // tokenizer.concrete = true\n // To do: use `markdown-rs` style interrupt.\n // While we’re in an instruction instead of a declaration, we’re on a `?`\n // right now, so we do need to search for `>`, similar to declarations.\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer = String.fromCharCode(code)\n return tagName\n }\n return nok(code)\n }\n\n /**\n * After ` | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n marker = 2\n return commentOpenInside\n }\n if (code === 91) {\n effects.consume(code)\n marker = 5\n index = 0\n return cdataOpenInside\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n marker = 4\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuationDeclarationInside\n }\n return nok(code)\n }\n\n /**\n * After ` | \n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuationDeclarationInside\n }\n return nok(code)\n }\n\n /**\n * After ` | &<]]>\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = 'CDATA['\n if (code === value.charCodeAt(index++)) {\n effects.consume(code)\n if (index === value.length) {\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuation\n }\n return cdataOpenInside\n }\n return nok(code)\n }\n\n /**\n * After ` | \n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer = String.fromCharCode(code)\n return tagName\n }\n return nok(code)\n }\n\n /**\n * In tag name.\n *\n * ```markdown\n * > | \n * ^^\n * > | \n * ^^\n * ```\n *\n * @type {State}\n */\n function tagName(code) {\n if (\n code === null ||\n code === 47 ||\n code === 62 ||\n markdownLineEndingOrSpace(code)\n ) {\n const slash = code === 47\n const name = buffer.toLowerCase()\n if (!slash && !closingTag && htmlRawNames.includes(name)) {\n marker = 1\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok(code) : continuation(code)\n }\n if (htmlBlockNames.includes(buffer.toLowerCase())) {\n marker = 6\n if (slash) {\n effects.consume(code)\n return basicSelfClosing\n }\n\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok(code) : continuation(code)\n }\n marker = 7\n // Do not support complete HTML when interrupting.\n return self.interrupt && !self.parser.lazy[self.now().line]\n ? nok(code)\n : closingTag\n ? completeClosingTagAfter(code)\n : completeAttributeNameBefore(code)\n }\n\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n buffer += String.fromCharCode(code)\n return tagName\n }\n return nok(code)\n }\n\n /**\n * After closing slash of a basic tag name.\n *\n * ```markdown\n * > |
    \n * ^\n * ```\n *\n * @type {State}\n */\n function basicSelfClosing(code) {\n if (code === 62) {\n effects.consume(code)\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuation\n }\n return nok(code)\n }\n\n /**\n * After closing slash of a complete tag name.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeClosingTagAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeClosingTagAfter\n }\n return completeEnd(code)\n }\n\n /**\n * At an attribute name.\n *\n * At first, this state is used after a complete tag name, after whitespace,\n * where it expects optional attributes or the end of the tag.\n * It is also reused after attributes, when expecting more optional\n * attributes.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeNameBefore(code) {\n if (code === 47) {\n effects.consume(code)\n return completeEnd\n }\n\n // ASCII alphanumerical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return completeAttributeName\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameBefore\n }\n return completeEnd(code)\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeName(code) {\n // ASCII alphanumerical and `-`, `.`, `:`, and `_`.\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return completeAttributeName\n }\n return completeAttributeNameAfter(code)\n }\n\n /**\n * After attribute name, at an optional initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameAfter\n }\n return completeAttributeNameBefore(code)\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 34 || code === 39) {\n effects.consume(code)\n markerB = code\n return completeAttributeValueQuoted\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n return completeAttributeValueUnquoted(code)\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueQuoted(code) {\n if (code === markerB) {\n effects.consume(code)\n markerB = null\n return completeAttributeValueQuotedAfter\n }\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n effects.consume(code)\n return completeAttributeValueQuoted\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 47 ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96 ||\n markdownLineEndingOrSpace(code)\n ) {\n return completeAttributeNameAfter(code)\n }\n effects.consume(code)\n return completeAttributeValueUnquoted\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the\n * end of the tag.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownSpace(code)) {\n return completeAttributeNameBefore(code)\n }\n return nok(code)\n }\n\n /**\n * In certain circumstances of a complete tag where only an `>` is allowed.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeEnd(code) {\n if (code === 62) {\n effects.consume(code)\n return completeAfter\n }\n return nok(code)\n }\n\n /**\n * After `>` in a complete tag.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n // // Do not form containers.\n // tokenizer.concrete = true\n return continuation(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAfter\n }\n return nok(code)\n }\n\n /**\n * In continuation of any HTML kind.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuation(code) {\n if (code === 45 && marker === 2) {\n effects.consume(code)\n return continuationCommentInside\n }\n if (code === 60 && marker === 1) {\n effects.consume(code)\n return continuationRawTagOpen\n }\n if (code === 62 && marker === 4) {\n effects.consume(code)\n return continuationClose\n }\n if (code === 63 && marker === 3) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n if (code === 93 && marker === 5) {\n effects.consume(code)\n return continuationCdataInside\n }\n if (markdownLineEnding(code) && (marker === 6 || marker === 7)) {\n effects.exit('htmlFlowData')\n return effects.check(\n blankLineBefore,\n continuationAfter,\n continuationStart\n )(code)\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return continuationStart(code)\n }\n effects.consume(code)\n return continuation\n }\n\n /**\n * In continuation, at eol.\n *\n * ```markdown\n * > | \n * ^\n * | asd\n * ```\n *\n * @type {State}\n */\n function continuationStart(code) {\n return effects.check(\n nonLazyContinuationStart,\n continuationStartNonLazy,\n continuationAfter\n )(code)\n }\n\n /**\n * In continuation, at eol, before non-lazy content.\n *\n * ```markdown\n * > | \n * ^\n * | asd\n * ```\n *\n * @type {State}\n */\n function continuationStartNonLazy(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return continuationBefore\n }\n\n /**\n * In continuation, before non-lazy content.\n *\n * ```markdown\n * | \n * > | asd\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return continuationStart(code)\n }\n effects.enter('htmlFlowData')\n return continuation(code)\n }\n\n /**\n * In comment continuation, after one `-`, expecting another.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCommentInside(code) {\n if (code === 45) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In raw continuation, after `<`, at `/`.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In raw continuation, after ` | \n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase()\n if (htmlRawNames.includes(name)) {\n effects.consume(code)\n return continuationClose\n }\n return continuation(code)\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer += String.fromCharCode(code)\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return continuationAfter(code)\n }\n effects.consume(code)\n return continuationClose\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit('htmlFlow')\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return after\n }\n return nok(code)\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > |
    \n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return effects.attempt(blankLine, ok, nok)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nconst nonLazyContinuation = {\n tokenize: tokenizeNonLazyContinuation,\n partial: true\n}\n\n/** @type {Construct} */\nexport const codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this\n /** @type {Construct} */\n const closeStart = {\n tokenize: tokenizeCloseStart,\n partial: true\n }\n let initialPrefix = 0\n let sizeOpen = 0\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code)\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1]\n initialPrefix =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n marker = code\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++\n effects.consume(code)\n return sequenceOpen\n }\n if (sizeOpen < 3) {\n return nok(code)\n }\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, infoBefore, 'whitespace')(code)\n : infoBefore(code)\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return self.interrupt\n ? ok(code)\n : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return infoBefore(code)\n }\n if (markdownSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, metaBefore, 'whitespace')(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return info\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code)\n }\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceMeta')\n return infoBefore(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return meta\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code)\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return contentStart\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code)\n ? factorySpace(\n effects,\n beforeContentChunk,\n 'linePrefix',\n initialPrefix + 1\n )(code)\n : beforeContentChunk(code)\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFlowValue')\n return contentChunk(code)\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return beforeContentChunk(code)\n }\n effects.consume(code)\n return contentChunk\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0\n return startBefore\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return start\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter('codeFencedFence')\n return markdownSpace(code)\n ? factorySpace(\n effects,\n beforeSequenceClose,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : beforeSequenceClose(code)\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter('codeFencedFenceSequence')\n return sequenceClose(code)\n }\n return nok(code)\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++\n effects.consume(code)\n return sequenceClose\n }\n if (size >= sizeOpen) {\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, sequenceCloseAfter, 'whitespace')(code)\n : sequenceCloseAfter(code)\n }\n return nok(code)\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n return nok(code)\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this\n return start\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code)\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n","/// \n\n/* eslint-env browser */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nexport function decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const char = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `¬it;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n return char === characterReference ? false : char\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {\n asciiAlphanumeric,\n asciiDigit,\n asciiHexDigit\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this\n let size = 0\n /** @type {number} */\n let max\n /** @type {(code: Code) => boolean} */\n let test\n return start\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterReference')\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n return open\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter('characterReferenceMarkerNumeric')\n effects.consume(code)\n effects.exit('characterReferenceMarkerNumeric')\n return numeric\n }\n effects.enter('characterReferenceValue')\n max = 31\n test = asciiAlphanumeric\n return value(code)\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter('characterReferenceMarkerHexadecimal')\n effects.consume(code)\n effects.exit('characterReferenceMarkerHexadecimal')\n effects.enter('characterReferenceValue')\n max = 6\n test = asciiHexDigit\n return value\n }\n effects.enter('characterReferenceValue')\n max = 7\n test = asciiDigit\n return value(code)\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit('characterReferenceValue')\n if (\n test === asciiAlphanumeric &&\n !decodeNamedCharacterReference(self.sliceSerialize(token))\n ) {\n return nok(code)\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n effects.exit('characterReference')\n return ok\n }\n if (test(code) && size++ < max) {\n effects.consume(code)\n return value\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {asciiPunctuation} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n effects.exit('escapeMarker')\n return inside\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue')\n effects.consume(code)\n effects.exit('characterEscapeValue')\n effects.exit('characterEscape')\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start\n\n /** @type {State} */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, ok, 'linePrefix')\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n}\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n}\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n}\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1\n while (++index < events.length) {\n const token = events[index][1]\n if (\n token.type === 'labelImage' ||\n token.type === 'labelLink' ||\n token.type === 'labelEnd'\n ) {\n // Remove the marker.\n events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n token.type = 'data'\n index++\n }\n }\n return events\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length\n let offset = 0\n /** @type {Token} */\n let token\n /** @type {number | undefined} */\n let open\n /** @type {number | undefined} */\n let close\n /** @type {Array} */\n let media\n\n // Find an opening.\n while (index--) {\n token = events[index][1]\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (\n token.type === 'link' ||\n (token.type === 'labelLink' && token._inactive)\n ) {\n break\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === 'labelLink') {\n token._inactive = true\n }\n } else if (close) {\n if (\n events[index][0] === 'enter' &&\n (token.type === 'labelImage' || token.type === 'labelLink') &&\n !token._balanced\n ) {\n open = index\n if (token.type !== 'labelLink') {\n offset = 2\n break\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index\n }\n }\n const group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n const label = {\n type: 'label',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n }\n const text = {\n type: 'labelText',\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ]\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3))\n\n // Text open.\n media = push(media, [['enter', text, context]])\n\n // Always populated by defaults.\n\n // Between.\n media = push(\n media,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n )\n\n // Text close, marker close, label close.\n media = push(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ])\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1))\n\n // Media close.\n media = push(media, [['exit', group, context]])\n splice(events, open, events.length, media)\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Token} */\n let labelStart\n /** @type {boolean} */\n let defined\n\n // Find an opening.\n while (index--) {\n if (\n (self.events[index][1].type === 'labelImage' ||\n self.events[index][1].type === 'labelLink') &&\n !self.events[index][1]._balanced\n ) {\n labelStart = self.events[index][1]\n break\n }\n }\n return start\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code)\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code)\n }\n defined = self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n )\n effects.enter('labelEnd')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelEnd')\n return after\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n labelEndOk,\n defined ? labelEndOk : labelEndNok\n )(code)\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(\n referenceFullConstruct,\n labelEndOk,\n defined ? referenceNotFull : labelEndNok\n )(code)\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code)\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(\n referenceCollapsedConstruct,\n labelEndOk,\n labelEndNok\n )(code)\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code)\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return resourceBefore\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceOpen)(code)\n : resourceOpen(code)\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code)\n }\n return factoryDestination(\n effects,\n resourceDestinationAfter,\n resourceDestinationMissing,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 32\n )(code)\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceBetween)(code)\n : resourceEnd(code)\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code)\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n resourceTitleAfter,\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n return resourceEnd(code)\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceEnd)(code)\n : resourceEnd(code)\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n effects.exit('resource')\n return ok\n }\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this\n return referenceFull\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(\n self,\n effects,\n referenceFullAfter,\n referenceFullMissing,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n )\n ? ok(code)\n : nok(code)\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return referenceCollapsedOpen\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n effects.exit('reference')\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelImage')\n effects.enter('labelImageMarker')\n effects.consume(code)\n effects.exit('labelImageMarker')\n return open\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelImage')\n return after\n }\n return nok(code)\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n *

    !^a

    \n *

    !^a

    \n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\nimport {\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {push, splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\nfunction resolveAllAttention(events, context) {\n let index = -1\n /** @type {number} */\n let open\n /** @type {Token} */\n let group\n /** @type {Token} */\n let text\n /** @type {Token} */\n let openingSequence\n /** @type {Token} */\n let closingSequence\n /** @type {number} */\n let use\n /** @type {Array} */\n let nextEvents\n /** @type {number} */\n let offset\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'attentionSequence' &&\n events[index][1]._close\n ) {\n open = index\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'attentionSequence' &&\n events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n context.sliceSerialize(events[index][1]).charCodeAt(0)\n ) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if (\n (events[open][1]._close || events[index][1]._open) &&\n (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n !(\n (events[open][1].end.offset -\n events[open][1].start.offset +\n events[index][1].end.offset -\n events[index][1].start.offset) %\n 3\n )\n ) {\n continue\n }\n\n // Number of markers to use from the sequence.\n use =\n events[open][1].end.offset - events[open][1].start.offset > 1 &&\n events[index][1].end.offset - events[index][1].start.offset > 1\n ? 2\n : 1\n const start = Object.assign({}, events[open][1].end)\n const end = Object.assign({}, events[index][1].start)\n movePoint(start, -use)\n movePoint(end, use)\n openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start,\n end: Object.assign({}, events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: Object.assign({}, events[index][1].start),\n end\n }\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: Object.assign({}, openingSequence.start),\n end: Object.assign({}, closingSequence.end)\n }\n events[open][1].end = Object.assign({}, openingSequence.start)\n events[index][1].start = Object.assign({}, closingSequence.end)\n nextEvents = []\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n }\n\n // Opening.\n nextEvents = push(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ])\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n )\n\n // Closing.\n nextEvents = push(nextEvents, [\n ['exit', text, context],\n ['enter', closingSequence, context],\n ['exit', closingSequence, context],\n ['exit', group, context]\n ])\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2\n nextEvents = push(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - offset - 2\n break\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data'\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null\n const previous = this.previous\n const before = classifyCharacter(previous)\n\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code\n effects.enter('attentionSequence')\n return inside(code)\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code)\n return inside\n }\n const token = effects.exit('attentionSequence')\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code)\n\n // Always populated by defaults.\n\n const open =\n !after || (after === 2 && before) || attentionMarkers.includes(code)\n const close =\n !before || (before === 2 && after) || attentionMarkers.includes(previous)\n token._open = Boolean(marker === 42 ? open : open && (before || !close))\n token._close = Boolean(marker === 42 ? close : close && (after || !open))\n return ok(code)\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {void}\n */\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiAtext,\n asciiControl\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0\n return start\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('autolink')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.enter('autolinkProtocol')\n return open\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n return emailAtext(code)\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1\n return schemeInsideOrEmailAtext(code)\n }\n return emailAtext(code)\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n size = 0\n return urlInside\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n size = 0\n return emailAtext(code)\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n effects.consume(code)\n return urlInside\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n return emailAtSignOrDot\n }\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n return nok(code)\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | ab\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n return emailValue(code)\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel\n effects.consume(code)\n return next\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this\n /** @type {NonNullable | undefined} */\n let marker\n /** @type {number} */\n let index\n /** @type {State} */\n let returnState\n return start\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a c\n * ^\n * > | a c\n * ^\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * > | a c\n * ^\n * > | a &<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpenInside\n }\n if (code === 91) {\n effects.consume(code)\n index = 0\n return cdataOpenInside\n }\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n return nok(code)\n }\n\n /**\n * In a comment, after ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return nok(code)\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n if (markdownLineEnding(code)) {\n returnState = comment\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return comment\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return comment(code)\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62\n ? end(code)\n : code === 45\n ? commentClose(code)\n : comment(code)\n }\n\n /**\n * After ` | a &<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = 'CDATA['\n if (code === value.charCodeAt(index++)) {\n effects.consume(code)\n return index === value.length ? cdata : cdataOpenInside\n }\n return nok(code)\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a &<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n if (markdownLineEnding(code)) {\n returnState = cdata\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return cdata\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n if (markdownLineEnding(code)) {\n returnState = declaration\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return declaration\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n if (markdownLineEnding(code)) {\n returnState = instruction\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return instruction\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n return tagCloseBetween(code)\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n return end(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n return end(code)\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n return tagOpenAttributeNameAfter(code)\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n return tagOpenBetween(code)\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueQuotedAfter\n }\n if (code === null) {\n return nok(code)\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code)\n effects.exit('htmlTextData')\n effects.exit('htmlText')\n return ok\n }\n return nok(code)\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a \n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineEndingAfter\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code)\n ? factorySpace(\n effects,\n lineEndingAfterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : lineEndingAfterPrefix(code)\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelLink')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelLink')\n return after\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.consume(code)\n return after\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n}\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4\n let headEnterIndex = 3\n /** @type {number} */\n let index\n /** @type {number | undefined} */\n let enter\n\n // If we start and end with an EOL or a space.\n if (\n (events[headEnterIndex][1].type === 'lineEnding' ||\n events[headEnterIndex][1].type === 'space') &&\n (events[tailExitIndex][1].type === 'lineEnding' ||\n events[tailExitIndex][1].type === 'space')\n ) {\n index = headEnterIndex\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[headEnterIndex][1].type = 'codeTextPadding'\n events[tailExitIndex][1].type = 'codeTextPadding'\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1\n tailExitIndex++\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'codeTextData'\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n enter = undefined\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return (\n code !== 96 ||\n this.events[this.events.length - 1][1].type === 'characterEscape'\n )\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this\n let sizeOpen = 0\n /** @type {number} */\n let size\n /** @type {Token} */\n let token\n return start\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n effects.exit('codeTextSequence')\n return between(code)\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return between\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return sequenceClose(code)\n }\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return between\n }\n\n // Data.\n effects.enter('codeTextData')\n return data(code)\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 96 ||\n markdownLineEnding(code)\n ) {\n effects.exit('codeTextData')\n return between(code)\n }\n effects.consume(code)\n return data\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return sequenceClose\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n }\n\n // More or less accents: mark as data.\n token.type = 'codeTextData'\n return data(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\nimport {\n attention,\n autolink,\n blockQuote,\n characterEscape,\n characterReference,\n codeFenced,\n codeIndented,\n codeText,\n definition,\n hardBreakEscape,\n headingAtx,\n htmlFlow,\n htmlText,\n labelEnd,\n labelStartImage,\n labelStartLink,\n lineEnding,\n list,\n setextUnderline,\n thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n}\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n}\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n}\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n}\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n}\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n}\n","/**\n * @typedef {import('micromark-util-types').Create} Create\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n */\n\nimport {combineExtensions} from 'micromark-util-combine-extensions'\nimport {content} from './initialize/content.js'\nimport {document} from './initialize/document.js'\nimport {flow} from './initialize/flow.js'\nimport {text, string} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * @returns {ParseContext}\n */\nexport function parse(options) {\n const settings = options || {}\n const constructs =\n /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])])\n\n /** @type {ParseContext} */\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n }\n return parser\n\n /**\n * @param {InitialConstruct} initial\n */\n function create(initial) {\n return creator\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {boolean | null | undefined} [end=false]\n * @returns {Array}\n */\n\nconst search = /[\\0\\t\\n\\r]/g\n\n/**\n * @returns {Preprocessor}\n */\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean | undefined} */\n let start = true\n /** @type {boolean | undefined} */\n let atCarriageReturn\n return preprocessor\n\n /** @type {Preprocessor} */\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = []\n /** @type {RegExpMatchArray | null} */\n let match\n /** @type {number} */\n let next\n /** @type {number} */\n let startPosition\n /** @type {number} */\n let endPosition\n /** @type {Code} */\n let code\n\n // @ts-expect-error `Buffer` does allow an encoding.\n value = buffer + value.toString(encoding)\n startPosition = 0\n buffer = ''\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n start = undefined\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n while (column++ < next) chunks.push(-1)\n break\n }\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n startPosition = endPosition + 1\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n return chunks\n }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCharCode(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base)\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 ||\n code === 11 ||\n (code > 13 && code < 32) ||\n // Control character (DEL) of C0, and C1 controls.\n (code > 126 && code < 160) ||\n // Lone high surrogates and low surrogates.\n (code > 55295 && code < 57344) ||\n // Noncharacters.\n (code > 64975 && code < 65008) /* eslint-disable no-bitwise */ ||\n (code & 65535) === 65535 ||\n (code & 65535) === 65534 /* eslint-enable no-bitwise */ ||\n // Out of range\n code > 1114111\n ) {\n return '\\uFFFD'\n }\n return String.fromCharCode(code)\n}\n","import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n }\n\n // Reference.\n const head = $2.charCodeAt(0)\n if (head === 35) {\n const head = $2.charCodeAt(1)\n const hex = head === 120 || head === 88\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n }\n return decodeNamedCharacterReference($2) || $0\n}\n","/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n *\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist').Point} Point\n *\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').StaticPhrasingContent} StaticPhrasingContent\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').HTML} HTML\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('mdast').ReferenceType} ReferenceType\n * @typedef {import('../index.js').CompileData} CompileData\n */\n\n/**\n * @typedef {Root | Content} Node\n * @typedef {Extract} Parent\n *\n * @typedef {Omit & {type: 'fragment', children: Array}} Fragment\n */\n\n/**\n * @callback Transform\n * Extra transform, to change the AST afterwards.\n * @param {Root} tree\n * Tree to transform.\n * @returns {Root | undefined | null | void}\n * New tree or nothing (in which case the current tree is used).\n *\n * @callback Handle\n * Handle a token.\n * @param {CompileContext} this\n * Context.\n * @param {Token} token\n * Current token.\n * @returns {void}\n * Nothing.\n *\n * @typedef {Record} Handles\n * Token types mapping to handles\n *\n * @callback OnEnterError\n * Handle the case where the `right` token is open, but it is closed (by the\n * `left` token) or because we reached the end of the document.\n * @param {Omit} this\n * Context.\n * @param {Token | undefined} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {void}\n * Nothing.\n *\n * @callback OnExitError\n * Handle the case where the `right` token is open but it is closed by\n * exiting the `left` token.\n * @param {Omit} this\n * Context.\n * @param {Token} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {void}\n * Nothing.\n *\n * @typedef {[Token, OnEnterError | undefined]} TokenTuple\n * Open token on the stack, with an optional error handler for when\n * that token isn’t closed properly.\n */\n\n/**\n * @typedef Config\n * Configuration.\n *\n * We have our defaults, but extensions will add more.\n * @property {Array} canContainEols\n * Token types where line endings are used.\n * @property {Handles} enter\n * Opening handles.\n * @property {Handles} exit\n * Closing handles.\n * @property {Array} transforms\n * Tree transforms.\n *\n * @typedef {Partial} Extension\n * Change how markdown tokens from micromark are turned into mdast.\n *\n * @typedef CompileContext\n * mdast compiler context.\n * @property {Array} stack\n * Stack of nodes.\n * @property {Array} tokenStack\n * Stack of tokens.\n * @property {(key: Key) => CompileData[Key]} getData\n * Get data from the key/value store.\n * @property {(key: Key, value?: CompileData[Key]) => void} setData\n * Set data into the key/value store.\n * @property {(this: CompileContext) => void} buffer\n * Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n * Stop capturing and access the output data.\n * @property {(this: CompileContext, node: Kind, token: Token, onError?: OnEnterError) => Kind} enter\n * Enter a token.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => Node} exit\n * Exit a token.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n * Get the string value of a token.\n * @property {Config} config\n * Configuration.\n *\n * @typedef FromMarkdownOptions\n * Configuration for how to build mdast.\n * @property {Array> | null | undefined} [mdastExtensions]\n * Extensions for this utility to change how tokens are turned into a tree.\n *\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n * Configuration.\n */\n\n// To do: micromark: create a registry of tokens?\n// To do: next major: don’t return given `Node` from `enter`.\n// To do: next major: remove setter/getter.\n\nimport {toString} from 'mdast-util-to-string'\nimport {parse} from 'micromark/lib/parse.js'\nimport {preprocess} from 'micromark/lib/preprocess.js'\nimport {postprocess} from 'micromark/lib/postprocess.js'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nimport {decodeString} from 'micromark-util-decode-string'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {stringifyPosition} from 'unist-util-stringify-position'\nconst own = {}.hasOwnProperty\n\n/**\n * @param value\n * Markdown to parse.\n * @param encoding\n * Character encoding for when `value` is `Buffer`.\n * @param options\n * Configuration.\n * @returns\n * mdast tree.\n */\nexport const fromMarkdown =\n /**\n * @type {(\n * ((value: Value, encoding: Encoding, options?: Options | null | undefined) => Root) &\n * ((value: Value, options?: Options | null | undefined) => Root)\n * )}\n */\n\n /**\n * @param {Value} value\n * @param {Encoding | Options | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n */\n function (value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n return compiler(options)(\n postprocess(\n parse(options).document().write(preprocess()(value, encoding, true))\n )\n )\n }\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n }\n configure(config, (options || {}).mdastExtensions || [])\n\n /** @type {CompileData} */\n const data = {}\n return compile\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n }\n /** @type {Omit} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n setData,\n getData\n }\n /** @type {Array} */\n const listStack = []\n let index = -1\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (\n events[index][1].type === 'listOrdered' ||\n events[index][1].type === 'listUnordered'\n ) {\n if (events[index][0] === 'enter') {\n listStack.push(index)\n } else {\n const tail = listStack.pop()\n index = prepareList(events, tail, index)\n }\n }\n }\n index = -1\n while (++index < events.length) {\n const handler = config[events[index][0]]\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n Object.assign(\n {\n sliceSerialize: events[index][2].sliceSerialize\n },\n context\n ),\n events[index][1]\n )\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1]\n const handler = tail[1] || defaultOnError\n handler.call(context, undefined, tail[0])\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(\n events.length > 0\n ? events[0][1].start\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n ),\n end: point(\n events.length > 0\n ? events[events.length - 2][1].end\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n )\n }\n\n // Call transforms.\n index = -1\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree\n }\n return tree\n }\n\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1\n let containerBalance = -1\n let listSpread = false\n /** @type {Token | undefined} */\n let listItem\n /** @type {number | undefined} */\n let lineIndex\n /** @type {number | undefined} */\n let firstBlankLineIndex\n /** @type {boolean | undefined} */\n let atMarker\n while (++index <= length) {\n const event = events[index]\n if (\n event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered' ||\n event[1].type === 'blockQuote'\n ) {\n if (event[0] === 'enter') {\n containerBalance++\n } else {\n containerBalance--\n }\n atMarker = undefined\n } else if (event[1].type === 'lineEndingBlank') {\n if (event[0] === 'enter') {\n if (\n listItem &&\n !atMarker &&\n !containerBalance &&\n !firstBlankLineIndex\n ) {\n firstBlankLineIndex = index\n }\n atMarker = undefined\n }\n } else if (\n event[1].type === 'linePrefix' ||\n event[1].type === 'listItemValue' ||\n event[1].type === 'listItemMarker' ||\n event[1].type === 'listItemPrefix' ||\n event[1].type === 'listItemPrefixWhitespace'\n ) {\n // Empty.\n } else {\n atMarker = undefined\n }\n if (\n (!containerBalance &&\n event[0] === 'enter' &&\n event[1].type === 'listItemPrefix') ||\n (containerBalance === -1 &&\n event[0] === 'exit' &&\n (event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered'))\n ) {\n if (listItem) {\n let tailIndex = index\n lineIndex = undefined\n while (tailIndex--) {\n const tailEvent = events[tailIndex]\n if (\n tailEvent[1].type === 'lineEnding' ||\n tailEvent[1].type === 'lineEndingBlank'\n ) {\n if (tailEvent[0] === 'exit') continue\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n listSpread = true\n }\n tailEvent[1].type = 'lineEnding'\n lineIndex = tailIndex\n } else if (\n tailEvent[1].type === 'linePrefix' ||\n tailEvent[1].type === 'blockQuotePrefix' ||\n tailEvent[1].type === 'blockQuotePrefixWhitespace' ||\n tailEvent[1].type === 'blockQuoteMarker' ||\n tailEvent[1].type === 'listItemIndent'\n ) {\n // Empty\n } else {\n break\n }\n }\n if (\n firstBlankLineIndex &&\n (!lineIndex || firstBlankLineIndex < lineIndex)\n ) {\n listItem._spread = true\n }\n\n // Fix position.\n listItem.end = Object.assign(\n {},\n lineIndex ? events[lineIndex][1].start : event[1].end\n )\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n index++\n length++\n }\n\n // Create a new list item.\n if (event[1].type === 'listItemPrefix') {\n listItem = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n }\n // @ts-expect-error: `listItem` is most definitely defined, TS...\n events.splice(index, 0, ['enter', listItem, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n }\n events[start][1]._spread = listSpread\n return length\n }\n\n /**\n * Set data.\n *\n * @template {keyof CompileData} Key\n * Field type.\n * @param {Key} key\n * Key of field.\n * @param {CompileData[Key]} [value]\n * New value.\n * @returns {void}\n * Nothing.\n */\n function setData(key, value) {\n data[key] = value\n }\n\n /**\n * Get data.\n *\n * @template {keyof CompileData} Key\n * Field type.\n * @param {Key} key\n * Key of field.\n * @returns {CompileData[Key]}\n * Value.\n */\n function getData(key) {\n return data[key]\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Node} create\n * Create a node.\n * @param {Handle} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @returns {void}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n })\n }\n\n /**\n * @template {Node} Kind\n * Node type.\n * @this {CompileContext}\n * Context.\n * @param {Kind} node\n * Node to enter.\n * @param {Token} token\n * Corresponding token.\n * @param {OnEnterError | undefined} [errorHandler]\n * Handle the case where this token is open, but it is closed by something else.\n * @returns {Kind}\n * The given node.\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1]\n // @ts-expect-error: Assume `Node` can exist as a child of `parent`.\n parent.children.push(node)\n this.stack.push(node)\n this.tokenStack.push([token, errorHandler])\n // @ts-expect-error: `end` will be patched later.\n node.position = {\n start: point(token.start)\n }\n return node\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Token} token\n * Corresponding token.\n * @param {OnExitError | undefined} [onExitError]\n * Handle the case where another token is open.\n * @returns {Node}\n * The closed node.\n */\n function exit(token, onExitError) {\n const node = this.stack.pop()\n const open = this.tokenStack.pop()\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({\n start: token.start,\n end: token.end\n }) +\n '): it’s not open'\n )\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0])\n } else {\n const handler = open[1] || defaultOnError\n handler.call(this, token, open[0])\n }\n }\n node.position.end = point(token.end)\n return node\n }\n\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n function resume() {\n return toString(this.stack.pop())\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n setData('expectingFirstListItemValue', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (getData('expectingFirstListItemValue')) {\n const ancestor = this.stack[this.stack.length - 2]\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10)\n setData('expectingFirstListItemValue')\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.lang = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.meta = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (getData('flowCodeInside')) return\n this.buffer()\n setData('flowCodeInside', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n setData('flowCodeInside')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1]\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length\n node.depth = depth\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n setData('setextHeadingSlurpLineEnding', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1]\n node.depth = this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n setData('setextHeadingSlurpLineEnding')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1]\n let tail = node.children[node.children.length - 1]\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text()\n // @ts-expect-error: we’ll add `end` later.\n tail.position = {\n start: point(token.start)\n }\n // @ts-expect-error: Assume `parent` accepts `text`.\n node.children.push(tail)\n }\n this.stack.push(tail)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop()\n tail.value += this.sliceSerialize(token)\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1]\n // If we’re at a hard break, include the line ending in there.\n if (getData('atHardBreak')) {\n const tail = context.children[context.children.length - 1]\n tail.position.end = point(token.end)\n setData('atHardBreak')\n return\n }\n if (\n !getData('setextHeadingSlurpLineEnding') &&\n config.canContainEols.includes(context.type)\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n setData('atHardBreak', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (getData('inReference')) {\n /** @type {ReferenceType} */\n const referenceType = getData('referenceType') || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n setData('referenceType')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (getData('inReference')) {\n /** @type {ReferenceType} */\n const referenceType = getData('referenceType') || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n setData('referenceType')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token)\n const ancestor = this.stack[this.stack.length - 2]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string)\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1]\n const value = this.resume()\n const node = this.stack[this.stack.length - 1]\n // Assume a reference.\n setData('inReference', true)\n if (node.type === 'link') {\n /** @type {Array} */\n // @ts-expect-error: Assume static phrasing content.\n const children = fragment.children\n node.children = children\n } else {\n node.alt = value\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n setData('inReference')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n setData('referenceType', 'collapsed')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n setData('referenceType', 'full')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n setData('characterReferenceType', token.type)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token)\n const type = getData('characterReferenceType')\n /** @type {string} */\n let value\n if (type) {\n value = decodeNumericCharacterReference(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n setData('characterReferenceType')\n } else {\n const result = decodeNamedCharacterReference(data)\n value = result\n }\n const tail = this.stack.pop()\n tail.value += value\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = this.sliceSerialize(token)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = 'mailto:' + this.sliceSerialize(token)\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n }\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n }\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n }\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n }\n }\n\n /** @returns {Heading} */\n function heading() {\n // @ts-expect-error `depth` will be set later.\n return {\n type: 'heading',\n depth: undefined,\n children: []\n }\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n }\n }\n\n /** @returns {HTML} */\n function html() {\n return {\n type: 'html',\n value: ''\n }\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n }\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n }\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n }\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n }\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n }\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Array>} extensions\n * @returns {void}\n */\nfunction configure(combined, extensions) {\n let index = -1\n while (++index < extensions.length) {\n const value = extensions[index]\n if (Array.isArray(value)) {\n configure(combined, value)\n } else {\n extension(combined, value)\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {void}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key\n for (key in extension) {\n if (own.call(extension, key)) {\n if (key === 'canContainEols') {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n } else if (key === 'transforms') {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n } else if (key === 'enter' || key === 'exit') {\n const right = extension[key]\n if (right) {\n Object.assign(combined[key], right)\n }\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error(\n 'Cannot close `' +\n left.type +\n '` (' +\n stringifyPosition({\n start: left.start,\n end: left.end\n }) +\n '): a different token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is open'\n )\n } else {\n throw new Error(\n 'Cannot close document, a token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is still open'\n )\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * @param {Array} events\n * @returns {Array}\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * @this {import('unified').Processor}\n * @type {import('unified').Plugin<[Options?] | void[], string, Root>}\n */\nexport default function remarkParse(options) {\n /** @type {import('unified').ParserFunction} */\n const parser = (doc) => {\n // Assume options.\n const settings = /** @type {Options} */ (this.data('settings'))\n\n return fromMarkdown(\n doc,\n Object.assign({}, settings, options, {\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: this.data('micromarkExtensions') || [],\n mdastExtensions: this.data('fromMarkdownExtensions') || []\n })\n )\n }\n\n Object.assign(this, {Parser: parser})\n}\n","import {asciiAlphanumeric} from 'micromark-util-character'\nimport {encode} from 'micromark-util-encode'\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | undefined} url\n * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''))\n if (!protocol) {\n return value\n }\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))\n ) {\n return value\n }\n return ''\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nexport function normalizeUri(value) {\n /** @type {Array} */\n const result = []\n let index = -1\n let start = 0\n let skip = 0\n while (++index < value.length) {\n const code = value.charCodeAt(index)\n /** @type {string} */\n let replace = ''\n\n // A correct percent encoded value.\n if (\n code === 37 &&\n asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n asciiAlphanumeric(value.charCodeAt(index + 2))\n ) {\n skip = 2\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code)\n }\n }\n // Astral.\n else if (code > 55295 && code < 57344) {\n const next = value.charCodeAt(index + 1)\n\n // A correct surrogate pair.\n if (code < 56320 && next > 56319 && next < 57344) {\n replace = String.fromCharCode(code, next)\n skip = 1\n }\n // Lone surrogate.\n else {\n replace = '\\uFFFD'\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code)\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace))\n start = index + skip + 1\n replace = ''\n }\n if (skip) {\n index += skip\n skip = 0\n }\n }\n return result.join('') + value.slice(start)\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @typedef {Record} Props\n * @typedef {null | undefined | string | Props | TestFunctionAnything | Array} Test\n * Check for an arbitrary node, unaware of TypeScript inferral.\n *\n * @callback TestFunctionAnything\n * Check if a node passes a test, unaware of TypeScript inferral.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | void}\n * Whether this node passes the test.\n */\n\n/**\n * @template {Node} Kind\n * Node type.\n * @typedef {Kind['type'] | Partial | TestFunctionPredicate | Array | TestFunctionPredicate>} PredicateTest\n * Check for a node that can be inferred by TypeScript.\n */\n\n/**\n * Check if a node passes a certain test.\n *\n * @template {Node} Kind\n * Node type.\n * @callback TestFunctionPredicate\n * Complex test function for a node that can be inferred by TypeScript.\n * @param {Node} node\n * A node.\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {node is Kind}\n * Whether this node passes the test.\n */\n\n/**\n * @callback AssertAnything\n * Check that an arbitrary value is a node, unaware of TypeScript inferral.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n */\n\n/**\n * Check if a node is a node and passes a certain node test.\n *\n * @template {Node} Kind\n * Node type.\n * @callback AssertPredicate\n * Check that an arbitrary value is a specific node, aware of TypeScript.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {node is Kind}\n * Whether this is a node and passes a test.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param node\n * Thing to check, typically `Node`.\n * @param test\n * A check for a specific node.\n * @param index\n * The node’s position in its parent.\n * @param parent\n * The node’s parent.\n * @returns\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n /**\n * @type {(\n * (() => false) &\n * ((node: unknown, test: PredicateTest, index: number, parent: Parent, context?: unknown) => node is Kind) &\n * ((node: unknown, test: PredicateTest, index?: null | undefined, parent?: null | undefined, context?: unknown) => node is Kind) &\n * ((node: unknown, test: Test, index: number, parent: Parent, context?: unknown) => boolean) &\n * ((node: unknown, test?: Test, index?: null | undefined, parent?: null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function is(node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n // @ts-expect-error Looks like a node.\n return node && node.type && typeof node.type === 'string'\n ? Boolean(check.call(context, node, index, parent))\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns\n * An assertion.\n */\nexport const convert =\n /**\n * @type {(\n * ((test: PredicateTest) => AssertPredicate) &\n * ((test?: Test) => AssertAnything)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {AssertAnything}\n */\n function (test) {\n if (test === undefined || test === null) {\n return ok\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array} tests\n * @returns {AssertAnything}\n */\nfunction anyFactory(tests) {\n /** @type {Array} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @param {Array} parameters\n * @returns {boolean}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].call(this, ...parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {AssertAnything}\n */\nfunction propsFactory(check) {\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n /** @type {string} */\n let key\n\n for (key in check) {\n // @ts-expect-error: hush, it sure works as an index.\n if (node[key] !== check[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {AssertAnything}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunctionAnything} check\n * @returns {AssertAnything}\n */\nfunction castFactory(check) {\n return assertion\n\n /**\n * @this {unknown}\n * @param {unknown} node\n * @param {Array} parameters\n * @returns {boolean}\n */\n function assertion(node, ...parameters) {\n return Boolean(\n node &&\n typeof node === 'object' &&\n 'type' in node &&\n // @ts-expect-error: fine.\n Boolean(check.call(this, node, ...parameters))\n )\n }\n}\n\nfunction ok() {\n return true\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n */\n\n/**\n * @typedef {boolean | 'skip'} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @template {Node} [Visited=Node]\n * Visited node type.\n * @template {Parent} [Ancestor=Parent]\n * Ancestor type.\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * Tree type.\n * @template {Test} [Check=string]\n * Test type.\n * @typedef {Visitor, Check>, Extract, Parent>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from './color.js'\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @param tree\n * Tree to traverse.\n * @param test\n * `unist-util-is`-compatible test\n * @param visitor\n * Handle each node.\n * @param reverse\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns\n * Nothing.\n */\nexport const visitParents =\n /**\n * @type {(\n * ((tree: Tree, test: Check, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void) &\n * ((tree: Tree, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {Visitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {void}\n */\n function (tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n test = null\n }\n\n const is = convert(test)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {Node} node\n * @param {number | undefined} index\n * @param {Array} parents\n */\n function factory(node, index, parents) {\n /** @type {Record} */\n // @ts-expect-error: hush\n const value = node && typeof node === 'object' ? node : {}\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {ActionTuple} */\n let result = []\n /** @type {ActionTuple} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || null)) {\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n // @ts-expect-error looks like a parent.\n if (node.children && result[0] !== SKIP) {\n // @ts-expect-error looks like a parent.\n offset = (reverse ? node.children.length : -1) + step\n // @ts-expect-error looks like a parent.\n grandparents = parents.concat(node)\n\n // @ts-expect-error looks like a parent.\n while (offset > -1 && offset < node.children.length) {\n // @ts-expect-error looks like a parent.\n subresult = factory(node.children[offset], offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n\n return result\n }\n }\n }\n )\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {ActionTuple}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return [value]\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * Check if `Child` can be a child of `Ancestor`.\n *\n * Returns the ancestor when `Child` can be a child of `Ancestor`, or returns\n * `never`.\n *\n * @template {Node} Ancestor\n * Node type.\n * @template {Node} Child\n * Node type.\n * @typedef {(\n * Ancestor extends Parent\n * ? Child extends Ancestor['children'][number]\n * ? Ancestor\n * : never\n * : never\n * )} ParentsOf\n */\n\n/**\n * @template {Node} [Visited=Node]\n * Visited node type.\n * @template {Parent} [Ancestor=Parent]\n * Ancestor type.\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends Node ? number | null : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends Node ? Ancestor | null : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n */\n\n/**\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} Visited\n * Node type.\n * @template {Parent} Ancestor\n * Parent type.\n * @typedef {Visitor>} BuildVisitorFromMatch\n */\n\n/**\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n * @typedef {(\n * BuildVisitorFromMatch<\n * import('unist-util-visit-parents/complex-types.js').Matches,\n * Extract\n * >\n * )} BuildVisitorFromDescendants\n */\n\n/**\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} [Tree=Node]\n * Node type.\n * @template {Test} [Check=string]\n * Test type.\n * @typedef {(\n * BuildVisitorFromDescendants<\n * import('unist-util-visit-parents/complex-types.js').InclusiveDescendant,\n * Check\n * >\n * )} BuildVisitor\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @param tree\n * Tree to traverse.\n * @param test\n * `unist-util-is`-compatible test\n * @param visitor\n * Handle each node.\n * @param reverse\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns\n * Nothing.\n */\nexport const visit =\n /**\n * @type {(\n * ((tree: Tree, test: Check, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void) &\n * ((tree: Tree, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {Visitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {void}\n */\n function (tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n visitor = test\n test = null\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {Node} node\n * @param {Array} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n return visitor(\n node,\n parent ? parent.children.indexOf(node) : null,\n parent\n )\n }\n }\n )\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n","/**\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Get the starting point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointStart = point('start')\n\n/**\n * Get the ending point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointEnd = point('end')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {NodeLike | Node | null | undefined} [node]\n * Node.\n * @returns {Position}\n * Position.\n */\nexport function position(node) {\n return {start: pointStart(node), end: pointEnd(node)}\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'start' | 'end'} type\n * Side.\n * @returns\n * Getter.\n */\nfunction point(type) {\n return point\n\n /**\n * Get the point info of `node` at a bound side.\n *\n * @param {NodeLike | Node | null | undefined} [node]\n * @returns {Point}\n */\n function point(node) {\n const point = (node && node.position && node.position[type]) || {}\n\n // To do: next major: don’t return points when invalid.\n return {\n // @ts-expect-error: in practice, null is allowed.\n line: point.line || null,\n // @ts-expect-error: in practice, null is allowed.\n column: point.column || null,\n // @ts-expect-error: in practice, null is allowed.\n offset: point.offset > -1 ? point.offset : null\n }\n }\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Definition} Definition\n */\n\n/**\n * @typedef {Root | Content} Node\n *\n * @callback GetDefinition\n * Get a definition by identifier.\n * @param {string | null | undefined} [identifier]\n * Identifier of definition.\n * @returns {Definition | null}\n * Definition corresponding to `identifier` or `null`.\n */\n\nimport {visit} from 'unist-util-visit'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Find definitions in `tree`.\n *\n * Uses CommonMark precedence, which means that earlier definitions are\n * preferred over duplicate later definitions.\n *\n * @param {Node} tree\n * Tree to check.\n * @returns {GetDefinition}\n * Getter.\n */\nexport function definitions(tree) {\n /** @type {Record} */\n const cache = Object.create(null)\n\n if (!tree || !tree.type) {\n throw new Error('mdast-util-definitions expected node')\n }\n\n visit(tree, 'definition', (definition) => {\n const id = clean(definition.identifier)\n if (id && !own.call(cache, id)) {\n cache[id] = definition\n }\n })\n\n return definition\n\n /** @type {GetDefinition} */\n function definition(identifier) {\n const id = clean(identifier)\n // To do: next major: return `undefined` when not found.\n return id && own.call(cache, id) ? cache[id] : null\n }\n}\n\n/**\n * @param {string | null | undefined} [value]\n * @returns {string}\n */\nfunction clean(value) {\n return String(value || '').toUpperCase()\n}\n","/**\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('hast').Element} Element\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {FootnoteReference} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function footnoteReference(state, node) {\n const id = String(node.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n const index = state.footnoteOrder.indexOf(id)\n /** @type {number} */\n let counter\n\n if (index === -1) {\n state.footnoteOrder.push(id)\n state.footnoteCounts[id] = 1\n counter = state.footnoteOrder.length\n } else {\n state.footnoteCounts[id]++\n counter = index + 1\n }\n\n const reuseCounter = state.footnoteCounts[id]\n\n /** @type {Element} */\n const link = {\n type: 'element',\n tagName: 'a',\n properties: {\n href: '#' + state.clobberPrefix + 'fn-' + safeId,\n id:\n state.clobberPrefix +\n 'fnref-' +\n safeId +\n (reuseCounter > 1 ? '-' + reuseCounter : ''),\n dataFootnoteRef: true,\n ariaDescribedBy: ['footnote-label']\n },\n children: [{type: 'text', value: String(counter)}]\n }\n state.patch(node, link)\n\n /** @type {Element} */\n const sup = {\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [link]\n }\n state.patch(node, sup)\n return state.applyData(node, sup)\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Reference} Reference\n * @typedef {import('mdast').Root} Root\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract} References\n */\n\n// To do: next major: always return array.\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n * Info passed around.\n * @param {References} node\n * Reference node (image, link).\n * @returns {ElementContent | Array}\n * hast content.\n */\nexport function revert(state, node) {\n const subtype = node.referenceType\n let suffix = ']'\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return {type: 'text', value: '![' + node.alt + suffix}\n }\n\n const contents = state.all(node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift({type: 'text', value: '['})\n }\n\n const tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push({type: 'text', value: suffix})\n }\n\n return contents\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract} Parents\n */\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ListItem} node\n * mdast node.\n * @param {Parents | null | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function listItem(state, node, parent) {\n const results = state.all(node)\n const loose = parent ? listLoose(parent) : listItemLoose(node)\n /** @type {Properties} */\n const properties = {}\n /** @type {Array} */\n const children = []\n\n if (typeof node.checked === 'boolean') {\n const head = results[0]\n /** @type {Element} */\n let paragraph\n\n if (head && head.type === 'element' && head.tagName === 'p') {\n paragraph = head\n } else {\n paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n results.unshift(paragraph)\n }\n\n if (paragraph.children.length > 0) {\n paragraph.children.unshift({type: 'text', value: ' '})\n }\n\n paragraph.children.unshift({\n type: 'element',\n tagName: 'input',\n properties: {type: 'checkbox', checked: node.checked, disabled: true},\n children: []\n })\n\n // According to github-markdown-css, this class hides bullet.\n // See: .\n properties.className = ['task-list-item']\n }\n\n let index = -1\n\n while (++index < results.length) {\n const child = results[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (\n loose ||\n index !== 0 ||\n child.type !== 'element' ||\n child.tagName !== 'p'\n ) {\n children.push({type: 'text', value: '\\n'})\n }\n\n if (child.type === 'element' && child.tagName === 'p' && !loose) {\n children.push(...child.children)\n } else {\n children.push(child)\n }\n }\n\n const tail = results[results.length - 1]\n\n // Add a final eol.\n if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n children.push({type: 'text', value: '\\n'})\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'li', properties, children}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n let loose = false\n if (node.type === 'list') {\n loose = node.spread || false\n const children = node.children\n let index = -1\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index])\n }\n }\n\n return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n const spread = node.spread\n\n return spread === undefined || spread === null\n ? node.children.length > 1\n : spread\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Trimmed value.\n */\nexport function trimLines(value) {\n const source = String(value)\n const search = /\\r?\\n|\\r/g\n let match = search.exec(source)\n let last = 0\n /** @type {Array} */\n const lines = []\n\n while (match) {\n lines.push(\n trimLine(source.slice(last, match.index), last > 0, true),\n match[0]\n )\n\n last = match.index + match[0].length\n match = search.exec(source)\n }\n\n lines.push(trimLine(source.slice(last), last > 0, false))\n\n return lines.join('')\n}\n\n/**\n * @param {string} value\n * Line to trim.\n * @param {boolean} start\n * Whether to trim the start of the line.\n * @param {boolean} end\n * Whether to trim the end of the line.\n * @returns {string}\n * Trimmed line.\n */\nfunction trimLine(value, start, end) {\n let startIndex = 0\n let endIndex = value.length\n\n if (start) {\n let code = value.codePointAt(startIndex)\n\n while (code === tab || code === space) {\n startIndex++\n code = value.codePointAt(startIndex)\n }\n }\n\n if (end) {\n let code = value.codePointAt(endIndex - 1)\n\n while (code === tab || code === space) {\n endIndex--\n code = value.codePointAt(endIndex - 1)\n }\n }\n\n return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {footnote} from './footnote.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n */\nexport const handlers = {\n blockquote,\n break: hardBreak,\n code,\n delete: strikethrough,\n emphasis,\n footnoteReference,\n footnote,\n heading,\n html,\n imageReference,\n image,\n inlineCode,\n linkReference,\n link,\n listItem,\n list,\n paragraph,\n root,\n strong,\n table,\n tableCell,\n tableRow,\n text,\n thematicBreak,\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n // To do: next major: return `undefined`.\n return null\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Blockquote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function blockquote(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'blockquote',\n properties: {},\n children: state.wrap(state.all(node), true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Break} node\n * mdast node.\n * @returns {Array}\n * hast element content.\n */\nexport function hardBreak(state, node) {\n /** @type {Element} */\n const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n state.patch(node, result)\n return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n\n */\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Code} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function code(state, node) {\n const value = node.value ? node.value + '\\n' : ''\n // To do: next major, use `node.lang` w/o regex, the splitting’s been going\n // on for years in remark now.\n const lang = node.lang ? node.lang.match(/^[^ \\t]+(?=[ \\t]|$)/) : null\n /** @type {Properties} */\n const properties = {}\n\n if (lang) {\n properties.className = ['language-' + lang]\n }\n\n // Create ``.\n /** @type {Element} */\n let result = {\n type: 'element',\n tagName: 'code',\n properties,\n children: [{type: 'text', value}]\n }\n\n if (node.meta) {\n result.data = {meta: node.meta}\n }\n\n state.patch(node, result)\n result = state.applyData(node, result)\n\n // Create `
    `.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n\n */\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Footnote} Footnote\n * @typedef {import('../state.js').State} State\n */\n\nimport {footnoteReference} from './footnote-reference.js'\n\n// To do: when both:\n// * \n// * \n// …are archived, remove this (also from mdast).\n// These inline notes are not used in GFM.\n\n/**\n * Turn an mdast `footnote` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Footnote} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnote(state, node) {\n  const footnoteById = state.footnoteById\n  let no = 1\n\n  while (no in footnoteById) no++\n\n  const identifier = String(no)\n\n  footnoteById[identifier] = {\n    type: 'footnoteDefinition',\n    identifier,\n    children: [{type: 'paragraph', children: node.children}],\n    position: node.position\n  }\n\n  return footnoteReference(state, {\n    type: 'footnoteReference',\n    identifier,\n    position: node.position\n  })\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').HTML} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Raw | Element | null}\n *   hast node.\n */\nexport function html(state, node) {\n  if (state.dangerous) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  // To do: next major: return `undefined`.\n  return null\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {ElementContent | Array}\n *   hast node.\n */\nexport function imageReference(state, node) {\n  const def = state.definition(node.identifier)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(def.url || ''), alt: node.alt}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {ElementContent | Array}\n *   hast node.\n */\nexport function linkReference(state, node) {\n  const def = state.definition(node.identifier)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(def.url || '')}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastRoot | HastElement}\n *   hast node.\n */\nexport function root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\nimport {pointStart, pointEnd} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start.line && end.line) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract} Parents\n */\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | null | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(node, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastText | HastElement}\n *   hast node.\n */\nexport function text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Content} HastContent\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Content} MdastContent\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Parent} MdastParent\n * @typedef {import('mdast').Root} MdastRoot\n */\n\n/**\n * @typedef {HastRoot | HastContent} HastNodes\n * @typedef {MdastRoot | MdastContent} MdastNodes\n * @typedef {Extract} MdastParents\n *\n * @typedef EmbeddedHastFields\n *   hast fields.\n * @property {string | null | undefined} [hName]\n *   Generate a specific element with this tag name instead.\n * @property {HastProperties | null | undefined} [hProperties]\n *   Generate an element with these properties instead.\n * @property {Array | null | undefined} [hChildren]\n *   Generate an element with this content instead.\n *\n * @typedef {Record & EmbeddedHastFields} MdastData\n *   mdast data with embedded hast fields.\n *\n * @typedef {MdastNodes & {data?: MdastData | null | undefined}} MdastNodeWithData\n *   mdast node with embedded hast data.\n *\n * @typedef PointLike\n *   Point-like value.\n * @property {number | null | undefined} [line]\n *   Line.\n * @property {number | null | undefined} [column]\n *   Column.\n * @property {number | null | undefined} [offset]\n *   Offset.\n *\n * @typedef PositionLike\n *   Position-like value.\n * @property {PointLike | null | undefined} [start]\n *   Point-like value.\n * @property {PointLike | null | undefined} [end]\n *   Point-like value.\n *\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | null | undefined} parent\n *   Parent of `node`.\n * @returns {HastElementContent | Array | null | undefined}\n *   hast node.\n *\n * @callback HFunctionProps\n *   Signature of `state` for when props are passed.\n * @param {MdastNodes | PositionLike | null | undefined} node\n *   mdast node or unist position.\n * @param {string} tagName\n *   HTML tag name.\n * @param {HastProperties} props\n *   Properties.\n * @param {Array | null | undefined} [children]\n *   hast content.\n * @returns {HastElement}\n *   Compiled element.\n *\n * @callback HFunctionNoProps\n *   Signature of `state` for when no props are passed.\n * @param {MdastNodes | PositionLike | null | undefined} node\n *   mdast node or unist position.\n * @param {string} tagName\n *   HTML tag name.\n * @param {Array | null | undefined} [children]\n *   hast content.\n * @returns {HastElement}\n *   Compiled element.\n *\n * @typedef HFields\n *   Info on `state`.\n * @property {boolean} dangerous\n *   Whether HTML is allowed.\n * @property {string} clobberPrefix\n *   Prefix to use to prevent DOM clobbering.\n * @property {string} footnoteLabel\n *   Label to use to introduce the footnote section.\n * @property {string} footnoteLabelTagName\n *   HTML used for the footnote label.\n * @property {HastProperties} footnoteLabelProperties\n *   Properties on the HTML tag used for the footnote label.\n * @property {string} footnoteBackLabel\n *   Label to use from backreferences back to their footnote call.\n * @property {(identifier: string) => MdastDefinition | null} definition\n *   Definition cache.\n * @property {Record} footnoteById\n *   Footnote definitions by their identifier.\n * @property {Array} footnoteOrder\n *   Identifiers of order when footnote calls first appear in tree order.\n * @property {Record} footnoteCounts\n *   Counts for how often the same footnote was called.\n * @property {Handlers} handlers\n *   Applied handlers.\n * @property {Handler} unknownHandler\n *   Handler for any none not in `passThrough` or otherwise handled.\n * @property {(from: MdastNodes, node: HastNodes) => void} patch\n *   Copy a node’s positional info.\n * @property {(from: MdastNodes, to: Type) => Type | HastElement} applyData\n *   Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {(node: MdastNodes, parent: MdastParents | null | undefined) => HastElementContent | Array | null | undefined} one\n *   Transform an mdast node to hast.\n * @property {(node: MdastNodes) => Array} all\n *   Transform the children of an mdast parent to hast.\n * @property {(nodes: Array, loose?: boolean | null | undefined) => Array} wrap\n *   Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n * @property {(left: MdastNodeWithData | PositionLike | null | undefined, right: HastElementContent) => HastElementContent} augment\n *   Like `state` but lower-level and usable on non-elements.\n *   Deprecated: use `patch` and `applyData`.\n * @property {Array} passThrough\n *   List of node types to pass through untouched (except for their children).\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree.\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` attribute on footnotes to prevent it from\n *   *clobbering*.\n * @property {string | null | undefined} [footnoteBackLabel='Back to content']\n *   Label to use from backreferences back to their footnote call (affects\n *   screen readers).\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n *   Label to use for the footnotes section (affects screen readers).\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n *   Properties to use on the footnote label (note that `id: 'footnote-label'`\n *   is always added as footnote calls use it with `aria-describedby` to\n *   provide an accessible label).\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n *   Tag name to use for the footnote label.\n * @property {Handlers | null | undefined} [handlers]\n *   Extra handlers for nodes.\n * @property {Array | null | undefined} [passThrough]\n *   List of custom mdast node types to pass through (keep) in hast (note that\n *   the node itself is passed, but eventual children are transformed).\n * @property {Handler | null | undefined} [unknownHandler]\n *   Handler for all unknown nodes.\n *\n * @typedef {Record} Handlers\n *   Handle nodes.\n *\n * @typedef {HFunctionProps & HFunctionNoProps & HFields} State\n *   Info passed around.\n */\n\nimport {visit} from 'unist-util-visit'\nimport {position, pointStart, pointEnd} from 'unist-util-position'\nimport {generated} from 'unist-util-generated'\nimport {definitions} from 'mdast-util-definitions'\nimport {handlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n *   mdast node to transform.\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {State}\n *   `state` function.\n */\nexport function createState(tree, options) {\n  const settings = options || {}\n  const dangerous = settings.allowDangerousHtml || false\n  /** @type {Record} */\n  const footnoteById = {}\n\n  // To do: next major: add `options` to state, remove:\n  // `dangerous`, `clobberPrefix`, `footnoteLabel`, `footnoteLabelTagName`,\n  // `footnoteLabelProperties`, `footnoteBackLabel`, `passThrough`,\n  // `unknownHandler`.\n\n  // To do: next major: move to `state.options.allowDangerousHtml`.\n  state.dangerous = dangerous\n  // To do: next major: move to `state.options`.\n  state.clobberPrefix =\n    settings.clobberPrefix === undefined || settings.clobberPrefix === null\n      ? 'user-content-'\n      : settings.clobberPrefix\n  // To do: next major: move to `state.options`.\n  state.footnoteLabel = settings.footnoteLabel || 'Footnotes'\n  // To do: next major: move to `state.options`.\n  state.footnoteLabelTagName = settings.footnoteLabelTagName || 'h2'\n  // To do: next major: move to `state.options`.\n  state.footnoteLabelProperties = settings.footnoteLabelProperties || {\n    className: ['sr-only']\n  }\n  // To do: next major: move to `state.options`.\n  state.footnoteBackLabel = settings.footnoteBackLabel || 'Back to content'\n  // To do: next major: move to `state.options`.\n  state.unknownHandler = settings.unknownHandler\n  // To do: next major: move to `state.options`.\n  state.passThrough = settings.passThrough\n\n  state.handlers = {...handlers, ...settings.handlers}\n\n  // To do: next major: replace utility with `definitionById` object, so we\n  // only walk once (as we need footnotes too).\n  state.definition = definitions(tree)\n  state.footnoteById = footnoteById\n  /** @type {Array} */\n  state.footnoteOrder = []\n  /** @type {Record} */\n  state.footnoteCounts = {}\n\n  state.patch = patch\n  state.applyData = applyData\n  state.one = oneBound\n  state.all = allBound\n  state.wrap = wrap\n  // To do: next major: remove `augment`.\n  state.augment = augment\n\n  visit(tree, 'footnoteDefinition', (definition) => {\n    const id = String(definition.identifier).toUpperCase()\n\n    // Mimick CM behavior of link definitions.\n    // See: .\n    if (!own.call(footnoteById, id)) {\n      footnoteById[id] = definition\n    }\n  })\n\n  // @ts-expect-error Hush, it’s fine!\n  return state\n\n  /**\n   * Finalise the created `right`, a hast node, from `left`, an mdast node.\n   *\n   * @param {MdastNodeWithData | PositionLike | null | undefined} left\n   * @param {HastElementContent} right\n   * @returns {HastElementContent}\n   */\n  /* c8 ignore start */\n  // To do: next major: remove.\n  function augment(left, right) {\n    // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n    if (left && 'data' in left && left.data) {\n      /** @type {MdastData} */\n      const data = left.data\n\n      if (data.hName) {\n        if (right.type !== 'element') {\n          right = {\n            type: 'element',\n            tagName: '',\n            properties: {},\n            children: []\n          }\n        }\n\n        right.tagName = data.hName\n      }\n\n      if (right.type === 'element' && data.hProperties) {\n        right.properties = {...right.properties, ...data.hProperties}\n      }\n\n      if ('children' in right && right.children && data.hChildren) {\n        right.children = data.hChildren\n      }\n    }\n\n    if (left) {\n      const ctx = 'type' in left ? left : {position: left}\n\n      if (!generated(ctx)) {\n        // @ts-expect-error: fine.\n        right.position = {start: pointStart(ctx), end: pointEnd(ctx)}\n      }\n    }\n\n    return right\n  }\n  /* c8 ignore stop */\n\n  /**\n   * Create an element for `node`.\n   *\n   * @type {HFunctionProps}\n   */\n  /* c8 ignore start */\n  // To do: next major: remove.\n  function state(node, tagName, props, children) {\n    if (Array.isArray(props)) {\n      children = props\n      props = {}\n    }\n\n    // @ts-expect-error augmenting an element yields an element.\n    return augment(node, {\n      type: 'element',\n      tagName,\n      properties: props || {},\n      children: children || []\n    })\n  }\n  /* c8 ignore stop */\n\n  /**\n   * Transform an mdast node into a hast node.\n   *\n   * @param {MdastNodes} node\n   *   mdast node.\n   * @param {MdastParents | null | undefined} [parent]\n   *   Parent of `node`.\n   * @returns {HastElementContent | Array | null | undefined}\n   *   Resulting hast node.\n   */\n  function oneBound(node, parent) {\n    // @ts-expect-error: that’s a state :)\n    return one(state, node, parent)\n  }\n\n  /**\n   * Transform the children of an mdast node into hast nodes.\n   *\n   * @param {MdastNodes} parent\n   *   mdast node to compile\n   * @returns {Array}\n   *   Resulting hast nodes.\n   */\n  function allBound(parent) {\n    // @ts-expect-error: that’s a state :)\n    return all(state, parent)\n  }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n *   mdast node to copy from.\n * @param {HastNodes} to\n *   hast node to copy into.\n * @returns {void}\n *   Nothing.\n */\nfunction patch(from, to) {\n  if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n *   Node type.\n * @param {MdastNodes} from\n *   mdast node to use data from.\n * @param {Type} to\n *   hast node to change.\n * @returns {Type | HastElement}\n *   Nothing.\n */\nfunction applyData(from, to) {\n  /** @type {Type | HastElement} */\n  let result = to\n\n  // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n  if (from && from.data) {\n    const hName = from.data.hName\n    const hChildren = from.data.hChildren\n    const hProperties = from.data.hProperties\n\n    if (typeof hName === 'string') {\n      // Transforming the node resulted in an element with a different name\n      // than wanted:\n      if (result.type === 'element') {\n        result.tagName = hName\n      }\n      // Transforming the node resulted in a non-element, which happens for\n      // raw, text, and root nodes (unless custom handlers are passed).\n      // The intent is likely to keep the content around (otherwise: pass\n      // `hChildren`).\n      else {\n        result = {\n          type: 'element',\n          tagName: hName,\n          properties: {},\n          children: []\n        }\n\n        // To do: next major: take the children from the `root`, or inject the\n        // raw/text/comment or so into the element?\n        // if ('children' in node) {\n        //   // @ts-expect-error: assume `children` are allowed in elements.\n        //   result.children = node.children\n        // } else {\n        //   // @ts-expect-error: assume `node` is allowed in elements.\n        //   result.children.push(node)\n        // }\n      }\n    }\n\n    if (result.type === 'element' && hProperties) {\n      result.properties = {...result.properties, ...hProperties}\n    }\n\n    if (\n      'children' in result &&\n      result.children &&\n      hChildren !== null &&\n      hChildren !== undefined\n    ) {\n      // @ts-expect-error: assume valid children are defined.\n      result.children = hChildren\n    }\n  }\n\n  return result\n}\n\n/**\n * Transform an mdast node into a hast node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} node\n *   mdast node.\n * @param {MdastParents | null | undefined} [parent]\n *   Parent of `node`.\n * @returns {HastElementContent | Array | null | undefined}\n *   Resulting hast node.\n */\n// To do: next major: do not expose, keep bound.\nexport function one(state, node, parent) {\n  const type = node && node.type\n\n  // Fail on non-nodes.\n  if (!type) {\n    throw new Error('Expected node, got `' + node + '`')\n  }\n\n  if (own.call(state.handlers, type)) {\n    return state.handlers[type](state, node, parent)\n  }\n\n  if (state.passThrough && state.passThrough.includes(type)) {\n    // To do: next major: deep clone.\n    // @ts-expect-error: types of passed through nodes are expected to be added manually.\n    return 'children' in node ? {...node, children: all(state, node)} : node\n  }\n\n  if (state.unknownHandler) {\n    return state.unknownHandler(state, node, parent)\n  }\n\n  return defaultUnknownHandler(state, node)\n}\n\n/**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} parent\n *   mdast node to compile\n * @returns {Array}\n *   Resulting hast nodes.\n */\n// To do: next major: do not expose, keep bound.\nexport function all(state, parent) {\n  /** @type {Array} */\n  const values = []\n\n  if ('children' in parent) {\n    const nodes = parent.children\n    let index = -1\n    while (++index < nodes.length) {\n      const result = one(state, nodes[index], parent)\n\n      // To do: see if we van clean this? Can we merge texts?\n      if (result) {\n        if (index && nodes[index - 1].type === 'break') {\n          if (!Array.isArray(result) && result.type === 'text') {\n            result.value = result.value.replace(/^\\s+/, '')\n          }\n\n          if (!Array.isArray(result) && result.type === 'element') {\n            const head = result.children[0]\n\n            if (head && head.type === 'text') {\n              head.value = head.value.replace(/^\\s+/, '')\n            }\n          }\n        }\n\n        if (Array.isArray(result)) {\n          values.push(...result)\n        } else {\n          values.push(result)\n        }\n      }\n    }\n  }\n\n  return values\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} node\n *   Unknown mdast node.\n * @returns {HastText | HastElement}\n *   Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n  const data = node.data || {}\n  /** @type {HastText | HastElement} */\n  const result =\n    'value' in node &&\n    !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n      ? {type: 'text', value: node.value}\n      : {\n          type: 'element',\n          tagName: 'div',\n          properties: {},\n          children: all(state, node)\n        }\n\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastContent} Type\n *   Node type.\n * @param {Array} nodes\n *   List of nodes to wrap.\n * @param {boolean | null | undefined} [loose=false]\n *   Whether to add line endings at start and end.\n * @returns {Array}\n *   Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n  /** @type {Array} */\n  const result = []\n  let index = -1\n\n  if (loose) {\n    result.push({type: 'text', value: '\\n'})\n  }\n\n  while (++index < nodes.length) {\n    if (index) result.push({type: 'text', value: '\\n'})\n    result.push(nodes[index])\n  }\n\n  if (loose && nodes.length > 0) {\n    result.push({type: 'text', value: '\\n'})\n  }\n\n  return result\n}\n","/**\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef NodeLike\n * @property {PositionLike | null | undefined} [position]\n */\n\n/**\n * Check if `node` is generated.\n *\n * @param {NodeLike | null | undefined} [node]\n *   Node to check.\n * @returns {boolean}\n *   Whether `node` is generated (does not have positional info).\n */\nexport function generated(node) {\n  return (\n    !node ||\n    !node.position ||\n    !node.position.start ||\n    !node.position.start.line ||\n    !node.position.start.column ||\n    !node.position.end ||\n    !node.position.end.line ||\n    !node.position.end.column\n  )\n}\n","/**\n * @typedef {import('hast').Content} HastContent\n * @typedef {import('hast').Root} HastRoot\n *\n * @typedef {import('mdast').Content} MdastContent\n * @typedef {import('mdast').Root} MdastRoot\n *\n * @typedef {import('./state.js').Options} Options\n */\n\n/**\n * @typedef {HastRoot | HastContent} HastNodes\n * @typedef {MdastRoot | MdastContent} MdastNodes\n */\n\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * *   `hast-util-to-html` also has an option `allowDangerousHtml` which will\n *     output the raw HTML.\n *     This is typically discouraged as noted by the option name but is useful\n *     if you completely trust authors\n * *   `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n *     into standard hast nodes (`element`, `text`, etc).\n *     This is a heavy task as it needs a full HTML parser, but it is the only\n *     way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * 

    \n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
    ` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {HastNodes | null | undefined}\n * hast tree.\n */\n// To do: next major: always return a single `root`.\nexport function toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, null)\n const foot = footer(state)\n\n if (foot) {\n // @ts-expect-error If there’s a footer, there were definitions, meaning block\n // content.\n // So assume `node` is a parent node.\n node.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n // To do: next major: always return root?\n return Array.isArray(node) ? {type: 'root', children: node} : node\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n * Info passed around.\n * @returns {Element | undefined}\n * `section` element or `undefined`.\n */\nexport function footer(state) {\n /** @type {Array} */\n const listItems = []\n let index = -1\n\n while (++index < state.footnoteOrder.length) {\n const def = state.footnoteById[state.footnoteOrder[index]]\n\n if (!def) {\n continue\n }\n\n const content = state.all(def)\n const id = String(def.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n let referenceIndex = 0\n /** @type {Array} */\n const backReferences = []\n\n while (++referenceIndex <= state.footnoteCounts[id]) {\n /** @type {Element} */\n const backReference = {\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n state.clobberPrefix +\n 'fnref-' +\n safeId +\n (referenceIndex > 1 ? '-' + referenceIndex : ''),\n dataFootnoteBackref: true,\n className: ['data-footnote-backref'],\n ariaLabel: state.footnoteBackLabel\n },\n children: [{type: 'text', value: '↩'}]\n }\n\n if (referenceIndex > 1) {\n backReference.children.push({\n type: 'element',\n tagName: 'sup',\n children: [{type: 'text', value: String(referenceIndex)}]\n })\n }\n\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n backReferences.push(backReference)\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: state.clobberPrefix + 'fn-' + safeId},\n children: state.wrap(content, true)\n }\n\n state.patch(def, listItem)\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: state.footnoteLabelTagName,\n properties: {\n // To do: use structured clone.\n ...JSON.parse(JSON.stringify(state.footnoteLabelProperties)),\n id: 'footnote-label'\n },\n children: [{type: 'text', value: state.footnoteLabel}]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: state.wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} Options\n * @typedef {import('unified').Processor} Processor\n *\n * @typedef {import('mdast-util-to-hast')} DoNotTouchAsThisImportIncludesRawInTree\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n// Note: the `` overload doesn’t seem to work :'(\n\n/**\n * Plugin that turns markdown into HTML to support rehype.\n *\n * * If a destination processor is given, that processor runs with a new HTML\n * (hast) tree (bridge-mode).\n * As the given processor runs with a hast tree, and rehype plugins support\n * hast, that means rehype plugins can be used with the given processor.\n * The hast tree is discarded in the end.\n * It’s highly unlikely that you want to do this.\n * * The common case is to not pass a destination processor, in which case the\n * current processor continues running with a new HTML (hast) tree\n * (mutate-mode).\n * As the current processor continues with a hast tree, and rehype plugins\n * support hast, that means rehype plugins can be used after\n * `remark-rehype`.\n * It’s likely that this is what you want to do.\n *\n * @param destination\n * Optional unified processor.\n * @param options\n * Options passed to `mdast-util-to-hast`.\n */\nconst remarkRehype =\n /** @type {(import('unified').Plugin<[Processor, Options?]|[null|undefined, Options?]|[Options]|[], MdastRoot>)} */\n (\n function (destination, options) {\n return destination && 'run' in destination\n ? bridge(destination, options)\n : mutate(destination || options)\n }\n )\n\nexport default remarkRehype\n\n/**\n * Bridge-mode.\n * Runs the destination with the new hast tree.\n *\n * @type {import('unified').Plugin<[Processor, Options?], MdastRoot>}\n */\nfunction bridge(destination, options) {\n return (node, file, next) => {\n destination.run(toHast(node, options), file, (error) => {\n next(error)\n })\n }\n}\n\n/**\n * Mutate-mode.\n * Further plugins run on the hast tree.\n *\n * @type {import('unified').Plugin<[Options?]|void[], MdastRoot, HastRoot>}\n */\nfunction mutate(options) {\n // @ts-expect-error: assume a corresponding node is returned by `toHast`.\n return (node) => toHast(node, options)\n}\n","/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record} Properties\n * @typedef {Record} Normal\n */\n\nexport class Schema {\n /**\n * @constructor\n * @param {Properties} property\n * @param {Normal} normal\n * @param {string} [space]\n */\n constructor(property, normal, space) {\n this.property = property\n this.normal = normal\n if (space) {\n this.space = space\n }\n }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n let index = -1\n\n while (++index < definitions.length) {\n Object.assign(property, definitions[index].property)\n Object.assign(normal, definitions[index].normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * @param {string} value\n * @returns {string}\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","export class Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n */\n constructor(property, attribute) {\n /** @type {string} */\n this.property = property\n /** @type {string} */\n this.attribute = attribute\n }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","import {Info} from './info.js'\nimport * as types from './types.js'\n\n/** @type {Array} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n * @param {number|null} [mask]\n * @param {string} [space]\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n if (value) {\n // @ts-expect-error: assume `value` matches the expected value of `key`.\n values[key] = value\n }\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array} [mustUseProperty]\n */\n\nimport {normalize} from '../normalize.js'\nimport {Schema} from './schema.js'\nimport {DefinedInfo} from './defined-info.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n /** @type {string} */\n let prop\n\n for (prop in definition.properties) {\n if (own.call(definition.properties, prop)) {\n const value = definition.properties[prop]\n const info = new DefinedInfo(\n prop,\n definition.transform(definition.attributes || {}, prop),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(prop)\n ) {\n info.mustUseProperty = true\n }\n\n property[prop] = info\n\n normal[normalize(prop)] = prop\n normal[normalize(info.attribute)] = prop\n }\n }\n\n return new Schema(property, normal, definition.space)\n}\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n space: 'xlink',\n transform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase()\n },\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n space: 'xml',\n transform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase()\n },\n properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n","/**\n * @param {Record} attributes\n * @param {string} attribute\n * @returns {string}\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n space: 'xmlns',\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n transform: caseInsensitiveTransform,\n properties: {xmlns: null, xmlnsXLink: null}\n})\n","import {booleanish, number, spaceSeparated} from './util/types.js'\nimport {create} from './util/create.js'\n\nexport const aria = create({\n transform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n },\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n","import {\n boolean,\n overloadedBoolean,\n booleanish,\n number,\n spaceSeparated,\n commaSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const html = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n capture: boolean,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // ``. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // ``. List of URIs to archives\n axis: null, // `` and ``. Use `scope` on ``\n background: null, // ``. Use CSS `background-image` instead\n bgColor: null, // `` and table elements. Use CSS `background-color` instead\n border: number, // ``. Use CSS `border-width` instead,\n borderColor: null, // `
    `. Use CSS `border-color` instead,\n bottomMargin: number, // ``\n cellPadding: null, // `
    `\n cellSpacing: null, // `
    `\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // ``\n clear: null, // `
    `. Use CSS `clear` instead\n code: null, // ``\n codeBase: null, // ``\n codeType: null, // ``\n color: null, // `` and `
    `. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // ``\n event: null, // `\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In raw continuation, after ` | \n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase()\n if (htmlRawNames.includes(name)) {\n effects.consume(code)\n return continuationClose\n }\n return continuation(code)\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n // @ts-expect-error: not null.\n buffer += String.fromCharCode(code)\n return continuationRawEndTag\n }\n return continuation(code)\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n return continuation(code)\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return continuationAfter(code)\n }\n effects.consume(code)\n return continuationClose\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit('htmlFlow')\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return after\n }\n return nok(code)\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > |
    \n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return effects.attempt(blankLine, ok, nok)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n/** @type {Construct} */\nconst nonLazyContinuation = {\n tokenize: tokenizeNonLazyContinuation,\n partial: true\n}\n\n/** @type {Construct} */\nexport const codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this\n /** @type {Construct} */\n const closeStart = {\n tokenize: tokenizeCloseStart,\n partial: true\n }\n let initialPrefix = 0\n let sizeOpen = 0\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code)\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1]\n initialPrefix =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n marker = code\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++\n effects.consume(code)\n return sequenceOpen\n }\n if (sizeOpen < 3) {\n return nok(code)\n }\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, infoBefore, 'whitespace')(code)\n : infoBefore(code)\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return self.interrupt\n ? ok(code)\n : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return infoBefore(code)\n }\n if (markdownSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, metaBefore, 'whitespace')(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return info\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code)\n }\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceMeta')\n return infoBefore(code)\n }\n if (code === 96 && code === marker) {\n return nok(code)\n }\n effects.consume(code)\n return meta\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code)\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return contentStart\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code)\n ? factorySpace(\n effects,\n beforeContentChunk,\n 'linePrefix',\n initialPrefix + 1\n )(code)\n : beforeContentChunk(code)\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code)\n }\n effects.enter('codeFlowValue')\n return contentChunk(code)\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return beforeContentChunk(code)\n }\n effects.consume(code)\n return contentChunk\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0\n return startBefore\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return start\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter('codeFencedFence')\n return markdownSpace(code)\n ? factorySpace(\n effects,\n beforeSequenceClose,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : beforeSequenceClose(code)\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter('codeFencedFenceSequence')\n return sequenceClose(code)\n }\n return nok(code)\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++\n effects.consume(code)\n return sequenceClose\n }\n if (size >= sizeOpen) {\n effects.exit('codeFencedFenceSequence')\n return markdownSpace(code)\n ? factorySpace(effects, sequenceCloseAfter, 'whitespace')(code)\n : sequenceCloseAfter(code)\n }\n return nok(code)\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n return nok(code)\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this\n return start\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code)\n }\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n}\n","/// \n\n/* eslint-env browser */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string|false}\n */\nexport function decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const char = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `¬it;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n if (char.charCodeAt(char.length - 1) === 59 /* `;` */ && value !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n // @ts-expect-error: TypeScript is wrong that `textContent` on elements can\n // yield `null`.\n return char === characterReference ? false : char\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {\n asciiAlphanumeric,\n asciiDigit,\n asciiHexDigit\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this\n let size = 0\n /** @type {number} */\n let max\n /** @type {(code: Code) => boolean} */\n let test\n return start\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterReference')\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n return open\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter('characterReferenceMarkerNumeric')\n effects.consume(code)\n effects.exit('characterReferenceMarkerNumeric')\n return numeric\n }\n effects.enter('characterReferenceValue')\n max = 31\n test = asciiAlphanumeric\n return value(code)\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter('characterReferenceMarkerHexadecimal')\n effects.consume(code)\n effects.exit('characterReferenceMarkerHexadecimal')\n effects.enter('characterReferenceValue')\n max = 6\n test = asciiHexDigit\n return value\n }\n effects.enter('characterReferenceValue')\n max = 7\n test = asciiDigit\n return value(code)\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit('characterReferenceValue')\n if (\n test === asciiAlphanumeric &&\n !decodeNamedCharacterReference(self.sliceSerialize(token))\n ) {\n return nok(code)\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n effects.exit('characterReference')\n return ok\n }\n if (test(code) && size++ < max) {\n effects.consume(code)\n return value\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {asciiPunctuation} from 'micromark-util-character'\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n effects.exit('escapeMarker')\n return inside\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue')\n effects.consume(code)\n effects.exit('characterEscapeValue')\n effects.exit('characterEscape')\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start\n\n /** @type {State} */\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, ok, 'linePrefix')\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n}\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n}\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n}\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1\n while (++index < events.length) {\n const token = events[index][1]\n if (\n token.type === 'labelImage' ||\n token.type === 'labelLink' ||\n token.type === 'labelEnd'\n ) {\n // Remove the marker.\n events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n token.type = 'data'\n index++\n }\n }\n return events\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length\n let offset = 0\n /** @type {Token} */\n let token\n /** @type {number | undefined} */\n let open\n /** @type {number | undefined} */\n let close\n /** @type {Array} */\n let media\n\n // Find an opening.\n while (index--) {\n token = events[index][1]\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (\n token.type === 'link' ||\n (token.type === 'labelLink' && token._inactive)\n ) {\n break\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === 'labelLink') {\n token._inactive = true\n }\n } else if (close) {\n if (\n events[index][0] === 'enter' &&\n (token.type === 'labelImage' || token.type === 'labelLink') &&\n !token._balanced\n ) {\n open = index\n if (token.type !== 'labelLink') {\n offset = 2\n break\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index\n }\n }\n const group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n const label = {\n type: 'label',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n }\n const text = {\n type: 'labelText',\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ]\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3))\n\n // Text open.\n media = push(media, [['enter', text, context]])\n\n // Always populated by defaults.\n\n // Between.\n media = push(\n media,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n )\n\n // Text close, marker close, label close.\n media = push(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ])\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1))\n\n // Media close.\n media = push(media, [['exit', group, context]])\n splice(events, open, events.length, media)\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Token} */\n let labelStart\n /** @type {boolean} */\n let defined\n\n // Find an opening.\n while (index--) {\n if (\n (self.events[index][1].type === 'labelImage' ||\n self.events[index][1].type === 'labelLink') &&\n !self.events[index][1]._balanced\n ) {\n labelStart = self.events[index][1]\n break\n }\n }\n return start\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code)\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code)\n }\n defined = self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n )\n effects.enter('labelEnd')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelEnd')\n return after\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n labelEndOk,\n defined ? labelEndOk : labelEndNok\n )(code)\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(\n referenceFullConstruct,\n labelEndOk,\n defined ? referenceNotFull : labelEndNok\n )(code)\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code)\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(\n referenceCollapsedConstruct,\n labelEndOk,\n labelEndNok\n )(code)\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code)\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return resourceBefore\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceOpen)(code)\n : resourceOpen(code)\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code)\n }\n return factoryDestination(\n effects,\n resourceDestinationAfter,\n resourceDestinationMissing,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 32\n )(code)\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceBetween)(code)\n : resourceEnd(code)\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code)\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n resourceTitleAfter,\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n return resourceEnd(code)\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, resourceEnd)(code)\n : resourceEnd(code)\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n effects.exit('resource')\n return ok\n }\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this\n return referenceFull\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(\n self,\n effects,\n referenceFullAfter,\n referenceFullMissing,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n )\n ? ok(code)\n : nok(code)\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code)\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return referenceCollapsedOpen\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n effects.exit('reference')\n return ok\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelImage')\n effects.enter('labelImageMarker')\n effects.consume(code)\n effects.exit('labelImageMarker')\n return open\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelImage')\n return after\n }\n return nok(code)\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n *

    !^a

    \n *

    !^a

    \n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\nimport {\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {push, splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\nfunction resolveAllAttention(events, context) {\n let index = -1\n /** @type {number} */\n let open\n /** @type {Token} */\n let group\n /** @type {Token} */\n let text\n /** @type {Token} */\n let openingSequence\n /** @type {Token} */\n let closingSequence\n /** @type {number} */\n let use\n /** @type {Array} */\n let nextEvents\n /** @type {number} */\n let offset\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'attentionSequence' &&\n events[index][1]._close\n ) {\n open = index\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'attentionSequence' &&\n events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n context.sliceSerialize(events[index][1]).charCodeAt(0)\n ) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if (\n (events[open][1]._close || events[index][1]._open) &&\n (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n !(\n (events[open][1].end.offset -\n events[open][1].start.offset +\n events[index][1].end.offset -\n events[index][1].start.offset) %\n 3\n )\n ) {\n continue\n }\n\n // Number of markers to use from the sequence.\n use =\n events[open][1].end.offset - events[open][1].start.offset > 1 &&\n events[index][1].end.offset - events[index][1].start.offset > 1\n ? 2\n : 1\n const start = Object.assign({}, events[open][1].end)\n const end = Object.assign({}, events[index][1].start)\n movePoint(start, -use)\n movePoint(end, use)\n openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start,\n end: Object.assign({}, events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: Object.assign({}, events[index][1].start),\n end\n }\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: Object.assign({}, openingSequence.start),\n end: Object.assign({}, closingSequence.end)\n }\n events[open][1].end = Object.assign({}, openingSequence.start)\n events[index][1].start = Object.assign({}, closingSequence.end)\n nextEvents = []\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n }\n\n // Opening.\n nextEvents = push(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ])\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n )\n\n // Closing.\n nextEvents = push(nextEvents, [\n ['exit', text, context],\n ['enter', closingSequence, context],\n ['exit', closingSequence, context],\n ['exit', group, context]\n ])\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2\n nextEvents = push(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - offset - 2\n break\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data'\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null\n const previous = this.previous\n const before = classifyCharacter(previous)\n\n /** @type {NonNullable} */\n let marker\n return start\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code\n effects.enter('attentionSequence')\n return inside(code)\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code)\n return inside\n }\n const token = effects.exit('attentionSequence')\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code)\n\n // Always populated by defaults.\n\n const open =\n !after || (after === 2 && before) || attentionMarkers.includes(code)\n const close =\n !before || (before === 2 && after) || attentionMarkers.includes(previous)\n token._open = Boolean(marker === 42 ? open : open && (before || !close))\n token._close = Boolean(marker === 42 ? close : close && (after || !open))\n return ok(code)\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {void}\n */\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiAtext,\n asciiControl\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0\n return start\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('autolink')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.enter('autolinkProtocol')\n return open\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n return emailAtext(code)\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1\n return schemeInsideOrEmailAtext(code)\n }\n return emailAtext(code)\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n size = 0\n return urlInside\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n size = 0\n return emailAtext(code)\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n effects.consume(code)\n return urlInside\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n return emailAtSignOrDot\n }\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n return nok(code)\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | ab\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n return emailValue(code)\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel\n effects.consume(code)\n return next\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this\n /** @type {NonNullable | undefined} */\n let marker\n /** @type {number} */\n let index\n /** @type {State} */\n let returnState\n return start\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a c\n * ^\n * > | a c\n * ^\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * > | a c\n * ^\n * > | a &<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpenInside\n }\n if (code === 91) {\n effects.consume(code)\n index = 0\n return cdataOpenInside\n }\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n return nok(code)\n }\n\n /**\n * In a comment, after ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return nok(code)\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n if (markdownLineEnding(code)) {\n returnState = comment\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return comment\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return commentEnd\n }\n return comment(code)\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62\n ? end(code)\n : code === 45\n ? commentClose(code)\n : comment(code)\n }\n\n /**\n * After ` | a &<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = 'CDATA['\n if (code === value.charCodeAt(index++)) {\n effects.consume(code)\n return index === value.length ? cdata : cdataOpenInside\n }\n return nok(code)\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a &<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n if (markdownLineEnding(code)) {\n returnState = cdata\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return cdata\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n return cdata(code)\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n if (markdownLineEnding(code)) {\n returnState = declaration\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return declaration\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n if (markdownLineEnding(code)) {\n returnState = instruction\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return instruction\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n return nok(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n return tagCloseBetween(code)\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n return end(code)\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n return end(code)\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n return tagOpenAttributeNameAfter(code)\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n return tagOpenBetween(code)\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return lineEndingBefore(code)\n }\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueQuotedAfter\n }\n if (code === null) {\n return nok(code)\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return lineEndingBefore(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 96\n ) {\n return nok(code)\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n return nok(code)\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code)\n effects.exit('htmlTextData')\n effects.exit('htmlText')\n return ok\n }\n return nok(code)\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a \n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineEndingAfter\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code)\n ? factorySpace(\n effects,\n lineEndingAfterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n : lineEndingAfterPrefix(code)\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {labelEnd} from './label-end.js'\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this\n return start\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelLink')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelLink')\n return after\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.consume(code)\n return after\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport {markdownLineEnding} from 'micromark-util-character'\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n}\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4\n let headEnterIndex = 3\n /** @type {number} */\n let index\n /** @type {number | undefined} */\n let enter\n\n // If we start and end with an EOL or a space.\n if (\n (events[headEnterIndex][1].type === 'lineEnding' ||\n events[headEnterIndex][1].type === 'space') &&\n (events[tailExitIndex][1].type === 'lineEnding' ||\n events[tailExitIndex][1].type === 'space')\n ) {\n index = headEnterIndex\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[headEnterIndex][1].type = 'codeTextPadding'\n events[tailExitIndex][1].type = 'codeTextPadding'\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1\n tailExitIndex++\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'codeTextData'\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n enter = undefined\n }\n }\n return events\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return (\n code !== 96 ||\n this.events[this.events.length - 1][1].type === 'characterEscape'\n )\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this\n let sizeOpen = 0\n /** @type {number} */\n let size\n /** @type {Token} */\n let token\n return start\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return sequenceOpen(code)\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n effects.exit('codeTextSequence')\n return between(code)\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return between\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return sequenceClose(code)\n }\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return between\n }\n\n // Data.\n effects.enter('codeTextData')\n return data(code)\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 96 ||\n markdownLineEnding(code)\n ) {\n effects.exit('codeTextData')\n return between(code)\n }\n effects.consume(code)\n return data\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return sequenceClose\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n }\n\n // More or less accents: mark as data.\n token.type = 'codeTextData'\n return data(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\nimport {\n attention,\n autolink,\n blockQuote,\n characterEscape,\n characterReference,\n codeFenced,\n codeIndented,\n codeText,\n definition,\n hardBreakEscape,\n headingAtx,\n htmlFlow,\n htmlText,\n labelEnd,\n labelStartImage,\n labelStartLink,\n lineEnding,\n list,\n setextUnderline,\n thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n}\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n}\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n}\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n}\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n}\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n}\n","/**\n * @typedef {import('micromark-util-types').Create} Create\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n */\n\nimport {combineExtensions} from 'micromark-util-combine-extensions'\nimport {content} from './initialize/content.js'\nimport {document} from './initialize/document.js'\nimport {flow} from './initialize/flow.js'\nimport {text, string} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * @returns {ParseContext}\n */\nexport function parse(options) {\n const settings = options || {}\n const constructs =\n /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])])\n\n /** @type {ParseContext} */\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n }\n return parser\n\n /**\n * @param {InitialConstruct} initial\n */\n function create(initial) {\n return creator\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {boolean | null | undefined} [end=false]\n * @returns {Array}\n */\n\nconst search = /[\\0\\t\\n\\r]/g\n\n/**\n * @returns {Preprocessor}\n */\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean | undefined} */\n let start = true\n /** @type {boolean | undefined} */\n let atCarriageReturn\n return preprocessor\n\n /** @type {Preprocessor} */\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = []\n /** @type {RegExpMatchArray | null} */\n let match\n /** @type {number} */\n let next\n /** @type {number} */\n let startPosition\n /** @type {number} */\n let endPosition\n /** @type {Code} */\n let code\n\n // @ts-expect-error `Buffer` does allow an encoding.\n value = buffer + value.toString(encoding)\n startPosition = 0\n buffer = ''\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n start = undefined\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n while (column++ < next) chunks.push(-1)\n break\n }\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n startPosition = endPosition + 1\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n return chunks\n }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCharCode(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base)\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 ||\n code === 11 ||\n (code > 13 && code < 32) ||\n // Control character (DEL) of C0, and C1 controls.\n (code > 126 && code < 160) ||\n // Lone high surrogates and low surrogates.\n (code > 55295 && code < 57344) ||\n // Noncharacters.\n (code > 64975 && code < 65008) /* eslint-disable no-bitwise */ ||\n (code & 65535) === 65535 ||\n (code & 65535) === 65534 /* eslint-enable no-bitwise */ ||\n // Out of range\n code > 1114111\n ) {\n return '\\uFFFD'\n }\n return String.fromCharCode(code)\n}\n","import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n }\n\n // Reference.\n const head = $2.charCodeAt(0)\n if (head === 35) {\n const head = $2.charCodeAt(1)\n const hex = head === 120 || head === 88\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n }\n return decodeNamedCharacterReference($2) || $0\n}\n","/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n *\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist').Point} Point\n *\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').StaticPhrasingContent} StaticPhrasingContent\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').HTML} HTML\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('mdast').ReferenceType} ReferenceType\n * @typedef {import('../index.js').CompileData} CompileData\n */\n\n/**\n * @typedef {Root | Content} Node\n * @typedef {Extract} Parent\n *\n * @typedef {Omit & {type: 'fragment', children: Array}} Fragment\n */\n\n/**\n * @callback Transform\n * Extra transform, to change the AST afterwards.\n * @param {Root} tree\n * Tree to transform.\n * @returns {Root | undefined | null | void}\n * New tree or nothing (in which case the current tree is used).\n *\n * @callback Handle\n * Handle a token.\n * @param {CompileContext} this\n * Context.\n * @param {Token} token\n * Current token.\n * @returns {void}\n * Nothing.\n *\n * @typedef {Record} Handles\n * Token types mapping to handles\n *\n * @callback OnEnterError\n * Handle the case where the `right` token is open, but it is closed (by the\n * `left` token) or because we reached the end of the document.\n * @param {Omit} this\n * Context.\n * @param {Token | undefined} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {void}\n * Nothing.\n *\n * @callback OnExitError\n * Handle the case where the `right` token is open but it is closed by\n * exiting the `left` token.\n * @param {Omit} this\n * Context.\n * @param {Token} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {void}\n * Nothing.\n *\n * @typedef {[Token, OnEnterError | undefined]} TokenTuple\n * Open token on the stack, with an optional error handler for when\n * that token isn’t closed properly.\n */\n\n/**\n * @typedef Config\n * Configuration.\n *\n * We have our defaults, but extensions will add more.\n * @property {Array} canContainEols\n * Token types where line endings are used.\n * @property {Handles} enter\n * Opening handles.\n * @property {Handles} exit\n * Closing handles.\n * @property {Array} transforms\n * Tree transforms.\n *\n * @typedef {Partial} Extension\n * Change how markdown tokens from micromark are turned into mdast.\n *\n * @typedef CompileContext\n * mdast compiler context.\n * @property {Array} stack\n * Stack of nodes.\n * @property {Array} tokenStack\n * Stack of tokens.\n * @property {(key: Key) => CompileData[Key]} getData\n * Get data from the key/value store.\n * @property {(key: Key, value?: CompileData[Key]) => void} setData\n * Set data into the key/value store.\n * @property {(this: CompileContext) => void} buffer\n * Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n * Stop capturing and access the output data.\n * @property {(this: CompileContext, node: Kind, token: Token, onError?: OnEnterError) => Kind} enter\n * Enter a token.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => Node} exit\n * Exit a token.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n * Get the string value of a token.\n * @property {Config} config\n * Configuration.\n *\n * @typedef FromMarkdownOptions\n * Configuration for how to build mdast.\n * @property {Array> | null | undefined} [mdastExtensions]\n * Extensions for this utility to change how tokens are turned into a tree.\n *\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n * Configuration.\n */\n\n// To do: micromark: create a registry of tokens?\n// To do: next major: don’t return given `Node` from `enter`.\n// To do: next major: remove setter/getter.\n\nimport {toString} from 'mdast-util-to-string'\nimport {parse} from 'micromark/lib/parse.js'\nimport {preprocess} from 'micromark/lib/preprocess.js'\nimport {postprocess} from 'micromark/lib/postprocess.js'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nimport {decodeString} from 'micromark-util-decode-string'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {stringifyPosition} from 'unist-util-stringify-position'\nconst own = {}.hasOwnProperty\n\n/**\n * @param value\n * Markdown to parse.\n * @param encoding\n * Character encoding for when `value` is `Buffer`.\n * @param options\n * Configuration.\n * @returns\n * mdast tree.\n */\nexport const fromMarkdown =\n /**\n * @type {(\n * ((value: Value, encoding: Encoding, options?: Options | null | undefined) => Root) &\n * ((value: Value, options?: Options | null | undefined) => Root)\n * )}\n */\n\n /**\n * @param {Value} value\n * @param {Encoding | Options | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n */\n function (value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n return compiler(options)(\n postprocess(\n parse(options).document().write(preprocess()(value, encoding, true))\n )\n )\n }\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n }\n configure(config, (options || {}).mdastExtensions || [])\n\n /** @type {CompileData} */\n const data = {}\n return compile\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n }\n /** @type {Omit} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n setData,\n getData\n }\n /** @type {Array} */\n const listStack = []\n let index = -1\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (\n events[index][1].type === 'listOrdered' ||\n events[index][1].type === 'listUnordered'\n ) {\n if (events[index][0] === 'enter') {\n listStack.push(index)\n } else {\n const tail = listStack.pop()\n index = prepareList(events, tail, index)\n }\n }\n }\n index = -1\n while (++index < events.length) {\n const handler = config[events[index][0]]\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n Object.assign(\n {\n sliceSerialize: events[index][2].sliceSerialize\n },\n context\n ),\n events[index][1]\n )\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1]\n const handler = tail[1] || defaultOnError\n handler.call(context, undefined, tail[0])\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(\n events.length > 0\n ? events[0][1].start\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n ),\n end: point(\n events.length > 0\n ? events[events.length - 2][1].end\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n )\n }\n\n // Call transforms.\n index = -1\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree\n }\n return tree\n }\n\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1\n let containerBalance = -1\n let listSpread = false\n /** @type {Token | undefined} */\n let listItem\n /** @type {number | undefined} */\n let lineIndex\n /** @type {number | undefined} */\n let firstBlankLineIndex\n /** @type {boolean | undefined} */\n let atMarker\n while (++index <= length) {\n const event = events[index]\n if (\n event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered' ||\n event[1].type === 'blockQuote'\n ) {\n if (event[0] === 'enter') {\n containerBalance++\n } else {\n containerBalance--\n }\n atMarker = undefined\n } else if (event[1].type === 'lineEndingBlank') {\n if (event[0] === 'enter') {\n if (\n listItem &&\n !atMarker &&\n !containerBalance &&\n !firstBlankLineIndex\n ) {\n firstBlankLineIndex = index\n }\n atMarker = undefined\n }\n } else if (\n event[1].type === 'linePrefix' ||\n event[1].type === 'listItemValue' ||\n event[1].type === 'listItemMarker' ||\n event[1].type === 'listItemPrefix' ||\n event[1].type === 'listItemPrefixWhitespace'\n ) {\n // Empty.\n } else {\n atMarker = undefined\n }\n if (\n (!containerBalance &&\n event[0] === 'enter' &&\n event[1].type === 'listItemPrefix') ||\n (containerBalance === -1 &&\n event[0] === 'exit' &&\n (event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered'))\n ) {\n if (listItem) {\n let tailIndex = index\n lineIndex = undefined\n while (tailIndex--) {\n const tailEvent = events[tailIndex]\n if (\n tailEvent[1].type === 'lineEnding' ||\n tailEvent[1].type === 'lineEndingBlank'\n ) {\n if (tailEvent[0] === 'exit') continue\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n listSpread = true\n }\n tailEvent[1].type = 'lineEnding'\n lineIndex = tailIndex\n } else if (\n tailEvent[1].type === 'linePrefix' ||\n tailEvent[1].type === 'blockQuotePrefix' ||\n tailEvent[1].type === 'blockQuotePrefixWhitespace' ||\n tailEvent[1].type === 'blockQuoteMarker' ||\n tailEvent[1].type === 'listItemIndent'\n ) {\n // Empty\n } else {\n break\n }\n }\n if (\n firstBlankLineIndex &&\n (!lineIndex || firstBlankLineIndex < lineIndex)\n ) {\n listItem._spread = true\n }\n\n // Fix position.\n listItem.end = Object.assign(\n {},\n lineIndex ? events[lineIndex][1].start : event[1].end\n )\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n index++\n length++\n }\n\n // Create a new list item.\n if (event[1].type === 'listItemPrefix') {\n listItem = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n }\n // @ts-expect-error: `listItem` is most definitely defined, TS...\n events.splice(index, 0, ['enter', listItem, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n }\n events[start][1]._spread = listSpread\n return length\n }\n\n /**\n * Set data.\n *\n * @template {keyof CompileData} Key\n * Field type.\n * @param {Key} key\n * Key of field.\n * @param {CompileData[Key]} [value]\n * New value.\n * @returns {void}\n * Nothing.\n */\n function setData(key, value) {\n data[key] = value\n }\n\n /**\n * Get data.\n *\n * @template {keyof CompileData} Key\n * Field type.\n * @param {Key} key\n * Key of field.\n * @returns {CompileData[Key]}\n * Value.\n */\n function getData(key) {\n return data[key]\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Node} create\n * Create a node.\n * @param {Handle} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @returns {void}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n })\n }\n\n /**\n * @template {Node} Kind\n * Node type.\n * @this {CompileContext}\n * Context.\n * @param {Kind} node\n * Node to enter.\n * @param {Token} token\n * Corresponding token.\n * @param {OnEnterError | undefined} [errorHandler]\n * Handle the case where this token is open, but it is closed by something else.\n * @returns {Kind}\n * The given node.\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1]\n // @ts-expect-error: Assume `Node` can exist as a child of `parent`.\n parent.children.push(node)\n this.stack.push(node)\n this.tokenStack.push([token, errorHandler])\n // @ts-expect-error: `end` will be patched later.\n node.position = {\n start: point(token.start)\n }\n return node\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Token} token\n * Corresponding token.\n * @param {OnExitError | undefined} [onExitError]\n * Handle the case where another token is open.\n * @returns {Node}\n * The closed node.\n */\n function exit(token, onExitError) {\n const node = this.stack.pop()\n const open = this.tokenStack.pop()\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({\n start: token.start,\n end: token.end\n }) +\n '): it’s not open'\n )\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0])\n } else {\n const handler = open[1] || defaultOnError\n handler.call(this, token, open[0])\n }\n }\n node.position.end = point(token.end)\n return node\n }\n\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n function resume() {\n return toString(this.stack.pop())\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n setData('expectingFirstListItemValue', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (getData('expectingFirstListItemValue')) {\n const ancestor = this.stack[this.stack.length - 2]\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10)\n setData('expectingFirstListItemValue')\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.lang = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.meta = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (getData('flowCodeInside')) return\n this.buffer()\n setData('flowCodeInside', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n setData('flowCodeInside')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1]\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length\n node.depth = depth\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n setData('setextHeadingSlurpLineEnding', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1]\n node.depth = this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n setData('setextHeadingSlurpLineEnding')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1]\n let tail = node.children[node.children.length - 1]\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text()\n // @ts-expect-error: we’ll add `end` later.\n tail.position = {\n start: point(token.start)\n }\n // @ts-expect-error: Assume `parent` accepts `text`.\n node.children.push(tail)\n }\n this.stack.push(tail)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop()\n tail.value += this.sliceSerialize(token)\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1]\n // If we’re at a hard break, include the line ending in there.\n if (getData('atHardBreak')) {\n const tail = context.children[context.children.length - 1]\n tail.position.end = point(token.end)\n setData('atHardBreak')\n return\n }\n if (\n !getData('setextHeadingSlurpLineEnding') &&\n config.canContainEols.includes(context.type)\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n setData('atHardBreak', true)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.value = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (getData('inReference')) {\n /** @type {ReferenceType} */\n const referenceType = getData('referenceType') || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n setData('referenceType')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1]\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (getData('inReference')) {\n /** @type {ReferenceType} */\n const referenceType = getData('referenceType') || 'shortcut'\n node.type += 'Reference'\n // @ts-expect-error: mutate.\n node.referenceType = referenceType\n // @ts-expect-error: mutate.\n delete node.url\n delete node.title\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier\n // @ts-expect-error: mutate.\n delete node.label\n }\n setData('referenceType')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token)\n const ancestor = this.stack[this.stack.length - 2]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string)\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase()\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1]\n const value = this.resume()\n const node = this.stack[this.stack.length - 1]\n // Assume a reference.\n setData('inReference', true)\n if (node.type === 'link') {\n /** @type {Array} */\n // @ts-expect-error: Assume static phrasing content.\n const children = fragment.children\n node.children = children\n } else {\n node.alt = value\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.url = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n node.title = data\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n setData('inReference')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n setData('referenceType', 'collapsed')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n setData('referenceType', 'full')\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n setData('characterReferenceType', token.type)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token)\n const type = getData('characterReferenceType')\n /** @type {string} */\n let value\n if (type) {\n value = decodeNumericCharacterReference(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n setData('characterReferenceType')\n } else {\n const result = decodeNamedCharacterReference(data)\n value = result\n }\n const tail = this.stack.pop()\n tail.value += value\n tail.position.end = point(token.end)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = this.sliceSerialize(token)\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n const node = this.stack[this.stack.length - 1]\n node.url = 'mailto:' + this.sliceSerialize(token)\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n }\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n }\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n }\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n }\n }\n\n /** @returns {Heading} */\n function heading() {\n // @ts-expect-error `depth` will be set later.\n return {\n type: 'heading',\n depth: undefined,\n children: []\n }\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n }\n }\n\n /** @returns {HTML} */\n function html() {\n return {\n type: 'html',\n value: ''\n }\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n }\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n }\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n }\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n }\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n }\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n }\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Array>} extensions\n * @returns {void}\n */\nfunction configure(combined, extensions) {\n let index = -1\n while (++index < extensions.length) {\n const value = extensions[index]\n if (Array.isArray(value)) {\n configure(combined, value)\n } else {\n extension(combined, value)\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {void}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key\n for (key in extension) {\n if (own.call(extension, key)) {\n if (key === 'canContainEols') {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n } else if (key === 'transforms') {\n const right = extension[key]\n if (right) {\n combined[key].push(...right)\n }\n } else if (key === 'enter' || key === 'exit') {\n const right = extension[key]\n if (right) {\n Object.assign(combined[key], right)\n }\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error(\n 'Cannot close `' +\n left.type +\n '` (' +\n stringifyPosition({\n start: left.start,\n end: left.end\n }) +\n '): a different token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is open'\n )\n } else {\n throw new Error(\n 'Cannot close document, a token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is still open'\n )\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * @param {Array} events\n * @returns {Array}\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * @this {import('unified').Processor}\n * @type {import('unified').Plugin<[Options?] | void[], string, Root>}\n */\nexport default function remarkParse(options) {\n /** @type {import('unified').ParserFunction} */\n const parser = (doc) => {\n // Assume options.\n const settings = /** @type {Options} */ (this.data('settings'))\n\n return fromMarkdown(\n doc,\n Object.assign({}, settings, options, {\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: this.data('micromarkExtensions') || [],\n mdastExtensions: this.data('fromMarkdownExtensions') || []\n })\n )\n }\n\n Object.assign(this, {Parser: parser})\n}\n","import {asciiAlphanumeric} from 'micromark-util-character'\nimport {encode} from 'micromark-util-encode'\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | undefined} url\n * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''))\n if (!protocol) {\n return value\n }\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))\n ) {\n return value\n }\n return ''\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nexport function normalizeUri(value) {\n /** @type {Array} */\n const result = []\n let index = -1\n let start = 0\n let skip = 0\n while (++index < value.length) {\n const code = value.charCodeAt(index)\n /** @type {string} */\n let replace = ''\n\n // A correct percent encoded value.\n if (\n code === 37 &&\n asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n asciiAlphanumeric(value.charCodeAt(index + 2))\n ) {\n skip = 2\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code)\n }\n }\n // Astral.\n else if (code > 55295 && code < 57344) {\n const next = value.charCodeAt(index + 1)\n\n // A correct surrogate pair.\n if (code < 56320 && next > 56319 && next < 57344) {\n replace = String.fromCharCode(code, next)\n skip = 1\n }\n // Lone surrogate.\n else {\n replace = '\\uFFFD'\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code)\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace))\n start = index + skip + 1\n replace = ''\n }\n if (skip) {\n index += skip\n skip = 0\n }\n }\n return result.join('') + value.slice(start)\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @typedef {Record} Props\n * @typedef {null | undefined | string | Props | TestFunctionAnything | Array} Test\n * Check for an arbitrary node, unaware of TypeScript inferral.\n *\n * @callback TestFunctionAnything\n * Check if a node passes a test, unaware of TypeScript inferral.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | void}\n * Whether this node passes the test.\n */\n\n/**\n * @template {Node} Kind\n * Node type.\n * @typedef {Kind['type'] | Partial | TestFunctionPredicate | Array | TestFunctionPredicate>} PredicateTest\n * Check for a node that can be inferred by TypeScript.\n */\n\n/**\n * Check if a node passes a certain test.\n *\n * @template {Node} Kind\n * Node type.\n * @callback TestFunctionPredicate\n * Complex test function for a node that can be inferred by TypeScript.\n * @param {Node} node\n * A node.\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {node is Kind}\n * Whether this node passes the test.\n */\n\n/**\n * @callback AssertAnything\n * Check that an arbitrary value is a node, unaware of TypeScript inferral.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n */\n\n/**\n * Check if a node is a node and passes a certain node test.\n *\n * @template {Node} Kind\n * Node type.\n * @callback AssertPredicate\n * Check that an arbitrary value is a specific node, aware of TypeScript.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {node is Kind}\n * Whether this is a node and passes a test.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param node\n * Thing to check, typically `Node`.\n * @param test\n * A check for a specific node.\n * @param index\n * The node’s position in its parent.\n * @param parent\n * The node’s parent.\n * @returns\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n /**\n * @type {(\n * (() => false) &\n * ((node: unknown, test: PredicateTest, index: number, parent: Parent, context?: unknown) => node is Kind) &\n * ((node: unknown, test: PredicateTest, index?: null | undefined, parent?: null | undefined, context?: unknown) => node is Kind) &\n * ((node: unknown, test: Test, index: number, parent: Parent, context?: unknown) => boolean) &\n * ((node: unknown, test?: Test, index?: null | undefined, parent?: null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function is(node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n // @ts-expect-error Looks like a node.\n return node && node.type && typeof node.type === 'string'\n ? Boolean(check.call(context, node, index, parent))\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns\n * An assertion.\n */\nexport const convert =\n /**\n * @type {(\n * ((test: PredicateTest) => AssertPredicate) &\n * ((test?: Test) => AssertAnything)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {AssertAnything}\n */\n function (test) {\n if (test === undefined || test === null) {\n return ok\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array} tests\n * @returns {AssertAnything}\n */\nfunction anyFactory(tests) {\n /** @type {Array} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @param {Array} parameters\n * @returns {boolean}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].call(this, ...parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {AssertAnything}\n */\nfunction propsFactory(check) {\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n /** @type {string} */\n let key\n\n for (key in check) {\n // @ts-expect-error: hush, it sure works as an index.\n if (node[key] !== check[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {AssertAnything}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunctionAnything} check\n * @returns {AssertAnything}\n */\nfunction castFactory(check) {\n return assertion\n\n /**\n * @this {unknown}\n * @param {unknown} node\n * @param {Array} parameters\n * @returns {boolean}\n */\n function assertion(node, ...parameters) {\n return Boolean(\n node &&\n typeof node === 'object' &&\n 'type' in node &&\n // @ts-expect-error: fine.\n Boolean(check.call(this, node, ...parameters))\n )\n }\n}\n\nfunction ok() {\n return true\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n */\n\n/**\n * @typedef {boolean | 'skip'} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @template {Node} [Visited=Node]\n * Visited node type.\n * @template {Parent} [Ancestor=Parent]\n * Ancestor type.\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * Tree type.\n * @template {Test} [Check=string]\n * Test type.\n * @typedef {Visitor, Check>, Extract, Parent>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from './color.js'\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @param tree\n * Tree to traverse.\n * @param test\n * `unist-util-is`-compatible test\n * @param visitor\n * Handle each node.\n * @param reverse\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns\n * Nothing.\n */\nexport const visitParents =\n /**\n * @type {(\n * ((tree: Tree, test: Check, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void) &\n * ((tree: Tree, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {Visitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {void}\n */\n function (tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n test = null\n }\n\n const is = convert(test)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {Node} node\n * @param {number | undefined} index\n * @param {Array} parents\n */\n function factory(node, index, parents) {\n /** @type {Record} */\n // @ts-expect-error: hush\n const value = node && typeof node === 'object' ? node : {}\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {ActionTuple} */\n let result = []\n /** @type {ActionTuple} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || null)) {\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n // @ts-expect-error looks like a parent.\n if (node.children && result[0] !== SKIP) {\n // @ts-expect-error looks like a parent.\n offset = (reverse ? node.children.length : -1) + step\n // @ts-expect-error looks like a parent.\n grandparents = parents.concat(node)\n\n // @ts-expect-error looks like a parent.\n while (offset > -1 && offset < node.children.length) {\n // @ts-expect-error looks like a parent.\n subresult = factory(node.children[offset], offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n\n return result\n }\n }\n }\n )\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {ActionTuple}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return [value]\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * Check if `Child` can be a child of `Ancestor`.\n *\n * Returns the ancestor when `Child` can be a child of `Ancestor`, or returns\n * `never`.\n *\n * @template {Node} Ancestor\n * Node type.\n * @template {Node} Child\n * Node type.\n * @typedef {(\n * Ancestor extends Parent\n * ? Child extends Ancestor['children'][number]\n * ? Ancestor\n * : never\n * : never\n * )} ParentsOf\n */\n\n/**\n * @template {Node} [Visited=Node]\n * Visited node type.\n * @template {Parent} [Ancestor=Parent]\n * Ancestor type.\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends Node ? number | null : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends Node ? Ancestor | null : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n */\n\n/**\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} Visited\n * Node type.\n * @template {Parent} Ancestor\n * Parent type.\n * @typedef {Visitor>} BuildVisitorFromMatch\n */\n\n/**\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n * @typedef {(\n * BuildVisitorFromMatch<\n * import('unist-util-visit-parents/complex-types.js').Matches,\n * Extract\n * >\n * )} BuildVisitorFromDescendants\n */\n\n/**\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} [Tree=Node]\n * Node type.\n * @template {Test} [Check=string]\n * Test type.\n * @typedef {(\n * BuildVisitorFromDescendants<\n * import('unist-util-visit-parents/complex-types.js').InclusiveDescendant,\n * Check\n * >\n * )} BuildVisitor\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @param tree\n * Tree to traverse.\n * @param test\n * `unist-util-is`-compatible test\n * @param visitor\n * Handle each node.\n * @param reverse\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns\n * Nothing.\n */\nexport const visit =\n /**\n * @type {(\n * ((tree: Tree, test: Check, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void) &\n * ((tree: Tree, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {Visitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {void}\n */\n function (tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n visitor = test\n test = null\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {Node} node\n * @param {Array} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n return visitor(\n node,\n parent ? parent.children.indexOf(node) : null,\n parent\n )\n }\n }\n )\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n","/**\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Get the starting point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointStart = point('start')\n\n/**\n * Get the ending point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointEnd = point('end')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {NodeLike | Node | null | undefined} [node]\n * Node.\n * @returns {Position}\n * Position.\n */\nexport function position(node) {\n return {start: pointStart(node), end: pointEnd(node)}\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'start' | 'end'} type\n * Side.\n * @returns\n * Getter.\n */\nfunction point(type) {\n return point\n\n /**\n * Get the point info of `node` at a bound side.\n *\n * @param {NodeLike | Node | null | undefined} [node]\n * @returns {Point}\n */\n function point(node) {\n const point = (node && node.position && node.position[type]) || {}\n\n // To do: next major: don’t return points when invalid.\n return {\n // @ts-expect-error: in practice, null is allowed.\n line: point.line || null,\n // @ts-expect-error: in practice, null is allowed.\n column: point.column || null,\n // @ts-expect-error: in practice, null is allowed.\n offset: point.offset > -1 ? point.offset : null\n }\n }\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Definition} Definition\n */\n\n/**\n * @typedef {Root | Content} Node\n *\n * @callback GetDefinition\n * Get a definition by identifier.\n * @param {string | null | undefined} [identifier]\n * Identifier of definition.\n * @returns {Definition | null}\n * Definition corresponding to `identifier` or `null`.\n */\n\nimport {visit} from 'unist-util-visit'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Find definitions in `tree`.\n *\n * Uses CommonMark precedence, which means that earlier definitions are\n * preferred over duplicate later definitions.\n *\n * @param {Node} tree\n * Tree to check.\n * @returns {GetDefinition}\n * Getter.\n */\nexport function definitions(tree) {\n /** @type {Record} */\n const cache = Object.create(null)\n\n if (!tree || !tree.type) {\n throw new Error('mdast-util-definitions expected node')\n }\n\n visit(tree, 'definition', (definition) => {\n const id = clean(definition.identifier)\n if (id && !own.call(cache, id)) {\n cache[id] = definition\n }\n })\n\n return definition\n\n /** @type {GetDefinition} */\n function definition(identifier) {\n const id = clean(identifier)\n // To do: next major: return `undefined` when not found.\n return id && own.call(cache, id) ? cache[id] : null\n }\n}\n\n/**\n * @param {string | null | undefined} [value]\n * @returns {string}\n */\nfunction clean(value) {\n return String(value || '').toUpperCase()\n}\n","/**\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('hast').Element} Element\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {FootnoteReference} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function footnoteReference(state, node) {\n const id = String(node.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n const index = state.footnoteOrder.indexOf(id)\n /** @type {number} */\n let counter\n\n if (index === -1) {\n state.footnoteOrder.push(id)\n state.footnoteCounts[id] = 1\n counter = state.footnoteOrder.length\n } else {\n state.footnoteCounts[id]++\n counter = index + 1\n }\n\n const reuseCounter = state.footnoteCounts[id]\n\n /** @type {Element} */\n const link = {\n type: 'element',\n tagName: 'a',\n properties: {\n href: '#' + state.clobberPrefix + 'fn-' + safeId,\n id:\n state.clobberPrefix +\n 'fnref-' +\n safeId +\n (reuseCounter > 1 ? '-' + reuseCounter : ''),\n dataFootnoteRef: true,\n ariaDescribedBy: ['footnote-label']\n },\n children: [{type: 'text', value: String(counter)}]\n }\n state.patch(node, link)\n\n /** @type {Element} */\n const sup = {\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [link]\n }\n state.patch(node, sup)\n return state.applyData(node, sup)\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Reference} Reference\n * @typedef {import('mdast').Root} Root\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract} References\n */\n\n// To do: next major: always return array.\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n * Info passed around.\n * @param {References} node\n * Reference node (image, link).\n * @returns {ElementContent | Array}\n * hast content.\n */\nexport function revert(state, node) {\n const subtype = node.referenceType\n let suffix = ']'\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return {type: 'text', value: '![' + node.alt + suffix}\n }\n\n const contents = state.all(node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift({type: 'text', value: '['})\n }\n\n const tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push({type: 'text', value: suffix})\n }\n\n return contents\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract} Parents\n */\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ListItem} node\n * mdast node.\n * @param {Parents | null | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function listItem(state, node, parent) {\n const results = state.all(node)\n const loose = parent ? listLoose(parent) : listItemLoose(node)\n /** @type {Properties} */\n const properties = {}\n /** @type {Array} */\n const children = []\n\n if (typeof node.checked === 'boolean') {\n const head = results[0]\n /** @type {Element} */\n let paragraph\n\n if (head && head.type === 'element' && head.tagName === 'p') {\n paragraph = head\n } else {\n paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n results.unshift(paragraph)\n }\n\n if (paragraph.children.length > 0) {\n paragraph.children.unshift({type: 'text', value: ' '})\n }\n\n paragraph.children.unshift({\n type: 'element',\n tagName: 'input',\n properties: {type: 'checkbox', checked: node.checked, disabled: true},\n children: []\n })\n\n // According to github-markdown-css, this class hides bullet.\n // See: .\n properties.className = ['task-list-item']\n }\n\n let index = -1\n\n while (++index < results.length) {\n const child = results[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (\n loose ||\n index !== 0 ||\n child.type !== 'element' ||\n child.tagName !== 'p'\n ) {\n children.push({type: 'text', value: '\\n'})\n }\n\n if (child.type === 'element' && child.tagName === 'p' && !loose) {\n children.push(...child.children)\n } else {\n children.push(child)\n }\n }\n\n const tail = results[results.length - 1]\n\n // Add a final eol.\n if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n children.push({type: 'text', value: '\\n'})\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'li', properties, children}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n let loose = false\n if (node.type === 'list') {\n loose = node.spread || false\n const children = node.children\n let index = -1\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index])\n }\n }\n\n return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n const spread = node.spread\n\n return spread === undefined || spread === null\n ? node.children.length > 1\n : spread\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Trimmed value.\n */\nexport function trimLines(value) {\n const source = String(value)\n const search = /\\r?\\n|\\r/g\n let match = search.exec(source)\n let last = 0\n /** @type {Array} */\n const lines = []\n\n while (match) {\n lines.push(\n trimLine(source.slice(last, match.index), last > 0, true),\n match[0]\n )\n\n last = match.index + match[0].length\n match = search.exec(source)\n }\n\n lines.push(trimLine(source.slice(last), last > 0, false))\n\n return lines.join('')\n}\n\n/**\n * @param {string} value\n * Line to trim.\n * @param {boolean} start\n * Whether to trim the start of the line.\n * @param {boolean} end\n * Whether to trim the end of the line.\n * @returns {string}\n * Trimmed line.\n */\nfunction trimLine(value, start, end) {\n let startIndex = 0\n let endIndex = value.length\n\n if (start) {\n let code = value.codePointAt(startIndex)\n\n while (code === tab || code === space) {\n startIndex++\n code = value.codePointAt(startIndex)\n }\n }\n\n if (end) {\n let code = value.codePointAt(endIndex - 1)\n\n while (code === tab || code === space) {\n endIndex--\n code = value.codePointAt(endIndex - 1)\n }\n }\n\n return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {footnote} from './footnote.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n */\nexport const handlers = {\n blockquote,\n break: hardBreak,\n code,\n delete: strikethrough,\n emphasis,\n footnoteReference,\n footnote,\n heading,\n html,\n imageReference,\n image,\n inlineCode,\n linkReference,\n link,\n listItem,\n list,\n paragraph,\n root,\n strong,\n table,\n tableCell,\n tableRow,\n text,\n thematicBreak,\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n // To do: next major: return `undefined`.\n return null\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Blockquote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function blockquote(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'blockquote',\n properties: {},\n children: state.wrap(state.all(node), true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Break} node\n * mdast node.\n * @returns {Array}\n * hast element content.\n */\nexport function hardBreak(state, node) {\n /** @type {Element} */\n const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n state.patch(node, result)\n return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n\n */\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Code} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function code(state, node) {\n const value = node.value ? node.value + '\\n' : ''\n // To do: next major, use `node.lang` w/o regex, the splitting’s been going\n // on for years in remark now.\n const lang = node.lang ? node.lang.match(/^[^ \\t]+(?=[ \\t]|$)/) : null\n /** @type {Properties} */\n const properties = {}\n\n if (lang) {\n properties.className = ['language-' + lang]\n }\n\n // Create ``.\n /** @type {Element} */\n let result = {\n type: 'element',\n tagName: 'code',\n properties,\n children: [{type: 'text', value}]\n }\n\n if (node.meta) {\n result.data = {meta: node.meta}\n }\n\n state.patch(node, result)\n result = state.applyData(node, result)\n\n // Create `
    `.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n\n */\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Footnote} Footnote\n * @typedef {import('../state.js').State} State\n */\n\nimport {footnoteReference} from './footnote-reference.js'\n\n// To do: when both:\n// * \n// * \n// …are archived, remove this (also from mdast).\n// These inline notes are not used in GFM.\n\n/**\n * Turn an mdast `footnote` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Footnote} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnote(state, node) {\n  const footnoteById = state.footnoteById\n  let no = 1\n\n  while (no in footnoteById) no++\n\n  const identifier = String(no)\n\n  footnoteById[identifier] = {\n    type: 'footnoteDefinition',\n    identifier,\n    children: [{type: 'paragraph', children: node.children}],\n    position: node.position\n  }\n\n  return footnoteReference(state, {\n    type: 'footnoteReference',\n    identifier,\n    position: node.position\n  })\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').HTML} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Raw | Element | null}\n *   hast node.\n */\nexport function html(state, node) {\n  if (state.dangerous) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  // To do: next major: return `undefined`.\n  return null\n}\n","/**\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {ElementContent | Array}\n *   hast node.\n */\nexport function imageReference(state, node) {\n  const def = state.definition(node.identifier)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(def.url || ''), alt: node.alt}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {ElementContent | Array}\n *   hast node.\n */\nexport function linkReference(state, node) {\n  const def = state.definition(node.identifier)\n\n  if (!def) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(def.url || '')}\n\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastRoot | HastElement}\n *   hast node.\n */\nexport function root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\nimport {pointStart, pointEnd} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start.line && end.line) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract} Parents\n */\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | null | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(node, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastText | HastElement}\n *   hast node.\n */\nexport function text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n","/**\n * @typedef {import('hast').Content} HastContent\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Content} MdastContent\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Parent} MdastParent\n * @typedef {import('mdast').Root} MdastRoot\n */\n\n/**\n * @typedef {HastRoot | HastContent} HastNodes\n * @typedef {MdastRoot | MdastContent} MdastNodes\n * @typedef {Extract} MdastParents\n *\n * @typedef EmbeddedHastFields\n *   hast fields.\n * @property {string | null | undefined} [hName]\n *   Generate a specific element with this tag name instead.\n * @property {HastProperties | null | undefined} [hProperties]\n *   Generate an element with these properties instead.\n * @property {Array | null | undefined} [hChildren]\n *   Generate an element with this content instead.\n *\n * @typedef {Record & EmbeddedHastFields} MdastData\n *   mdast data with embedded hast fields.\n *\n * @typedef {MdastNodes & {data?: MdastData | null | undefined}} MdastNodeWithData\n *   mdast node with embedded hast data.\n *\n * @typedef PointLike\n *   Point-like value.\n * @property {number | null | undefined} [line]\n *   Line.\n * @property {number | null | undefined} [column]\n *   Column.\n * @property {number | null | undefined} [offset]\n *   Offset.\n *\n * @typedef PositionLike\n *   Position-like value.\n * @property {PointLike | null | undefined} [start]\n *   Point-like value.\n * @property {PointLike | null | undefined} [end]\n *   Point-like value.\n *\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | null | undefined} parent\n *   Parent of `node`.\n * @returns {HastElementContent | Array | null | undefined}\n *   hast node.\n *\n * @callback HFunctionProps\n *   Signature of `state` for when props are passed.\n * @param {MdastNodes | PositionLike | null | undefined} node\n *   mdast node or unist position.\n * @param {string} tagName\n *   HTML tag name.\n * @param {HastProperties} props\n *   Properties.\n * @param {Array | null | undefined} [children]\n *   hast content.\n * @returns {HastElement}\n *   Compiled element.\n *\n * @callback HFunctionNoProps\n *   Signature of `state` for when no props are passed.\n * @param {MdastNodes | PositionLike | null | undefined} node\n *   mdast node or unist position.\n * @param {string} tagName\n *   HTML tag name.\n * @param {Array | null | undefined} [children]\n *   hast content.\n * @returns {HastElement}\n *   Compiled element.\n *\n * @typedef HFields\n *   Info on `state`.\n * @property {boolean} dangerous\n *   Whether HTML is allowed.\n * @property {string} clobberPrefix\n *   Prefix to use to prevent DOM clobbering.\n * @property {string} footnoteLabel\n *   Label to use to introduce the footnote section.\n * @property {string} footnoteLabelTagName\n *   HTML used for the footnote label.\n * @property {HastProperties} footnoteLabelProperties\n *   Properties on the HTML tag used for the footnote label.\n * @property {string} footnoteBackLabel\n *   Label to use from backreferences back to their footnote call.\n * @property {(identifier: string) => MdastDefinition | null} definition\n *   Definition cache.\n * @property {Record} footnoteById\n *   Footnote definitions by their identifier.\n * @property {Array} footnoteOrder\n *   Identifiers of order when footnote calls first appear in tree order.\n * @property {Record} footnoteCounts\n *   Counts for how often the same footnote was called.\n * @property {Handlers} handlers\n *   Applied handlers.\n * @property {Handler} unknownHandler\n *   Handler for any none not in `passThrough` or otherwise handled.\n * @property {(from: MdastNodes, node: HastNodes) => void} patch\n *   Copy a node’s positional info.\n * @property {(from: MdastNodes, to: Type) => Type | HastElement} applyData\n *   Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {(node: MdastNodes, parent: MdastParents | null | undefined) => HastElementContent | Array | null | undefined} one\n *   Transform an mdast node to hast.\n * @property {(node: MdastNodes) => Array} all\n *   Transform the children of an mdast parent to hast.\n * @property {(nodes: Array, loose?: boolean | null | undefined) => Array} wrap\n *   Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n * @property {(left: MdastNodeWithData | PositionLike | null | undefined, right: HastElementContent) => HastElementContent} augment\n *   Like `state` but lower-level and usable on non-elements.\n *   Deprecated: use `patch` and `applyData`.\n * @property {Array} passThrough\n *   List of node types to pass through untouched (except for their children).\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree.\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` attribute on footnotes to prevent it from\n *   *clobbering*.\n * @property {string | null | undefined} [footnoteBackLabel='Back to content']\n *   Label to use from backreferences back to their footnote call (affects\n *   screen readers).\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n *   Label to use for the footnotes section (affects screen readers).\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n *   Properties to use on the footnote label (note that `id: 'footnote-label'`\n *   is always added as footnote calls use it with `aria-describedby` to\n *   provide an accessible label).\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n *   Tag name to use for the footnote label.\n * @property {Handlers | null | undefined} [handlers]\n *   Extra handlers for nodes.\n * @property {Array | null | undefined} [passThrough]\n *   List of custom mdast node types to pass through (keep) in hast (note that\n *   the node itself is passed, but eventual children are transformed).\n * @property {Handler | null | undefined} [unknownHandler]\n *   Handler for all unknown nodes.\n *\n * @typedef {Record} Handlers\n *   Handle nodes.\n *\n * @typedef {HFunctionProps & HFunctionNoProps & HFields} State\n *   Info passed around.\n */\n\nimport {visit} from 'unist-util-visit'\nimport {position, pointStart, pointEnd} from 'unist-util-position'\nimport {generated} from 'unist-util-generated'\nimport {definitions} from 'mdast-util-definitions'\nimport {handlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n *   mdast node to transform.\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {State}\n *   `state` function.\n */\nexport function createState(tree, options) {\n  const settings = options || {}\n  const dangerous = settings.allowDangerousHtml || false\n  /** @type {Record} */\n  const footnoteById = {}\n\n  // To do: next major: add `options` to state, remove:\n  // `dangerous`, `clobberPrefix`, `footnoteLabel`, `footnoteLabelTagName`,\n  // `footnoteLabelProperties`, `footnoteBackLabel`, `passThrough`,\n  // `unknownHandler`.\n\n  // To do: next major: move to `state.options.allowDangerousHtml`.\n  state.dangerous = dangerous\n  // To do: next major: move to `state.options`.\n  state.clobberPrefix =\n    settings.clobberPrefix === undefined || settings.clobberPrefix === null\n      ? 'user-content-'\n      : settings.clobberPrefix\n  // To do: next major: move to `state.options`.\n  state.footnoteLabel = settings.footnoteLabel || 'Footnotes'\n  // To do: next major: move to `state.options`.\n  state.footnoteLabelTagName = settings.footnoteLabelTagName || 'h2'\n  // To do: next major: move to `state.options`.\n  state.footnoteLabelProperties = settings.footnoteLabelProperties || {\n    className: ['sr-only']\n  }\n  // To do: next major: move to `state.options`.\n  state.footnoteBackLabel = settings.footnoteBackLabel || 'Back to content'\n  // To do: next major: move to `state.options`.\n  state.unknownHandler = settings.unknownHandler\n  // To do: next major: move to `state.options`.\n  state.passThrough = settings.passThrough\n\n  state.handlers = {...handlers, ...settings.handlers}\n\n  // To do: next major: replace utility with `definitionById` object, so we\n  // only walk once (as we need footnotes too).\n  state.definition = definitions(tree)\n  state.footnoteById = footnoteById\n  /** @type {Array} */\n  state.footnoteOrder = []\n  /** @type {Record} */\n  state.footnoteCounts = {}\n\n  state.patch = patch\n  state.applyData = applyData\n  state.one = oneBound\n  state.all = allBound\n  state.wrap = wrap\n  // To do: next major: remove `augment`.\n  state.augment = augment\n\n  visit(tree, 'footnoteDefinition', (definition) => {\n    const id = String(definition.identifier).toUpperCase()\n\n    // Mimick CM behavior of link definitions.\n    // See: .\n    if (!own.call(footnoteById, id)) {\n      footnoteById[id] = definition\n    }\n  })\n\n  // @ts-expect-error Hush, it’s fine!\n  return state\n\n  /**\n   * Finalise the created `right`, a hast node, from `left`, an mdast node.\n   *\n   * @param {MdastNodeWithData | PositionLike | null | undefined} left\n   * @param {HastElementContent} right\n   * @returns {HastElementContent}\n   */\n  /* c8 ignore start */\n  // To do: next major: remove.\n  function augment(left, right) {\n    // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n    if (left && 'data' in left && left.data) {\n      /** @type {MdastData} */\n      const data = left.data\n\n      if (data.hName) {\n        if (right.type !== 'element') {\n          right = {\n            type: 'element',\n            tagName: '',\n            properties: {},\n            children: []\n          }\n        }\n\n        right.tagName = data.hName\n      }\n\n      if (right.type === 'element' && data.hProperties) {\n        right.properties = {...right.properties, ...data.hProperties}\n      }\n\n      if ('children' in right && right.children && data.hChildren) {\n        right.children = data.hChildren\n      }\n    }\n\n    if (left) {\n      const ctx = 'type' in left ? left : {position: left}\n\n      if (!generated(ctx)) {\n        // @ts-expect-error: fine.\n        right.position = {start: pointStart(ctx), end: pointEnd(ctx)}\n      }\n    }\n\n    return right\n  }\n  /* c8 ignore stop */\n\n  /**\n   * Create an element for `node`.\n   *\n   * @type {HFunctionProps}\n   */\n  /* c8 ignore start */\n  // To do: next major: remove.\n  function state(node, tagName, props, children) {\n    if (Array.isArray(props)) {\n      children = props\n      props = {}\n    }\n\n    // @ts-expect-error augmenting an element yields an element.\n    return augment(node, {\n      type: 'element',\n      tagName,\n      properties: props || {},\n      children: children || []\n    })\n  }\n  /* c8 ignore stop */\n\n  /**\n   * Transform an mdast node into a hast node.\n   *\n   * @param {MdastNodes} node\n   *   mdast node.\n   * @param {MdastParents | null | undefined} [parent]\n   *   Parent of `node`.\n   * @returns {HastElementContent | Array | null | undefined}\n   *   Resulting hast node.\n   */\n  function oneBound(node, parent) {\n    // @ts-expect-error: that’s a state :)\n    return one(state, node, parent)\n  }\n\n  /**\n   * Transform the children of an mdast node into hast nodes.\n   *\n   * @param {MdastNodes} parent\n   *   mdast node to compile\n   * @returns {Array}\n   *   Resulting hast nodes.\n   */\n  function allBound(parent) {\n    // @ts-expect-error: that’s a state :)\n    return all(state, parent)\n  }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n *   mdast node to copy from.\n * @param {HastNodes} to\n *   hast node to copy into.\n * @returns {void}\n *   Nothing.\n */\nfunction patch(from, to) {\n  if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n *   Node type.\n * @param {MdastNodes} from\n *   mdast node to use data from.\n * @param {Type} to\n *   hast node to change.\n * @returns {Type | HastElement}\n *   Nothing.\n */\nfunction applyData(from, to) {\n  /** @type {Type | HastElement} */\n  let result = to\n\n  // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n  if (from && from.data) {\n    const hName = from.data.hName\n    const hChildren = from.data.hChildren\n    const hProperties = from.data.hProperties\n\n    if (typeof hName === 'string') {\n      // Transforming the node resulted in an element with a different name\n      // than wanted:\n      if (result.type === 'element') {\n        result.tagName = hName\n      }\n      // Transforming the node resulted in a non-element, which happens for\n      // raw, text, and root nodes (unless custom handlers are passed).\n      // The intent is likely to keep the content around (otherwise: pass\n      // `hChildren`).\n      else {\n        result = {\n          type: 'element',\n          tagName: hName,\n          properties: {},\n          children: []\n        }\n\n        // To do: next major: take the children from the `root`, or inject the\n        // raw/text/comment or so into the element?\n        // if ('children' in node) {\n        //   // @ts-expect-error: assume `children` are allowed in elements.\n        //   result.children = node.children\n        // } else {\n        //   // @ts-expect-error: assume `node` is allowed in elements.\n        //   result.children.push(node)\n        // }\n      }\n    }\n\n    if (result.type === 'element' && hProperties) {\n      result.properties = {...result.properties, ...hProperties}\n    }\n\n    if (\n      'children' in result &&\n      result.children &&\n      hChildren !== null &&\n      hChildren !== undefined\n    ) {\n      // @ts-expect-error: assume valid children are defined.\n      result.children = hChildren\n    }\n  }\n\n  return result\n}\n\n/**\n * Transform an mdast node into a hast node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} node\n *   mdast node.\n * @param {MdastParents | null | undefined} [parent]\n *   Parent of `node`.\n * @returns {HastElementContent | Array | null | undefined}\n *   Resulting hast node.\n */\n// To do: next major: do not expose, keep bound.\nexport function one(state, node, parent) {\n  const type = node && node.type\n\n  // Fail on non-nodes.\n  if (!type) {\n    throw new Error('Expected node, got `' + node + '`')\n  }\n\n  if (own.call(state.handlers, type)) {\n    return state.handlers[type](state, node, parent)\n  }\n\n  if (state.passThrough && state.passThrough.includes(type)) {\n    // To do: next major: deep clone.\n    // @ts-expect-error: types of passed through nodes are expected to be added manually.\n    return 'children' in node ? {...node, children: all(state, node)} : node\n  }\n\n  if (state.unknownHandler) {\n    return state.unknownHandler(state, node, parent)\n  }\n\n  return defaultUnknownHandler(state, node)\n}\n\n/**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} parent\n *   mdast node to compile\n * @returns {Array}\n *   Resulting hast nodes.\n */\n// To do: next major: do not expose, keep bound.\nexport function all(state, parent) {\n  /** @type {Array} */\n  const values = []\n\n  if ('children' in parent) {\n    const nodes = parent.children\n    let index = -1\n    while (++index < nodes.length) {\n      const result = one(state, nodes[index], parent)\n\n      // To do: see if we van clean this? Can we merge texts?\n      if (result) {\n        if (index && nodes[index - 1].type === 'break') {\n          if (!Array.isArray(result) && result.type === 'text') {\n            result.value = result.value.replace(/^\\s+/, '')\n          }\n\n          if (!Array.isArray(result) && result.type === 'element') {\n            const head = result.children[0]\n\n            if (head && head.type === 'text') {\n              head.value = head.value.replace(/^\\s+/, '')\n            }\n          }\n        }\n\n        if (Array.isArray(result)) {\n          values.push(...result)\n        } else {\n          values.push(result)\n        }\n      }\n    }\n  }\n\n  return values\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} node\n *   Unknown mdast node.\n * @returns {HastText | HastElement}\n *   Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n  const data = node.data || {}\n  /** @type {HastText | HastElement} */\n  const result =\n    'value' in node &&\n    !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n      ? {type: 'text', value: node.value}\n      : {\n          type: 'element',\n          tagName: 'div',\n          properties: {},\n          children: all(state, node)\n        }\n\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastContent} Type\n *   Node type.\n * @param {Array} nodes\n *   List of nodes to wrap.\n * @param {boolean | null | undefined} [loose=false]\n *   Whether to add line endings at start and end.\n * @returns {Array}\n *   Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n  /** @type {Array} */\n  const result = []\n  let index = -1\n\n  if (loose) {\n    result.push({type: 'text', value: '\\n'})\n  }\n\n  while (++index < nodes.length) {\n    if (index) result.push({type: 'text', value: '\\n'})\n    result.push(nodes[index])\n  }\n\n  if (loose && nodes.length > 0) {\n    result.push({type: 'text', value: '\\n'})\n  }\n\n  return result\n}\n","/**\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef NodeLike\n * @property {PositionLike | null | undefined} [position]\n */\n\n/**\n * Check if `node` is generated.\n *\n * @param {NodeLike | null | undefined} [node]\n *   Node to check.\n * @returns {boolean}\n *   Whether `node` is generated (does not have positional info).\n */\nexport function generated(node) {\n  return (\n    !node ||\n    !node.position ||\n    !node.position.start ||\n    !node.position.start.line ||\n    !node.position.start.column ||\n    !node.position.end ||\n    !node.position.end.line ||\n    !node.position.end.column\n  )\n}\n","/**\n * @typedef {import('hast').Content} HastContent\n * @typedef {import('hast').Root} HastRoot\n *\n * @typedef {import('mdast').Content} MdastContent\n * @typedef {import('mdast').Root} MdastRoot\n *\n * @typedef {import('./state.js').Options} Options\n */\n\n/**\n * @typedef {HastRoot | HastContent} HastNodes\n * @typedef {MdastRoot | MdastContent} MdastNodes\n */\n\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * *   `hast-util-to-html` also has an option `allowDangerousHtml` which will\n *     output the raw HTML.\n *     This is typically discouraged as noted by the option name but is useful\n *     if you completely trust authors\n * *   `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n *     into standard hast nodes (`element`, `text`, etc).\n *     This is a heavy task as it needs a full HTML parser, but it is the only\n *     way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * 

    \n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
    ` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {HastNodes | null | undefined}\n * hast tree.\n */\n// To do: next major: always return a single `root`.\nexport function toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, null)\n const foot = footer(state)\n\n if (foot) {\n // @ts-expect-error If there’s a footer, there were definitions, meaning block\n // content.\n // So assume `node` is a parent node.\n node.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n // To do: next major: always return root?\n return Array.isArray(node) ? {type: 'root', children: node} : node\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n * Info passed around.\n * @returns {Element | undefined}\n * `section` element or `undefined`.\n */\nexport function footer(state) {\n /** @type {Array} */\n const listItems = []\n let index = -1\n\n while (++index < state.footnoteOrder.length) {\n const def = state.footnoteById[state.footnoteOrder[index]]\n\n if (!def) {\n continue\n }\n\n const content = state.all(def)\n const id = String(def.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n let referenceIndex = 0\n /** @type {Array} */\n const backReferences = []\n\n while (++referenceIndex <= state.footnoteCounts[id]) {\n /** @type {Element} */\n const backReference = {\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n state.clobberPrefix +\n 'fnref-' +\n safeId +\n (referenceIndex > 1 ? '-' + referenceIndex : ''),\n dataFootnoteBackref: true,\n className: ['data-footnote-backref'],\n ariaLabel: state.footnoteBackLabel\n },\n children: [{type: 'text', value: '↩'}]\n }\n\n if (referenceIndex > 1) {\n backReference.children.push({\n type: 'element',\n tagName: 'sup',\n children: [{type: 'text', value: String(referenceIndex)}]\n })\n }\n\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n backReferences.push(backReference)\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: state.clobberPrefix + 'fn-' + safeId},\n children: state.wrap(content, true)\n }\n\n state.patch(def, listItem)\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: state.footnoteLabelTagName,\n properties: {\n // To do: use structured clone.\n ...JSON.parse(JSON.stringify(state.footnoteLabelProperties)),\n id: 'footnote-label'\n },\n children: [{type: 'text', value: state.footnoteLabel}]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: state.wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} Options\n * @typedef {import('unified').Processor} Processor\n *\n * @typedef {import('mdast-util-to-hast')} DoNotTouchAsThisImportIncludesRawInTree\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n// Note: the `` overload doesn’t seem to work :'(\n\n/**\n * Plugin that turns markdown into HTML to support rehype.\n *\n * * If a destination processor is given, that processor runs with a new HTML\n * (hast) tree (bridge-mode).\n * As the given processor runs with a hast tree, and rehype plugins support\n * hast, that means rehype plugins can be used with the given processor.\n * The hast tree is discarded in the end.\n * It’s highly unlikely that you want to do this.\n * * The common case is to not pass a destination processor, in which case the\n * current processor continues running with a new HTML (hast) tree\n * (mutate-mode).\n * As the current processor continues with a hast tree, and rehype plugins\n * support hast, that means rehype plugins can be used after\n * `remark-rehype`.\n * It’s likely that this is what you want to do.\n *\n * @param destination\n * Optional unified processor.\n * @param options\n * Options passed to `mdast-util-to-hast`.\n */\nconst remarkRehype =\n /** @type {(import('unified').Plugin<[Processor, Options?]|[null|undefined, Options?]|[Options]|[], MdastRoot>)} */\n (\n function (destination, options) {\n return destination && 'run' in destination\n ? bridge(destination, options)\n : mutate(destination || options)\n }\n )\n\nexport default remarkRehype\n\n/**\n * Bridge-mode.\n * Runs the destination with the new hast tree.\n *\n * @type {import('unified').Plugin<[Processor, Options?], MdastRoot>}\n */\nfunction bridge(destination, options) {\n return (node, file, next) => {\n destination.run(toHast(node, options), file, (error) => {\n next(error)\n })\n }\n}\n\n/**\n * Mutate-mode.\n * Further plugins run on the hast tree.\n *\n * @type {import('unified').Plugin<[Options?]|void[], MdastRoot, HastRoot>}\n */\nfunction mutate(options) {\n // @ts-expect-error: assume a corresponding node is returned by `toHast`.\n return (node) => toHast(node, options)\n}\n","/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record} Properties\n * @typedef {Record} Normal\n */\n\nexport class Schema {\n /**\n * @constructor\n * @param {Properties} property\n * @param {Normal} normal\n * @param {string} [space]\n */\n constructor(property, normal, space) {\n this.property = property\n this.normal = normal\n if (space) {\n this.space = space\n }\n }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n let index = -1\n\n while (++index < definitions.length) {\n Object.assign(property, definitions[index].property)\n Object.assign(normal, definitions[index].normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * @param {string} value\n * @returns {string}\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","export class Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n */\n constructor(property, attribute) {\n /** @type {string} */\n this.property = property\n /** @type {string} */\n this.attribute = attribute\n }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","import {Info} from './info.js'\nimport * as types from './types.js'\n\n/** @type {Array} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n * @param {number|null} [mask]\n * @param {string} [space]\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n if (value) {\n // @ts-expect-error: assume `value` matches the expected value of `key`.\n values[key] = value\n }\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array} [mustUseProperty]\n */\n\nimport {normalize} from '../normalize.js'\nimport {Schema} from './schema.js'\nimport {DefinedInfo} from './defined-info.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n /** @type {string} */\n let prop\n\n for (prop in definition.properties) {\n if (own.call(definition.properties, prop)) {\n const value = definition.properties[prop]\n const info = new DefinedInfo(\n prop,\n definition.transform(definition.attributes || {}, prop),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(prop)\n ) {\n info.mustUseProperty = true\n }\n\n property[prop] = info\n\n normal[normalize(prop)] = prop\n normal[normalize(info.attribute)] = prop\n }\n }\n\n return new Schema(property, normal, definition.space)\n}\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n space: 'xlink',\n transform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase()\n },\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n space: 'xml',\n transform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase()\n },\n properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n","/**\n * @param {Record} attributes\n * @param {string} attribute\n * @returns {string}\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n space: 'xmlns',\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n transform: caseInsensitiveTransform,\n properties: {xmlns: null, xmlnsXLink: null}\n})\n","import {booleanish, number, spaceSeparated} from './util/types.js'\nimport {create} from './util/create.js'\n\nexport const aria = create({\n transform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n },\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n","import {\n boolean,\n overloadedBoolean,\n booleanish,\n number,\n spaceSeparated,\n commaSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const html = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: boolean,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // ``. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // ``. List of URIs to archives\n axis: null, // `
    ` and ``. Use `scope` on ``\n background: null, // ``. Use CSS `background-image` instead\n bgColor: null, // `` and table elements. Use CSS `background-color` instead\n border: number, // ``. Use CSS `border-width` instead,\n borderColor: null, // `
    `. Use CSS `border-color` instead,\n bottomMargin: number, // ``\n cellPadding: null, // `
    `\n cellSpacing: null, // `
    `\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // ``\n clear: null, // `
    `. Use CSS `clear` instead\n code: null, // ``\n codeBase: null, // ``\n codeType: null, // ``\n color: null, // `` and `
    `. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // ``\n event: null, // `